scRNA分析|Marker gene 可视化 以及 细胞亚群注释--你是如何人工注释的?
细胞类型注释是单细胞转录组中非常重要的环节,2021年 Nature protocols 中发表了一篇细胞注释的教程综述Tutorial: guidelines for annotating single-cell transcriptomic maps using automated and manual methods,含有细胞注释常见的流程,以及每个步骤可用的软件以及一些资源和建议。
主要就是以下三个步骤(模块),自动注释,人工注释 以及 验证 。
人工注释需要依托于各种资源(loupe,数据库,文献等)获取各个cluster的基因的线索来完成注释,可能会存在一些主观因素。
每个人的人工注释方式可能会有区别,本文使用笔者采用较多的人工注释方式对 scRNA分析|多样本merge 和 harmony去批次 得到的数据进行注释 。
一 Marker gene 可视化
人工注释的方式有很多种 ,也许比较常见的就是 根据自己整理的 Marker gene(数据库,文献等),绘制一些常见的图形(vln plot,dot plot,feature plot,heatmap ),再结合各个cluster的差异基因 来进行注释。
根据自定义的Marker gene 绘制图形
library(Seurat) library(tidyverse)#点图 可以接受list
Marker = list(Epi=c("EPCAM"),Endo=c("PECAM1","PLVAP"),
Fibroblast=c("COL3A1","COL1A1","COL1A2"),
IM=c('PTPRC'),
B=c("CD79A","CD79B","CD19"),
T=c("CD3D","CD3E","CD8A","CD4"),
Myeloid=c("C1QA","C1QB","CD163","CD1C")
)
Marker2 = c("EPCAM",
"PECAM1","PLVAP",
"COL3A1","COL1A1","COL1A2",
'PTPRC',
"CD79A","CD79B","CD19",
"CD3D","CD3E","CD8A","CD4",
"C1QA","C1QB","CD163","CD1C"
)
#点图 可以接受list
DotPlot(sce2,features=Marker2,group.by='RNA_snn_res.0.5')
VlnPlot(sce2,features = Marker22,pt.size = 0,ncol = 5)
FeaturePlot(sce2, features = c("EPCAM","PECAM1","COL3A1",'PTPRC',
"CD79A","CD79B","CD3D","CD3E","C1QA","C1QB") )
然后根据Marker gene的表达量多少 以及在各个cluster中特异性表达的情况,完成各个cluster的注释。此处仅为示例,marker gene的选择 和注释结果可能不是很准确 。
注:实际的人工注释过程 可能很复杂,需要根据多结合一些信息进行注释。比如
(1)每个人都可以有 也会有 自己的marker gene 列表;
(2)Marker gene 可能没有表达 或者 低表达;
(3)Marker gene 可能并不是特异表达的,会在很多cluster中有表达;
(4)某个cluster可能表达很多种 celltype的 marker gene ;
(5)还需要结合cluster的差异基因确定。
二 亚群注释
根据以上的Marker gene的各种表型 以及 各个cluster的差异基因,知道了各个cluster对应的celltype ,那么怎么可视化 或者 加到metadata中呢?
2.1 向量注释 - Seurat官网
首先通过向量按顺序指定每一个clustyer的细胞类型,注意第一个celltype对应的是cluster0 。通过RenameIdents函数完成注释Seurat - Guided Clustering Tutorial • Seurat (satijalab.org)
new.cluster.ids <- c('Epi','Epi','Myeloid','Fibroblast','Epi','Epi','Fibroblast','Epi','T','Epi',
'Fibroblast','Epi','Endo','un','Epi','Epi','Fibroblast','un','Fibroblast')
names(new.cluster.ids) <- levels(sce2)
sce2 <- RenameIdents(sce2, new.cluster.ids)
#可以添加到metadata中 ,方便后续使用
sce2@meta.data$new.cluster.ids <- Idents(sce2)
DimPlot(sce2, reduction = 'umap',
label = TRUE, pt.size = 0.5) + NoLegend()
2.2 直接指定
与上面类似,但是分别指定各个cluster对应的celltype,更不容易出错,推荐!
Idents(sce2) <- "seurat_clusters"
sce2 <- RenameIdents(sce2,"0"="Epi",
"1"="Epi",
"2"="Myeloid",
"3"= "Fibroblast",
"4"= "Epi",
"5"= "Epi",
"6"= "Fibroblast",
"7"= "Epi",
"8"= "T",
"9"= "Epi" ,
"10"="Fibroblast",
"11"="Epi",
"12"="Endo",
"13"= "un",
"14"= "Epi",
"15"= "Epi",
"16"= "Fibroblast",
"17"= "un",
"18"= "Fibroblast"
)
sce2@meta.data$celltype <- Idents(sce2)
DimPlot(sce2, reduction = 'umap',
label = TRUE, pt.size = 0.5) + NoLegend()
2.3 metadata 中添加分群信息
metadata是含有很多重要信息的数据框,是后续可视化的数据来源 。使用数据框的处理方式,循环添加。注意的是cluster从0开始,需要减1。
sce2$Anno = "NA"
celltype = c('Epi','Epi','Myeloid','Fibroblast','Epi','Epi','Fibroblast','Epi','T','Epi',
'Fibroblast','Epi','Endo','un','Epi','Epi','Fibroblast','un','Fibroblast')
#for循环添加
sub_length = length(unique(sce2$seurat_clusters)) - 1
for (i in 0:sub_length){
sce2$Anno[sce2$seurat_clusters==i] = celltype[i+1]
}
# 绘制注释umap图
DimPlot(sce2, reduction = 'umap', group.by='Anno',
label = TRUE, pt.size = 0.5) + NoLegend()
DimPlot(sce2, reduction = 'umap', label = TRUE, pt.size = 0.5) + NoLegend()
注:当前Idents为Anno时候,加不加 group.by='Anno' 结果一致。
最后看一下metadata中的信息 ,保存数据以待后续使用。
head(sce2@meta.data)
save(sce2,file = "sce.anno.RData")
需要美化umap图的话,可以参考
跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算
跟SCI学Pseudotime 2 | 将拟时序分析结果映射到 umap 中
◆ ◆ ◆ ◆ ◆
精心整理(含图PLUS版)|R语言生信分析,可视化(R统计,ggplot2绘图,生信图形可视化汇总)
相关文章
- 如何实施BPM?这篇文章分析的很有道理
- 如何分析Golang依赖包的各项指标能力
- PFMEA中的原因如何分析?
- day8 | 如何将我的服务开放给用户 | 第三届字节跳动青训营笔记
- 【已完结,后续更新分析流程】如何批量下载TCGA公开的转录组、miRNA转录组,蛋白表达谱、SNV、甲基化以及CNV数据
- 火龙果如何科学保鲜:转录组分析探讨火龙果的保鲜机理
- BI业务用户商业分析新时代,如何把数据用透?
- 腾讯如何捕获和分析游戏崩溃
- 内置AI算法的智能分析网关,如何将智能识别技术应用到生活场景中?
- 交换机的日志有哪些?如何输出日志?
- Acrobat软件在哪里获得?PDF编辑器如何使用--技术分析
- 直播预告 | 未来已来,AIGC革命将如何颠覆音视频应用与创作
- Oracle 视图 USER_ATTRIBUTE_DIM_JN_PTHS 官方解释,作用,如何使用详细说明
- 使用MySQL定义函数的步骤指南(mysql如何定义函数)
- 研究分析一次性口罩对环境的影响以及如何减少这种影响
- 实现自主:如何制作 Linux 镜像(制作linux镜像)
- Linux 开发者如何看待 Git 和 Github?
- 轻松入门:Linux如何设置根目录?(linux设置根目录)
- 如何在MSSQL中为表添加注释(怎么给表加注释mssql)
- MSSQL性能分析新姿势:妥选方案,打磨细节(如何分析mssql性能)
- Linux系统下如何快速改变文件名(linux 下改文件名)
- MySQL优化如何进行表的分析与优化(mysql中分析 优化表)
- 如何解决Oracle错误代码0095(oracle 0095)
- 案例分析 | 如何利用AI技术加速单细胞分析,帮助医生实现精准决策?
- 浅析如何在tnsnames.ora中配置监听