From 45674ff241a6f71d35f6a89d3367dde27d06a208 Mon Sep 17 00:00:00 2001 From: Ruben Verweij Date: Mon, 10 Apr 2017 12:35:57 +0200 Subject: [PATCH] Do not add 'z' to sizes of the reader if there is only one plane, as seems to be the PIMS convention --- nd2reader/reader.py | 11 +++++++++-- tests/test_reader.py | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/nd2reader/reader.py b/nd2reader/reader.py index 9d5f343..003f9a1 100644 --- a/nd2reader/reader.py +++ b/nd2reader/reader.py @@ -68,7 +68,11 @@ class ND2Reader(FramesSequenceND): """ frames = None for c in range(len(self.metadata["channels"])): - frame = self.get_frame_2D(c, i, self.default_coords['z']) + try: + z = self.default_coords['z'] + except KeyError: + z = 0 + frame = self.get_frame_2D(c, i, z) if frames is None: frames = Frame([frame]) else: @@ -129,7 +133,10 @@ class ND2Reader(FramesSequenceND): self._init_axis('y', self._get_metadata_property("height", default=0)) self._init_axis('c', len(self._get_metadata_property("channels", default=[]))) self._init_axis('t', len(self._get_metadata_property("frames", default=[]))) - self._init_axis('z', len(self._get_metadata_property("z_levels", default=[]))) + + z_levels = len(self._get_metadata_property("z_levels", default=[])) + if z_levels > 1: + self._init_axis('z', z_levels) # provide the default self.iter_axes = 't' diff --git a/tests/test_reader.py b/tests/test_reader.py index 7699c9b..0430eb9 100644 --- a/tests/test_reader.py +++ b/tests/test_reader.py @@ -25,7 +25,7 @@ class TestReader(unittest.TestCase): self.assertEqual(reader.pixel_type, np.float64) self.assertEqual(reader.sizes['x'], 0) self.assertEqual(reader.sizes['y'], 0) - self.assertEqual(reader.sizes['z'], 1) + self.assertFalse('z' in reader.sizes) self.assertEqual(reader.sizes['c'], 0) self.assertEqual(reader.sizes['t'], 0)