snapatac2.metrics.summary_by_chrom#

snapatac2.metrics.summary_by_chrom(adata, *, mode='count', n_jobs=8)[source]#

Compute per-cell summary statistics for each chromosome.

Run this metric after import_fragments has attached fragment metadata to the AnnData object. The returned dictionary contains one vector per chromosome, with one value per cell.

Anti-Patterns#

  • Do NOT call this function on an AnnData object that lacks imported fragments.

  • Do NOT pass this result directly as a matrix without aligning chromosome keys; dictionary order is not a biological ordering guarantee.

param adata:

AnnData object, or a list of AnnData objects, with imported fragments. When a list is provided, compute chromosome summaries for each object in parallel.

type adata:

AnnData | list[AnnData]

param mode:

Statistic to compute per chromosome and per cell. Use “sum” for summed values, “mean” for mean values, or “count” for counts.

type mode:

Literal['sum', 'mean', 'count']

param n_jobs:

Number of jobs to run when adata is a list. If n_jobs=-1, use all available CPUs.

type n_jobs:

int

returns:

Mapping from chromosome name to a one-dimensional array of per-cell summary values. When adata is a list, returns a list of such mappings.

rtype:

dict[str, ndarray]

Examples

>>> import snapatac2 as snap
>>> data = snap.pp.import_fragments(
...     snap.datasets.pbmc500(downsample=True),
...     chrom_sizes=snap.genome.hg38,
...     sorted_by_barcode=False,
... )
>>> chrom_counts = snap.metrics.summary_by_chrom(data, mode="count")
>>> chrom_counts["chr1"].shape[0] == data.n_obs
True