[BioRuby-ja] Fwd: fasta形式の確認

dendoh@rakuno.ac.jp daijiendoh @ gmail.com
2009年 9月 17日 (木) 11:49:37 UTC


後藤さん

返信大変遅くなってしまいました。
下記の方法で確認することができました。
伺ってみると、すごく当たり前のことで、赤面しております。

BioRuby は、やり方を伺うとものすごくシンプルなのですが、オブジェクトの取り扱いが分からず、感覚が付いてくるまで時間がかかりそうです。

いつもありがとうございます。
これで、近々プライマー設計ページをアップできます。

では、またよろしくお願いします。

On Tue, 1 Sep 2009 12:55:52 +0900
"dendoh @ rakuno.ac.jp" <daijiendoh @ gmail.com> wrote:

> 北海道の遠藤です
> 久しぶりに投稿させていただきます。
>
> 現在Webから塩基配列を fasta 形式で入力してもらって、処理をするServer application を作っています。
> まず、入力文字列がFasta形式かどうかを確認する必要があるのですが、
>
> Bio::FlatFile.new(Bio::FastaFormat, ARGF) として、null
> が帰ってきたら、FastaFormatで無いと判断すればよいのでしょうか。

それをすると、内容を問わず、無理矢理にでも Bio::FastaFormat
として入力データを解釈するので、むしろ逆です。

たとえば

 ff = Bio::FlatFile.new(nil, ARGF)
 if ff.dbclass != Bio::FastaFormat
   $stderr.puts "Not FASTA format!"
   exit(1)
 end
 ff.each do |entry|
   # entry is a Bio::FastaFormat object
   # ...
 end

のような感じで、入力データ形式自動認識をさせて、その結果、希望の
フォーマット(今回は Bio::FastaFormat) として識別されているか
を調べるとよいと思います。

自動認識はもちろん完全ではないですが、実用上は問題ないことが多いです。
ただし、ウェブサーバで実行するとのことで、不特定の人が実行するのなら、
堅牢性が不十分かもしれない点には注意する必要があります。
(たとえば、改行が一切無いデータを与えると、改行コードを区切りとして
形式判別用データを先読みしているので、際限なくデータを読ませ続けて、
サーバーのメモリを食いつぶすことができるかもしれない。)

--
後藤 直久  ngoto @ gen-info.osaka-u.ac.jp
大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研)



-- 
酪農学園大学 獣医学部 放射線学教室
遠藤大二
Tel: 011-388-4847
Fax:011-387-5890



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