示例#1
0
    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
示例#2
0
    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
示例#3
0
    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
示例#4
0
    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)
示例#5
0
    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()
示例#7
0
    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
示例#8
0
    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)
示例#9
0
    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
示例#10
0
    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