aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are hereHEADmaster
Diffstat (limited to '.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py')
-rw-r--r--.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py71
1 files changed, 71 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py b/.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py
new file mode 100644
index 00000000..e9101303
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/networkx/linalg/tests/test_spectrum.py
@@ -0,0 +1,71 @@
+import pytest
+
+np = pytest.importorskip("numpy")
+pytest.importorskip("scipy")
+
+import networkx as nx
+from networkx.generators.degree_seq import havel_hakimi_graph
+
+
+class TestSpectrum:
+ @classmethod
+ def setup_class(cls):
+ deg = [3, 2, 2, 1, 0]
+ cls.G = havel_hakimi_graph(deg)
+ cls.P = nx.path_graph(3)
+ cls.WG = nx.Graph(
+ (u, v, {"weight": 0.5, "other": 0.3}) for (u, v) in cls.G.edges()
+ )
+ cls.WG.add_node(4)
+ cls.DG = nx.DiGraph()
+ nx.add_path(cls.DG, [0, 1, 2])
+
+ def test_laplacian_spectrum(self):
+ "Laplacian eigenvalues"
+ evals = np.array([0, 0, 1, 3, 4])
+ e = sorted(nx.laplacian_spectrum(self.G))
+ np.testing.assert_almost_equal(e, evals)
+ e = sorted(nx.laplacian_spectrum(self.WG, weight=None))
+ np.testing.assert_almost_equal(e, evals)
+ e = sorted(nx.laplacian_spectrum(self.WG))
+ np.testing.assert_almost_equal(e, 0.5 * evals)
+ e = sorted(nx.laplacian_spectrum(self.WG, weight="other"))
+ np.testing.assert_almost_equal(e, 0.3 * evals)
+
+ def test_normalized_laplacian_spectrum(self):
+ "Normalized Laplacian eigenvalues"
+ evals = np.array([0, 0, 0.7712864461218, 1.5, 1.7287135538781])
+ e = sorted(nx.normalized_laplacian_spectrum(self.G))
+ np.testing.assert_almost_equal(e, evals)
+ e = sorted(nx.normalized_laplacian_spectrum(self.WG, weight=None))
+ np.testing.assert_almost_equal(e, evals)
+ e = sorted(nx.normalized_laplacian_spectrum(self.WG))
+ np.testing.assert_almost_equal(e, evals)
+ e = sorted(nx.normalized_laplacian_spectrum(self.WG, weight="other"))
+ np.testing.assert_almost_equal(e, evals)
+
+ def test_adjacency_spectrum(self):
+ "Adjacency eigenvalues"
+ evals = np.array([-np.sqrt(2), 0, np.sqrt(2)])
+ e = sorted(nx.adjacency_spectrum(self.P))
+ np.testing.assert_almost_equal(e, evals)
+
+ def test_modularity_spectrum(self):
+ "Modularity eigenvalues"
+ evals = np.array([-1.5, 0.0, 0.0])
+ e = sorted(nx.modularity_spectrum(self.P))
+ np.testing.assert_almost_equal(e, evals)
+ # Directed modularity eigenvalues
+ evals = np.array([-0.5, 0.0, 0.0])
+ e = sorted(nx.modularity_spectrum(self.DG))
+ np.testing.assert_almost_equal(e, evals)
+
+ def test_bethe_hessian_spectrum(self):
+ "Bethe Hessian eigenvalues"
+ evals = np.array([0.5 * (9 - np.sqrt(33)), 4, 0.5 * (9 + np.sqrt(33))])
+ e = sorted(nx.bethe_hessian_spectrum(self.P, r=2))
+ np.testing.assert_almost_equal(e, evals)
+ # Collapses back to Laplacian:
+ e1 = sorted(nx.bethe_hessian_spectrum(self.P, r=1))
+ e2 = sorted(nx.laplacian_spectrum(self.P))
+ np.testing.assert_almost_equal(e1, e2)