Stars PyPI PyPIDownloads BiocondaDownloads Docs Build Status

Scanpy – Single-Cell Analysis in Python

Scanpy is a scalable toolkit for analyzing single-cell gene expression data built jointly with anndata. It includes preprocessing, visualization, clustering, trajectory inference and differential expression testing. The Python-based implementation efficiently deals with datasets of more than one million cells.


scVelo on the cover of Nature Biotechnology 2020-12-01

Scanpy’s counterpart for RNA velocity, scVelo, made it on the cover of Nature Biotechnology [tweet].

Scanpy selected among 20 papers for 20 years of Genome Biology 2020-08-01

Genome Biology: Celebrating 20 Years of Genome Biology selected the initial Scanpy paper for the year 2018 among 20 papers for 20 years [tweet].

COVID-19 datasets distributed as h5ad 2020-04-01

In a joint initiative, the Wellcome Sanger Institute, the Human Cell Atlas, and the CZI distribute datasets related to COVID-19 via anndata’s h5ad files: It wasn’t anticipated that the initial idea of sharing and backing an on-disk representation of AnnData would become so widely adopted. Curious? Read up more on the format.

Latest additions

Version 1.9

1.9.0 the future


Version 1.8

1.8.3 the future


Bug fixes



1.8.2 2021-11-3


  • Update conda installation instructions PR 1974 L Heumos

Bug fixes


  • Added PASTE (a tool to align and integrate spatial transcriptomics data) to scanpy ecosystem.

1.8.1 2021-07-07

Bug fixes

1.8.0 2021-06-28

Metrics module



  • Added Cubé to ecosystem page PR 1878 C Lambden

  • Added triku a feature selection method to the ecosystem page PR 1722 AM Ascensión

  • Added dorothea and progeny to the ecosystem page PR 1767 P Badia-i-Mompel


Bug fixes

  • Fix TypeError with recent versions of anndata PR 1047 P Angerer

  • Fix detection of whether IPython is running PR 1844 I Virshup

  • Fixed reproducibility of (added random_state) PR 1858 I Kucinski

  • Fixed errors and warnings from embedding plots with small numbers of categories after sns.set_palette was called PR 1886 I Virshup

  • Fixed handling of gene_symbols argument in a number of* functions PR 1529 F Ramirez I Virshup

  • Fixed handling of use_raw for when no .raw is present PR 1895 I Virshup

  • now works for raw=False PR 1669 M van den Beek

Development processes

  • Switched to flit for building and deploying the package, a simple tool with an easy to understand command line interface and metadata PR 1527 P Angerer

  • Use pre-commit for style checks PR 1684 PR 1848 L Heumos I Virshup