From: martinahansen Date: Tue, 7 Aug 2012 17:33:50 +0000 (+0000) Subject: upgraded prodigal X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6b985e31a18975ca91c95523867cd6f0b50b16c9;p=biopieces.git upgraded prodigal git-svn-id: http://biopieces.googlecode.com/svn/trunk@1886 74ccb610-7750-0410-82ae-013aeee3265d --- diff --git a/code_ruby/lib/maasha/prodigal.rb b/code_ruby/lib/maasha/prodigal.rb index 33cae09..5fc0354 100644 --- a/code_ruby/lib/maasha/prodigal.rb +++ b/code_ruby/lib/maasha/prodigal.rb @@ -22,8 +22,6 @@ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -require 'maasha/genbank' - # Class for running the Prodigal gene finder. # http://prodigal.ornl.gov/ class Prodigal @@ -32,9 +30,9 @@ class Prodigal # Method to initialize a Prodigal object # given a temporary infile, outfile and options hash. def initialize(infile, outfile, options) - @infile = infile - @outfile = outfile - @options = options + @infile = infile # FASTA + @outfile = outfile # GFF + @options = options # Options hash end # Method to run Prodigal. @@ -43,19 +41,34 @@ class Prodigal commands << "prodigal" commands << "-c" if @options[:full] commands << "-p #{@options[:procedure]}" + commands << "-f gff" commands << "-i #{@infile}" - commands << "-o #{@outfile}" + commands << "-a #{@outfile}" commands << "-m" + commands << "-q" unless @options[:verbose] execute(commands, @options[:verbose]) end # Method for iterating over the Prodigal results, - # which are in GenBank format. + # which are in GFF format. def each - Genbank.open(@outfile, mode='r') do |gb| - gb.each do |entry| - yield entry + Fasta.open(@outfile, 'r') do |ios| + ios.each do |entry| + record = {} + + fields = entry.seq_name.split(" # ") + + record[:REC_TYPE] = "GENE" + record[:SEQ_NAME] = fields[0] + record[:S_BEG] = fields[1].to_i - 1 + record[:S_END] = fields[2].to_i - 1 + record[:S_LEN] = record[:S_END] - record[:S_BEG] + 1 + record[:STRAND] = fields[3] == '1' ? '+' : '-' + record[:SEQ] = entry.seq + record[:SEQ_LEN] = entry.length + + yield record end end end @@ -77,18 +90,13 @@ class Prodigal # TODO this wants to be in a module on its own. def execute(commands, verbose = false) commands.unshift "nice -n 19" - commands.push "> /dev/null 2>&1" unless verbose + commands << " > /dev/null" command = commands.join(" ") - begin - system(command) - raise "Command failed: #{command}" unless $?.success? - rescue - $stderr.puts "Command failed: #{command}" - end + system(command) + raise "Command failed: #{command}" unless $?.success? end end - __END__