Guest User

Untitled

a guest
Jun 23rd, 2018
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. import networkx as nx
  2. import pylab as plt
  3. import pygraphviz as pgv
  4. from networkx.drawing.nx_agraph import graphviz_layout, to_agraph
  5.  
  6. def de_bruijn_graph(st, k):
  7. edges = []
  8. nodes = set()
  9. for i in range(len(st) - k + 1):
  10. edges.append((st[i : i + k - 1], st[i + 1 : i + k]))
  11. nodes.add(st[i : i + k - 1])
  12. nodes.add(st[i + 1 : i + k])
  13. return nodes, edges
  14.  
  15. def draw(nodes, edges, fname):
  16. G = nx.DiGraph()
  17. G.add_nodes_from(nodes)
  18. G.add_edges_from(edges)
  19. G.graph['graph'] = {'rankdir': 'TD'}
  20. G.graph['node'] = {'shape': 'circle'}
  21. G.graph['edges'] = {'arrowsize': '4.0'}
  22.  
  23. A = to_agraph(G)
  24. A.layout('dot')
  25. A.draw(fname)
  26.  
  27. def main():
  28. nodes1, edges1 = de_bruijn_graph('0001110100', 3)
  29. nodes2, edges2 = de_bruijn_graph('0000111101100101000', 4)
  30. draw(nodes1, edges1, 'deb_graph1.png')
  31. draw(nodes2, edges2, 'deb_graph2.png')
  32.  
  33. if __name__ == '__main__':
  34. main()
Add Comment
Please, Sign In to add comment