Faster graph copy

Change-Id: I06b22499c4ff849f6c8f50a27af73fce8405a9f2
This commit is contained in:
Idan Hefetz 2017-06-11 16:56:43 +00:00
parent 92ce094eb1
commit b32382bb39

View File

@ -70,9 +70,13 @@ class NXGraph(Graph):
return NXAlgorithm(self)
def copy(self):
self_copy = NXGraph(self.name, self.root_id)
self_copy._g = self._g.copy()
return self_copy
# Networkx graph copy is very slow, so we implement
nodes = self._g.nodes_iter(data=True)
vertices = [Vertex(vertex_id=n, properties=data) for n, data in nodes]
edges_iter = self._g.edges_iter(data=True, keys=True)
edges = [Edge(source_id=u, target_id=v, label=l, properties=data)
for u, v, l, data in edges_iter]
return NXGraph(self.name, self.root_id, vertices, edges)
@Notifier.update_notify
def add_vertex(self, v):