|
21 | 21 | from scipy.stats import mode |
22 | 22 |
|
23 | 23 | from tempfile import mkdtemp |
| 24 | +from functools import wraps |
| 25 | +from nose import SkipTest |
24 | 26 |
|
25 | 27 | from sklearn import datasets |
26 | 28 |
|
27 | 29 | n_clusters = 3 |
28 | 30 | X = generate_clustered_data(n_clusters=n_clusters, n_samples_per_cluster=50) |
29 | 31 |
|
| 32 | +def if_pandas(func): |
| 33 | + """Test decorator that skips test if pandas not installed.""" |
| 34 | + @wraps(func) |
| 35 | + def run_test(*args, **kwargs): |
| 36 | + try: |
| 37 | + import pandas |
| 38 | + except ImportError: |
| 39 | + raise SkipTest('Pandas not available.') |
| 40 | + else: |
| 41 | + return func(*args, **kwargs) |
| 42 | + return run_test |
| 43 | + |
| 44 | +def if_networkx(func): |
| 45 | + """Test decorator that skips test if networkx not installed.""" |
| 46 | + @wraps(func) |
| 47 | + def run_test(*args, **kwargs): |
| 48 | + try: |
| 49 | + import networkx |
| 50 | + except ImportError: |
| 51 | + raise SkipTest('NetworkX not available.') |
| 52 | + else: |
| 53 | + return func(*args, **kwargs) |
| 54 | + return run_test |
| 55 | + |
| 56 | + |
30 | 57 | def relabel(labels): |
31 | 58 | result = np.zeros(labels.shape[0]) |
32 | 59 | labels_to_go = set(labels) |
@@ -173,13 +200,13 @@ def test_condensed_tree_plot(): |
173 | 200 | def test_tree_output_formats(): |
174 | 201 |
|
175 | 202 | clusterer = HDBSCAN(gen_min_span_tree=True).fit(X) |
176 | | - clusterer.condensed_tree_.to_pandas() |
177 | | - clusterer.condensed_tree_.to_networkx() |
178 | | - clusterer.single_linkage_tree_.to_pandas() |
179 | | - clusterer.single_linkage_tree_.to_networkx() |
| 203 | + if_pandas(clusterer.condensed_tree_.to_pandas)() |
| 204 | + if_networkx(clusterer.condensed_tree_.to_networkx)() |
| 205 | + if_pandas(clusterer.single_linkage_tree_.to_pandas)() |
| 206 | + if_networkx(clusterer.single_linkage_tree_.to_networkx)() |
180 | 207 | clusterer.single_linkage_tree_.to_numpy() |
181 | | - clusterer.minimum_spanning_tree_.to_pandas() |
182 | | - clusterer.minimum_spanning_tree_.to_networkx() |
| 208 | + if_pandas(clusterer.minimum_spanning_tree_.to_pandas)() |
| 209 | + if_networkx(clusterer.minimum_spanning_tree_.to_networkx)() |
183 | 210 |
|
184 | 211 | def test_hdbscan_badargs(): |
185 | 212 | assert_raises(ValueError, |
|
0 commit comments