知识分享| 转录组个性化分析(2)——GSEA

       上一期中给大家介绍了拟时序分析的意义及具体的分析过程,本期继续给大家带来转录组个性化分析——GSEA。废话不多说,干货直接奉上!

1 GSEA基本概念

       基因集富集分析(Gene Set Enrichment Analysis,GSEA):用一个预先定义的基因集中的基因来评估在与表型相关度排序的基因表中的分布趋势,从而判断其对表型的贡献。

2 GSEA原理

(1) 背景基因排序:将全部基因按照某种指标(差异分析p值,表型相关性,表达量等)进行排序,比如log2FC排序。

(2) 目标基因富集:将某个特定类型的基因在排序表中标出,目标基因可以是某个通路或GO terms的基因等。

(3) 计算富集分数:使用加权法,计算ES值变化。对位于中部(与性状相关性低)的部分采用较小的权值,所以越集中在两端,与表型的相关性越高。ES曲线最大值为富集分数(Enrichment Score)。

(4) Permutation test:对基因集的ES值进行显著性检验及多重假设检验,从而计算出显著富集的基因集。

3 GSEA分析的作用

       GSEA和常规的GO、KEGG的差异在于,GSEA使用的是基因集,传统的富集分析不需要考虑基因表达量的变化趋势,其算法的核心只关注这些差异基因的分布是否和随机抽样得到的分布一致,即使后期在可视化时,我们在通路图上用不同颜色标记了上下调的基因,但是由于没有采用有效的统计学手段去分析这条通路下所有差异基因的总体变化趋势,这使得传统的富集分析结果无法回答如下问题:一个富集到的通路下,既有上调差异基因,也有下调差异基因,那么这条通路总体的表现形式究竟是怎样呢,是被抑制还是激活?或者更直观点说,这条通路下的基因表达水平在实验处理后是上升了呢,还是下降了呢?

       想要知道进行了差异分析的两组有什么功能和通路的差别,手上有大部分的功能分子以及对应的值,这个值可以是 logFC。可以用这个 logFC作为分子的排序,从而来评估在预先定义的基因集中是否显著富集。

4 GSEA分析代码

library(DO.db)

require(DOSE)

library(clusterProfiler)

library(AnnotationHub)

library(readr)

library("genefilter")

library(pheatmap)

library(tidyverse)

library(DESeq2)

library(ggplot2)

library(export)

library(enrichplot)

library(Rgraphviz)

#构造图片输出函数,need input filename width height

#函数依赖export包

out_img <- function(filename,pic_width=5,pic_height=7){

 graph2png(file=filename,width=pic_width,height=pic_height)

 graph2ppt(file=filename,width=pic_width,height=pic_height)

 graph2tif(file=filename,width=pic_width,height=pic_height)

}

#all_entrez.csv的第一列是entrezid,第二列是FoldChange的值。

#gse需要单独做数据格式

d <- read.csv("all_entrez.csv")

geneList <- d[,2]

names(geneList)=as.factor(d[,1])

geneList <- sort(geneList,decreasing = TRUE)


#gseGO进行GSEA分析

#参考连接https://yulab-smu.github.io/clusterProfiler-book/chapter12.html

###gseBP <- gseGO(geneList=geneList,ont="BP",OrgDb=maize,keyType = 'ENTREZID',nPerm = 50000,minGSSize = 100,maxGSSize = 6000,pvalueCutoff = 0.05,verbose = FALSE)


############# GSEA CC 模式 start

ego3 <- gseGO(geneList = geneList,OrgDb = maize,ont = "CC",nPerm = 1000,minGSSize = 100,maxGSSize = 1000,pvalueCutoff = 0.05,verbose = FALSE)

write.csv(ego3,file = "GESA-GO_CC.csv")

#ridgeline plot for expression distribution of GSEA result

ridgeplot(ego3)

out_img(filename = "ridgeplot_CC",pic_width = 12,pic_height = 12)

#只显示值最高的一组的信息

#gseaplot(ego3,geneSetID = 1,by="runningScore",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,by="preranked",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,title=ego3$Description[1])


#显示前4组信息

gseaplot2(ego3,geneSetID = 1:4, ES_geom = "dot",pvalue_table = TRUE)

out_img(filename = "gseaplot_CC",pic_width=12,pic_height = 10)


#gsearank(ego3,1,title=ego3[1,"Description"])

############GSEA CC 模式end


############# GSEA BP 模式 start

ego2 <- gseGO(geneList = geneList,OrgDb = maize,ont = "BP",pvalueCutoff = 0.05,verbose = FALSE)

write.csv(ego2,file = "GESA-GO_BP.csv")

#ridgeline plot for expression distribution of GSEA result

ridgeplot(ego2)

out_img(filename = "ridgeplot_BP",pic_width = 12,pic_height = 12)

#只显示值最高的一组的信息

#gseaplot(ego3,geneSetID = 1,by="runningScore",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,by="preranked",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,title=ego3$Description[1])


#显示前4组信息

gseaplot2(ego2,geneSetID = 1:4, ES_geom = "dot",pvalue_table = TRUE)

out_img(filename = "gseaplot_BP",pic_width=12,pic_height = 10)


#gsearank(ego3,1,title=ego3[1,"Description"])

############GSEA BP 模式end


############# GSEA MF 模式 start

ego4 <- gseGO(geneList = geneList,OrgDb = maize,ont = "MF",pvalueCutoff = 0.05,verbose = FALSE)

write.csv(ego4,file = "GESA-GO_MF.csv")

#ridgeline plot for expression distribution of GSEA result

ridgeplot(ego4)

out_img(filename = "ridgeplot_MF",pic_width = 12,pic_height = 12)

#只显示值最高的一组的信息

#gseaplot(ego3,geneSetID = 1,by="runningScore",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,by="preranked",title=ego3$Description[1])

#gseaplot(ego3,geneSetID = 1,title=ego3$Description[1])


#显示前4组信息

gseaplot2(ego4,geneSetID = 1:4, ES_geom = "dot",pvalue_table = TRUE)

out_img(filename = "gseaplot_MF",pic_width=12,pic_height = 10)


#gsearank(ego3,1,title=ego3[1,"Description"])

############GSEA MF 模式end


#gsaKEGG基因富集分析

kk2 <- gseKEGG(geneList = geneList,organism = 'zma',pvalueCutoff = 0.05,verbose = FALSE)

write.csv(kk2,file="GSEA_KEGG.csv")


gseaplot2(kk2,geneSetID = 1:4,ES_geom = "dot",pvalue_table = TRUE)

out_img(filename="GSEA_KEGG",pic_width = 12,pic_height = 10)

ridgeplot(kk2)out_img(filename="ridgeplot_GSEA_KEGG",pic_width = 12,pic_height = 12)

5 结果解读

       典型结果图由上、中、下三个部分组成:

       上:为富集评分的情况,如果 NES 为正,则峰出现在左侧(头部富集)(高表达组富集)基因集中核心分子主要集中在左侧高表达组中;如果 NES 为负,则尾部会出现谷(尾部富集)(低表达组富集),基因集中核心分子主要集中在右侧低表达组中。

       中:每一根竖线代表基因集中一个分子,上传数据的分子根据给定的值进行排序,排序后单独提取当前基因集中的定义的分子,分子的位置情况即为中间部分的所示。

       下:把上传数据分子给定的值进行归一化后的值进行可视化。下部分的结果可以不用怎么关注。

       从该图中可以看出,这个基因集是在MUT这一组高表达的,在折线图中有个峰值,该峰值就是这个基因集的Enrichemnt score,峰值之前的基因就是该基因集下的核心基因。基因集下的所有基因在这个排序列表的顶部富集,我们可以说,从总体上看,该基因集是上调趋势,反之,如果在底部富集,则是下调趋势。

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

推荐阅读更多精彩内容