轉(zhuǎn)錄組分析(三)--GO及KEGG富集分析及可視化(包括條形圖及氣泡圖)(對差異基因的可視化)

#### 安裝包
install.packages("BiocManager")
BiocManager::install(version = "3.13")
BiocManager::install("gprofiler2")
BiocManager::install("clusterProfiler")
BiocManager::install("AnnotationHub")
BiocManager::install("org.Bt.eg.db")

GO分析(上下調(diào)基因分開做问芬,可用于BP,CC,MF分開畫圖)

## 方法2:下載到本地加載,每次使用上傳,(推薦)
library(AnnotationDbi)
setwd("D:/生信/sheep.db")
sheep.db <- AnnotationDbi::loadDb('org.Ovis_aries.eg.sqlite')
columns(sheep.db)

## 牛
library(AnnotationDbi)
setwd("D:/生信/cattle.db")
bos.db <- AnnotationDbi::loadDb('org.Bt.eg.db.sqlite')
columns(bos.db)
#讀取基因列表文件中的基因名稱
genes <- read.table('GENEID.txt', header = T, stringsAsFactors = FALSE,sep = '\t')
library("org.Bt.eg.db")
library(clusterProfiler)
#GO富集分析,上下調(diào)分開做
#對于加載的注釋庫的使用簿晓,以上述為例症革,就直接在 OrgDb 中指定人(org.Hs.eg.db)或綿羊(sheep)
enrich.go <- enrichGO(gene = genes$V1,  #基因列表文件中的基因名稱
                      OrgDb = "org.Bt.eg.db",  #指定物種的基因數(shù)據(jù)庫
                      keyType = 'SYMBOL',  #指定給定的基因名稱類型,例如這里以 SYMBOL 為例
                      ont = 'CC',  #可選 BP仔掸、MF脆贵、CC,也可以指定 ALL 同時計算 3 者
                      pAdjustMethod = 'BH',  #指定 p 值校正方法
                      pvalueCutoff = 1,  #指定 p 值閾值起暮,不顯著的值將不顯示在結(jié)果中
                      qvalueCutoff = 1  #指定 q 值閾值卖氨,不顯著的值將不顯示在結(jié)果中
                     )
# 例如上述指定 ALL 同時計算 BP、MF负懦、CC筒捺,這里將它們作個拆分后輸出
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), 'HUgo.BP.txt', sep = '\t', row.names = FALSE, quote = FALSE)
write.table(as.data.frame(CC), 'HUgo.CC.txt', sep = '\t', row.names = FALSE, quote = FALSE)
write.table(as.data.frame(MF), 'HUgo.MF.txt', sep = '\t', row.names = FALSE, quote = FALSE)

GO分析(上下調(diào)一起做,強烈推薦纸厉,可以看整體結(jié)果系吭,并可選取其中的部分畫圖)

#up及down基因的合并處理 
gene_down <- read.table('up_gene.txt', header = T, stringsAsFactors = FALSE,sep = '\t')
gene_up <- read.table('down_gene.txt', header = T, stringsAsFactors = FALSE,sep = '\t')
# 轉(zhuǎn)基因ID
library(clusterProfiler)
deg.up.gene <- bitr(gene_up$x, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = bos.db)$ENTREZID 
deg.down.gene <- bitr(gene_down$x, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = bos.db)$ENTREZID
# 將up 和 down基因合并到一個表格
deg.ei.ls <- list(up = deg.up.gene, down = deg.down.gene)

# GO
library("org.Bt.eg.db")
GO.cmp <- compareCluster(deg.ei.ls,
                         fun = "enrichGO",
                         qvalueCutoff = 0.1, 
                         pvalueCutoff = 0.01,
                         pAdjustMethod = 'BH',
                         ont = 'BP', #可選 BP、MF颗品、CC肯尺,也可以指定 ALL 同時計算 3 者沃缘,建議分開做輸出,默認按照pvalue升序排列的
                         OrgDb = "org.Bt.eg.db")
write.table(GO.cmp@compareClusterResult,'GO-up-down.txt',sep = '\t',quote = F)

GO 條形圖(上下調(diào)一起蟆盹,不過BP,CC,MF等需要分開做)

library(ggplot2)
library(ggsci)
ddf<-read.table('GO-up-down.txt',header = T,sep = '\t')
dat=ddf
dat$Cluster = ifelse(dat$Cluster =='up',1,-1)
dat$pvalue = -log10(dat$pvalue)
dat$pvalue <- dat$pvalue*dat$Cluster
dat=dat[order(dat$pvalue,decreasing = F),]

ggplot(dat, aes(x=reorder(Description,order(pvalue, decreasing = F)), 
                y=pvalue,fill=Cluster)) + 
  geom_bar(stat="identity",width = 0.78,position = position_dodge(0.7)) + 
  scale_fill_gradient(low="#3685af",high="#af4236",guide = FALSE)+
  scale_x_discrete(name ="GO Terms") +
  #scale_y_discrete(labels =Description )
  scale_y_continuous(name ="-log10Pvalue",expand = c(0,0)) +
  coord_flip() +  # 翻轉(zhuǎn)坐標
  theme(panel.grid.major.y = element_blank(),panel.grid.minor.y = element_blank())+ #刪除縱向網(wǎng)絡(luò)
  theme(axis.text.y = element_blank())+ #刻度標簽空白
  theme(axis.ticks = element_blank())+ #刻度為空白
  theme(panel.border = element_blank())+ #邊框為空白
  theme(axis.text=element_text(face = "bold",size = 15),
        axis.title = element_text(face = 'bold',size = 15), #坐標軸字體
        plot.title = element_text(size = 20,hjust = 0.3), 
        legend.position = "top",panel.grid = element_line(colour = 'white'))+
  geom_text(aes(label=Description),size=3.5,hjust=ifelse(dat$pvalue>0,1.5,-0.5))+ # 兩側(cè)加上標簽文字
  ggtitle("The most enriched GO-BP terms")  # 添加標題

GO氣泡圖(可上下調(diào)一起做孩灯,也不用將BP,CC,MF分開,最好選擇適當數(shù)量)

從這位老哥那里薅過來的逾滥,這里是原文鏈接(https://blog.csdn.net/sweet_yemen/article/details/125457274)

# 富集氣泡圖
 # BiocManager::install("openxlsx")
library(ggplot2)#這個是一個非常厲害的繪圖R包
library(openxlsx)#這個包是用來導入格式為XLSX的數(shù)據(jù)的

goinput <- read.xlsx("go-barplot.xlsx")#載入GO富集分析的結(jié)果文件
# 這里強調(diào)一下富集后的GeneRatio是以n/n這種形式的峰档,需要換成小數(shù)形式,在excel中使用=--("0 "&A1)
# A1代表對應(yīng)的單元格
# 設(shè)置XY軸
x=goinput$GeneRatio#設(shè)置以哪個數(shù)據(jù)為X軸
y=factor(goinput$Description,levels = goinput$Description)#設(shè)置Y軸
# 繪制畫布
p = ggplot(goinput,aes(x,y))#開始以X軸和Y軸繪制畫布
p#這里可以查看一下繪制的程度了寨昙,學代碼時多看看每個新的對象有助于理解代碼

#繪圖讥巡,大概的意思是,又設(shè)置了除XY軸數(shù)據(jù)(Ratio舔哪,GOterm)之后又設(shè)置了三個維度的數(shù)據(jù)欢顷。
#三個數(shù)據(jù)分別是以count為點的大小,以顏色的由嫩綠到深粉紅代表P值的對數(shù)值捉蚤,以點的性狀代表GO類型(MF,CC,BP)
p1 = p + geom_point(aes(size=Count,color=-0.5*log(pvalue),shape=ONTOLOGY,))+
  scale_color_gradient(low = "SpringGreen", high = "DeepPink")
p1
#添加各類標簽
p2 = p1 + labs(color=expression(-log[10](pvalue)),
               size="Count",
               x="Ratio",
               y="Go_term",
               title="Go enrichment of test Genes")
p2

KEGG, 上下調(diào)一起做(適合看上下調(diào)整體的結(jié)果)

#up及down基因的合并處理 
gene_down <- read.table('up_gene.txt', header = T, stringsAsFactors = FALSE,sep = '\t')
gene_up <- read.table('down_gene.txt', header = T, stringsAsFactors = FALSE,sep = '\t')
# 轉(zhuǎn)基因ID
library(clusterProfiler)
deg.up.gene <- bitr(gene_up$x, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = bos.db)$ENTREZID 
deg.down.gene <- bitr(gene_down$x, fromType = "SYMBOL", toType = "ENTREZID", OrgDb = bos.db)$ENTREZID
# 將up 和 down基因合并到一個表格
deg.ei.ls <- list(up = deg.up.gene, down = deg.down.gene)

library(clusterProfiler)
R.utils::setOption("clusterProfiler.download.method",'auto') ##一定要用這個抬驴,不然報錯別怪我哦
kegg.cmp <- compareCluster(deg.ei.ls,
                           fun = "enrichKEGG",
                           qvalueCutoff = 1, 
                           pvalueCutoff = 1,
                           pAdjustMethod = 'BH',
                           organism = "bta")
dotplot(kegg.cmp)
write.table(kegg.cmp@compareClusterResult,'kegg-up-down.txt',sep = '\t',quote = F)

kegg, 上下調(diào)分開做(適合畫圖)

library(clusterProfiler)
genes <- read.table('txt', header = T, stringsAsFactors = FALSE,sep = '\t')
covID <- bitr(genes$V1, fromType = "SYMBOL",
                   toType="ENTREZID",OrgDb= bos.db , drop = TRUE) # 轉(zhuǎn)換為entrezID缆巧,KEGG只識別這種ID布持,報錯請檢查自己輸入的文件,對自己的代碼有自信
write.table(covID,'ENTREZID-up.txt',sep = '\t',quote = F) # 寫出去保存,也可以不保存陕悬,看個人需求

#每次打開R計算時题暖,它會自動連接kegg官網(wǎng)獲得最近的物種注釋信息,因此數(shù)據(jù)庫一定都是最新的
search_kegg_organism("taurus", by="scientific_name") # 尋找對應(yīng)動物的organism

R.utils::setOption("clusterProfiler.download.method",'auto') ##一定要用這個捉超,不然報錯別怪我
enrich_kegg <- enrichKEGG(gene = covID$ENTREZID, # 基因列表文件中的基因名
                          organism = 'bta',  # 指定物種胧卤,牛為bta
                          keyType = 'kegg', # kegg富集
                          pAdjustMethod = 'BH', # 指定矯正方法
                          pvalueCutoff = 1, # 指定p值閾值,不顯著的值將不顯示在結(jié)果中
                          qvalueCutoff = 1) # 指定q值閾值拼岳,不顯著的值將不顯示在結(jié)果中
#輸出結(jié)果
write.table(enrich_kegg@result,'kegg-down.txt',quote = F,sep = '\t')

KEGG富集氣泡圖(上下調(diào)分開做推薦)

library(ggplot2)
dotplot(enrich_kegg,
        showCategory = 15,#展示前15個點枝誊,默認為10個
        color = 'pvalue',
        title = "kegg_dotplot")

KEGG富集條形圖

barplot(enrich_kegg,       
        showCategory = 15,#展示前15個點,默認為10個
        color = 'pvalue',
        title = "kegg_dotplot")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惜纸,一起剝皮案震驚了整個濱河市侧啼,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堪簿,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件皮壁,死亡現(xiàn)場離奇詭異椭更,居然都是意外死亡,警方通過查閱死者的電腦和手機蛾魄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門虑瀑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來湿滓,“玉大人,你說我怎么就攤上這事舌狗∵窗拢” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵痛侍,是天一觀的道長朝氓。 經(jīng)常有香客問我,道長主届,這世上最難降的妖魔是什么赵哲? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮君丁,結(jié)果婚禮上枫夺,老公的妹妹穿的比我還像新娘。我一直安慰自己绘闷,他們只是感情好橡庞,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著印蔗,像睡著了一般扒最。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上喻鳄,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天扼倘,我揣著相機與錄音,去河邊找鬼除呵。 笑死再菊,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的颜曾。 我是一名探鬼主播纠拔,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泛豪!你這毒婦竟也來了稠诲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤诡曙,失蹤者是張志新(化名)和其女友劉穎臀叙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體价卤,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡劝萤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了慎璧。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片床嫌。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡跨释,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出厌处,到底是詐尸還是另有隱情鳖谈,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布阔涉,位于F島的核電站缆娃,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏洒敏。R本人自食惡果不足惜龄恋,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凶伙。 院中可真熱鬧郭毕,春花似錦、人聲如沸函荣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽傻挂。三九已至乘碑,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間金拒,已是汗流浹背兽肤。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绪抛,地道東北人资铡。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像幢码,于是被迫代替她去往敵國和親笤休。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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