多組差異基因富集分析結(jié)果聚類 | 獲得共表達(dá)term的富集圖

本教程問題:
1.mmGO.rdata文件的制作,是否不需要這一步,更改一下腳本即可實(shí)現(xiàn)呢?
2.這樣的圖形美化,目前的圖還不是很滿意,需要進(jìn)行美化。
這些問題,需要我們大家一起解決,切分享哦!


一、前言

我們在做組學(xué)時,常常遇到多多個處理進(jìn)行差異分析,獲得差異基因或差異代謝物。此后,是對這些差異結(jié)果進(jìn)行GO或KEGG富集分析。這是一個很普遍的結(jié)果,但是這樣一弄后,我們對多個組合差異基因進(jìn)行富集分析后,獲得多個GO或KEGG富集分析結(jié)果,圖很多,但是重復(fù)的term也是很多,那如何闡述就是個問題,以及很多圖列在論文中也不是很美觀,只能間部分圖放在附件中。



那么,我們是不是可以間多個GO或KEGG的term進(jìn)行合并繪圖呢?這個想法在很久以前就像做,但是一直沒找到相關(guān)的教程。今天,突發(fā)奇想,無意間看到這樣的教程,那就重復(fù)一下吧。

PS:在這個教程中,自己很多的參數(shù)還是沒有很好的了解,如果你看過或是已經(jīng)可以深入了解,希望你可以分享一下哦。


二、圖形效果


這是最終圖形的效果,總體來說,還是基本滿足我們的需求,但是很多細(xì)節(jié)還是需要調(diào)整。

三、開始繪圖

3.1 導(dǎo)入相關(guān)的包

## 導(dǎo)入R包
library(plyr)
library(stringr)
library(ape)
library(GOSemSim)
library(ggtree)   ## 進(jìn)化樹
library(scales)
library(cowplot)  ## 合圖
library(ggplot2)

設(shè)置路勁

setwd("D:\\小杜的生信筆記\\20220605GO富集聚類")

導(dǎo)入GO富集結(jié)果,這些結(jié)果在外面前期的教程中可獲得:clusterProfiler包 |GO、KEGG功能富集分析 | 值得收藏 GO、KEGG功能富集分析 | 功能富集網(wǎng)絡(luò)圖、熱圖繪制(代碼重新)


多組富集分析結(jié)果的文件名統(tǒng)一命名,便于導(dǎo)入

fnames <- Sys.glob("enrichGO*.csv")
fnames

# GO term的合集
ego.ID <- unique(ego.all[,c(2:4)])
head(ego.ID)

> head(ego.ID)
           ID                                               Description   BgRatio  Bg
1  GO:0046777                               protein autophosphorylation 235/23239 235
2  GO:0034329                                    cell junction assembly 200/23239 200
3  GO:0034330                                cell junction organization 248/23239 248
5  GO:0098742 cell-cell adhesion via plasma-membrane adhesion molecules 199/23239 199
11 GO:0034332                            adherens junction organization 121/23239 121
12 GO:0043405                         regulation of MAP kinase activity 293/23239 293
```
## 3.3 GO term過濾
```
#刪掉超過300個基因的GO term
#如果不想刪除,可以注釋掉下面這段
ego.ID$Bg <- as.numeric(str_split_fixed(ego.ID$BgRatio, "/",2)[,1]) #提取GO term包含的基因數(shù)量
ego.ID <- ego.ID[ego.ID$Bg < 300,] 
dim(ego.ID)

#刪掉少于100個基因的GO term
#具體怎樣篩選,要根據(jù)你自己的數(shù)據(jù)靈活設(shè)置
ego.ID <- ego.ID[ego.ID$Bg > 100,] 
dim(ego.ID)
head(ego.ID)
```
## 3.4 橫向合并多組富集結(jié)果,用于畫熱圖
```
## 橫向合并多組富集結(jié)果,用于畫熱圖
MyMerge <- function(x, y){
  df <- merge(x, y, by= "ID", all.x= TRUE, all.y= TRUE)
  return(df)
}
ego.m <- Reduce(MyMerge, fdataset)
head(ego.m)
```
```
#只保留GO term ID和各組的p.adjust
ego.m <- ego.m[,c(1,4,7,10)] #此處有三組,如果有更多組,要在后面繼續(xù)加
#提取篩選過的GO term
ego.m <- merge(ego.ID[,1:2], ego.m, by= "ID", all.x= TRUE)
rownames(ego.m) <- ego.m$Description
ego.m$ID <- NULL
ego.m$Description <- NULL
```
```
#把列名改為組名
#colnames(ego.m)<- str_remove(fnames, ".csv")
colnames(ego.m) <- paste0("G", seq(1:length(fnames)))
head(ego.m)

> head(ego.m)
                                                       G1          G2          G3
tissue homeostasis                                     NA 0.008364684 0.004178739
regulation of cell-matrix adhesion                     NA 0.003506443 0.003381501
hematopoietic progenitor cell differentiation 0.007418708 0.002188681          NA
myeloid cell homeostasis                      0.012630541          NA          NA
myeloid leukocyte differentiation             0.003034455          NA          NA
regulation of leukocyte migration             0.005619600          NA 0.012970792

3.4 按GO term的相似性聚類

mmGO.rdata文件是這樣獲得的,但是我在考慮如果我們沒有自己.db是要如何獲得,是否可以根據(jù)我們前面的分析進(jìn)行獲得呢?這個問題需要大家一起解決,如果你知道可以分享一下,謝謝??!*

library(org.Hs.eg.db)
hgGO <- godata('org.Hs.eg.db', ont="BP")
head(hgGO)
#save(hgGO, file="mmGO.rdata")

Q1,需要我們一起解決?。?!

#導(dǎo)入之前保存的文件
(load("mmGO.rdata")) 

#計算GO term之間的相似性
ego.sim <- mgoSim(ego.ID$ID, ego.ID$ID, semData=mmGO, measure="Wang", combine=NULL)
ego.sim[1:3, 1:3]

> ego.sim[1:3, 1:3]
                            protein autophosphorylation cell junction assembly
protein autophosphorylation                       1.000                  0.061
cell junction assembly                            0.061                  1.000
cell junction organization                        0.090                  0.683
                            cell junction organization
protein autophosphorylation                      0.090
cell junction assembly                           0.683
cell junction organization                       1.000

#用GO term作為行名、列名,便于查看和畫圖
rownames(ego.sim) <- ego.ID$Description
colnames(ego.sim) <- ego.ID$Description
ego.sim[1:3, 1:3]

繪制聚類圖

#給GO term分類
tree <- nj(as.dist(1-ego.sim))
ggtree(tree) + geom_tiplab() + #寫GO term
  geom_text2(aes(subset=!isTip, label=node), hjust=-.3) + #寫node編號
  coord_cartesian(xlim=c(-.1,1.3)) #左右兩側(cè)留出合適的空間

此圖節(jié)點(diǎn)就是我們后續(xù)分類的標(biāo)準(zhǔn)



3.5 繪圖

繪圖代碼在下面的教程中,如果獲得也可以在知乎、公眾號中進(jìn)行獲得代碼數(shù)據(jù)事例數(shù)據(jù)。
多組差異基因富集分析結(jié)果聚類 | 獲得共表達(dá)term的富集圖


@小杜的生信筆記,主要發(fā)表或收錄生物信息學(xué)的教程,以及基于R的分析和可視化(包括數(shù)據(jù)分析,圖形繪制等);分享感興趣的文獻(xiàn)和學(xué)習(xí)資料!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容