四句话代码GSEA

载入测试数据做GSEA

需要3个包,分别是:'clusterProfiler','enrichplot','patchwork',然后是DOSE包里面有一个geneList的向量,它是排序好的基因列表,而且是entrezID形式,使用 gseKEGG 函数即可做gsea分析啦 :

lapply(c('clusterProfiler','enrichplot','patchwork'), 
       function(x) {library(x, character.only = T)})
# Please go to https://yulab-smu.github.io/clusterProfiler-book/ for the full vignette.

data(geneList, package="DOSE")  
#4312     8318    10874    55143    55388      991 
#4.572613 4.514594 4.418218 4.144075 3.876258 3.677857
class(geneList)
#[1] "numeric"

kk2 <- gseKEGG(geneList     = geneList,
               organism     = 'hsa',
               nPerm        = 10000,
               minGSSize    = 10,
               maxGSSize    = 200,
               pvalueCutoff = 0.05,
               pAdjustMethod = "none" )

  • gseKEGG输入形式:将基因按照logFC进行从高到低排序,只需要基因列和logFC
  • organism:物种,http://www.genome.jp/kegg/catalog/org_list.html
  • nPerm:permutation numbers
  • minGSSize:通路最小基因数
  • maxGSSize:通路最大基因数(一般可通过改变minGSSize,maxGSSize数目调整通路大小)
  • pvalueCutoff:最小p值
  • pAdjustMethod:p值校正方法,"BH"

输入形式非常关键!通常差异分析后会形成如下所示  数据框:

lapply(c('org.Hs.eg.db','stringr','dplyr'), 
       function(x) {library(x, character.only = T)})
load(file = 'step2-output.Rdata')
head(deg)
# logFC   AveExpr         t      P.Value    adj.P.Val
# COL11A1   7.235897  9.241369  13.66359 1.499441e-14 3.500895e-10
# ZIC2      5.658879  7.917121  13.26803 3.244100e-14 3.787162e-10
# PGM5-AS1 -3.626344  7.758838 -12.66304 1.090802e-13 6.546434e-10
# PGM5     -3.020465 10.639885 -12.59561 1.251776e-13 6.546434e-10
# ANGPTL1  -4.141375  9.283651 -12.53414 1.419781e-13 6.546434e-10
# SHOX2    -5.304161  8.434325 -12.45164 1.682311e-13 6.546434e-10
# B  
# COL11A1  22.87130   
# ZIC2     22.15323   
# PGM5-AS1 21.01867 
# PGM5     20.88943 
# ANGPTL1  20.77110 
# SHOX2    20.61157

简单的差异分析看我六年前的表达芯片的公共数据库挖掘系列推文即可哈 :

很容易把差异分析结果转为类似的 DOSE包里面有一个geneList的向量 ,代码如下所示:


## 不同的阈值,筛选到的差异基因数量就不一样,后面的超几何分布检验结果就大相径庭。
logFC_t=1.5
deg$g=ifelse(deg$P.Value>0.05,'stable',
            ifelse( deg$logFC > logFC_t,'UP',
                    ifelse( deg$logFC < -logFC_t,'DOWN','stable') )
)
table(deg$g)
#DOWN stable     UP 
#   762  21771    815
# 转成ENTREZID
deg$symbol=rownames(deg)
df <- bitr(unique(deg$symbol), fromType = "SYMBOL",
           toType = c( "ENTREZID"),
           OrgDb = org.Hs.eg.db)
DEG=deg
DEG=merge(DEG,df,by.y='SYMBOL',by.x='symbol')
data_all_sort <- DEG %>% 
  arrange(desc(logFC))

geneList = data_all_sort$logFC #把foldchange按照从大到小提取出来
names(geneList) <- data_all_sort$ENTREZID #给上面提取的foldchange加上对应上ENTREZID
head(geneList)
#1301    57214     7546    92196   389336    23657 
#7.235897 6.273463 5.658879 5.341371 4.958484 4.957802

这个geneList就是符合要求的,可以直接去走 gseKEGG 函数即可做gsea分析。

结果解读

class(kk2)
#[1] "gseaResult"
#attr(,"package")
#[1] "DOSE"
# 结果保存在kk2@result
colnames(kk2@result)
# [1] "ID"              "Description"     "setSize"        
# [4] "enrichmentScore" "NES"             "pvalue"         
# [7] "p.adjust"        "qvalues"         "rank"           
# [10] "leading_edge"    "core_enrichment"  
kegg_result <- as.data.frame(kk2)

 
  • ID :信号通路
  • Description :信号通路的描述
  • setSize :富集到该信号通路的基因个数
  • enrichmentScore :富集分数,也就是ES
  • NES :标准化以后的ES,全称normalized enrichment score
  • pvalue:富集的P值
  • p.adjust :校正后的P值
  • qvalues :FDR (false discovery rate)错误发现率
  • rank :排名
  • core_enrichment:富集到该通路的基因列表

rownames(kk2@result)[head(order(kk2@result$enrichmentScore))]
#[1] "hsa00360" "hsa04710" "hsa00350" "hsa00650" "hsa00982" "hsa04974"

# geneSetID对应表格的id,排序后取前6个和后六个
gseaplot2(kk2, geneSetID = rownames(kk2@result)[head(order(kk2@result$enrichmentScore))])+
gseaplot2(kk2, geneSetID = rownames(kk2@result)[tail(order(kk2@result$enrichmentScore))])

 

# 单独通路
gseaplot2(kk2,
          title = "Focal adhesion",  #设置title
          "hsa04510", #绘制hsa04510通路的结果
          color="red", #线条颜色
          base_size = 20, #基础字体的大小
          subplots = 1:2, #展示上2部分
          pvalue_table = T) # 显示p值

 

GSEA结果解读:

  • 第一步我们需要根据基因的logFC对基因进行排序
  • 研究的这个数据集中是否包含我们的目的基因,计算Enrich score的原则就是,从前到后依次检查基因是否是我们当前研究的数据集所包含的,如果包含就加一个正值,如果不包含就加一个负值
  • 横坐标表示基因列表的数量
  • 黑色的竖线代表的是我们的目的基因,已经被排好序,如果竖线聚集在头部,称为头部效应,如果在尾部,称为尾部效应
  • GSEA也可以进行GO,KEGG,Reactome分析,找到对应的数据集即可

可视化

  • 还有不同的展示方式哦

山脊图

ridgeplot(kk2, 10)

 

气泡图

dotplot(kk2)

 

可以看到Y叔的clusterProfiler包基本上承包了富集分析结果的可视化, Chapter 12 Visualization of Functional Enrichment Result ,链接是:http://yulab-smu.top/clusterProfiler-book/chapter12.html

1 Bar Plot
2 Dot plot
3 Gene-Concept Network
4 Heatmap-like functional classification
5 Enrichment Map
6 UpSet Plot
7 ridgeline plot for expression distribution of GSEA result
8 running score and preranked list of GSEA result
9 pubmed trend of enriched terms
10 goplot
11 browseKEGG
12 pathview from pathview package

你最喜欢哪一种可视化方法呢?

(0)

相关推荐

  • 手把手教你用R做GSEA分析

    GSEA是非常常见的富集分析方式,以前我们做GSEA需要用依赖java的GSEA软件,那个时候准备分析的文件可能要花上很长时间,报错还不知道如何处理.现在我们来学习一下R语言进行GSEA分析. 加载R ...

  • 火山图|给你geneList,帮我标到火山图上

    火山图(Volcano Plot)常用于展示基因表达差异的分布,横坐标常为Fold change(倍数),越偏离中心差异倍数越大:纵坐标为P value(P值),值越大差异越显著.得名原因也许是因为结 ...

  • clusterProfiler|GSEA富集分析及可视化

    GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,无需设定阈值来区分上调下调基因,使用所有的基因进行分析. GO 和 KEGG 可参考:R|clusterProfi ...

  • 体制内摸爬滚打40年,总结四句话,助你职场顺风顺水顺利成长

    #年轻干部成长#从一名普通的农村青年,从一个一脸青涩的职场小白,从一个基层的普通一兵,经过40年的摸爬滚打,逐渐成长为一名厅级领导,精心总结4句话,助你职场顺风顺水顺利成长.这四句话是,单位建设需要, ...

  • 人生最精辟的二十四句话,现实透彻,引人共鸣

    一.好好照顾自己,不要奢望别人来疼你,别人都很忙的. 二.不惊扰别人的宁静,就是慈悲:不伤害别人的自尊,就是善良.人活着,发自己的光就好,不要吹灭别人的灯. 三.不要做廉价的自己,你的善良要留给对你好 ...

  • 白居易非常经典的一首绝句,只有短短四句话,开篇7个字惊艳世人

    白居易与杜甫一样,都是唐朝现实主义诗人,名号也相当响亮,被后人尊称为"诗魔",但他的命运比杜甫稍微好一些.贞元十六年,二十八岁的白居易金榜题名,此乃人生一大幸事,对于他来说,也是十 ...

  • 老祖宗最有智慧的四句话,背熟它,让你成功逆袭,做人生赢家

    当今世界,中西融合.物欲横流,却偏偏忘了老祖宗的智慧.其实,这是现代人不够快乐的来源.老祖宗留下了很多生存智慧,被现代人弃之如敝履,真是可惜.其实,老祖宗非常睿智,2002年,十几个诺贝尔文学奖得主在 ...

  • 当你没钱的时候,记住四句话,写的真好

    爱情是什么,没钱的时候看不见,有钱的时候找不到,穷了不懂,富了不问,追不着,看不见影的一个世界,一个属于别人,而不属于自己的一座荒城. 没钱了,才知道人走茶凉,人去无声,系别多少的错,成为人生的感动, ...

  • 做人的最高境界,不说四句话

    不说怨话,不是自己不懂,而是已经看透,何必用自己的愤怒,去扰乱别人的人生.怨话,只会让别人难受,还会影响自己的素质,说出去,自己听见不烦,但是已经直接让别人伤心. 怨气多了,让人躲着,怨话多了,让别人 ...

  • 聪明的人,从来不说的四句话

    怨话,是一种压力,也是一种无奈的表现,让人丧失本性,有一种借钱不还的味道. 什么是怨,是扰乱人心,是耽误人生,是错过未来,没有心灵的本质,没有能力的卓越. 怨多了,说出来讨人厌,藏在心里擦不去,招人烦 ...

  • 【时令养生】立夏养生 记住四句话

    立夏,意味着告别春天迎来了夏天,<月令七十二候集解>:"立夏,四月节.立字解见春.夏,假也.物至此时皆假大也."意思是夏天开始了,植物开始变大变茂盛了.<素问·四 ...

  • 成熟的人,不说四句话,越是不说,越少麻烦

    欢迎来到我的娱乐小店! 古人云:慎言慎行,君子之道. 言多必失,祸从口出."说"与"不说"之间藏着大学问,有三寸不烂之舌,能说会道固然好,但是能把握说话的分寸, ...