| 123456789101112131415161718192021222324252627282930313233343536373839 | # This code is part of Grandalf#  Copyright (C) 2014 Axel Tillequin (bdcht3@gmail.com) and others# published under GPLv2 license or EPLv1 license# Contributor(s): Fabio Zadrozny__all__ = [    "convert_grandalf_graph_to_networkx_graph",    "convert_nextworkx_graph_to_grandalf",]# Some utilities to interact with networkx.# Converts a grandalf graph to a networkx graph.# Note that the edge concept is the same, but a vertex in grandalf is called a node in networkx.def convert_grandalf_graph_to_networkx_graph(G):    from networkx import MultiDiGraph    nxg = MultiDiGraph()    for v in G.V():        nxg.add_node(v.data)    for e in G.E():        nxg.add_edge(e.v[0].data, e.v[1].data)    return nxg# Converts a networkx graph to a grandalf graph.# Note that the edge concept is the same, but a vertex in grandalf is called a node in networkx.def convert_nextworkx_graph_to_grandalf(G):    from grandalf.graphs import Graph, Vertex, Edge    V = []    data_to_V = {}    for x in G.nodes():        vertex = Vertex(x)        V.append(vertex)        data_to_V[x] = vertex    E = [Edge(data_to_V[xy[0]], data_to_V[xy[1]], data=xy) for xy in G.edges()]    g = Graph(V, E)    return g
 |