module CoutinhoAssembly::Runners
Public Instance Methods
run_sample_seqs(exe:, forward_reads:, reverse_reads:, single_reads:, out_dir:, out_prefix: nil, sampling_percentage:, num_subsamples:, random_seed: nil)
click to toggle source
# File lib/coutinho_assembly.rb, line 123 def run_sample_seqs(exe:, forward_reads:, reverse_reads:, single_reads:, out_dir:, out_prefix: nil, sampling_percentage:, num_subsamples:, random_seed: nil) unless out_prefix # Zero pad the left for single digits. # TODO maybe use 3? Will you ever take a 100% subsample? out_prefix = sprintf "percent_%02d", sampling_percentage end # TODO if we want to make the 1 2 or s reads optional, we'll need to NOT pass those params to this program (it doesn't handle nil inputs) # TODO not passing in the random seed at all yet cmd = "#{exe} " \ "-1 #{forward_reads} " \ "-2 #{reverse_reads} " \ "-s #{single_reads} " \ "-p #{sampling_percentage} " \ "-n #{num_subsamples} " \ "-o #{out_dir} " \ "-b #{out_prefix}" subsample_file_names = {} num_subsamples.times do |sample_num| subsample_file_names[sample_num] = { forward_reads: File.join(out_dir, "#{out_prefix}.sample_#{sample_num}.1.fq"), reverse_reads: File.join(out_dir, "#{out_prefix}.sample_#{sample_num}.2.fq"), single_reads: File.join(out_dir, "#{out_prefix}.sample_#{sample_num}.U.fq") } end outputs = { out_dir: out_dir, subsample_file_names: subsample_file_names } proc_status = Process.run_it cmd CoutinhoAssembly::RunnerExit.new proc_status, proc_status.exitstatus, outputs end