一文带你了解单细胞数据基因集打分的所有算法

上一周Immugent写了一篇一文解决单细胞亚群注释的所有问题,引出了单细胞测序技术的面临的几大未解决的技术难题,其中最主要的一个问题就是由于测序深度不足产生的"dropout"现象。这使得很多情况下所见非所得,傻傻分不清有些基因表达量很低,是因为没有测到还是本身没有表达。对于这种现象很多研究者给出了自己的解决方法,其中最主要的一大类就是通过对包含多个基因的基因集综合打分来评估细胞的某一项功能,比如IL10在单细胞的数据中没有检测到其表达量,但是我们可以通过基于对整个IL10-signaling通路的打分来比较某两类细胞亚群抑制功能的强弱。

其实这种理念我们并不陌生,在普通的RNA-seq数据中也比较常用,只不过在那种场景下是对上下调基因做的GO, KEGG富集分析,所有的这些算法都是基于基因联动的理论。那是因为在通常情况下,细胞行驶某一项功能,不是仅仅依赖于某一个基因,它的上下游会有很多基因随着功能的强弱都同时出现变化。研究者在测量细胞某一项功能时,对影响某一细胞功能出现变化的所有基因进行整理归纳,就成了我们熟知的各种基因集了,目前对各类基因集总结最好的就是BROAD研究所的MSigDB数据库了(https://www.gsea-msigdb.org)。

图片

有了描述各种各样细胞功能的基因集,我们就需要找出合适的针对单细胞数据基因集打分的算法。因为单细胞数据的分布不符合任何一种经典的统计学分布,因此基于bulk数据开发出的富集分析的算法并不是很适用于单细胞数据。就在小编整理这些对单细胞数据基因集打分的算法时,偶然发现一个神奇的R包 irGSEAhttps://github.com/chuiqin/irGSEA/),后来惊奇发现它竟是我一个朋友写的,这里手动@一下范垂钦同学,真是大佬就在身边呀。然而让小编感叹的不仅如此,还有一位朋友写的R包都发表文章了,等写完这个系列小编会介绍那个R包的功能。

图片

通过文献检索,小编找到了11种常用的对单细胞数据进行基因集打分算法:GSEA、GSVA、Pagoda2、Vision、PLAGE、Zscore、AddModuleScore、ssGSEA、AUCell、UCell和singscore。其中GSEA, GSVA和ssGSEA想必大家多有耳闻,因为它们也是在bulk数据中常用的富集分析方法,目前各大平台介绍的有很多了,小编在这里对这几种算法就不再赘述,大家可以通过搜索对应的帖子来学习一下。

基于单细胞数据对基因集打分的总体的流程可以通过下图来理解一下,首先我们需要对单细胞数据进行简单的处理,把低质量的细胞和基因去除;然后通过各种对基因集进行打分的算法,对每个细胞的功能进行综合评估;基于不同的测序平台和数据量,通过对比各种算法的准确性、稳定性和可扩展性,找出最适合的算法运用于实际分析。

图片

AddModuleScore是Seurat内置的对基因集进行打分的算法,因为目前很多研究者都是使用Seurat进行分析单细胞数据,而这个算法在Seurat的流程中,其在各大期刊发表的文章中都有使用。其在使用时需要先计算基因集中所有基因的平均值,再根据平均值把表达矩阵切割成若干份,然后从切割后的每一份中随机抽取对照基因(基因集外的基因)作为背景值。因此,在整合不同样本的情况下,即使使用相同基因集为相同细胞打分,也会产生不同的富集评分。从本质上看它和Zscore的算法很类似,Zscore又称Z值,原是一个统计学概念,表示的是个体测量值X以标准差σ为单位,偏离总体均数μ的距离,即:Z score=(X-μ)/σ。牵扯到统计学的概念不免有些难以理解,简单说它就是处理过的平均值。

Pagoda2是一个专门设计出在从scRNA-seq数据中检测细胞异质性的计算框架。该方法对每个细胞拟合一个误差模型来描述其特性,然后对细胞中每个基因的残差进行再归一化。最后,利用每个基因的第一加权主成分对整个基因集打分从而对功能通路进行量化。有一篇发表在Comput Struct Biotechnol J (IF:7.3)杂志上的文章综合评估了7种基于单细胞数据进行基因集打分的算法后发现,Pagoda2在各项指标中都表现良好,大家可以学习一下这个算法。

图片

然后说一下Vision算法,它是使用自相关统计来识别细胞间生物变异的注释工具包。Vision开始识别每个细胞的最近值 k,生成一个细胞与细胞的k近邻图 (KNN)。Vision中对基因集打分是通过平均基因集的所有基因表达来计算的。为了考虑样本级别度量(每个细胞的UMI)的影响,最终分值将根据其平均值和标准偏差进行校正。特别需要注意的是在Vision中使用的表达式数据可以缩放和归一化,但不能进行log-transformed转换。

最后重点说一下singscoreUcell算法,它俩都是专门针对单细胞数据开发出的对基因集进行评分的算法,特点是相较于其它算法,它们能够囊括既包括正向基因,也包括负向基因的基因集。例如想揭示CD4 T细胞和CD8 T细胞,就可以在CD4(+),CD8(-)和CD4(-)CD8(+)的两个数据集分别对细胞群进行打分,可以得到更高的差异值。但是特别注意的是在使用这种数据集时,对每个基因的判定很重要,对于很确定的基因可以使用,但对不太确定的基因应该避免使用。

irGSEA包内置了"AUCell", "UCell", "singscore", "ssgsea"四种算法,而且相对于原版的函数,irGSEA对ssgsea算法进行了优化,而且AUCell的运算速度也提升了很多,最重要的是内置了Seurat包,因此可以将多种基因集的富集分数矩阵直接保存到Seurat对象中,总之就是很轻便。

最后附上irGSEA包的安装方法,因为这个包里面嵌入了很多新的函数,需要使用最新的4.1版本的R进行安装。

install packages from CRAN

cran.packages <- c("msigdbr", "dplyr", "purrr", "stringr","magrittr",
"RobustRankAggreg", "tibble", "reshape2", "ggsci",
"tidyr", "aplot", "ggfun", "ggplotify", "ggridges",
"gghalves", "Seurat", "SeuratObject", "methods",
"devtools", "BiocManager","data.table","doParallel",
"doRNG")
if (!requireNamespace(cran.packages, quietly = TRUE)) {
install.packages(cran.packages, ask = F, update = F)
}

install packages from Bioconductor

bioconductor.packages <- c("GSEABase", "AUCell", "SummarizedExperiment",
"singscore", "GSVA", "ComplexHeatmap", "ggtree",
"Nebulosa")
if (!requireNamespace(bioconductor.packages, quietly = TRUE)) {
BiocManager::install(bioconductor.packages, ask = F, update = F)
}

install packages from Github

if (!requireNamespace("UCell", quietly = TRUE)) {
devtools::install_github("carmonalab/UCell")
}
if (!requireNamespace("irGSEA", quietly = TRUE)) {
devtools::install_github("chuiqin/irGSEA")
}

好啦,本期推文说到这就要结束了,下次小编将会用实例数据对irGSEA包的分析结果进行展示,敬请期待!


[参考文献]

Zhang Y, Ma Y, Huang Y, Zhang Y, Jiang Q, Zhou M, Su J. Benchmarking algorithms for pathway activity transformation of single-cell RNA-seq data. Comput Struct Biotechnol J. 2020 Oct 15;18:2953-2961. doi: 10.1016/j.csbj.2020.10.007.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343

推荐阅读更多精彩内容

  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,229评论 0 3
  • 不知不觉易趣客已经在路上走了快一年了,感觉也该让更多朋友认识知道易趣客,所以就谢了这篇简介,已做创业记事。 易趣客...
    Physher阅读 3,407评论 1 2
  • 双胎妊娠有家族遗传倾向,随母系遗传。有研究表明,如果孕妇本人是双胎之一,她生双胎的机率为1/58;若孕妇的父亲或母...
    邺水芙蓉hibiscus阅读 3,695评论 0 2
  • 晴天,拥抱阳光,拥抱你。雨天,想念雨滴,想念你。 我可以喜欢你吗可以啊 我还可以喜欢你吗可以,可是你要知道我们不可...
    露薇霜凝阅读 1,202评论 1 2