一句代碼同時運行多組富集分析

傳統(tǒng)的富集分析的步驟是:

  • 計算出差異表達基因列表
  • 運行GO
  • 運行KEGG
    當然槽畔,也可以運行其他富集分析哲银,比如DO,Wikipathways或者Reactome等等初肉,然后再可視化結(jié)果酷鸦,這里所有的操作都不能一次性運行。
    在R里面有一個list的數(shù)據(jù)格式,對于相同的需求臼隔,其實是可以后臺一步運行的嘹裂,只是之前沒有相應(yīng)的R包和代碼。

最近Y叔開發(fā)了一個gson 格式的包摔握,制定了一種新的背景基因集.gson (類似于.gmt)寄狼,并且嵌入到了clusterProfiler包里,通過gson_GO()氨淌、gson_KEGG()泊愧、gson_WP()函數(shù)可以在線爬取相應(yīng)的GSON背景基因集對象,然后可以進行后續(xù)的GSEA或者普通的富集分析盛正。

新開發(fā)的gson包中有一個gsonList()函數(shù)删咱,可以進行多組富集分析,以 list的形式進行組合分析蛮艰,然后通過enrichplot包中的autofacet()函數(shù)就可以將多個list的結(jié)果可視化腋腮。這個教程在一次搞定所有的富集分析這個公眾號里面。結(jié)果如下:

image.png

但是壤蚜,這個教程剛出的時候,我就想試試GSEA能不能行徊哑,結(jié)果發(fā)現(xiàn)當時的enrichplot包中的autofacet()函數(shù)并不支持GSEA結(jié)果袜刷,所以我當天就在Y叔公眾號和Github進行了提問,經(jīng)過一個月的等待莺丑,終于在前幾天收到了解決的郵件著蟹。還給我發(fā)了一個測試pdf結(jié)果,確實可以分面多個GSEA的結(jié)果了梢莽。

image.png

不過卵蛉,我還是發(fā)現(xiàn)一個問題潮峦,那就是GSEA本身就包含一個分面,根據(jù)NES值分為激活和抑制(這個功能可以通過ggplot2facet_grid(~.sign)實現(xiàn)),那么想實現(xiàn)多個富集分析列表的激活和抑制卻又卡住了滤愕。

我發(fā)現(xiàn):

使用了autofacet(),就不能使用facet_grid(~.sign)梧却;

使用了facet_grid(~.sign)挡毅,就不能使用autofacet()

當然這個Bug可以通過圖片的拼接功能實現(xiàn)仑扑,但雙分面才是我要的結(jié)果览爵,這個bug我也已經(jīng)反映了,不知道什么時候能夠解決镇饮。


說完了前言蜓竹,現(xiàn)在就開始正式演示,使用gson包可以在線獲取或讀取本地的.gson文件,我們可以一次性分析BPKEGG俱济,也可以一次性運行KEGGReactome這兩種信號通路司蔬,或者一次性運行KEGGWikiPathways兩種信號通路。

獲得GSON對象

GSON庫

Y叔的工作網(wǎng)頁中制作了一些gson格式的基因集庫姨蝴,我們可以直接下載好并且使用俊啼,網(wǎng)址是https://yulab-smu.top/gson-files/

Y叔的庫

然而,這個基因集庫中還沒有收錄WikiPathways的結(jié)果左医,并且還需要訪問Github才能下載授帕。

所以我重新制作了一下這個庫,順便更新了一下時間浮梢,將結(jié)果導(dǎo)入到碼云Gitee上了跛十,地址是

http://swcyo.gitee.io/gson-file/

我修改的庫

你也可以這樣點擊直接下面的鏈接直接下載保存到本地文件夾:

Gene Ontology;ALL

Gene Ontology;BP

Gene Ontology;CC

Gene Ontology;MF

KEGG

MKEGG

reactome pathway

WikiPathways

在線GSON

  • 我們使用最常用的BP生物學(xué)功能和KEGG信號通路進行演示
library(clusterProfiler)
BP <- gson_GO(OrgDb = org.Hs.eg.db, keytype = 'ENTREZID', ont = "BP")
KEGG <- gson_KEGG(species = "hsa", KEGG_Type="KEGG", keyType="kegg") 

如果你想獲得目前可獲得的所有結(jié)果,可以通過clusterProfilergson_GO()秕硝,gson_KEGG()芥映,gson_WP()ReactomePAgson_Reactome()去爬相應(yīng)背景基因集的最新數(shù)據(jù),然后保存到本地使用远豺。代碼如下:

# GO
library(clusterProfiler)
library(org.Hs.eg.db)
library(gson)
gson_BP_human <- gson_GO(OrgDb = org.Hs.eg.db, keytype = 'ENTREZID', ont = "BP")
gson_MF_human <- gson_GO(OrgDb = org.Hs.eg.db, keytype = 'ENTREZID', ont = "MF")
gson_CC_human <- gson_GO(OrgDb = org.Hs.eg.db, keytype = 'ENTREZID', ont = "CC")
gson_ALL_human <- gson_GO(OrgDb = org.Hs.eg.db, keytype = 'ENTREZID', ont = "ALL")
write.gson(gson_BP_human, file = "GO_BP_human.gson")
write.gson(gson_MF_human, file = "GO_MF_human.gson")
write.gson(gson_CC_human, file = "GO_CC_human.gson")
write.gson(gson_ALL_human, file = "GO_ALL_human.gson")

# KEGG
KEGG_human <- gson_KEGG(species = "hsa", KEGG_Type="KEGG", keyType="kegg") 
MKEGG_human <- gson_KEGG(species = "hsa", KEGG_Type="MKEGG", keyType="kegg") 
write.gson(KEGG_human, file = "KEGG_human.gson")
write.gson(MKEGG_human, file = "MKEGG_human.gson")

# WikiPathways
WikiPathways_human <- gson_WP("Homo sapiens") 
write.gson(WikiPathways_human, file = "WikiPathways_human.gson")

# Reactome
library(ReactomePA)
Reactome_human <- gson_Reactome(organism = "human")
write.gson(Reactome_human, file = "Reactome_human.gson")

加載本地GSON對象

如果通過上述代碼把gson文件下載到了本地文件夾奈偏,我們可以通過gsonread.gson()函數(shù)進行加載。

library(gson)
KEGG<-read.gson("KEGG_human.gson")
WP<-read.gson("WikiPathways_human.gson")

運行GSEA

我們使用DOSE包中g(shù)eneList數(shù)據(jù)列表進行GSEA演示

library(clusterProfiler)
library(gson)
library(enrichplot)
# 構(gòu)建gson列表
gsonlist <- gsonList(BP = BP, KEGG=KEGG)
data(geneList,package = 'DOSE')
# 一行運行多組GSEA
GSEA <- GSEA(geneList, 
                 gson = gsonlist,
                 eps=0, # 設(shè)置這個可以獲得更好的p值
                 pvalueCutoff = 0.9 # p值調(diào)大一點
             )

可視化

使用dotplot()對多組GSEA結(jié)果繪制點圖躯护,但是這個結(jié)果把BP和KEGG的兩種結(jié)果全部都包含了惊来,不能體現(xiàn)出具體的結(jié)果,見Figure 1所示棺滞。

dotplot(GSEA)
Figure 1: 多組GSEA結(jié)果同時顯示

自動分面

使用autofacet()可以很好的顯示分面裁蚁,默認是按行分面,見Figure 2所示继准。

dotplot(GSEA,showCategory = 8)+autofacet()
Figure 2: 按行對兩種結(jié)果進行分面顯示

我們也可以按列分面

dotplot(GSEA)+autofacet(by='col')
Figure 3: 按列對兩種結(jié)果進行分面顯示

Bug

我們知道GSEA是支持以NES為界枉证,分為激活和抑制兩個結(jié)果的,傳統(tǒng)方法是+facet_grid(~.sign)移必,但是autofacet()+facet_grid(~.sign)目前只能顯示一種結(jié)果室谚。

可能是數(shù)據(jù)有誤,只跑出列激活的結(jié)果避凝,見Figure 4所示舞萄。

library(ggplot2)
dotplot(GSEA)+facet_grid(~.sign)
Figure 4: 顯示激活抑制通路

解決方法

目前可以通過拼圖的方法對兩個結(jié)果進行處理,見Figure 5所示管削。

library(patchwork)
p1<-dotplot(GSEA$`Gene Ontology;BP`)+facet_grid(~.sign)
p2<-dotplot(GSEA$KEGG)+facet_grid(~.sign)
p1/p2
Figure 5: 結(jié)果拼圖

通過gsonlist倒脓,加上Y叔開發(fā)的包包,以后做富集分析就越來越覺得含思,越來越快了崎弃。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末甘晤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子饲做,更是在濱河造成了極大的恐慌线婚,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盆均,死亡現(xiàn)場離奇詭異塞弊,居然都是意外死亡,警方通過查閱死者的電腦和手機泪姨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門游沿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肮砾,你說我怎么就攤上這事诀黍。” “怎么了仗处?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵眯勾,是天一觀的道長。 經(jīng)常有香客問我婆誓,道長吃环,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任旷档,我火速辦了婚禮模叙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鞋屈。我一直安慰自己,他們只是感情好故觅,可當我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布厂庇。 她就那樣靜靜地躺著,像睡著了一般输吏。 火紅的嫁衣襯著肌膚如雪权旷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天贯溅,我揣著相機與錄音拄氯,去河邊找鬼。 笑死它浅,一個胖子當著我的面吹牛译柏,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播姐霍,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鄙麦,長吁一口氣:“原來是場噩夢啊……” “哼典唇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起胯府,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤介衔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后骂因,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體炎咖,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年寒波,在試婚紗的時候發(fā)現(xiàn)自己被綠了乘盼。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡影所,死狀恐怖蹦肴,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情猴娩,我是刑警寧澤阴幌,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站卷中,受9級特大地震影響矛双,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蟆豫,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一议忽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧十减,春花似錦栈幸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至由驹,卻和暖如春芍锚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蔓榄。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工并炮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人甥郑。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓逃魄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親壹若。 傳聞我的和親對象是個殘疾皇子嗅钻,可洞房花燭夜當晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容