R包c(diǎn)lusterProfiler: 轉(zhuǎn)換ID犁享、GO/KEGG富集分析

參考這篇
ID轉(zhuǎn)換不用怕,clusterProfiler幫你忙
這篇詳細(xì)講了無參考基因組該怎么辦豹休,值得一看

簡(jiǎn)單介紹一下幾種常用的ID:
Ensemble id:一般以ENSG開頭炊昆,后邊跟11位數(shù)字。如TP53基因:ENSG00000141510
Entrez id:通常為純數(shù)字威根。如TP53基因:7157
Symbol id:為我們常在文獻(xiàn)中報(bào)道的基因名稱凤巨。如TP53基因的symbol id為TP53
Refseq id:NCBI提供的參考序列數(shù)據(jù)庫:可以是NG、NM洛搀、NP開頭敢茁,代表基因,轉(zhuǎn)錄本和蛋白質(zhì)留美。如TP53基因的某個(gè)轉(zhuǎn)錄本信息可為NM_000546

1 轉(zhuǎn)換ID

1.1 載入包library(clusterProfiler)

library(clusterProfiler)
library(DOSE)
library(org.Hs.eg.db)

org.Hs.eg.db是人類基因組注釋彰檬,如果需要其他物種的注釋信息,可以去bioconductor這里獲得

1.2. keytypes()查看注釋包中支持的ID轉(zhuǎn)換類型谎砾,基本包括了所以常用的ID類型

keytypes()

1.3. bitr()函數(shù)轉(zhuǎn)換ID

函數(shù)全部?jī)?nèi)容如下

bitr(geneID, fromType, toType, OrgDb, drop = TRUE

geneID:輸入待轉(zhuǎn)換的geneID
fromType:輸入的ID類型
toType:希望輸出的ID類型
OrgDb:注釋對(duì)象的信息
drop:drop = FALSE 保留空值

TP53為例僧叉,希望輸出'ENTREZID','ENSEMBL','REFSEQ'

my_id <- c("TP53")

output <- bitr(my_id,
               fromType = 'SYMBOL',
               toType = c('ENTREZID','ENSEMBL','REFSEQ'),
               OrgDb = 'org.Hs.eg.db')
轉(zhuǎn)換后的結(jié)果

1.4. bitr_kegg()函數(shù)進(jìn)行基因ID與蛋白質(zhì)ID的轉(zhuǎn)換

函數(shù)全部?jī)?nèi)容如下,與bitr()類似

bitr_kegg(geneID, fromType, toType, organism, drop = TRUE)

??????在參數(shù)這里與bitr()有些區(qū)別棺榔!
geneID:輸入待轉(zhuǎn)換的geneID
fromType:輸入的ID類型只能是kegg(與entrez id相同), ncbi-geneid, ncbi-proteinid or uniprot中的一個(gè)
toType:希望輸出的ID類型瓶堕,也只能是kegg(與entrez id相同), ncbi-geneid, ncbi-proteinid or uniprot中的一個(gè)
organismhsa,代表人類症歇,其他的物種名稱可以參考kegg的網(wǎng)站
drop:去除空值與否

TP53entrez id7157

kegg <- bitr_kegg(7157,
                   fromType = 'kegg',
                   toType = c('ncbi-geneid', 'ncbi-proteinid', 'uniprot'),
                   organism = 'hsa')

報(bào)錯(cuò)了郎笆,所以一次應(yīng)該只能進(jìn)行一種轉(zhuǎn)換谭梗!


改成這樣↓

kegg <- bitr_kegg(7157,
                  fromType = 'kegg',
                  toType = 'ncbi-proteinid',
                  organism = 'hsa')

轉(zhuǎn)換為uniprot

kegg <- bitr_kegg(7157,
                  fromType = 'kegg',
                  toType = 'uniprot',
                  organism = 'hsa')

出現(xiàn)了三個(gè)uniprot

UniProt網(wǎng)站上查詢一下為什么會(huì)有三個(gè):
P04637顯示的是TP53基因的蛋白質(zhì)表達(dá)水平,級(jí)別是Reviewed宛蚓,就是其來源為UniProtKB/Swiss-Prot激捏。
P04637

K7PPA8顯示的是轉(zhuǎn)錄本水平的表達(dá),級(jí)別是Unreviewed凄吏,就是其來源為UniProtKB/TrEMBL


K7PPA8

Q53GA5顯示的是轉(zhuǎn)錄本水平的表達(dá)远舅,級(jí)別是Unreviewed,就是其來源為UniProtKB/TrEMBL


Q53GA5

一般ID轉(zhuǎn)換僅僅為開始的準(zhǔn)備工作痕钢,將自己的數(shù)劇轉(zhuǎn)換好之后可以進(jìn)行后續(xù)的分析图柏。
另外,利用clusterProfiler包可以進(jìn)行許多豐富的下游分析任连,比如GO分析蚤吹、KEGG分析等等

2 富集分析

參考這篇
最常用的基因注釋工具是GOKEGG注釋,這基本上是和差異基因分析一樣随抠,必做的事裁着,GO可在BP(生物過程),MF(分子功能)拱她,CC(細(xì)胞組分)三方面進(jìn)行注釋

GO中的注釋信息

KEGG數(shù)據(jù)庫全部的物種及其簡(jiǎn)寫(三個(gè)字母)

有很多在線(DAVID二驰、GatherGOrilla,revigo)或者客戶端版的工具(IPA(IPA不是用的GO和KEGG數(shù)據(jù)庫)和FUNRICH)可以用來分析差異基因秉沼,我主要實(shí)踐一下clusterProfiler

??clusterProfiler提供有兩種富集方式??:

① ORA(Over-Representation Analysis)差異基因富集分析(不需要表達(dá)值诸蚕,只需要gene name)
② FCS,它的代表就是GSEA氧猬,即基因集(gene set)富集分析(不管有無差異背犯,需要全部genes表達(dá)值)

① ORA 差異基因富集分析(不需要表達(dá)值,只需要gene name)

1) 先讀進(jìn)來差異基因
sig.gene <- read.delim("你的路徑/final_result.txt(之前計(jì)算出的差異基因文件)",  sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
gene<-sig.gene[,1]
head(gene)

#轉(zhuǎn)換ID
gene.df<-bitr(gene, fromType = "ENSEMBL", 
              toType = c("SYMBOL","ENTREZID"),
              OrgDb = org.Hs.eg.db,
              drop = FALSE)

head(gene.df)
2) GO富集
ego_cc<-enrichGO(gene = gene.df$ENSEMBL,
                 OrgDb  = org.Hs.eg.db,
                 keyType = 'ENSEMBL',
                 ont  = "CC",
                 pAdjustMethod = "BH",
                 pvalueCutoff = 0.01,
                 qvalueCutoff = 0.05)

ego_bp<-enrichGO(gene = gene.df$ENSEMBL,
                 OrgDb = org.Hs.eg.db,
                 keyType = 'ENSEMBL',
                 ont  = "BP",
                 pAdjustMethod = "BH",
                 pvalueCutoff = 0.01,
                 qvalueCutoff = 0.05)

參數(shù)意義:
keyType 指定基因ID的類型盅抚,默認(rèn)為ENTREZID
OrgDb 指定該物種對(duì)應(yīng)的org包的名字
ont 代表GO的3大類別漠魏,BP, CC, MF,也可是全部ALL

pAdjustMethod 指定多重假設(shè)檢驗(yàn)矯正的方法妄均,有“ holm”, “hochberg”, “hommel”, “bonferroni”, “BH”, “BY”, “fdr”, “none”中的一種
cufoff 指定對(duì)應(yīng)的閾值
readable=TRUE 代表將基因ID轉(zhuǎn)換為gene symbol柱锹。

barplot() #富集柱形圖
dotplot() #富集氣泡圖
cnetplot() #網(wǎng)絡(luò)圖展示富集功能和基因的包含關(guān)系
emapplot() #網(wǎng)絡(luò)圖展示各富集功能之間共有基因關(guān)系
heatplot() #熱圖展示富集功能和基因的包含關(guān)系

3) barplot()作圖顯示,依賴于ggplot2包
library(ggplot2)
barplot(ego_bp,showCategory = 18,title="The GO_BP enrichment analysis of all DEGs ")  

ggplot2參數(shù)意義具體可以看這篇

barplot()

dotplot()

emapplot()
4) 或者是KEGG分析

輸入的gene要為vector格式的entrezid丰包,可以用is.vector()判斷是否是vector格式

library(stringr)

kk<-enrichKEGG(gene = gene.df$ENTREZID,
               organism = "hsa",
               keyType = "kegg",          
               pAdjustMethod = "BH",
               pvalueCutoff = 0.01)

KEGG

??但是這樣產(chǎn)生的kk幾乎都是Na禁熏,更別提畫圖了
于是我去看了Y叔的手冊(cè),發(fā)現(xiàn)需要使用DOSE構(gòu)建邑彪,改成

library(DOSE)

data(geneList, package = "DOSE")
gene <- names(geneList)[abs(geneList) > 2]

kk<-enrichKEGG(gene = gene,
               organism = "hsa",
               keyType = "kegg",
               pAdjustMethod = "BH",
               pvalueCutoff = 0.01)

就可以了瞧毙,繼續(xù)往下進(jìn)行

#bar圖
barplot(kk,showCategory = 25, title="The KEGG enrichment analysis of all DEGs")+
  scale_size(range=c(2, 12))+
  scale_x_discrete(labels=function(kk) str_wrap(kk,width = 25))
#點(diǎn)圖
dotplot(kk,showCategory = 25, title="The KEGG enrichment analysis of all DEGs")+
  scale_size(range=c(2, 12))+
  scale_x_discrete(labels=function(kk) str_wrap(kk,width = 25))
barplot()

dotplot()

cnetplot()

heatplot()

② GSEA 基因集(gene set)富集分析(不管有無差異,需要全部genes表達(dá)值)

這篇為網(wǎng)頁版操作
好處:可以發(fā)現(xiàn)被差異基因舍棄的genes可能參與了某重要生理過程或信號(hào)通路
要點(diǎn):用所有差異基因來跑GSEA,而不是按篩選條件篩選出來的宙彪,否則GSEA就失去了意義

1)讀入全部差異基因數(shù)據(jù)
library(dplyr)
all_deseq <- read.delim("你的路徑/DESeq2-res.txt",  sep = '\t', stringsAsFactors = FALSE, check.names = FALSE)
部分內(nèi)容
2) 提取出gene_idlog2FoldChange
ensemblid_log2fdc <-dplyr::select(all_deseq, gene_id, log2FoldChange)
3) 可以看到這時(shí)gene_id還不是整數(shù)形式矩动,所以對(duì)這列gsub()取整,命名為symbol列添加到ensemblid_log2fdc
ensemblid_log2fdc$symbol <- gsub("\\.\\d*", "", all_deseq[,2])
4)轉(zhuǎn)換id:將ENSEMBLID轉(zhuǎn)為ENTREZID
entrezid <-bitr(ensemblid_log2fdc$symbol, 
              fromType = "ENSEMBL", 
              toType = c("ENTREZID"),
              OrgDb = org.Hs.eg.db,
              drop = TRUE)
5)因?yàn)?)中merge需要相同列名释漆,所以將symbol列列名改為ENSEMBL
names(ensemblid_log2fdc) <- c("gene_id", "log2FoldChange", "ENSEMBL")
6)ensemblid_log2fdcentrezid拼接到一起悲没,依靠的是它們具有相同列名的列——ENSEMBL
final <- merge(ensemblid_log2fdc, entrezid)
7) 提取entrezidlog2fdc
library(dplyr)    
entrezid_log2fdc <- dplyr::select(final, ENTREZID, log2FoldChange)
8) 用arrange()log2fdc排序,desc()表示降序
final.sort <- arrange(entrezid_log2fdc, desc(log2FoldChange))
9) 構(gòu)建一下要GSEA分析的數(shù)據(jù)
genelist <- final.sort$log2FoldChange
names(genelist) <- final.sort[,1]
10) 進(jìn)行GSEA分析男图,需要entrezid示姿,因此我前面才會(huì)進(jìn)行ID轉(zhuǎn)化
gsemf <- gseGO(genelist,
           OrgDb = org.Hs.eg.db,
           keyType = "ENTREZID",
           ont="BP",
           pvalueCutoff = 1)
head(gsemf)
11)畫出GSEA圖
gseaplot(gsemf, 1)
GSEA圖

3 可視化

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

barplot

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

dotplot

dotplot(ego, showCategory = 10)

DAG有向無環(huán)圖

plotGOgraph(ego) #矩形代表富集到的top10個(gè)GO terms, 顏色從黃色過濾到紅色逊笆,對(duì)應(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)記富集到的基因,會(huì)鏈接到KEGG官網(wǎng)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
禁止轉(zhuǎn)載览露,如需轉(zhuǎn)載請(qǐng)通過簡(jiǎn)信或評(pí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
  • 文/不壞的土叔 我叫張陵诅炉,是天一觀的道長(zhǎng)蜡歹。 經(jīng)常有香客問我,道長(zhǎ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
  • 文/蒼蘭香墨 我猛地睜開眼蒸矛,長(zhǎng)吁一口氣:“原來是場(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ú)居荒郊野嶺守林人離奇死亡耳奕,尸身上長(zhǎng)有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
  • 正文 我出身青樓驻啤,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親荐吵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子骑冗,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

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