Skip to content

Commit

Permalink
More tests
Browse files Browse the repository at this point in the history
  • Loading branch information
flying-sheep committed Dec 8, 2023
1 parent 41bd8b1 commit 3114f6e
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 14 deletions.
26 changes: 19 additions & 7 deletions anndata/tests/test_obsmvarm.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import pytest
from scipy import sparse

import anndata
from anndata import AnnData

M, N = (100, 100)

Expand All @@ -19,10 +19,10 @@ def adata():
index=[f"cell{i:03d}" for i in range(N)],
)
var = pd.DataFrame(index=[f"gene{i:03d}" for i in range(N)])
return anndata.AnnData(X, obs=obs, var=var)
return AnnData(X, obs=obs, var=var)


def test_assignment_dict(adata):
def test_assignment_dict(adata: AnnData):
d_obsm = dict(
a=pd.DataFrame(
dict(a1=np.ones(M), a2=[f"a{i}" for i in range(M)]),
Expand All @@ -45,7 +45,7 @@ def test_assignment_dict(adata):
assert np.all(adata.varm[k] == v)


def test_setting_ndarray(adata):
def test_setting_ndarray(adata: AnnData):
adata.obsm["a"] = np.ones((M, 10))
adata.varm["a"] = np.ones((N, 10))
assert np.all(adata.obsm["a"] == np.ones((M, 10)))
Expand All @@ -63,7 +63,7 @@ def test_setting_ndarray(adata):
assert h == joblib.hash(adata)


def test_setting_dataframe(adata):
def test_setting_dataframe(adata: AnnData):
obsm_df = pd.DataFrame(dict(b_1=np.ones(M), b_2=["a"] * M), index=adata.obs_names)
varm_df = pd.DataFrame(dict(b_1=np.ones(N), b_2=["a"] * N), index=adata.var_names)

Expand All @@ -83,7 +83,7 @@ def test_setting_dataframe(adata):
adata.varm["c"] = bad_varm_df


def test_setting_sparse(adata):
def test_setting_sparse(adata: AnnData):
obsm_sparse = sparse.random(M, 100)
adata.obsm["a"] = obsm_sparse
assert not np.any((adata.obsm["a"] != obsm_sparse).data)
Expand All @@ -105,7 +105,7 @@ def test_setting_sparse(adata):
assert h == joblib.hash(adata)


def test_setting_daskarray(adata):
def test_setting_daskarray(adata: AnnData):
import dask.array as da

adata.obsm["a"] = da.ones((M, 10))
Expand All @@ -125,3 +125,15 @@ def test_setting_daskarray(adata):
with pytest.raises(ValueError):
adata.varm["b"] = da.ones((int(N * 2), 10))
assert h == joblib.hash(adata)


def test_shape_error(adata: AnnData):
with pytest.raises(
ValueError,
match=(
r"Value passed for key 'b' is of incorrect shape\. "
r"Values of obsm must match dimensions \('obs',\) of parent\. "
r"Value had shape \(101,\) while it should have had \(100,\)\."
),
):
adata.obsm["b"] = np.zeros((adata.shape[0] + 1, adata.shape[0]))
26 changes: 19 additions & 7 deletions anndata/tests/test_obspvarp.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import pytest
from scipy import sparse

import anndata
from anndata import AnnData
from anndata.tests.helpers import gen_typed_df_t2_size
from anndata.utils import asarray

Expand All @@ -24,10 +24,10 @@ def adata():
index=[f"cell{i:03d}" for i in range(M)],
)
var = pd.DataFrame(index=[f"gene{i:03d}" for i in range(N)])
return anndata.AnnData(X, obs=obs, var=var)
return AnnData(X, obs=obs, var=var)


def test_assigmnent_dict(adata):
def test_assigmnent_dict(adata: AnnData):
d_obsp = dict(
a=pd.DataFrame(np.ones((M, M)), columns=adata.obs_names, index=adata.obs_names),
b=np.zeros((M, M)),
Expand All @@ -46,7 +46,7 @@ def test_assigmnent_dict(adata):
assert np.all(asarray(adata.varp[k]) == asarray(v))


def test_setting_ndarray(adata):
def test_setting_ndarray(adata: AnnData):
adata.obsp["a"] = np.ones((M, M))
adata.varp["a"] = np.ones((N, N))
assert np.all(adata.obsp["a"] == np.ones((M, M)))
Expand All @@ -64,7 +64,7 @@ def test_setting_ndarray(adata):
assert h == joblib.hash(adata)


def test_setting_sparse(adata):
def test_setting_sparse(adata: AnnData):
obsp_sparse = sparse.random(M, M)
adata.obsp["a"] = obsp_sparse
assert not np.any((adata.obsp["a"] != obsp_sparse).data)
Expand Down Expand Up @@ -95,7 +95,7 @@ def test_setting_sparse(adata):
],
ids=["heterogeneous", "homogeneous"],
)
def test_setting_dataframe(adata, field, dim, homogenous, df, dtype):
def test_setting_dataframe(adata: AnnData, field, dim, homogenous, df, dtype):
if homogenous:
with pytest.warns(UserWarning, match=rf"{field.title()} 'df'.*dtype object"):
getattr(adata, field)["df"] = df(dim)
Expand All @@ -107,7 +107,7 @@ def test_setting_dataframe(adata, field, dim, homogenous, df, dtype):
assert np.issubdtype(getattr(adata, field)["df"].dtype, dtype)


def test_setting_daskarray(adata):
def test_setting_daskarray(adata: AnnData):
import dask.array as da

adata.obsp["a"] = da.ones((M, M))
Expand All @@ -127,3 +127,15 @@ def test_setting_daskarray(adata):
with pytest.raises(ValueError):
adata.varp["b"] = da.ones((N, int(N * 2)))
assert h == joblib.hash(adata)


def test_shape_error(adata: AnnData):
with pytest.raises(
ValueError,
match=(
r"Value passed for key 'a' is of incorrect shape\. "
r"Values of obsp must match dimensions \('obs', 'obs'\) of parent\. "
r"Value had shape \(201, 200\) while it should have had \(200, 200\)\."
),
):
adata.obsp["a"] = np.zeros((adata.shape[0] + 1, adata.shape[0]))

0 comments on commit 3114f6e

Please sign in to comment.