-
Notifications
You must be signed in to change notification settings - Fork 1
/
DeBruijn.py
21 lines (19 loc) · 718 Bytes
/
DeBruijn.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def de_bruijn_ize(st, k):
""" Return a list holding, for each k-mer, its left
k-1-mer and its right k-1-mer in a pair """
edges = []
nodes = set()
for i in range(len(st) - k + 1):
edges.append((st[i:i+k-1], st[i+1:i+k]))
nodes.add(st[i:i+k-1])
nodes.add(st[i+1:i+k])
return nodes, edges
# def visualize_de_bruijn(st, k):
# """ Visualize a directed multigraph using graphviz """
# nodes, edges = de_bruijn_ize(st, k)
# dot_str = 'digraph "DeBruijn graph" {\n'
# for node in nodes:
# dot_str += ' %s [label="%s"] ;\n' % (node, node)
# for src, dst in edges:
# dot_str += ' %s -> %s ;\n' % (src, dst)
# return dot_str + '}\n'