[BioRuby-ja] BLAST format0 parser fails header parsing output of specific databases

Naohisa GOTO ngoto @ gen-info.osaka-u.ac.jp
2008年 4月 1日 (火) 06:09:19 UTC


後藤です。

かなり遅くなってしまいました。すみません。

On Fri, 14 Mar 2008 11:44:43 +0900
Tomoaki NISHIYAMA <tomoakin @ kenroku.kanazawa-u.ac.jp> wrote:

> Bioruby開発者の皆様
> (後藤さん担当でしょうか)
> 
> NCBI Blastの出力で、データベースのdescriptionのつけ方に依 
> 存して、
> Database: ...と
> ... sequences; ... total letters
> の間に空行があく事があり、

どういう条件でこういうことが起こるのか確かめてみたところ、
 % formatdb -p F -i test.fst
   -t 'veryveryveryveryveryveryveryveryveryveryveryveryveryverylong'
のように、60 + 70 * n 文字 (n = 0, 1, 2, ...)のスペース無しの文字列を
formatdbの -t オプションで指定したところ、再現しました。
気が付きませんでした。

> このようなデータベースに対して検索した結果をformat0で読もうとすると
> /usr/local/lib/ruby/site_ruby/1.8/bio/appl/blast/format0.rb:197:in  
> `each_hit': undefined method `each' for nil:NilClass (NoMethodError)
> のようなエラーが発生していました。
> 
> f0databaseに...sequences; ... total letters
> が含まれずに次のdata chunkにある時はそこまでつなぐようにし 
> たら
> とりあえずhitの方のparseは出来るようになったようです。
> 
> patchは以下のようにしてみました。

「if @f0database != / [0-9,]+ sequences; [0-9,]+ total letters/ and」
の部分は文字列 != 正規表現なので常にtrueになるとは思いますが、
それはともかく、内容的には取り込みました。
ありがとうございました。

-- 
後藤 直久  ngoto @ gen-info.osaka-u.ac.jp
大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研)



BioRuby-ja メーリングリストの案内