Variance Stabilizing Transformations for Single Cell UMI Data

A normalization method for single-cell UMI count data using a variance stabilizing transformation. The transformation is based on a negative binomial regression model with regularized parameters. As part of the same regression framework, this package also provides functions for batch correction, and data correction. See Hafemeister and Satija 2019 for more details.

R package for normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression

This packaged was developed by Christoph Hafemeister in Rahul Satija's lab at the New York Genome Center. Core functionality of this package has been integrated into Seurat, an R package designed for QC, analysis, and exploration of single cell RNA-seq data.

Quick start

devtools::install_github(repo = 'ChristophH/sctransform')
normalized_data <- sctransform::vst(umi_count_matrix)$y


For usage examples see vignettes in inst/doc or use the built-in help after installation

Available vignettes:
Variance stabilizing transformation
Using sctransform in Seurat


Hafemeister, C. & Satija, R. Normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression. bioRxiv 576827 (2019). doi:10.1101/576827

An early version of this work was used in the paper Developmental diversification of cortical inhibitory interneurons, Nature 555, 2018.


Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.


0.3.2 by Christoph Hafemeister, a year ago

Report a bug at

Browse source code at

Authors: Christoph Hafemeister [aut, cre]

Documentation:   PDF Manual  

GPL-3 | file LICENSE license

Imports MASS, Matrix, methods, future.apply, future, ggplot2, reshape2, gridExtra, matrixStats

Suggests irlba, testthat, knitr

Enhances glmGamPoi

Linking to RcppArmadillo, Rcpp

System requirements: C++11

Imported by Seurat.

Suggested by VAM.

See at CRAN