]> git.donarmstrong.com Git - biopieces.git/commitdiff
corrected pcr_seq revcomp of patterns
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 20 Mar 2013 06:42:06 +0000 (06:42 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 20 Mar 2013 06:42:06 +0000 (06:42 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@2153 74ccb610-7750-0410-82ae-013aeee3265d

bp_bin/pcr_seq

index 7e487f8df302c2bcfdb75b10216ef828a51d4f4f..09e626983184e9a14970c894989ed06a9f1e4db0 100755 (executable)
@@ -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]