From d962a3de02c7617a3936e312da386d65cdf775d9 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Sun, 22 Oct 2023 09:47:06 +0200 Subject: [PATCH] Merged in pixel scale property --- model_server/accessors.py | 17 +++++++---------- tests/test_accessors.py | 3 ++- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/model_server/accessors.py b/model_server/accessors.py index caec8ddf..1bb5b6b4 100644 --- a/model_server/accessors.py +++ b/model_server/accessors.py @@ -48,7 +48,7 @@ class GenericImageDataAccessor(ABC): @property def pixel_scale_in_micrometers(self): - return None + return {} @property def dtype(self): @@ -176,15 +176,12 @@ class CziImageFileAccessor(GenericImageFileAccessor): @property def pixel_scale_in_micrometers(self): - meta_sc_str = self.czifile.metadata(raw=False)['ImageDocument']['Metadata']['ImageScaling']['ImagePixelSize'] - meta_mags = self.czifile.metadata(raw=False)['ImageDocument']['Metadata']['ImageScaling']['ScalingComponent'] - sc_xy = list(map( - float, - meta_sc_str.split(',') - )) - assert sc_xy[0] == sc_xy[1] - mags = [float(m['Magnification']) for m in meta_mags] - return sc_xy[0] / np.product(mags) + scale_meta = self.czifile.metadata(raw=False)['ImageDocument']['Metadata']['Scaling']['Items']['Distance'] + sc = {} + for m in scale_meta: + if m['DefaultUnitFormat'].encode() == b'\xc2\xb5m' and m['Id'] in self.shape_dict.keys(): # literal mu-m + sc[m['Id']] = m['Value'] * 1e6 + return sc def write_accessor_data_to_file(fpath: Path, accessor: GenericImageDataAccessor, mkdir=True) -> bool: diff --git a/tests/test_accessors.py b/tests/test_accessors.py index 1a465dfb..557970ea 100644 --- a/tests/test_accessors.py +++ b/tests/test_accessors.py @@ -114,4 +114,5 @@ class TestCziImageFileAccess(unittest.TestCase): def test_read_in_pixel_scale_from_czi(self): cf = CziImageFileAccessor(czifile['path']) - self.assertAlmostEqual(cf.pixel_scale_in_micrometers, czifile['um_per_pixel'], places=3) \ No newline at end of file + pxs = cf.pixel_scale_in_micrometers + self.assertAlmostEqual(pxs['X'], czifile['um_per_pixel'], places=3) \ No newline at end of file -- GitLab