7.5 使用SingleR进行细胞类型注释
基于我们找到的marker,我们可以挖掘文献并鉴定每种观察到的细胞类型。我们也可以尝试使用SingleR进行自动注释。
首先从celldex包中获取参考数据集。注意有两种细胞类型标签,label.main
和label.fine
。我们将只基于Monaco免疫数据库运行注释,您也可以使用另外两个数据库以比较生成的自动注释结果。
> monaco.ref <- celldex::MonacoImmuneData()
为了方便起见,我们将Seurat对象转换为SCE对象,这样使用SingleR
会变得非常容易:
> sce <- as.SingleCellExperiment(DietSeurat(srat))
> sce
class: SingleCellExperiment
dim: 36601 8824
metadata(0):
assays(2): counts logcounts
rownames(36601): MIR1302-2HG FAM138A ... AC007325.4 AC007325.2
rowData names(0):
colnames(8824): AAACCCACATGTAACC-1 AAACCCAGTGAGTCAG-1 ...
TTTGTTGTCGTTATCT-1 TTTGTTGTCTTTGCTA-1
colData names(18): orig.ident nCount_RNA ... SCT_snn_res.0.9 ident
reducedDimNames(0):
mainExpName: RNA
altExpNames(1): SCT
> monaco.main <- SingleR(test = sce,
assay.type.test = 1,
ref = monaco.ref,
labels = monaco.ref$label.main)
> monaco.fine <- SingleR(test = sce,
assay.type.test = 1,
ref = monaco.ref,
labels = monaco.ref$label.fine)
细胞类型注释的结果与我们的预期十分吻合。
> table(monaco.main$pruned.labels)
B cells CD4+ T cells CD8+ T cells Dendritic cells Monocytes
740 2343 1404 202 2986
NK cells Progenitors T cells
305 18 725
追求更精细的细胞类型注释,就越难获得更可靠的结果。这时,比较多个数据库以及使用文献中的单个marker就变得非常有价值。
> table(monaco.fine$pruned.labels)
Central memory CD8 T cells Classical monocytes
158 2453
Effector memory CD8 T cells Exhausted B cells
31 33
Follicular helper T cells Intermediate monocytes
250 348
MAIT cells Myeloid dendritic cells
131 137
Naive B cells Naive CD4 T cells
354 1236
Naive CD8 T cells Natural killer cells
1237 294
Non classical monocytes Non-switched memory B cells
153 253
Non-Vd2 gd T cells Plasmablasts
150 12
Plasmacytoid dendritic cells Progenitor cells
78 15
Switched memory B cells T regulatory cells
82 262
Terminal effector CD4 T cells Terminal effector CD8 T cells
42 83
Th1 cells Th1/Th17 cells
163 212
Th17 cells Th2 cells
184 220
Vd2 gd T cells
157
将注释添加到Seurat对象元数据中,以便使用它们:
> srat@meta.data$monaco.main <- monaco.main$pruned.labels
> srat@meta.data$monaco.fine <- monaco.fine$pruned.labels
最后,让我们将精细的注释可视化。
> srat <- SetIdent(srat, value = "monaco.fine")
> DimPlot(srat, label = T , repel = T, label.size = 3) + NoLegend()
Warning message:
ggrepel: 7 unlabeled data points (too many overlaps). Consider increasing max.overlaps
比较从三个来源获得的标签,可以看到许多有趣的差异。整理这些差异需要人工处理,也反映出许多信息丰富的注释。例如,cluster 17被重复识别为浆B细胞,这个独特的亚群显示CD38和CD59等marker。
> FeaturePlot(srat,"CD38") +
scale_colour_gradientn(colours = rev(brewer.pal(n = 11, name = "Spectral")))
> FeaturePlot(srat,"CD59") +
scale_colour_gradientn(colours = rev(brewer.pal(n = 11, name = "Spectral")))
类似地,cluster 16被鉴定为MAIT细胞。文献表明,血液MAIT细胞的特点是高表达CD161(KLRB1)和CXCR6等趋化因子。事实似乎确实如此;但这种细胞类型更难评估。
> FeaturePlot(srat,"KLRB1") +
scale_colour_gradientn(colours = rev(brewer.pal(n = 11, name = "Spectral")))
> FeaturePlot(srat,"CXCR6") +
scale_colour_gradientn(colours = rev(brewer.pal(n = 11, name = "Spectral")))
总的来说,即使是PBMC这样的简单示例也表明细胞类型注释有多么复杂,以及需要付出多少努力。有一本关于如何使用singleR
进行细胞类型注释/标签转移的详细书籍可供参考(https://bioconductor.org/books/3.12/SingleRBook/)。
往期内容:
重生之我在剑桥大学学习单细胞RNA-seq分析——7. 使用Seurat进行单细胞RNA测序分析(1)
重生之我在剑桥大学学习单细胞RNA-seq分析——7. 使用Seurat进行单细胞RNA测序分析(2)
重生之我在剑桥大学学习单细胞RNA-seq分析——7. 使用Seurat进行单细胞RNA测序分析(3)