GenBankから特定のゲノムデータをダウンロードするには、BioPython
のEntrez
インターフェースを使用することができます。Entrez
は、NCBIのデータベースにアクセスするためのAPIです。
Entrez efetchのサンプル
以下に、指定されたGenBankのアクセッション番号を使用してゲノムデータをダウンロードし、ローカルファイルに保存する方法を示します。
このスクリプトを実行する前に、BioPython
がインストールされていることを確認してください。
pip install biopython
また、Entrez.email
には、NCBIに問い合わせる際に使用する自分のメールアドレスを設定してください。これは、NCBIの使用ポリシーに従うために必要です。
from Bio import Entrez, SeqIO
# メールアドレスを設定
Entrez.email = "your.email@example.com"
# GenBankからダウンロードしたい、ゲノムのアクセッション番号
accession = "NC_005213"
# データ取得(NCBI)
with Entrez.efetch(db="nucleotide", rettype="gb", retmode="text", id=accession) as handle:
seq_record = SeqIO.read(handle, "gb")
# ファイルに保存
filename = f"{accession}.gb"
with open(filename, "w") as output_handle:
SeqIO.write(seq_record, output_handle, "gb")
print(f"Downloaded and saved {accession} to {filename}")
$ head NC_005213.gb
LOCUS NC_005213 490885 bp DNA circular CON 16-DEC-2014
DEFINITION Nanoarchaeum equitans Kin4-M chromosome, complete genome.
ACCESSION NC_005213
VERSION NC_005213.1
DBLINK BioProject: PRJNA58009
KEYWORDS RefSeq.
SOURCE Nanoarchaeum equitans Kin4-M
ORGANISM Nanoarchaeum equitans Kin4-M
Archaea; Nanoarchaeota; Candidatus Nanoarchaeia; Nanoarchaeales;
Nanoarchaeaceae; Nanoarchaeum.
...
サンプルプログラムの簡単な説明
Entrez.efetch
関数を使用して指定されたアクセッション番号のゲノムデータをGenBankフォーマットでダウンロードしています。ダウンロードしたデータはSeqIO.read
で読み込まれ、SeqIO.write
を使ってローカルファイルシステムに保存されます。
スクリプトのaccession
変数をダウンロードしたいゲノムのアクセッション番号に置き換えてください。また、Entrez.email
の値を実際のメールアドレスに置き換えることを忘れないでください。これにより、GenBankから特定のゲノムデータをプログラム的に取得し、ローカルで利用可能な形式で保存することができます。
Entrez efetch使用の際の注意点
GenBankから「gb
ファイル」を取得するスクリプトを使用する際に考慮すべきいくつかのポイントがあります。これらのポイントは、データ取得の効率性、APIの使用制限、および個人情報の扱いに関連しています。
NCBIの使用ポリシー:NCBIのEntrez
APIを使用する際には、特定の使用ポリシーが適用されます。これには、過度な負荷をNCBIのサーバーにかけないようにリクエスト間に適切なウェイトタイム(数百ミリ秒から数秒)を設定することが含まれます。また、プログラムによるデータのダウンロードやクエリ実行の際には、Entrez.email
パラメーターに実際のメールアドレスを設定することが推奨されています。
大量のデータ取得:大量のGenBankレコードを取得する必要がある場合、個々のレコードを一度に一つずつ取得するのではなく、Entrez.epost
とEntrez.efetch
を組み合わせて使用することで、複数のレコードを一度に取得できます。これは効率的なデータ取得に役立ちます。
APIキーの使用:頻繁にNCBIのデータベースにアクセスする場合、APIキーを取得して使用することが推奨されます。APIキーを使用すると、制限されたリクエストレートが増加し、より多くのリクエストを迅速に処理できるようになります。
エラーハンドリング:ネットワークの問題やNCBI側のサーバーの問題により、時折データ取得が失敗する可能性があります。適切なエラーハンドリングを実装することで、スクリプトのロバスト性を向上させることができます。例えば、try
とexcept
ブロックを使用してエラーをキャッチし、特定のエラーが発生した場合に再試行するロジックを実装することができます。
データの使用と共有に関する倫理的考慮:取得したデータを使用する際には、倫理的な考慮が必要です。特に、人間に由来するデータを扱う場合、プライバシーや機密性に関するガイドラインに従う必要があります。