欢迎关注,同名公主号,BBio
一般来说,无论是人工还是软件自动注释,都要先进行无监督的聚类,然后以 cluster为单位进行注释。文章通过比较32款工具的准确性、运行时间等评估各个 工具,并整合了一个R包- AutomaticCellTypeIdentifification。文章发表较早,最新的工具没有收录。
//文献
Automatic cell type identifification methods for single-cell RNA sequencing
//单细胞marker数据库
因为各种各样的原因,自动注释的结果可能不如人意,掌握一些常见细胞类型的经典 marker基因,对于校准自动注释的结果有很大帮助。CellMarker、panglaodb数据库包括人、鼠多个组织的细胞类型marker基因,CancerSEA收集了多个癌种的单细胞数据,提供癌症单细胞功能状态图谱,及相关的基因。
image-20220427141105069.png image-20220427141251503.png
//工具简介
文章将各个工具分为三类,积极学习方法(ACTINN, CaSTLe, CHETAH, clustifyr, Garnett, MarkerCount, MARS, scCapsNet, scClassifR, SciBet, scID, scLearn, scmap-cluster, scMatch, scHPL, scPred, scPretrain, scVI, Seurat, SingleCellNet, SingleR, Superscan)、懒惰 学习方法(CellAtlasSearch, CELLBLAST, CellFishing.jl, scmap-cell)、marker学习方法(CellAssign, DigitalCellSorter, MarkerCount, scCATCH, SCINA, SCSA, scTyper),部分工具包含多种方法。
懒惰学习方法基于训练数据集投影细胞来识别最近的近邻细胞,类似于经典的BLAST方法;积极学习方法首先收集细胞类型信息对训练数据集进行分组,然后将测试细胞映射到最近的组;marker学习方法利用在给定的细胞类型中高度表达的细胞marker,使用数学模型分配细胞类型。
所有的工具都涉及到如何选择feature的问题,一类选择representative gene,比如高表达基因、高变基因、高dropout基因 ,另一类选择transformed gene,比如主成分降维信息。
在细胞类型鉴定时,主要根据相似性进行,比如 cosine similarity、 Spearman correlation、 Euclidean distance 等。部分工具使用一般分类器进行细胞类型鉴定,比如随机森林、线性支持向量机、最大似然评估等。
//结论
在积极学习方法中,clustifyr、scHPL和scPred在各项指标上表现良好。SingleCellNet, SciBet和Seurat在准确性,f1评分和速度方面表现良好。在懒惰学习方法中,CellFishing.jl似乎是最好的方法。在marker学习方法中,SCSA、SCINA、scTyper和CellAssign表现较好。
但是从图中也可以看出,很多软件在速度和准确性方面是非常相似的,那使用的方便程度就是一个非常重要的因素了。
image-20220427140048118.png//SingleR自动注释测试
简单介绍一个使用方便,在线教程非常非常多的一个软件SingleR。
SingleR属于积极学习方法中的一种,发表于2019年,基于训练数据集注释测试数据集。使用高变基因作为feature,使用Spearman相关性分配细胞类型。
- 官方教程
https://www.bioconductor.org/packages/release/bioc/vignettes/SingleR/inst/doc/SingleR.html
- 安装
BiocManager::install("SingleR")
BiocManager::install("scRNAseq")
- SingleR函数进行注释
#一些关键参数
#test:测试数据集的表达矩阵
#ref:训练集的表达矩阵,可以是一个list包含多个矩阵
#labels:对应每个ref矩阵的细胞类型标签
#method:选择按照单个细胞或者cluster进行注释
#quantile:设置相关性的阈值,默认0.8,也不宜过高,毕竟不同的数据集还是存在异质性的
- 测试
library(SingleR)
library(scRNAseq)
#训练集
sceM <- MuraroPancreasData()
sceM <- sceM[,!is.na(sceM$label)]
library(scuttle)
sceM <- logNormCounts(sceM)
#测试集
sceG <- GrunPancreasData()
sceG <- sceG[,colSums(counts(sceG)) > 0] # Remove libraries with no counts.
sceG <- logNormCounts(sceG)
sceG <- sceG[,1:100]
#SingleR函数进行注释
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
- trainSingleR函数进行训练数据集
最新版本的SingleR也支持使用marker训练了。
image-20220427184100627.png#genes:指定feature selection方法或者直接指定每个label的marker基因,默认使用差异分析鉴定到的高变基因
trainSingleR(ref, ref$label, genes="de")
网友评论