diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..85515a5 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,11 @@ +.gitignore +.git +*.md +*.txt +Dockerfile +Makefile +setup.cfg +env +*.egg-info +build +dist \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 0334d55..7b389fe 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,6 +15,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ python3-dev \ python-pip \ python3-pip \ + python-numpy \ + python3-numpy \ libfreetype6-dev \ python3-matplotlib \ libfreetype6-dev \ @@ -22,6 +24,9 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libjpeg-dev \ pkg-config \ python3-skimage \ + tk \ + tk-dev \ + python3-tk \ && pip3 install -U cython \ scikit-image \ && rm -rf /var/lib/apt/lists/* diff --git a/Makefile b/Makefile index a117d3f..7906c9d 100644 --- a/Makefile +++ b/Makefile @@ -1,13 +1,26 @@ -.PHONY: build py2shell py3shell test +.PHONY: info build shell py2 py3 test + +info: + @echo "" + @echo "Available Make Commands" + @echo "" + @echo "build: builds the image" + @echo "py2: maps ~/Documents/nd2s to /var/nd2s and runs a Python 2.7 interpreter" + @echo "py3: maps ~/Documents/nd2s to /var/nd2s and runs a Python 3.4 interpreter" + @echo "test: runs all unit tests (in Python 3.4)" + @echo "" build: docker build -t jimrybarski/nd2reader . +shell: + xhost local:root; docker run --rm -v ~/Documents/nd2s:/var/nd2s -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$(DISPLAY) -it jimrybarski/nd2reader bash + py2: - docker run --rm -v ~/Documents/nd2s:/var/nd2s -it jimrybarski/nd2reader python2.7 + xhost local:root; docker run --rm -v ~/Documents/nd2s:/var/nd2s -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$(DISPLAY) -it jimrybarski/nd2reader python2.7 py3: - docker run --rm -v ~/Documents/nd2s:/var/nd2s -it jimrybarski/nd2reader python3.4 + xhost local:root; docker run --rm -v ~/Documents/nd2s:/var/nd2s -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$(DISPLAY) -it jimrybarski/nd2reader python3.4 test: build docker run --rm -it jimrybarski/nd2reader python3.4 /opt/nd2reader/tests.py diff --git a/nd2reader/__init__.py b/nd2reader/__init__.py index 2337034..e01360a 100644 --- a/nd2reader/__init__.py +++ b/nd2reader/__init__.py @@ -57,7 +57,8 @@ class Nd2(Nd2Parser): fov = self._calculate_field_of_view(item) channel = self._calculate_channel(item) z_level = self._calculate_z_level(item) - timestamp, raw_image_data = self._get_raw_image_data(item, channel_offset) + image_group_number = int(item / len(self.channels)) + timestamp, raw_image_data = self._get_raw_image_data(image_group_number, channel_offset) image = Image(timestamp, raw_image_data, fov, channel, z_level, self.height, self.width) except (TypeError, ValueError): return None diff --git a/nd2reader/parser.py b/nd2reader/parser.py index 139e2fb..f00ec01 100644 --- a/nd2reader/parser.py +++ b/nd2reader/parser.py @@ -234,8 +234,10 @@ class Nd2Parser(object): except AttributeError: return [0] except TypeError: - count = int(re.match(pattern, self._dimensions.decode("utf8")).group(1)) - return list(range(count)) + match = re.match(pattern, self._dimensions.decode("utf8")) + if not match: + return [0] + return list(range(int(match.group(1)))) else: return list(range(count))