RunMultiCCA
和基于锚点的整合方法(FindIntegrationAnchors
+ IntegrateData
)在原理和实现上有显著区别。这两种方法都用于跨样本或跨批次的单细胞RNA-seq数据整合,但它们的算法基础、适用场景和具体步骤有所不同。
1. RunMultiCCA
(典型相关分析,CCA)
RunMultiCCA
是 Seurat v2 中用于数据整合的功能,基于 典型相关分析(Canonical Correlation Analysis, CCA)。CCA 是一种经典的多变量分析方法,旨在找到两组或多组数据之间的线性组合,使这些组合之间的相关性最大化。
原理
-
CCA 通过寻找不同样本之间的典型相关向量(Canonical Correlation Vectors, CCV),将不同样本映射到一个共享的低维空间。
-
这些向量捕捉了不同样本之间的共同变异,从而实现数据的整合。
适用场景
-
适用于样本数量较少(通常少于10个)的情况。
-
对于样本数量较多或批次效应复杂的情况,CCA 的计算成本较高,且可能难以找到足够的典型相关向量。
代码示例
r复制
# 按样本拆分数据
seurat_list <- SplitObject(seurat_obj, split.by = "orig.ident")
# 对每个样本单独进行标准化和PCA降维
seurat_list <- lapply(seurat_list, function(x) {
x <- NormalizeData(x)
x <- FindVariableFeatures(x)
x <- ScaleData(x)
x <- RunPCA(x, features = VariableFeatures(object = x))
return(x)
})
# 运行CCA
seurat_integrated <- RunMultiCCA(seurat_list, reduction.name = "cca", reduction.key = "CCA_", dims = 1:20)
2. 基于锚点的整合(FindIntegrationAnchors
+ IntegrateData
)
基于锚点的整合是 Seurat v3 中引入的一种更现代的方法,适用于大规模数据集的整合。它通过识别不同样本之间的“锚点”(即相似细胞之间的对应关系)来校正批次效应。
原理
-
选择可变基因:使用
SelectIntegrationFeatures
选择一组在所有样本中共同可变的基因。 -
计算锚点:通过
FindIntegrationAnchors
在这些可变基因上计算锚点,这些锚点表示不同样本之间相似细胞的对应关系。 -
整合数据:使用
IntegrateData
根据锚点对每个样本的基因表达矩阵进行校正,并将它们合并为一个统一的Seurat对象。
适用场景
-
适用于样本数量较多(如几十个甚至上百个样本)的情况。
-
对于大规模数据集,基于锚点的整合通常比 CCA 更高效、更准确。
代码示例
r复制
# 按样本拆分数据
seurat_list <- SplitObject(seurat_obj, split.by = "orig.ident")
# 对每个样本单独进行标准化和PCA降维
seurat_list <- lapply(seurat_list, function(x) {
x <- NormalizeData(x)
x <- FindVariableFeatures(x)
x <- ScaleData(x)
x <- RunPCA(x, features = VariableFeatures(object = x))
return(x)
})
# 选择可变基因
features <- SelectIntegrationFeatures(object.list = seurat_list, nfeatures = 2000)
# 计算锚点
anchors <- FindIntegrationAnchors(object.list = seurat_list, anchor.features = features, dims = 1:20)
# 整合数据
seurat_integrated <- IntegrateData(anchorset = anchors, dims = 1:20)
两者的区别
-
算法基础
-
RunMultiCCA
:基于典型相关分析(CCA),通过最大化不同样本之间的相关性来整合数据。 -
基于锚点的整合:通过识别不同样本之间的相似细胞(锚点)来校正批次效应。
-
-
适用场景
-
RunMultiCCA
:适用于样本数量较少的情况,计算成本较低。 -
基于锚点的整合:适用于样本数量较多或批次效应复杂的情况,更高效且更准确。
-
-
输出结果
-
RunMultiCCA
:生成的是一个低维的CCA空间,后续分析通常基于这个低维空间。 -
基于锚点的整合:生成一个校正后的基因表达矩阵,可以直接用于后续的PCA、聚类和降维分析。
-
-
版本支持
-
RunMultiCCA
:主要在 Seurat v2 中使用。 -
基于锚点的整合:在 Seurat v3 中引入,是目前推荐的整合方法。
-
总结
-
如果您的样本数量较少(如少于10个),可以使用
RunMultiCCA
。 -
如果您的样本数量较多或批次效应复杂,建议使用基于锚点的整合方法(
FindIntegrationAnchors
+IntegrateData
)。 -
基于锚点的整合是目前更推荐的方法,因为它在大规模数据集上表现更好,且更高效。