[BioRuby-ja] BLASTscoreの取り扱いエラー
Naohisa GOTO
ngoto @ gen-info.osaka-u.ac.jp
2008年 7月 29日 (火) 08:41:23 UTC
後藤です。
On Mon, 28 Jul 2008 18:17:07 +0900
Hiromi Matsumae <matsumae @ bioinfo.tmd.ac.jp> wrote:
> 東京医歯大の松前と申します。
>
> Ruby1.8.6 / Bioruby1.2.1でBLASTの結果をパースしていたと
> ころ、
> e-valueを取り出す段階で、以下のようなエラーを吐きました。
>
> /ruby/site_ruby/1.8/bio/appl/blast/format0.rb:1023:in `parse_score':
> StringScanner::Error (StringScanner::Error)
> from (eval):1:in `evalue'
>
> 躓いたファイルを見てみると、e-valueが問題ではなく、
> scoreの値が、1.628e+04となっており、
> このscoreの値を試しに100に書き換えたところ、
> この問題は回避されましたので、ご注意いただければと思います。
> 既出でしたら申し訳ありません。
お知らせありがとうございました。
確かに、長い配列間でBLASTを実行すると、スコアが指数表記になりますが、
それに十分に対応できていませんでした。
以下、手元で試した結果の抜粋です。(BLASTN 2.2.15 と 2.2.18 で確認)
==============================================================================
>gi|47118301|dbj|BA000007.2| Escherichia coli O157:H7 str. Sakai DNA,
complete genome
Length = 5498450
Score = 1.090e+07 bits (5498450), Expect = 0.0
Identities = 5498450/5498450 (100%)
Strand = Plus / Plus
==============================================================================
開発中のバージョンでは修正したので、次のバージョンでは反映されると思います。
修正内容は
http://github.com/ngoto/bioruby/commit/9256ce8e0c25d9097db2267829b294e9a8b38823
を参照してください。
bioruby-1.2.1 に対する、スコアに関するところだけを直す最低限のパッチは
以下のとおりです。
==============================================================================
--- lib/bio/appl/blast/format0.rb.ORIG~ 2007-12-28 02:28:57.000000000 +0900
+++ lib/bio/appl/blast/format0.rb 2008-07-29 17:36:19.000000000 +0900
@@ -972,7 +972,7 @@
ev = sc[1].to_s
ev = '1' + ev if ev[0] == ?e
@evalue = ev.to_f
- elsif sc.skip(/Score *\= *([e\-\.\d]+) *bits *\( *([e\-\.\d]+) *\)/) then
+ elsif sc.skip(/Score *\= *([e\+\-\.\d]+) *bits *\( *([e\+\-\.\d]+) *\)/) then
bs = sc[1]
bs = '1' + bs if bs[0] == ?e
@bit_score = bs.to_f
@@ -1016,7 +1016,7 @@
if sc[2] then
@hit_frame = sc[3].to_i
end
- elsif sc.skip(/Score *\= *([e\-\.\d]+) +\(([e\-\.\d]+) *bits *\)/) then
+ elsif sc.skip(/Score *\= *([e\+\-\.\d]+) +\(([e\+\-\.\d]+) *bits *\)/) then
#WU-BLAST
@score = sc[1].to_i
bs = sc[2]
==============================================================================
--
後藤 直久 ngoto @ gen-info.osaka-u.ac.jp / ng @ bioruby.org
BioRuby-ja メーリングリストの案内