PhytozomeのデータをPythonから呼び出せる、PhytoMineというものの存在を知ったので試してみました。Phytozomeは植物の研究者には馴染み深いサイトで、様々な植物種のゲノム・遺伝子情報を調べるのに便利なサイトです。
PhytoMineはInterMineというデータウェアハウスシステムのレジストリの一つです。
InterMineは、LGPL2.1の下でライセンス供与されているオープンソースのデータウェアハウスシステムです。 InterMineは、高度なWebクエリツールによってアクセスされる生物学的データのデータベースを作成するために使用されます。 InterMineを使用して、単一のデータセットからデータベースを作成したり、複数のデータソースを統合したりできます。 いくつかの一般的な生物学的フォーマットのサポートが提供され、他のデータを追加するためのフレームワークがあります。 InterMineには、「箱から出してすぐに」機能し、簡単にカスタマイズできるユーザーフレンドリーなWebインターフェイスが含まれています。
Wikipedia "InterMine"より
InterMineはPythonを含む様々なプログラミング言語で利用することができます。詳しい情報はAPI and Client Librariesを参考に。
PythonでのPhytoMineの使い方について、InterMine-Pythonのチュートリアルを参考に試してみました。インストールはpipでやりました。
$ pip install intermine
クエリとして遺伝子機能と植物種を指定して、Pythonで遺伝子のリストを取得してみました。リストの作成はPandasで行いました。ソースコードは以下の通り。
size = 20 #取得するデータ数を指定
import pandas as pd
from intermine.webservice import Service
service = Service("https://phytozome.jgi.doe.gov/phytomine/service") #PhytoMineのURLを指定してインスタンスを作成
query = service.new_query("Gene") #遺伝子情報を取得する
query.add_constraint("briefDescription","CONTAINS","transcription factor") #遺伝子機能を指定(条件A)
query.add_constraint("name","CONTAINS","Eucgr") #ユーカリ・グランディスの遺伝子名の頭につく"Eucgr"を利用してユーカリ・グランディスを植物種として指定(条件B)
query.add_constraint("name","CONTAINS","Potri") #ポプラの遺伝子名の頭につく"Potri"を利用してポプラを植物種として指定(条件C)
query.set_logic("A & (B | C)") #ユーカリ・グランディスとポプラ、両方の遺伝子を調べるための設定(条件A かつ 条件Bまたは条件C)
dfs = [] #出力を保存するための空リストを作成
for row in query.rows(size=size):
dfs.append(pd.DataFrame(row.values(),index=row.keys()).T) #データの取得とリストへの保存
dfs = pd.concat(dfs) #リストをデータフレームに変換
dfs.to_csv("Tree_TFs_Top20.csv") #データフレームをcsv形式で保存
Gene.briefDescription | Gene.cytoLocation | Gene.description | Gene.genomicOrder | Gene.id | Gene.length | Gene.name | Gene.primaryIdentifier | Gene.score | Gene.scoreType | Gene.secondaryIdentifier | Gene.symbol | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | (1 of 102) PF00319 - SRF-type transcription fa... | None | None | None | 49560540 | 186 | Potri.010G098100 | Potri.010G098100 | None | None | PAC:26981244 | None |
0 | (1 of 102) PF00319 - SRF-type transcription fa... | None | None | None | 303626540 | 186 | Potri.010G098100 | Potri.010G098100 | None | None | PAC:37221527 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 48348276 | 2263 | Potri.007G090600 | Potri.007G090600 | None | None | PAC:27016559 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 48359640 | 1853 | Potri.003G139300 | Potri.003G139300 | None | None | PAC:26998891 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 48837989 | 1051 | Potri.005G168700 | Potri.005G168700 | None | None | PAC:27030760 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 49691741 | 1649 | Potri.017G055400 | Potri.017G055400 | None | None | PAC:26983926 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 50099858 | 2177 | Potri.005G077300 | Potri.005G077300 | None | None | PAC:27029242 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 50216626 | 2401 | Potri.013G135600 | Potri.013G135600 | None | None | PAC:26993814 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 50231866 | 2179 | Potri.019G102200 | Potri.019G102200 | None | None | PAC:27025339 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 303511172 | 2177 | Potri.005G077300 | Potri.005G077300 | None | None | PAC:37265642 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 303527050 | 1051 | Potri.005G168700 | Potri.005G168700 | None | None | PAC:37263387 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 303695561 | 2263 | Potri.007G090600 | Potri.007G090600 | None | None | PAC:37252859 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 303799992 | 2401 | Potri.013G135600 | Potri.013G135600 | None | None | PAC:37233326 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 303940612 | 2179 | Potri.019G102200 | Potri.019G102200 | None | None | PAC:37260937 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 304098097 | 1649 | Potri.017G055400 | Potri.017G055400 | None | None | PAC:37223899 | None |
0 | (1 of 10) PTHR31657:SF9 - ETHYLENE-RESPONSIVE ... | None | None | None | 304255554 | 1853 | Potri.003G139300 | Potri.003G139300 | None | None | PAC:37236557 | None |
0 | (1 of 11) K08064 - nuclear transcription facto... | None | None | None | 49458724 | 4801 | Potri.011G098400 | Potri.011G098400 | None | None | PAC:27000615 | None |
0 | (1 of 11) KOG4282 - Transcription factor GT-2 ... | None | None | None | 174786351 | 2903 | Eucgr.J01012 | Eucgr.J01012 | None | None | PAC:32033046 | None |
0 | (1 of 11) KOG4282 - Transcription factor GT-2 ... | None | None | None | 174819386 | 2316 | Eucgr.J02994 | Eucgr.J02994 | None | None | PAC:32035652 | None |
0 | (1 of 11) KOG4282 - Transcription factor GT-2 ... | None | None | None | 175094637 | 2197 | Eucgr.G03225 | Eucgr.G03225 | None | None | PAC:32071912 | None |
PhytoMineのQueryBuilderのページをみる限り、クエリに使えるデータタイプは遺伝子以外にも色々とあるようなので、ぼちぼち試していきたいです。