+ if options[:data_in] and options[:data_in2]
+ raise "data_in files differ" if options[:data_in].size != options[:data_in2].size
+
+ (0 ... options[:data_in].size).each do |i|
+ file1 = options[:data_in][i]
+ file2 = options[:data_in2][i]
+
+ io1 = Fastq.open(file1, 'r')
+ io2 = Fastq.open(file2, 'r')
+
+ while entry1 = io1.get_entry and entry2 = io2.get_entry
+ if encoding == :auto
+ if entry1.qual_base33? or entry2.qual_base33?
+ encoding = :base_33
+ elsif entry1.qual_base64? or entry2.qual_base64?
+ encoding = :base_64
+ else
+ raise SeqError, "Could not auto-detect quality score encoding"
+ end
+ end
+
+ entry1.qual_convert!(encoding, :base_33)
+ entry2.qual_convert!(encoding, :base_33)
+ entry1.qual_coerce!(:base_33)
+ entry2.qual_coerce!(:base_33)
+
+ if num < MAX_TEST
+ raise SeqError, "Quality score outside valid range" unless entry1.qual_valid?(:base_33)
+ raise SeqError, "Quality score outside valid range" unless entry2.qual_valid?(:base_33)
+ end
+
+ output.puts entry1.to_bp
+ output.puts entry2.to_bp
+
+ num += 2
+
+ if options[:num] and num >= options[:num]
+ last = true
+ break
+ end
+ end
+
+ io1.close
+ io2.close
+
+ break if last
+ end
+ elsif options[:data_in]