From tomoakin @ kenroku.kanazawa-u.ac.jp Thu Mar 13 22:44:43 2008 From: tomoakin @ kenroku.kanazawa-u.ac.jp (Tomoaki NISHIYAMA) Date: Fri, 14 Mar 2008 11:44:43 +0900 Subject: [BioRuby-ja] BLAST format0 parser fails header parsing output of specific databases Message-ID: <7FB373D9-CA6F-4DD5-8537-587F50FB3190@kenroku.kanazawa-u.ac.jp> Bioruby開発者の皆様 (後藤さん担当でしょうか) NCBI Blastの出力で、データベースのdescriptionのつけ方に依 存して、 Database: ...と ... sequences; ... total letters の間に空行があく事があり、このようなデータベースに対して検索した 結果を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は以下のようにしてみました。 diff -ur bioruby-1.2.1/lib/bio/appl/blast/format0.rb bioruby-1.2.1e/ lib/bio/appl/blast/format0.rb --- bioruby-1.2.1/lib/bio/appl/blast/format0.rb 2007-12-28 02:28:57.000000000 +0900 +++ bioruby-1.2.1e/lib/bio/appl/blast/format0.rb 2008-03-14 11:21:49.000000000 +0900 @@ -293,6 +293,10 @@ end @f0query = data.shift @f0database = data.shift + if @f0database != / [0-9,]+ sequences; [0-9,]+ total letters/ and + data[0] =~ / [0-9,]+ sequences; [0-9,]+ total letters/ + @f0database += data.shift + end end # Splits the statistical parameters. -- 西山智明 金沢大学学際科学実験センター ゲノム機能解析分野 (920-0934 金沢市宝町13−1) Tomoaki NISHIYAMA Advanced Science Research Center, Kanazawa University, 13-1 Takara-machi Kanazawa, 920-0934 Japan