J

Jay2Echo

V1

2023/02/13阅读:165主题:默认主题

[单细胞|R]单细胞自动注释与手动注释

背景

上次分享了单细胞聚类分群的部分,本次一起来学习后续的基于Seurat的自动注释与手动注释。以及通过小提琴图、气泡图等多种形式进行Marker表达量展示。

[单细胞|R]单细胞降维聚类

Just Do It!

基于SingleR进行细胞自动注释

#载入参考数据集
ref_use <- HumanPrimaryCellAtlasData() 

#SingleR注释
pred <- SingleR(test=as.matrix(pbmc@assays$RNA@data),       #输入表达矩阵
                ref=ref_use,                                #参考数据
                labels=ref_use$label.fine,                  #标签列
                clusters = pbmc$seurat_clusters,            #细胞聚类信息(只有method = "cluster"才使用)
                method = "cluster")                         #注释类型,按照cluster还是按照cell进行注释
                
#保存SingleR注释结果,需要根据自己情况设置文件位置
write.table(pred,"hg19/Singler_out.xls",sep='\t',quote = F)
参考数据集的特征
参考数据集的特征

注:

  • 本次使用的参考数据集是HumanPrimaryCellAtlasData(),是人类参考数据集。
    • 此参考数据集有37个大类,157个小类
    • 通过unique(ref_use$label.main)查看所有大类
人类参考数据集所有37个大类细胞类型
人类参考数据集所有37个大类细胞类型
  • 通过unique(ref_use$label.fine)查看所有小类
  • SingleR()参数意义:
    • 目前当'cluster='参数被指定时,method="cluster"参数可以缺省,即省略不写。
  • 通过“head(pred)”查看自动注释结果。
    • 通过“unique(pred$pruned.labels)”查看自动注释得到的细胞类别。
    • 发现原始Cluster有0~7,8种,自动注释结果只有7种,查看输出的结果文件,发现Cluster0与Cluster2均被识别为同一种细胞类型。故后续需要选择差异基因中高表达基因作为Marker进行手动注释。 自动注释结果查看
自动注释结果查看
自动注释结果查看

基于CellMarker数据库进行手动注释

  • 通过FindAllMarkers()函数可得每个Cluster中的差异表达基因。利用差异表达基因Top10表达热图从每个Cluster中寻找高表达的基因作为Marker进行后续手动注释。
差异表达基因Top10表达热图
差异表达基因Top10表达热图
  • 基于Marker进入CellMarker官网进行手动注释。
  • 该网站可以实现两种注释逻辑:
    • 通过Marker匹配细胞类型
    • 通过细胞类型匹配Marker
CellMarker官网首页
CellMarker官网首页
  • 通过手动注释提醒我们,需要关注原始数据的物种及取样组织信息。

通过Marker匹配细胞类型

  • 通过点击首页右上角“search”按钮,进入下一个功能页面。
  • 依次选择物种、Marker、点击Submit即可
使用方法
使用方法
使用方法
使用方法

通过细胞类型匹配Marker

  • 通过依次选择物种、组织部位、细胞类型之后可以得到以词云形式呈现的所有Markers信息。
  • 同样词云中字体越大表示被报道次数越多,越可信。 使用方法
使用方法
使用方法

自动及手动结果汇总

结果汇总
结果汇总
#细胞注释
new.cluster.ids <- c("Memory CD4+ T","Naive CD4+ T","CD14+ Mono","B cell","CD8+ T",
                     "FCGR3A+ Mono","NK""Platelet")

names(new.cluster.ids) <- levels(pbmc) 
pbmc <- RenameIdents(pbmc, new.cluster.ids)       #修改Idents

#在metadata中,添加Celltype信息
pbmc$celltype <- Idents(pbmc)

head(pbmc@meta.data)


#降维图
DimPlot(pbmc,                                #seurat对象(数据)
        reduction = 'umap',                  #降维类型,umap,tsne,pca
        group.by = 'celltype',               #分组名称
        pt.size = 1,                         #图中点的大小
        #split.by = 'seurat_clusters',       #拆分绘图的名称
        label = T)                           #图中是否添加label信息


#保存分析结果,需要根据自己情况设置文件位置
saveRDS(pbmc, file = "hg19/pbmc3k_final.rds")
最终细胞注释结果图
最终细胞注释结果图

注:

  • 创建new.cluster.ids对象时细胞类型需要按照Cluster0~7顺序指定。

marker展示

每个Cluster前Top10差异基因表达量热图

#DoHeatmap热图
DoHeatmap(pbmc,                             #seurat对象(数据)
          features = top10$gene,            #绘制的基因
          label = F,                        #图中是否添加label信息
          slot = "scale.data",              #绘图使用的表达矩阵
          group.by = 'seurat_clusters',     #分组名称
          group.bar = T)                    #是否展示bar

单Marker--CD79A表达情况展示

#FeaturePlot图
FeaturePlot(pbmc,                          #seurat对象(数据)
            features = "CD79A",            #绘制的基因
            reduction = "umap",            #降维类型
            pt.size = 1,                   #图中点的大小
            cols = c("lightgrey","red"),   #点的颜色设置
            label = T,                     #图中是否添加label信息
            order = T)                     #是否按照表达量顺序对细胞进行排序

单Marker--CD8A表达小提琴图展示

#小提琴图
VlnPlot(pbmc,                                            #seurat对象(数据)
        features = "CD8A",                               #绘制的基因
        pt.size = 0.5,                                   #图中点的大小
        group.by = "seurat_clusters",                    #分组名称
        cols = c("#FF6700","#9370DB","#89CFF0",          #绘图颜色
                          "#F8D568","#00AD43","#BA160C",
                          "#FF91AF","#A6A6A6"))

单Marker--CD8A表达气泡图展示

# 气泡图                   
DotPlot(pbmc,features = "CD8A")

多Marker展示汇总

  • 同时观测多个Marker在不同Cluster中表达量情况的需求也很常见,直接上代码。
  • 通过比较单个与多个Marker的结果图发现,两者代码完全一致,只是作图函数中features参数由原来的单个marker替换为一个多markers的列表。
#Featureplot图2
cell_marker <- c("IL7R","CCR7","S100A4","CD14","LYZ","MS4A1","CD8A","FCGR3A","MS4A7","GNLY","NKG7","PPBP")
FeaturePlot(pbmc,features = cell_marker)

#小提琴图2
VlnPlot(pbmc,                                     #seurat对象(数据)
        features = cell_marker,                   #绘制的基因
        pt.size = 0.5,                            #图中点的大小
        group.by = "seurat_clusters",             #分组名称
        stack = T,                                #是否将所有基因的图片拼合一起
        same.y.lims = T,                          #是否设置相同的y轴
        flip = F) +                               #是否对坐标轴翻转
  NoLegend()                                      #不绘制图例

#气泡图2
DotPlot(pbmc,                             #seurat对象(数据)
        features = cell_marker,           #绘制的基因
        group.by = "seurat_clusters")     #分组名称
FeaturePlot图
FeaturePlot图
小提琴图
小提琴图
气泡图
气泡图

数据及All_Code

数据

  • 见本文引用的第一篇推文末百度网盘

All_Code

############## SingleR注释 #########################

#载入参考数据集
ref_use <- HumanPrimaryCellAtlasData() 
# 此参考数据集有37个大类,157个小类
# 通过unique(ref_use$label.main)查看所有大类
# 通过unique(ref_use$label.fine)查看所有小类

#SingleR注释
pred <- SingleR(test=as.matrix(pbmc@assays$RNA@data),       #输入表达矩阵
                ref=ref_use,                                #参考数据
                labels=ref_use$label.fine,                  #标签列
                clusters = pbmc$seurat_clusters,            #细胞聚类信息(只有method = "cluster"才使用)
                method = "cluster")                         #注释类型,按照cluster还是按照cell进行注释

head(pred)
# 查看注释后的细胞类型
# unique(pred$pruned.labels)
#保存SingleR注释结果,需要根据自己情况设置文件位置
write.table(pred,"hg19/Singler_out.xls",sep='\t',quote = F)


#细胞注释
new.cluster.ids <- c("Memory CD4+ T","Naive CD4+ T","CD14+ Mono","B cell","CD8+ T",
                     "FCGR3A+ Mono","NK""Platelet")

names(new.cluster.ids) <- levels(pbmc) 
pbmc <- RenameIdents(pbmc, new.cluster.ids)       #修改Idents

#在metadata中,添加Celltype信息
pbmc$celltype <- Idents(pbmc)

head(pbmc@meta.data)


#降维图
DimPlot(pbmc,                                #seurat对象(数据)
        reduction = 'umap',                  #降维类型,umap,tsne,pca
        group.by = 'celltype',               #分组名称
        pt.size = 1,                         #图中点的大小
        #split.by = 'seurat_clusters',       #拆分绘图的名称
        label = T)                           #图中是否添加label信息


#保存分析结果,需要根据自己情况设置文件位置
saveRDS(pbmc, file = "hg19/pbmc3k_final.rds")


#DoHeatmap热图
DoHeatmap(pbmc,                             #seurat对象(数据)
          features = top10$gene,            #绘制的基因
          label = F,                        #图中是否添加label信息
          slot = "scale.data",              #绘图使用的表达矩阵
          group.by = 'seurat_clusters',     #分组名称
          group.bar = T)                    #是否展示bar

#FeaturePlot图
FeaturePlot(pbmc,                          #seurat对象(数据)
            features = "CD79A",            #绘制的基因
            reduction = "umap",            #降维类型
            pt.size = 1,                   #图中点的大小
            cols = c("lightgrey","red"),   #点的颜色设置
            label = T,                     #图中是否添加label信息
            order = T)                     #是否按照表达量顺序对细胞进行排序


#小提琴图
VlnPlot(pbmc,                                            #seurat对象(数据)
        features = "CD8A",                               #绘制的基因
        pt.size = 0.5,                                   #图中点的大小
        group.by = "seurat_clusters",                    #分组名称
        cols = c("#FF6700","#9370DB","#89CFF0",          #绘图颜色
                          "#F8D568","#00AD43","#BA160C",
                          "#FF91AF","#A6A6A6"))

# 气泡图                   
DotPlot(pbmc,features = "CD8A")

#Featureplot图2
cell_marker <- c("IL7R","CCR7","S100A4","CD14","LYZ","MS4A1","CD8A","FCGR3A","MS4A7","GNLY","NKG7","PPBP")
FeaturePlot(pbmc,features = cell_marker)

#小提琴图2
VlnPlot(pbmc,                                     #seurat对象(数据)
        features = cell_marker,                   #绘制的基因
        pt.size = 0.5,                            #图中点的大小
        group.by = "seurat_clusters",             #分组名称
        stack = T,                                #是否将所有基因的图片拼合一起
        same.y.lims = T,                          #是否设置相同的y轴
        flip = F) +                               #是否对坐标轴翻转
  NoLegend()                                      #不绘制图例

#气泡图2
DotPlot(pbmc,                             #seurat对象(数据)
        features = cell_marker,           #绘制的基因
        group.by = "seurat_clusters")     #分组名称

其他

后续会更新富集分析相关内容,敬请期待!

  • 推文多平台同步发布,公众号内容食用更佳
  • 更多内容,请关注微信公众号“生信矿工”
  • 如有意见或建议可以在评论区讨论
公众号二维码
公众号二维码

分类:

后端

标签:

后端

作者介绍

J
Jay2Echo
V1