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

Cleaning up zmask builder

parent 5a770788
No related branches found
No related tags found
No related merge requests found
...@@ -5,7 +5,7 @@ import numpy as np ...@@ -5,7 +5,7 @@ import numpy as np
from conf.testing import output_path from conf.testing import output_path
from extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params from extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params
from extensions.chaeo.zstack import build_stack_mask from extensions.chaeo.zmask import build_zmask_from_object_mask
from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file
from extensions.ilastik.models import IlastikObjectClassifierModel, IlastikPixelClassifierModel from extensions.ilastik.models import IlastikObjectClassifierModel, IlastikPixelClassifierModel
...@@ -26,8 +26,7 @@ class TestZStackDerivedDataProducts(unittest.TestCase): ...@@ -26,8 +26,7 @@ class TestZStackDerivedDataProducts(unittest.TestCase):
# write_accessor_data_to_file(output_path / 'obmap.tif', self.obmap) # write_accessor_data_to_file(output_path / 'obmap.tif', self.obmap)
def test_zmask_makes_correct_boxes(self, mask_type='boxes', filters=None): def test_zmask_makes_correct_boxes(self, mask_type='boxes', filters=None):
zmask, meta = build_stack_mask( zmask, meta = build_zmask_from_object_mask(
'test_zmask_with boxes',
self.obmap.get_one_channel_data(0), self.obmap.get_one_channel_data(0),
self.stack.get_one_channel_data(0), self.stack.get_one_channel_data(0),
mask_type=mask_type, mask_type=mask_type,
......
...@@ -6,21 +6,27 @@ from skimage.measure import find_contours, label, regionprops_table ...@@ -6,21 +6,27 @@ from skimage.measure import find_contours, label, regionprops_table
from model_server.accessors import GenericImageDataAccessor from model_server.accessors import GenericImageDataAccessor
# build a single boolean 3d mask (objects v. bboxes) and return bounding boxes # build a single boolean 3d mask (objects v. bboxes) and return bounding boxes
def build_stack_mask(desc, obmap: GenericImageDataAccessor, stack: GenericImageDataAccessor, filters=None, mask_type='contour', expand_box_by=(0, 0)): # TODO: specify boxes data type def build_zmask_from_object_mask(
obmask: GenericImageDataAccessor,
stack: GenericImageDataAccessor,
filters=None,
mask_type='contour',
expand_box_by=(0, 0)
):
""" """
Given a 2D
filters: dict of (min, max) tuples filters: dict of (min, max) tuples
expand_box_by: (xy, z) pixelsf expand_box_by: (xy, z) pixelsf
""" """
# validate inputs # validate inputs
# assert len(stack.shape) == 3, stack.shape
assert stack.chroma == 1 assert stack.chroma == 1
assert stack.shape_dict['Z'] > 1 assert stack.shape_dict['Z'] > 1
assert mask_type in ('contours', 'boxes'), mask_type # TODO: replace with call to validator assert mask_type in ('contours', 'boxes'), mask_type
assert obmask.is_mask()
assert obmap.is_mask() assert obmask.chroma == 1
lamap = label(obmap.data[:, :, 0, 0]) assert obmask.shape_dict['Z'] == 1
lamap = label(obmask.data[:, :, 0, 0])
# build object query # build object query
query_str = 'label > 0' # always true query_str = 'label > 0' # always true
......
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