From 18f28496eadae26dd3b0e9572bf1b026a7f727a3 Mon Sep 17 00:00:00 2001
From: Christopher Rhodes <christopher.rhodes@embl.de>
Date: Mon, 19 Feb 2024 12:45:14 +0100
Subject: [PATCH] Added PCZYX getter mainly for ilastik use

---
 model_server/extensions/chaeo/accessors.py          | 11 +++++++++--
 .../extensions/chaeo/tests/test_accessors.py        | 13 ++++++++++++-
 2 files changed, 21 insertions(+), 3 deletions(-)

diff --git a/model_server/extensions/chaeo/accessors.py b/model_server/extensions/chaeo/accessors.py
index ee9bfd07..45eee67b 100644
--- a/model_server/extensions/chaeo/accessors.py
+++ b/model_server/extensions/chaeo/accessors.py
@@ -127,11 +127,18 @@ class PatchStack(InMemoryDataAccessor):
 
     @property
     def pyxcz(self):
-        return self._data
+        return self.data
 
     @property
+    def pczyx(self):
+        return np.moveaxis(
+            self.data,
+            [0, 3, 4, 1, 2],
+            [0, 1, 2, 3, 4]
+        )
+    @property
     def shape(self):
-        return self._data.shape
+        return self.data.shape
 
     @property
     def shape_dict(self):
diff --git a/model_server/extensions/chaeo/tests/test_accessors.py b/model_server/extensions/chaeo/tests/test_accessors.py
index 086b405c..0aa364c7 100644
--- a/model_server/extensions/chaeo/tests/test_accessors.py
+++ b/model_server/extensions/chaeo/tests/test_accessors.py
@@ -61,4 +61,15 @@ class TestMultipositionCziImageFileAccess(unittest.TestCase):
         self.assertEqual(acc.hw, (h, 2 * w))
         self.assertEqual(acc.chroma, c)
         self.assertEqual(acc.iat(0).shape, (h, 2 * w, c, nz))
-        self.assertEqual(acc.iat_yxcz(0).shape, (h, 2 * w, c, nz))
\ No newline at end of file
+        self.assertEqual(acc.iat_yxcz(0).shape, (h, 2 * w, c, nz))
+
+    def test_pczyx(self):
+        w = 256
+        h = 512
+        n = 4
+        nz = 15
+        nc = 2
+        acc = PatchStack(np.random.rand(n, h, w, nc, nz))
+        self.assertEqual(acc.count, n)
+        self.assertEqual(acc.pczyx.shape, (n, nc, nz, h, w))
+        self.assertEqual(acc.hw, (h, w))
-- 
GitLab