YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
scPTR
Single-Cell Post-Transcriptional Regulatory Decomposition
scPTR estimates per-cell, per-gene mRNA degradation rates from scRNA-seq spliced/unspliced counts and uses them as a primary analytical axis — complementary to RNA velocity.
What scPTR does
- Degradation rate estimation: Per-cell, per-gene gamma from kinetic steady-state relationships with kNN Gaussian-kernel smoothing
- Expression-invisible states: Discovers cell subpopulations with distinct post-transcriptional programs undetectable by standard expression analysis
- Post-transcriptional velocity: Neighbor-averaged gamma gradient that captures degradation dynamics orthogonal to RNA velocity
- RBP-target networks: Library-size-corrected inference of RNA-binding protein regulatory networks with elastic net
- DeepPTR: Structured VAE with a kinetic decoder that disentangles transcriptional and post-transcriptional latent spaces
Installation
pip install .
Optional dependencies:
pip install ".[deep]" # PyTorch for DeepPTR
pip install ".[datasets]" # Pooch for dataset downloads
pip install ".[dev]" # pytest for testing
Quick start
import scptr
# Load data with spliced/unspliced layers
adata = scptr.read_h5ad("your_data.h5ad")
# Preprocessing
scptr.pp.filter_genes(adata)
scptr.pp.normalize_layers(adata)
scptr.pp.neighbors(adata)
scptr.pp.smooth_layers(adata)
# Estimate rates
scptr.tl.estimate_beta(adata)
scptr.tl.estimate_gamma(adata)
# Downstream analysis
scptr.tl.variance_decomposition(adata)
scptr.tl.pt_states(adata)
scptr.tl.pt_velocity(adata)
scptr.tl.infer_network(adata)
Pipeline overview
Raw scRNA-seq (spliced + unspliced)
-> Gene/cell filtering
-> Library-size normalization (per layer)
-> kNN graph + Gaussian smoothing
-> Beta estimation (quantile regression on u/s phase portraits)
-> Gamma estimation (gamma = beta * u / s, per cell per gene)
-> Variance decomposition (transcriptional vs post-transcriptional)
-> PT states (PCA + Leiden clustering in gamma-space)
-> PT velocity (neighbor-averaged gamma gradient)
-> RBP-target network inference (elastic net, library-size corrected)
Validation
scPTR gamma estimates have been validated against:
| Validation | Result |
|---|---|
| Published mRNA half-lives | ρ = −0.81 (sci-fate), −0.33 to −0.40 (10x developmental) |
| Method comparison | Outperforms scVelo steady-state (−0.37) and velVI (−0.28) |
| miRNA target enrichment | 59% of 215 families enriched (p = 4.7×10⁻⁶⁵) |
| 3′ UTR sequence features | UTR length ρ = 0.34 (p < 10⁻²⁰⁰), AU content ρ = 0.30 |
| DepMap CRISPR essentiality | Hub RBPs more essential (p = 6.4×10⁻⁵) |
| Subsampling robustness | r > 0.97 at 20% subsampling |
Key findings
- Expression-invisible states: 3/8 pancreatic and 6/11 hippocampal cell types harbor post-transcriptional subpopulations undetectable by expression analysis (confirmed by zero-permutation control, ARI ≈ 0), enriched for ER stress/autophagy and synaptic plasticity pathways
- Temporal precedence: degradation-rate changes precede expression changes for 54% of transition genes in pancreas (p < 10⁻⁵⁷) and 78% in dentate gyrus (p = 9.9×10⁻¹³)
- RBP networks: library-size-corrected inference identifies essential hub regulators (HNRNPA1, YBX1, ELAVL1/HuR); neuroblastoma shows 66% stabilizing edges vs. destabilizing bias in developmental tissues
Datasets
Built-in dataset loaders (downloaded via Pooch):
adata = scptr.datasets.pancreas() # Mouse endocrinogenesis (3,696 cells)
adata = scptr.datasets.dentate_gyrus() # Mouse hippocampal neurogenesis (2,930 cells)
adata = scptr.datasets.sci_fate() # Human A549 dexamethasone response (7,404 cells)
Requirements
- Python >= 3.9
- anndata >= 0.8, scanpy >= 1.9, numpy >= 1.21, scipy >= 1.7, numba >= 0.55
- Optional: torch >= 2.0 (DeepPTR), pooch >= 1.6 (datasets)
Citation
If you use scPTR, please cite:
scPTR: Decomposing Post-Transcriptional Regulation at Single-Cell Resolution (2026)
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support