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

2024-07-27 11:21:37 浏览数 (2)

写在开头

之前在摸索使用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

0 人点赞