Abstract
<jats:title>Abstract</jats:title> <jats:p>Single-cell differential expression (DE) reports changes in mature mRNA abundance, but the same fold-change can reflect faster synthesis or slower decay. Metabolic labeling resolves this ambiguity but is costly and cannot be applied retrospectively to the vast majority of published scRNA-seq. scATrans closes this gap using layers every standard pipeline already generates: from DE-selected genes, a reference-corrected unspliced residual annotates each change as transcription- or stabilization-weighted, with no additional experiment. Benchmarked against metabolic-labeling systems with independent kinetic ground truth, the residual separates the two mechanisms at matched mature abundance (ROC-AUC 0.68–0.74, full-length NASC-seq2 K562; 0.59–0.63, 3′ scEU-seq RPE1); effect size scales with intron capture, not model complexity, and explicit kinetic fitting adds nothing over the static contrast. Per-gene, the residual recovers the classical bulk exon–intron contrast (EISA); what scATrans adds is the inference layer single-cell reanalysis actually needs—DE-defined membership, gene-structure correction, a capture-regime reliability pre-flight, induction-matched testing, and a permutation-calibrated program score—so that confident calls are reserved for where the data support them: gene programs, not single genes. Applied to standard 10x data with no labeling, scATrans recovers textbook post-transcriptional biology: a curated AU-rich-element program is called stabilization-weighted in LPS-stimulated PBMCs (confirmed by per-donor pseudobulk DE in an independent four-donor cohort), while a glucocorticoid-response program is called transcription-weighted in dexamethasone-treated A549 cells— opposite mechanisms recovered from unlabeled counts. scATrans turns any spliced/unspliced-resolved DE table into a mechanism-typed one, retrospectively and at scale.</jats:p> <jats:sec> <jats:title>Availability and implementation</jats:title> <jats:p> scATrans requires Python ≥3.9, interoperates with the scverse ecosystem (AnnData, Scanpy), and is released under the Apache-2.0 license. Install with pip install scatrans or from Bioconda. Documentation and tutorials: <jats:ext-link xmlns:xlink="http://www.w3.org/1999/xlink" ext-link-type="uri" xlink:href="https://scatrans.readthedocs.io">https://scatrans.readthedocs.io</jats:ext-link> . Analyses in this manuscript use software version 0.10.9. </jats:p> </jats:sec>