예제 #1
0
    def test_select_click_multiple_groups(self):
        data = self.collagen[:100]
        self.send_signal("Data", data)
        self.widget.curveplot.make_selection([1], False)
        with hold_modifiers(self.widget, Qt.ControlModifier):
            self.widget.curveplot.make_selection([2], False)
        with hold_modifiers(self.widget, Qt.ShiftModifier):
            self.widget.curveplot.make_selection([3], False)
        with hold_modifiers(self.widget, Qt.ShiftModifier | Qt.ControlModifier):
            self.widget.curveplot.make_selection([4], False)
        out = self.get_output(ANNOTATED_DATA_SIGNAL_NAME)
        self.assertEqual(len(out), 100)  # have a data table at the output
        newvars = out.domain.variables + out.domain.metas
        oldvars = data.domain.variables + data.domain.metas
        group_at = [a for a in newvars if a not in oldvars][0]
        unselected = group_at.to_val("Unselected")
        out = out[np.flatnonzero(out.transform(Domain([group_at])).X != unselected)]
        self.assertEqual(len(out), 4)
        np.testing.assert_equal([o for o in out], [data[i] for i in [1, 2, 3, 4]])
        np.testing.assert_equal([o[group_at].value for o in out], ["G1", "G2", "G3", "G3"])

        # remove one element
        with hold_modifiers(self.widget, Qt.AltModifier):
            self.widget.curveplot.make_selection([1], False)
        out = self.get_output("Selection")
        np.testing.assert_equal(len(out), 3)
        np.testing.assert_equal([o for o in out], [data[i] for i in [2, 3, 4]])
예제 #2
0
    def test_select_thick_lines_threshold(self):
        data = self.collagen[:100]
        assert MAX_INSTANCES_DRAWN >= len(data) > MAX_THICK_SELECTED
        threshold = MAX_THICK_SELECTED
        self.send_signal("Data", data)
        set_curve_pens = 'orangecontrib.spectroscopy.widgets.owspectra.CurvePlot.set_curve_pens'
        with patch(set_curve_pens, Mock()) as m:

            def clen():
                return len(m.call_args[0][0])

            self.widget.curveplot.make_selection(list(range(threshold - 1)))
            self.assertEqual(threshold - 1, clen())
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold + 1])
            self.assertEqual(threshold + 1, clen())  # redraw curves as thin
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold + 2])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.AltModifier):
                self.widget.curveplot.make_selection([threshold + 2])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.AltModifier):
                self.widget.curveplot.make_selection([threshold + 1])
            self.assertEqual(threshold + 1, clen())  # redraw curves as thick
예제 #3
0
    def test_select_click_multiple_groups(self):
        data = self.collagen[:100]
        self.send_signal("Data", data)
        self.widget.curveplot.make_selection([1], False)
        with hold_modifiers(self.widget, Qt.ControlModifier):
            self.widget.curveplot.make_selection([2], False)
        with hold_modifiers(self.widget, Qt.ShiftModifier):
            self.widget.curveplot.make_selection([3], False)
        with hold_modifiers(self.widget,
                            Qt.ShiftModifier | Qt.ControlModifier):
            self.widget.curveplot.make_selection([4], False)
        out = self.get_output(ANNOTATED_DATA_SIGNAL_NAME)
        self.assertEqual(len(out), 100)  # have a data table at the output
        newvars = out.domain.variables + out.domain.metas
        oldvars = data.domain.variables + data.domain.metas
        group_at = [a for a in newvars if a not in oldvars][0]
        out = out[np.flatnonzero(
            out.transform(Orange.data.Domain([group_at])).X != 0)]
        self.assertEqual(len(out), 4)
        np.testing.assert_equal([o for o in out],
                                [data[i] for i in [1, 2, 3, 4]])
        np.testing.assert_equal([o[group_at].value for o in out],
                                ["G1", "G2", "G3", "G3"])

        # remove one element
        with hold_modifiers(self.widget, Qt.AltModifier):
            self.widget.curveplot.make_selection([1], False)
        out = self.get_output("Selection")
        np.testing.assert_equal(len(out), 3)
        np.testing.assert_equal([o for o in out], [data[i] for i in [2, 3, 4]])
예제 #4
0
    def test_select_thick_lines_threshold(self):
        data = self.collagen[:100]
        assert MAX_INSTANCES_DRAWN >= len(data) > MAX_THICK_SELECTED
        threshold = MAX_THICK_SELECTED
        self.send_signal("Data", data)
        set_curve_pens = 'orangecontrib.spectroscopy.widgets.owspectra.CurvePlot.set_curve_pens'
        with patch(set_curve_pens, Mock()) as m:

            def clen():
                return len(m.call_args[0][0])

            self.widget.curveplot.make_selection(list(range(threshold - 1)))
            self.assertEqual(threshold - 1, clen())
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold + 1])
            self.assertEqual(threshold + 1, clen())  # redraw curves as thin
            with hold_modifiers(self.widget, Qt.ControlModifier):
                self.widget.curveplot.make_selection([threshold + 2])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.AltModifier):
                self.widget.curveplot.make_selection([threshold + 2])
            self.assertEqual(1, clen())
            with hold_modifiers(self.widget, Qt.AltModifier):
                self.widget.curveplot.make_selection([threshold + 1])
            self.assertEqual(threshold + 1, clen())  # redraw curves as thick
예제 #5
0
    def test_select_click_multiple_groups(self):
        data = self.whitelight
        self.send_signal("Data", data)
        self.widget.imageplot.select_by_click(QPointF(1, 2), False)
        with hold_modifiers(self.widget, Qt.ControlModifier):
            self.widget.imageplot.select_by_click(QPointF(2, 2), False)
        with hold_modifiers(self.widget, Qt.ShiftModifier):
            self.widget.imageplot.select_by_click(QPointF(3, 2), False)
        with hold_modifiers(self.widget, Qt.ShiftModifier | Qt.ControlModifier):
            self.widget.imageplot.select_by_click(QPointF(4, 2), False)
        out = self.get_output(ANNOTATED_DATA_SIGNAL_NAME)
        self.assertEqual(len(out), 20000)  # have a data table at the output
        newvars = out.domain.variables + out.domain.metas
        oldvars = data.domain.variables + data.domain.metas
        group_at = [a for a in newvars if a not in oldvars][0]
        unselected = group_at.to_val("Unselected")
        out = out[np.flatnonzero(out.transform(Orange.data.Domain([group_at])).X != unselected)]
        self.assertEqual(len(out), 4)
        np.testing.assert_equal([o["x"].value for o in out], [1, 2, 3, 4])
        np.testing.assert_equal([o[group_at].value for o in out], ["G1", "G2", "G3", "G3"])

        # remove one element
        with hold_modifiers(self.widget, Qt.AltModifier):
            self.widget.imageplot.select_by_click(QPointF(1, 2), False)
        out = self.get_output("Selection")
        np.testing.assert_equal(len(out), 3)
예제 #6
0
    def test_select_click_multiple_groups(self):
        data = self.whitelight
        self.send_signal("Data", data)
        self.widget.imageplot.select_by_click(QPointF(1, 2), False)
        with hold_modifiers(self.widget, Qt.ControlModifier):
            self.widget.imageplot.select_by_click(QPointF(2, 2), False)
        with hold_modifiers(self.widget, Qt.ShiftModifier):
            self.widget.imageplot.select_by_click(QPointF(3, 2), False)
        with hold_modifiers(self.widget, Qt.ShiftModifier | Qt.ControlModifier):
            self.widget.imageplot.select_by_click(QPointF(4, 2), False)
        out = self.get_output(ANNOTATED_DATA_SIGNAL_NAME)
        self.assertEqual(len(out), 20000)  # have a data table at the output
        newvars = out.domain.variables + out.domain.metas
        oldvars = data.domain.variables + data.domain.metas
        group_at = [a for a in newvars if a not in oldvars][0]
        unselected = group_at.to_val("Unselected")
        out = out[np.flatnonzero(out.transform(Orange.data.Domain([group_at])).X != unselected)]
        self.assertEqual(len(out), 4)
        np.testing.assert_equal([o["x"].value for o in out], [1, 2, 3, 4])
        np.testing.assert_equal([o[group_at].value for o in out], ["G1", "G2", "G3", "G3"])

        # remove one element
        with hold_modifiers(self.widget, Qt.AltModifier):
            self.widget.imageplot.select_by_click(QPointF(1, 2), False)
        out = self.get_output("Selection")
        np.testing.assert_equal(len(out), 3)
예제 #7
0
    def test_select_click_multiple_groups(self):
        data = self.collagen[:100]
        self.send_signal("Data", data)
        self.widget.curveplot.make_selection([1])
        with hold_modifiers(self.widget, Qt.ControlModifier):
            self.widget.curveplot.make_selection([2])
        with hold_modifiers(self.widget, Qt.ShiftModifier):
            self.widget.curveplot.make_selection([3])
        with hold_modifiers(self.widget,
                            Qt.ShiftModifier | Qt.ControlModifier):
            self.widget.curveplot.make_selection([4])
        out = self.get_output(self.widget.Outputs.annotated_data)
        self.assertEqual(len(out), 100)  # have a data table at the output
        newvars = out.domain.variables + out.domain.metas
        oldvars = data.domain.variables + data.domain.metas
        group_at = [a for a in newvars if a not in oldvars][0]
        unselected = group_at.to_val("Unselected")
        out = out[np.flatnonzero(
            out.transform(Domain([group_at])).X != unselected)]
        self.assertEqual(len(out), 4)
        np.testing.assert_equal([o for o in out],
                                [data[i] for i in [1, 2, 3, 4]])
        np.testing.assert_equal([o[group_at].value for o in out],
                                ["G1", "G2", "G3", "G3"])
        out = self.get_output(self.widget.Outputs.selected_data)
        np.testing.assert_equal([o[out.domain["Group"]].value for o in out],
                                ["G1", "G2", "G3", "G3"])

        # remove one element
        with hold_modifiers(self.widget, Qt.AltModifier):
            self.widget.curveplot.make_selection([1])
        out = self.get_output(self.widget.Outputs.selected_data)
        np.testing.assert_equal(len(out), 3)
        np.testing.assert_equal([o for o in out], [data[i] for i in [2, 3, 4]])
        np.testing.assert_equal([o[out.domain["Group"]].value for o in out],
                                ["G2", "G3", "G3"])