« 2009年08月 | メイン | 2010年10月 »
2010年01月31日
BioRuby版 FASTA + FASTA.QUAL = FASTQ
まだまだ生きてます。
さて,前エントリーのFASTA + FASTA.QUAL = FASTQはBioPerl版でしたが, BioRuby version 1.4.0で書いてみると以下のようになります。
require 'bio' ff_fasta = Bio::FlatFile.open(ARGV[0]) ff_qual = Bio::FlatFile.open(ARGV[0]+".qual") while entry_fasta = ff_fasta.next_entry seq = entry_fasta.to_biosequence seq.quality_score_type = :phred seq.quality_scores = ff_qual.next_entry.data puts seq.output(:fastq, :title => entry_fasta.definition) end # Ruby 1.8のときだけ頭に # require 'rubygems' をつけてね
以上の内容は,BioRubyメーリングリスト でBioRubyのコア開発者のひとりの大阪大学の後藤先生から回答いただいたものです。
(メーリングリストを購読している方はわかるかと思いますが)最初,ワタシはBio::FastaFormatや Bio::FastaNumericFormatに大きなマルチエントリーのファイルを食わせるコードを書いて みました。ところが,どうもしっくりこない(あるべきメソッドがないし,遅いし)と思っておりました。 そうしたら,案の定きちんとしたフロントエンドがあったようです。
BioPerlのBio::SeqIOに相当するものがBioRubyのBio::FlatFileになると 理解していいのかなあ(未確認)。Bio::FlatFileをつかえば,各エントリに 外部イテレーターでアクセスできる(Bio::FlatFile#next_entry.data) んですね。美しい。
ああ,細かいBioRubyのFASTQ関係のコードばかり読んで, 全体の構造を全く理解してなかった。反省。
今回の用途には,BioPerlでもBioRubyでもほぼ同じ速度です。ただ,大きな違いがあります。 それはインストールにかかる時間。BioRubyは,BioPerlにくらべコンパクト (逆にBioPerlはありとあらゆることができる…らしい)なので
gem install bio
一発(要管理者権限)でさくっとインストールできます。すばらしい。
というわけで,今後もBioRubyの勉強をすすめたいと思います。勉強成果もぼちぼち書いていこう。うん。
投稿者 hmishima : 19:30