Source code for nengo_extras.graphviz

import numpy as np


[docs]def net_diagram(net): """Create a .dot file showing nodes, ensmbles, and connections. This can be useful for debugging and testing builders that manipulate the model graph before construction. Parameters ---------- net : Network A network from which objects and connections will be extracted. Returns ------- text : string Text content of the desired .dot file. """ objs = net.all_nodes + net.all_ensembles return obj_conn_diagram(objs, net.all_connections)
[docs]def obj_conn_diagram(objs, connections): """Create a .dot file showing nodes, ensmbles, and connections. This can be useful for debugging and testing builders that manipulate the model graph before construction. Parameters ---------- objs : list of Nodes and Ensembles All the nodes and ensembles in the model. connections : list of Connections All the connections in the model. Returns ------- text : string Text content of the desired .dot file. """ text = [] text.append('digraph G {') for obj in objs: text.append(' "%d" [label="%s"];' % (id(obj), obj.label)) def label(transform): # determine the label for a connection based on its transform transform = np.asarray(transform) if len(transform.shape) == 0: return '' return '%dx%d' % transform.shape for c in connections: text.append(' "%d" -> "%d" [label="%s"];' % ( id(c.pre_obj), id(c.post_obj), label(c.transform))) text.append('}') return '\n'.join(text)