scRNA-seq Clustering quality control(二)
分享是一种态度
回顾
单细胞RNA-seq分析介绍 单细胞RNA-seq的设计和方法 从原始数据到计数矩阵 差异分析前的准备工作 scRNA-seq——读入数据详解 scRNA-seq——质量控制 为什么需要Normalization和PCA分析 scRNA-seq聚类分析(一) scRNA-seq聚类分析(二) scRNA-seq Clustering (一) scRNA-seq Clustering (二) scRNA-seq Clustering quality control(一)
探索已知的细胞类型标记
根据细胞的分群,我们可以通过寻找已知的标记来探索细胞类型的特性。图中显示带有标记的群集的UMAP图,后面跟着预期的不同细胞类型。
DimPlot(object = seurat_integrated,
reduction = "umap",
label = TRUE) + NoLegend()
通过来自Seurat的 FeaturePlot()
函数,可以使用存储在Seurat对象中的基因ID轻松地可视化少数几个基因。例如,如果我们对探索已知的免疫细胞标志物感兴趣,如:
Seurat的FeaturePlot()
函数使我们可以轻松地在UMAP可视化基础上探索已知标记。让我们仔细研究群集的类型。如果要获得所有基因的表达水平,而不仅仅是3000个高度可变的基因,我们可以使用存储在RNA
分析槽中的normalized计数数据。
# Select the RNA counts slot to be the default assay
DefaultAssay(seurat_integrated) <- "RNA"
# Normalize RNA data for visualization purposes
seurat_integrated <- NormalizeData(seurat_integrated, verbose = FALSE)
我们正在寻找跨群集的标记表达的一致性。例如,如果一种细胞类型有两个标记,并且只有一个标记在一个群集中表达,那么我们就不能可靠地将该群集定义为该细胞类型。
CD14+ monocyte markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("CD14", "LYZ"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
CD14+单核细胞似乎对应于群集1、3和14。我们不包括簇9和15,因为它们并不高度表达这两个标记。
FCGR3A+ monocyte markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("FCGR3A", "MS4A7"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
FCGR3A+单核细胞标志物在群集9明显高表达。
Macrophages
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("MARCO", "ITGAM", "ADGRE1"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
似乎没有与巨噬细胞相对应的群集;也许细胞培养条件对巨噬细胞的选择是负面的(更高黏附性)。
Conventional dendritic cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("FCER1A", "CST3"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
群集15对应于常规树突状细胞的标记识别(两个标记一致地显示表达)。
Plasmacytoid dendritic cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("IL3RA", "GZMB", "SERPINF1", "ITM2C"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
群集19对应浆细胞样树突状细胞。虽然这些标记物的表达有很大的差异,但我们看到群集19的表达是一致的。
练习
探究表中每个不同的细胞类型对应的群集
注意:如果任何集群似乎包含两个独立的细胞类型,那么提高群集分辨率以正确划分群集是很有帮助的。或者,如果我们仍然不能使用更高的分辨率分离出群集,那么可能是我们使用的主成分太少,以至于我们没有分离出这些感兴趣的细胞类型。为了给我们选择PC提供信息,我们可以查看与UMAP图重叠的PC基因的表达,并确定我们的细胞群体是否被包括在内的PC分开。
练习答案
B cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("CD79A", "MS4A1"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
群集6、11和17具有良好的B细胞标志物表达。这与基于驱动PC2的基因的假设相对应。
T cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("CD3D"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
除第7、8、12和16群外,所有T细胞标记都集中在绘图右侧的一大群群中。
CD4+ T cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("CD3D", "IL7R", "CCR7"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
与CD4+T细胞相对应的T细胞亚群是群集0、2、4、10和18。我们在其他群集中也看到了表达,但这些群集不表达高水平的T细胞标记CD3D。
CD8+ T cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("CD3D", "CD8A"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
对于CD8+T细胞,在群集5和13观察到两个标记唯一一致的表达。
NK cell markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("GNLY", "NKG7"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
除了第5群外,NK细胞标记物还在第8和第12群中表达;然而,我们知道群集5表达T细胞标记物。所以我们假设第5群集可能是激活的CD8+T细胞。
Megakaryocyte markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("PPBP"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
巨核细胞标志物似乎主要在第16群集表达。
Erythrocyte markers
FeaturePlot(seurat_integrated,
reduction = "umap",
features = c("HBB", "HBA2"),
sort.cell = TRUE,
min.cutoff = 'q10',
label = TRUE)
似乎没有红血球群集,因为标记分布在不同类型的细胞上。这不是一件坏事,因为血细胞通常是要从分析中排除的细胞类型,因为它们通常不能提供有关感兴趣条件的信息。
基于这些结果,我们可以将群集与细胞类型相关联。然而,在对细胞类型执行群集的最终分配之前,我们希望使用标记识别来执行更深层次的分析。
现在我们对与大多数群集相对应的细胞类型有了一个很好的了解,但一些问题仍然存在:
- 群集7和20的细胞类型是什么?
- 与相同细胞类型相对应的群集是否有生物学意义的差异?这些细胞类型有亚群吗?
- 我们是否可以通过识别这些群集的其他标记基因来获得对这些细胞类型特性的更准确的识别?
标记识别分析可以帮助我们解决所有这些问题!!
下一步将是进行标记识别分析,这将输出不同群集之间表达显著差异的基因。使用这些基因,我们可以确定或提高对群集/子群集身份的置信度。
未完待续......
注:以上内容来自哈佛大学生物信息中心(HBC)_的教学团队的生物信息学培训课程。原文链接:https://hbctraining.github.io/scRNA-seq/schedule/ 点击 “阅读原文” 可直达
- JS魔法堂:那些困扰你的DOM集合类型
- ASP.NET Core 介绍和项目解读
- 【手把手教你全文检索】Lucene索引的【增、删、改、查】
- 红方块躲避—天才游戏
- .NET Core全新路线图(译)
- JS魔法堂:阻止元素被选中
- CSS3魔法堂:禁止用户改变textarea大小
- CentOS6.5菜鸟之旅:VIM插件NERDtree初探
- CentOS6.5菜鸟之旅:安装输入法(小呀小企鹅)
- CSS魔法堂:选择器及其优先级
- 常见的Web实时消息交互方式和SignalR
- 【设计模式】——工厂方法FactoryMethod
- 前端翻译:Activating Browser Modes with Doctype
- JS魔法堂:doctype我们应该了解的基础知识
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ascgen2可以把图片变成文字的小工具
- 解决android studio卡顿,提升studio运行速度的方法
- Android物理键盘事件解析
- AndroidQ(10)分区存储完美适配方法
- (全局快捷键工具)Power Keys彻底提升码字效率?
- android自定义view实现钟表效果
- 教你如何用OpenVZ限制虚拟机硬盘IO速度
- Android自定义控件实现短信验证码自动填充
- android studio 3.6.1升级后如何处理 flutter问题
- Android项目迁移到AndroidX的方法步骤
- Android中layer-list基本使用详解
- Android Studio中主题样式的使用方法详解
- android点击无效验证的解决方法
- Android Studio 3.5格式化布局代码时错位、错乱bug的解决
- Android实现时钟特效