最近在复现一篇文章《A comprehensive single-cell map of T cell exhaustion-associated immune environ- ments in human breast cancer》,它配套的数据在 E-MTAB-10607 中可以看到。这篇推文主要记录了文献中的第一次降维聚类分群的命名的过程。
The main cell types were annotated based on the expression of established marker genes:
命名主要按照文章中的基因列表:
以及曾老师总结的marker基因列表:
命名代码如下:
# 文章中的基因marker:
epithelial=c("EPCAM","CDH1")
T_NK='CD3/CD4/CD8/NCR1';T_NK=trimws(strsplit(T_NK,'/')[[1]])
myeloid='CD14/ITGAX/HLADRA';myeloid=trimws(strsplit(myeloid,'/')[[1]])
endothelial='PECAM1/VWF';endothelial=trimws(strsplit(endothelial,'/')[[1]])
fibroblasts='PDGFRB/FAP';fibroblasts=trimws(strsplit(fibroblasts,'/')[[1]])
mast='MS4A2'
B_cell='MS4A1'
Plasma='IG' # Ig-encoding transcripts???
gene_list = list(
Epithelial=epithelial,
Endothelial=endothelial,
Fibroblast=fibroblasts,
'T and NK cell'=T_NK,
Myeloid=myeloid,
'B cell'=B_cell,
'Mast cell/basophil'=mast,
'Plasma cell'=Plasma
)
p2 = DotPlot( sce.all.int, features = gene_list,
group.by = 'RNA_snn_res.0.1') +
theme(axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=0.5))
p2
ggsave('paper-marker-0.1.pdf',width=12,height=10)
#定义细胞亚群
# 0.1 的分辨率
celltype[celltype$ClusterID %in% c( 2,9,11 ),2]='Epithelial'
celltype[celltype$ClusterID %in% c( 3 ),2]='Endothelial'
celltype[celltype$ClusterID %in% c( 4,6 ),2]='Fibroblast'
celltype[celltype$ClusterID %in% c( 10,0 ),2]='T and NK cell' # 0 有 CD3E,CD3D
celltype[celltype$ClusterID %in% c( 1 ),2]='Myeloid'
# celltype[celltype$ClusterID %in% c( 4 ),2]='B cell'
celltype[celltype$ClusterID %in% c( 7 ),2]='Mast cell/basophil'
celltype[celltype$ClusterID %in% c( 8 ),2]='Plasma cell' # IGHG1, MZB1, SDC1, CD79A(https://www.jianshu.com/p/15dddefc7038)
cluster5 的marker 基因是 TOP2A MKI67, 这两个是哪个细胞类型的marker基因?
好像是增殖性的marker基因,与细胞周期有关吗?那这个细胞类型要保留吗?目前的处理是没有命名。
缺少了B cell的细胞亚群
尝试用ACT自动注释,也没有B cell
对比文章已有的注释和我的注释
发现B cell 在T and NK cell中,可能是分辨率不够的原因。cluster5在文章中是好几个细胞亚群,也有可能是分辨率的问题。
B cell的marker 基因为:MS4A1和CD79A。在这个分辨率下,没有 B cell。
B cell 终于被注释出来了,是 cluster 8,所以后续更正采取0.5分辨率进行命名:
0.5分辨率下有25个cluster。命名主要按照文章中的基因列表:
以及曾老师总结的marker基因列表:
最终注释得到的UMAP图如下:
命名如下:
# 文章中的基因marker:
epithelial=c("EPCAM","CDH1")
T_NK='CD3/CD4/CD8/NCR1';T_NK=trimws(strsplit(T_NK,'/')[[1]])
myeloid='CD14/ITGAX/HLADRA';myeloid=trimws(strsplit(myeloid,'/')[[1]])
endothelial='PECAM1/VWF';endothelial=trimws(strsplit(endothelial,'/')[[1]])
fibroblasts='PDGFRB/FAP';fibroblasts=trimws(strsplit(fibroblasts,'/')[[1]])
mast='MS4A2'
B_cell='MS4A1'
Plasma='IG' # Ig-encoding transcripts???
gene_list = list(
Epithelial=epithelial,
Endothelial=endothelial,
Fibroblast=fibroblasts,
'T and NK cell'=T_NK,
Myeloid=myeloid,
'B cell'=B_cell,
'Mast cell/basophil'=mast,
'Plasma cell'=Plasma
)
p2 = DotPlot( sce.all.int, features = gene_list,
group.by = 'RNA_snn_res.0.5') +
theme(axis.text.x = element_text(angle = 45, vjust = 0.5, hjust=0.5))
p2
ggsave('paper-marker-0.5.pdf',width=12,height=10)
celltype=data.frame(ClusterID=0:24 ,
celltype= 0:24 )
#定义细胞亚群
celltype[celltype$ClusterID %in% c( 1,11,12,18,20,23,24,7 ),2]='Epithelial'
celltype[celltype$ClusterID %in% c( 10,14,15,16,21,22 ),2]='Endothelial'
celltype[celltype$ClusterID %in% c( 5,6,9,19 ),2]='Fibroblast'
celltype[celltype$ClusterID %in% c(0 ),2]='T and NK cell' # 0 有 CD3E,CD3D
celltype[celltype$ClusterID %in% c( 2,3,4 ),2]='Myeloid'
celltype[celltype$ClusterID %in% c( 8 ),2]='B cell'
celltype[celltype$ClusterID %in% c( 13 ),2]='Mast cell/basophil'
celltype[celltype$ClusterID %in% c( 17 ),2]='Plasma cell' # IGHG1, MZB1, SDC1, CD79A(https://www.jianshu.com/p/15dddefc7038)
head(celltype)
celltype
table(celltype$celltype)
sce.all.int@meta.data$celltype = "NA"
和原文的注释差别不大了呢,有进步
从下图中观察,如果增加分辨率,0.5分辨率下的cluster 7还可以细分,所以有可能这样会解决问题。
分辨率:
分辨率不够的时候,可能会漏掉一些细胞亚群。这个时候,有相关的生物学背景是很有帮助的,因为会发现一些不合理的地方,比如这里,当0.1的分辨率的时候,发现没有B cell。另外使用clustree
函数可以得到不同分辨率之间,亚群之间的关系,这个也可以帮助我们去判断是否需要更高的分辨率。
命名小技巧:
另外,之前曾老师也复现了这篇文献的第一次降维聚类分群的命名以及代码分享,有兴趣的小伙伴也可以一起看看:降维聚类分群的umap图真的重要吗