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