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

作者: 生信编程日常 | 来源:发表于2020-04-27 23:25 被阅读0次

    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
    ##                                        <matrix>          <character>
    ## 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
    ##                         <DataFrame>          <character>          <character>
    ## 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

    欢迎关注微信公众号:生信编程日常


    公众号二维码.jpg

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

    相关文章

      网友评论

        本文标题:单细胞||SingleR鉴定细胞类型

        本文链接:https://www.haomeiwen.com/subject/hitpwhtx.html