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])
new_record[:REC_TYPE] = "DIGEST"
bp.puts new_record
end
+ else
+ bp.puts record
end
end
--- /dev/null
+SEQ_NAME: test
+SEQ: cgatcgatcGGATCCgagagggtgtgtagtgGAATTCcgctgc
+SEQ_LEN: 43
+---
--- /dev/null
+SEQ_NAME: test[1-10]
+SEQ: cgatcgatcG
+SEQ_LEN: 10
+REC_TYPE: DIGEST
+---
+SEQ_NAME: test[11-43]
+SEQ: GATCCgagagggtgtgtagtgGAATTCcgctgc
+SEQ_LEN: 33
+REC_TYPE: DIGEST
+---
--- /dev/null
+SEQ_NAME: test[1-43]
+SEQ: cgatcgatcGGATCCgagagggtgtgtagtgGAATTCcgctgc
+SEQ_LEN: 43
+REC_TYPE: DIGEST
+---
--- /dev/null
+SEQ_NAME: test[1-43]
+SEQ: cgatcgatcGGATCCgagagggtgtgtagtgGAATTCcgctgc
+SEQ_LEN: 43
+REC_TYPE: DIGEST
+---
--- /dev/null
+SEQ_NAME: test[1-43]
+SEQ: cgatcgatcGGATCCgagagggtgtgtagtgGAATTCcgctgc
+SEQ_LEN: 43
+REC_TYPE: DIGEST
+---
--- /dev/null
+#!/bin/bash
+
+source "$BP_DIR/bp_test/lib/test.sh"
+
+run "$bp -p GGATCC -c 1 -I $in -O $tmp"
+assert_no_diff $tmp $out.1
+clean
+
+run "$bp -p GGACTT -c 1 -I $in -O $tmp"
+assert_no_diff $tmp $out.2
+clean
+
+run "$bp -p GGATCC -c 1000 -I $in -O $tmp"
+assert_no_diff $tmp $out.3
+clean
+
+run "$bp -p GGATCC -c -1000 -I $in -O $tmp"
+assert_no_diff $tmp $out.4
+clean
@offset = pos + 1
end
- # Handle remaining sequence after last cut.
- if @offset > 0 and @offset < @seq.seq.length
- seq = Seq.new("#{@seq.seq_name}[#{@offset + 1}-#{@seq.seq.length}]", @seq.seq[@offset .. @seq.seq.length], @seq.type)
-
- yield seq
+ if @offset < 0
+ @offset = 0
+ elsif @offset > @seq.seq.length
+ @offset = 0
end
+ seq = Seq.new("#{@seq.seq_name}[#{@offset + 1}-#{@seq.seq.length}]", @seq.seq[@offset .. @seq.seq.length], @seq.type)
+
+ yield seq
+
self # conventionally
end