Skip to content

Commit de0f866

Browse files
committed
owheatmap: Add column split/annotation tests
1 parent 0ac5b15 commit de0f866

File tree

1 file changed

+66
-4
lines changed

1 file changed

+66
-4
lines changed

Orange/widgets/visualize/tests/test_owheatmap.py

Lines changed: 66 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,6 +222,39 @@ def test_set_split_var_missing(self):
222222
self.assertEqual(len(w.parts.rows),
223223
len(data.domain.class_var.values) + 1)
224224

225+
def _brown_selected_10(self):
226+
data = self.brown_selected[::5]
227+
data = data.transform(
228+
Domain(data.domain.attributes[:10], data.domain.class_vars,
229+
data.domain.metas + (data.domain["diau g"],)))
230+
data.ensure_copy()
231+
return data
232+
233+
def test_set_split_column_key(self):
234+
data = self._brown_selected_10()
235+
function = data.domain["function"]
236+
data_t = data.transpose(data)
237+
w = self.widget
238+
self.send_signal(self.widget.Inputs.data, data_t, widget=w)
239+
w.set_column_split_key(function)
240+
self.assertEqual(len(w.parts.columns), len(function.values))
241+
w.set_column_split_key(None)
242+
self.assertEqual(len(w.parts.columns), 1)
243+
244+
def test_set_split_column_key_missing(self):
245+
data = self._brown_selected_10()
246+
data.Y[:5] = np.nan
247+
data_t = data.transpose(data)
248+
function = data.domain["function"]
249+
w = self.widget
250+
self.send_signal(self.widget.Inputs.data, data_t, widget=w)
251+
w.set_column_split_key(function)
252+
self.assertEqual(len(w.parts.columns), len(function.values) + 1)
253+
ncols = sum(len(p.indices) for p in w.parts.columns)
254+
self.assertEqual(ncols, len(data_t.domain.attributes))
255+
w.set_column_split_key(None)
256+
self.assertEqual(len(w.parts.columns), 1)
257+
225258
def test_palette_centering(self):
226259
data = np.arange(2).reshape(-1, 1)
227260
table = Table.from_numpy(Domain([ContinuousVariable("y")]), data)
@@ -277,10 +310,7 @@ def test_row_color_annotations(self):
277310

278311
def test_row_color_annotations_with_na(self):
279312
widget = self.widget
280-
data = self.brown_selected[::5]
281-
data = data.transform(
282-
Domain(data.domain.attributes[:10], data.domain.class_vars,
283-
data.domain.metas + (data.domain["diau g"], )))
313+
data = self._brown_selected_10()
284314
data.Y[:3] = np.nan
285315
data.metas[:3, -1] = np.nan
286316
self.send_signal(widget.Inputs.data, data, widget=widget)
@@ -295,6 +325,38 @@ def test_row_color_annotations_with_na(self):
295325
widget.set_annotation_color_var(None)
296326
self.assertFalse(widget.scene.widget.right_side_colors[0].isVisible())
297327

328+
def test_col_color_annotations(self):
329+
widget = self.widget
330+
data = self._brown_selected_10()
331+
data_t = data.transpose(data)
332+
self.send_signal(widget.Inputs.data, data_t, widget=widget)
333+
# discrete
334+
widget.set_column_annotation_color_key(data.domain["function"])
335+
self.assertTrue(widget.scene.widget.top_side_colors[0].isVisible())
336+
# continuous
337+
widget.set_column_annotation_color_key(data.domain["diau g"])
338+
widget.set_column_annotation_color_key(None)
339+
self.assertFalse(widget.scene.widget.top_side_colors[0].isVisible())
340+
341+
def test_col_color_annotations_with_na(self):
342+
widget = self.widget
343+
data = self._brown_selected_10()
344+
data.Y[:3] = np.nan
345+
data.metas[:3, -1] = np.nan
346+
data_t = data.transpose(data)
347+
self.send_signal(widget.Inputs.data, data_t, widget=widget)
348+
widget.set_column_annotation_color_key(data.domain["function"])
349+
self.assertTrue(widget.scene.widget.top_side_colors[0].isVisible())
350+
widget.set_column_annotation_color_key(data.domain["diau g"])
351+
data.Y[:] = np.nan
352+
data.metas[:, -1] = np.nan
353+
data_t = data.transpose(data)
354+
self.send_signal(widget.Inputs.data, data_t, widget=widget)
355+
widget.set_column_annotation_color_key(data.domain["function"])
356+
widget.set_column_annotation_color_key(data.domain["diau g"])
357+
widget.set_column_annotation_color_key(None)
358+
self.assertFalse(widget.scene.widget.top_side_colors[0].isVisible())
359+
298360
def test_summary(self):
299361
"""Check if status bar is updated when data is received"""
300362
info = self.widget.info

0 commit comments

Comments
 (0)