]> git.donarmstrong.com Git - biopieces.git/commitdiff
disabling backtrack which causes compile error
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 29 Nov 2012 20:12:34 +0000 (20:12 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Thu, 29 Nov 2012 20:12:34 +0000 (20:12 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@2016 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/lib/maasha/seq.rb
code_ruby/lib/maasha/seq/backtrack.rb

index 57d70b27cc5b5cd0b29cb88a20be7f3c9cec3a0c..41c221d13da216f8106be309ff833b23bf1b13dc 100644 (file)
@@ -23,7 +23,7 @@
 # >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
 
 require 'maasha/bits'
-require 'maasha/seq/backtrack'
+#require 'maasha/seq/backtrack'
 require 'maasha/seq/digest'
 #require 'maasha/seq/patscan'
 require 'maasha/seq/patternmatcher'
index 714cb226ef00dbaa642aaf10be7d0d1298a0113c..1de8b6cad4da8c70450b7c347e8a0de22b30403d 100644 (file)
@@ -134,7 +134,8 @@ module BackTrack
         char         *p,    // Pattern
         unsigned int  mis,  // Max mismatches
         unsigned int  ins,  // Max insertions
-        unsigned int  del   // Max deletions
+        unsigned int  del,  // Max deletions
+        int state           // 1 deletion, -1 insertion, 0 match or mismatch
       )
       {
         match found = {0, 0, 0, 0};
@@ -153,9 +154,9 @@ module BackTrack
         }
         else
         {
-          if (mis && *s && *p && (f = backtrack(ss, s + 1, p + 1, mis - 1, ins, del))) return f;
-          if (ins && *p &&       (f = backtrack(ss, s, p + 1, mis, ins - 1, del)))     return f;
-          if (del && *s &&       (f = backtrack(ss, s + 1, p, mis, ins, del - 1)))     return f;
+          if (mis && *s && *p            && (f = backtrack(ss, s + 1, p + 1, mis - 1, ins, del, 0))) return f;
+          if (ins && *p && (state != 1)  && (f = backtrack(ss, s, p + 1, mis, ins - 1, del, -1)))    return f;
+          if (del && *s && (state != -1) && (f = backtrack(ss, s + 1, p, mis, ins, del - 1, 1)))     return f;
         }
 
         return NULL;
@@ -190,15 +191,16 @@ module BackTrack
         unsigned int  mmis  = 0;
         unsigned int  mins  = 0;
         unsigned int  mdel  = 0;
+        int           state = 0;
         VALUE         ary   = 0;
 
-        if (pos < len)
+        if (pos < len) // FIXME: pos < len - plen + 1
         {
           s += pos;
 
           while (*s)
           {
-            if ((f = backtrack(ss, s, p, max_mis, max_ins, max_del)))
+            if ((f = backtrack(ss, s, p, max_mis, max_ins, max_del, state)))
             {
               mbeg = (s - ss);
               mlen = f->end - mbeg;