From 095814450c7d25b6a1a0fb3b9ddb599fe3725eec Mon Sep 17 00:00:00 2001 From: Jim Rybarski Date: Tue, 26 May 2015 06:05:41 +0000 Subject: [PATCH] #39 halfway implemented getitem. can you get non-cyclical field of view orders? if so that would invalidate this approach --- nd2reader/__init__.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/nd2reader/__init__.py b/nd2reader/__init__.py index 26a6f1b..75c0741 100644 --- a/nd2reader/__init__.py +++ b/nd2reader/__init__.py @@ -56,6 +56,31 @@ class Nd2(Nd2Parser): if image is not None: yield image + def __getitem__(self, item): + if isinstance(item, int): + try: + channel_offset = item % self._channel_count + fov = self._calculate_field_of_view(item) + channel = self._calculate_channel(item) + z_level = self._calculate_z_level(item) + item -= channel_offset + item /= self._channel_count + timestamp, raw_image_data = self._get_raw_image_data(item, channel_offset) + image = Image(timestamp, raw_image_data, fov, channel, z_level, self.height, self.width) + except TypeError: + return None + else: + return image + + def _calculate_field_of_view(self, frame_number): + return (frame_number - (frame_number % (self._channel_count + self._z_level_count))) % self._field_of_view_count + + def _calculate_channel(self, frame_number): + pass + + def _calculate_z_level(self, frame_number): + pass + @property def image_sets(self): """