使用clusterProfiler進(jìn)行GO隔显、KEGG富集分析(有參情況)

尋找差異表達(dá)的基因并識(shí)別它們的功能掷豺,是我們進(jìn)行RNA測(cè)序的最主要目的默辨。很明顯表谊,這些差異的基因必然與功能改變密切相關(guān),例如,比較患病個(gè)體與正常個(gè)體的組織表達(dá)譜,不難想到這些顯著失調(diào)的基因參與了生物學(xué)過程雾消、信號(hào)通路等,導(dǎo)致了疾病的發(fā)生破讨。

前面已經(jīng)講了如何使用DESeq2隙笆、edgeR基于轉(zhuǎn)錄組測(cè)序獲得的基因表達(dá)值鑒定差異表達(dá)基因仰冠。那么,后續(xù)如何繼續(xù)通過生信分析的方法,探索差異表達(dá)的基因發(fā)揮了怎樣的功能,參與了哪些調(diào)控通路呢银择?

我們平時(shí)看RNA-seq相關(guān)的文獻(xiàn)時(shí),文章中在鑒定了差異表達(dá)的基因后袜瞬,大都會(huì)在隨后承接幾句關(guān)于這些失調(diào)基因所涉及通路的描述。例如,討論這些差異基因主要映射到哪些GO或KEGG分類條目中,以說明基因表達(dá)的改變會(huì)導(dǎo)致哪些調(diào)控途徑原有功能失調(diào)逐哈,進(jìn)而與表型聯(lián)系起來。通常稱這種分析為GO蚀腿、KEGG富集分析。

目前瞎嬉,能夠進(jìn)行GO便监、KEGG富集分析的工具有很多逊移,不同的工具之間在算法、數(shù)據(jù)庫組成上略有不同案铺,因此結(jié)果也可能大相徑庭暇番。本篇就先以R包c(diǎn)lusterProfiler的方法為例岳服,展示如何基于給定的基因列表分析它們的GO璃搜、KEGG功能唾糯。

clusterProfiler包的安裝

對(duì)于clusterProfiler的安裝也很簡(jiǎn)單,一般情況下脐帝,直接通過Bioconductor安裝clusterProfiler就可以了禁偎。

#bioconductor 安裝
#install.packages('BiocManager')  #需要首先安裝 BiocManager,如果尚未安裝請(qǐng)先執(zhí)行該步
BiocManager::install('clusterProfiler')


clusterProfiler的GO富集分析(有參向)

首先來看GO富集分析。

注:這里均對(duì)于有參考基因組的情況而言的,無參分析暫不涉及。

1牲蜀、準(zhǔn)備輸入數(shù)據(jù)

待分析的數(shù)據(jù)就是一串基因名稱了,可以是ensembl id、entrze id或者symbol id等類型都可以先慷。把基因名稱以一列的形式排開无午,放在一個(gè)文本文件中(例如命名“gene.txt”)踩验。Excel中查看钠龙,就是如下示例這種樣式咬腋。

輸入數(shù)據(jù)妻怎,待分析的基因名稱

2撒汉、加載參考物種的基因注釋數(shù)據(jù)庫

對(duì)于有參考基因組物種的分析,首先需要指定該物種的基因數(shù)據(jù)庫。

存在兩組情況寻歧,一種是常見物種噪珊,另一種是不常見物種阵难。

#(1)對(duì)于常見物種播玖,例如人類果覆,有些專門的 R 包數(shù)據(jù)庫,例如人類參考基因組 hg19 的
library(org.Hs.eg.db)

#(2)對(duì)于不常見的物種,但卻是存在參考基因組的情況
#通過 AnnotationHub 包索引基因組,例如期望找綿羊(Ovis aries)的注釋庫
library(AnnotationHub)

hub <- AnnotationHub()
query(hub, 'Ovis aries')  #輸入綿羊(Ovis aries)的名稱進(jìn)行匹配
sheep <- hub[['AH72269']]  #返回了數(shù)據(jù)庫編號(hào) AH72269倒淫,就可以加載該庫


3兴枯、GO富集分析

加載了注釋庫之后躺坟,讀取基因列表文件,并使用clusterProfiler的內(nèi)部函數(shù)enrichGO()即可完成GO富集分析耻煤。

library(clusterProfiler)

#讀取基因列表文件中的基因名稱
genes <- read.delim('gene.txt', header = TRUE, stringsAsFactors = FALSE)[[1]]

#GO富集分析
#對(duì)于加載的注釋庫的使用买鸽,以上述為例,就直接在 OrgDb 中指定人(org.Hs.eg.db)或綿羊(sheep)
enrich.go <- enrichGO(gene = genes,  #基因列表文件中的基因名稱
    OrgDb = 'sheep',  #指定物種的基因數(shù)據(jù)庫汽煮,示例物種是綿羊(sheep)
    keyType = 'ENTREZID',  #指定給定的基因名稱類型止后,例如這里以 entrze id 為例
    ont = 'ALL',  #可選 BP歉糜、MF、CC棵里,也可以指定 ALL 同時(shí)計(jì)算 3 者
    pAdjustMethod = 'fdr',  #指定 p 值校正方法
    pvalueCutoff = 0.05,  #指定 p 值閾值头谜,不顯著的值將不顯示在結(jié)果中
    qvalueCutoff = 0.2,  #指定 q 值閾值葵袭,不顯著的值將不顯示在結(jié)果中
    readable = FALSE)

#例如上述指定 ALL 同時(shí)計(jì)算 BP鹉勒、MF、CC,這里將它們作個(gè)拆分后輸出
BP <- enrich.go[enrich.go$ONTOLOGY=='BP', ]
CC <- enrich.go[enrich.go$ONTOLOGY=='CC', ]
MF <- enrich.go[enrich.go$ONTOLOGY=='MF', ]

write.table(as.data.frame(BP), 'go.BP.txt', sep = '\t', row.names = FALSE, quote = FALSE)
write.table(as.data.frame(CC), 'go.CC.txt', sep = '\t', row.names = FALSE, quote = FALSE)
write.table(as.data.frame(MF), 'go.MF.txt', sep = '\t', row.names = FALSE, quote = FALSE)
GO富集分析結(jié)果表格

對(duì)于各列內(nèi)容:

ONTOLOGY挤茄,GO分類BP(生物學(xué)過程)社证、CC(細(xì)胞組分)或MF(分子功能)疾渣;

IDDescription,富集到的GO id和描述项乒;

GeneRatioBgRatio恋拍,分別為富集到該GO條目中的基因數(shù)目/給定基因的總數(shù)目僵娃,以及該條目中背景基因總數(shù)目/該物種所有已知的GO功能基因數(shù)目瘩扼;

pvaluep.adjustqvalue,p值仰猖、校正后p值和q值信息躏升;

geneIDCount卖局,富集到該GO條目中的基因名稱(分析中使用的entrze id染坯,故這里也顯示的entrze id)和數(shù)目湃鹊。

注:如期望顯示其它類型的基因id芯义,如通俗的symbol id等類型陶贼,除了更改為使用symbol id的基因名稱做分析外,還可以通過基因名稱轉(zhuǎn)換的方式對(duì)entrze id和symbol id作個(gè)匹配轉(zhuǎn)換培廓。

clusterProfiler的KEGG富集分析(有參向)

然后是KEGG富集分析当纱。

同樣地啥供,這里均對(duì)于KEGG數(shù)據(jù)庫中已經(jīng)收錄的物種而言的鳞骤,無參分析暫不涉及渤滞。

1唠粥、準(zhǔn)備輸入數(shù)據(jù)

相比上述GO富集只厘,clusterProfiler的KEGG富集分析方法特殊介评,它無需加載本地注釋庫垃你,自動(dòng)使用KEGG的在線數(shù)據(jù)庫進(jìn)行注釋,因此給定的基因名稱只能識(shí)別entrze id痴怨。把entrze id的基因名稱以一列的形式排開弓乙,放在一個(gè)文本文件中(例如命名“gene.txt”)乾颁。Excel中查看罚勾,就是如下示例這種樣式。

輸入數(shù)據(jù)遏佣,待分析的基因名稱

2、KEGG富集分析

讀取基因列表文件,并使用clusterProfiler的內(nèi)部函數(shù)enrichKEGG()即可完成KEGG富集分析跌榔。

library(clusterProfiler)

#讀取基因列表文件中的基因名稱示绊,注意這里只能用 entrze id
genes <- read.delim('gene.txt', header = TRUE, stringsAsFactors = FALSE)[[1]]

#每次打開R計(jì)算時(shí)摄杂,它會(huì)自動(dòng)連接kegg官網(wǎng)獲得最近的物種注釋信息映挂,因此數(shù)據(jù)庫一定都是最新的
kegg <- enrichKEGG(
    gene = genes,  #基因列表文件中的基因名稱
    keyType = 'kegg',  #kegg 富集
    organism = 'oas',  #例如亏拉,oas 代表綿羊灵再,其它物種更改這行即可
    pAdjustMethod = 'fdr',  #指定 p 值校正方法
    pvalueCutoff = 0.05,  #指定 p 值閾值,不顯著的值將不顯示在結(jié)果中
    qvalueCutoff = 0.2,  #指定 q 值閾值衷掷,不顯著的值將不顯示在結(jié)果中
)

#輸出結(jié)果
write.table(kegg, 'kegg.txt', sep = '\t', quote = FALSE, row.names = FALSE)
KEGG富集分析結(jié)果表格

對(duì)于各列內(nèi)容:

IDDescription蚯根,富集到的KEGG id和描述;

GeneRatioBgRatio,分別為富集到該KEGG條目中的基因數(shù)目/給定基因的總數(shù)目允趟,以及該條目中背景基因總數(shù)目/該物種所有已知的KEGG功能基因數(shù)目绽乔;

pvaluep.adjustqvalue,p值、校正后p值和q值信息逗余;

geneIDCount,富集到該KEGG條目中的基因名稱(分析中使用的entrze id,故這里也顯示的entrze id)和數(shù)目。

注:如期望顯示其它類型的基因id,如通俗的symbol id等類型,由于該分析中只能輸入entrze id菠齿,因此可以通過基因名稱轉(zhuǎn)換的方式對(duì)entrze id和symbol id作個(gè)匹配轉(zhuǎn)換疾棵。

clusterProfiler附帶的作圖功能

此外嗜历,clusterProfiler中也額外提供了一系列的可視化方案用于展示本次富集分析結(jié)果鞍恢,具有極大的便利蟆炊。

#clusterProfiler 包里的一些默認(rèn)作圖方法良拼,例如
barplot(kegg)  #富集柱形圖
dotplot(kegg)  #富集氣泡圖
cnetplot(kegg) #網(wǎng)絡(luò)圖展示富集功能和基因的包含關(guān)系
emapplot(kegg) #網(wǎng)絡(luò)圖展示各富集功能之間共有基因關(guān)系
heatplot(kegg) #熱圖展示富集功能和基因的包含關(guān)系

一些富集柱形圖掖蛤、氣泡圖、網(wǎng)絡(luò)圖等


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末咳榜,一起剝皮案震驚了整個(gè)濱河市臣樱,隨后出現(xiàn)的幾起案子枚粘,更是在濱河造成了極大的恐慌柬姚,老刑警劉巖撕捍,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呕诉,死亡現(xiàn)場(chǎng)離奇詭異英遭,居然都是意外死亡税灌,警方通過查閱死者的電腦和手機(jī)粘秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事蝙砌§艚龋” “怎么了勺鸦?”我有些...
    開封第一講書人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵懈息,是天一觀的道長遣耍。 經(jīng)常有香客問我棋傍,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己漠烧,他們只是感情好厕宗,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開白布膜楷。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪采驻。 梳的紋絲不亂的頭發(fā)上痘系,一...
    開封第一講書人閱讀 48,970評(píng)論 1 284
  • 那天妓局,我揣著相機(jī)與錄音抵拘,去河邊找鬼充尉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼妥粟,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼脓钾!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起蒜鸡,我...
    開封第一講書人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤脊另,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后贫橙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體尤蒿,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奏属,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年窄做,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了艾帐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡啃匿,死狀恐怖矛纹,靈堂內(nèi)的尸體忽然破棺而出冰垄,到底是詐尸還是另有隱情步清,我是刑警寧澤撑毛,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布滚局,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏览妖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一弯洗、第九天 我趴在偏房一處隱蔽的房頂上張望溺拱。 院中可真熱鬧,春花似錦攒菠、人聲如沸辖众。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至萨咳,卻和暖如春拣度,著一層夾襖步出監(jiān)牢的瞬間筋帖,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來泰國打工冤馏, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留日麸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓逮光,卻偏偏與公主長得像代箭,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涕刚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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