Skip to content

Commit 957b12b

Browse files
authored
Merge pull request #5664 from janezd/dist-matrix-meta-label
[FIX] Distance Matrix: Fix crash on numeric meta vars as labels
2 parents 7ef60ef + 7212f33 commit 957b12b

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

Orange/widgets/unsupervised/owdistancematrix.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ def set_labels(self, labels, variable=None, values=None):
4949
self.values = values
5050
if self.values is not None and not isinstance(self.variable,
5151
StringVariable):
52+
# Meta variables can be of type np.object
53+
if values.dtype is not float:
54+
values = values.astype(float)
5255
self.label_colors = variable.palette.values_to_qcolors(values)
5356
else:
5457
self.label_colors = None

Orange/widgets/unsupervised/tests/test_owdistancematrix.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
from orangewidget.tests.base import GuiTest
1111

12-
from Orange.data import Table
12+
from Orange.data import Table, Domain, ContinuousVariable, StringVariable
1313
from Orange.distance import Euclidean
1414
from Orange.widgets.tests.base import WidgetTest
1515
from Orange.widgets.unsupervised.owdistancematrix import OWDistanceMatrix, \
@@ -57,6 +57,22 @@ def test_labels(self):
5757
ac.activated.emit(idx)
5858
self.assertIsNone(self.widget.tablemodel.label_colors)
5959

60+
def test_num_meta_labels(self):
61+
x, y = (ContinuousVariable(c) for c in "xy")
62+
s = StringVariable("s")
63+
data = Table.from_list(
64+
Domain([x], [], [y, s]),
65+
[[0, 1, "a"],
66+
[1, np.nan, "b"]]
67+
)
68+
distances = Euclidean(data)
69+
self.widget.set_distances(distances)
70+
ac = self.widget.annot_combo
71+
idx = ac.model().indexOf(y)
72+
ac.setCurrentIndex(idx)
73+
ac.activated.emit(idx)
74+
self.assertEqual(self.widget.tablemodel.labels, ["1", "?"])
75+
6076

6177
class TestDelegates(GuiTest):
6278
def test_delegate(self):

0 commit comments

Comments
 (0)