[BioRuby-ja] fasta形式の確認

Naohisa GOTO ngoto @ gen-info.osaka-u.ac.jp
2009年 9月 2日 (水) 10:15:26 UTC


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
大阪大学微生物病研究所 遺伝情報実験センター ゲノム情報解析分野(安永研)



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