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