Skip to content

Commit 3908a00

Browse files
authored
Merge pull request #69 from wey-gu/fix_edge_duplication
Fix edge duplication
2 parents 473c5e5 + 40f6ef2 commit 3908a00

3 files changed

Lines changed: 24 additions & 17 deletions

File tree

ngql/magic.py

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -502,9 +502,11 @@ def ng_draw(self, line, cell=None, local_ns={}):
502502
neighborhood_highlight=True,
503503
)
504504
g_nx = nx.MultiDiGraph()
505+
506+
edge_filter = set()
505507
for _, row in result_df.iterrows():
506508
for item in row:
507-
self.render_pd_item(g, g_nx, item)
509+
self.render_pd_item(g, g_nx, item, edge_filter)
508510

509511
try:
510512
# Calculate PageRank
@@ -737,7 +739,7 @@ def ng_draw_schema(self, line, cell=None, local_ns={}):
737739

738740
return g
739741

740-
def render_pd_item(self, g, g_nx, item):
742+
def render_pd_item(self, g, g_nx, item, edges_filter: set):
741743
# g is pyvis graph
742744
# g_nx is networkx graph
743745

@@ -836,26 +838,31 @@ def render_pd_item(self, g, g_nx, item):
836838
)
837839
else:
838840
title = edge_name
839-
g.add_edge(
840-
src_id,
841-
dst_id,
842-
label=label,
843-
title=title,
844-
weight=props.get("rank", 0),
845-
)
846-
# networkx
847-
props["edge_type"] = edge_name
848-
g_nx.add_edge(src_id, dst_id, **props)
841+
edge_key = f"{src_id}->{dst_id}@{rank}:{edge_name}"
842+
if edge_key not in edges_filter:
843+
# We don't have to ensure same policies for identical edges when adding to graph
844+
# for PyVis and NetworkX, thus we maintain a set to filter out identical edges
845+
g.add_edge(
846+
src_id,
847+
dst_id,
848+
label=label,
849+
title=title,
850+
weight=props.get("rank", 0),
851+
)
852+
# networkx
853+
props["edge_type"] = edge_name
854+
g_nx.add_edge(src_id, dst_id, **props)
855+
edges_filter.add(edge_key)
849856

850857
elif isinstance(item, PathWrapper):
851858
for node in item.nodes():
852-
self.render_pd_item(g, g_nx, node)
859+
self.render_pd_item(g, g_nx, node, edges_filter)
853860
for edge in item.relationships():
854-
self.render_pd_item(g, g_nx, edge)
861+
self.render_pd_item(g, g_nx, edge, edges_filter)
855862

856863
elif isinstance(item, list):
857864
for it in item:
858-
self.render_pd_item(g, g_nx, it)
865+
self.render_pd_item(g, g_nx, it, edges_filter)
859866

860867
@line_cell_magic
861868
@magic_arguments()

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="jupyter_nebulagraph",
8-
version="0.13.3",
8+
version="0.13.4",
99
author="Wey Gu",
1010
author_email="weyl.gu@gmail.com",
1111
description="Jupyter extension for NebulaGraph",

setup_ipython.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
setuptools.setup(
77
name="ipython-ngql",
8-
version="0.13.3",
8+
version="0.13.4",
99
author="Wey Gu",
1010
author_email="weyl.gu@gmail.com",
1111
description="Jupyter extension for NebulaGraph",

0 commit comments

Comments
 (0)