Skip to content

Commit 214614f

Browse files
committed
OWDataProjectionWidget: Return no coordinates when no valid data
1 parent c5528ed commit 214614f

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

Orange/widgets/visualize/tests/test_owprojectionwidget.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Test methods with long descriptive names can omit docstrings
22
# pylint: disable=missing-docstring
3-
from unittest.mock import patch
3+
from unittest.mock import patch, Mock
44

55
import numpy as np
66

@@ -164,3 +164,12 @@ def test_too_many_labels(self):
164164

165165
self.widget.graph.too_many_labels.emit(False)
166166
self.assertFalse(w.is_shown())
167+
168+
def test_get_coordinates_data(self):
169+
self.widget.get_embedding = Mock(return_value=np.ones((10, 2)))
170+
self.widget.valid_data = np.ones((10,), dtype=bool)
171+
self.widget.valid_data[0] = False
172+
self.assertIsNotNone(self.widget.get_coordinates_data())
173+
self.assertEqual(len(self.widget.get_coordinates_data()[0]), 9)
174+
self.widget.valid_data = np.zeros((10,), dtype=bool)
175+
self.assertIsNone(self.widget.get_coordinates_data()[0])

Orange/widgets/visualize/tests/test_owscatterplot.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -735,6 +735,13 @@ def test_on_manual_change(self):
735735
selection = vizrank.rank_table.selectedIndexes()
736736
self.assertEqual(len(selection), 0)
737737

738+
def test_regression_line(self):
739+
self.widget.graph.controls.show_reg_line.setChecked(True)
740+
self.send_signal(self.widget.Inputs.data, self.data)
741+
data = self.data.copy()
742+
data[:, 0] = np.nan
743+
self.send_signal(self.widget.Inputs.data, data)
744+
738745

739746
if __name__ == "__main__":
740747
import unittest

Orange/widgets/visualize/utils/widget.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -486,8 +486,9 @@ def get_embedding(self):
486486

487487
def get_coordinates_data(self):
488488
embedding = self.get_embedding()
489-
return embedding[self.valid_data].T[:2] if embedding is not None \
490-
else (None, None)
489+
if embedding is not None and len(embedding[self.valid_data]):
490+
return embedding[self.valid_data].T
491+
return None, None
491492

492493
def setup_plot(self):
493494
self.graph.reset_graph()

0 commit comments

Comments
 (0)