| Votes | By | Price | Discipline | Year Launched |
| scverse | FREE, OPEN SOURCE | Interdisciplinary |
Scanpy is the Python standard for single-cell analysis and the anchor of the scverse ecosystem. Together with Seurat on the R side, it is where the overwhelming majority of single-cell transcriptomics analysis actually happens.
What it does
Scanpy covers the full single-cell workflow: quality control and filtering, normalisation, highly variable gene selection, dimensionality reduction by PCA and UMAP, neighbourhood graph construction, Leiden clustering, differential expression, marker gene identification and trajectory inference. It is built on AnnData, an annotated data structure designed for the shape of single-cell experiments, and it scales to millions of cells through sparse matrices and out-of-core support.
The wider scverse ecosystem is the real argument for it: scvi-tools for probabilistic models and integration, muon for multimodal data, squidpy for spatial transcriptomics, and a growing set of packages that share the same data structures. Analyses compose rather than requiring conversion at each step.
Why it matters
Single-cell datasets are now routinely too large for tools that assume dense matrices in memory, and the analysis stack has to sit next to the machine-learning stack. Scanpy is written where that work happens — in Python, alongside PyTorch, scikit-learn and the rest — which is why methods development has increasingly landed here first.
Strengths
- Free, open source, and the de facto Python standard.
- Scales to very large datasets with sparse and out-of-core handling.
- AnnData interoperates across the entire scverse ecosystem.
- Sits natively alongside the Python machine-learning stack.
- Excellent documentation and tutorials.
- Rapid uptake of new methods from the community.
Limitations
It assumes real Python competence — this is a library, not an application, and there is no interface to fall back on. Some statistical methods, particularly for differential expression, are better developed in the R ecosystem, and Bioconductor still holds an advantage in certain bulk and specialised analyses. Defaults are reasonable but not universally correct, and clustering resolution in particular rewards understanding over acceptance. The pace of ecosystem change means tutorials date quickly.
Verdict
If your lab works in Python, this is the single-cell stack — start with Scanpy, adopt scverse packages as needs grow. If your lab works in R, use Seurat and do not fight the language. Either is a defensible choice; using neither is not.
