Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions Orange/widgets/unsupervised/owdbscan.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ class Outputs:
class Error(widget.OWWidget.Error):
not_enough_instances = Msg("Not enough unique data instances. "
"At least two are required.")
no_features = Msg("The data does not contain any features.")


METRICS = [
("Euclidean", "euclidean"),
Expand Down Expand Up @@ -175,15 +177,15 @@ def set_data(self, data):
self.Error.clear()
if not self.check_data_size(data):
data = None
if data and data.X.shape[1] == 0:
data = None
self.Error.no_features()
self.data = self.data_normalized = data
if self.data is None:
self.Outputs.annotated_data.send(None)
self.plot.clear_plot()
return

if self.data is None:
return

self._preprocess_data()

self._compute_and_plot()
Expand Down
12 changes: 11 additions & 1 deletion Orange/widgets/unsupervised/tests/test_owdbscan.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import numpy as np
from scipy.sparse import csr_matrix, csc_matrix

from Orange.data import Table
from Orange.data import Table, Domain
from Orange.clustering import DBSCAN
from Orange.preprocess import Normalize, Continuize, SklImpute
from Orange.widgets.tests.base import WidgetTest
Expand Down Expand Up @@ -56,6 +56,16 @@ def test_bad_input(self):
self.send_signal(w.Inputs.data, self.iris)
self.assertFalse(w.Error.not_enough_instances.is_shown())

new_domain = Domain([], self.iris.domain.class_vars,
metas=self.iris.domain.attributes)
iris_all_metas = self.iris.transform(new_domain)
self.send_signal(w.Inputs.data, iris_all_metas)
self.assertTrue(w.Error.no_features.is_shown())

self.send_signal(w.Inputs.data, self.iris)
self.assertFalse(w.Error.no_features.is_shown())


def test_data_none(self):
w = self.widget

Expand Down
Loading