Skip to content

Commit 7a5c069

Browse files
committed
Updated pp tests
1 parent 8bee571 commit 7a5c069

3 files changed

Lines changed: 56 additions & 1 deletion

File tree

tests/pl/test_Plotter.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import tempfile
2+
3+
import matplotlib.pyplot as plt
4+
import matplotlib.image as mpimg
5+
import pytest
6+
7+
import decoupler as dc
8+
9+
10+
def test_plot_ax(
11+
adata
12+
):
13+
fig, axes = plt.subplots(1, 2, tight_layout=True, figsize=(4, 2))
14+
ax1, ax2 = axes
15+
dc.pl.obsbar(adata=adata, y='group', hue='sample', ax=ax1)
16+
dc.pl.obsbar(adata=adata, y='sample', hue='group', ax=ax2)
17+
18+
19+
def test_plot_save(
20+
adata
21+
):
22+
with tempfile.NamedTemporaryFile(suffix=".png", delete=True) as tmp:
23+
fig = dc.pl.obsbar(adata=adata, y='group', hue='sample', save=tmp.name)
24+
tmp.flush()
25+
img = mpimg.imread(tmp.name)
26+
assert img is not None

tests/pp/test_anndata.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,20 @@ def test_swap_layer(
4141
assert res.X.sum().is_integer()
4242
assert list(res.layers.keys()) == ['counts', 'X']
4343
assert (ldata.X == res.layers['X']).all()
44+
res = dc.pp.swap_layer(adata=ldata, key='counts', X_key='X', inplace=True)
45+
assert res is None
46+
assert 'X' in ldata.layers
4447

4548

4649
@pytest.mark.parametrize(
4750
'groups_col,mode,sparse,empty',
4851
[
4952
[None, 'sum', False, True],
53+
[None, 'sum', True, True],
5054
[None, 'mean', True, True],
55+
['sample', 'sum', False, True],
56+
['sample', 'sum', False, False],
57+
[['dose', 'group'], 'sum', False, True],
5158
['group', 'median', False, False],
5259
['group', lambda x: np.max(x) - np.min(x), True, True],
5360
['group', dict(sum=np.sum, mean=np.mean), False, False],
@@ -59,11 +66,15 @@ def test_pseudobulk(
5966
mode,
6067
sparse,
6168
empty,
69+
rng,
6270
):
6371
adata = adata.copy()
72+
adata.obs['dose'] = rng.choice(['low', 'medium', 'high'], size=adata.n_obs, replace=True)
6473
if empty:
6574
adata.X[:, 3] = 0.
6675
adata.layers['counts'][:, 3] = 0.
76+
adata.X[5, :] = 0.
77+
adata.layers['counts'][5, :] = 0.
6778
if sparse:
6879
adata.X = sps.csr_matrix(adata.X)
6980
if mode == 'sum':
@@ -174,6 +185,15 @@ def test_filter_by_expr(
174185
"G04", "G05", "G03", "G07", "G18", "G17", "G02", "G14", "G16", "G08", "G13", "G20", "G01", "G15", "G06", "G19"
175186
])
176187
assert set(dc_var) == set(eg_var)
188+
pdata.X = sps.csr_matrix(pdata.X)
189+
dc_var = dc.pp.filter_by_expr(
190+
adata=pdata, group='group', lib_size=1, min_count=3, min_total_count=10, large_n=0, min_prop=0.1, inplace=False
191+
)
192+
assert set(dc_var) == set(eg_var)
193+
dc.pp.filter_by_expr(
194+
adata=pdata, group='group', lib_size=1, min_count=3, min_total_count=10, large_n=0, min_prop=0.1, inplace=True
195+
)
196+
assert set(pdata.var_names) == set(eg_var)
177197

178198

179199
@pytest.mark.parametrize('inplace', [True, False])
@@ -219,9 +239,10 @@ def test_bin_order(
219239
order,
220240
label,
221241
nbins,
242+
rng,
222243
):
223-
rng = np.random.default_rng(seed=42)
224244
tdata.obs.loc[:, 'f_order'] = rng.random(tdata.n_obs)
245+
tdata.X = sps.csr_matrix(tdata.X)
225246
df = dc.pp.bin_order(adata=tdata, names=names, order=order, label=label, nbins=nbins)
226247
assert isinstance(df, pd.DataFrame)
227248
cols = {'name', 'order', 'value'}

tests/pp/test_data.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ def test_extract(
2121
adata.layers['counts'] = adata.X.round()
2222
X, obs, var = dc.pp.extract(data=adata, layer='counts')
2323
assert float(np.sum(X)).is_integer()
24+
sadata = adata.copy()
25+
sadata.X = sps.coo_matrix(sadata.X)
26+
X, obs, var = dc.pp.extract(data=sadata)
27+
assert isinstance(X, sps.csr_matrix)
28+
eadata = adata.copy()
29+
eadata.X[5, :] = 0.
30+
X, obs, var = dc.pp.extract(data=eadata, empty=True)
31+
assert X.shape[0] < eadata.shape[0]
2432
nadata = adata.copy()
2533
nadata.X = nadata.X * -1
2634
adata.raw = nadata

0 commit comments

Comments
 (0)