Entrez efetchで配列レコードを取得する

スポンサーリンク

GenBankから特定のゲノムデータをダウンロードするには、BioPythonEntrezインターフェースを使用することができます。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のEntrezAPIを使用する際には、特定の使用ポリシーが適用されます。これには、過度な負荷をNCBIのサーバーにかけないようにリクエスト間に適切なウェイトタイム(数百ミリ秒から数秒)を設定することが含まれます。また、プログラムによるデータのダウンロードやクエリ実行の際には、Entrez.emailパラメーターに実際のメールアドレスを設定することが推奨されています。

大量のデータ取得:大量のGenBankレコードを取得する必要がある場合、個々のレコードを一度に一つずつ取得するのではなく、Entrez.epostEntrez.efetchを組み合わせて使用することで、複数のレコードを一度に取得できます。これは効率的なデータ取得に役立ちます。

APIキーの使用:頻繁にNCBIのデータベースにアクセスする場合、APIキーを取得して使用することが推奨されます。APIキーを使用すると、制限されたリクエストレートが増加し、より多くのリクエストを迅速に処理できるようになります。

エラーハンドリング:ネットワークの問題やNCBI側のサーバーの問題により、時折データ取得が失敗する可能性があります。適切なエラーハンドリングを実装することで、スクリプトのロバスト性を向上させることができます。例えば、tryexceptブロックを使用してエラーをキャッチし、特定のエラーが発生した場合に再試行するロジックを実装することができます。

データの使用と共有に関する倫理的考慮:取得したデータを使用する際には、倫理的な考慮が必要です。特に、人間に由来するデータを扱う場合、プライバシーや機密性に関するガイドラインに従う必要があります。

タイトルとURLをコピーしました