From 3a2c52748bff26d1651f97e444f76edbcfe9db33 Mon Sep 17 00:00:00 2001 From: martinahansen Date: Wed, 11 May 2011 13:52:28 +0000 Subject: [PATCH] 1 vector only patternmatcher.rb now :o) git-svn-id: http://biopieces.googlecode.com/svn/trunk@1399 74ccb610-7750-0410-82ae-013aeee3265d --- code_ruby/Maasha/lib/patternmatcher.rb | 35 +++++++++++++------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/code_ruby/Maasha/lib/patternmatcher.rb b/code_ruby/Maasha/lib/patternmatcher.rb index 19a0250..89ffb70 100644 --- a/code_ruby/Maasha/lib/patternmatcher.rb +++ b/code_ruby/Maasha/lib/patternmatcher.rb @@ -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 -- 2.39.5