blast 使い方 エラーと解決 tblastx

バイオインフォ道場、くまぞうです。

バイオインフォマティクスの解析では、様々なツールを使います。たまにはエラーに遭遇してしまい、解決するのに時間がかかったりします。BLASTは、大変使用頻度の高いツールの1つですが、見慣れないエラーに遭遇したので、エラーと対応方法をまとめます。

スポンサーリンク



BLASTについて

BLASTとは、塩基配列やアミノ酸配列のアライメントと比較を高速に行うためのアルゴリズム・プログラムです。BLASTは、解析の用途に応じて下記のプログラムを提供しています。手持ちの情報・比較したい内容などに応じてこれらを選択します。今回使用したのは、ncbi-blast-2.5.0tblastxおよびmakeblastdbです。

プログラム Query DB 説明
megablast 塩基配列 塩基配列 塩基配列の比較。デフォルト設定でblastnより高速。
blastn 塩基配列 塩基配列 塩基配列の比較。
tblastn アミノ酸配列 塩基配列 DBを6通りの読み枠で翻訳・比較。
tblastx 塩基配列 塩基配列 Query・DBを6通りの読み枠で翻訳・比較。
blastp アミノ酸配列 アミノ酸配列 アミノ酸配列の比較。
blastx 塩基配列 アミノ酸配列 Queryを6通りの読み枠で翻訳・比較。

遭遇したエラーと対応方法

遭遇したエラーと原因

インストール後、最初にmakeblastdbを実行しました(正常終了)。その後、tblastxを実行したら、下記のようなエラーが発生しました。原因は、FASTAファイルのフォーマットが崩れていたことでした。FASTAファイルのヘッダー行に>がありませんでした。

Error: NCBI C++ Exception:
T0 "/home/PATH.../src/objtools/readers/fasta.cpp", line 2204: Error: ncbi::objects::CFastaReader::PostWarning() 
- CFastaReader: Near line 1, there's a line that doesn't look like plausible data, but it's not marked as defline or comment. 

対応方法

FASTAファイルのヘッダー行の先頭に>を付与しました。

# ヘッダーを数字を含む行と定義し、>&で先頭に>を挿入。
cat fasta | sed -e '/[0-9]/s/.*/>&/' > fasta2  

フォーマットの崩れを見直し1(エラー発生)

$ cat my.fasta
ENTRY1 | Symbol: ...  # ヘッダー行の先頭に>が無い
AGCAT...

$ tblastx -query my.fasta -db db/mydb  # 異常終了
Error: NCBI C++ Exception:
T0 "/home/PATH.../src/objtools/readers/fasta.cpp", line 2204: Error: ncbi::objects::CFastaReader::PostWarning() 
- CFastaReader: Near line 1, there's a line that doesn't look like plausible data, but it's not marked as defline or comment. 
$ cat my.fasta | sed -e '/[0-9]/s/.*/>&/' | tee my2.fasta  # ヘッダーに">"追加
>ENTRY1 | Symbol: ...
AGCAT...

$ tblastx -query my2.fasta -db db/mydb  # 正常終了

その他のエラーと対応方法

今回のエラーに対する対策を調べているとき、その他のエラーで困っている人の意見が参考になりました。確認できたものを載せておきます。

フォーマットの崩れを見直し2(不要なスペース):エラーなし

FASTAのフォーマットでは、「ヘッダー行の>の後に不要なスペースを入れない」とあります。フォーマット不正かもしれませんが、エラーにはなりませんでした。但し、同様にFASTA形式を要求する他のプログラムでは、エラーになることがあります。

$ cat my.fasta
>   ENTRY1 | Symbol: ...  # >の後に、不要なスペースが挿入されている
AGCAT...

$ tblastx -query my.fasta -db db/mydb  # 正常終了

データベースに関するエラー1(makeblastなし)(エラー発生)

BLASTのデータベースを作成するには、makeblastdbプログラムを実行します。データベースを作成しないで、もととなるFASTAファイルをdbオプションに指定したら、「BLAST Database error」が出力されました。makeblastdbを使って、データベースを作成してからblastプログラムを動かせば良いです。

$ tblastx -query my.fasta -db db/mydb.fasta  # makeblastdb無し
BLAST Database error: No alias or index file found for nucleotide database [...] in search path

$ makeblastdb -in db/mydb.fasta -dbtype nucl -out mydb  # makeblastdb実行
$ tblastx -query my.fasta -db db/mydb  # 正常終了

データベースに関するエラー2(dbtype違い)(エラー発生)

BLASTのデータベースを作成するには、makeblastdbプログラムを実行します。その時、dbtypeオプションでnucl(塩基配列の場合)またはprot(アミノ酸配列の場合)を指定します。tblastxなどの指定した解析プログラムに対応したデータベース(tblastxは塩基データベースを要求)が正しく参照できないとエラーになり、「BLAST Database error」が出力されます。makeblastdbを使って、対応するデータベースを作成してからblastプログラムを動かせば良いです。

$ makeblastdb -in db/mydb.prot -dbtype prot -out myprot  # makeblastdb(prot)
$ tblastx -query my.fasta -db db/myprot  # アミノ酸データベースを参照するように指示
BLAST Database error: No alias or index file found for nucleotide database [...] in search path
スポンサーリンク