From 55e3144c833890cc6ee871278a7847557caeca8f Mon Sep 17 00:00:00 2001 From: martinahansen Date: Mon, 9 May 2011 08:47:21 +0000 Subject: [PATCH] added prodigal.rb git-svn-id: http://biopieces.googlecode.com/svn/trunk@1380 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/Maasha/lib/prodigal.rb | 81 ++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 code_ruby/Maasha/lib/prodigal.rb diff --git a/code_ruby/Maasha/lib/prodigal.rb b/code_ruby/Maasha/lib/prodigal.rb new file mode 100644 index 0000000..a6661ad --- /dev/null +++ b/code_ruby/Maasha/lib/prodigal.rb @@ -0,0 +1,81 @@ +# Copyright (C) 2011 Martin A. Hansen. + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# http://www.gnu.org/copyleft/gpl.html + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +# This software is part of the Biopieces framework (www.biopieces.org). + +# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +require 'genbank' + +# Class for running the Prodigal gene finder. +# http://prodigal.ornl.gov/ +class Prodigal + include Enumerable + + # 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 + end + + # Method to run Prodigal. + def run + commands = [] + commands << "prodigal" + commands << "-c" if @options[:full] + commands << "-i #{@infile}" + commands << "-o #{@outfile}" + + execute(commands, @options[:verbose]) + end + + # Method for iterating over the Prodigal results, + # which are in GenBank format. + def each + Genbank.open(@outfile, mode='r') do |gb| + gb.each do |entry| + yield entry + end + end + end + + private + + # Method to execute commands on the command line. + # 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 + + command = commands.join(" ") + + begin + system(command) + raise "Command failed: #{command}" unless $?.success? + rescue + $stderr.puts "Command failed: #{command}" + end + end +end + + +__END__ -- 2.39.5