From e1a994f7df55a07a15b4284025a97843ae17394c Mon Sep 17 00:00:00 2001 From: RobbieRao <61675305+RobbieRao@users.noreply.github.com> Date: Fri, 24 Jul 2026 02:10:15 +0900 Subject: [PATCH] Deduplicate GNM edge list --- gnm/shape/gnm_numpy_test.py | 3 +++ gnm/shape/gnm_xnp.py | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gnm/shape/gnm_numpy_test.py b/gnm/shape/gnm_numpy_test.py index 57b2167b..a74bb6cf 100644 --- a/gnm/shape/gnm_numpy_test.py +++ b/gnm/shape/gnm_numpy_test.py @@ -429,6 +429,9 @@ def test_edge_list(self, version: str, variant: str): np.testing.assert_array_equal( adjacency_matrix_quads, adjacency_matrix_edge_list ) + self.assertLen( + gnm_np.edge_list, len(np.unique(gnm_np.edge_list, axis=0)) + ) @parameterized.parameters(get_group_subsets_test_cases()) def test_group_subsets(self, version: str, variant: str, group_name: str): diff --git a/gnm/shape/gnm_xnp.py b/gnm/shape/gnm_xnp.py index 396384e9..211d1fd8 100644 --- a/gnm/shape/gnm_xnp.py +++ b/gnm/shape/gnm_xnp.py @@ -426,7 +426,7 @@ def edge_list(self) -> npt.NDArray[np.integer]: e1 = quads.ravel() e2 = np.roll(quads, -1, axis=1).ravel() edges = np.stack([np.minimum(e1, e2), np.maximum(e1, e2)], axis=1) - edge_keys = e1 + self.num_vertices * e2 + edge_keys = edges[:, 0] + self.num_vertices * edges[:, 1] _, unique_indices = np.unique(edge_keys, return_index=True) unique_undirected_edges = edges[unique_indices] return np.vstack(