Skip to main content

scATrans

PyPI version PyPI downloads Bioconda Conda downloads Python versions Documentation Status CI License DOI

scATrans answers a simple follow-up after differential expression (DE): among the genes that changed, which look transcription-driven and which look stabilization-driven? It uses the nascent (unspliced) residual on top of a normal DE step—something total-count fold change alone cannot sort out.

Step What it does
DE Chooses which genes make the list
Mechanism Labels those genes (transcription vs. stabilization)
Detection (optional) Extra nascent-activity scores; does not rewrite mechanism labels

Pathway- or program-level summaries (gene_sets=) are usually more useful than single-gene labels. Without spliced/unspliced layers, the package still runs ordinary DE, enrichment, and plots.

Docs: Read the Docs.

What you need

  • Python 3.9+ (tested 3.9–3.12)
  • An AnnData object with a condition column in .obs
  • For mechanism analysis: spliced/unspliced (or mature/nascent) layers
  • Nothing yet? scat.datasets.load_toy() ships a synthetic example — see First run.

Install

pip install scatrans
# or: conda install -c conda-forge -c bioconda scatrans

Optional extras (PyDESeq2, GSEA, scVelo, …): installation guide.

First run

This uses a bundled synthetic AnnData (load_toy()). No download. Swap in your own object after the call works.

import scatrans as scat

adata = scat.datasets.load_toy()  # Control/Disease, sample, spliced/unspliced

result = scat.partition_de_by_mechanism(
    adata,
    groupby="condition",
    target_group="Disease",
    reference_group="Control",
    organism="mouse",          # "human" for human gene symbols
    sample_col="sample",       # toy has this column; pass yours when you have replicates
)
print(result.regime)           # capture quality (reliability in [0, 1])
print(result.selected.head())  # DE genes + mechanism labels
print(result.summary())        # cutoffs used, how many genes were selected

What to expect:

  • result.selected is the DE gene list. Mechanism columns annotate it; they do not drop genes.
  • Default gates are padj < 0.05 and logFC > 1.0. If selected is empty, lower logfc_cutoff (for example 0.25) or check the contrast.
  • Omit sample_col only when you have no biological replicates (cell-level DE).
  • Per-gene mechanism_class is exploratory. For claims, pass gene_sets= and/or run program_mechanism_permutation_calibrated.

No spliced/unspliced (or mature/nascent) layers? You can still run DE and enrichment — see Quickstart. To build those layers: Preparing spliced/unspliced data.

Next: Quickstart · Tutorials · FAQ

Status

0.10.x (Beta). Import as import scatrans as scat and stick to names in scatrans.__all__, scat.pl, and scat.qc. Details: API stability.

Citation

Please cite the preprint:

Li, Z., James, A. W. & Li, S. scATrans: annotating single-cell differential expression as transcription- or stabilization-weighted using unspliced RNA. bioRxiv (2026). doi:10.64898/2026.08.03.740741

For the software itself, cite the Zenodo DOI above. Pin the installed version in Methods (this tree is scatrans==0.10.17). See CITATION.cff.

License

Software: Apache License 2.0. Bundled GO/KEGG data may carry separate terms—see the license page before commercial redistribution.

Author

Zhao Li (李钊)
Email: leelieber@gmail.com

Metadata

Release files for scatrans 0.10.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scatrans 0.10.17
File Size Uploaded
scatrans-0.10.17.tar.gz 16.1 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for scatrans 0.10.17
File Interpreter ABI Platform
scatrans-0.10.17-py3-none-any.whl Python 3 none any Details

Total release size: 25.2 MB

Release files / scatrans-0.10.17.tar.gz

Download URL scatrans-0.10.17.tar.gz
Size 16.1 MB
Tags Source
SHA-256 checksum
How to use checksums
cc15fc33dec34561a4d4b549659129606b61b9fd5a2fd688c4936b278601587c
BLAKE2b-256 checksum
How to use checksums
06c17ed1b32ffdaa2c2e8ef65591494f1dcf904ef847c60e7a9743180a0f5892
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release files / scatrans-0.10.17-py3-none-any.whl

Download URL scatrans-0.10.17-py3-none-any.whl
Size 9.1 MB
Tags Python 3
SHA-256 checksum
How to use checksums
9f69f19c87fb99daf516295a98067abf662e186adac2270ac37c2b6e14e7da5b
BLAKE2b-256 checksum
How to use checksums
e5a045c6ce3a13513fdea177a5ea1f1b5858fd342c71aa9fd4ac5d74ff1673cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page