单细胞||SingleR鉴定细胞类型

SingleR是用于单细胞RNA测序(scRNAseq)数据的自动注释方法(Aran et al.2019)。给定具有已知标签的样本(单细胞或RNAseq)参考数据集,它将基于与参考数据的相似性标记测试数据集中的新细胞。具体来说,对于每个测试单元:

  1. 计算其表达谱与每个参考样品的表达谱之间的Spearman相关性。
  2. 将每个标签的分数定义为相关性分布的fixed quantile(默认为0.8)。
  3. 对所有标签重复此操作,然后将得分最高的标签作为此细胞的注释。
  4. 选择性执行微调

安装

BiocManager::install("SingleR")
BiocManager::install("scRNAseq")

SingleR通过专用的数据检索功能提供了多个参考数据集(主要来自大量RNA-seq或微阵列数据)。例如,我们使用HumanPrimaryCellAtlasData()函数从人类原代细胞图集获得参考数据,该函数返回一个SummarizedExperiment对象,该对象包含带有样本级标签的对数表达值矩阵。

1.使用内置的参考

library(SingleR)
hpca.se <- HumanPrimaryCellAtlasData()
hpca.se

导入要检测的数据集

我们的测试数据集将取自La Manno et al. (2016)。
为了提高速度,我们只选取100个细胞来标记细胞类型。

library(scRNAseq)
hESCs <- LaMannoBrainData('human-es')
hESCs <- hESCs[,1:100]
# SingleR() expects log-counts, but the function will also happily take raw
# counts for the test dataset. The reference, however, must have log-values.
library(scater)
hESCs <- logNormCounts(hESCs)

使用hpca.se作为参考对测试数据集hESCs通过SingleR()进行注释

默认的检测marker的方法是largest positive log-fold changes in the per-label medians for each gene.
输出的每一行都包含单个细胞的预测结果。在 fine-tuning(first.labels)之前, fine-tuning()之后labels和after pruning (pruned.labels)之后的细胞标签,以及相关的分数。

pred.hesc <- SingleR(test = hESCs, ref = hpca.se, labels = hpca.se$label.main)
pred.hesc
## DataFrame with 100 rows and 5 columns
##                                          scores         first.labels
##                                                  
## 1772122_301_C02  0.347652:0.109547:0.123901:... Neuroepithelial_cell
## 1772122_180_E05  0.361187:0.134934:0.148672:... Neuroepithelial_cell
## 1772122_300_H02  0.446411:0.190084:0.222594:... Neuroepithelial_cell
## 1772122_180_B09  0.373512:0.143537:0.164743:... Neuroepithelial_cell
## 1772122_180_G04  0.357341:0.126511:0.141987:... Neuroepithelial_cell
## ...                                         ...                  ...
## 1772122_299_E07 0.371989:0.169379:0.1986877:... Neuroepithelial_cell
## 1772122_180_D02 0.353314:0.115864:0.1374981:... Neuroepithelial_cell
## 1772122_300_D09 0.348789:0.136732:0.1303042:... Neuroepithelial_cell
## 1772122_298_F09 0.332361:0.141439:0.1437860:... Neuroepithelial_cell
## 1772122_302_A11 0.324928:0.101609:0.0949826:... Neuroepithelial_cell
##                       tuning.scores               labels        pruned.labels
##                                             
## 1772122_301_C02 0.1824402:0.0991116 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_180_E05 0.1375484:0.0647134              Neurons              Neurons
## 1772122_300_H02 0.2757982:0.1369690 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_180_B09 0.0851623:0.0819878 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_180_G04 0.1988415:0.1016622 Neuroepithelial_cell Neuroepithelial_cell
## ...                             ...                  ...                  ...
## 1772122_299_E07 0.1760025:0.0922504 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_180_D02 0.1967609:0.1124805 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_300_D09 0.0816424:0.0221368 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_298_F09 0.1872499:0.0671893 Neuroepithelial_cell Neuroepithelial_cell
## 1772122_302_A11 0.1560800:0.1051322            Astrocyte            Astrocyte

统计细胞个数

table(pred.hesc$labels)
## 
##            Astrocyte Neuroepithelial_cell              Neurons 
##                   14                   81                    5

2.使用单个细胞参考

在这里,我们将使用两个人类胰腺数据集。目的是使用一个预先标记的数据集注释另一个未标记的数据集。

library(scRNAseq)
sceM <- MuraroPancreasData()
#移除未标记的细胞
sceM <- sceM[,!is.na(sceM$label)]
sceM <- logNormCounts(sceM)
sceG <- GrunPancreasData()
sceG <- sceG[,colSums(counts(sceG)) > 0] # Remove libraries with no counts.
sceG <- logNormCounts(sceG) 
#选取100个测试
sceG <- sceG[,1:100]

SingleR(),与之前一样的用法,但是这次使用了marker检测模式,该模式考虑了跨细胞种类表达的差异。在这里,将使用Wilcoxon ranked sum test来识别marker。与默认检测算法相比,此方法更慢,但更适合单细胞数据。

pred.grun <- SingleR(test=sceG, ref=sceM, labels=sceM$label, de.method="wilcox")
table(pred.grun$labels)
## 
## acinar   beta  delta   duct 
##     53      4      2     41

3.对细胞分数可视化

SingleR提供了强大的可视化工具。 plotScoreHeatmap()显示所有参考标签上的分数,这使用户可以检查整个数据集中预测标签的置信度。每个细胞的实际分配标签显示在顶部。理想情况下,每个cell(即热图的一列)应具有一个明显大于其余得分的分数,表明已将其明确分配给标签。

plotScoreHeatmap(pred.grun)
image.png

欢迎关注!

reference:
https://www.nature.com/articles/s41590-018-0276-y
https://bioconductor.org/packages/devel/bioc/vignettes/SingleR/inst/doc/SingleR.html

你可能感兴趣的:(单细胞||SingleR鉴定细胞类型)