Integrate single-cell RNA-seq data using various integration methods.
Usage
Integration_SCP(
srtMerge = NULL,
batch,
append = TRUE,
srtList = NULL,
assay = NULL,
integration_method = "Uncorrected",
do_normalization = NULL,
normalization_method = "LogNormalize",
do_HVF_finding = TRUE,
HVF_source = "separate",
HVF_method = "vst",
nHVF = 2000,
HVF_min_intersection = 1,
HVF = NULL,
do_scaling = TRUE,
vars_to_regress = NULL,
regression_model = "linear",
scale_within_batch = FALSE,
linear_reduction = "pca",
linear_reduction_dims = 50,
linear_reduction_dims_use = NULL,
linear_reduction_params = list(),
force_linear_reduction = FALSE,
nonlinear_reduction = "umap",
nonlinear_reduction_dims = c(2, 3),
nonlinear_reduction_params = list(),
force_nonlinear_reduction = TRUE,
neighbor_metric = "euclidean",
neighbor_k = 20L,
cluster_algorithm = "louvain",
cluster_resolution = 0.6,
seed = 11,
...
)Arguments
- srtMerge
A merged Seurat object that includes the batch information.
- batch
A character string specifying the batch variable name.
- append
Logical, if TRUE, the integrated data will be appended to the original Seurat object (srtMerge).
- srtList
A list of Seurat objects to be checked and preprocessed.
- assay
The name of the assay to be used for downstream analysis.
- integration_method
A character string specifying the integration method to use. Supported methods are:
"Uncorrected","Seurat","scVI","MNN","fastMNN","Harmony","Scanorama","BBKNN","CSS","LIGER","Conos","ComBat". Default is"Uncorrected".- do_normalization
A logical value indicating whether data normalization should be performed.
- normalization_method
The normalization method to be used. Possible values are "LogNormalize", "SCT", and "TFIDF". Default is "LogNormalize".
- do_HVF_finding
A logical value indicating whether highly variable feature (HVF) finding should be performed. Default is TRUE.
- HVF_source
The source of highly variable features. Possible values are "global" and "separate". Default is "separate".
- HVF_method
The method for selecting highly variable features. Default is "vst".
- nHVF
The number of highly variable features to select. Default is 2000.
- HVF_min_intersection
The feature needs to be present in batches for a minimum number of times in order to be considered as highly variable. The default value is 1.
- HVF
A vector of highly variable features. Default is NULL.
- do_scaling
A logical value indicating whether to perform scaling. If TRUE, the function will force to scale the data using the ScaleData function.
- vars_to_regress
A vector of variable names to include as additional regression variables. Default is NULL.
- regression_model
The regression model to use for scaling. Options are "linear", "poisson", or "negativebinomial" (default is "linear").
- scale_within_batch
Whether to scale data within each batch. Only valid when the
integration_methodis one of"Uncorrected","Seurat","MNN","Harmony","BBKNN","CSS","ComBat".- linear_reduction
The linear dimensionality reduction method to use. Options are "pca", "svd", "ica", "nmf", "mds", or "glmpca" (default is "pca").
- linear_reduction_dims
The number of dimensions to keep after linear dimensionality reduction (default is 50).
- linear_reduction_dims_use
The dimensions to use for downstream analysis. If NULL, all dimensions will be used.
- linear_reduction_params
A list of parameters to pass to the linear dimensionality reduction method.
- force_linear_reduction
A logical value indicating whether to force linear dimensionality reduction even if the specified reduction is already present in the Seurat object.
- nonlinear_reduction
The nonlinear dimensionality reduction method to use. Options are "umap","umap-naive", "tsne", "dm", "phate", "pacmap", "trimap", "largevis", or "fr" (default is "umap").
- nonlinear_reduction_dims
The number of dimensions to keep after nonlinear dimensionality reduction. If a vector is provided, different numbers of dimensions can be specified for each method (default is c(2, 3)).
- nonlinear_reduction_params
A list of parameters to pass to the nonlinear dimensionality reduction method.
- force_nonlinear_reduction
A logical value indicating whether to force nonlinear dimensionality reduction even if the specified reduction is already present in the Seurat object.
- neighbor_metric
The distance metric to use for finding neighbors. Options are "euclidean", "cosine", "manhattan", or "hamming" (default is "euclidean").
- neighbor_k
The number of nearest neighbors to use for finding neighbors (default is 20).
- cluster_algorithm
The clustering algorithm to use. Options are "louvain", "slm", or "leiden" (default is "louvain").
- cluster_resolution
The resolution parameter to use for clustering. Larger values result in fewer clusters (default is 0.6).
- seed
An integer specifying the random seed for reproducibility. Default is 11.
- ...
Additional arguments to be passed to the integration method function.
Examples
data("panc8_sub")
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Uncorrected"
)
#> [2025-09-08 16:13:14.567777] Start Uncorrected_integrate
#> Error in invoke(.fn = paste0(integration_method, "_integrate"), .args = args[names(args) %in% formalArgs(paste0(integration_method, "_integrate"))]): could not find function "invoke"
CellDimPlot(panc8_sub, group.by = c("tech", "celltype"))
#> Error in DefaultReduction(srt): Unable to find any reductions.
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Uncorrected",
HVF_min_intersection = 5
)
#> [2025-09-08 16:13:14.569457] Start Uncorrected_integrate
#> Error in invoke(.fn = paste0(integration_method, "_integrate"), .args = args[names(args) %in% formalArgs(paste0(integration_method, "_integrate"))]): could not find function "invoke"
CellDimPlot(panc8_sub, group.by = c("tech", "celltype"))
#> Error in DefaultReduction(srt): Unable to find any reductions.
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Uncorrected",
HVF_min_intersection = 5, scale_within_batch = TRUE
)
#> [2025-09-08 16:13:14.570638] Start Uncorrected_integrate
#> Error in invoke(.fn = paste0(integration_method, "_integrate"), .args = args[names(args) %in% formalArgs(paste0(integration_method, "_integrate"))]): could not find function "invoke"
CellDimPlot(panc8_sub, group.by = c("tech", "celltype"))
#> Error in DefaultReduction(srt): Unable to find any reductions.
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Seurat"
)
#> [2025-09-08 16:13:14.571768] Start Seurat_integrate
#> Error in invoke(.fn = paste0(integration_method, "_integrate"), .args = args[names(args) %in% formalArgs(paste0(integration_method, "_integrate"))]): could not find function "invoke"
CellDimPlot(panc8_sub, group.by = c("tech", "celltype"))
#> Error in DefaultReduction(srt): Unable to find any reductions.
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Seurat",
FindIntegrationAnchors_params = list(reduction = "rpca")
)
#> [2025-09-08 16:13:14.572901] Start Seurat_integrate
#> Error in invoke(.fn = paste0(integration_method, "_integrate"), .args = args[names(args) %in% formalArgs(paste0(integration_method, "_integrate"))]): could not find function "invoke"
CellDimPlot(panc8_sub, group.by = c("tech", "celltype"))
#> Error in DefaultReduction(srt): Unable to find any reductions.
if (FALSE) { # \dontrun{
integration_methods <- c(
"Uncorrected", "Seurat", "scVI", "MNN", "fastMNN", "Harmony",
"Scanorama", "BBKNN", "CSS", "LIGER", "Conos", "ComBat"
)
for (method in integration_methods) {
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = method,
linear_reduction_dims_use = 1:50,
nonlinear_reduction = "umap"
)
print(CellDimPlot(panc8_sub,
group.by = c("tech", "celltype"),
reduction = paste0(method, "UMAP2D"),
xlab = "", ylab = "", title = method,
legend.position = "none", theme_use = "theme_blank"
))
}
nonlinear_reductions <- c("umap", "tsne", "dm", "phate", "pacmap", "trimap", "largevis", "fr")
panc8_sub <- Integration_SCP(
srtMerge = panc8_sub, batch = "tech",
integration_method = "Seurat",
linear_reduction_dims_use = 1:50,
nonlinear_reduction = nonlinear_reductions
)
for (nr in nonlinear_reductions) {
print(CellDimPlot(panc8_sub,
group.by = c("tech", "celltype"),
reduction = paste0("Seurat", nr, "2D"),
xlab = "", ylab = "", title = nr,
legend.position = "none", theme_use = "theme_blank"
))
}
} # }