Given a merged object with multiple SCT models, this function uses minimum of the median UMI (calculated using the raw UMI counts) of individual objects to reverse the individual SCT regression model using minimum of median UMI as the sequencing depth covariate. The counts slot of the SCT assay is replaced with recorrected counts and the data slot is replaced with log1p of recorrected counts.

PrepSCTFindMarkers(object, assay = "SCT", verbose = TRUE)

Arguments

object

Seurat object with SCT assays

assay

Assay name where for SCT objects are stored; Default is 'SCT'

verbose

Print messages and progress

Value

Returns a Seurat object with recorrected counts and data in the SCT assay.

Progress Updates with progressr

This function uses progressr to render status updates and progress bars. To enable progress updates, wrap the function call in with_progress or run handlers(global = TRUE) before running this function. For more details about progressr, please read vignette("progressr-intro")

Parallelization with future

This function uses future to enable parallelization. Parallelization strategies can be set using plan. Common plans include “sequential” for non-parallelized processing or “multisession” for parallel evaluation using multiple R sessions; for other plans, see the “Implemented evaluation strategies” section of ?future::plan. For a more thorough introduction to future, see vignette("future-1-overview")

Examples

data("pbmc_small")
pbmc_small1 <- SCTransform(object = pbmc_small, variable.features.n = 20, vst.flavor="v1")
#> Running SCTransform on assay: RNA
#> 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
#> Second step: Get residuals using fitted parameters for 220 genes
#> Computing corrected count matrix for 220 genes
#> Calculating gene attributes
#> Wall clock passed: Time difference of 1.345158 secs
#> Determine variable features
#> Centering data matrix
#> Place corrected count matrix in counts slot
#> Set default assay to SCT
pbmc_small2 <- SCTransform(object = pbmc_small, variable.features.n = 20, vst.flavor="v1")
#> Running SCTransform on assay: RNA
#> 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
#> Second step: Get residuals using fitted parameters for 220 genes
#> Computing corrected count matrix for 220 genes
#> Calculating gene attributes
#> Wall clock passed: Time difference of 1.173744 secs
#> Determine variable features
#> Centering data matrix
#> Place corrected count matrix in counts slot
#> Set default assay to SCT
pbmc_merged <- merge(x = pbmc_small1, y = pbmc_small2)
#> Warning: Some cell names are duplicated across objects provided. Renaming to enforce unique cell names.
pbmc_merged <- PrepSCTFindMarkers(object = pbmc_merged)
#> Found 2 SCT models. Recorrecting SCT counts using minimum median counts: 180
#> 
  |                                                  | 0 % ~calculating  
  |+++++++++++++++++++++++++                         | 50% ~01s          
  |++++++++++++++++++++++++++++++++++++++++++++++++++| 100% elapsed=02s  
markers <- FindMarkers(
  object = pbmc_merged,
  ident.1 = "0",
  ident.2 = "1",
  assay = "SCT"
)
pbmc_subset <- subset(pbmc_merged, idents = c("0", "1"))
markers_subset <- FindMarkers(
  object = pbmc_subset,
  ident.1 = "0",
  ident.2 = "1",
  assay = "SCT",
  recorrect_umi = FALSE
)