From e78c03589ab18453a36d98266ab4af9a1568fa97 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Sun, 10 Nov 2024 08:10:00 +0100 Subject: [PATCH] Completed lazy loading implementation at acccesor level --- model_server/base/accessors.py | 11 +++++++---- tests/base/test_accessors.py | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py index 04daa7a2..95a0422f 100644 --- a/model_server/base/accessors.py +++ b/model_server/base/accessors.py @@ -45,7 +45,7 @@ class GenericImageDataAccessor(ABC): # TODO: no direct calls to self._data outside load/unload methods def is_mask(self): - return is_mask(self._data) + return is_mask(self.data) def can_mask(self, acc): return self.is_mask() and self.shape == acc.get_mono(0).shape @@ -158,7 +158,7 @@ class GenericImageDataAccessor(ABC): @property def shape(self): - return self._data.shape + return self.data.shape @property def shape_dict(self): @@ -227,6 +227,9 @@ class GenericImageFileAccessor(GenericImageDataAccessor): # image data is loaded @property def data(self): + """ + Load from file if not loaded already; return data as 4d with axes in order of Y, X, C, Z + """ if self._data is None: self.load() return self._data @@ -520,9 +523,9 @@ class PatchStack(InMemoryDataAccessor): def get_list(self, crop=True): if crop: - return [self._data[i][self._slices[i]] for i in range(0, self.count)] + return [self.data[i][self._slices[i]] for i in range(0, self.count)] else: - return [self._data[i] for i in range(0, self.count)] + return [self.data[i] for i in range(0, self.count)] @property def pyxcz(self): diff --git a/tests/base/test_accessors.py b/tests/base/test_accessors.py index c70e2d67..2d9e9a6d 100644 --- a/tests/base/test_accessors.py +++ b/tests/base/test_accessors.py @@ -232,7 +232,7 @@ class TestCziImageFileAccess(unittest.TestCase): acc_cf = generate_file_accessor(data['czifile']['path'], lazy=True) self.assertEqual(acc_cf._data, None) self.assertEqual(acc_cf._metadata, None) - acc_cf.load() + nda = acc_cf.data self.assertIsNotNone(acc_cf._data) self.assertIsNotNone(acc_cf._metadata) self.assertIsInstance(acc_cf._data, np.ndarray) -- GitLab