Skip to content

Commit

Permalink
Merge pull request #4903 from aturanjanin/owcorrespondence
Browse files Browse the repository at this point in the history
CorrespondenceAnalysis: data info displayed in the status bar
  • Loading branch information
PrimozGodec committed Sep 24, 2020
2 parents 7db86f1 + da59c1d commit 0e4191b
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 1 deletion.
16 changes: 16 additions & 0 deletions Orange/widgets/unsupervised/owcorrespondence.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
from Orange.widgets.utils import itemmodels, colorpalettes
from Orange.widgets.utils.itemmodels import select_rows
from Orange.widgets.utils.widgetpreview import WidgetPreview
from Orange.widgets.utils.state_summary import format_summary_details

from Orange.widgets.visualize.owscatterplotgraph import ScatterPlotItem
from Orange.widgets.widget import Input, Output
Expand Down Expand Up @@ -61,6 +62,9 @@ def __init__(self):
self.component_x = 0
self.component_y = 1

self._set_input_summary(None)
self._set_output_summary(None)

box = gui.vBox(self.controlArea, "Variables")
self.varlist = itemmodels.VariableListModel()
self.varview = view = ListViewSearch(
Expand Down Expand Up @@ -106,6 +110,7 @@ def set_data(self, data):
data = None

self.data = data
self._set_input_summary(self.data)
if data is not None:
self.varlist[:] = [var for var in data.domain.variables
if var.is_discrete]
Expand Down Expand Up @@ -145,6 +150,7 @@ def commit(self):
StringVariable("Value")]),
rf, metas=vars_data
)
self._set_output_summary(output_table)
self.Outputs.coordinates.send(output_table)

def clear(self):
Expand All @@ -153,6 +159,16 @@ def clear(self):
self.plot.clear()
self.varlist[:] = []

def _set_input_summary(self, data):
summary = len(data) if data else self.info.NoInput
details = format_summary_details(data) if data else ""
self.info.set_input_summary(summary, details)

def _set_output_summary(self, output):
summary = len(output) if output else self.info.NoOutput
details = format_summary_details(output) if output else ""
self.info.set_output_summary(summary, details)

def selected_vars(self):
rows = sorted(
ind.row() for ind in self.varview.selectionModel().selectedRows())
Expand Down
24 changes: 23 additions & 1 deletion Orange/widgets/unsupervised/tests/test_owcorrespondence.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
# Test methods with long descriptive names can omit docstrings
# pylint: disable=missing-docstring
# pylint: disable=missing-docstring, protected-access
from Orange.data import Table, Domain, DiscreteVariable, ContinuousVariable
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.unsupervised.owcorrespondence \
import OWCorrespondenceAnalysis, select_rows
from Orange.widgets.utils.state_summary import format_summary_details


class TestOWCorrespondence(WidgetTest):
Expand Down Expand Up @@ -89,3 +90,24 @@ def test_outputs(self):
(8, 8))
self.send_signal(self.widget.Inputs.data, None)
self.assertIsNone(self.get_output(w.Outputs.coordinates), None)

def test_summary(self):
"""Check if the status bar updates when data on input"""
info = self.widget.info
no_input, no_output = "No data on input", "No data on output"

self.send_signal(self.widget.Inputs.data, self.data)
summary, details = f"{len(self.data)}", format_summary_details(
self.data)
self.assertEqual(info._StateInfo__input_summary.brief, summary)
self.assertEqual(info._StateInfo__input_summary.details, details)
output = self.get_output(self.widget.Outputs.coordinates)
summary, details = f"{len(output)}", format_summary_details(output)
self.assertEqual(info._StateInfo__output_summary.brief, summary)
self.assertEqual(info._StateInfo__output_summary.details, details)

self.send_signal(self.widget.Inputs.data, None)
self.assertEqual(info._StateInfo__input_summary.brief, "")
self.assertEqual(info._StateInfo__input_summary.details, no_input)
self.assertEqual(info._StateInfo__output_summary.brief, "")
self.assertEqual(info._StateInfo__output_summary.details, no_output)

0 comments on commit 0e4191b

Please sign in to comment.