X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=code_ruby%2Flib%2Fmaasha%2Ffasta.rb;h=971ad545582c8e82d63b3e2c3846069c87acd3b5;hb=164c771704dbc986614e93aed25a6d1fc0e200c7;hp=d4c443b0824301eda7dd8f397413fcba1285d92d;hpb=178225ead000ff26d6e76a654fceb10000bfc87d;p=biopieces.git diff --git a/code_ruby/lib/maasha/fasta.rb b/code_ruby/lib/maasha/fasta.rb index d4c443b..971ad54 100644 --- a/code_ruby/lib/maasha/fasta.rb +++ b/code_ruby/lib/maasha/fasta.rb @@ -32,7 +32,11 @@ class Fasta < Filesys # Method to get the next FASTA entry form an ios and return this # as a Seq object. If no entry is found or eof then nil is returned. def get_entry - block = @io.gets($/ + '>') + block = nil + + while block = @io.gets($/ + '>') and block.chomp($/ + '>').empty? + end + return nil if block.nil? block.chomp!($/ + '>') @@ -51,6 +55,31 @@ class Fasta < Filesys entry end + + # Method to get the next pseudo FASTA entry consisting of a sequence name and + # space seperated quality scores in decimals instead of sequence. This is + # the quality format used by Sanger and 454. + def get_decimal_qual + block = @io.gets($/ + '>') + return nil if block.nil? + + block.chomp!($/ + '>') + + (seq_name, qual) = block.split($/, 2) + + raise FastaError, "Bad FASTA qual format" if seq_name.nil? or qual.nil? + + entry = Seq.new + entry.seq_name = seq_name.sub(/^>/, '').rstrip + entry.seq = nil + entry.type = nil + entry.qual = qual.tr("\n", " ").strip.split(" ").collect { |q| (q.to_i + SCORE_BASE).chr }.join("") + + raise FastaError, "Bad FASTA format" if entry.seq_name.empty? + raise FastaError, "Bad FASTA format" if entry.qual.empty? + + entry + end end