https://github.com/kit-parco/networkit
Tip revision: 14af862e927f181320151c31fd57857374b4c9e0 authored by Florian Weber on 22 September 2014, 15:42:37 UTC
simplify some number-parsing-code
simplify some number-parsing-code
Tip revision: 14af862
nxadapter.py
"""
This module handles compatibility between NetworKit and NetworkX
"""
# local imports
from . import graph
# non standard library modules / external
try:
import networkx as nx
except ImportError:
print("""WARNING: module 'networkx' not installed, which is required by some
functions.""")
######## CONVERSION ########
def nx2nk(nxG, weightAttr=None):
"""
Convert a networkx.Graph to a NetworKit.Graph
:param weightAttr: the edge attribute which should be treated as the edge weight.
"""
# map networkx node ids to consecutive numerical node ids
idmap = dict((id, u) for (id, u) in zip(nxG.nodes(), range(nxG.number_of_nodes())))
z = max(idmap.values()) + 1
# print("z = {0}".format(z))
if weightAttr is not None:
nkG = graph.Graph(z, weighted=True)
for (u_, v_) in nxG.edges():
u, v = idmap[u_], idmap[v_]
w = nxG.edge[u_][v_][weightAttr]
nkG.addEdge(u, v, w)
else:
nkG = graph.Graph(z)
for (u_, v_) in nxG.edges():
u, v = idmap[u_], idmap[v_]
# print(u_, v_, u, v)
assert (u < z)
assert (v < z)
nkG.addEdge(u, v)
assert (nkG.numberOfNodes() == nxG.number_of_nodes())
assert (nkG.numberOfEdges() == nxG.number_of_edges())
return nkG
def nk2nx(nkG):
""" Convert a NetworKit.Graph to a networkx.Graph """
nxG = nx.Graph()
if nkG.isWeighted():
for (u, v) in nkG.edges():
nxG.add_edge(u, v, weight=nkG.weight(u, v))
else:
for (u, v) in nkG.edges():
nxG.add_edge(u, v)
return nxG