Skip to content

Commit 8605fac

Browse files
committed
Table: Deprecate calling Table(X, Y, metas) without domain
1 parent 627803e commit 8605fac

25 files changed

+74
-63
lines changed

Orange/classification/naive_bayes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ def __init__(self, log_cont_prob, class_prob, domain):
6161

6262
def predict_storage(self, data):
6363
if isinstance(data, Instance):
64-
data = Table(np.atleast_2d(data.x))
64+
data = Table.from_numpy(None, np.atleast_2d(data.x))
6565
if type(data) is Table: # pylint: disable=unidiomatic-typecheck
6666
return self.predict(data.X)
6767

Orange/data/table.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,10 @@ def warn_deprecated(method):
249249
warn_deprecated("from_list")
250250
return cls.from_list(domain, *args, **kwargs)
251251
else:
252+
warnings.warn("Omitting domain in a call to Table(X, Y, metas), is "
253+
"deprecated and will be removed. "
254+
"Call Table.from_numpy(None, X, Y, metas) instead.",
255+
OrangeDeprecationWarning, stacklevel=2)
252256
domain = None
253257

254258
return cls.from_numpy(domain, *args, **kwargs)

Orange/data/tests/test_table.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def test_warnings(self):
2525
self.assertWarns(OrangeDeprecationWarning, Table, domain)
2626
self.assertWarns(OrangeDeprecationWarning, Table, domain, Table())
2727
self.assertWarns(OrangeDeprecationWarning, Table, domain, [[12]])
28+
self.assertWarns(OrangeDeprecationWarning, Table, np.zeros((5, 5)))
2829

2930
def test_invalid_call_with_kwargs(self):
3031
self.assertRaises(TypeError, Table, Y=[])

Orange/tests/sql/test_sql_table.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def construct_universal_table(self):
277277
for row in range(1, 6):
278278
for col in range(1, 6):
279279
values.extend((row, col, row * col))
280-
table = Table(np.array(values).reshape((-1, 3)))
280+
table = Table.from_numpy(None, np.array(values).reshape((-1, 3)))
281281
return self.create_sql_table(table)
282282

283283
IRIS_VARIABLE = DiscreteVariable(

Orange/tests/test_classification.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,15 @@ def test_unsupported(self):
3939

4040
# multiple class variables
4141
y = np.random.randint(0, 2, (nrows, 2))
42-
t = Table(x, y)
42+
t = Table.from_numpy(None, x, y)
4343
learn = DummyLearner()
4444
# TODO: Errors raised from various data checks should be made consistent
4545
with self.assertRaises((ValueError, TypeError)):
4646
clf = learn(t)
4747

4848
# single class variable
4949
y = np.random.randint(0, 2, (nrows, 1))
50-
t = Table(x, y)
50+
t = Table.from_numpy(None, x, y)
5151
learn = DummyLearner()
5252
clf = learn(t)
5353
z = clf(x)
@@ -58,7 +58,7 @@ def test_supported(self):
5858
ncols = 10
5959
x = np.random.randint(1, 4, (nrows, ncols))
6060
y = np.random.randint(0, 2, (nrows, 2))
61-
t = Table(x, y)
61+
t = Table.from_numpy(None, x, y)
6262
learn = DummyMulticlassLearner()
6363
clf = learn(t)
6464
z = clf(x)
@@ -117,7 +117,7 @@ def test_value_from_probs(self):
117117

118118
# single class variable
119119
y = np.random.randint(1, 4, (nrows, 1)) // 2 # majority = 1
120-
t = Table(x, y)
120+
t = Table.from_numpy(None, x, y)
121121
learn = DummyLearner()
122122
clf = learn(t)
123123
clf.ret = Model.Probs

Orange/tests/test_clustering_hierarchical.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ def score(root):
128128
self.assertEqual(score_ordered, 21.0)
129129

130130
def test_table_clustering(self):
131-
table = Orange.data.Table(numpy.eye(3))
131+
table = Orange.data.Table.from_numpy(None, numpy.eye(3))
132132
tree = hierarchical.data_clustering(table, linkage="single")
133133
numpy.testing.assert_almost_equal(tree.value.height, numpy.sqrt(2))
134134

Orange/tests/test_discretize.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,23 @@ def test_equifreq_with_too_few_values(self):
2121
s = [0] * 50 + [1] * 50
2222
random.shuffle(s)
2323
X = np.array(s).reshape((100, 1))
24-
table = data.Table(X)
24+
table = data.Table.from_numpy(None, X)
2525
disc = discretize.EqualFreq(n=4)
2626
dvar = disc(table, table.domain[0])
2727
self.assertEqual(len(dvar.values), 2)
2828
self.assertEqual(dvar.compute_value.points, [0.5])
2929

3030
def test_equifreq_100_to_4(self):
3131
X = np.arange(100).reshape((100, 1))
32-
table = data.Table(X)
32+
table = data.Table.from_numpy(None, X)
3333
disc = discretize.EqualFreq(n=4)
3434
dvar = disc(table, table.domain[0])
3535
self.assertEqual(len(dvar.values), 4)
3636
self.assertEqual(dvar.compute_value.points, [24.5, 49.5, 74.5])
3737

3838
def test_equifreq_with_k_instances(self):
3939
X = np.array([[1], [2], [3], [4]])
40-
table = data.Table(X)
40+
table = data.Table.from_numpy(None, X)
4141
disc = discretize.EqualFreq(n=4)
4242
dvar = disc(table, table.domain[0])
4343
self.assertEqual(len(dvar.values), 4)
@@ -50,7 +50,7 @@ def test_equalwidth_on_two_values(self):
5050
s = [0] * 50 + [1] * 50
5151
random.shuffle(s)
5252
X = np.array(s).reshape((100, 1))
53-
table = data.Table(X)
53+
table = data.Table.from_numpy(None, X)
5454
disc = discretize.EqualWidth(n=4)
5555
dvar = disc(table, table.domain[0])
5656
self.assertEqual(len(dvar.values), 4)
@@ -59,15 +59,15 @@ def test_equalwidth_on_two_values(self):
5959
@table_dense_sparse
6060
def test_equalwidth_100_to_4(self, prepare_table):
6161
X = np.arange(101).reshape((101, 1))
62-
table = prepare_table(data.Table(X))
62+
table = prepare_table(data.Table.from_numpy(None, X))
6363
disc = discretize.EqualWidth(n=4)
6464
dvar = disc(table, table.domain[0])
6565
self.assertEqual(len(dvar.values), 4)
6666
self.assertEqual(dvar.compute_value.points, [25, 50, 75])
6767

6868
def test_equalwidth_const_value(self):
6969
X = np.ones((100, 1))
70-
table = data.Table(X)
70+
table = data.Table.from_numpy(None, X)
7171
disc = discretize.EqualFreq(n=4)
7272
dvar = disc(table, table.domain[0])
7373
self.assertEqual(len(dvar.values), 1)
@@ -80,7 +80,7 @@ def test_entropy_with_two_values(self):
8080
s = [0] * 50 + [1] * 50
8181
random.shuffle(s)
8282
X = np.array(s).reshape((100, 1))
83-
table = data.Table(X, X)
83+
table = data.Table.from_numpy(None, X, X)
8484
disc = discretize.EntropyMDL()
8585
dvar = disc(table, table.domain[0])
8686
self.assertEqual(len(dvar.values), 2)
@@ -89,7 +89,7 @@ def test_entropy_with_two_values(self):
8989
def test_entropy_with_two_values_useless(self):
9090
X = np.array([0] * 50 + [1] * 50).reshape((100, 1))
9191
Y = np.array([0] * 25 + [1] * 50 + [0] * 25)
92-
table = data.Table(X, Y)
92+
table = data.Table.from_numpy(None, X, Y)
9393
disc = discretize.EntropyMDL()
9494
dvar = disc(table, table.domain[0])
9595
self.assertEqual(len(dvar.values), 1)
@@ -109,7 +109,7 @@ def test_entropy(self):
109109
X = np.array([0] * 25 + [1] * 25 + [2] * 25 + [3] * 25
110110
).reshape((100, 1))
111111
Y = np.array([0] * 25 + [1] * 75)
112-
table = data.Table(X, Y)
112+
table = data.Table.from_numpy(None, X, Y)
113113
disc = discretize.EntropyMDL()
114114
dvar = disc(table, table.domain[0])
115115
self.assertEqual(len(dvar.values), 2)
@@ -241,8 +241,8 @@ def setUpClass(cls):
241241
X2 = np.arange(100).reshape((100, 1))
242242
X3 = np.ones((100, 1))
243243
X = np.hstack([X1, X2, X3])
244-
cls.table_no_class = data.Table(X)
245-
cls.table_class = data.Table(X, X1)
244+
cls.table_no_class = data.Table.from_numpy(None, X)
245+
cls.table_class = data.Table.from_numpy(None, X, X1)
246246

247247
def test_discretize_exclude_constant(self):
248248
dom = discretize.DomainDiscretizer()(self.table_no_class)

Orange/tests/test_distances.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,8 @@ class TestEuclidean(TestCase):
205205
@classmethod
206206
def setUpClass(cls):
207207
cls.iris = Table('iris')
208-
cls.sparse = Table(csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
208+
cls.sparse = Table.from_numpy(
209+
None, csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
209210
cls.dist = Euclidean
210211

211212
def test_euclidean_distance_one_example(self):
@@ -290,7 +291,8 @@ class TestManhattan(TestCase):
290291
@classmethod
291292
def setUpClass(cls):
292293
cls.iris = Table('iris')
293-
cls.sparse = Table(csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
294+
cls.sparse = Table.from_numpy(
295+
None, csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
294296
cls.dist = Manhattan
295297

296298
def test_manhattan_distance_one_example(self):
@@ -378,7 +380,8 @@ class TestCosine(TestCase):
378380
@classmethod
379381
def setUpClass(cls):
380382
cls.iris = Table('iris')
381-
cls.sparse = Table(csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
383+
cls.sparse = Table.from_numpy(
384+
None, csr_matrix([[1, 2, 0], [0, 0, 3], [4, 0, 5]]))
382385
cls.dist = Cosine
383386

384387
def test_cosine_distance_one_example(self):

Orange/tests/test_evaluation_clustering.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@
1414
class TestClusteringResults(unittest.TestCase):
1515
@staticmethod
1616
def test_init():
17-
data = Orange.data.Table(np.arange(100).reshape((100, 1)))
17+
data = Orange.data.Table.from_numpy(
18+
None, np.arange(100).reshape((100, 1)))
1819
res = ClusteringResults(data=data, nmethods=2, nrows=100)
1920
res.actual[:50] = 0
2021
res.actual[50:] = 1

Orange/tests/test_evaluation_scoring.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ def test_bayes(self):
254254
x = np.random.randint(2, size=(100, 5))
255255
col = np.random.randint(5)
256256
y = x[:, col].copy().reshape(100, 1)
257-
t = Table(x, y)
257+
t = Table.from_numpy(None, x, y)
258258
t = Discretize(
259259
method=discretize.EqualWidth(n=3))(t)
260260
nb = NaiveBayesLearner()

0 commit comments

Comments
 (0)