Skip to content

Commit f445938

Browse files
committed
fix bug in suffix tree
1 parent e89cc77 commit f445938

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

bioinformatics/string_matching/suffix_tree.py

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,17 @@ def __init__(self, active_node, active_edge, active_len):
3434
self.active_edge = active_edge
3535
self.active_len = active_len
3636

37-
def walk_down_if_possible(self, cur_suffix_node):
37+
def walk_down_if_possible(self, cur_node):
3838
"""
39-
:type cur_suffix_node: SuffixNode
39+
:type cur_node: SuffixNode
4040
"""
41-
if self.active_len >= cur_suffix_node.edge_label.edge_len():
42-
self.active_edge += cur_suffix_node.edge_label.edge_len()
43-
self.active_len -= cur_suffix_node.edge_label.edge_len()
44-
self.active_node = cur_suffix_node
41+
if self.active_len >= cur_node.edge_label.edge_len():
42+
self.active_edge += cur_node.edge_label.edge_len()
43+
self.active_len -= cur_node.edge_label.edge_len()
44+
self.active_node = cur_node
45+
return True
46+
else:
47+
return False
4548

4649

4750
class UkknonenAlgorithm:
@@ -70,7 +73,8 @@ def do_phase_extension(pos):
7073
last_new_node = None
7174
else:
7275
next_node = self.active_point.active_node.children_dict[edge_first_ch]
73-
self.active_point.walk_down_if_possible(next_node)
76+
if self.active_point.walk_down_if_possible(next_node):
77+
continue # start from next node(the new active node)
7478

7579
if whole_str[next_node.edge_label.start_idx + self.active_point.active_len] == whole_str[pos]:
7680
if last_new_node is not None:

0 commit comments

Comments
 (0)