-bp = Biopieces.new
-
-options = bp.parse(ARGV, casts)
-
-bp.each_record do |record|
- bp.puts record
-
- if record.has_key? :SEQ_NAME and record.has_key? :SEQ
- seq = Seq.new(record[:SEQ_NAME], record[:SEQ])
- digest = Digest.new(seq, options[:pattern].to_s, options[:cut_pos])
-
- digest.each do |subseq|
- new_record = subseq.to_bp
- new_record[:REC_TYPE] = "DIGEST"
- bp.puts new_record
+options = Biopieces.options_parse(ARGV, casts)
+
+Biopieces.open(options[:stream_in], options[:stream_out]) do |input, output|
+ input.each_record do |record|
+ if record.has_key? :SEQ_NAME and record.has_key? :SEQ
+ seq = Seq.new(record[:SEQ_NAME], record[:SEQ])
+ digest = Digest.new(seq, options[:pattern].to_s, options[:cut_pos])
+
+ digest.each do |subseq|
+ new_record = subseq.to_bp
+
+ if new_record[:SEQ_NAME] =~ /\[(\d+)-(\d+)\]$/
+ s_beg = $1
+ s_end = $2
+ end
+
+ new_record[:S_BEG] = s_beg
+ new_record[:S_END] = s_end
+ new_record[:REC_TYPE] = "DIGEST"
+ output.puts new_record
+ end
+ else
+ output.puts record