From 8a03842bc9483477e05ab38531505b34d0db728a Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Mon, 26 Jun 2023 12:12:59 +0200 Subject: [PATCH 1/3] Replace np.bool8 with np.bool_ Fix numpy deprecation warning. --- Orange/preprocess/_relieff.pyx | 2 +- Orange/preprocess/score.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Orange/preprocess/_relieff.pyx b/Orange/preprocess/_relieff.pyx index 11da65af362..1f95df70673 100644 --- a/Orange/preprocess/_relieff.pyx +++ b/Orange/preprocess/_relieff.pyx @@ -354,7 +354,7 @@ cdef void contingency_tables(np.ndarray X, cdef tuple prepare(X, y, is_discrete, contingencies): X = np.array(X, dtype=np.float64, order='C') - is_discrete = np.asarray(is_discrete, dtype=np.bool8) + is_discrete = np.asarray(is_discrete, dtype=np.bool_) is_continuous = ~is_discrete if is_continuous.any(): row_min = np.nanmin(X, 0) diff --git a/Orange/preprocess/score.py b/Orange/preprocess/score.py index 457437faf1c..226fb25c124 100644 --- a/Orange/preprocess/score.py +++ b/Orange/preprocess/score.py @@ -372,7 +372,7 @@ def score_data(self, data, feature): from Orange.preprocess._relieff import relieff weights = np.asarray(relieff(data.X, data.Y, self.n_iterations, self.k_nearest, - np.array([a.is_discrete for a in data.domain.attributes]), + np.array([a.is_discrete for a in data.domain.attributes], dtype=bool), rstate)) if feature: return weights[0] From c111b97fced9085a550c3069bd6f8191ae192282 Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Wed, 28 Jun 2023 14:51:30 +0200 Subject: [PATCH 2/3] Replace use of np.bool_ use as bool arguments Fix numpy deprecation warnings --- Orange/widgets/visualize/owfreeviz.py | 4 ++-- Orange/widgets/visualize/owlinearprojection.py | 4 ++-- Orange/widgets/visualize/ownomogram.py | 2 +- Orange/widgets/visualize/owradviz.py | 2 +- Orange/widgets/visualize/owscatterplotgraph.py | 6 +++--- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/Orange/widgets/visualize/owfreeviz.py b/Orange/widgets/visualize/owfreeviz.py index fbcaed460e1..1110a1e207e 100644 --- a/Orange/widgets/visualize/owfreeviz.py +++ b/Orange/widgets/visualize/owfreeviz.py @@ -89,7 +89,7 @@ def update_anchors(self): self.anchor_items = [] for point, label in zip(points, labels): anchor = AnchorItem(line=QLineF(0, 0, *point), text=label) - anchor.setVisible(np.linalg.norm(point) > r) + anchor.setVisible(bool(np.linalg.norm(point) > r)) anchor.setPen(pg.mkPen((100, 100, 100))) anchor.setFont(self.parameter_setter.anchor_font) self.plot_widget.addItem(anchor) @@ -98,7 +98,7 @@ def update_anchors(self): for anchor, point, label in zip(self.anchor_items, points, labels): anchor.setLine(QLineF(0, 0, *point)) anchor.setText(label) - anchor.setVisible(np.linalg.norm(point) > r) + anchor.setVisible(bool(np.linalg.norm(point) > r)) anchor.setFont(self.parameter_setter.anchor_font) def update_circle(self): diff --git a/Orange/widgets/visualize/owlinearprojection.py b/Orange/widgets/visualize/owlinearprojection.py index 651ad7feb05..12b45701e62 100644 --- a/Orange/widgets/visualize/owlinearprojection.py +++ b/Orange/widgets/visualize/owlinearprojection.py @@ -229,7 +229,7 @@ def update_anchors(self): anchor.setFont(self.parameter_setter.anchor_font) visible = self.always_show_axes or np.linalg.norm(point) > r - anchor.setVisible(visible) + anchor.setVisible(bool(visible)) anchor.setPen(pg.mkPen((100, 100, 100))) self.plot_widget.addItem(anchor) self.anchor_items.append(anchor) @@ -237,7 +237,7 @@ def update_anchors(self): for anchor, point, label in zip(self.anchor_items, points, labels): anchor.setLine(QLineF(0, 0, *point)) visible = self.always_show_axes or np.linalg.norm(point) > r - anchor.setVisible(visible) + anchor.setVisible(bool(visible)) anchor.setFont(self.parameter_setter.anchor_font) def update_circle(self): diff --git a/Orange/widgets/visualize/ownomogram.py b/Orange/widgets/visualize/ownomogram.py index 9951dbd3549..d0a1392340d 100644 --- a/Orange/widgets/visualize/ownomogram.py +++ b/Orange/widgets/visualize/ownomogram.py @@ -960,7 +960,7 @@ def calculate_log_reg_coefficients(self): coef = self.log_reg_coeffs[i] self.log_reg_coeffs[i] = np.hstack((coef * min_t, coef * max_t)) self.log_reg_cont_data_extremes.append( - [sorted([min_t, max_t], reverse=(c < 0)) for c in coef.flat]) + [sorted([min_t, max_t], reverse=bool(c < 0)) for c in coef.flat]) else: self.log_reg_cont_data_extremes.append([None]) diff --git a/Orange/widgets/visualize/owradviz.py b/Orange/widgets/visualize/owradviz.py index 37f079382b4..841dc56bdd2 100644 --- a/Orange/widgets/visualize/owradviz.py +++ b/Orange/widgets/visualize/owradviz.py @@ -395,7 +395,7 @@ def _init_vizrank(self): not np.isnan(self.data.get_column(self.attr_color)).all() and \ np.sum(np.all(np.isfinite(self.data.X), axis=1)) > 1 and \ np.all(np.nan_to_num(np.nanstd(self.data.X, 0)) != 0) - self.btn_vizrank.setEnabled(is_enabled) + self.btn_vizrank.setEnabled(bool(is_enabled)) if is_enabled: self.vizrank.initialize() diff --git a/Orange/widgets/visualize/owscatterplotgraph.py b/Orange/widgets/visualize/owscatterplotgraph.py index db81a89df52..7e480898f22 100644 --- a/Orange/widgets/visualize/owscatterplotgraph.py +++ b/Orange/widgets/visualize/owscatterplotgraph.py @@ -293,8 +293,8 @@ def tickValues(self, minVal, maxVal, size): # Remove ticks that will later be removed in AxisItem.generateDrawSpecs # because they are out of range. Removing them here is needed so that # they do not affect spaces and label format - ticks = ticks[(ticks[0] < minVal) - :len(ticks) - (ticks[-1] > maxVal)] + ticks = ticks[int((ticks[0] < minVal)) + :len(ticks) - int((ticks[-1] > maxVal))] max_steps = max(int(size / self._label_width), 1) if len(ticks) > max_steps: @@ -1269,7 +1269,7 @@ def update_labels(self): mask = None self._signal_too_many_labels( - mask is not None and mask.sum() > self.MAX_VISIBLE_LABELS) + bool(mask is not None and mask.sum() > self.MAX_VISIBLE_LABELS)) if self._too_many_labels or mask is None or not np.any(mask): return From 338f70c9082fb5b77c5285a361ff368df92234ca Mon Sep 17 00:00:00 2001 From: Ales Erjavec Date: Mon, 26 Jun 2023 14:01:29 +0200 Subject: [PATCH 3/3] test_owdbscan: Remove test for get_kth_distances with orange distances This is never used except in tests and raises deprecation warnings with numpy 1.25. This in turn results in significant test runtime of 40+ seconds for this test. --- Orange/widgets/unsupervised/tests/test_owdbscan.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Orange/widgets/unsupervised/tests/test_owdbscan.py b/Orange/widgets/unsupervised/tests/test_owdbscan.py index 3186e724681..45e49ff965a 100644 --- a/Orange/widgets/unsupervised/tests/test_owdbscan.py +++ b/Orange/widgets/unsupervised/tests/test_owdbscan.py @@ -6,7 +6,6 @@ from Orange.data import Table from Orange.clustering import DBSCAN -from Orange.distance import Euclidean from Orange.preprocess import Normalize, Continuize, SklImpute from Orange.widgets.tests.base import WidgetTest from Orange.widgets.tests.utils import simulate, possible_duplicate_table @@ -173,12 +172,6 @@ def test_get_kth_distances(self): # dists must be sorted np.testing.assert_array_equal(dists, np.sort(dists)[::-1]) - # test with different distance - e.g. Orange distance - dists = get_kth_distances(self.iris, Euclidean, k=5) - self.assertEqual(len(self.iris), len(dists)) - # dists must be sorted - np.testing.assert_array_equal(dists, np.sort(dists)[::-1]) - def test_metric_changed(self): w = self.widget