scRNA基础分析-3:鉴定细胞类型

scRNA基础分析-1:安装包、导入数据、过滤质控 -
scRNA基础分析-2:降维与聚类 -
scRNA基础分析-3:鉴定细胞类型 -
scRNA基础分析-4:细胞亚类再聚类、注释 -
scRNA基础分析-5:伪时间分析 -
scRNA基础分析-6:富集分析 -

之前已将1222个细胞分成10个cluster,这一步我们鉴定下每个cluster为什么类型细胞。

library(Seurat)
library(tidyverse)
library(patchwork)
rm(list=ls())
scRNA <- readRDS("scRNA.rds")

法1:mark基因鉴定

  • 通过细胞类型特异性表达的marker基因识别(常用),就好像流式细胞仪用特定的抗体筛选细胞一样。
  • 最关键的是要找到各个cluster的显著高表达的基因(cluster间基因表达差异分析),主要是利用Seurat包的FindAllMarkers函数,通过设置其test.use参数,从而选择不同的method。常用的有以下三种:

wilcox(default)

  • 为默认参数,也是最建议使用的。
diff.wilcox = FindAllMarkers(scRNA)
#大概1-2min
all.markers = diff.wilcox %>% select(gene, everything()) %>% subset(p_val<0.05)
#先把基因这一列放在第一列,然后选取p值小于0.05的行(结果行数不变,说明都挺好的)
top10 = all.markers %>% group_by(cluster) %>% top_n(n = 10, wt = avg_logFC)
#0-9共10个cluster,每个cluster选取top10高变基因
1-1

MAST

  • MASK是专门针对单细胞数据差异分析设计的
diff.mast = FindAllMarkers(scRNA, test.use = 'MAST')
# 较慢,4-5min左右
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)

DESeq2

  • 为bulk RNA差异分析的经典方法
diff.deseq2 = FindAllMarkers(scRNA, test.use = 'DESeq2', slot = 'counts')
#选用 "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)

top10基因热图可视化

top10 = CaseMatch(search = as.vector(top10$gene), match = rownames(scRNA)) 
#这里选取的是wilcox方法挑选的差异基因
plot1 = DoHeatmap(scRNA, features = top10, group.by = "seurat_clusters", group.bar = T, size = 4)
#结果可以看出cluster间差异还是挺明显的
1-2

挑选部分感兴趣基因可视化

select_genes <- c('LYZ','CD79A','CD8A','CD8B','GZMB','FCGR3A')  
#t挑选基因,最好分布在几个cluster里
 VlnPlot(scRNA, features = select_genes, pt.size=0, ncol=2)
# 图1-3
FeaturePlot(scRNA, features = select_genes, reduction = "tsne", label=T, ncol=2)
# 图1-4
1-3

1-4

人工注释

在上述工作的基础上,就可以进行人工注释cluster细胞类型了。

  • 首先要明确自己研究组织可能有哪些细胞类型,各种细胞的marker基因是什么;
    其中细胞的marker基因主要通过相关领域的文献收集,也可以通过专门的数据库查找,作者推荐了两个比较常用的数据库:
    CellMarker:http://biocc.hrbmu.edu.cn/CellMarker/index.jsp
    PanglaoDB:https://panglaodb.se/index.html
  • 然后对比差异分析得到的各个cluster的显著高表达基因,综合分析就可以判断细胞类型了。
    这里具体就不演示了,直接展示下作者的鉴定结果。


    1-5

法2:SingleR包注释

library(SingleR)
refdata <- HumanPrimaryCellAtlasData()
#参考数据库,等待时间较长。建议下载成功后,储存为Rdata,以后方便使用。
testdata <- GetAssayData(scRNA, slot="data")
clusters <- [email protected]$seurat_clusters
cellpred <- SingleR(test = testdata, ref = refdata, labels = refdata$label.main, 
                    # 注意此时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)
#如下为singleR的细胞cluster鉴定结果。
2-1
#结合上述结果,给scRNA增添celltype注释信息
[email protected]$celltype = "NA"
#先新增列celltype,值均为NA,然后利用下一行代码循环填充
for(i in 1:nrow(celltype)){
  [email protected][which([email protected]$seurat_clusters == celltype$ClusterID[i]),'celltype'] <- celltype$celltype[i]}

可视化1

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')
2-2

可视化2

select_genes <- c('LYZ','CD79A','GZMB','FCGR3A')
#vlnplot展示
p1 <- VlnPlot(scRNA, features = select_genes, pt.size=0, group.by="celltype", ncol=2)
#featureplot展示
p2 <- FeaturePlot(scRNA, features = select_genes, reduction = "tsne", label=T, ncol=2)
p3=p1|p2
2-3
#最后保存分析结果,以供后续的分析
saveRDS(scRNA, file="scRNA.rds")

你可能感兴趣的:(scRNA基础分析-3:鉴定细胞类型)