Skip to content
Snippets Groups Projects
Commit 96d6e34f authored by Christopher Randolph Rhodes's avatar Christopher Randolph Rhodes
Browse files

Can test ROI set pipelines without ilastik dependency

parent 1b66fc12
No related branches found
No related tags found
No related merge requests found
......@@ -3,15 +3,9 @@ import unittest
import numpy as np
from model_server.base.accessors import generate_file_accessor
from model_server.base.api import app
import model_server.conf.testing as conf
from model_server.base.pipelines.roiset_obmap import RoiSetObjectMapParams, roiset_object_map_pipeline
import model_server.extensions.ilastik.models as ilm
from model_server.extensions.ilastik.router import router
app.include_router(router)
data = conf.meta['image_files']
output_path = conf.meta['output_path']
......@@ -64,30 +58,6 @@ class BaseTestRoiSetMonoProducts(object):
'deproject_channel': 0,
}
# def _get_models(self): # tests can either use model objects directly, or load in API via project file string
# fp_px = classifiers['px']['path'].__str__()
# fp_ob = classifiers['seg_to_obj']['path'].__str__()
# return {
# 'pixel_classifier_segmentation': {
# 'name': 'ilastik_px_mod',
# 'project_file': fp_px,
# 'model': ilm.IlastikPixelClassifierModel(
# {
# 'project_file': fp_px,
# 'px_class': 0,
# 'px_prob_threshold': 0.5,
# },
# ),
# },
# 'object_classifier': {
# 'name': 'ilastik_ob_mod',
# 'project_file': fp_ob,
# 'model': ilm.IlastikObjectClassifierFromSegmentationModel(
# {'project_file': fp_ob},
# )
# },
# }
def _get_models(self):
from model_server.base.models import BinaryThresholdSegmentationModel, PermissiveInstanceSegmentationModel
return {
......@@ -139,7 +109,6 @@ class TestRoiSetWorkflow(BaseTestRoiSetMonoProducts, unittest.TestCase):
class TestRoiSetWorkflowOverApi(conf.TestServerBaseClass, BaseTestRoiSetMonoProducts):
# TODO: rename app
app_name = 'tests.test_ilastik.test_roiset_workflow:app'
input_data = data['multichannel_zstack_raw']
......@@ -157,24 +126,18 @@ class TestRoiSetWorkflowOverApi(conf.TestServerBaseClass, BaseTestRoiSetMonoProd
return self.assertPutSuccess(f'accessors/read_from_file/{fname}')
def test_load_pixel_classifier(self):
# mid = self.assertPutSuccess(
# 'ilastik/seg/load/',
# body={'project_file': self._get_models()['pixel_classifier_segmentation']['project_file']},
# )['model_id']
mid = self.assertPutSuccess(
'models/seg/binary_threshold/load/',
body={'tr': 1e4},
)['model_id']
# self.assertTrue(mid.startswith('IlastikPixelClassifierModel'))
self.assertTrue(mid.startswith('BinaryThresholdSegmentationModel'))
return mid
def test_load_object_classifier(self):
mid = self.assertPutSuccess(
'ilastik/seg_to_obj/load/',
body={'project_file': self._get_models()['object_classifier']['project_file']},
'models/classify/permissive/load/',
)['model_id']
self.assertTrue(mid.startswith('IlastikObjectClassifierFromSegmentationModel'))
self.assertTrue(mid.startswith('Permissive'))
return mid
def _object_map_workflow(self, ob_classifer_id):
......@@ -201,7 +164,7 @@ class TestRoiSetWorkflowOverApi(conf.TestServerBaseClass, BaseTestRoiSetMonoProd
obmod_id = self.test_load_object_classifier()
res = self._object_map_workflow(obmod_id)
acc_obmap = self.get_accessor(res['output_accessor_id'])
self.assertTrue(np.all(acc_obmap.unique()[0] == [0, 1, 2]))
self.assertTrue(np.all(acc_obmap.unique()[0] == [0, 1]))
# get object map via RoiSet API
roiset_id = res['roiset_id']
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment