ほぼ中立ブログ

少しだけ趣味に偏った雑記ブログ

BiopythonによるオンラインのBLAST実行

Biopythonを使って、与えられたFASTAファイルの配列データをクエリーとしてオンラインのBLASTを実行するスクリプトを作成したので、備忘録を兼ねてまとめます。

公式のチュートリアルを参考に作りましたので詳しくはそちらをご覧ください。

コード

#!/usr/bin/env python3

import sys
from Bio.Blast import NCBIWWW

def blast(query, out):
    with open(query, "r", encoding="UTF-8") as f:
        string = f.read()
    result_handle = NCBIWWW.qblast("blastp", "nr", string, format_type="Text")
    with open(out, "w", encoding="UTF-8") as out:
        out.write(result_handle.read())

if __name__ == '__main__':
    query = sys.argv[1]
    out = sys.argv[2]
    blast(query, out)

補足

qblastがBLASTを実行する関数です。パラメータは第一引数から順に、"使用するBLASTの種類"、"相同性検索に使用するデータベースの種類"、"クエリー配列の文字データ"となっています。その他にもhitsizeなどの細かな設定が変更可能です。

実行結果ですがデフォルトではXML形式で帰ってくるため、目視で確認したい場合はformat_typeを"Text"にしておく必要があります。

その他

プログラムからBLASTを実行する場合は連絡用にメールアドレスを指定したほうが良さげなんですが、設定方法がよく分からなかったため放置してあります。使用される場合はその辺りを調べたほうが良いかもしれません。

それと、あくまで体感ですがブラウザから実行したほうが結果が出るのが早いような気がします。大量に実行すると接続が切れることもありましたし。

まあ、100個、1000個単位になると手作業なんて悠長なこともいってられないのですが。

最後までお読みいただきありがとうございました。