X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bp_bin%2Fassemble_seq_velvet;h=98c0ba4486a23d47b6969cd9d56d2a4e1902f24b;hb=ed64328c7cb91daf65273e91be4bb373122798c4;hp=85c5fa81c4d3469108dd4a898cb9d37b88abbd43;hpb=0549ff0cda733c78853ec9039fa2b956b9f6a10b;p=biopieces.git diff --git a/bp_bin/assemble_seq_velvet b/bp_bin/assemble_seq_velvet index 85c5fa8..98c0ba4 100755 --- a/bp_bin/assemble_seq_velvet +++ b/bp_bin/assemble_seq_velvet @@ -28,8 +28,8 @@ # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< -require 'biopieces' -require 'fasta' +require 'maasha/biopieces' +require 'maasha/fasta' class Velvet def initialize(directory, sequence_file, verbose) @@ -45,7 +45,7 @@ class Velvet kmer = @kmer_min while kmer <= @kmer_max - dir_velveth = [@directory, "Kmer_#{kmer}"].join(File::SEPARATOR) + dir_velveth = File.join(@directory, "Kmer_#{kmer}") Dir.mkdir(dir_velveth) @@ -68,7 +68,7 @@ class Velvet files_velveth = Dir.glob("#{dir_velveth}/*") cov_cutoffs.each do |cov_cutoff| - dir_velvetg = [dir_velveth, "Cov_cutoff_#{cov_cutoff}"].join(File::SEPARATOR) + dir_velvetg = File.join(dir_velveth, "Cov_cutoff_#{cov_cutoff}") Dir.mkdir(dir_velvetg) FileUtils.cp_r files_velveth, dir_velvetg @@ -148,11 +148,9 @@ casts << {:long=>'kmer_min', :short=>'k', :type=>'uint', :mandatory=>true, casts << {:long=>'kmer_max', :short=>'K', :type=>'uint', :mandatory=>true, :default=>31, :allowed=>nil, :disallowed=>nil} casts << {:long=>'cov_cutoff', :short=>'c', :type=>'list', :mandatory=>true, :default=>cov_cutoffs, :allowed=>nil, :disallowed=>nil} casts << {:long=>'exp_cov', :short=>'e', :type=>'float', :mandatory=>true, :default=>'auto', :allowed=>nil, :disallowed=>nil} -casts << {:long=>'clean', :short=>'x', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil} +casts << {:long=>'clean', :short=>'X', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil} -bp = Biopieces.new - -options = bp.parse(ARGV, casts) +options = Biopieces.options_parse(ARGV, casts) raise ArgumentError, "kmer_min #{options[:kmer_min]} must be uneven." if options[:kmer_min].even? raise ArgumentError, "kmer_max #{options[:kmer_max]} must be uneven." if options[:kmer_max].even? @@ -160,25 +158,30 @@ raise ArgumentError, "kmer_min >= kmer_max: #{options[:kmer_min]} >= #{options[: Dir.mkdir(options[:directory]) unless Dir.exists?(options[:directory]) -file_fasta = [options[:directory], "sequence_in.fna"].join(File::SEPARATOR) - -Fasta.open(file_fasta, mode="w") do |fasta_io| - bp.each_record do |record| - fasta_io.puts record - end -end +file_fasta = File.join(options[:directory], "sequence_in.fna") -unless File.size(file_fasta) == 0 - velvet = Velvet.new(options[:directory], file_fasta, options[:verbose]) - velvet.run_velveth(options[:kmer_min], options[:kmer_max], options[:type]) - velvet.run_velvetg(options[:cov_cutoff], options[:exp_cov]) - file_contigs = velvet.pick_best_assembly - - Fasta.open(file_contigs, mode="r") do |fasta_io| - fasta_io.each do |entry| - bp.puts entry.to_bp +Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output| + Fasta.open(file_fasta, mode="w") do |fasta_io| + input.each_record do |record| + if record[:SEQ_NAME] and record[:SEQ] + seq = Seq.new_bp(record) + fasta_io.puts seq.to_fasta + end end - end + end + + unless File.size(file_fasta) == 0 + velvet = Velvet.new(options[:directory], file_fasta, options[:verbose]) + velvet.run_velveth(options[:kmer_min], options[:kmer_max], options[:type]) + velvet.run_velvetg(options[:cov_cutoff], options[:exp_cov]) + file_contigs = velvet.pick_best_assembly + + Fasta.open(file_contigs, mode="r") do |fasta_io| + fasta_io.each do |entry| + output.puts entry.to_bp + end + end + end end FileUtils.remove_entry_secure file_fasta