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