This function calls sctransform::vst. The sctransform package is available at https://github.com/ChristophH/sctransform. Use this function as an alternative to the NormalizeData, FindVariableFeatures, ScaleData workflow. Results are saved in a new assay (named SCT by default) with counts being (corrected) counts, data being log1p(counts), scale.data being pearson residuals; sctransform::vst intermediate results are saved in misc slot of new assay.

SCTransform(
  object,
  assay = "RNA",
  new.assay.name = "SCT",
  reference.SCT.model = NULL,
  do.correct.umi = TRUE,
  ncells = 5000,
  residual.features = NULL,
  variable.features.n = 3000,
  variable.features.rv.th = 1.3,
  vars.to.regress = NULL,
  do.scale = FALSE,
  do.center = TRUE,
  clip.range = c(-sqrt(x = ncol(x = object[[assay]])/30), sqrt(x = ncol(x =
    object[[assay]])/30)),
  conserve.memory = FALSE,
  return.only.var.genes = TRUE,
  seed.use = 1448145,
  verbose = TRUE,
  ...
)

Arguments

object

A seurat object

assay

Name of assay to pull the count data from; default is 'RNA'

new.assay.name

Name for the new assay containing the normalized data

reference.SCT.model

If not NULL, compute residuals for the object using the provided SCT model; supports only log_umi as the latent variable. If residual.features are not specified, compute for the top variable.features.n specified in the model which are also present in the object. If residual.features are specified, the variable features of the resulting SCT assay are set to the top variable.features.n in the model.

do.correct.umi

Place corrected UMI matrix in assay counts slot; default is TRUE

ncells

Number of subsampling cells used to build NB regression; default is 5000

residual.features

Genes to calculate residual features for; default is NULL (all genes). If specified, will be set to VariableFeatures of the returned object.

variable.features.n

Use this many features as variable features after ranking by residual variance; default is 3000. Only applied if residual.features is not set.

variable.features.rv.th

Instead of setting a fixed number of variable features, use this residual variance cutoff; this is only used when variable.features.n is set to NULL; default is 1.3. Only applied if residual.features is not set.

vars.to.regress

Variables to regress out in a second non-regularized linear regression. For example, percent.mito. Default is NULL

do.scale

Whether to scale residuals to have unit variance; default is FALSE

do.center

Whether to center residuals to have mean zero; default is TRUE

clip.range

Range to clip the residuals to; default is c(-sqrt(n/30), sqrt(n/30)), where n is the number of cells

conserve.memory

If set to TRUE the residual matrix for all genes is never created in full; useful for large data sets, but will take longer to run; this will also set return.only.var.genes to TRUE; default is FALSE

return.only.var.genes

If set to TRUE the scale.data matrices in output assay are subset to contain only the variable genes; default is TRUE

seed.use

Set a random seed. By default, sets the seed to 1448145. Setting NULL will not set a seed.

verbose

Whether to print messages and progress bars

...

Additional parameters passed to sctransform::vst

Value

Returns a Seurat object with a new assay (named SCT by default) with counts being (corrected) counts, data being log1p(counts), scale.data being pearson residuals; sctransform::vst intermediate results are saved in misc slot of the new assay.

See also

Examples

data("pbmc_small") SCTransform(object = pbmc_small)
#> Calculating cell attributes from input UMI matrix: log_umi
#> Variance stabilizing transformation of count matrix of size 220 by 80
#> Model formula is y ~ log_umi
#> Get Negative Binomial regression parameters per gene
#> Using 220 genes, 80 cells
#> | | | 0%
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: NaNs produced
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> Warning: iteration limit reached
#> | |======================================================================| 100%
#> Second step: Get residuals using fitted parameters for 220 genes
#> | | | 0% | |======================================================================| 100%
#> Computing corrected count matrix for 220 genes
#> | | | 0% | |======================================================================| 100%
#> Calculating gene attributes
#> Wall clock passed: Time difference of 0.3761241 secs
#> Determine variable features
#> Place corrected count matrix in counts slot
#> Centering data matrix
#> Set default assay to SCT
#> An object of class Seurat #> 450 features across 80 samples within 2 assays #> Active assay: SCT (220 features, 220 variable features) #> 1 other assay present: RNA #> 2 dimensional reductions calculated: pca, tsne