class MgNu::Parser::Prodigal
Attributes
definition[RW]
features[RW]
file[R]
length[RW]
name[RW]
Public Class Methods
new(filename = nil,debug=false)
click to toggle source
create a new prodigal parser
# File lib/mgnu/parser/prodigal.rb, line 19 def initialize(filename = nil,debug=false) @debug = debug if filename if File.exists?(filename) and File.readable?(filename) @file = File.open(filename) else error("MgNu::Parser::Prodigal.new(): problems with filename") raise "File doesn't exist or is not readable!" end else error("MgNu::Parser::Prodigal.new(): need a filename") raise "no filename given!" end end
Public Instance Methods
each() { |parse(buffer)| ... }
click to toggle source
# File lib/mgnu/parser/prodigal.rb, line 34 def each buffer = parse_until(@file,/^\/\//,false) while (buffer.length > 0) do buffer.shift if buffer[0] =~ /^\/\// yield parse(buffer) buffer = parse_until(@file,/^\/\//,false) end end
parse(buffer)
click to toggle source
# File lib/mgnu/parser/prodigal.rb, line 43 def parse(buffer) return if buffer.nil? return if buffer.length == 0 if buffer[0] =~ /^DEFINITION\s+(.+)$/ pseq = MgNu::Parser::Prodigal::Sequence.new(:definition => $1) if buffer[0] =~ /^DEFINITION\s+seqnum=(\d+);seqlen=(\d+);seqhdr="(.+)\s*";gc_cont=([0-9\.]+);transl_table=(\d+).*$/ buffer.shift pseq.seqnum = $1.to_i pseq.length = $2.to_i pseq.seqhdr = $3 pseq.gc_cont = $4.to_f pseq.transl_table = $5.to_i pseq.name = pseq.seqhdr.split(/\s+/)[0] #pseq.features = parse_features(buffer) pseq.parse_features(buffer) return pseq else $stderr.puts "ERROR: unknown format for DEFINITION line" $stderr.puts buffer[0] exit(1) end # end if /DEFINITION/ else $stderr.puts "ERROR: buffer didn't begin with DEFINITION" $stderr.puts buffer[0] exit(1) end # end if /DEFINITION/ end