はじめての環境DNA
研究室から現場まで、実践で使える知識を!
バイオインフォマティックス

BiopythonによるNCBIからの情報取得

Entrezと呼ばれるNCBIのデータベースからデータを取得するシステムをBiopythonを使って利用します。

やりたいこと

登録されている配列が解読された時に使用された、プライマーの配列情報をテキストファイルに書き出したいと思います。

簡単な流れ

  1. Biopythonを使って指定したIDからGenbank形式で情報を取得
  2. その情報から使用したプライマー情報を取得
  3. プライマー配列をGenbankIDのファイル名でテキストファイルに書き出す

注意点

情報を取得する際、サーバーに大きな負荷がかからないようにガイドラインに記載されているルールは守りましょう。

簡単にまとめると以下の通りです。2と3についてはBiopythonが勝手にやってくれるそうです

  1. 100以上のリクエストを送る場合は、週末かピークタイム以外の時間に行う
  2. 通常のアドレスではなく、http://eutils.ncbi.nlm.nih.gov/ を使用する
  3. リクエストの頻度を3リクエスト/1s 以下になるようにする
  4. e-mailとE-utilities APIの設定はしておく方がいい(Setting.txtなどにでも書き込んで実行する)

参考

  1. Biopython Tutorial and Cookbook (http://biopython.org/DIST/docs/tutorial/Tutorial.html)
  2. Biopythonを利用したNCBIのEntrezデータベースへのアクセス(https://qiita.com/joemphilips/items/767c67524e4b7e328834)
  3. E-utilities API (https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/)

環境

  • python3.8.5
  • Ubuntu 20.04 LTS
  • Biopythonはpip install biopythonなどを使ってダウンロードしておく

biopythonのモジュールなどをインポート

NCBIに自己紹介をします。API keyはNCBIに登録して発行してもらっておきましょう。

EFetch: Entrezからの完全な情報のダウンロード

NCBIのNucleotideデータベースのGenbankID: LC600705の情報を取得してみます。

NCBIで検索して情報を右上の'send to'からダウンロードするイメージで情報が取得できます。

nucleotideのデータベースから、指定したIDの情報をGenbank形式で、テキストとして取得します。

取得したGenbank形式のデータ情報をSeqIOを使って読み込みます。

次にSeqRecordを使ってパース(プログラムで扱えるようなデータ構造の集合体に変換)していきます。

例えば、要求したGenbankIDの情報の中から学名を表示するには以下のように記述します。

Featuresの中の情報を取得するには以下のように記述する。

出力したい情報とそのキー(key)の対応が分かったので、欲しい情報を抜き出していきます。

取得したプライマーの情報をテキストファイルに書き出してみましょう。

書き出し先のフォルダを作成します。

先ほど作成したprimerフォルダの中にGenbankIDのファイル名でテキストファイルを作成してプライマー情報を書き出しします。

これでプライマーの情報が取得できるようになりました。

コードまとめ

少し改変したまとめコードになります。

作業ディレクトリにbiopython.pyというフォルダを作成し、下記コードをコピペして Ubuntu上で python3 biopython.py ________ (下線部にはGenbankID)と実行するれば、プライマーの情報がテキストファイルに出力されます。

プライマーの情報が無ければスクリプトが止まるようにしました。

emalとapi_keyは自身のものを記入してください。

以上、ちょっとした趣味のお話でした。@しばた

ABOUT ME
しばた
分析・データ解析なんでもします。環境DNA使って研究したい方、気軽に相談ください。