require 'fasta'
casts = []
-casts << {:long=>'name', :short=>'n', :type=>'string', :mandatory=>true, :default=>nil, :allowed=>nil, :disallowed=>nil}
casts << {:long=>'directory', :short=>'d', :type=>'dir', :mandatory=>true, :default=>nil, :allowed=>nil, :disallowed=>nil}
casts << {:long=>'scaffold', :short=>'s', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil}
casts << {:long=>'kmer_min', :short=>'k', :type=>'uint', :mandatory=>false, :default=>25, :allowed=>nil, :disallowed=>nil}
Dir.mkdir(options[:directory]) unless Dir.exists?(options[:directory])
-file_fasta = [options[:directory], options[:name]].join(File::SEPARATOR) + ".fna"
+file_fasta = [options[:directory], "IDBA"].join(File::SEPARATOR) + ".fna"
Fasta.open(file_fasta, mode="w") do |fasta_io|
bp.each_record do |record|
end
unless File.size(file_fasta) == 0
- output = [options[:directory], options[:name]].join(File::SEPARATOR)
+ output = [options[:directory], "IDBA"].join(File::SEPARATOR)
commands = []
commands << "nice -n 19"
commands << "> /dev/null 2>&1" unless options[:verbose]
command = commands.join(" ")
- system(command)
- raise "Command failed: #{command}" unless $?.success?
- file_contig = [options[:directory], options[:name] ].join(File::SEPARATOR) + "-contig.fa"
+ begin
+ system(command)
+ raise "Command failed: #{command}" unless $?.success?
+ rescue
+ $stderr.puts "Command failed: #{command}"
+ end
+
+ file_contig = [options[:directory], "IDBA"].join(File::SEPARATOR) + "-contig.fa"
Fasta.open(file_contig, mode="r") do |fasta_io|
fasta_io.each do |entry|
kmer = @kmer_min
while kmer <= @kmer_max
- dir_velveth = [@directory, "Velvet_#{kmer}"].join(File::SEPARATOR)
+ dir_velveth = [@directory, "Kmer_#{kmer}"].join(File::SEPARATOR)
Dir.mkdir(dir_velveth)
end
def run_velvetg(cov_cutoffs, exp_cov)
- Dir.glob("#{@directory}/Velvet_*").each do |dir_velveth|
+ Dir.glob("#{@directory}/Kmer_*").each do |dir_velveth|
files_velveth = Dir.glob("#{dir_velveth}/*")
cov_cutoffs.each do |cov_cutoff|
commands << dir_velvetg
commands << "-cov_cutoff #{cov_cutoff}"
commands << "-exp_cov #{exp_cov}"
+ commands << "-clean yes"
execute(commands)
end
def pick_best_assembly
list = []
- Dir.glob("#{@directory}/Velvet_*/Cov_cutoff_*/contigs.fa").each do |file|
+ Dir.glob("#{@directory}/Kmer_*/Cov_cutoff_*/contigs.fa").each do |file|
n50 = fasta_n50(file)
list << [file, n50]
end