R package for normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression
This package 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.
devtools::install_github(repo = 'ChristophH/sctransform')
normalized_data <- sctransform::vst(umi_count_matrix)$y
(you can also install from CRAN:
For usage examples see vignettes in inst/doc or use the built-in help after installation
Error in is.nanwhen a batch variable is used. Fixed in the develop branch. (issue #88)
node stack overflowerror when Rfast package is loaded. The Rfast package does not play nicely with the future.apply package. Try to avoid loading the Rfast package. See discussions: https://github.com/RfastOfficial/Rfast/issues/5 https://github.com/ChristophH/sctransform/issues/108
To install from the develop branch run
Please use the issue tracker if you encounter a problem
For a detailed change log have a look at the file NEWS.md
This release improves the coefficient initialization in quasi poisson regression that sometimes led to errors. There are also some minor bug fixes and a new non-parametric differential expression test for sparse non-negative data (
diff_mean_test, this vignette gives some details).
This release fixes a performance regression when
sctransform::vst was called via
do.call, as is the case in the Seurat wrapper.
Additionally, model fitting is significantly faster now, because we use a fast Rcpp quasi poisson regression implementation (based on
Rfast package). This applies to methods
qpoisson method is new and uses the dispersion parameter from the quasi poisson regression directly to estimate
theta for the NB model. This can speed up the model fitting step considerably, while giving similar results to the other methods. This vignette compares the methods.
The latest version of
sctransform now supports the glmGamPoi package to speed up the model fitting step. You can see more about the different methods supported and how they compare in terms of results and speed in this new vignette.
Also note that default theta regularization is now based on overdispersion factor (
1 + m / theta where m is the geometric mean of the observed counts) not
log10(theta). The old behavior is still available via
theta_regularization parameter. You can see how this changes (or doesn't change) the results in this new vignette.
Hafemeister, C. & Satija, R. Normalization and variance stabilization of single-cell RNA-seq data using regularized negative binomial regression. Genome Biol 20, 296 (December 23, 2019). https://doi.org/10.1186/s13059-019-1874-1
An early version of this work was used in the paper Developmental diversification of cortical inhibitory interneurons, Nature 555, 2018.