Python モジュール: Biopython
概要
- アメリカの国立生物工学情報センターのデータベースにアクセスできる API モジュール (http://biopython.org/)。
- ウェブ (https://www.ncbi.nlm.nih.gov/) からでも簡単にアクセスできるが、大量のデータをダウンロードや検索する場合にはプログラムを作っちゃったほうが早かったりするので重宝する。
- データは Entrez オブジェクト (実体は xml) で返されるが、
read()
メソッドによってディクショナリ形式にパースされる。 - クックブックも公開され、比較的とっつきやすい。
使い方
インストール
- pip からインストール
$ sudo pip install biopython
モジュールの読み込みと初期化
from Bio import Entrez Entrez.email = "メールアドレス" Entrez.tool = "ツール名"
Entrez.email
: サーバに負荷をかけている場合に、指定したメールアドレス宛に連絡が届く (これを指定しない場合は利用できない)Entrez.tool
: アプリを作成した場合にここで指定したツール名が作用する (必須ではない)
データベース一覧の取得
dblist = Entrez.einfo() dblist_parsed = Entrez.read(dblist) print(dblist_parsed["Dblist"])
read()
によって、キーがDblist
のみのディクショナリに変換される。Dblist
:[DbName1, DbName2, …]
データベース取得
db = Entrez.einfo(db = "データベース名") print(Entrez.read(db))
einfo()
にデータベース名を与えると、特定のデータベース情報を取得できる。DbInfo
:[Count, DbName, …, FieldList, …]
- よく使うデータベースは、
nucleotide
、nuccore
データベースの検索
result = Entrez.esearch(db = "データベース名", term = "検索条件", retmax = 100) print(Entrez.read(result))
- 指定データベースから、指定した条件で検索する。
- ヒトの特定の遺伝子名の配列を検出するための条件:
遺伝子名[Gene] AND 遺伝子名[Title] AND Homo sapiens[Organism] AND Genomic DNA[Filter] AND RefSeq[Filter]“
retmax
で表示する最大数を指定する。デフォルトは 20。- マッチしたデータ数は、
result[“Counter”]
に格納されている。 - 詳細の ID は
result[“IdList”]
にリスト形式で格納されているが、retmax
の分しか格納されない。
配列ファイル (Genbank, Fasta) の取得&保存
obj_gb = Entrez.efetch(db = "データベース名", id = 配列ID, rettype = "gb", retmode = "text") obj_output = open(OUTPUT_PATH, "w") obj_output.write(obj_gb.read())
efetch()
メソッドでデータの実体を取得する。配列ID
はesearch()
の結果の `IdList` キーにリスト形式で格納されているのでそれを指定する。OUTPUT_PATH
は出力先のファイルパスrettype
とretmode
で出力するファイルタイプを指定する。詳しくは Table 1, \[– Valid values of &retmode and &rettype for EFetch (null = empty string)\]. - Entrez Programming Utilities Help - NCBI Bookshelf を参照。- 今回は、GenBank 形式で出力するため、
rettype = “gb”, retmode = “text”
とした。