不同单细胞亚群各自的特征基因也是会有重合的
交流群看到粉丝提问,他使用seurat包的FindAllMarkers对他自己的单细胞降维聚类分群后不同单细胞亚群各自的特征基因进行热图可视化,结果报错了因为发现不同单细胞亚群各自的特征基因也是会有重合的。‘
其实非常容易理解,下面我们以如下所示的基于pbmc3k 这个单细胞数据集作为例子展示给大家 的 :
library(SeuratData) #加载seurat数据集
getOption('timeout')
options(timeout=10000)
#InstallData("pbmc3k")
data("pbmc3k")
sce <- pbmc3k.final
library(Seurat)
table(Idents(sce))
library(future)
# check the current active plan
plan()
plan("multiprocess", workers = 4)
plan()
sce.markers <- FindAllMarkers(object = sce, only.pos = TRUE,
min.pct = 0.25,
thresh.use = 0.25)
DT::datatable(sce.markers)
pro='markers'
write.csv(sce.markers,file=paste0(pro,'_sce.markers.csv'))
save(sce.markers,file = paste0(pro, 'sce.markers.Rdata'))
library(dplyr)
top10 <- sce.markers %>% group_by(cluster) %>% top_n(10, avg_log2FC)
DoHeatmap(sce,top10$gene,size=3)
ggplot2::ggsave(filename=paste0(pro,'_sce.markers_heatmap.pdf'),height = 15)
每个单细胞亚群各自的高表达量基于都计算得到,并且存储好了!
> as.data.frame(table(sce.markers$cluster))
Var1 Freq
1 Naive CD4 T 162
2 Memory CD4 T 176
3 CD14+ Mono 391
4 B 147
5 CD8 T 162
6 FCGR3A+ Mono 608
7 NK 364
8 DC 633
9 Platelet 242
其实这个时候,很容易看到每个单细胞亚群各自的特征基因,也是会有重合的哦。热图就很明显看到Memory CD4 T 和Naive CD4 T 共享了大量的基因:
我们使用如下所示的展示方式:
as.data.frame(table(sce.markers$cluster))
deg_list=split(sce.markers$gene,
sce.markers$cluster)
library(UpSetR)
data <- fromList(deg_list)
upset(data,nsets = 9)
不仅仅是Memory CD4 T 和Naive CD4 T 共享了大量的基因,还有FCGR3A+ Mono和CD14+ Mono , CD8 T 和NK,都是共享了不少的基因。
其实逻辑上也很容易推理,因为seurat包的FindAllMarkers默认找到的是某一个单细胞亚群相当于所有的其它亚群的统计学显著的特异性基因,如果某两个亚群过于类似,它们就会共享大量特异性基因哦,也就是说所谓的计算得到的特异性基因在在这两个过于类似的单细胞亚群里面不特异了。
写在文末
我在《生信技能树》,《生信菜鸟团》,《单细胞天地》的大量推文教程里面共享的代码都是复制粘贴即可使用的, 有任何疑问欢迎留言讨论,也可以发邮件给我,详细描述你遇到的困难的前因后果给我,我的邮箱地址是 jmzeng1314@163.com
如果你确实觉得我的教程对你的科研课题有帮助,让你茅塞顿开,或者说你的课题大量使用我的技能,烦请日后在发表自己的成果的时候,加上一个简短的致谢,如下所示:
We thank Dr.Jianming Zeng(University of Macau), and all the members of his bioinformatics team, biotrainee, for generously sharing their experience and codes.
十年后我环游世界各地的高校以及科研院所(当然包括中国大陆)的时候,如果有这样的情谊,我会优先见你。