From: martinahansen Date: Wed, 20 Mar 2013 06:42:06 +0000 (+0000) Subject: corrected pcr_seq revcomp of patterns X-Git-Url: https://git.donarmstrong.com/?p=biopieces.git;a=commitdiff_plain;h=f0f14eaee0bc9e0aa3ec9899293b1d27dd950972 corrected pcr_seq revcomp of patterns git-svn-id: http://biopieces.googlecode.com/svn/trunk@2153 74ccb610-7750-0410-82ae-013aeee3265d --- diff --git a/bp_bin/pcr_seq b/bp_bin/pcr_seq index 7e487f8..09e6269 100755 --- a/bp_bin/pcr_seq +++ b/bp_bin/pcr_seq @@ -69,6 +69,25 @@ end 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 @@ -86,8 +105,8 @@ class Pattern 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 = [] @@ -131,25 +150,6 @@ class Pattern 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 = [] @@ -164,11 +164,11 @@ tmpdir = Biopieces.mktmpdir 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]