-if options.has_key? :data_in
- options[:data_in].each do |file|
- Fastq.open(file, mode='r') do |fastq|
- fastq.each do |entry|
- entry.convert_phred2illumina! if entry.qual.match PHRED_SCORES
- entry.convert_solexa2illumina! if options[:solexa]
- bp.puts entry.to_bp
- num += 1
-
- if options.has_key? :num and options[:num] == num
- last = true
- break
+Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
+ unless options[:data_in] and options[:data_in].first == '-'
+ input.each_record do |record|
+ output.puts record
+ end
+ end
+
+ 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_base33? # sanger or illumina18
+ encoding = 'illumina18'
+ elsif entry.qual_base64? # solexa or illumina13 or illumina15
+ encoding = 'illumina13'
+ else
+ raise SeqError, "Could not auto-detect quality score encoding"
+ end
+ end
+
+ entry.convert_scores!(encoding, 'illumina13')
+ output.puts entry.to_bp
+ num += 1
+
+ if options[:num] == num
+ last = true
+ break
+ end