细胞类型注释是单细胞转录组中非常重要的环节,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中呢?
首先通过向量按顺序指定每一个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()
与上面类似,但是分别指定各个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()
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绘图,生信图形可视化汇总)
联系客服