GSEA学习笔记

Gene set enrichment analysis, 基因集富集分析

1、算法思想

对某基因Knock down和WT做差异表达分析之后,得到差异表达基因list,按照某个统计量,比如fold change,从小到大排序,得到一个rank list,记录为L
假设某个通路的所有基因在L中随机分布,假如我们能观测到某通路的所有基因突然富集与L中的一端,计算其富集程度和统计显著性,如果小于某个cutoff,那么我们就可以拒绝原假设,认为该通路在L中富集,并且通过富集程度的打分,如果为正,则该通路倾向于在上调的基因中富集,如果为负,则该通路倾向于在下调的基因中富集。
在GSEA对应的软件中,用normalized enrichment score(NES)作为富集程度的度量,用p值和FDR作为统计显著性的度量,
收集的基因集的数据库叫做MSigDB;

特定的基因集合可以从GO、KEGG、Reactome、hallmark或MSigDB等基因集中获取,其中MSigDB数据库整合了上述所有基因集。研究者也可自定义gene set (即新发现的基因集或其它感兴趣的基因的集合)

image

H: hallmark gene sets (效应)特征基因集合,共50组;
C1: positional gene sets 位置基因集合,根据染色体位置,共326个;
C2: curated gene sets:(专家)共识基因集合,基于通路、文献等(包括KEGG);
C3: motif gene sets:模式基因集合,主要包括microRNA和转录因子靶基因两部分;
C4: computational gene sets:计算基因集合,通过挖掘癌症相关芯片数据定义的基因集合;
C5: GO gene sets:Gene Ontology 基因本体论(包括BP/CC/MF);
C6: oncogenic signatures:癌症特征基因集合,大部分来源于NCBI GEO 未发表芯片数据;
C7: immunologic signatures: 免疫相关基因集合。

2、与GO的区别

类似但又有所不同:GO分析更加依赖差异基因,实则是对一部分基因的分析 (忽略差异不显著的基因),而GSEA是从全体基因的表达矩阵中找出具有协同差异 (concordant differences)的基因集,故能兼顾差异较小的基因
GO富集是定性的分析,GSEA考虑到了表达或其它度量水平的值的影响。GSEA分析不需要指定阈值(p值或FDR)来筛选差异基因,在没有经验存在的情况下分析我们感兴趣的基因集,而这个基因集不一定是显著差异表达的基因。GSEA分析可以将那些GO/KEGG富集分信息中容易遗漏掉的差异表达不显著却有着重要生物学意义的基因包含在内。
另外,对于时间序列数据或样品有定量属性时,GSEA的优势会更明显,不需要每个分组分别进行富集,直接对整体进行处理。可以类比于WGCNA分析。
差异基因排序度量的选取

case-control样本而言(每个样本至少三个重复)

μ为均值, 为标准差
image

连续表型的样本,如时间序列表达谱,可以选下列统计量
Pearson 相关系数
Cosine
Manhattan measure
Euclidean measure

3、 GSEA计算中的几个关键概念

计算富集得分 (ES, enrichment score).

ES反应基因集成员s在排序列表L的两端富集的程度。计算方式是,从基因集L的第一个基因开始,计算一个累计统计值。当遇到一个落在s里面的基因,则增加统计值。遇到一个不在s里面的基因,则降低统计值

每一步统计值增加或减少的幅度与基因的表达变化程度(更严格的是与基因和表型的关联度,可能是fold-change,也可能是pearson corelation值)是相关的,可以是线性相关,也可以是指数相关

富集得分ES最后定义为最大的峰值。正值ES表示基因集在列表的顶部富集,负值ES表示基因集在列表的底部富集。

评估富集得分(ES)的显著性

通过基于表型而不改变基因之间关系的排列检验 (permutation test)计算观察到的富集得分(ES)出现的可能性。若样品量少,也可基于基因集做排列检验 (permutation test),计算p-value。

多重假设检验校正
首先对每个基因子集s计算得到的ES根据基因集的大小进行标准化得到Normalized Enrichment Score (NES)。随后针对NES计算假阳性率。(计算NES也有另外一种方法,是计算出的ES除以排列检验得到的所有ES的平均值)

Leading-edge subset,对富集得分贡献最大的基因成员,领头亚集

该处有3个统计值,tags=59%表示核心基因占该基因集中基因总数的百分比;list=21%表示核心基因占所有基因的百分比;signal=74%,将前两项统计数据结合在一起计算出的富集信号强度,计算公式如下:

image

其中n是列表中的基因数目,nh是基因集中的基因数目

4、结果解释

富集分析的图示,该图示分为三部分,在图中已做标记:
image

第一部分是Enrichment score折线图:显示了当分析沿着排名列表按排序计算时,ES值在计算到每个位置时的展示。最高峰处的得分 (垂直距离0.0最远)便是基因集的ES值。

第二部分,用线条标记了基因集合中成员出现在基因排序列表中的位置,黑线代表排序基因表中的基因存在于当前分析的功能注释基因集。leading edge subset 就是(0,0)到绿色曲线峰值ES出现对应的这部分基因。在ES图中出现领头亚集的形状,表明这个功能基因集在某处理条件下具有更显著的生物学意义

第三部分是排序后所有基因rank值得分布,热图红色部分对应的基因在NGT中高表达,蓝色部分对应的基因在DMT中高表达,每个基因对应的信噪比(Signal2noise,前面选择的排序值计算方式)以灰色面积图显展示。

image

一般认为|NES|>1,NOM p-val<0.05,FDR q-val<0.25的通路是显著富集的。

5、操作

南方医科大的余光创教授(人称Y叔)开发出了特别好用的进行各种富集分析的R包clusterProfiler,这个包里也集成了GSEA分析的功能,有两种算法可选,一种是Y叔自己写的DOSE包里的,根据GSEA原始文献的算法实现的函数 ,一种是俄国人开发的fgsea包实现的快速GSEA算法,默认为fgsea算法。

clusterProfiler

gsea.raw<-GSEA(geneList = gene_List.entrez,nPerm=1000,pvalueCutoff = 1,TERM2GENE=gene_set)
print(head(gsea.raw@result)) 
gsea.go<- gseGO(geneList = gene_List.entrez,ont="BP",OrgDb = org.Hs.eg.db,keyType = "ENTREZID",pvalueCutoff = 1,nPerm = 2)
 print(head(gsea.go@result))
gsea.kegg<- gseKEGG(geneList = gene_List.entrez,organism = "hsa",keyType = "kegg",pvalueCutoff = 1,nPerm = 2)
 print(head(gsea.kegg@result)) 

可视化

 ridgeplot(Go_Reactomeresult, 10) # 输出前十个结果,查看terms对应基因的上下调方向
image
barplot() #图的呈现效果和常规GO分析一样
 dotplot() #图的呈现效果和常规GO分析一样
cowplot::plot_grid(p1, p2, p3) # use plot_grid() to combine multiple plot in one figure.
cnetplot() # 获取不同富集terms间的共同基因,加上表达数据也可以看上或下调方向
image
heatplot() # 获取不同富集terms间的共同基因,加上表达数据也可以看上或下调方向
image
emapplot() # 不同terms之间的关系
image
compareCluster()
emapplot()
image
upsetplot() # 不同富集terms之间的共同基因
image
browseKEGG(kk, "hsa04934")
image

也可以绘制特定通路

pathview(gene.data  = geneList,
                     pathway.id = "hsa04750", #上述结果中的hsa04750通路
                     species    = "hsa",
                     limit      = list(gene=max(abs(geneList)), cpd=1))



写在后面

图可以各种海量得画,终归是术,但要想给这些图一个有趣的灵魂,还需要设计出好的故事,修炼道的水准才能真正提高文章的质量~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念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

推荐阅读更多精彩内容