scATrans
scATrans is a Python toolkit for single-cell differential analysis. It is primarily designed for datasets that contain spliced/unspliced (or mature/nascent) RNA layers. In this setting it computes a composite active transcription score that integrates differential expression with reference-based excess unspliced RNA to rank genes.
It also supports conventional differential expression workflows (no velocity data required) using scanpy, PyDESeq2 pseudobulk, linear mixed models, or optional Memento. Functional enrichment (ORA, GSEA, GO, KEGG) uses bundled gene sets with consistent universe handling, and a set of visualization functions is provided.
Note: The spliced/unspliced (nascent-transcription) scoring is still experimental and under active validation — it is not yet recommended for production use on spliced/unspliced applications. The features that do not rely on the spliced/unspliced layers — differential expression, functional enrichment, and plotting — are stable and ready to use.
📚 Full documentation, tutorials, and the complete API reference are on Read the Docs.
Installation
# From PyPI
pip install scatrans
# Or from Bioconda
conda install -c conda-forge -c bioconda scatrans
# Optional extras (PyPI): advanced (scVelo) mode, gene features, pseudobulk DE (PyDESeq2), Memento, GSEA
pip install "scatrans[advanced,gene_features,pseudobulk,memento,gsea]"
See Installation for extras, source installs, and logging setup.
When developing from a git checkout, install the editable tree you are
editing (pip install -e . from that checkout). A stale editable install
pointing at another path can make import scatrans load an older copy.
Quickstart
import scatrans as scat
# One-liner pipeline: score → filter → GO enrichment
result = scat.run_default_pipeline(
adata,
groupby="condition",
target_group="Disease",
reference_group="Control",
sample_col="sample", # optional; auto-selects pseudobulk when >=3 replicates/group
organism="mouse",
)
print(result["candidates"].head())
print(result["enrichment"].head())
See the Quickstart for a complete end-to-end walkthrough, the Tutorials for fully worked, real-data notebooks (with and without RNA-velocity layers), and the User Guide for DE backends, enrichment, plotting, and advanced options.
Before reporting results in a paper
active_score is a composite heuristic rank, not a p-value or FDR on
its own. See
Statistical Guidance
for what each output column means, safe vs. unsafe uses, and a reporting
checklist before you cite scATrans results in a manuscript or supplement.
Domain conventions (upregulation-oriented scoring, residual vs DE, cutoff
names, GSEA ranks, within-run λ scale) are spelled out in
Domain Assumptions
(also on Read the Docs after the next docs deploy).
License
Software (Python source) is licensed under Apache License 2.0. Bundled gene-set data (GO, KEGG) carries its own licensing terms — see License before commercial use.
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.5.tar.gz.
File metadata
- Download URL: scatrans-0.10.5.tar.gz
- Upload date:
- Size: 15.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62b282a28cb04b15f083bc2b002b4919d742591df240efda5c59b16cfdeed93c
|
|
| MD5 |
0ad2b93bf779de024d8920c1fe9a1ea9
|
|
| BLAKE2b-256 |
d00c7b68ae0d30dd7886cb1a9110efb8f39167d371517fa687d29f729601018e
|
Provenance
The following attestation bundles were made for scatrans-0.10.5.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.5.tar.gz -
Subject digest:
62b282a28cb04b15f083bc2b002b4919d742591df240efda5c59b16cfdeed93c - Sigstore transparency entry: 2201003056
- Sigstore integration time:
-
Permalink:
leelieber2025/scATrans@35740c84998de9b12cd35fb7c84eb327f2393da8 -
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@35740c84998de9b12cd35fb7c84eb327f2393da8 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file scatrans-0.10.5-py3-none-any.whl.
File metadata
- Download URL: scatrans-0.10.5-py3-none-any.whl
- Upload date:
- Size: 9.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f99eeaed96cfc3437eaf23a0494d7f616ced04385e18bef2d0732ff283ca8745
|
|
| MD5 |
6594db1946bbb538fded92ca39bef8a0
|
|
| BLAKE2b-256 |
ae0952e89fd4245dc9ee9f7fb6ae245a130902430cd01384ec623922aa61b6d5
|
Provenance
The following attestation bundles were made for scatrans-0.10.5-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.5-py3-none-any.whl -
Subject digest:
f99eeaed96cfc3437eaf23a0494d7f616ced04385e18bef2d0732ff283ca8745 - Sigstore transparency entry: 2201003108
- Sigstore integration time:
-
Permalink:
leelieber2025/scATrans@35740c84998de9b12cd35fb7c84eb327f2393da8 -
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@35740c84998de9b12cd35fb7c84eb327f2393da8 -
Trigger Event:
workflow_dispatch
-
Statement type: