Skip to content
NygenAnalyticsPublic

About

Fast, out-of-core single-cell analysis in Python for RNA, ATAC, protein, and multi-omic data, scaling to 100M+ cells. Mount remote datasets, work within a memory budget, and trace every result through built-in provenance.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Repository files navigation

CyteArc

Tests Coverage Documentation PyPI

CyteArc is a Python framework for single-cell RNA, ATAC, protein, and matched multi-omic analysis. Its Zarr layout and read engine are designed together for efficient access by cell or gene, locally or directly from remote storage.

CyteArc analysed Tahoe-100M in under 20 hours on commodity hardware, from cell filtering through UMAP, clustering, and marker gene identification, without downsampling the dataset or using GPUs. The same workflow processed one million cells within 15 minutes.

Mount remote datasets, combine studies into virtual datasets, and run pipelines with provenance stored alongside the results.

Documentation · Quick start · Methods and validation

Capabilities

Analysis What you can do
Data access Mount local or remote stores; combine cells across studies into virtual datasets without copying their counts
Cell calling and QC EmptyDrops cell calling, ambient RNA correction, doublet detection within samples, cell-cycle scoring, and HTO demultiplexing
Cell populations RNA, ATAC, and protein pipelines; batch-aware feature selection, PCA/LSI, UMAP, densMAP, t-SNE, Leiden/Paris clustering, and marker tests
Integration Harmony2 batch correction, WNN/SNN integration of modalities measured in the same cells, and integration diagnostics
Reference mapping Symphony-style mapping, label transfer, and diagnostics for projected cells
Condition comparisons Sample-level and paired comparisons across donors, with pseudobulk export for downstream differential expression
Trajectories Population Balance Analysis pseudotime, fate probabilities, lineage-specific gene dynamics, and fate-weighted curves
Gene activity and regulation AUCell/WAGGR gene-set scores, SCENIC-style regulons, chromVAR motif activity, region-to-gene links, and gene programs
Import and export Cell Ranger, Matrix Market, AnnData, and Seurat import; export counts and selected analysis results to AnnData

Install

pip install "cytearc[extra]"

See installation for environment setup and platform requirements.

Run a pipeline

import cytearc

ds = cytearc.DataStore("cells.zarr")
run = ds.pipeline.rna(label="rna")
ds.plots.embedding(run=run, color_by="clusters")

Pipelines cover QC through marker discovery, with over 100 stage settings across RNA, ATAC, protein, and multimodal workflows. See the RNA tutorial for details.

Mount a remote dataset

Read datasets from Amazon S3, Google Cloud Storage, Hugging Face, or Cloudflare R2, and save your analysis locally.

ds = cytearc.mount_datastore(
    "hf://buckets/Nygen/cytebase-2610/datasets/mcglade_2021_scrna_data_human_fallopian_tube_30f5e171/data.zarr",
    at="fallopian_tube.zarr",
    storage_options={"token": False},
)
run = ds.pipeline.rna(label="rna")

Find datasets in the companion CyteBase catalog. See remote access for connection options.

Analyse several studies as one virtual dataset

A virtual dataset combines cells from existing stores without copying their count matrices, saving the time and space of a physical merge. It works like a regular datastore.

from cytearc.composite import create_composite

sources = {
    "study_a": cytearc.DataStore("study_a.zarr", zarr_mode="r"),
    "study_b": cytearc.DataStore("study_b.zarr", zarr_mode="r"),
}

joint = create_composite(sources, at="joint.zarr", features="intersection")
joint_run = joint.pipeline.rna(label="joint_rna")

See the joint-analysis tutorial for details.

Trace results and reuse work

CyteArc records pipeline provenance in the datastore, linking result artifacts to their exact inputs and parameters. You can trace results and check their status without rerunning the analysis or setting up a separate workflow system. Matching results are reused automatically.

ds.artifacts.lineage(run["markers"])

See provenance and result reuse for details.


CyteArc is open source under the BSD 3-Clause License, maintained by Nygen. Third-party notices.

About

Fast, out-of-core single-cell analysis in Python for RNA, ATAC, protein, and multi-omic data, scaling to 100M+ cells. Mount remote datasets, work within a memory budget, and trace every result through built-in provenance.

Topics

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages