Source code for openmdao.util.graph
import networkx as nx
[docs]def collapse_nodes(graph, node_map, copy=False):
"""
Args
----
graph : nx.DiGraph
Graph with nodes we want to collapse.
node_map : dict
A map of existing node names to collapsed names.
copy : bool(False)
If True, copy the graph before collapsing the nodes.
Returns
-------
nx.DiGraph
The graph with the nodes collapsed.
"""
nx.relabel_nodes(graph, node_map, copy=copy)
# remove any self edges created by the relabeling
graph.remove_edges_from([(u, v) for u, v in graph.edges_iter()
if u == v])
return graph