From afed75b6745bae41ed5b15706bd4f17ceb61e8da Mon Sep 17 00:00:00 2001
From: Christopher Rhodes <christopher.rhodes@embl.de>
Date: Mon, 19 Feb 2024 13:19:05 +0100
Subject: [PATCH] Consolidating RoiSet test data into base test configuration

---
 model_server/conf/testing.py                  | 18 +++++++++++++
 .../extensions/chaeo/conf/__init__.py         |  0
 model_server/extensions/chaeo/conf/testing.py | 26 -------------------
 .../chaeo/tests/test_roiset_workflow.py       | 14 ++++------
 .../extensions/ilastik/tests/test_ilastik.py  |  4 ++-
 tests/test_roiset.py                          | 11 ++++----
 6 files changed, 31 insertions(+), 42 deletions(-)
 delete mode 100644 model_server/extensions/chaeo/conf/__init__.py
 delete mode 100644 model_server/extensions/chaeo/conf/testing.py

diff --git a/model_server/conf/testing.py b/model_server/conf/testing.py
index 9a08092f..3d07931e 100644
--- a/model_server/conf/testing.py
+++ b/model_server/conf/testing.py
@@ -59,5 +59,23 @@ ilastik_classifiers = {
     'seg_to_obj': root / 'ilastik' / 'demo_obj_seg.ilp',
 }
 
+roiset_test_data = {
+    'multichannel_zstack': {
+        'path': root / 'zmask-test-stack-chlorophyl.tif',
+        'w': 512,
+        'h': 512,
+        'c': 5,
+        'z': 7,
+        'mask_path': root / 'zmask-test-stack-mask.tif',
+    },
+    'pipeline_params': {
+        'segmentation_channel': 0,
+        'patches_channel': 4,
+        'pxmap_channel': 0,
+        'pxmap_threshold': 0.6,
+    },
+    'pixel_classifier': root / 'zmask' / 'AF405-bodies_boundaries.ilp',
+}
+
 output_path = root / 'testing_output'
 output_path.mkdir(parents=True, exist_ok=True)
\ No newline at end of file
diff --git a/model_server/extensions/chaeo/conf/__init__.py b/model_server/extensions/chaeo/conf/__init__.py
deleted file mode 100644
index e69de29b..00000000
diff --git a/model_server/extensions/chaeo/conf/testing.py b/model_server/extensions/chaeo/conf/testing.py
deleted file mode 100644
index cf1b4c64..00000000
--- a/model_server/extensions/chaeo/conf/testing.py
+++ /dev/null
@@ -1,26 +0,0 @@
-from pathlib import Path
-
-root = Path.home() / 'model_server'
-
-multichannel_zstack = {
-    'path': root / 'testing' / 'zmask-test-stack-chlorophyl.tif',
-    'w': 512,
-    'h': 512,
-    'c': 5,
-    'z': 7,
-    'mask_path': root / 'testing' / 'zmask-test-stack-mask.tif',
-}
-
-pixel_classifier = {
-    'path': root / 'testing' / 'zmask' / 'AF405-bodies_boundaries.ilp'
-}
-
-pipeline_params = {
-    'segmentation_channel': 0,
-    'patches_channel': 4,
-    'pxmap_channel': 0,
-    'pxmap_threshold': 0.6,
-}
-
-output_path = root / 'testing' / 'output' / 'chaeo'
-output_path.mkdir(parents=True, exist_ok=True)
\ No newline at end of file
diff --git a/model_server/extensions/chaeo/tests/test_roiset_workflow.py b/model_server/extensions/chaeo/tests/test_roiset_workflow.py
index 369701de..53c830b8 100644
--- a/model_server/extensions/chaeo/tests/test_roiset_workflow.py
+++ b/model_server/extensions/chaeo/tests/test_roiset_workflow.py
@@ -2,24 +2,20 @@ import unittest
 
 from model_server.base.models import DummyInstanceSegmentationModel
 from model_server.base.roiset import RoiSetMetaParams, RoiSetExportParams
-from model_server.conf.testing import output_path
-from model_server.extensions.chaeo.conf.testing import multichannel_zstack, pipeline_params
+from model_server.conf.testing import output_path, roiset_test_data
 from model_server.extensions.chaeo.workflows import infer_object_map_from_zstack
+from model_server.extensions.ilastik.models import IlastikPixelClassifierModel
 
 from tests.test_roiset import BaseTestRoiSetMonoProducts
 
 class TestRoiSetWorkflow(BaseTestRoiSetMonoProducts, unittest.TestCase):
 
     def test_object_map_workflow(self):
-        pp = pipeline_params
-        models = [
-            self.pxmodel,
-            DummyInstanceSegmentationModel(),
-        ]
+        pp = roiset_test_data['pipeline_params']
 
         models = {
             'pixel_classifier': {
-                'model': self.pxmodel,
+                'model': IlastikPixelClassifierModel(params={'project_file': roiset_test_data['pixel_classifier']}),
                 'params': {
                     'px_class': 0,
                     'px_prob_threshold': 0.6,
@@ -61,7 +57,7 @@ class TestRoiSetWorkflow(BaseTestRoiSetMonoProducts, unittest.TestCase):
         })
 
         infer_object_map_from_zstack(
-            multichannel_zstack['path'],
+            roiset_test_data['multichannel_zstack']['path'],
             output_path / 'roiset' / 'workflow',
             models,
             segmentation_channel=pp['segmentation_channel'],
diff --git a/model_server/extensions/ilastik/tests/test_ilastik.py b/model_server/extensions/ilastik/tests/test_ilastik.py
index a65addf2..2c972e9d 100644
--- a/model_server/extensions/ilastik/tests/test_ilastik.py
+++ b/model_server/extensions/ilastik/tests/test_ilastik.py
@@ -268,4 +268,6 @@ class TestIlastikOverApi(TestServerBaseClass):
         )
         self.assertEqual(resp_infer.status_code, 200, resp_infer.content.decode())
 
-    # TODO: test IlastikObjectClassifierFromSegmentationModel when a test model is complete
\ No newline at end of file
+class TestIlastikObjectClassification(unittest.TestCase):
+    def setUp(self):
+        pass
diff --git a/tests/test_roiset.py b/tests/test_roiset.py
index 0a1490bd..fc5a8b46 100644
--- a/tests/test_roiset.py
+++ b/tests/test_roiset.py
@@ -3,22 +3,21 @@ import unittest
 import numpy as np
 from pathlib import Path
 
-from model_server.conf.testing import output_path
+from model_server.conf.testing import output_path, roiset_test_data
 
-from model_server.extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params
 from model_server.base.roiset import RoiSetMetaParams
 from model_server.base.roiset import _get_label_ids, RoiSet
 from model_server.base.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file
-from model_server.extensions.ilastik.models import IlastikPixelClassifierModel
 from model_server.base.models import DummyInstanceSegmentationModel
 
 class BaseTestRoiSetMonoProducts(object):
 
     def setUp(self) -> None:
         # set up test raw data and segmentation from file
-        self.stack = generate_file_accessor(multichannel_zstack['path'])
-        self.stack_ch_pa = self.stack.get_one_channel_data(pipeline_params['patches_channel'])
-        self.seg_mask = generate_file_accessor(multichannel_zstack['mask_path'])
+        self.stack = generate_file_accessor(roiset_test_data['multichannel_zstack']['path'])
+        self.stack_ch_pa = self.stack.get_one_channel_data(roiset_test_data['pipeline_params']['patches_channel'])
+        self.seg_mask = generate_file_accessor(roiset_test_data['multichannel_zstack']['mask_path'])
+
 
 class TestRoiSetMonoProducts(BaseTestRoiSetMonoProducts, unittest.TestCase):
 
-- 
GitLab