From a1b567857586b2f2c9ccbc98b97a54709c1cef91 Mon Sep 17 00:00:00 2001 From: Christopher Rhodes <christopher.rhodes@embl.de> Date: Mon, 23 Sep 2024 09:27:54 +0200 Subject: [PATCH] No errors but seg method comes up with fewer ROIs than bbox --- model_server/base/accessors.py | 5 +++++ model_server/base/roiset.py | 2 -- tests/base/test_roiset.py | 17 +++++++++-------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/model_server/base/accessors.py b/model_server/base/accessors.py index 64a9d683..a9366156 100644 --- a/model_server/base/accessors.py +++ b/model_server/base/accessors.py @@ -440,6 +440,11 @@ class PatchStack(InMemoryDataAccessor): else: tifffile.imwrite(fpath, tzcyx, imagej=True) + def write(self, fp: Path, mkdir=True): + if mkdir: + fp.parent.mkdir(parents=True, exist_ok=True) + self.export_pyxcz(fp) + @property def shape_dict(self): return dict(zip(('P', 'Y', 'X', 'C', 'Z'), self.data.shape)) diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py index c558c549..7a95a947 100644 --- a/model_server/base/roiset.py +++ b/model_server/base/roiset.py @@ -398,8 +398,6 @@ class RoiSet(object): return RoiSet(acc_raw, df, params) - - # TODO: add a generator for the object detection case @staticmethod def from_bounding_boxes( acc_raw: GenericImageDataAccessor, diff --git a/tests/base/test_roiset.py b/tests/base/test_roiset.py index 585ded21..87a1d889 100644 --- a/tests/base/test_roiset.py +++ b/tests/base/test_roiset.py @@ -640,8 +640,8 @@ class TestRoiSetObjectDetection(unittest.TestCase): from skimage.measure import label, regionprops, regionprops_table - mask = self.seg_mask_3d.data_xyz - labels = label(mask) + mask = self.seg_mask_3d + labels = label(mask.data_xyz, connectivity=3) table = pd.DataFrame( regionprops_table(labels) ).rename( @@ -654,16 +654,17 @@ class TestRoiSetObjectDetection(unittest.TestCase): bboxes = table[['y', 'x', 'h', 'w']].to_dict(orient='records') - roiset = RoiSet.from_bounding_boxes( - self.stack_ch_pa, - bboxes, + roiset_bbox = RoiSet.from_bounding_boxes(self.stack_ch_pa, bboxes) - ) + patches_bbox = roiset_bbox.get_patches_acc() + self.assertEqual(len(table), patches_bbox.count) - patches = roiset.get_patches_acc() - self.assertEqual(len(table), patches.count) + # roiset w/ seg for comparison + roiset_seg = RoiSet.from_binary_mask(self.stack_ch_pa, mask) + patches_seg = roiset_seg.get_patches_acc() # TODO: test segments reside in bounding boxes + self.assertEqual(roiset_seg.count, roiset_bbox.count) self.assertTrue(False) class TestRoiSetPolygons(BaseTestRoiSetMonoProducts, unittest.TestCase): -- GitLab