From 3bdfe6d68695d9a4945000ed61e59a653aff23b3 Mon Sep 17 00:00:00 2001 From: Jonathan Striebel Date: Wed, 16 Nov 2022 15:16:18 +0100 Subject: [PATCH 1/2] Fix ImageIOReader for images with channels and reordered axes --- pims/imageio_reader.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/pims/imageio_reader.py b/pims/imageio_reader.py index b7e70f1..8b8bd09 100644 --- a/pims/imageio_reader.py +++ b/pims/imageio_reader.py @@ -72,20 +72,21 @@ def __init__(self, filename, **kwargs): ) first_frame = self.get_frame_2D(t=0) - self._shape = first_frame.shape self._dtype = first_frame.dtype - self._setup_axes() + self._setup_axes(first_frame.shape) self._register_get_frame(self.get_frame_2D, 'yx') - def _setup_axes(self): + def _setup_axes(self, frame_shape): """Setup the xyctz axes, iterate over t axis by default """ - if self._shape[1] > 0: - self._init_axis('x', self._shape[1]) - if self._shape[0] > 0: - self._init_axis('y', self._shape[0]) + if frame_shape[1] > 0: + self._init_axis('x', frame_shape[1]) + if frame_shape[0] > 0: + self._init_axis('y', frame_shape[0]) + if len(frame_shape) > 2: + self._init_axis('c', frame_shape[3]) if self._len > 0: self._init_axis('t', self._len) @@ -138,10 +139,6 @@ def __iter__(self): def frame_rate(self): return self.get_metadata()['fps'] - @property - def frame_shape(self): - return self._shape - @property def pixel_type(self): return self._dtype From b497107893539bcf8a6f3b15fdd3eb79875b3593 Mon Sep 17 00:00:00 2001 From: Jonathan Striebel Date: Wed, 16 Nov 2022 15:30:34 +0100 Subject: [PATCH 2/2] Update imageio_reader.py --- pims/imageio_reader.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pims/imageio_reader.py b/pims/imageio_reader.py index 8b8bd09..aca81fb 100644 --- a/pims/imageio_reader.py +++ b/pims/imageio_reader.py @@ -75,7 +75,10 @@ def __init__(self, filename, **kwargs): self._dtype = first_frame.dtype self._setup_axes(first_frame.shape) - self._register_get_frame(self.get_frame_2D, 'yx') + if len(first_frame.shape) == 2: + self._register_get_frame(self.get_frame_2D, 'yx') + else: + self._register_get_frame(self.get_frame_2D, 'yxc') def _setup_axes(self, frame_shape): """Setup the xyctz axes, iterate over t axis by default