Gene Ontology 的GO註釋的可視化@TOC
利用goatools和PyGraphviz可視化
最近因爲項目的原因,需要對GO terms的註釋進行可視化,在此之前已經使用visio自己畫了可視化的圖(天啊,工作量真的好大,畫起來太麻煩啦!)。偶然間發現了一個goatools這個可視化的工具,發現自己之前寫太多代碼了,明明可以直接掉包的==!。
可視化的時候,必須要安裝PyGraphviz。
安裝PyGraphviz工具的準備以及過程
因爲pyGraphviz的官網只能支持Python2.7的版本,所以只能使用conda重新安裝一個虛擬環境了:
- 安裝Python2.7虛擬環境 ,
conda create --name py2 python=2.7
,因爲只需要做可視化,只用導入必要的包就可以了,暫時不用安裝其他的庫; - 安裝graphviz-2.38.msi ,安裝完成之後,在系統環境變量中添加
PATH=C:\Program Files (x86)\Graphviz2.38\bin
,如果沒有添加路徑,goatools就無法畫圖 鏈接:https://pan.baidu.com/s/1SeQeiZfG-N7iKnoIT0YNRg
提取碼:u4wl - 安裝pygraphviz-1.3.1-cp27-none-win_amd64.whl ,用pip下載容易出錯,下載完成後直接
pip install pygraphviz-1.3.1-cp27-none-win_amd64.whl
; - 安裝完成後用一小段代碼看是否安裝成功;
import pygraphviz as pyg
g=pyg.AGraph() #建立圖
g.add_node('A') #建立點
g.add_edge('A','B') #建立邊
g.add_edge('A','C') #建立邊
g.layout(prog='dot') #繪圖類型
g.draw('pyg1.png') #繪製
如果能顯示出一張pyg1.png則說明安裝成功
可視化多個GO term的列表
畫出下面的這個列表的所有的GO terms的DAG圖
['GO:0004176','GO:0042802','GO:0005117','GO:0009376','GO:0005515']
首先需要下載對應的go-basic.obo文件。
代碼實現如下:
node_temp=['GO:0004176','GO:0042802','GO:0005117','GO:0009376','GO:0005515']
go=obo_parser.GODag('../data/go-basic.obo',optional_attrs='relationship')
recs=[]
for node in node_temp:
rec=go.query_term(node)
recs.append(rec)
# 設置draw_children=False,否則畫出的圖將非常龐大!
go.draw_lineage(recs,draw_children=False)
畫出的圖如下:
如果還需要對圖片進一步的美化和編輯,可以利用cytoscape工具。
CentOS安裝PyGraphviz
背景:非root用戶,並且沒有權限
看了很多的博客和Stackoverflow,關於CentOS安裝PyGraphviz的經驗真的是少之又少,對於非root用戶,更沒有了。。。。。。
這裏列出兩種,並且其中一種無效。
- 方法一:
pip install graphviz
# 發現安裝成功
pip install pygraphviz
# 失敗!
原因如下:
看有的博客有說安裝pip install graphviz libgraphviz-dev pkg-config等,發現真的沒用。
於是選擇方法二。
#方法二
#下載Graphviz的rpm文件
#查看graphviz
yum list 'graphviz*'
#安裝
yum install 'graphviz*'(結果發現要在root權限下才可以)
#下載rpm文件
yumdownloader graphviz.x86_64
#移動到好找到的文件件,然後添加路徑並解壓
rpm2cpio graphviz-2.30.1-21.el7.x86_64.rpm |cpio -idvm
export PATH=/home/siqihuang/graphviz/usr/bin/
# 添加完路徑後不能忘記source ./.bashrc
# 後面開始安裝pygraphviz結果還是報錯,而且導致ls、ssh等命令也不能使用,不知道爲什麼,要不退出環境然後再進來看一下吧。
# 進入Python2環境後
conda install pygraphviz
#--竟然可以使用了。