scRNA-seq Clustering
分享是一种态度
回顾
单细胞RNA-seq分析介绍
单细胞RNA-seq的设计和方法
从原始数据到计数矩阵
差异分析前的准备工作
scRNA-seq——读入数据详解
scRNA-seq——质量控制
为什么需要Normalization和PCA分析
scRNA-seq聚类分析(一)
scRNA-seq聚类分析(二)
学习目标:
利用多种方法评估用于聚类的PC选择 基于重要PC执行单细胞聚类
Single-cell RNA-seq clustering analysis
现在我们已经有了整合的高质量的细胞,我们想知道我们的细胞群体中存在的不同细胞类型。
目标
生成特定于细胞类型的簇, 并使用已知的细胞类型标记基因来确定簇的身份。 确定分群是否代表真实的细胞类型或由于生物或技术差异而形成的群集 ,例如处于细胞周期S期的细胞群集、特定批次的群集或高线粒体含量的细胞。
挑战
识别可能由于无意义的生物或技术差异而导致的 质量较差的群集 识别每个分群的 细胞类型 保持耐心,因为这可能是聚类和标记识别之间高度迭代的过程(有时甚至回到QC过滤)
建议
在执行聚类之前,要很好地了解您对要呈现的细胞类型的期望。了解你所期望的是低复杂性的细胞类型还是高线粒体含量的细胞类型,以及这些细胞是否正在分化 如果您有多种情况,执行整合以对齐细胞通常很有帮助 如果需要并适合于实验,可以将UMI数量(默认情况下使用sctransfer)、线粒体内容和细胞周期 Regress out ,以避免进行聚类。 确定要删除的任何垃圾群集或要重新QC过滤的群集。垃圾群集可能是包含高线粒体含量和低UMIs/基因的那些。如果由许多细胞组成,那么重新回到QC过滤掉,然后重整合/分群可能会很有帮助 如果未将所有细胞类型检测为单独的群集,请尝试更改用于分群的分辨率或PC数量
基于top-PCs(metagenes)的细胞分群
识别重要的PCs
为了克服scRNA-seq数据中任何单个基因表达中广泛的技术噪音,Seurat根据细胞从整合的可变性最高的基因的表达中得出的PCA分数将细胞分配到不同的簇,每个PC实质上代表一个结合了相关基因集信息的“metagene”。因此,确定要在分群步骤中包括多少PC对于确保我们捕获数据集中存在的大多数变异或细胞类型是很重要的。
在决定下游分群分析要包括哪些PC之前,先探索下这些PC非常有用。
(a) 探索PC的一种方法是使用热图来可视化选定PC的高可变基因,并根据PCA得分对基因和细胞进行排序。这里的想法是观察PC,并确定驱动它们的基因是否对区分不同类型的细胞有意义。
cells
参数指定用于绘图的PCA得分负向最低或正向最高的细胞数量。我们的想法是,我们正在寻找一个PC,它的热图开始看起来更“模糊”,也就是说,基因组之间的区别不是那么明显。
# Explore heatmap of PCs
DimHeatmap(seurat_integrated,
dims = 1:9,
cells = 500,
balanced = TRUE)
# Printing out the most variable genes driving PCs
print(x = seurat_integrated[["pca"]],
dims = 1:10,
nfeatures = 5)
(b) elbow plot 是确定使用多少个PC进行分群的另一种有用的方法,这样我们就可以捕获数据中的大部分变化。elbow plot 直观地显示了每个PC的标准偏差,我们要找的就是标准偏差开始趋于平稳的位置。本质上,elbow 出现的位置通常是识别大部分变化的阈值。但是,这种方法可能相当主观。
让我们使用排名前40位的PC绘制一张elbow plot:
# Plot the elbow plot
ElbowPlot(object = seurat_integrated,
ndims = 40)
Elbow plot: quantitative approach
主成分只贡献标准偏差的5%,而主成分累计贡献标准偏差的90%的点 连续PC之间的变化百分比变化小于0.1%的点
我们将从计算第一个度量开始:
# Determine percent of variation associated with each PC
pct <- seurat_integrated[["pca"]]@stdev / sum(seurat_integrated[["pca"]]@stdev) * 100
# Calculate cumulative percents for each PC
cumu <- cumsum(pct)
# Determine which PC exhibits cumulative percent greater than 90% and % variation associated with the PC as less than 5
co1 <- which(cumu > 90 & pct < 5)[1]
co1
第一个度量返回PC42作为符合这些要求的PC。让我们检查第二个度量,它标识了连续PC之间变化百分比小于0.1%的PC:
# Determine the difference between variation of PC and subsequent PC
co2 <- sort(which((pct[1:length(pct) - 1] - pct[2:length(pct)]) > 0.1), decreasing = T)[1] + 1
# last point where change of % of variation is more than 0.1%.
co2
第二个度量返回PC14。通常,我们会选择这两个指标中最小的一个,因为PC覆盖了数据中的大部分变化。
# Minimum of the two calculation
pcs <- min(co1, co2)
pcs
基于这些指标,对于Seurat中的细胞分群,我们将使用前14个PC来生成群集。我们可以再次绘制elbow plot,并覆盖使用我们的指标确定的信息:
# Create a dataframe with values
plot_df <- data.frame(pct = pct,
cumu = cumu,
rank = 1:length(pct))
# Elbow plot to visualize
ggplot(plot_df, aes(cumu, pct, label = rank, color = rank > pcs)) +
geom_text() +
geom_vline(xintercept = 90, color = "grey") +
geom_hline(yintercept = min(pct[pct > 5]), color = "grey") +
theme_bw()
UPDATE THIS IMAGE!!
虽然上述两种方法与Seurat的旧方法一起被更多地用于归一化和鉴定可变基因,但它们不再像以前那样重要。这是因为SCTransform方法比旧方法更准确。
为什么选择PC对于旧的方法更重要?
旧的方法在一些较高的PC中加入了一些技术差异来源,因此PC的选择更为重要。SCTransform更好地估计了差异,并且在较高的PC中不经常包括这些技术差异来源。
从理论上讲,使用SCTransform时,我们选择的PC越多,在执行分群时考虑的差异就越大,但执行分群所需的时间要花费更多。因此,对于此分析,我们将使用前40个PC来生成群集。
未完待续......
注:以上内容来自哈佛大学生物信息中心(HBC)_的教学团队的生物信息学培训课程。原文链接:https://hbctraining.github.io/scRNA-seq/schedule/ 点击 “阅读原文” 可直达
如果你对单细胞转录组研究感兴趣,但又不知道如何入门,也许你可以关注一下下面的课程
生信爆款入门-第7期(线上直播4周,马拉松式陪伴,带你入门)你的生物信息入门课
数据挖掘学习班第5期(线上直播3周,马拉松式陪伴,带你入门) 医学生/医生首选技能提高课
生信技能树的2019年终总结 你的生物信息成长宝藏
看完记得顺手点个“在看”哦!
长按扫码可关注