单细胞基因集打分实操之irGSEA

Immugent在推文一文带你了解单细胞数据基因集打分的所有算法中,介绍了11种常用的对单细胞数据进行基因集打分的算法,其中提到了一个非常给力的R包:irGSEA。它内置了"AUCell", "UCell", "singscore", "ssgsea"四种算法,并且可以将多种基因集的富集分数矩阵直接保存到Seurat对象中,那么这期推文Immugent就给大家用示例数据来演示一下这个包的常见用法。

首先就是包的安装问题,可以参考我前一篇文章的代码。此外,Immugent已经咨询过包的作者,最好是用最新版(4.1) 的R上进行安装,但是小编用R version 4.0.5 (2021-03-31)也装上这个包了,只是在调用其中一个函数时出现了以下问题:

图片

原因是这个包链接到的"GSVA"包函数是最新版的1.40.1;而4.05版本的R只能装低版本的“GSVA"包,能装上的最高版本是1.38.2的。

图片
图片

所以在低版本上即使能装上irGSEA包,其中的 “ssgsea” 算法是不能使用的,但是从专业角度看,"AUCell", "UCell", "singscore"更适用于单细胞数据,所以使用前3种算法就足够使用的了。

好了,下面开始展示具体的用法,为了每位伙伴都能很好的复现,小编就用Seuratdata的数据进行演示。

-------------------------------1.准备数据---------------------------

library(SeuratData)# view all available datasets
View(AvailableData())
InstallData("pbmc3k")# download 3k PBMCs from 10X Genomics

library(Seurat)# loading dataset

data("pbmc3k.final")
pbmc3k.final <- UpdateSeuratObject(pbmc3k.final)
pbmc3k.final
DimPlot(pbmc3k.final, reduction = "umap",
group.by = "seurat_annotations",label = T) + NoLegend()

图片

我们可以看到这是来源于人外周血的单细胞数据,包含各种免疫细胞,其主要分为三大块:B细胞,T细胞和髓系淋巴细胞。下面就是要使用上述的四种方法计算基因集的富集分数了,这里我们使用人的Hallmark数据集来进行展示。

-------------------------------2.计算富集分数---------------------------

library(UCell)
library(irGSEA)

Idents(pbmc3k.final) <- pbmc3k.final$seurat_annotations #定义要分析的细胞亚群
pbmc3k.final <- irGSEA.score(object = pbmc3k.final, assay = "RNA",
slot = "data", seeds = 123, ncores = 1,
min.cells = 3, min.feature = 0,
custom = F, geneset = NULL, msigdb = T,
species = "Homo sapiens", category = "H",
subcategory = NULL, geneid = "symbol",
method = c("AUCell", "UCell", "singscore",
"ssgsea"),
aucell.MaxRank = NULL, ucell.MaxRank = NULL,
kcdf = 'Gaussian')

Seurat::Assays(pbmc3k.final)

这个包最方便的就是可以通过一个函数直接使用4种算法,同时计算目的基因集的富集分数,而且函数还被作者进行优化,使得大大节约了所需计算时间。此外,因为内置了”msigdb“包,我们可以方便的计算人和其它模式物种的各种常见基因集,如GO, KEGG, Hallmark等。

在计算出所有细胞的通路富集分数后,接下来就需要找出差异的通路进行重点分析了。

-------------------------------3.整合差异基因集---------------------------

result.dge <- irGSEA.integrate(object = pbmc3k.final,
group.by = "seurat_annotations",
metadata = NULL, col.name = NULL,
method = c("AUCell","UCell","singscore",
"ssgsea"))

class(result.dge) #> [1] "list"

为了评估基因集是否在某个细胞亚群中富集,irGSEA通过Wilcox检验计算富集分数矩阵中的差异基因集(差异基因的过滤标准为为校正后P值小于0.05)。然后,又通过RobustRankAggreg包中的秩聚合算法(RRA)对差异分析的结果进行综合评估,并筛选出在大部分基因集富集分析方法中显著富集的基因集(综合评估的过滤标准为P值小于0.05)。但是小编感觉这里只能对所有的细胞亚群同时进行统计学检验,而实际应用中我们往往只关注某两群细胞,因此如果未来能开发出像Seurat那样可以做到指定两群细胞进行统计学差异检验那就更完美了。

这个包的另一个亮点就是可以做出很多好看的图,下面就简单做出几个图展示一下

-------------------------------4.可视化展示---------------------------

irGSEA.barplot.plot <- irGSEA.barplot(object = result.dge,
method = c("AUCell", "UCell", "singscore",
"ssgsea"))
irGSEA.barplot

图片

halfvlnplot <- irGSEA.halfvlnplot(object = pbmc3k.final,
method = "UCell",
show.geneset = "HALLMARK-INFLAMMATORY-RESPONSE")
halfvlnplot

图片

ridgeplot <- irGSEA.ridgeplot(object = pbmc3k.final,
method = "UCell",
show.geneset = "HALLMARK-INFLAMMATORY-RESPONSE")
ridgeplot

图片

上面说到我们可以对经典数据集进行分析,但现实操作中我们往往想要对自己构建的目的基因集来进行富集分析,那么下面小编就进行展示如果构建自己的目的基因集;此外,值得一提的是"UCell", "singscore"函数可以通过正反向基因同时进行计算富集分数,那我们接下来就来看一下效果如何

-------------------------------5.个性化分析---------------------------

markers <- list()
markers$TcellN <- c("CD3E+","CD3G+","ITGAE-", "ITGAM-")

markers$TcellY <- c("CD3E+","CD3G+","CD19-","CD79A-","CD79B-","FGFBP2-", "KLRF1-","ITGAE-", "ITGAM-")

pbmc3k.final <- irGSEA.score(object = pbmc3k.final, assay = "RNA", slot = "data", seeds = 123, ncores = 1,msigdb=F, custom = T, geneset = markers, method = c( "UCell", "singscore"), kcdf = 'Gaussian')

scatterplot <- irGSEA.density.scatterplot(object = pbmc3k.final,
method = "singscore",
show.geneset = c("TcellN","TcellY")
reduction = "umap")
scatterplot

图片

咋一看用这两种不同的基因集做出的富集分数很类似,但是细细看来就有不一样的发现。如右边那群髓系淋巴细胞,在没有排除B细胞的marker基因时的得分低于右侧排除后的,这是因为髓系淋巴细胞不表达B细胞的marker,用这种方式做出的综合评分会适当加分,而且这种影响随着基因数目增加而增加;此外,虽然T细胞群和其它群比较颜色上没有差异,但是打分范围右侧高于左侧,也可以认为,髓系的打分没有变,是B细胞群变得更低了,这其实是更有利于发现差异的。

好了,说到这,关于单细胞基因集打分的故事就说完了。接下来小编将会介绍另一个基于bulk数据进行打分的强大R包:IOBR,敬请期待!

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

推荐阅读更多精彩内容