diff --git a/Orange/widgets/visualize/owheatmap.py b/Orange/widgets/visualize/owheatmap.py index a51c747a1d4..7228d910e6e 100644 --- a/Orange/widgets/visualize/owheatmap.py +++ b/Orange/widgets/visualize/owheatmap.py @@ -662,8 +662,8 @@ def is_variable(obj): self.update_heatmaps() if data is not None and self.__pending_selection is not None: - assert self.scene.widget is not None - self.scene.widget.selectRows(self.__pending_selection) + if self.scene.widget is not None: + self.scene.widget.selectRows(self.__pending_selection) self.selected_rows = self.__pending_selection self.__pending_selection = None diff --git a/Orange/widgets/visualize/tests/test_owheatmap.py b/Orange/widgets/visualize/tests/test_owheatmap.py index c61075f77dd..cd0a3c246e1 100644 --- a/Orange/widgets/visualize/tests/test_owheatmap.py +++ b/Orange/widgets/visualize/tests/test_owheatmap.py @@ -205,6 +205,20 @@ def test_saved_selection(self): self.send_signal(w.Inputs.data, iris, widget=w) self.assertEqual(len(self.get_output(w.Outputs.selected_data)), 21) + def test_saved_selection_when_not_possible(self): + # Has stored selection but ot enough columns for clustering. + iris = Table("iris")[:, ["petal width"]] + w = self.create_widget( + OWHeatMap, stored_settings={ + "__version__": 3, + "col_clustering_method": "Clustering", + "selected_rows": [1, 2, 3], + } + ) + self.send_signal(w.Inputs.data, iris) + out = self.get_output(w.Outputs.selected_data) + self.assertSequenceEqual(list(out.ids), list(iris.ids[[1, 2, 3]])) + def test_set_split_var(self): data = self.brown_selected[::3] w = self.widget