From 5ccb314a28e3f7797d8b446471ef82e315a5da25 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Fri, 20 Sep 2024 10:33:24 +0200 Subject: [PATCH] Added and tested accessor method to run argmax on z-axis --- model_server/base/accessors.py | 4 +++- tests/base/test_accessors.py | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py index 98aba201..7f2f74d7 100644 --- a/model_server/base/accessors.py +++ b/model_server/base/accessors.py @@ -67,10 +67,12 @@ class GenericImageDataAccessor(ABC): """ return self.apply(lambda x: x.max(axis=self._ga('Z'), keepdims=True)) - def get_mono(self, channel: int, mip: bool = False): return self.get_channels([channel], mip=mip) + def get_z_argmax(self): + return self.apply(lambda x: x.argmax(axis=self.get_axis('Z'))) + @property def data_xy(self) -> np.ndarray: if not self.chroma == 1 and self.nz == 1: diff --git a/tests/base/test_accessors.py b/tests/base/test_accessors.py index b4203070..452cb3c0 100644 --- a/tests/base/test_accessors.py +++ b/tests/base/test_accessors.py @@ -61,6 +61,17 @@ class TestCziImageFileAccess(unittest.TestCase): sc = cf.get_mono(c, mip=True) self.assertEqual(sc.shape, (h, w, 1, 1)) + def test_get_single_channel_argmax_from_zstack(self): + w = 256 + h = 512 + nc = 4 + nz = 11 + c = 3 + cf = InMemoryDataAccessor(np.random.rand(h, w, nc, nz)) + am = cf.get_mono(c).get_z_argmax() + self.assertEqual(am.shape, (h, w, 1, 1)) + self.assertTrue(np.all(am.unique()[0] == range(0, nz))) + def test_get_zi(self): w = 256 h = 512 -- GitLab