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