SCRNA-seq聚类分析(二)
分享是一种态度
回顾
单细胞RNA-seq分析介绍
单细胞RNA-seq的设计和方法
从原始数据到计数矩阵
差异分析前的准备工作
scRNA-seq——读入数据详解
scRNA-seq——质量控制
为什么需要Normalization和PCA分析
scRNA-seq聚类分析(一)
Integrate samples using shared highly variable genes
如果细胞按样本、条件、数据集或模式进行聚类,此步骤可以极大地改进您的聚类和下游分析。如果不确定在不同条件(例如,肿瘤和对照样本)之间期望什么簇或期望某些不同的细胞类型,则首先单独条件执行可能会有帮助,然后再将它们一起研究,以查看在两种条件下是否存在针对细胞类型的条件特定簇。通常,当根据多个条件对细胞进行聚类时,可能会存在特定于条件的聚类,而整合样本可以帮助确保相同的细胞类型聚集在一起。
为了整合,我们将使用SCTransform鉴定出的每种情况下共同的高度可变的基因,然后,我们将“整合”或“协调”这些条件,以覆盖不同群体之间相似或具有“共同生物学特征”的细胞。这些群体可以代表:
不同条件(e.g. control and stimulated)
不同的数据集(例如,在同一样本上使用不同的文库制备方法生成的数据集的scRNA-seq)
不同的模式(例如scRNA-seq和scATAC-seq)
整合是一种强大的方法,它利用这些变化最大的共享源来识别条件或数据集之间的共享亚群[Stuart and Bulter et al. (2018)]。整合的目标是确保一个条件/数据集的细胞类型与其他条件/数据集的相同细胞类型对齐(例如,对照组巨噬细胞与实验刺激组的巨噬细胞对齐)。
具体而言,这种整合方法期望整个群体中至少一个子细胞的子集之间具有“对应”或共享的生物学状态。下图概述了集成分析中的步骤:
具体步骤如下:
执行典型相关分析(CCA)
CCA确定条件/组之间的共享变异源。它是主成分分析的一种形式,因为它可以识别数据中最大的变异源,但前提条件是,条件/组之间有shared or conserved的情况(使用每个样本的3000个变异最大的基因)。
此步骤使用最大的共同变异源大致对齐细胞
注:使用共同的高可变基因是因为它们最有可能代表那些区分不同细胞类型的基因。
跨数据集中识别标识或 mutual nearest neighbors(MNNs)(有时会识别出不正确的标识):
对于一个条件下的每个细胞,MNNS可以认为是"最好的朋友":
根据基因表达值来识别的细胞在其他情况下最接近的邻居--它是“最好的伙伴”。
执行reciprical分析,如果两个细胞在两个方向上都是“最好的伙伴”,则这些细胞将被标记为锚点,以便将两个数据集“锚定”在一起。
“MNN对中细胞之间表达值的差异提供了对批量效应的估计,通过对许多这样的对进行平均,可以更加精确地估计批量效应。获得校正向量,并将其应用于表达值以执行批量校正。“ [Stuart and Bulter et al. (2018)]
过滤标识以删除不正确的标识:
通过标识对在其本地邻域中的重叠来评估标识对之间的相似性(错误的锚点会有较低的得分)-相邻的细胞是否有彼此相邻的“最好的伙伴”?
整合条件/数据集:
使用标识和相应的分数来转换细胞表达值,从而可以整合不同的条件/数据集(不同的样本、条件、数据集、模态)数据。
注意:每个细胞的转换使用每个标识的两个细胞在数据集的标识之间的加权平均值。权重由细胞相似性分数(细胞与k个最近标识之间的距离)和标识分数确定,因此同一邻域中的细胞应该具有相似的校正值。
如果细胞类型存在于一个数据集中,但不存在于另一个数据集中,则这些细胞仍将显示为单独的样本特定簇。
现在,使用我们的SCTransform对象作为输入,让我们执行跨条件的整合。
首先,我们需要指定要使用SCTransform确定的所有3000个变异最大的基因进行整合。默认情况下,此功能仅选择前2000个基因。
1# Select the most variable features to use for integration
2integ_features <- SelectIntegrationFeatures(object.list = split_seurat,
3 nfeatures = 3000)
然后,我们需要为整合准备SCTransform对象。
1# Prepare the SCT list object for integration
2split_seurat <- PrepSCTIntegration(object.list = split_seurat,
3 anchor.features = integ_features)
现在,我们将执行CCA,find the best buddies or anchors and filter incorrect anchors。对于我们的数据集,这将最多需要15分钟来运行。另外,请注意,控制台中的进度条将保持在0%,但要知道它实际上正在运行。
1# Find best buddies - can take a while to run
2integ_anchors <- FindIntegrationAnchors(object.list = split_seurat,
3 normalization.method = "SCT",
4 anchor.features = integ_features)
最后,我们可以integrate across conditions。
1# Integrate across conditions
2seurat_integrated <- IntegrateData(anchorset = integ_anchors,
3 normalization.method = "SCT")
保存R对对象
1# Save integrated seurat object
2saveRDS(seurat_integrated, "results/integrated_seurat.rds")
UMAP可视化
整合后,我们可以使用PCA和Uniform Manifold Approximation and Projection(UMAP)等降维技术来可视化整合后的数据。虽然PCA将确定所有PC,但我们一次只能绘制两个。相反,UMAP将从任意数量的top PCs获取信息,以便在这个多维空间中排列细胞。它将在多维空间中获取这些距离,并尝试在二维中绘制它们。这样,细胞之间的距离代表表达上的相似性。
要生成这些可视化效果,我们需要首先运行PCA和UMAP方法。让我们从PCA开始。
1# Run PCA
2seurat_integrated <- RunPCA(object = seurat_integrated)
3
4# Plot PCA
5PCAPlot(seurat_integrated,
6 split.by = "sample")
通过PCA映射,我们可以看到PCA很好地覆盖了这两个条件。
现在,我们还可以使用UMAP进行可视化。让我们运行该方法和绘图。
1# Run UMAP
2seurat_integrated <- RunUMAP(seurat_integrated,
3 dims = 1:40,
4 reduction = "pca")
5
6# Plot UMAP
7DimPlot(seurat_integrated)
同样,我们看到使用这两种方法都能很好地对齐这两个条件。有时,如果我们在条件之间拆分绘图,则更容易看到所有单元格是否都很好地对齐,这可以通过向DimPlot()
函数添加Split.by
参数来实现:
1DimPlot(seurat_integrated,
2 split.by = "sample")
当我们与未整合的数据集进行比较时,很明显,此数据集受益于整合!
未完待续……
注:以上内容来自哈佛大学生物信息中心(HBC)_的教学团队的生物信息学培训课程。原文链接:https://hbctraining.github.io/scRNA-seq/schedule/ 点击 “阅读原文” 可直达
References
[1]
Stuart and Bulter et al. (2018): https://www.biorxiv.org/content/early/2018/11/02/460147
单细胞免疫组库数据分析||Seurat整合单细胞转录组与VDJ数据
如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程
生信爆款入门-全球听(买一得五)(第5期)(可能是最后一期) 你的生物信息入门课
(必看!)数据挖掘第3期(两天变三周,实力加量) 医学生/医生首选技能提高课
生信技能树的2019年终总结 你的生物信息成长宝藏
看完记得顺手点个“在看”哦!
长按扫码可关注