Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add TestGetInitialSize #554

Merged
merged 1 commit into from
Jul 23, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions tests/core/test_anndata.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import Optional

import hypothesis.strategies as st
import pytest
from hypothesis import given
Expand All @@ -11,7 +13,9 @@
from scvelo.core import (
clean_obs_names,
cleanup,
get_initial_size,
get_modality,
get_size,
make_dense,
make_sparse,
set_modality,
Expand Down Expand Up @@ -169,6 +173,63 @@ def test_cleanup_some(
assert set(adata.var.columns) == set(var_cols_to_keep)


class TestGetInitialSize(TestBase):
@given(
adata=get_adata(
layer_keys=["unspliced", "spliced", "ambiguous"],
obs_col_names=[
"initial_size",
"initial_size_unspliced",
"initial_size_spliced",
"initial_size_ambiguous",
],
),
by_total_size=st.booleans(),
layer=st.sampled_from([None, "X", "unspliced", "spliced", "ambiguous"]),
)
def test_get_initial_size(
self, adata: AnnData, layer: Optional[None], by_total_size: bool
):
initial_size = get_initial_size(
adata=adata, layer=layer, by_total_size=by_total_size
)

if by_total_size:
assert np.allclose(
initial_size,
adata.obs["initial_size_unspliced"] + adata.obs["initial_size_spliced"],
)
elif layer in adata.layers:
assert np.allclose(initial_size, adata.obs[f"initial_size_{layer}"])
else:
assert np.allclose(initial_size, adata.obs["initial_size"])

@given(
adata=get_adata(
layer_keys=["unspliced", "spliced", "ambiguous"],
),
layer=st.text(min_size=1, max_size=5),
)
def test_not_existing_modality(self, adata: AnnData, layer: str):
initial_size = get_initial_size(adata=adata, layer=layer)

assert initial_size is None

@given(
adata=get_adata(
layer_keys=["unspliced", "spliced", "ambiguous"],
),
layer=st.sampled_from([None, "X", "unspliced", "spliced", "ambiguous"]),
)
def test_initial_size_not_in_adata_obs(self, adata: AnnData, layer: Optional[str]):
initial_size = get_initial_size(adata=adata, layer=layer)

if layer in [None, "X"]:
np.testing.assert_allclose(initial_size, get_size(adata=adata))
else:
np.testing.assert_allclose(initial_size, get_size(adata=adata, layer=layer))


class TestGetModality(TestBase):
@given(adata=get_adata())
def test_get_modality(self, adata: AnnData):
Expand Down