先上圖
安裝GOplot
install.packages("GOplot")
激活GOplot
library(GOplot)
因為我喜歡用excel進行一些文本操作,所以也激活了操作xlsx格式的r包
library(openxlsx)
###########試運行幫助文檔中的教程##########
help(package = "GOplot")
#點擊Help Pages下的EC
這里由這個數據的一些描述,例如這是內皮細胞的轉錄組信息
詳細的描述(有道翻譯)
數據集包含來自兩個穩態組織(大腦和心臟)的內皮細胞的轉錄組信息。更詳細的信息可以在Nolan et al. 2013的論文中找到。將數據歸一化并進行統計分析以確定差異表達基因。利用DAVID功能注釋工具對一組差異表達基因(校正p-value<0.05)。
在來看一下EC數據里有哪些內容
data(EC)
查看一下該數據集中各自的數據內容
head(EC$david)
也可以使用openxlsx的write.xlsx函數將這個參考數據包里面的信息下載下來。然后用excel查看。例如:
write.xlsx(EC$david,"EC-david.xlsx")
write.xlsx(EC$genelist,"EC-genelist.xlsx")
可以看到,david這個數據中包含174行*5列的內容,這5列分別是Category(GO富集分析中的三大生物學過程:BP、CC、MF),ID(富集到的GO號),Term(GO號對應的生物學過程名),Genes(該富集到該過程的genes),adj_pval(校正P值)。
查看一下genelist的內容
head(EC$genelist)
該數據一共2039行*7列,分別是ID(基因名),logFC(差異表達倍數),AveExpr(平均表達量),t(暫不清楚),P.Value(表達P值),adj.P.Val(校正P值),B(暫不清楚)。不清楚這個數據對作圖是否有影響。因為后面需要用到chord_dat函數將這兩個數據進行整合,見下圖。下圖中zscore值不知到和上面的t值和B值是否有關系。然后查看了幫助文檔中對于circle_dat函數的使用要求。
顯示term只要terms的category、ID、term、adj_pval和genes,genes只要ID和logFC即可。我們自己的數據根據以上要求修改好即可,但是列名必須和上述要求一致。就像下面這樣。
EC-david-adjust.xlsx
EC-genelist-adjust.xlsx
這里有一個問題,就是Genes列中基因名是大寫的,而ID列中的基因名是小寫的,這里在使用chord_dat函數時回報錯,個人認為r會區分大小寫。所以需要用Excel的UPPER函數將ID列的基因名轉換為大寫。這樣就不會報錯了。
讀取準備好的這兩個文件。
d1 = read.xlsx("EC-david-adjust.xlsx")
d2 = read.xlsx("EC-genelist-1adjust.xlsx")
#利用circle_dat()函數整合EC-david-adjust.xlsx和EC-genelist-adjust.xlsx。
circ = circ = circle_dat(d1,d2)
可以看到,該函數將這兩個數據進行了整合,即以每一個基因為目標分配各種信息。其中adj_pcal是由富集分析中的校正p值給出的。
d3 = c("heart development","vasculature development","blood vessel development","tissue morphogenesis","blood vessel morphogenesis")#這個是指定你要做那幾個GO的弦圖。這個必須于david文件中的名字一樣。
然后使用chord_dat函數將circ、d2、d3進行整合。
chord = chord_dat(circ,d2,d3)
head(chord)
這個其實是生成了一個帶有差異表達倍數的GO屬性矩陣。
然后就可以開始出圖啦。
pdf("chord3.pdf",height = 13,width = 13)#準備好一塊畫布。
GOChord(chord,space = 0.02,gene.order = 'logFC',gene.space = 0.25,gene.size = 5)#進行繪圖。
dev.off()#然后必須關閉并保存這塊畫布。
然后就是可以進行一些微調啦,這張圖片里用的基因有點偏多,可以在刪除一些不太感興趣的基因或者差異表達倍數不大或者padj值比較偏大的基因。