[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 メーリングリストの案内