From 8d685d29745184a82bfde1a1fbb194cdff2cad5c Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Thu, 15 Feb 2024 12:04:57 +0100 Subject: [PATCH] (chore): move test + add `X` tests --- anndata/tests/test_inplace_subset.py | 15 --------------- anndata/tests/test_views.py | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/anndata/tests/test_inplace_subset.py b/anndata/tests/test_inplace_subset.py index 2b7a4f9e8..110d2574a 100644 --- a/anndata/tests/test_inplace_subset.py +++ b/anndata/tests/test_inplace_subset.py @@ -68,21 +68,6 @@ def test_inplace_subset_obs(matrix_type, subset_func): assert_equal(from_view.layers[k], modified.layers[k], exact=True) -def test_subset_different_types(matrix_type): - orig = gen_adata((30, 30), X_type=matrix_type) - boolean_array_mask = np.random.randint(0, 2, 30).astype("bool") - boolean_list_mask = boolean_array_mask.tolist() - integer_array_mask = np.where(boolean_array_mask)[0] - integer_list_mask = integer_array_mask.tolist() - - assert_equal(orig[integer_array_mask, :], orig[boolean_array_mask, :]) - assert_equal(orig[integer_list_mask, :], orig[boolean_list_mask, :]) - assert_equal(orig[integer_list_mask, :], orig[integer_array_mask, :]) - assert_equal(orig[:, integer_array_mask], orig[:, boolean_array_mask]) - assert_equal(orig[:, integer_list_mask], orig[:, boolean_list_mask]) - assert_equal(orig[:, integer_list_mask], orig[:, integer_array_mask]) - - @pytest.mark.parametrize("dim", ("obs", "var")) def test_inplace_subset_no_X(subset_func, dim): orig = gen_adata((30, 30)) diff --git a/anndata/tests/test_views.py b/anndata/tests/test_views.py index dca77265d..7ac4cfefc 100644 --- a/anndata/tests/test_views.py +++ b/anndata/tests/test_views.py @@ -551,6 +551,30 @@ def test_double_index(subset_func, subset_func2): assert np.all(v1.var == v2.var) +def test_view_different_type_indices(matrix_type): + orig = gen_adata((30, 30), X_type=matrix_type) + boolean_array_mask = np.random.randint(0, 2, 30).astype("bool") + boolean_list_mask = boolean_array_mask.tolist() + integer_array_mask = np.where(boolean_array_mask)[0] + integer_list_mask = integer_array_mask.tolist() + + assert_equal(orig[integer_array_mask, :], orig[boolean_array_mask, :]) + assert_equal(orig[integer_list_mask, :], orig[boolean_list_mask, :]) + assert_equal(orig[integer_list_mask, :], orig[integer_array_mask, :]) + assert_equal(orig[:, integer_array_mask], orig[:, boolean_array_mask]) + assert_equal(orig[:, integer_list_mask], orig[:, boolean_list_mask]) + assert_equal(orig[:, integer_list_mask], orig[:, integer_array_mask]) + # check that X element is same independent of access + assert_equal(orig[:, integer_list_mask].X, orig.X[:, integer_list_mask]) + assert_equal(orig[:, boolean_list_mask].X, orig.X[:, boolean_list_mask]) + assert_equal(orig[:, integer_array_mask].X, orig.X[:, integer_array_mask]) + assert_equal(orig[:, integer_list_mask].X, orig.X[:, integer_list_mask]) + assert_equal(orig[integer_list_mask, :].X, orig.X[integer_list_mask, :]) + assert_equal(orig[boolean_list_mask, :].X, orig.X[boolean_list_mask, :]) + assert_equal(orig[integer_array_mask, :].X, orig.X[integer_array_mask, :]) + assert_equal(orig[integer_list_mask, :].X, orig.X[integer_list_mask, :]) + + def test_view_retains_ndarray_subclass(): adata = ad.AnnData(np.zeros((10, 10))) adata.obsm["foo"] = np.zeros((10, 5)).view(NDArraySubclass)