]> git.donarmstrong.com Git - biopieces.git/blobdiff - bp_bin/read_fastq
cleanup of findsim_seq
[biopieces.git] / bp_bin / read_fastq
index 4a94957f53b657990fcc92804dc18a898d5f901d..c2f74cd7bb7a07219ac43ecfd574ad726f5b8f00 100755 (executable)
@@ -31,7 +31,7 @@
 require 'maasha/biopieces'
 require 'maasha/fastq'
 
-allowed_enc = 'auto,sanger,solexa,illumina13,illumina15,illumina18'
+allowed_enc = 'auto,sanger,solexa,illumina1.3,illumina1.5,illumina1.8'
 
 casts = []
 casts << {:long=>'data_in',  :short=>'i', :type=>'files!', :mandatory=>false, :default=>nil,    :allowed=>nil,         :disallowed=>nil}
@@ -40,25 +40,26 @@ casts << {:long=>'encoding', :short=>'e', :type=>'string', :mandatory=>false, :d
 
 options = Biopieces.options_parse(ARGV, casts)
 
-num      = 0
-last     = false
-encoding = options[:encoding]
+num  = 0
+last = false
 
 Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
-  unless options[:data_in].first == '-'
+  unless options[:data_in] and options[:data_in].first == '-'
     input.each_record do |record|
       output.puts record
     end
   end
 
-  if options.has_key? :data_in
+  if options[:data_in]
     options[:data_in].each do |file|
+      encoding = options[:encoding].downcase.delete('.')
+
       Fastq.open(file, mode='r') do |fastq|
         fastq.each do |entry|
           if encoding == 'auto'
-            if entry.qual.match(/[!-:]/) # sanger or illumina18
+            if entry.qual_base33? # sanger or illumina18
               encoding = 'illumina18'
-            elsif entry.qual.match(/[K-h]/) # solexa or illumina13 or illumina15
+            elsif entry.qual_base64? # solexa or illumina13 or illumina15
               encoding = 'illumina13'
             else
               raise SeqError, "Could not auto-detect quality score encoding"
@@ -69,7 +70,7 @@ Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
           output.puts entry.to_bp
           num += 1
 
-          if options.has_key? :num and options[:num] == num
+          if options[:num] == num
             last = true
             break
           end