def test_some_failed(self): simulate.combobox_activate_index(self.widget.controls.aggregator, 1) self.send_signal("Corpus", self.corpus) self.wait_until_finished() result = self.get_output(self.widget.Outputs.new_corpus) self.assertGreater(len(self.corpus), len(result)) self.assertTrue(self.widget.Warning.unsuccessful_embeddings.is_shown())
def test_annotation_combo(self): self.assertEqual(self.widget._annot_combo.currentText(), "None") self.assertEqual(self.widget._annot_combo.count(), 2) self.send_signal(self.widget.Inputs.model, self.rf_reg) self.assertEqual(self.widget._annot_combo.currentText(), "None") self.assertEqual(self.widget._annot_combo.count(), 2) self.send_signal(self.widget.Inputs.background_data, self.heart) self.send_signal(self.widget.Inputs.data, self.heart[:5]) self.send_signal(self.widget.Inputs.model, self.rf_cls) self.assertEqual(self.widget._annot_combo.currentText(), "None") self.assertEqual(self.widget._annot_combo.count(), 18) self.wait_until_finished() self.widget.graph.set_axis = Mock() simulate.combobox_activate_index(self.widget._annot_combo, 3) args = ([[(0, "0"), (1, "0"), (2, "0"), (3, "1"), (4, "1")]], ) self.widget.graph.set_axis.assert_called_once_with(*args) self.widget.graph.set_axis.reset_mock() simulate.combobox_activate_index(self.widget._annot_combo, 1) args = ([[(0, "4"), (1, "5"), (2, "1"), (3, "3"), (4, "2")]], ) self.widget.graph.set_axis.assert_called_once_with(*args) self.send_signal(self.widget.Inputs.data, None) self.assertEqual(self.widget._annot_combo.currentText(), "None") self.assertEqual(self.widget._annot_combo.count(), 2)
def test_select_feature(self): """Test feature selection""" feature_combo = self.widget.controls.feature self.send_signal(self.widget.Inputs.data, self.data_cont) time.sleep(0.1) self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 6) self.assertListEqual(["petal length", "petal width"], [a.name for a in self.get_output( self.widget.Outputs.features)]) simulate.combobox_activate_index(feature_combo, 1) time.sleep(0.1) self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 3) self.assertListEqual(["petal length", "sepal length"], [a.name for a in self.get_output( self.widget.Outputs.features)]) simulate.combobox_activate_index(feature_combo, 0) time.sleep(0.1) self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 6) self.assertListEqual(["petal length", "sepal length"], [a.name for a in self.get_output( self.widget.Outputs.features)])
def test_optimization_reset(self): self.test_optimization() init = self.widget.controls.initialization simulate.combobox_activate_index(init, 0) self.assertEqual(self.widget.run_button.text(), "Stop") simulate.combobox_activate_index(init, 1) self.assertEqual(self.widget.run_button.text(), "Stop")
def test_color_combo(self): """ Color combo enables to select class values. Checks if class values are selected correctly. GH-2133 GH-2036 """ RESULTS = [[0, 2, 6], [0, 3, 10], [0, 4, 11], [1, 2, 6], [1, 3, 7], [1, 4, 7]] table = Table("titanic") self.send_signal(self.widget.Inputs.data, table) color_vars = ["(Pearson residuals)"] + [str(x) for x in table.domain.variables] for i, cv in enumerate(color_vars): idx = self.widget.cb_attr_color.findText(cv) self.widget.cb_attr_color.setCurrentIndex(idx) color = self.widget.cb_attr_color.currentText() simulate.combobox_activate_index(self.widget.controls.variable_color, idx, 0) discrete_data = self.widget.discrete_data if color == "(Pearson residuals)": self.widget.interior_coloring = self.widget.PEARSON self.assertIsNone(discrete_data.domain.class_var) else: self.widget.interior_coloring = self.widget.CLASS_DISTRIBUTION self.assertEqual(color, str(discrete_data.domain.class_var)) output = self.get_output("Data") self.assertEqual(output.domain.class_var, table.domain.class_var) for ma in range(2, 5): self.vizrank.max_attrs = ma sc = self.vizrank.state_count() self.assertTrue([i > 0, ma, sc] in RESULTS)
def test_missing_class_value(self): iris = Table("iris") iris_set_ver = iris[:100] target_cb = self.widget.controls.target_class_index lr = LogisticRegressionLearner()(iris) self.send_signal(self.widget.Inputs.classifier, lr) simulate.combobox_activate_index(target_cb, 2) self.assertEqual(target_cb.currentIndex(), 2) self.assertEqual(target_cb.count(), 3) lr = LogisticRegressionLearner()(iris_set_ver) self.send_signal(self.widget.Inputs.classifier, lr) self.assertEqual(target_cb.currentIndex(), 0) self.assertEqual(target_cb.count(), 2) nb = NaiveBayesLearner()(iris) self.send_signal(self.widget.Inputs.classifier, nb) simulate.combobox_activate_index(target_cb, 2) self.assertEqual(target_cb.currentIndex(), 2) self.assertEqual(target_cb.count(), 3) nb = NaiveBayesLearner()(iris_set_ver) self.send_signal(self.widget.Inputs.classifier, nb) self.assertEqual(target_cb.currentIndex(), 2) self.assertEqual(target_cb.count(), 3)
def test_data_aggregation_change_attr(self): """ With this test we check whether discrete attribute for aggregation changes correctly """ w = self.widget # add additional discrete attribute to data iris = Table(Domain(self.iris.domain.attributes, self.iris.domain.class_var, metas=[DiscreteVariable("a", values=["a", "b"])]), self.iris.X, self.iris.Y, metas=[[0]] * 100 + [[1]] * 50) # send iris - dataset where analysis should pass self.send_signal(w.Inputs.data, iris) cbox = self.widget.controls.cluster_var simulate.combobox_activate_index(cbox, 0) self.assertEqual(3, len(w.clusters_unordered)) self.assertTupleEqual((3, 4), w.aggregated_data.shape) cbox = self.widget.controls.cluster_var simulate.combobox_activate_index(cbox, 2) self.assertEqual(2, len(w.clusters_unordered)) self.assertTupleEqual((2, 4), w.aggregated_data.shape)
def test_optimization_reset(self): self.test_optimization() init = self.widget.controls.initialization simulate.combobox_activate_index(init, 0) self.assertEqual(self.widget.run_button.text(), "Stop") simulate.combobox_activate_index(init, 1) self.assertEqual(self.widget.run_button.text(), "Stop")
def test_attr_range(self): vizrank = self.widget.vizrank data = Table("iris.tab") domain = data.domain self.send_signal(self.widget.Inputs.data, data) for vizrank.max_attrs, rge in ( (0, (1, 1)), (1, (2, 2)), (2, (3, 3)), (3, (4, 4)), (4, (1, 2)), (5, (1, 3)), (6, (1, 4))): self.assertEqual(vizrank.attr_range(), rge, f"failed at max_attrs={vizrank.max_attrs}") reduced = data.transform(Domain(domain.attributes[:2], domain.class_var)) self.send_signal(self.widget.Inputs.data, reduced) for vizrank.max_attrs, rge in ( (0, (1, 1)), (1, (2, 2)), (2, (3, 2)), (3, (4, 2)), (4, (1, 2)), (5, (1, 2)), (6, (1, 2))): self.assertEqual(vizrank.attr_range(), rge, f"failed at max_attrs={vizrank.max_attrs}") self.assertIs(vizrank.state_count() == 0, rge[0] > rge[1]) simulate.combobox_activate_index(self.widget.controls.variable_color, 0) for vizrank.max_attrs, rge in ( (0, (2, 2)), (1, (2, 2)), (2, (3, 3)), (3, (4, 3)), (4, (2, 2)), (5, (2, 3)), (6, (2, 3))): self.assertEqual(vizrank.attr_range(), rge, f"failed at max_attrs={vizrank.max_attrs}") self.assertIs(vizrank.state_count() == 0, rge[0] > rge[1])
def test_settings(self): self.send_signal(self.widget.Inputs.data, self.heart[:10]) self.send_signal(self.widget.Inputs.background_data, self.heart) self.send_signal(self.widget.Inputs.model, self.rf_cls) simulate.combobox_activate_index(self.widget._target_combo, 1) simulate.combobox_activate_index(self.widget._order_combo, 4) simulate.combobox_activate_index(self.widget._annot_combo, 3) self.send_signal(self.widget.Inputs.data, self.housing[:10]) self.send_signal(self.widget.Inputs.background_data, self.housing) self.send_signal(self.widget.Inputs.model, self.rf_reg) self.assertEqual(self.widget.target_index, -1) self.assertEqual(self.widget.order_index, 0) self.assertEqual(self.widget.annot_index, 0) simulate.combobox_activate_index(self.widget._order_combo, 6) simulate.combobox_activate_index(self.widget._annot_combo, 7) self.send_signal(self.widget.Inputs.data, self.heart[:10]) self.assertEqual(self.widget.target_index, 1) self.assertEqual(self.widget.order_index, 4) self.assertEqual(self.widget.annot_index, 3) self.send_signal(self.widget.Inputs.data, self.housing[:10]) self.assertEqual(self.widget.target_index, -1) self.assertEqual(self.widget.order_index, 6) self.assertEqual(self.widget.annot_index, 7)
def test_color_combo(self): """ Color combo enables to select class values. Checks if class values are selected correctly. GH-2133 GH-2036 """ RESULTS = [[0, 2, 6], [0, 3, 10], [0, 4, 11], [1, 2, 6], [1, 3, 7], [1, 4, 7]] table = Table("titanic") self.send_signal(self.widget.Inputs.data, table) color_vars = ["(Pearson residuals)" ] + [str(x) for x in table.domain.variables] for i, cv in enumerate(color_vars): idx = self.widget.cb_attr_color.findText(cv) self.widget.cb_attr_color.setCurrentIndex(idx) color = self.widget.cb_attr_color.currentText() simulate.combobox_activate_index( self.widget.controls.variable_color, idx, 0) discrete_data = self.widget.discrete_data if color == "(Pearson residuals)": self.assertIsNone(discrete_data.domain.class_var) else: self.assertEqual(color, str(discrete_data.domain.class_var)) output = self.get_output("Data") self.assertEqual(output.domain.class_var, table.domain.class_var) for ma in range(2, 5): self.vizrank.max_attrs = ma sc = self.vizrank.state_count() self.assertTrue([i > 0, ma, sc] in RESULTS)
def test_select_feature(self): """Test feature selection""" feature_combo = self.widget.controls.feature self.send_signal(self.widget.Inputs.data, self.data_cont) self.wait_until_finished() self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 6) self.assertListEqual(["petal length", "petal width"], [a.name for a in self.get_output( self.widget.Outputs.features)]) simulate.combobox_activate_index(feature_combo, 1) self.wait_until_finished() self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 3) self.assertListEqual(["petal length", "sepal length"], [a.name for a in self.get_output( self.widget.Outputs.features)]) simulate.combobox_activate_index(feature_combo, 0) self.wait_until_finished() self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 6) self.assertListEqual(["petal length", "sepal length"], [a.name for a in self.get_output( self.widget.Outputs.features)])
def test_select_feature_against_heuristic(self): """Never use heuristic if feature is selected""" feature_combo = self.widget.controls.feature self.send_signal(self.widget.Inputs.data, self.data_cont) simulate.combobox_activate_index(feature_combo, 2) time.sleep(0.1) self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 3)
def test_output_summary(self): cbox = self.widget.controls.node_type simulate.combobox_activate_index(cbox, 0) output_summary = self.widget.info.set_output_summary = Mock() self.send_signal("Corpus", self.corpus) self.wait_until_finished() summary = "Undirected network with 9 nodes and 26 edges." output_summary.assert_called_with("9 / 26", summary)
def test_disabled(self): cbox = self.widget.controls.node_type simulate.combobox_activate_index(cbox, 0) self.assertFalse(self.widget.controls.window_size.isEnabled()) self.assertFalse(self.widget.controls.freq_threshold.isEnabled()) simulate.combobox_activate_index(cbox, 1) self.assertTrue(self.widget.controls.window_size.isEnabled()) self.assertTrue(self.widget.controls.freq_threshold.isEnabled())
def test_select_feature_against_heuristic(self): """Never use heuristic if feature is selected""" feature_combo = self.widget.controls.feature self.send_signal(self.widget.Inputs.data, self.data_cont) simulate.combobox_activate_index(feature_combo, 2) self.wait_until_finished() self.process_events() self.assertEqual(self.widget.vizrank.rank_model.rowCount(), 3)
def __init_widget(self, data=None, widget=None): if data is None: data = self.housing if widget is None: widget = self.widget self.send_signal(widget.Inputs.data, data, widget=widget) widget._OWCurveFit__param_widget._ParametersWidget__button.click() widget._OWCurveFit__expression_edit.setText("p1 + ") simulate.combobox_activate_index(widget.controls._feature, 1) widget.apply_button.button.click()
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWScatterPlot) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) model = self.widget.controls.attr_x.model() self.widget.attr_x = model[0] self.widget.attr_y = model[1] simulate.combobox_activate_index(self.widget.controls.attr_x, 2) self.assertIs(self.widget.attr_x, model[2]) on_manual_change.assert_called_with(model[2], model[1])
def test_regression_lines_appear(self): self.widget.graph.controls.show_reg_line.setChecked(True) self.assertEqual(len(self.widget.graph.reg_line_items), 0) self.send_signal(self.widget.Inputs.data, self.data) self.assertEqual(len(self.widget.graph.reg_line_items), 4) simulate.combobox_activate_index(self.widget.controls.attr_color, 0) self.assertEqual(len(self.widget.graph.reg_line_items), 1) data = self.data.copy() data[:, 0] = np.nan self.send_signal(self.widget.Inputs.data, data) self.assertEqual(len(self.widget.graph.reg_line_items), 0)
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWScatterPlot) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) model = self.widget.controls.attr_x.model() self.widget.attr_x = model[0] self.widget.attr_y = model[1] simulate.combobox_activate_index(self.widget.controls.attr_x, 2) self.assertIs(self.widget.attr_x, model[2]) on_manual_change.assert_called_with(model[2], model[1])
def test_regression_lines_appear(self): self.widget.graph.controls.show_reg_line.setChecked(True) self.assertEqual(len(self.widget.graph.reg_line_items), 0) self.send_signal(self.widget.Inputs.data, self.data) self.assertEqual(len(self.widget.graph.reg_line_items), 4) simulate.combobox_activate_index(self.widget.controls.attr_color, 0) self.assertEqual(len(self.widget.graph.reg_line_items), 1) data = self.data.copy() data[:, 0] = np.nan self.send_signal(self.widget.Inputs.data, data) self.assertEqual(len(self.widget.graph.reg_line_items), 0)
def test_metric_changed(self): w = self.widget self.send_signal(w.Inputs.data, self.iris) cbox = w.controls.metric_idx simulate.combobox_activate_index(cbox, 2) output = self.get_output(w.Outputs.annotated_data) self.assertIsNotNone(output) self.assertEqual(len(self.iris), len(output)) self.assertTupleEqual(self.iris.X.shape, output.X.shape) self.assertTupleEqual(self.iris.Y.shape, output.Y.shape)
def test_not_image_data_attributes(self): """ Test change of the attributes when data not images """ w = self.widget table = Table("iris") self.send_signal(w.Inputs.images, table) self.wait_until_stop_blocking() # it should jut not chrash cbox = self.widget.controls.cb_embedder_current_id simulate.combobox_activate_index(cbox, 3)
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWMosaicDisplay) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) self.widget.variable1 = data.domain[0] self.widget.variable2 = data.domain[1] simulate.combobox_activate_index(self.widget.controls.variable2, 3) self.assertEqual(self.widget.variable2, data.domain[2]) call_args = on_manual_change.call_args[0][0] self.assertEqual(len(call_args), 2) self.assertEqual(call_args[0].name, data.domain[0].name) self.assertEqual(call_args[1].name, data.domain[2].name)
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWSieveDiagram) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) model = self.widget.controls.attr_x.model() self.widget.attr_x = model[2] self.widget.attr_y = model[3] simulate.combobox_activate_index(self.widget.controls.attr_x, 4) call_args = on_manual_change.call_args[0] self.assertEqual(len(call_args), 2) self.assertEqual(call_args[0].name, data.domain[2].name) self.assertEqual(call_args[1].name, data.domain[1].name)
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWSieveDiagram) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) model = self.widget.controls.attr_x.model() self.widget.attr_x = model[2] self.widget.attr_y = model[3] simulate.combobox_activate_index(self.widget.controls.attr_x, 4) call_args = on_manual_change.call_args[0] self.assertEqual(len(call_args), 2) self.assertEqual(call_args[0].name, data.domain[2].name) self.assertEqual(call_args[1].name, data.domain[1].name)
def test_vizrank_receives_manual_change(self, on_manual_change): # Recreate the widget so the patch kicks in self.widget = self.create_widget(OWMosaicDisplay) data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) self.widget.variable1 = data.domain[0] self.widget.variable2 = data.domain[1] simulate.combobox_activate_index(self.widget.controls.variable2, 3) self.assertEqual(self.widget.variable2, data.domain[2]) call_args = on_manual_change.call_args[0][0] self.assertEqual(len(call_args), 2) self.assertEqual(call_args[0].name, data.domain[0].name) self.assertEqual(call_args[1].name, data.domain[2].name)
def test_colored_circles_with_constant(self): domain = self.iris.domain self.widget.pie_charts = False with self.iris.unlocked(): self.iris.X[:, 0] = 1 self.send_signal(self.widget.Inputs.data, self.iris) attr0 = domain.attributes[0] combo = self.widget.controls.attr_color simulate.combobox_activate_index(combo, combo.model().indexOf(attr0)) self.assertIsNotNone(self.widget.colors) self.assertFalse(self.widget.Warning.no_defined_colors.is_shown()) dom1 = Domain(domain.attributes[1:], domain.class_var, domain.attributes[:1]) iris = self.iris.transform(dom1).copy() with iris.unlocked(iris.metas): iris.metas[::2, 0] = np.nan self.send_signal(self.widget.Inputs.data, iris) simulate.combobox_activate_index(combo, combo.model().indexOf(attr0)) self.assertIsNotNone(self.widget.colors) self.assertFalse(self.widget.Warning.no_defined_colors.is_shown()) iris = self.iris.transform(dom1).copy() with iris.unlocked(iris.metas): iris.metas[:, 0] = np.nan self.send_signal(self.widget.Inputs.data, iris) simulate.combobox_activate_index(combo, combo.model().indexOf(attr0)) self.assertIsNone(self.widget.colors) self.assertTrue(self.widget.Warning.no_defined_colors.is_shown()) simulate.combobox_activate_index(combo, 0) self.assertIsNone(self.widget.colors) self.assertFalse(self.widget.Warning.no_defined_colors.is_shown())
def test_negative_values_input_log_link(self): """Check batch normalization for data set with negative values""" data = Table("iris") data[0, 3] = -1 self.send_signal(self.widget.Inputs.data, data) self.widget.model.item(0).setCheckState(Qt.Checked) link_method = self.widget.controls.link_method simulate.combobox_activate_index(link_method, LinkMethod.LOG_LINK) self.assertTrue(self.widget.Warning.negative_values.is_shown()) output = self.get_output(self.widget.Outputs.data) np.testing.assert_array_equal(output.X, data.X) self.send_signal(self.widget.Inputs.data, None) self.assertFalse(self.widget.Warning.negative_values.is_shown())
def test_function_combo(self): combo = self.widget.controls._function model = combo.model() self.assertEqual(model.rowCount(), 46) self.assertEqual(combo.currentText(), "Select Function") self.send_signal(self.widget.Inputs.data, self.housing) self.assertEqual(model.rowCount(), 46) self.assertEqual(combo.currentText(), "Select Function") simulate.combobox_activate_index(combo, 1) self.assertEqual(self.widget._OWCurveFit__expression_edit.text(), "abs()") self.send_signal(self.widget.Inputs.data, None) self.assertEqual(model.rowCount(), 46) self.assertEqual(combo.currentText(), "Select Function")
def test_parameters_combo(self): combo = self.widget.controls._parameter model = combo.model() self.send_signal(self.widget.Inputs.data, self.housing) self.assertEqual(model.rowCount(), 1) self.assertEqual(combo.currentText(), "Select Parameter") self.__add_button.click() self.assertEqual(model.rowCount(), 2) self.assertEqual(combo.currentText(), "Select Parameter") simulate.combobox_activate_index(combo, 1) self.assertEqual(self.widget._OWCurveFit__expression_edit.text(), "p1") self.send_signal(self.widget.Inputs.data, None) self.assertEqual(model.rowCount(), 1) self.assertEqual(combo.currentText(), "Select Parameter")
def test_group_by_changed(self): """ Test changing the group by parameter (Cell Type, Function) """ # group by cell type simulate.combobox_activate_index(self.widget.controls.selected_root_attribute, 0) human_rows = self.widget.data.get_column_view("Organism")[0] == "Human" cell_types = np.unique(self.widget.data.get_column_view("Cell Type")[0][human_rows]) model = self.widget.available_markers_view.model().sourceModel() self.assertEqual(len(cell_types), len(model.rootItem.childItems)) # group by function simulate.combobox_activate_index(self.widget.controls.selected_root_attribute, 1) functions = np.unique(self.widget.data.get_column_view("Function")[0][human_rows]) model = self.widget.available_markers_view.model().sourceModel() self.assertEqual(len(functions), len(model.rootItem.childItems))
def test_labels(self): w = self.widget self.send_signal("Embeddings", self.fake_embeddings) self.wait_until_stop_blocking() self.assertTrue( all(x.label is None for x in w.thumbnailView.grid.thumbnails)) simulate.combobox_activate_index(w.controls.label_attr, 2) self.wait_until_stop_blocking() self.assertTrue( all(x.label is not None for x in w.thumbnailView.grid.thumbnails)) # reset to no labels simulate.combobox_activate_index(w.controls.label_attr, 0) self.wait_until_stop_blocking() self.assertTrue( all(x.label is None for x in w.thumbnailView.grid.thumbnails))
def test_embedder_changed(self): """ We will check whether embedder changes correctly. """ w = self.widget table = load_images() self.assertEqual(w.cb_embedder.currentText(), "Inception v3") self.send_signal(w.Inputs.images, table) cbox = self.widget.controls.cb_embedder_current_id simulate.combobox_activate_index(cbox, 3) self.assertEqual(w.cb_embedder.currentText(), "VGG-19") output = self.get_output(self.widget.Outputs.embeddings) self.assertIsInstance(output, Table) self.assertEqual(len(output), len(table)) # 4096 shows that output is really by VGG-19 self.assertEqual(output.X.shape[1], 4096)
def test_max_attr_combo_1_disabling(self): widget = self.widget vizrank = widget.vizrank combo = vizrank.max_attr_combo model = combo.model() enabled = Qt.ItemIsSelectable | Qt.ItemIsEnabled data = Table("iris.tab") self.send_signal(self.widget.Inputs.data, data) self.assertEqual(model.item(0).flags() & enabled, enabled) vizrank.max_attrs = 0 simulate.combobox_activate_index(self.widget.controls.variable_color, 0) self.assertEqual(vizrank.max_attrs, 1) self.assertEqual(int(model.item(0).flags() & enabled), 0) simulate.combobox_activate_index(self.widget.controls.variable_color, 1) self.assertEqual(vizrank.max_attrs, 1) self.assertEqual(model.item(0).flags() & enabled, enabled)
def test_source_changed(self): """ Test changing the source of the data. """ # cell marker data self.assertEqual("Panglao", self.widget.db_source_cb.currentText()) self.assertTrue(isinstance(self.widget.data, Table)) self.assertEqual(len(self.panglao), len(self.widget.data)) # Panglao data simulate.combobox_activate_index(self.widget.controls.source_index, 1) self.assertEqual("CellMarker", self.widget.db_source_cb.currentText()) self.assertTrue(isinstance(self.widget.data, Table)) self.assertEqual(len(self.cell_markers), len(self.widget.data)) # cell marker data simulate.combobox_activate_index(self.widget.controls.source_index, 0) self.assertEqual("Panglao", self.widget.db_source_cb.currentText()) self.assertTrue(isinstance(self.widget.data, Table)) self.assertEqual(len(self.panglao), len(self.widget.data))
def test_nan_plot(self): data = datasets.missing_data_1() espy = EventSpy(self.widget, OWLinearProjection.ReplotRequest) with excepthook_catch(): self.send_signal(self.widget.Inputs.data, data) # ensure delayed replot request is processed if not espy.events(): assert espy.wait(1000) cb_color = self.widget.controls.attr_color cb_size = self.widget.controls.attr_size cb_shape = self.widget.controls.attr_shape cb_jitter = self.widget.controls.jitter_value simulate.combobox_run_through_all(cb_color) simulate.combobox_run_through_all(cb_size) simulate.combobox_run_through_all(cb_shape) with excepthook_catch(): simulate.combobox_activate_index(cb_jitter, 1, delay=1) data = data.copy() data.X[:, 0] = np.nan data.Y[:] = np.nan spy = EventSpy(self.widget, OWLinearProjection.ReplotRequest) self.send_signal(self.widget.Inputs.data, data) self.send_signal(self.widget.Inputs.data_subset, data[2:3]) if not spy.events(): assert spy.wait() with excepthook_catch(): simulate.combobox_activate_item(cb_color, "X1") with excepthook_catch(): simulate.combobox_activate_item(cb_size, "X1") with excepthook_catch(): simulate.combobox_activate_item(cb_shape, "D") with excepthook_catch(): simulate.combobox_activate_index(cb_jitter, 2, delay=1)
def test_format(self): """ Test all file format available """ dirname = os.path.join(self.test_dir, "foo") self.widget.dirname = dirname self.widget.auto_save = True self.send_signal(self.widget.Inputs.data, self.data) self.wait_until_stop_blocking() for i, f in enumerate(SUPPORTED_FILE_FORMATS): simulate.combobox_activate_index( self.widget.controls.file_format_index, i) self.wait_until_stop_blocking() # test image has right ending image_path = os.path.join( dirname, "Day7", "D7-0503-12-2-bone-inj-d7-3-0020-m1.{}".format(f)) self.assertTrue(os.path.isfile(image_path))
def test_update_regression_line_is_called(self): widget = self.widget graph = widget.graph urline = graph.update_regression_line = Mock() self.send_signal(widget.Inputs.data, self.data) urline.assert_called_once() urline.reset_mock() self.send_signal(widget.Inputs.data, None) urline.assert_called_once() urline.reset_mock() self.send_signal(widget.Inputs.data, self.data) urline.assert_called_once() urline.reset_mock() simulate.combobox_activate_index(self.widget.controls.attr_color, 0) urline.assert_called_once() urline.reset_mock() simulate.combobox_activate_index(self.widget.controls.attr_color, 2) urline.assert_called_once() urline.reset_mock() simulate.combobox_activate_index(self.widget.controls.attr_x, 3) urline.assert_called_once() urline.reset_mock()
def test_legend(self): """Test legend behaviour.""" self.widget.cb_show_legend.setChecked(True) self.send_signal('Tree', self.titanic) self.assertIsInstance(self.widget.legend, OWDiscreteLegend) self.assertTrue(self.widget.legend.isVisible()) # The legend should be invisible when regression coloring is none self.send_signal('Tree', self.housing) self.assertIsInstance(self.widget.legend, OWContinuousLegend) self.assertFalse(self.widget.legend.isVisible()) # The legend should appear when there is a coloring (2 is mean coloring) index = 2 simulate.combobox_activate_index(self.widget.target_class_combo, index) self.assertIsInstance(self.widget.legend, OWContinuousLegend) self.assertTrue(self.widget.legend.isVisible()) # Check that switching back to a discrete target class works self.send_signal('Tree', self.titanic) self.assertIsInstance(self.widget.legend, OWDiscreteLegend) self.assertTrue(self.widget.legend.isVisible())
def test_count(self): """MosaicVizrank correctly computes the number of combinations""" widget = self.widget vizrank = self.vizrank data = self.iris attributes = [v for v in data.domain.attributes[1:]] metas = [data.domain.attributes[0]] domain = Domain(attributes, data.domain.class_var, metas) new_data = data.from_table(domain, data) self.send_signal(self.widget.Inputs.data, new_data) for data in [self.iris, new_data]: self.send_signal(self.widget.Inputs.data, data) simulate.combobox_activate_index(self.widget.controls.variable_color, 0, 0) self.assertTrue(widget.interior_coloring == widget.PEARSON) vizrank.max_attrs = 2 self.assertEqual(vizrank.state_count(), 10) # 5x4 / 2 vizrank.max_attrs = 3 self.assertEqual(vizrank.state_count(), 20) # above + 5x4x3 / 2x3 vizrank.max_attrs = 4 self.assertEqual(vizrank.state_count(), 25) # above + 5x4x3x2 / 2x3x4 simulate.combobox_activate_index(self.widget.controls.variable_color, 2, 0) self.assertTrue(widget.interior_coloring == widget.CLASS_DISTRIBUTION) vizrank.max_attrs = 2 self.assertEqual(vizrank.state_count(), 10) # 4 + 4x3 / 2 vizrank.max_attrs = 3 self.assertEqual(vizrank.state_count(), 14) # above + 4x3x2 / 3x2 vizrank.max_attrs = 4 self.assertEqual(vizrank.state_count(), 15) # above + 4x3x2x1 / 2x3x4 self.send_signal(self.widget.Inputs.data, self.iris_no_class) simulate.combobox_activate_index(self.widget.controls.variable_color, 0, 0) vizrank.max_attrs = 2 self.assertEqual(vizrank.state_count(), 6) # 4x3 / 2 vizrank.max_attrs = 3 self.assertEqual(vizrank.state_count(), 10) # above + 4x3x2 / 3x2 vizrank.max_attrs = 4 self.assertEqual(vizrank.state_count(), 11) # above + 4x3x2x1 / 2x3x4
def test_matrix_columns_labels(self): dist = Euclidean(self.data, axis=0) self.send_signal(self.widget.Inputs.distances, dist) simulate.combobox_activate_index(self.widget.controls.attr_label, 2)
def test_optimization_reset(self): self.send_signal(self.widget.Inputs.data, self.data) init = self.widget.controls.initialization simulate.combobox_activate_index(init, 0) simulate.combobox_activate_index(init, 1)
def test_reset_optimization(self): self.send_signal(self.widget.Inputs.data, Table("iris")) simulate.combobox_activate_index(self.widget.controls.initialization, 0) simulate.combobox_activate_index(self.widget.controls.initialization, 1)