lib/qu/cmdwrapper/cmd.rb in qu-cmdwrapper-1.0.5 vs lib/qu/cmdwrapper/cmd.rb in qu-cmdwrapper-1.0.7
- old
+ new
@@ -1,8 +1,9 @@
#!/usr/bin/env ruby
-require 'open3'
+require "open3"
+
require 'tempfile'
require 'qu/utils'
module Qu
module Cmdwrapper
@@ -12,34 +13,39 @@
THERMO_PATH = File.join(__dir__, 'primer3_config') + '/'
module_function
- def primer3_core(p3_input_file)
- begin
- cmd = File.join(BIN_PATH, 'primer3_core')
- begin
- return system_quietly("#{cmd} #{File.realpath(p3_input_file)}")
- rescue ShellError
- return ''
- end
- rescue IOError
- $stderr.puts "Primer3 input file not exists: #{p3_input_file}"
+ def primer3_core(paras)
+ cmd = File.join(BIN_PATH, 'primer3_core')
+
+ lines = []
+ paras.each_pair do |key, value|
+ next if value.to_s.empty?
+ lines << "#{key}=#{value}"
+ end
+ lines << "="
+
+ stdout, stderr, status = Open3.capture3(cmd, stdin_data: lines.join("\n"))
+ if status.success?
+ return stdout
+ else
+ $stderr.puts stderr
exit
end
end
def ntthal(s1:, s2: nil, mv: 50, dv: 1.5, d: 50, n: 0.25, mode: 'ANY', tm_only: false)
cmd = File.join(BIN_PATH, 'ntthal')
if s2
# tm = `#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -s2 #{s2} -r -path #{THERMO_PATH} -a #{mode}`
# out = `#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -s2 #{s2} -path #{THERMO_PATH} -a #{mode}`
- out = system_quietly("#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -s2 #{s2} -path #{THERMO_PATH} -a #{mode}")
+ out = exec_cmd("#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -s2 #{s2} -path #{THERMO_PATH} -a #{mode}")
else
# out = `#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -path #{THERMO_PATH} -a HAIRPIN`
- out = system_quietly("#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -path #{THERMO_PATH} -a HAIRPIN")
+ out = exec_cmd("#{cmd} -mv #{mv} -dv #{dv} -d #{d} -n #{n} -s1 #{s1} -path #{THERMO_PATH} -a HAIRPIN")
end
begin
lines = out.lines
@@ -137,12 +143,20 @@
fh.unlink
end
return amp_seq_list
end
- class ShellError < StandardError; end
+ def exec_cmd(cmd)
+ stdout, stderr, status = Open3.capture3(cmd)
+ if status.success?
+ return stdout
+ else
+ puts stderr
+ exit
+ end
+ end
- def system_quietly(*cmd)
+ def system_quietly_old(*cmd)
exit_status=nil
err=nil
out=nil
Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thread|
err = stderr.gets(nil)