X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=bp_bin%2Fwrite_fastq_files;h=b475b121eeec6cead74d03a9c767023d640870ef;hb=HEAD;hp=91ba26ef04626c663758154a7cdefca2a13f67ea;hpb=b1ad0471346c62ebad82a006d544432668fe280e;p=biopieces.git diff --git a/bp_bin/write_fastq_files b/bp_bin/write_fastq_files index 91ba26e..b475b12 100755 --- a/bp_bin/write_fastq_files +++ b/bp_bin/write_fastq_files @@ -32,13 +32,21 @@ require 'maasha/biopieces' require 'maasha/fastq' require 'pp' +allowed_enc = 'base_33,base_64' + casts = [] -casts << {:long=>'key', :short=>'k', :type=>'string', :mandatory=>true, :default=>nil, :allowed=>nil, :disallowed=>nil} -casts << {:long=>'dir', :short=>'d', :type=>'dir!', :mandatory=>true, :default=>nil, :allowed=>nil, :disallowed=>nil} -casts << {:long=>'no_stream', :short=>'x', :type=>'flag', :mandatory=>false, :default=>nil, :allowed=>nil, :disallowed=>nil} +casts << {long: 'key', short: 'k', type: 'string', mandatory: true, default: nil, allowed: nil, disallowed: nil} +casts << {long: 'dir', short: 'd', type: 'dir!', mandatory: true, default: nil, allowed: nil, disallowed: nil} +casts << {long: 'prefix', short: 'p', type: 'string', mandatory: false, default: nil, allowed: nil, disallowed: nil} +casts << {long: 'no_stream', short: 'x', type: 'flag', mandatory: false, default: nil, allowed: nil, disallowed: nil} +casts << {long: 'compress', short: 'Z', type: 'string', mandatory: false, default: nil, allowed: "gzip,bzip,bzip2", disallowed: nil} +casts << {long: 'encoding', short: 'e', type: 'string', mandatory: false, default: 'base_33', allowed: allowed_enc, disallowed: nil} options = Biopieces.options_parse(ARGV, casts) +encoding = options[:encoding].to_sym +compress = options[:compress] ? options[:compress].to_sym : nil + key = options[:key].to_sym fh_hash = {} @@ -46,15 +54,25 @@ fh_hash = {} Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output| input.each_record do |record| if record[:SEQ_NAME] and record[:SEQ] and record[:SCORES] and record[key] - if fh_hash.has_key? record[key].to_sym + entry = Seq.new_bp(record) + entry.qual_convert!(:base_33, encoding) + + if fh_hash[record[key].to_sym] fastq_io = fh_hash[record[key].to_sym] else - fastq_file = File.join(options[:dir], record[key] + ".fastq") - fastq_io = Fastq.open(fastq_file, "w") + if options[:prefix] + fastq_file = File.join(options[:dir], [options[:prefix], record[key]].join("_") + ".fastq") + else + fastq_file = File.join(options[:dir], record[key] + ".fastq") + end + + fastq_file << ".gz" if compress == :gzip + fastq_file << ".bz2" if compress == :bzip or compress == :bzip2 + fastq_io = Fastq.open(fastq_file, "w", compress: compress) fh_hash[record[key].to_sym] = fastq_io end - fastq_io.puts record + fastq_io.puts entry.to_fastq end output.puts record unless options[:no_stream]