单细胞转录组基础分析四:细胞类型鉴定

本文是参考学习单细胞转录组基础分析四:细胞类型鉴定的学习笔记。可能根据学习情况有所改动。
细胞完成聚类和降维可视化之后,细胞群的异质性已经体现出来了,那么各个cluster的细胞如何鉴定细胞类型呢?通用的方法有两种:一种是通过细胞类型特异性表达的marker基因识别,就好像流式细胞仪用特定的抗体筛选细胞一样;第二种是建立已知细胞类型的转录谱数据库,将未知细胞类型的转录谱数据与之比较相似性,就知道它最有可能是哪种细胞了。第一种方法需要人工收集marker基因比对各个cluster的显著高表达基因综合分析,第二种方法可以使用SingleR包自动识别细胞类型。建议两种方法结合起来进行细胞鉴定。Cluster差异****基因通过marker基因鉴定细胞类型目前仍是最常用的方法,应用此方法的基础是找到各个cluster的显著高表达的基因,这就需要差异分析提供候选基因列表。Seura提供多种差异分析的方法,默认wilcox方法,MASK方法和DESeq2方法也可以留意一下。MASK是专门针对单细胞数据差异分析设计的,DESeq2是传统bulkRNA数据差异分析的经典方法。Seurat函数通过test.use参数确定分析方法,如果选用 "negbinom", "poisson", or "DESeq2", 需要将slot参数设为"counts"。

##以下方法三选一,建议第一种

以上三种方法我都运行了一遍,top10显著高表达基因差别很小,cluster0的结果如下图所示:

图片

鉴定细胞类型****人工鉴定细胞类型人工鉴定细胞类型,首先要明确自己研究组织可能有哪些细胞类型,各种细胞的marker基因是什么,然后对比差异分析得到的各个cluster的显著高表达基因,综合分析就可以判断细胞类型了。细胞的marker基因主要通过相关领域的文献收集,也可以通过专门的数据库查找,推荐两个比较常用的数据库:

CellMarker:http://biocc.hrbmu.edu.cn/CellMarker/index.jsp

PanglaoDB:https://panglaodb.se/index.html

使用top10显著高表达基因,结合CellMarker数据库,粗略鉴定结果如下:

图片

选择基因作图展示

#挑选部分基因
图片

SingleR鉴定细胞类型

library(SingleR)

鉴定结果与手工鉴定的基本一致:

图片

鉴定结果展示

p1 = DimPlot(scRNA, group.by="celltype", label=T, label.size=5, reduction='tsne')
图片
# 细胞完成聚类和降维可视化之后,细胞群的异质性已经体现出来了,那么各个cluster的细胞如何鉴定细胞类型呢?通用的方法有两种:一种是通过细胞类型特异性表达的marker基因识别,就好像流式细胞仪用特定的抗体筛选细胞一样;第二种是建立已知细胞类型的转录谱数据库,将未知细胞类型的转录谱数据与之比较相似性,就知道它最有可能是哪种细胞了。第一种方法需要人工收集marker基因比对各个cluster的显著高表达基因综合分析,第二种方法可以使用SingleR包自动识别细胞类型。建议两种方法结合起来进行细胞鉴定。
# 
# Cluster差异基因
# 通过marker基因鉴定细胞类型目前仍是最常用的方法,应用此方法的基础是找到各个cluster的显著高表达的基因,这就需要差异分析提供候选基因列表。Seura提供多种差异分析的方法,默认wilcox方法,MASK方法和DESeq2方法也可以留意一下。MASK是专门针对单细胞数据差异分析设计的,DESeq2是传统bulkRNA数据差异分析的经典方法。Seurat函数通过test.use参数确定分析方法,如果选用 "negbinom", "poisson", or "DESeq2",  需要将slot参数设为"counts"。
##以下方法三选一,建议第一种
rm(list=ls())
options(stringsAsFactors = F)
dir.create("cell_identify")#
#默认wilcox方法
scRNA <- readRDS(file = "scRNA.rds")
library(Seurat)
diff.wilcox = FindAllMarkers(scRNA)
library(tidyverse)
all.markers = diff.wilcox %>% dplyr::select(gene, everything()) %>% subset(p_val<0.05)
top10 = all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
write.csv(all.markers, "cell_identify/diff_genes_wilcox.csv", row.names = F)
write.csv(top10, "cell_identify/top10_diff_genes_wilcox.csv", row.names = F)

#专为单细胞设计的MAST
# diff.mast = FindAllMarkers(scRNA, test.use = 'MAST')
# all.markers = diff.mast %>% select(gene, everything()) %>% subset(p_val<0.05)
# top10 = all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
# write.csv(all.markers, "cell_identify/diff_genes_mast.csv", row.names = F)
# write.csv(top10, "cell_identify/top10_diff_genes_mast.csv", row.names = F)

#bulkRNA经典方法DESeq2
# diff.deseq2 = FindAllMarkers(scRNA, test.use = 'DESeq2', slot = 'counts')
# all.markers = diff.deseq2 %>% select(gene, everything()) %>% subset(p_val<0.05)
# top10 = all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
# write.csv(all.markers, "cell_identify/diff_genes_deseq2.csv", row.names = F)
# write.csv(top10, "cell_identify/top10_diff_genes_deseq2.csv", row.names = F)

##top10基因绘制热图
top10_genes <- read.csv("cell_identify/top10_diff_genes_wilcox.csv")
top10_genes = CaseMatch(search = as.vector(top10_genes$gene), match = rownames(scRNA)) 
plot1 = DoHeatmap(scRNA, features = top10_genes, group.by = "seurat_clusters", group.bar = T, size = 4)
plot1#先查看再保存
ggsave("cell_identify/top10_markers.pdf", plot=plot1, width=8, height=6) 
ggsave("cell_identify/top10_markers.png", plot=plot1, width=8, height=6)
# 以上三种方法我都运行了一遍,top10显著高表达基因差别很小,cluster0的结果如下图所示:
# 图片
# 
# 
# 鉴定细胞类型
# 人工鉴定细胞类型
# 人工鉴定细胞类型,首先要明确自己研究组织可能有哪些细胞类型,各种细胞的marker基因是什么,然后对比差异分析得到的各个cluster的显著高表达基因,综合分析就可以判断细胞类型了。细胞的marker基因主要通过相关领域的文献收集,也可以通过专门的数据库查找,推荐两个比较常用的数据库:
# CellMarker:http://biocc.hrbmu.edu.cn/CellMarker/index.jsp
# 
# PanglaoDB:https://panglaodb.se/index.html
# 
# 
# 使用top10显著高表达基因,结合CellMarker数据库,粗略鉴定结果如下:
# 图片
# 
# 
# 选择基因作图展示
#挑选部分基因
select_genes <- c('LYZ','CD79A','CD8A','CD8B','GZMB','FCGR3A')
#vlnplot展示
#p1 <- VlnPlot(scRNA, features = select_genes, pt.size=0, group.by="celltype", ncol=2)
p1 <- VlnPlot(scRNA, features = select_genes, pt.size=0, ncol=2)

p1
ggsave("cell_identify/selectgenes_VlnPlot.png", p1, width=6 ,height=8)
#featureplot展示
p2 <- FeaturePlot(scRNA, features = select_genes, reduction = "tsne", label=T, ncol=2)
p2
ggsave("cell_identify/selectgenes_FeaturePlot.png", p2, width=8 ,height=12)
p3=p1|p2
p3
ggsave("cell_identify/selectgenes.png", p3, width=10 ,height=8)
# 图片
# 
# 
# 
# SingleR鉴定细胞类型
library(SingleR)
refdata <- HumanPrimaryCellAtlasData()
testdata <- GetAssayData(scRNA, slot="data")
clusters <- scRNA@meta.data$seurat_clusters
cellpred <- SingleR(test = testdata, ref = refdata, labels = refdata$label.main, 
                    method = "cluster", clusters = clusters, 
                    assay.type.test = "logcounts", assay.type.ref = "logcounts")
celltype = data.frame(ClusterID=rownames(cellpred), celltype=cellpred$labels, stringsAsFactors = F)
write.csv(celltype,"cell_identify/celltype_singleR.csv",row.names = F)
scRNA@meta.data$celltype = "NA"
for(i in 1:nrow(celltype)){
  scRNA@meta.data[which(scRNA@meta.data$seurat_clusters == celltype$ClusterID[i]),'celltype'] <- celltype$celltype[i]}
# 鉴定结果与手工鉴定的基本一致:
# 图片
# 
# 鉴定结果展示
library(patchwork)
p1 = DimPlot(scRNA, group.by="celltype", label=T, label.size=5, reduction='tsne')
p2 = DimPlot(scRNA, group.by="celltype", label=T, label.size=5, reduction='umap')
p3 = plotc <- p1+p2+ plot_layout(guides = 'collect')
p1
p2
p3
ggsave("cell_identify/tSNE_celltype.pdf", p1, width=7 ,height=6)
ggsave("cell_identify/UMAP_celltype.pdf", p2, width=7 ,height=6)
ggsave("cell_identify/celltype.pdf", p3, width=10 ,height=5)
ggsave("cell_identify/celltype.png", p3, width=10 ,height=5)
#图片
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容