Skip to content

Commit

Permalink
OWDataProjectionWidget: Return no coordinates when no valid data
Browse files Browse the repository at this point in the history
  • Loading branch information
VesnaT committed Dec 18, 2018
1 parent c5528ed commit 214614f
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 3 deletions.
11 changes: 10 additions & 1 deletion Orange/widgets/visualize/tests/test_owprojectionwidget.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring
from unittest.mock import patch
from unittest.mock import patch, Mock

import numpy as np

Expand Down Expand Up @@ -164,3 +164,12 @@ def test_too_many_labels(self):

self.widget.graph.too_many_labels.emit(False)
self.assertFalse(w.is_shown())

def test_get_coordinates_data(self):
self.widget.get_embedding = Mock(return_value=np.ones((10, 2)))
self.widget.valid_data = np.ones((10,), dtype=bool)
self.widget.valid_data[0] = False
self.assertIsNotNone(self.widget.get_coordinates_data())
self.assertEqual(len(self.widget.get_coordinates_data()[0]), 9)
self.widget.valid_data = np.zeros((10,), dtype=bool)
self.assertIsNone(self.widget.get_coordinates_data()[0])
7 changes: 7 additions & 0 deletions Orange/widgets/visualize/tests/test_owscatterplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -735,6 +735,13 @@ def test_on_manual_change(self):
selection = vizrank.rank_table.selectedIndexes()
self.assertEqual(len(selection), 0)

def test_regression_line(self):
self.widget.graph.controls.show_reg_line.setChecked(True)
self.send_signal(self.widget.Inputs.data, self.data)
data = self.data.copy()
data[:, 0] = np.nan
self.send_signal(self.widget.Inputs.data, data)


if __name__ == "__main__":
import unittest
Expand Down
5 changes: 3 additions & 2 deletions Orange/widgets/visualize/utils/widget.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,9 @@ def get_embedding(self):

def get_coordinates_data(self):
embedding = self.get_embedding()
return embedding[self.valid_data].T[:2] if embedding is not None \
else (None, None)
if embedding is not None and len(embedding[self.valid_data]):
return embedding[self.valid_data].T
return None, None

def setup_plot(self):
self.graph.reset_graph()
Expand Down

0 comments on commit 214614f

Please sign in to comment.