前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Seurat4.0系列教程:大数据集整合的方法

Seurat4.0系列教程:大数据集整合的方法

作者头像
生信技能树jimmy
发布2022-01-10 08:56:06
1.3K0
发布2022-01-10 08:56:06
举报
文章被收录于专栏:单细胞天地

对于非常大的数据集,标准工作流程可能计算成本高得令人望而却步。在此工作流程中,我们可采用如下两种方法提高效率和运行时间:

  1. Reciprocal PCA(RPCA)
  2. 基于参考的整合

主要的效率改进是使用了FindIntegrationAnchors()。首先,我们使用 Reciprocal PCA(RPCA) 而不是 CCA 来寻找锚点。在使用Reciprocal PCA 确定任意两个数据集之间的锚点时,我们将每个数据集投影到其他 PCA 空间中,并根据相同的邻近要求寻找锚点。所有下游整合步骤保持不变,我们能够"更正"(或协调)数据集。

此外,我们使用基于参考的整合。在标准工作流中,我们识别所有数据集之间的锚点。虽然这给数据集在下游整合中同等的权重,但它也可能使计算变得密集。例如,在整合10 个不同的数据集时,我们需要执行 45 次不同的对比。作为替代方案,我们在此介绍了指定一个或多个数据集作为整合分析的"参考",其余数据集被指定为"查询"数据集。在此工作流中,我们不会在成对查询数据集之间识别锚点,从而减少比较次数。例如,在整合10 个数据集将其中指定的 1 个数据集集成为参考时,我们仅执行 9 次比较。基于参考的整合可应用于log标准化或 SCTransform标准化的数据集。

可选的工作流程包括以下步骤:

  • 创建一个seurat对象用来整合
  • 针对每个数据集分别执行标准化、基因选择和归一化
  • 在列表中的每个对象上运行 PCA
  • 整合数据集,并进行联合分析

总的来说,我们观察到标准工作流程和此处演示的工作流程之间惊人的相似结果,但计算时间和内存显著减少。如果数据集存在高度差异(例如,跨模式映射或跨物种映射),则只能使用一小部分基因来进行整合,您可以使用 CCA 得到更好的结果。

例如,我们将使用来自人类细胞图集的"免疫细胞图谱"数据,这些数据可以在这里[1]找到。

代码语言:javascript
复制
library(Seurat)

获取数据后,我们首先执行标准化和变异基因选择。

代码语言:javascript
复制
bm280k.data <- Read10X_h5("../data/ica_bone_marrow_h5.h5")
bm280k <- CreateSeuratObject(counts = bm280k.data, min.cells = 100, min.features = 500)
bm280k.list <- SplitObject(bm280k, split.by = "orig.ident")
bm280k.list <- lapply(X = bm280k.list, FUN = function(x) {
    x <- NormalizeData(x, verbose = FALSE)
    x <- FindVariableFeatures(x, verbose = FALSE)
})

接下来,选择基因用来后续整合,并在列表中的每个对象上运行 PCA。

代码语言:javascript
复制
features <- SelectIntegrationFeatures(object.list = bm280k.list)
bm280k.list <- lapply(X = bm280k.list, FUN = function(x) {
    x <- ScaleData(x, features = features, verbose = FALSE)
    x <- RunPCA(x, features = features, verbose = FALSE)
})

由于此数据集包含男性和女性,我们将选择一男一女(BM1 和 BM2)用于基于参考的工作流程。通过检查XIST基因的表达来确定性别。

代码语言:javascript
复制
anchors <- FindIntegrationAnchors(object.list = bm280k.list, reference = c(1, 2), reduction = "rpca", 
    dims = 1:50)
bm280k.integrated <- IntegrateData(anchorset = anchors, dims = 1:50)
代码语言:javascript
复制
bm280k.integrated <- ScaleData(bm280k.integrated, verbose = FALSE)
bm280k.integrated <- RunPCA(bm280k.integrated, verbose = FALSE)
bm280k.integrated <- RunUMAP(bm280k.integrated, dims = 1:50)
代码语言:javascript
复制
DimPlot(bm280k.integrated, group.by = "orig.ident")

参考资料

[1]

在这里: https://data.humancellatlas.org/explore/projects?filter=%5B%7B%22facetName%22:%22organ%22,%22terms%22:%5B%22immune%20system%22%5D%7D%5D&catalog=dcp1

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档