前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >celldex数据库及singleR自动注释使用

celldex数据库及singleR自动注释使用

原创
作者头像
生信漫漫学
修改2024-07-27 11:21:37
2620
修改2024-07-27 11:21:37
举报
文章被收录于专栏:单细胞

写在开头

之前在摸索使用singleR自动注释的时候,整理了以自建参考数据库并使用的推文:

不过一直没有使用singleR自己有的celldex数据包里面的参考数据库,所以这期就一起来看看下载需要的celldex参考数据库,以及使用singleR注释的方法。

下载参考数据库

因为singleR是把参考数据库打包放在celldex包里面的,所以首先我们肯定需要安装这个包

目前celldex包已经是上传到Bioconductor里面,所以直接用BiocManager::install("celldex")安装即可

目前celldex主要是7个数据库,5个人类的以及两个小鼠的,在之前也简单介绍过了这些数据库。

那我们下载两个人类常用的数据库,Human primary cell atlas (HPCA)Blueprint/ENCODE

如果想要直下载到本地的话,可能比较考验网速

代码语言:r
复制
hpca.se <- HumanPrimaryCellAtlasData()

hpca.se <- celldex::HumanPrimaryCellAtlasData()

下载失败的话,可以考虑的解决方法——切换网络或者求助。

不过我发现,在服务器上是可以正常下载下来的,所以先使用服务器端的Rstudio下载保存好Rdata文件,再传到本地即可!

代码语言:r
复制
hpca.se <- HumanPrimaryCellAtlasData()
save(hpca.se,file = 'hpca.RData')

bpe.se <- BlueprintEncodeData()
save(bpe.se,file = 'bpe.RData')

使用singleR自动注释

参考了胃癌文献复现中对T细胞亚群细分注释的代码

代码语言:r
复制
# singleR注释
library(celldex)
library(SingleR)

#加载需要的数据库文件,从服务器下载到本地
load('hpca.RData')
load('bpe.RData')

上次就直接无脑套用了同事的代码,她用来细分T细胞亚群,我就依葫芦画瓢用来分析B细胞亚群。现在仔细看看代码,还是有值得思考的地方!

PS:谨防无脑套代码!

1. 查看不同的参考数据库的注释信息

代码语言:r
复制
#查看注释信息情况
unique(hpca.se$label.main)
unique(hpca.se$label.fine)
unique(bpe.se$label.main)
unique(bpe.se$label.fine)

通过查看两个参考数据库的注释信息,hpca.se$label.fine相较于hpca.se$label.main会分的非常细致,甚至注明了DC细胞的起源,如果不需要这么细节那我们选取hpca.se$label.main即可

同理可以看看bpe.se数据库的注释情况,选择需要的列作为我们的labels

2. 使用两个参考数据库共同注释

又和二由老师学到新的一招,就是使用两个数据库共同注释我们的细胞亚群,在singleR的帮助文档里说明只要将其整理为list即可

代码语言:r
复制
#整理数据并注释
str(sce)
anno <- SingleR(sce@assays$RNA$data,
                ref = list(BP=bpe.se,HPCA=hpca.se),
                labels = list(bpe.se$label.fine,hpca.se$label.main),
                clusters = sce@meta.data$seurat_clusters
)

使用singleR进行注释的时候,有几个关键参数:

  • test

单细胞表达值的数字矩阵,其中行是基因,列是细胞。或者,一个summarizedexexperiment对象包含这样一个矩阵。

可以使用sce@assays$RNA$data获取,或者先取出需要的数据存为一个对象testdata <- GetAssayData(sce.all, layer="data")

  • ref

来自参考数据集的表达式值的数值矩阵(通常是对数变换),或包含这样一个矩阵的summarizedexexperiment对象

如果提供的数据包含多个参考样本,可以是一个包含多个SummarizedExperiment对象或数值矩阵的列表。

  • labels

labels参数是一个字符向量或因子,包含所有样本的已知注释情况。

如果ref是一个列表,labels也应该是一个列表,且长度与ref相同。列表的每个元素应包含一个字符向量或因子,指定对应ref条目的注释信息。

  • clusters

分析中中每个单元的特征向量或簇身份因子。如果设置,则对聚合的集群概要文件执行注释,否则默认为每个单元注释。所以也可以不指定。

3. 使用plotScoreHeatmap可视化

plotScoreHeatmap可以创建所有细胞标签组合的SingleR分配分数的热图

代码语言:r
复制
plotScoreHeatmap(anno,clusters = anno@rownames,show_colnames = T)

将注释结果保存到seurat对象里

代码语言:r
复制
#创建一个clusters对应的注释信息
celltype = data.frame(ClusterID=rownames(anno), 
                      celltype=anno$labels, 
                      stringsAsFactors = F) 

#新增一列匹配多有的注释信息
sce@meta.data$singleR = celltype[match(sce@meta.data$seurat_clusters,celltype$ClusterID),'celltype']
table(sce$singleR)

#可视化
celltype_tsne = DimPlot(sce, reduction = "tsne",cols = my36colors,pt.size = 0.8,
                        group.by = "singleR",label = T)  +
  theme_dr(xlength = 0.22, ylength = 0.22, arrow = grid::arrow(length = unit(0.15, "inches"), type = "closed"))+
  theme(panel.grid = element_blank())

celltype_tsne

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在开头
  • 下载参考数据库
  • 使用singleR自动注释
  • 将注释结果保存到seurat对象里
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档