This function takes in a list of objects that have been normalized with the SCTransform method and performs the following steps:

  • If anchor.features is a numeric value, calls SelectIntegrationFeatures to determine the features to use in the downstream integration procedure.

  • Ensures that the sctransform residuals for the features specified to anchor.features are present in each object in the list. This is necessary because the default behavior of SCTransform is to only store the residuals for the features determined to be variable. Residuals are recomputed for missing features using the stored model parameters via the GetResidual function.

  • Subsets the slot to only contain the residuals for anchor.features for efficiency in downstream processing.

  assay = NULL,
  anchor.features = 2000,
  sct.clip.range = NULL,
  verbose = TRUE



A list of Seurat objects to prepare for integration


The name of the Assay to use for integration. This can be a single name if all the assays to be integrated have the same name, or a character vector containing the name of each Assay in each object to be integrated. The specified assays must have been normalized using SCTransform. If NULL (default), the current default assay for each object is used.


Can be either:

  • A numeric value. This will call SelectIntegrationFeatures to select the provided number of features to be used in anchor finding

  • A vector of features to be used as input to the anchor finding process


Numeric of length two specifying the min and max values the Pearson residual will be clipped to


Display output/messages


A list of Seurat objects with the appropriate slots containing only the required anchor.features.


if (FALSE) {
# to install the SeuratData package see

# panc8 is a merged Seurat object containing 8 separate pancreas datasets
# split the object by dataset and take the first 2 to integrate
pancreas.list <- SplitObject(panc8, = "tech")[1:2]

# perform SCTransform normalization
pancreas.list <- lapply(X = pancreas.list, FUN = SCTransform)

# select integration features and prep step
features <- SelectIntegrationFeatures(pancreas.list)
pancreas.list <- PrepSCTIntegration(
  anchor.features = features

# downstream integration steps
anchors <- FindIntegrationAnchors(
  normalization.method = "SCT",
  anchor.features = features
pancreas.integrated <- IntegrateData(anchors, normalization.method = "SCT")