[BioRuby-ja] EMBLフォーマットについて

n @ bioruby.org n @ bioruby.org
2005年 1月 7日 (金) 00:49:37 EST


斎藤さん


なかおです。
丁寧な報告ありがとうございます。


> 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
<http://www.ebi.ac.uk/embl/Documentation/User_manual/usrman.html>

想像するに、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
<http://www.expasy.org/sprot/userman.html#OS_line>

ここの処理の副作用が今回の RuntimeError であるともいえます。


-

中尾 光輝                        <nakao-mitsuteru @ aist.go.jp>
                               <http://seq.cbrc.jp/%7Enakao>
独立行政法人 産業技術総合研究所          <http://www.aist.go.jp>
生命情報科学研究センター                   <http://www.cbrc.jp>
遺伝子情報系 配列解析チーム                <http://seq.cbrc.jp>
                                           Tel: 03-3599-8058
                                           Fax: 03-3599-8081  


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