Metadata-Version: 2.4
Name: scatrans
Version: 0.10.6
Summary: Single-cell Active Transcription Analysis
Author-email: "Zhao Li (李钊)" <leelieber@gmail.com>
License: Apache-2.0
Project-URL: Homepage, https://github.com/leelieber2025/scATrans
Project-URL: Documentation, https://scatrans.readthedocs.io
Project-URL: Changelog, https://scatrans.readthedocs.io/en/latest/changelog.html
Keywords: single-cell,RNA-seq,unspliced,nascent RNA,active transcription,bioinformatics
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: scanpy>=1.9
Requires-Dist: anndata>=0.8
Requires-Dist: numpy>=1.21
Requires-Dist: pandas>=1.3
Requires-Dist: pyarrow>=10.0
Requires-Dist: scipy>=1.7
Requires-Dist: scikit-learn>=1.0
Requires-Dist: joblib>=1.2
Requires-Dist: statsmodels>=0.13
Requires-Dist: matplotlib>=3.5
Requires-Dist: seaborn>=0.12
Requires-Dist: adjustText>=0.7
Requires-Dist: importlib_resources>=5.0; python_version < "3.10"
Provides-Extra: advanced
Requires-Dist: scvelo>=0.3.0; extra == "advanced"
Provides-Extra: pseudobulk
Requires-Dist: pydeseq2>=0.4.0; extra == "pseudobulk"
Provides-Extra: gene-features
Requires-Dist: gtfparse>=1.3.0; extra == "gene-features"
Provides-Extra: memento
Requires-Dist: memento-de<0.3.0,>=0.1.0; extra == "memento"
Provides-Extra: gsea
Requires-Dist: gseapy>=1.1; extra == "gsea"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: ruff>=0.4.0; extra == "dev"
Requires-Dist: pre-commit>=3.5; extra == "dev"
Requires-Dist: mypy>=1.10; extra == "dev"
Dynamic: license-file

# scATrans

[![PyPI version](https://img.shields.io/pypi/v/scatrans.svg)](https://pypi.org/project/scatrans/)
[![Bioconda](https://img.shields.io/conda/vn/bioconda/scatrans.svg)](https://anaconda.org/bioconda/scatrans)
[![Python versions](https://img.shields.io/pypi/pyversions/scatrans.svg)](https://pypi.org/project/scatrans/)
[![Documentation Status](https://readthedocs.org/projects/scatrans/badge/?version=latest)](https://scatrans.readthedocs.io/en/latest/?badge=latest)
[![CI](https://github.com/leelieber2025/scATrans/actions/workflows/ci.yml/badge.svg)](https://github.com/leelieber2025/scATrans/actions/workflows/ci.yml)
[![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.21365873.svg)](https://doi.org/10.5281/zenodo.21365873)

scATrans is a single-cell differential-analysis toolkit with an RNA-velocity
twist: standard DE **selects** the changed genes, then scATrans **partitions**
them by mechanism — *transcription-driven* vs *stabilization-driven* — from the
nascent (unspliced) signal, a call a fold-change alone cannot make.

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.

**📚 Documentation, tutorials, and API reference:
[Read the Docs](https://scatrans.readthedocs.io/en/latest/).**

## Installation

```bash
pip install scatrans
# or: conda install -c conda-forge -c bioconda scatrans
```

Optional extras (scVelo, gene features, PyDESeq2, Memento, GSEA) and a source /
editable dev setup are covered in the
[Installation guide](https://scatrans.readthedocs.io/en/latest/installation.html).

## Quickstart

```python
import scatrans as scat

# DE selects the changed genes; scATrans partitions them by MECHANISM.
result = scat.partition_de_by_mechanism(
    adata,
    groupby="condition", target_group="Disease", reference_group="Control",
    organism="mouse",
    de="builtin",            # or a DE method name / precomputed DE table / callable
    gene_sets=my_pathways,   # optional -> program-level mechanism table
)
result.regime      # reliability pre-flight
result.selected    # DE-selected genes + per-gene mechanism annotation
result.programs    # decisive program-level transcription-vs-stabilization calls
```

See the [Quickstart](https://scatrans.readthedocs.io/en/latest/quickstart.html),
[Tutorials](https://scatrans.readthedocs.io/en/latest/tutorials/index.html), and
[User Guide](https://scatrans.readthedocs.io/en/latest/user_guide/index.html) for
the full workflow, DE backends, enrichment, plotting, and reporting guidance
([Statistical Guidance](https://scatrans.readthedocs.io/en/latest/statistical_guidance.html)).

## License

Software (Python source) is licensed under [Apache License 2.0](LICENSE).
Bundled gene-set data (GO, KEGG) carries its own licensing terms — see
[License](https://scatrans.readthedocs.io/en/latest/license.html) before
commercial use.

## Author

**Zhao Li (李钊)**  
Email: [leelieber@gmail.com](mailto:leelieber@gmail.com)
