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]])
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
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]])
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)
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"])