Skip to content
Snippets Groups Projects
test_zstack.py 1.69 KiB
Newer Older
from conf.testing import output_path

from extensions.chaeo.conf.testing import multichannel_zstack, pixel_classifier, pipeline_params
from extensions.chaeo.zstack import build_stack_mask
from model_server.accessors import generate_file_accessor, InMemoryDataAccessor, write_accessor_data_to_file
from extensions.ilastik.models import IlastikObjectClassifierModel, IlastikPixelClassifierModel

class TestZStackDerivedDataProducts(unittest.TestCase):

    def setUp(self) -> None:
        # need test data incl obj map
        self.zstack = generate_file_accessor(multichannel_zstack['path'])

        pxmodel = IlastikPixelClassifierModel(
            {'project_file': pixel_classifier['path']},
        mip = InMemoryDataAccessor(self.zstack.get_one_channel_data(channel=0).data.max(axis=-1, keepdims=True))
        self.pxmap, result = pxmodel.infer(mip)

        write_accessor_data_to_file(output_path / 'pxmap.tif', self.pxmap)
        self.obmap = InMemoryDataAccessor((self.pxmap.data > pipeline_params['threshold']).astype('uint8'))
        write_accessor_data_to_file(output_path / 'obmap.tif', self.obmap)

    def test_zmask_makes_correct_boxes(self):
        zmask, meta = build_stack_mask(
            'test_zmask_with boxes',
            self.stack,
            self.obmap,
            mask_type='boxes',
        )
        zmask_acc = InMemoryDataAccessor(zmask)
        self.assertTrue(zmask_acc.is_object_map())

        # assert dimensionality of zmask
        self.assertEqual(zmask.shape_dict['Z'] > 1)
        self.assertEqual(zmask.shape_dict['C'] == 1)

        # assert non-trivial meta info in boxes
        pass

    def test_zmask_makes_correct_contours(self):
        pass