From stoshi @ genosys.jp Thu Jan 6 06:59:57 2005 From: stoshi @ genosys.jp (H Saito) Date: Thu Jan 6 06:56:25 2005 Subject: [BioRuby-ja] =?iso-2022-jp?b?RU1CTBskQiVVJSkhPCVeJUMlSCRLGyhC?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= Message-ID: <20050106202827.85D0.STOSHI@genosys.jp> BioRubyの皆様、はじめまして。 斎藤秀俊と申します。いつもBioRubyを利用させて頂いております。 EMBLフォーマットのデータのパースをしていて、エラーが発生したので、調べて いるのですが、 以下のようなコードを書いて実行すると ------------------------------------------------------------------------ require 'bio' ff = Bio::FlatFile.new(Bio::EMBL, ARGF) ff.each_entry do |f| p f.os end ------------------------------------------------------------------------ 以下のようなエラーがでました。 ------------------------------------------------------------------------ /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:102:in `os': Error: OS Line. (RuntimeError) Haplochromis sp. 'muzu, rukwa' from /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:96:in `each' from /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:96:in `os' from a.rb:8 from a.rb:6:in `each_entry' from a.rb:6 ------------------------------------------------------------------------ この元のデータを調べたところ http://www.ebi.ac.uk/cgi-bin/emblfetch?AB090716 のOSの値 OS Haplochromis sp. 'muzu, rukwa' をパースするところでのエラーでした。 この場合splitで ["Haplochromis sp. 'muzu", "rukwa'"] このように戻ってきてしまいます。 EMBLのデータの問題なのでしょうが、報告させて頂きます。 以下に私の環境を書いておきます。 ------------------------------------------------------------------------ $ ruby -v -r bio -e 'p Bio::BIORUBY_VERSION' ruby 1.8.1 (2003-12-25) [i386-cygwin] /usr/lib/ruby/site_ruby/1.8/bio/reference.rb:140: warning: method redefined; dis carding old abstract [0, 6, 2] ------------------------------------------------------------------------ 斎藤秀俊 From n @ bioruby.org Fri Jan 7 00:49:37 2005 From: n @ bioruby.org (n@bioruby.org) Date: Fri Jan 7 00:46:20 2005 Subject: [BioRuby-ja] =?iso-2022-jp?B?RU1CTBskQiVVJSkhPCVeJUMlSCRLJEQkJCRGGyhC?= In-Reply-To: <20050106202827.85D0.STOSHI@genosys.jp> References: <20050106202827.85D0.STOSHI@genosys.jp> Message-ID: <20050107.144937.226808981.cortel@machina.localizome.net> 斎藤さん なかおです。 丁寧な報告ありがとうございます。 > EMBLフォーマットのデータのパースをしていて、エラーが発生したので、調べて > いるのですが、 > > 以下のようなコードを書いて実行すると > ------------------------------------------------------------------------ > require 'bio' > ff = Bio::FlatFile.new(Bio::EMBL, ARGF) > ff.each_entry do |f| > p f.os > end > ------------------------------------------------------------------------ > > 以下のようなエラーがでました。 > ------------------------------------------------------------------------ > /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:102:in `os': Error: OS Line. > (RuntimeError) > Haplochromis sp. 'muzu, rukwa' > from /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:96:in `each' > from /usr/lib/ruby/site_ruby/1.8/bio/db/embl/common.rb:96:in `os' > from a.rb:8 > from a.rb:6:in `each_entry' > from a.rb:6 > ------------------------------------------------------------------------ > > この元のデータを調べたところ > http://www.ebi.ac.uk/cgi-bin/emblfetch?AB090716 > のOSの値 > OS Haplochromis sp. 'muzu, rukwa' > をパースするところでのエラーでした。 > この場合splitで > ["Haplochromis sp. 'muzu", "rukwa'"] > このように戻ってきてしまいます。 > EMBLのデータの問題なのでしょうが、報告させて頂きます。 EMBL User Manual の 3.4.7 The OS Line を読んだ限りでは、シングルクオー トについての特別な取扱はないので、エラーになったエントリの OS 行の正し い解釈はわかりません。 EMBL User Manual の 3.4.7 The OS Line 想像するに、Haplochromis sp. はシグリッドの一種であり、rukwa は湖の名 前なので、muzu も湖の名前と推測でき、シングルクオートの中はそのシグリッ ドの産地を表示しているのかと思います。 実際問題として、エラーになってはこまるので、OS 行の中身を文字列として とりだす fetch('OS') の利用を紹介します。 ------------------------------------------------------------------------ require 'bio' ff = Bio::FlatFile.new(Bio::EMBL, ARGF) ff.each_entry do |f| p f.fetch('OS') end ------------------------------------------------------------------------ 該当エントリの場合、 "Haplochromis sp. 'muzu, rukwa'" という文字列が得られます。 bio/db/embl/common.rb の実装のうえでの問題として、EMBL と SwissProt の OS 行を同じコードで処理するようにしていることがあげられます。 EMBL の OS 行には複数の生物種が記載されることはあるとはかかれていませ んが、SwissProt の OS 行では "," と ", and" で複数の生物種をならべて記 載することが許可されています。 UniProt knowledgebase user manual の 3.6 The OS Line ここの処理の副作用が今回の RuntimeError であるともいえます。 - 中尾 光輝 独立行政法人 産業技術総合研究所 生命情報科学研究センター 遺伝子情報系 配列解析チーム Tel: 03-3599-8058 Fax: 03-3599-8081 From stoshi @ genosys.jp Fri Jan 7 01:10:21 2005 From: stoshi @ genosys.jp (H Saito) Date: Fri Jan 7 01:06:53 2005 Subject: [BioRuby-ja] =?ISO-2022-JP?B?RU1CTBskQiVVJSkhPCVeJUMlSCRLJEQkJBsoQg==?= =?ISO-2022-JP?B?GyRCJEYbKEI=?= In-Reply-To: <20050107.144937.226808981.cortel@machina.localizome.net> References: <20050106202827.85D0.STOSHI@genosys.jp> <20050107.144937.226808981.cortel@machina.localizome.net> Message-ID: <20050107150226.A649.STOSHI@genosys.jp> 中尾様 斎藤です。フォローありがとうございます。 > ------------------------------------------------------------------------ > require 'bio' > ff = Bio::FlatFile.new(Bio::EMBL, ARGF) > ff.each_entry do |f| > p f.fetch('OS') > end > ------------------------------------------------------------------------ なるほど、直前までパースを行わない仕様であることを思い出しました。 利用させて頂きます。 併せてお忙しい中、ご丁寧な解説ありがとうございます。参考になりました。 斎藤秀俊 From ktym @ hgc.jp Fri Jan 7 01:26:12 2005 From: ktym @ hgc.jp (Toshiaki Katayama) Date: Fri Jan 7 01:22:42 2005 Subject: =?ISO-2022-JP?B?UmU6IFtCaW9SdWJ5LWphXSBFTUJMGyRCJVUlKSE8JV4bKEI=?= =?ISO-2022-JP?B?GyRCJUMlSCRLJEQkJCRGGyhC?= In-Reply-To: <20050106202827.85D0.STOSHI@genosys.jp> References: <20050106202827.85D0.STOSHI@genosys.jp> Message-ID: <06F8D580-6075-11D9-8FB4-000D93347CEA@hgc.jp> 斉藤さん On 2005/01/06, at 20:59, H Saito wrote: > 以下に私の環境を書いておきます。 > ----------------------------------------------------------------------- > - > $ ruby -v -r bio -e 'p Bio::BIORUBY_VERSION' > ruby 1.8.1 (2003-12-25) [i386-cygwin] > /usr/lib/ruby/site_ruby/1.8/bio/reference.rb:140: warning: method > redefined; dis > carding old abstract もう一点、本題と関係ないところですが、reference.rb の abstract メソッドを上書きしているのは気づいていませんでした(バグ)。^^; MEDLINE などのアブストラクトを Ruby のマニュアル等で使われている RD フォーマット風に変換するメソッドなのですが、あまり使われて いないと思うので、非互換ですがメソッド名を rd に変更します。 片山