Skip to content

Commit 28e1b92

Browse files
Revert "refactor: use get_nerghbors in storage instead of building adj_list"
This reverts commit e924945.
1 parent e924945 commit 28e1b92

File tree

8 files changed

+31
-42
lines changed

8 files changed

+31
-42
lines changed

graphgen/bases/base_partitioner.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,24 @@ def community2batch(
5151
if edge_data:
5252
edges_data.append((u, v, edge_data))
5353
return nodes_data, edges_data
54+
55+
@staticmethod
56+
def _build_adjacency_list(
57+
nodes: List[tuple[str, dict]], edges: List[tuple[str, str, dict]]
58+
) -> tuple[dict[str, List[str]], set[tuple[str, str]]]:
59+
"""
60+
Build adjacency list and edge set from nodes and edges.
61+
:param nodes
62+
:param edges
63+
:return: adjacency list, edge set
64+
"""
65+
adj: dict[str, List[str]] = {n[0]: [] for n in nodes}
66+
edge_set: set[tuple[str, str]] = set()
67+
for u, v, _ in edges:
68+
if u == v:
69+
continue
70+
adj[u].append(v)
71+
adj[v].append(u)
72+
edge_set.add((u, v))
73+
edge_set.add((v, u))
74+
return adj, edge_set

graphgen/bases/base_storage.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,6 @@ def upsert_edge(
126126
def delete_node(self, node_id: str):
127127
raise NotImplementedError
128128

129-
@abstractmethod
130-
def get_neighbors(self, node_id: str) -> List[str]:
131-
raise NotImplementedError
132-
133129
@abstractmethod
134130
def reload(self):
135131
raise NotImplementedError

graphgen/common/init_storage.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -129,9 +129,6 @@ def upsert_edge(
129129
def delete_node(self, node_id: str):
130130
return self.graph.delete_node(node_id)
131131

132-
def get_neighbors(self, node_id: str) -> List[str]:
133-
return self.graph.get_neighbors(node_id)
134-
135132
def reload(self):
136133
return self.graph.reload()
137134

@@ -248,9 +245,6 @@ def upsert_edge(
248245
def delete_node(self, node_id: str):
249246
return ray.get(self.actor.delete_node.remote(node_id))
250247

251-
def get_neighbors(self, node_id: str) -> List[str]:
252-
return ray.get(self.actor.get_neighbors.remote(node_id))
253-
254248
def reload(self):
255249
return ray.get(self.actor.reload.remote())
256250

graphgen/models/partitioner/bfs_partitioner.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def partition(
2626
nodes = g.get_all_nodes()
2727
edges = g.get_all_edges()
2828

29+
adj, _ = self._build_adjacency_list(nodes, edges)
30+
2931
used_n: set[str] = set()
3032
used_e: set[frozenset[str]] = set()
3133

@@ -53,16 +55,15 @@ def partition(
5355
used_n.add(it)
5456
comm_n.append(it)
5557
cnt += 1
56-
for nei in g.get_neighbors(it):
58+
for nei in adj[it]:
5759
e_key = frozenset((it, nei))
5860
if e_key not in used_e:
5961
queue.append((EDGE_UNIT, e_key))
6062
else:
6163
if it in used_e:
6264
continue
6365
used_e.add(it)
64-
u, v = tuple(it)
65-
comm_e.append((u, v))
66+
comm_e.append(tuple(sorted(it)))
6667
cnt += 1
6768
# push nodes that are not visited
6869
for n in it:

graphgen/models/partitioner/dfs_partitioner.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ def partition(
2626
nodes = g.get_all_nodes()
2727
edges = g.get_all_edges()
2828

29+
adj, _ = self._build_adjacency_list(nodes, edges)
30+
2931
used_n: set[str] = set()
3032
used_e: set[frozenset[str]] = set()
3133

@@ -53,7 +55,7 @@ def partition(
5355
used_n.add(it)
5456
comm_n.append(it)
5557
cnt += 1
56-
for nei in g.get_neighbors(it):
58+
for nei in adj[it]:
5759
e_key = frozenset((it, nei))
5860
if e_key not in used_e:
5961
stack.append((EDGE_UNIT, e_key))
@@ -62,8 +64,7 @@ def partition(
6264
if it in used_e:
6365
continue
6466
used_e.add(it)
65-
u, v = sorted(it)
66-
comm_e.append((u, v))
67+
comm_e.append(tuple(sorted(it)))
6768
cnt += 1
6869
# push neighboring nodes
6970
for n in it:

graphgen/models/partitioner/ece_partitioner.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def partition(
6565
nodes: List[Tuple[str, dict]] = g.get_all_nodes()
6666
edges: List[Tuple[str, str, dict]] = g.get_all_edges()
6767

68+
adj, _ = self._build_adjacency_list(nodes, edges)
6869
node_dict = dict(nodes)
6970
edge_dict = {frozenset((u, v)): d for u, v, d in edges}
7071

@@ -117,7 +118,7 @@ def _add_unit(u):
117118

118119
neighbors: List[Tuple[str, Any, dict]] = []
119120
if cur_type == NODE_UNIT:
120-
for nb_id in g.get_neighbors(cur_id):
121+
for nb_id in adj.get(cur_id, []):
121122
e_key = frozenset((cur_id, nb_id))
122123
if e_key not in used_e and e_key not in community_edges:
123124
neighbors.append((EDGE_UNIT, e_key, edge_dict[e_key]))

graphgen/models/storage/graph/kuzu_storage.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -373,19 +373,6 @@ def delete_node(self, node_id: str):
373373
self._conn.execute(query, {"id": node_id})
374374
print(f"Node {node_id} deleted from KuzuDB.")
375375

376-
def get_neighbors(self, node_id: str) -> List[str]:
377-
query = """
378-
MATCH (a:Entity {id: $id})-[:Relation]->(b:Entity)
379-
RETURN b.id
380-
"""
381-
result = self._conn.execute(query, {"id": node_id})
382-
neighbors = []
383-
while result.has_next():
384-
row = result.get_next()
385-
if row and len(row) >= 1:
386-
neighbors.append(row[0])
387-
return neighbors
388-
389376
def clear(self):
390377
"""Clear all data but keep schema (or drop tables)."""
391378
self._conn.execute("MATCH (n) DETACH DELETE n")

graphgen/models/storage/graph/networkx_storage.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -188,18 +188,6 @@ def delete_node(self, node_id: str):
188188
else:
189189
print(f"Node {node_id} not found in the graph for deletion.")
190190

191-
def get_neighbors(self, node_id: str) -> List[str]:
192-
"""
193-
Get the neighbors of a node based on the specified node_id.
194-
195-
:param node_id: The node_id to get neighbors for
196-
:return: List of neighbor node IDs
197-
"""
198-
if self._graph.has_node(node_id):
199-
return list(self._graph.neighbors(node_id))
200-
print(f"Node {node_id} not found in the graph.")
201-
return []
202-
203191
def clear(self):
204192
"""
205193
Clear the graph by removing all nodes and edges.

0 commit comments

Comments
 (0)