Skip to content
Snippets Groups Projects

Updates for TREC pipelines

Merged Christopher Randolph Rhodes requested to merge int_trec into staging
2 files
+ 57
84
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -209,11 +209,11 @@ class TestServerTestCase(conf.TestServerBaseClass):
@@ -209,11 +209,11 @@ class TestServerTestCase(conf.TestServerBaseClass):
class TestIlastikOverApi(TestServerTestCase):
class TestIlastikOverApi(TestServerTestCase):
def test_httpexception_if_incorrect_project_file_loaded(self):
def test_httpexception_if_incorrect_project_file_loaded(self):
resp_load = self.assertPutSuccess(
self.assertPutFailure(
'ilastik/seg/load/',
'ilastik/seg/load/',
 
500,
body={'project_file': 'improper.ilp'},
body={'project_file': 'improper.ilp'},
)
)
self.assertEqual(resp_load.status_code, 500)
def test_load_ilastik_pixel_model(self):
def test_load_ilastik_pixel_model(self):
@@ -226,21 +226,18 @@ class TestIlastikOverApi(TestServerTestCase):
@@ -226,21 +226,18 @@ class TestIlastikOverApi(TestServerTestCase):
return mid
return mid
def test_load_another_ilastik_pixel_model(self):
def test_load_another_ilastik_pixel_model(self):
model_id = self.test_load_ilastik_pixel_model()
self.test_load_ilastik_pixel_model()
resp_list_1st = self.assertGetSuccess('models').json()
self.assertEqual(len(self.assertGetSuccess('models')), 1)
self.assertEqual(len(resp_list_1st), 1, resp_list_1st)
self.assertPutSuccess(
resp_load_2nd = self.assertPutSuccess(
'ilastik/seg/load/',
'ilastik/seg/load/',
body={'project_file': str(ilastik_classifiers['px']['path']), 'duplicate': True},
body={'project_file': str(ilastik_classifiers['px']['path']), 'duplicate': True},
)
)
resp_list_2nd = self.assertGetSuccess('models').json()
self.assertEqual(len(self.assertGetSuccess('models')), 2)
self.assertEqual(len(resp_list_2nd), 2, resp_list_2nd)
self.assertPutSuccess(
resp_load_3rd = self.assertPutSuccess(
'ilastik/seg/load/',
'ilastik/seg/load/',
body={'project_file': str(ilastik_classifiers['px']['path']), 'duplicate': False},
body={'project_file': str(ilastik_classifiers['px']['path']), 'duplicate': False},
)
)
resp_list_3rd = self.assertGetSuccess('models').json()
self.assertEqual(len(self.assertGetSuccess('models')), 2)
self.assertEqual(len(resp_list_3rd), 2, resp_list_3rd)
def test_load_ilastik_pixel_model_with_params(self):
def test_load_ilastik_pixel_model_with_params(self):
params = {
params = {
@@ -248,67 +245,55 @@ class TestIlastikOverApi(TestServerTestCase):
@@ -248,67 +245,55 @@ class TestIlastikOverApi(TestServerTestCase):
'px_class': 0,
'px_class': 0,
'px_prob_threshold': 0.5
'px_prob_threshold': 0.5
}
}
resp_load = self.assertPutSuccess(
mid = self.assertPutSuccess(
'ilastik/seg/load/',
'ilastik/seg/load/',
body=params,
body=params,
)
)['model_id']
self.assertEqual(resp_load.status_code, 200, resp_load.json())
mods = self.assertGetSuccess('models')
model_id = resp_load.json()['model_id']
mods = self.assertGetSuccess('models').json()
self.assertEqual(len(mods), 1)
self.assertEqual(len(mods), 1)
self.assertEqual(mods[model_id]['params']['px_prob_threshold'], 0.5)
self.assertEqual(mods[mid]['params']['px_prob_threshold'], 0.5)
def test_load_ilastik_pxmap_to_obj_model(self):
def test_load_ilastik_pxmap_to_obj_model(self):
resp_load = self.assertPutSuccess(
mid = self.assertPutSuccess(
'ilastik/pxmap_to_obj/load/',
'ilastik/pxmap_to_obj/load/',
body={'project_file': str(ilastik_classifiers['pxmap_to_obj']['path'])},
body={'project_file': str(ilastik_classifiers['pxmap_to_obj']['path'])},
)
)['model_id']
model_id = resp_load.json()['model_id']
rl = self.assertGetSuccess('models')
self.assertEqual(rl[mid]['class'], 'IlastikObjectClassifierFromPixelPredictionsModel')
self.assertEqual(resp_load.status_code, 200, resp_load.json())
return mid
resp_list = self.assertGetSuccess('models')
self.assertEqual(resp_list.status_code, 200)
rj = resp_list.json()
self.assertEqual(rj[model_id]['class'], 'IlastikObjectClassifierFromPixelPredictionsModel')
return model_id
def test_load_ilastik_model_with_model_id(self):
def test_load_ilastik_model_with_model_id(self):
mid = 'new_model_id'
nmid = 'new_model_id'
resp_load = self.assertPutSuccess(
rmid = self.assertPutSuccess(
'ilastik/pxmap_to_obj/load/',
'ilastik/pxmap_to_obj/load/',
 
query={
 
'model_id': nmid,
 
},
body={
body={
'project_file': str(ilastik_classifiers['pxmap_to_obj']['path']),
'project_file': str(ilastik_classifiers['pxmap_to_obj']['path']),
'model_id': mid,
},
},
)
)['model_id']
res_mid = resp_load.json()['model_id']
self.assertEqual(rmid, nmid)
self.assertEqual(res_mid, mid)
def test_load_ilastik_seg_to_obj_model(self):
def test_load_ilastik_seg_to_obj_model(self):
resp_load = self.assertPutSuccess(
mid = self.assertPutSuccess(
'ilastik/seg_to_obj/load/',
'ilastik/seg_to_obj/load/',
body={'project_file': str(ilastik_classifiers['seg_to_obj']['path'])},
body={'project_file': str(ilastik_classifiers['seg_to_obj']['path'])},
)
)['model_id']
model_id = resp_load.json()['model_id']
rl = self.assertGetSuccess('models')
self.assertEqual(rl[mid]['class'], 'IlastikObjectClassifierFromSegmentationModel')
self.assertEqual(resp_load.status_code, 200, resp_load.json())
return mid
resp_list = self.assertGetSuccess('models')
self.assertEqual(resp_list.status_code, 200)
rj = resp_list.json()
self.assertEqual(rj[model_id]['class'], 'IlastikObjectClassifierFromSegmentationModel')
return model_id
def test_ilastik_infer_pixel_probability(self):
def test_ilastik_infer_pixel_probability(self):
fname = self.copy_input_file_to_server()
fname = self.copy_input_file_to_server()
model_id = self.test_load_ilastik_pixel_model()
mid = self.test_load_ilastik_pixel_model()
in_acc_id = self.assertPutSuccess(f'accessors/read_from_file/{fname}').json()
acc_id = self.assertPutSuccess(f'accessors/read_from_file/{fname}')
resp_infer = self.assertPutSuccess(
self.assertPutSuccess(
f'pipelines/segment',
f'pipelines/segment',
body={'model_id': model_id, 'accessor_id': in_acc_id, 'channel': 0},
body={'model_id': mid, 'accessor_id': acc_id, 'channel': 0},
)
)
self.assertEqual(resp_infer.status_code, 200, resp_infer.content.decode())
def test_ilastik_infer_px_then_ob(self):
def test_ilastik_infer_px_then_ob(self):
@@ -316,9 +301,9 @@ class TestIlastikOverApi(TestServerTestCase):
@@ -316,9 +301,9 @@ class TestIlastikOverApi(TestServerTestCase):
px_model_id = self.test_load_ilastik_pixel_model()
px_model_id = self.test_load_ilastik_pixel_model()
ob_model_id = self.test_load_ilastik_pxmap_to_obj_model()
ob_model_id = self.test_load_ilastik_pxmap_to_obj_model()
in_acc_id = self.assertPutSuccess(f'accessors/read_from_file/{fname}').json()
in_acc_id = self.assertPutSuccess(f'accessors/read_from_file/{fname}')
resp_infer = self.assertPutSuccess(
self.assertPutSuccess(
'ilastik/pipelines/pixel_then_object_classification/infer/',
'ilastik/pipelines/pixel_then_object_classification/infer/',
body={
body={
'px_model_id': px_model_id,
'px_model_id': px_model_id,
@@ -327,7 +312,6 @@ class TestIlastikOverApi(TestServerTestCase):
@@ -327,7 +312,6 @@ class TestIlastikOverApi(TestServerTestCase):
'channel': 0,
'channel': 0,
}
}
)
)
self.assertEqual(resp_infer.status_code, 200, resp_infer.content.decode())
class TestIlastikOnMultichannelInputs(TestServerTestCase):
class TestIlastikOnMultichannelInputs(TestServerTestCase):
@@ -394,38 +378,32 @@ class TestIlastikOnMultichannelInputs(TestServerTestCase):
@@ -394,38 +378,32 @@ class TestIlastikOnMultichannelInputs(TestServerTestCase):
"""
"""
copyfile(
copyfile(
self.pa_input_image,
self.pa_input_image,
Path(self.assertGetSuccess('paths').json()['inbound_images']) / self.pa_input_image.name
Path(self.assertGetSuccess('paths')['inbound_images']) / self.pa_input_image.name
)
)
in_acc_id = self.assertPutSuccess(f'accessors/read_from_file/{self.pa_input_image.name}').json()
in_acc_id = self.assertPutSuccess(f'accessors/read_from_file/{self.pa_input_image.name}')
resp_load_px = self.assertPutSuccess(
px_model_id = self.assertPutSuccess(
'ilastik/seg/load/',
'ilastik/seg/load/',
body={'project_file': str(self.pa_px_classifier)},
body={'project_file': str(self.pa_px_classifier)},
)
)['model_id']
self.assertEqual(resp_load_px.status_code, 200, resp_load_px.json())
px_model_id = resp_load_px.json()['model_id']
resp_load_ob = self.assertPutSuccess(
ob_model_id = self.assertPutSuccess(
'ilastik/pxmap_to_obj/load/',
'ilastik/pxmap_to_obj/load/',
body={'project_file': str(self.pa_ob_pxmap_classifier)},
body={'project_file': str(self.pa_ob_pxmap_classifier)},
)
)['model_id']
self.assertEqual(resp_load_ob.status_code, 200, resp_load_ob.json())
ob_model_id = resp_load_ob.json()['model_id']
# run the pipeline
# run the pipeline
resp_infer = self.assertPutSuccess(
obmap_id = self.assertPutSuccess(
'ilastik/pipelines/pixel_then_object_classification/infer/',
'ilastik/pipelines/pixel_then_object_classification/infer/',
body={
body={
'accessor_id': in_acc_id,
'accessor_id': in_acc_id,
'px_model_id': px_model_id,
'px_model_id': px_model_id,
'ob_model_id': ob_model_id,
'ob_model_id': ob_model_id,
}
}
)
)['output_accessor_id']
self.assertEqual(resp_infer.status_code, 200, resp_infer.content.decode())
# save output object map to file and compare
# save output object map to file and compare
obmap_id = resp_infer.json()['output_accessor_id']
obmap_acc = self.get_accessor(obmap_id)
obmap_acc = self.get_accessor(obmap_id)
self.assertEqual(obmap_acc.shape_dict['C'], 1)
self.assertEqual(obmap_acc.shape_dict['C'], 1)
Loading