class Pattern
attr_accessor :forward, :reverse
+ # Split a primer pattern in the form of ATCG[3,2,1] into
+ # sequence and match descriptor, reverse complement the
+ # primer and append the match descriptor: CGAT[3,2,1].
+ def self.revcomp(pattern)
+ if pattern.match(/^(\w+)(\[.+\])?/)
+ primer = $1
+ descriptor = $2
+ else
+ raise "Failed splitting pattern: #{pattern}"
+ end
+
+ seq = Seq.new
+ seq.seq = primer
+ seq.type = :dna
+ seq.reverse!.complement!
+
+ descriptor ? seq.seq + descriptor : seq.seq
+ end
+
def initialize(forward, reverse, max_dist)
@forward = forward
@reverse = reverse
def save(tmpdir)
forward = @forward
reverse = @reverse
- revcomp_forward = revcomp(forward)
- revcomp_reverse = revcomp(reverse)
+ revcomp_forward = Pattern.revcomp(forward)
+ revcomp_reverse = Pattern.revcomp(reverse)
files = []
ios.puts self
end
end
-
- # Split a primer pattern in the form of ATCG[3,2,1] into
- # sequence and match descriptor, reverse complement the
- # primer and append the match descriptor: CGAT[3,2,1].
- def revcomp(pattern)
- if pattern.match(/^(\w+)(\[.+\])?/)
- primer = $1
- descriptor = $2
- else
- raise "Failed splitting pattern: #{pattern}"
- end
-
- seq = Seq.new
- seq.seq = primer
- seq.type = :dna
- seq.reverse!.complement!
-
- descriptor ? seq.seq + descriptor : seq.seq
- end
end
casts = []
infile = File.join(tmpdir, "in.fna")
if options[:forward_rc]
- options[:forward] = Seq.new("test", options[:forward_rc], :dna).reverse.complement.seq
+ options[:forward] = Pattern.revcomp(options[:forward_rc])
end
if options[:reverse_rc]
- options[:reverse] = Seq.new("test", options[:reverse_rc], :dna).reverse.complement.seq
+ options[:reverse] = Pattern.revcomp(options[:reverse_rc])
end
raise ArgumentError, "no adaptor specified" unless options[:forward] or options[:reverse]