diff --git a/Orange/widgets/visualize/owruleviewer.py b/Orange/widgets/visualize/owruleviewer.py index 70475f4fda2..574d604d175 100644 --- a/Orange/widgets/visualize/owruleviewer.py +++ b/Orange/widgets/visualize/owruleviewer.py @@ -137,19 +137,19 @@ def commit(self): data_output = None self._save_selected(actual=True) + data = self.data or self.classifier and self.classifier.instances if (self.selected is not None and - self.data is not None and + data is not None and self.classifier is not None and - self.data.domain.attributes == + data.domain.attributes == self.classifier.original_domain.attributes): - status = np.ones(self.data.X.shape[0], dtype=bool) + status = np.ones(data.X.shape[0], dtype=bool) for i in self.selected: rule = self.classifier.rule_list[i] - status &= rule.evaluate_data(self.data.X) + status &= rule.evaluate_data(data.X) - data_output = self.data.from_table_rows( - self.data, status.nonzero()[0]) + data_output = data.from_table_rows(data, status.nonzero()[0]) self.send(OWRuleViewer.data_output_identifier, data_output) diff --git a/Orange/widgets/visualize/tests/test_owruleviewer.py b/Orange/widgets/visualize/tests/test_owruleviewer.py index 44a7c81eb62..e5d439fdcc3 100644 --- a/Orange/widgets/visualize/tests/test_owruleviewer.py +++ b/Orange/widgets/visualize/tests/test_owruleviewer.py @@ -14,6 +14,9 @@ def setUp(self): self.titanic = Table('titanic') self.learner = CN2Learner() self.classifier = self.learner(self.titanic) + # CN2Learner does not add `instances` attribute to the model, but + # the Rules widget does. We simulate the model we get from the widget. + self.classifier.instances = self.titanic self.widget = self.create_widget(OWRuleViewer) def test_set_data(self):