PythonとBiopythonを使用して、NCBIのEntrezデータベースにアクセスする方法について説明します。BiopythonのBio.Entrez
モジュールを使用すると、PubMedやGenBankのレコードにアクセスすることが可能になります。
Entrezとは
EntrezはPubMed, GenBank, GEO等のNCBIのデータベースに対する、ユーザー向けに作られたデータ取得システムです。ブラウザから直接アクセスして手動でクエリを行うこともできますが、BiopythonのBio.Entrez
モジュールを介したプログラムによるアクセスも可能です。
Bio.Entrezモジュール
Bio.Entrez
モジュールは、Entrez Programming Utilities (a.k.a EUtils)を利用しています。このモジュールはクエリ用のURLが正しいことを保証し、クエリの頻度が (NCBIの要求を満たすよう)最大でも一秒間に三度以下になることを保証します。
XMLのパース
Entrez Programming Utilitiesによって返されるアウトプットは大抵XMLフォーマットで書かれています。パースの方法はいくつかあります。
Bio.Entrez
のパーサーを使用してPythonのオブジェクトに変換する。- Python標準ライブラリのDOMパーサを用いる。
- Python標準ライブラリのSAX (Simple API for XML)パーサを用いる。
- XMLのraw textを読み、文字列解析をして扱う。
ここでは、Bio.Entrez
のパーサーについて説明します。
Bio.Entrezのパーサー
Bio.Entrez
は、NCBIによって使用されるDTDファイルのほとんどを含んでいます。このDTDファイルを用いて取得したXMLのパースを行います。まれに、特定のXMLファイルと対応するDTDファイルが、Biopythonのディストリビューションから欠けている場合があります。具体的には、NCBIがDTDをアップデートした際に発生する可能性があります。
このような場合、Entrez.read
が警告メッセージを表示し、欠けているDTDファイルのURLと名前を提示します。そしてパーサはXMLのパースを続行するため、DTDファイルをweb上から取得しようと試みます。しかし、DTDファイルがローカルにあった方がパースははるかに早く進みます。
以上がPythonとBiopythonを使用したNCBI XMLパーサーの基本的な使い方になります。これを基に、さらに深く学んでいくことをお勧めします。