File: test_repr.py

package info (click to toggle)
python-anndata 0.7.5%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 628 kB
  • sloc: python: 7,779; makefile: 8
file content (60 lines) | stat: -rw-r--r-- 1,672 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import re
from string import ascii_letters

import numpy as np
import pandas as pd
import pytest

import anndata as ad

ADATA_ATTRS = ("obs", "var", "varm", "obsm", "layers", "obsp", "varp", "uns")


@pytest.fixture
def adata():
    return ad.AnnData(
        np.zeros((20, 10)),
        obs=pd.DataFrame(
            dict(obs_key=list(ascii_letters[:20])),
            index=[f"cell{i}" for i in range(20)],
        ),
        var=pd.DataFrame(
            dict(var_key=np.arange(10)), index=[f"gene{i}" for i in range(10)]
        ),
        varm=dict(varm_key=np.zeros((10, 20))),
        obsm=dict(obsm_key=np.zeros((20, 20))),
        layers=dict(layers_key=np.zeros((20, 10))),
        obsp=dict(obsp_key=np.zeros((20, 20))),
        varp=dict(varp_key=np.zeros((10, 10))),
        uns=dict(uns_key=dict(zip("abc", range(3)))),
    )


@pytest.fixture(params=ADATA_ATTRS)
def adata_attr(request):
    return request.param


def test_anndata_repr(adata):
    assert f"{adata.n_obs} × {adata.n_vars}" in repr(adata)

    for idxr in [
        (slice(10, 20), 12),
        (12, 10),
        (["cell1", "cell2"], slice(10, 15)),
    ]:
        v = adata[idxr]
        v_repr = repr(v)
        assert f"{v.n_obs} × {v.n_vars}" in v_repr
        assert "View of" in v_repr
        for attr in ADATA_ATTRS:
            assert re.search(
                rf"^\s+{attr}:[^$]*{attr}_key.*$", v_repr, flags=re.MULTILINE
            )


def test_removal(adata, adata_attr):
    attr = adata_attr
    assert re.search(rf"^\s+{attr}:.*$", repr(adata), flags=re.MULTILINE)
    delattr(adata, attr)
    assert re.search(rf"^\s+{attr}:.*$", repr(adata), flags=re.MULTILINE) is None