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