def test_index(self): # Arrange active_layer = MockLayer(name="Layer 1", ndim=3) layers = [ active_layer, MockLayer(name="Layer 2", ndim=3), MockLayer(name="Layer 3", ndim=3), MockLayer(name="2D Layer", ndim=2), ] channels = [Channel(0), Channel(1), Channel(2), Channel(3)] workflows = [ create_autospec(WorkflowDefinition), create_autospec(WorkflowDefinition), create_autospec(WorkflowDefinition), ] self._mock_viewer.get_layers.return_value = layers self._mock_viewer.get_active_layer.return_value = [active_layer] type(self._mock_workflow_engine).workflow_definitions = PropertyMock( return_value=workflows) self._mock_layer_reader.get_channels.return_value = channels # Act self._controller.index() # Assert self._mock_view_manager.load_view.assert_called_once_with( self._controller.view, self._model) assert self._controller.model.layers == [ "Layer 1", "Layer 2", "Layer 3" ] assert self._controller.model.selected_layer == active_layer assert self._controller.model.channels == channels assert self._controller.model.workflows == workflows
def test_select_layer(self): # Arrange expected_layer = MockLayer(name="Layer 2") layers = [ MockLayer(name="Layer 1", ndim=3), expected_layer, MockLayer(name="Layer 3", ndim=3) ] channels = [Channel(0), Channel(1), Channel(2), Channel(3)] self._mock_viewer.get_layers.return_value = layers self._mock_layer_reader.get_channels.return_value = channels # Act self._controller.select_layer("Layer 2") # Assert assert self._controller.model.selected_layer == expected_layer
def _get_channels_from_path(self, image_path: str) -> List[Channel]: img = AICSImage(image_path) img.set_scene(0) channels = list() for index, name in enumerate(img.channel_names): channels.append(Channel(index, name)) return channels
def test_select_channel(self): # Act channel = Channel(0, "Brightfield") self._controller.select_channel(channel) # Assert assert self._controller.model.selected_channel == channel self._controller.view.update_workflows.assert_called_with(enabled=True)
def test_select_workflow(self): # Arrange layer0 = MockLayer("Layer 0", ndim=4) expected_workflow = create_autospec(Workflow) self._model.channels = [Channel(0), Channel(1), Channel(2), Channel(3)] self._model.selected_channel = Channel(0) self._model.selected_layer = MockLayer("Layer 1", ndim=4) self._mock_workflow_engine.get_executable_workflow.return_value = expected_workflow self._mock_viewer.add_image_layer.return_value = layer0 self._mock_layer_reader.get_channel_data.return_value = numpy.ones( (75, 100, 100)) # Act self._controller.select_workflow("sec61b") # Assert assert self._controller.model.active_workflow == expected_workflow self._mock_router.workflow_steps.assert_called_once()
def test_close_workflow(self): # Arrange channel = Channel(0, "Brightfield") self._controller.model.selected_channel = channel # Act self._controller.close_workflow() # Assert self._controller.model.selected_channel == None self._mock_router.workflow_selection.assert_called_once()
def test_handle_layers_change_keeps_channels(self): # Arrange selected_layer = MockLayer(name="Layer 1", ndim=3) layers = [ selected_layer, MockLayer(name="Layer 2", ndim=3), MockLayer(name="Layer 3", ndim=3), ] selected_channel = Channel(3) channels = [Channel(0), Channel(1), Channel(2), selected_channel] self._mock_viewer.get_layers.return_value = layers self._controller.model.channels = channels self._controller.model.selected_layer = selected_layer self._controller.model.selected_channel = selected_channel # Act self._controller._handle_layers_change(Event("test")) # Assert self._controller.model.layers == layers self._controller.view.update_layers.assert_called_once() self._controller.model.channels == channels self._controller.model.selected_channel == selected_channel
def test_handle_layers_change_resets_channels(self): # Arrange layers = [ MockLayer(name="Layer 1", ndim=3), MockLayer(name="Layer 2", ndim=3), MockLayer(name="Layer 3", ndim=3), ] self._mock_viewer.get_layers.return_value = layers self._controller.model.channels = [ Channel(0), Channel(1), Channel(2), Channel(3) ] # Act self._controller._handle_layers_change(Event("test")) # Assert self._controller.model.layers == layers self._controller.view.update_layers.assert_called_once() self._controller.model.channels is None self._controller.model.selected_channel is None self._controller.view.update_workflows.assert_called_with( enabled=False)
def _get_channels_default(self, layer: Layer) -> List[Channel]: if len(layer.data.shape) == 6: # Has scenes image_from_layer = [ layer.data[i, :, :, :, :, :] for i in range(layer.data.shape[0]) ] else: image_from_layer = layer.data img = AICSImage(image_from_layer) # gives us a 6D image img.set_scene(0) index_c = img.dims.order.index("C") channels = list() for index in range(img.shape[index_c]): channels.append(Channel(index)) return channels
def test_reset(self): # Arrange layers = ["layer 1", "layer 2"] selected_layer = None channels = ["channel 1", "channel 2"] selected_channel = Channel(1, "channel 1") workflows = ["laminb", "sec61b"] active_workflow = "laminb" model = SegmenterModel(layers, selected_layer, channels, selected_channel, workflows, active_workflow) # Act model.reset() # Assert assert model.layers is None assert model.selected_layer is None assert model.channels is None assert model.workflows is None assert model.active_workflow is None