]> git.donarmstrong.com Git - biopieces.git/commitdiff
1 vector only patternmatcher.rb now :o)
authormartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 11 May 2011 13:52:28 +0000 (13:52 +0000)
committermartinahansen <martinahansen@74ccb610-7750-0410-82ae-013aeee3265d>
Wed, 11 May 2011 13:52:28 +0000 (13:52 +0000)
git-svn-id: http://biopieces.googlecode.com/svn/trunk@1399 74ccb610-7750-0410-82ae-013aeee3265d

code_ruby/Maasha/lib/patternmatcher.rb

index 19a0250453caa89c33cd3b0ec946bb2dc8cdacd3..89ffb70c445d1df7beea29d01509484e2468ae26 100644 (file)
@@ -139,14 +139,11 @@ module PatternMatcher
 
   # Method to update the score vector.
   def vector_update
-    new_vector    = []
-    new_vector[0] = Score.new
+    score_diag = @vector[0]
+    score_up   = Score.new  # insertion
+    score_left = @vector[1] # deletion
 
     (0 ... @pattern.length).each do |i|
-      score_diag = @vector[i]
-      score_up   = new_vector[i]  # insertion
-      score_left = @vector[i + 1] # deletion
-
       if match?(@seq[@pos], @pattern[i])
         new_score = score_diag.dup
         new_score.matches += 1
@@ -163,10 +160,12 @@ module PatternMatcher
         end
       end
 
-      new_vector[i + 1] = new_score
-    end
+      score_diag = @vector[i + 1]
+      score_up   = new_score
+      score_left = @vector[i + 2]
 
-    @vector = new_vector
+      @vector[i + 1] = new_score
+    end
   end
 
   # Method to determine if a match occurred.
@@ -175,25 +174,25 @@ module PatternMatcher
   end
 
   # Method to determine if a mismatch occured.
-  def mismatch?(mismatch, insertion, deletion)
-    if mismatch.edit_distance <= insertion.edit_distance and
-       mismatch.edit_distance <= deletion.edit_distance
+  def mismatch?(score_diag, score_up, score_left)
+    if score_diag.edit_distance <= score_up.edit_distance and
+       score_diag.edit_distance <= score_left.edit_distance
       true
     end
   end
 
   # Method to determine if an insertion occured.
-  def insertion?(mismatch, insertion, deletion)
-    if insertion.edit_distance <= mismatch.edit_distance and
-       insertion.edit_distance <= deletion.edit_distance
+  def insertion?(score_diag, score_up, score_left)
+    if score_up.edit_distance <= score_diag.edit_distance and
+       score_up.edit_distance <= score_left.edit_distance
       true
     end
   end
 
   # Method to determine if a deletion occured.
-  def deletion?(mismatch, insertion, deletion)
-    if deletion.edit_distance <= mismatch.edit_distance and
-       deletion.edit_distance <= insertion.edit_distance
+  def deletion?(score_diag, score_up, score_left)
+    if score_left.edit_distance <= score_diag.edit_distance and
+       score_left.edit_distance <= score_up.edit_distance
       true
     end
   end