scATrans
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(ormature/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.selectedis the DE gene list. Mechanism columns annotate it; they do not drop genes.- Default gates are
padj < 0.05andlogFC > 1.0. Ifselectedis empty, lowerlogfc_cutoff(for example0.25) or check the contrast. - Omit
sample_colonly when you have no biological replicates (cell-level DE). - Per-gene
mechanism_classis exploratory. For claims, passgene_sets=and/or runprogram_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.12). 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scatrans-0.10.12.tar.gz.
File metadata
- Download URL: scatrans-0.10.12.tar.gz
- Upload date:
- Size: 14.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c072d66790470cdf8ddb8e476f74c25911e0bb6a5b0f0e44c679e873f2c3e1d
|
|
| MD5 |
a6b5ccc42a0c765b6ee6fbafed7e6e11
|
|
| BLAKE2b-256 |
d2480101b3b18ebdbddbc85302c0058399f46a9a8db4c314f640da1c9d111728
|
Provenance
The following attestation bundles were made for scatrans-0.10.12.tar.gz:
Publisher:
publish.yml on leelieber2025/scATrans
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scatrans-0.10.12.tar.gz -
Subject digest:
2c072d66790470cdf8ddb8e476f74c25911e0bb6a5b0f0e44c679e873f2c3e1d - Sigstore transparency entry: 2468778549
- Sigstore integration time:
-
Permalink:
leelieber2025/scATrans@374958a13b4cc1f762c9aa986fafa95d638eabf8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/leelieber2025
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@374958a13b4cc1f762c9aa986fafa95d638eabf8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file scatrans-0.10.12-py3-none-any.whl.
File metadata
- Download URL: scatrans-0.10.12-py3-none-any.whl
- Upload date:
- Size: 9.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c7fb6af913403b8b3528fa07a4c6b672ffb9192c885e96d5c2dd3e6070cb7a68
|
|
| MD5 |
59cc5ca25ada481805ac2c6e03de2520
|
|
| BLAKE2b-256 |
e04b8caf4bb759f16159566e13cb6ceaab3f76de352725bf3cc22006c1c15f5f
|
Provenance
The following attestation bundles were made for scatrans-0.10.12-py3-none-any.whl:
Publisher:
publish.yml on leelieber2025/scATrans
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scatrans-0.10.12-py3-none-any.whl -
Subject digest:
c7fb6af913403b8b3528fa07a4c6b672ffb9192c885e96d5c2dd3e6070cb7a68 - Sigstore transparency entry: 2468778554
- Sigstore integration time:
-
Permalink:
leelieber2025/scATrans@374958a13b4cc1f762c9aa986fafa95d638eabf8 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/leelieber2025
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@374958a13b4cc1f762c9aa986fafa95d638eabf8 -
Trigger Event:
workflow_dispatch
-
Statement type: