Skip to content

Commit c9905a3

Browse files
committed
NxFromDistances: Proper labels for column distances
1 parent 4ab66ad commit c9905a3

File tree

1 file changed

+24
-9
lines changed

1 file changed

+24
-9
lines changed

orangecontrib/network/widgets/OWNxFromDistances.py

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
from Orange.data import Domain, StringVariable, Table
1212
from Orange.misc import DistMatrix
1313
from Orange.widgets import gui, widget, settings
14-
from Orange.widgets.widget import Input, Output
14+
from Orange.widgets.widget import Input, Output, Msg
1515
import orangecontrib.network as network
1616

1717
import pyqtgraph as pg
@@ -54,11 +54,16 @@ class Outputs:
5454
excludeLimit = settings.Setting(2)
5555

5656
class Warning(widget.OWWidget.Warning):
57-
kNN_too_large = widget.Msg('kNN larger then supplied distance matrix dimension. Using k = {}')
58-
large_number_of_nodes = widget.Msg('Large number of nodes/edges; performance will be hindered')
57+
kNN_too_large = \
58+
Msg('kNN is larger than supplied distance matrix dimension. '
59+
'Using k = {}')
60+
large_number_of_nodes = \
61+
Msg('Large number of nodes/edges; performance will be hindered')
62+
invalid_number_of_items = \
63+
Msg('Number of data items does not match the nunmber of nodes')
5964

6065
class Error(widget.OWWidget.Error):
61-
number_of_edges = widget.Msg('Estimated number of edges is too high ({})')
66+
number_of_edges = Msg('Estimated number of edges is too high ({})')
6267

6368
def __init__(self):
6469
super().__init__()
@@ -211,12 +216,22 @@ def generateGraph(self, N_changed=False):
211216
matrix = self.matrix
212217

213218
if matrix is not None and matrix.row_items is not None:
214-
if isinstance(self.matrix.row_items, Table):
215-
graph.set_items(self.matrix.row_items)
219+
row_items = self.matrix.row_items
220+
if isinstance(row_items, Table):
221+
if self.matrix.axis == 1:
222+
items = row_items
223+
else:
224+
items = [[v.name] for v in row_items.domain.attributes]
216225
else:
217-
data = [[str(x)] for x in self.matrix.row_items]
218-
items = Table(Domain([], metas=[StringVariable('label')]), data)
219-
graph.set_items(items)
226+
items = [[str(x)] for x in self.matrix.row_items]
227+
if len(items) != self.matrix.shape[0]:
228+
self.Warning.invalid_number_of_items()
229+
else:
230+
if items and not isinstance(items, Table):
231+
items = Table(
232+
Domain([], metas=[StringVariable('label')]),
233+
items)
234+
graph.set_items(items)
220235

221236
# set the threshold
222237
# set edges where distance is lower than threshold

0 commit comments

Comments
 (0)