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.15). 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scatrans-0.10.16.tar.gz (16.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scatrans-0.10.16-py3-none-any.whl (9.1 MB view details)

Uploaded Python 3

File details

Details for the file scatrans-0.10.16.tar.gz.

File metadata

  • Download URL: scatrans-0.10.16.tar.gz
  • Upload date:
  • Size: 16.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for scatrans-0.10.16.tar.gz
Algorithm Hash digest
SHA256 9c747985036ab39e8c1ca2eb54c0406476bc3abd1dbf2938b9c4e0eedea2be20
MD5 9d484a71d2caeb97965a109862e89607
BLAKE2b-256 0e2cbd73dbde0f9144d5663b0e73ed9dd4b01bcbce5b83c444be203d072fc317

See more details on using hashes here.

File details

Details for the file scatrans-0.10.16-py3-none-any.whl.

File metadata

  • Download URL: scatrans-0.10.16-py3-none-any.whl
  • Upload date:
  • Size: 9.1 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.14.6

File hashes

Hashes for scatrans-0.10.16-py3-none-any.whl
Algorithm Hash digest
SHA256 52dc2e9d32bc803df52d7fa685c44bae63db504ef8b4d7c0f8e795529e714b94
MD5 a8832b65298ec6e9d204a662e72829ea
BLAKE2b-256 2c8dd44b39668eb05dd917bfcce99d82dcd2e43300fdcdd651134964f25c5483

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.10.16 This release

2 files

0.10.15

2 files

0.10.14

2 files

0.10.13

2 files

0.10.12

2 files

0.10.11

2 files

0.10.10

2 files

0.10.9

2 files

0.10.8

2 files

0.10.7

2 files

0.10.6

2 files

0.10.5

2 files

0.10.4

2 files

0.10.3

2 files

0.10.2

2 files

0.10.1

2 files

0.9.9

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page