【R】clusterProfiler的GO/KEGG富集分析用法小結(jié)

前言

關(guān)于clusterProfiler這個R包就不介紹了,網(wǎng)紅教授宣傳得很成功滥酥,功能也比較強大剩岳,主要是做GO和KEGG的功能富集及其可視化。簡單總結(jié)下用法仇矾,以后用時可直接找來用庸蔼。

首先考慮一個問題:clusterProfiler做GO和KEGG富集分析的注釋信息來自哪里?

GO的注釋信息來自Bioconductor贮匕,提供了19個物種的org類型的GO注釋信息姐仅,如下表所示。Bioconductor中更多的注釋包可參考http://www.bioconductor.org/packages/release/data/annotation/刻盐,很亂掏膏,大多數(shù)我都不知道干啥用的。

packages organism
org.Ag.eg.db Anopheles
org.At.tair.db Arabidopsis
org.Bt.eg.db Bovine
org.Ce.eg.db Worm
org.Cf.eg.db Canine
org.Dm.eg.db Fly
org.Dr.eg.db Zebrafish
org.EcK12.eg.db E coli strain K12
org.EcSakai.eg.db E coli strain Sakai
org.Gg.eg.db Chicken
org.Hs.eg.db Human
org.Mm.eg.db Mouse
org.Mmu.eg.db Rhesus
org.Pf.plasmo.db Malaria
org.Pt.eg.db Chimp
org.Rn.eg.db Rat
org.Sc.sgd.db Yeast
org.Ss.eg.db Pig
org.Xl.eg.db Xenopus

KEGG的注釋信息clusterProfiler通過KEGG 數(shù)據(jù)庫的API來獲取敦锌,https://www.kegg.jp/kegg/rest/keggapi.html馒疹。

首先是一個物種所有基因?qū)?yīng)的pathway注釋文件,比如人的:http://rest.kegg.jp/link/hsa/pathway供屉。
其次還需要pathway對應(yīng)的描述信息行冰,比如人的:
http://rest.kegg.jp/list/pathway/hsa

關(guān)于KEGG數(shù)據(jù)庫全部的物種及其簡寫(三個字母)如下列表:
https://www.genome.jp/kegg/catalog/org_list.html伶丐。

因此對于以上已有pathway注釋的物種悼做,只需要將物種簡寫輸入給clusterProfiler, 它會通過聯(lián)網(wǎng)自動獲取該物種的pathway注釋信息哗魂。

以上都是有物種信息的情況肛走,那么對于無物種信息的項目怎么辦?

GO可以通過讀取外部的GO注釋文件進行分析录别。關(guān)于基因的GO注釋朽色,interproscan、eggnog-mapper和blas2go等軟件都可以做组题,不過輸出格式有些不同葫男。clusterProfiler需要導(dǎo)入的GO注釋文件的格式如下:

GeneID GO GO_Description
1 GO:0005819 spindle
2 GO:0072686 mitotic spindle
3 GO:0000776 kinetochore

需要包含以上三列信息,這3列信息任意順序都可崔列。

clusterProfiler包只針對含有OrgDb對象梢褐,如果是公共數(shù)據(jù)庫中有該物種注釋信息旺遮,只是未制作成org.db數(shù)據(jù)庫(標(biāo)準(zhǔn)注釋庫),則可以不需要從頭注釋盈咳,只需手動制作org.db數(shù)據(jù)庫類型耿眉,完成后直接使用即可,代碼如下:

source("https://bioconductor.org/biocLite.R")
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")

BiocManager::install("AnnotationHub") # 一個包含大量注釋信息的數(shù)據(jù)庫鱼响,里面有很多物種及來源于很多數(shù)據(jù)庫的注釋信息鸣剪。
BiocManager::install("biomaRt")

library(AnnotationHub) 
library(biomaRt)

hub <- AnnotationHub() #建立AnnotationHub對象(視人品,網(wǎng)不行加載不了)
# unique(hub$species) #查看AnonotationHub里面物種
hub$species[which(hub$species=="Solanum")] #看AnonotationHub里是否包含想要的物種
# Solanum是番茄的拉丁名
query(hub, "Solanum")  #查看該物種信息
hub[hub$species=="Solanum" & hub$rdataclass == "OrgDb"] #OrgDb屬于rdataclass中丈积,因此查看下該物種有沒有OrgDb
Solanum.OrgDb <- hub[["AH59087"]]#AH59087是番茄對應(yīng)的編號
#制作為標(biāo)準(zhǔn)注釋庫筐骇,就可和模式生物一樣使用了

同樣地,對于pathway數(shù)據(jù)庫中沒有的物種江滨,也支持讀取基因的pathway注釋文件拥褂,然后進行分析,注釋文件的格式如下:

GeneID Pathway Path_Description
1 ko:00001 spindle
2 ko:00002 mitotic spindle
3 ko:00003 kinetochore

以上三列信息的順序也是任意的牙寞。

富集分析

通常用的富集分析有ORA、FCS和拓?fù)淙N方法莫秆。ORA簡單來說就是超幾何檢驗或Fisher精確檢驗间雀,大同小異,都符合超幾何檢驗镊屎,這也是目前用的最多的方法惹挟,優(yōu)劣不談。FCS的代表就是GSEA缝驳,即基因集富集分析连锯,優(yōu)劣亦不談。clusterProfiler提供了這兩種富集分析方法用狱。
1. ORA(Over-Representation Analysis)
GO富集參考代碼:

#標(biāo)準(zhǔn)富集分析
ego <- enrichGO(
          gene  = gene$entrzID,
          keyType = "ENTREZID", 
          universe = names(geneList), #背景基因集运怖,可省
          OrgDb   = org.Hs.eg.db,
          ont     = "CC",
          pAdjustMethod = "BH",
          pvalueCutoff  = 0.01,
          qvalueCutoff  = 0.05,
          readable      = TRUE)

#通過導(dǎo)入外部注釋文件富集分析
data <- read.table("go_annotation.txt",header = T,sep = "\t")
go2gene <- data[, c(2, 1)]
go2name <- data[, c(2, 3)]
x <- enricher(gene,TERM2GENE = go2gene,TERM2NAME = go2name)

gene差異基因?qū)?yīng)的向量;
keyType指定基因ID的類型,默認(rèn)為ENTREZID, 可參考keytypes(org.Hs.eg.db)類型 夏伊;
OrgDb指定該物種對應(yīng)的org包的名字摇展;
ont代表GO的3大類別,BP, CC, MF溺忧,也可是全部ALL咏连;
pAdjustMethod指定多重假設(shè)檢驗矯正的方法,有“ holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”中的一種鲁森;
cufoff指定對應(yīng)的閾值祟滴;
readable=TRUE代表將基因ID轉(zhuǎn)換為gene symbol。

KEGG Pathway富集參考代碼:

#標(biāo)準(zhǔn)富集分析
ego <- enrichKEGG(
          gene = gene,
          keyType = "kegg",
          organism  = 'hsa',
          pvalueCutoff  = 0.05,
          pAdjustMethod  = "BH",
          qvalueCutoff  = 0.05
)


#通過外部導(dǎo)入注釋文件富集
data <- read.table("pathway_annotation.txt",header = T,sep = "\t")
go2gene <- data[, c(2, 1)]
go2name <- data[, c(2, 3)]
x <- enricher(gene,TERM2GENE = go2gene,TERM2NAME = go2name)

默認(rèn)基因ID為kegg gene id歌溉,也可以是ncbi-geneid, ncbi-proteinid, uniprot等垄懂。
organism物種對應(yīng)的三字母縮寫,其他參數(shù)同GO富集。ID轉(zhuǎn)換函數(shù):

library(clusterProfiler)
bitr_kegg("1",fromType = "kegg",toType = 'ncbi-proteinid',organism='hsa')

library(org.Hs.eg.db)
keytypes(org.Hs.eg.db) #支持的ID類型
bitr(gene, fromType = "ENTREZID", toType = c("ENSEMBL", "SYMBOL"), OrgDb = org.Hs.eg.db)

#以上看出ID轉(zhuǎn)換輸入時埠偿,可以向量的形式透罢,也可以單列基因名list導(dǎo)入,也可以是內(nèi)置數(shù)據(jù)
gene <- c("AASDH","ABCB11","ADAM12","ADAMTS16","ADAMTS18")
gene  <-  data$V1 #字符串

data(geneList, package="DOSE") #富集分析的背景基因集
gene <- names(geneList)[abs(geneList) > 2]

2. GSEA(Gene Set Enrichment Analysis)
GO富集參考代碼:

#標(biāo)準(zhǔn)富集分析
ego <- gseGO(
      geneList  = geneList,
      OrgDb  = org.Hs.eg.db,
      ont  = "CC",
      nPerm  = 1000,  #置換檢驗的置換次數(shù)
      minGSSize  = 100,
      maxGSSize  = 500,
      pvalueCutoff = 0.05,
      verbose  = FALSE)

#通過導(dǎo)入外部注釋文件富集分析參考代碼:
data <- read.table("go_annotation.txt",header = T,sep = "\t")
go2gene <- data[, c(2, 1)]
go2name <- data[, c(2, 3)]
x <- GSEA(gene,TERM2GENE = go2gene,TERM2NAME = go2name)

KEGG Pathway富集參考代碼:

#標(biāo)準(zhǔn)富集分析
kk <- gseKEGG(
  geneList  = gene,
  keyType  = 'kegg',
  organism = 'hsa',
  nPerm  = 1000,
  minGSSize = 10,
  maxGSSize = 500,
  pvalueCutoff = 0.05,
  pAdjustMethod     = "BH"
)

#通過外部導(dǎo)入注釋文件富集
data <- read.table("pathway_annotation.txt",header = T,sep = "\t")
go2gene <- data[, c(2, 1)]
go2name <- data[, c(2, 3)]
x <- GSEA(gene,TERM2GENE = go2gene,TERM2NAME = go2name)

可視化

1.GO富集分析結(jié)果可視化

#barplot
barplot(ego, showCategory = 10) #默認(rèn)展示顯著富集的top10個冠蒋,即p.adjust最小的10個

#dotplot
dotplot(ego, showCategory = 10)

#DAG有向無環(huán)圖
plotGOgraph(ego)  #矩形代表富集到的top10個GO terms, 顏色從黃色過濾到紅色羽圃,對應(yīng)p值從大到小。

#igraph布局的DAG
goplot(ego)

#GO terms關(guān)系網(wǎng)絡(luò)圖(通過差異基因關(guān)聯(lián))
emapplot(ego, showCategory = 30)

#GO term與差異基因關(guān)系網(wǎng)絡(luò)圖
cnetplot(ego, showCategory = 5)

2.Pathway富集分析結(jié)果可視化

#barplot
barplot(kk, showCategory = 10)

#dotplot
dotplot(kk, showCategory = 10)

#pathway關(guān)系網(wǎng)絡(luò)圖(通過差異基因關(guān)聯(lián))
emapplot(kk,  showCategory = 30)

#pathway與差異基因關(guān)系網(wǎng)絡(luò)圖
cnetplot(kk, showCategory = 5)

#pathway映射
browseKEGG(kk, "hsa04934") #在pathway通路圖上標(biāo)記富集到的基因抖剿,會鏈接到KEGG官網(wǎng)

Ref:
https://blog.csdn.net/weixin_43569478/article/details/83744242
https://blog.csdn.net/weixin_43569478/article/details/83744384
http://www.reibang.com/p/065d38c28e2d
http://www.reibang.com/p/47b5ea646932
https://www.cnblogs.com/yatouhetademao/p/8018252.html
https://zhuanlan.zhihu.com/p/35510434

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末朽寞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子斩郎,更是在濱河造成了極大的恐慌脑融,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缩宜,死亡現(xiàn)場離奇詭異肘迎,居然都是意外死亡,警方通過查閱死者的電腦和手機锻煌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門妓布,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宋梧,你說我怎么就攤上這事匣沼。” “怎么了捂龄?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵释涛,是天一觀的道長。 經(jīng)常有香客問我倦沧,道長唇撬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任展融,我火速辦了婚禮局荚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愈污。我一直安慰自己耀态,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布暂雹。 她就那樣靜靜地躺著首装,像睡著了一般。 火紅的嫁衣襯著肌膚如雪杭跪。 梳的紋絲不亂的頭發(fā)上仙逻,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天驰吓,我揣著相機與錄音,去河邊找鬼系奉。 笑死檬贰,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缺亮。 我是一名探鬼主播翁涤,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼萌踱!你這毒婦竟也來了葵礼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤并鸵,失蹤者是張志新(化名)和其女友劉穎鸳粉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體园担,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡届谈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了弯汰。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疼约。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蝙泼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情劝枣,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站淫僻,受9級特大地震影響躯嫉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稳诚,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一哗脖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扳还,春花似錦才避、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至俏让,卻和暖如春楞遏,著一層夾襖步出監(jiān)牢的瞬間茬暇,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工寡喝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留糙俗,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓预鬓,卻偏偏與公主長得像巧骚,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子珊皿,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,834評論 2 345

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