Get Started#

scvi-tools (single-cell variational inference tools) is a package for probabilistic modeling of single-cell omics data, built on top of PyTorch and AnnData. The package hosts implementations of several models that perform a wide range of single-cell data analysis tasks, as well as the building blocks to rapidly prototype new probabilistic models.

Basic installation#

scvi-tools can be installed with pip or conda:

pip install scvi-tools
conda install scvi-tools -c bioconda -c conda-forge

To leverage a GPU for inference, a version of PyTorch that supports your GPU will need to be installed separately.


  • Tutorials, API reference, and advanced installation guides are available in the docs.
  • For discussion of usage, checkout out our forum.
  • For immediate public chat with the developers, come talk to us on Gitter.
  • For a skeleton of implementation of a new model in scvi-tools, refer to our template repository
  • To report bugs, make an issue on GitHub.

Single-cell omics data analysis#

scvi-tools hosts implementations of many models, with a convenient interface to scanpy, Seurat and Bioconductor (refer to our tutorials to learn about our R support):


  • scVI for analysis of single-cell RNA-seq data, as well as its improved differential expression framework.
  • LDVAE for an interpretable linear factor model version of scVI.
  • scANVI for cell annotation of scRNA-seq data using semi-labeled examples.
  • CellAssign for cell annotation of scRNA-seq data using marker genes.
  • SOLO for detection of doublets.
  • scArches for transfer learning when learning cell embeddings in an online fashion (implemented for scVI, scANVI & totalVI)


  • totalVI for analysis of CITE-seq data.

Spatial transcriptomics#

  • Steroscope for deconvolution of spatial transcriptomics data.
  • gimVI for imputation of missing genes in spatial transcriptomics from scRNA-seq data.
  • DestVI for multi-resolution deconvolution of spatial transcriptomics data.


  • peakVI for analysis of single-cell ATAC sequencing profiles

Methods developer toolkit#

scvi-tools is a high-level probabilistic programming package especially developped for single-cell omics data. We hope it will empower method developers and help them focus on building fruitful models. To achieve this, we host black-box primitives for loading data from AnnData, black-box training procedures using PyTorch Lightning, and optionally provides automatic inference recipes based on Pyro. We currently support many optimization-based inference procedures including SVI, AEVB, MAP, MLE and EM. To learn more about the developer toolkit, please visit our tutorials. We also provide an example skeleton implementation of a basic scVI in PyTorch and Pyro as an independant package based off scvi-tools. If you wish to add an implementation of your algorithm in scvi-tools, please post a GitHub issue to reach out to us.


If you use scvi-tools in your research, please consider citing

author = {Gayoso, Adam and Lopez, Romain and Xing, Galen and Boyeau, Pierre and Wu, Katherine and Jayasuriya, Michael and Mehlman, Edouard and Langevin, Maxime and Liu, Yining and Samaran, Jules and Misrachi, Gabriel and Nazaret, Achille and Clivio, Oscar and Xu, Chenling and Ashuach, Tal and Lotfollahi, Mohammad and Svensson, Valentine and da Veiga Beltrame, Eduardo and Talavera-Lopez, Carlos and Pachter, Lior and Theis, Fabian J and Streets, Aaron and Jordan, Michael I and Regier, Jeffrey and Yosef, Nir},
title = {scvi-tools: a library for deep probabilistic analysis of single-cell omics data},
year = {2021},
doi = {10.1101/2021.04.28.441833},
publisher = {Cold Spring Harbor Laboratory},
URL = {},
eprint = {},
journal = {bioRxiv}