class MgNu::Parser::Fasta
Attributes
file[R]
filename[R]
Public Class Methods
new(filename = nil, quality_file = false)
click to toggle source
create a new Fasta
parser
# File lib/mgnu/parser/fasta.rb, line 9 def initialize(filename = nil, quality_file = false) @quality_file = quality_file @filename = filename if filename if File.exists?(filename) and File.readable?(filename) @file = File.open(filename) else raise "\n\n -- No file by that name (#{filename}). Exiting\n\n" exit(1) #@file = File.new(filename, "w") end else error("MgNu::Parser::Fasta.new(): need a filename or an existing file") end end
Public Instance Methods
each() { |fasta(:header => shift, :sequence => join(" "))| ... }
click to toggle source
override enumerables
# File lib/mgnu/parser/fasta.rb, line 26 def each @buffer = [] # temp storage @file.each_line do |line| line.chomp! if line =~ />(.*)/ # got a header line if @buffer.length > 0 if @quality_file yield MgNu::Sequence::Fasta.new(:header => @buffer.shift, :sequence => @buffer.join(" ")) else yield MgNu::Sequence::Fasta.new(:header => @buffer.shift, :sequence => @buffer.join("")) end end @buffer = [] @buffer << $1 else # got a sequence line @buffer << line end end # end of file io @file.close # don't forget to yield the last one if @buffer.length > 0 if @quality_file yield MgNu::Sequence::Fasta.new(:header => @buffer.shift, :sequence => @buffer.join(" ")) else yield MgNu::Sequence::Fasta.new(:header => @buffer.shift, :sequence => @buffer.join("")) end end end