This repository has been archived on 2023-03-25. You can view files and clone it, but cannot push or open issues or pull requests.
mightyscape-1.1-deprecated/extensions/networkx/generators/tests/test_spectral_graph_forge.py
2020-07-30 01:16:18 +02:00

49 lines
1.6 KiB
Python

import pytest
from networkx import is_isomorphic
from networkx.exception import NetworkXError
from networkx.testing import assert_nodes_equal
from networkx.generators.spectral_graph_forge import spectral_graph_forge
from networkx.generators import karate_club_graph
def test_spectral_graph_forge():
numpy = pytest.importorskip('numpy')
scipy = pytest.importorskip('scipy')
G = karate_club_graph()
seed = 54321
# common cases, just checking node number preserving and difference
# between identity and modularity cases
H = spectral_graph_forge(G, 0.1, transformation='identity', seed=seed)
assert_nodes_equal(G, H)
I = spectral_graph_forge(G, 0.1, transformation='identity', seed=seed)
assert_nodes_equal(G, H)
assert is_isomorphic(I, H)
I = spectral_graph_forge(G, 0.1, transformation='modularity', seed=seed)
assert_nodes_equal(G, I)
assert not is_isomorphic(I, H)
# with all the eigenvectors, output graph is identical to the input one
H = spectral_graph_forge(G, 1, transformation='modularity', seed=seed)
assert_nodes_equal(G, H)
assert is_isomorphic(G, H)
# invalid alpha input value, it is silently truncated in [0,1]
H = spectral_graph_forge(G, -1, transformation='identity', seed=seed)
assert_nodes_equal(G, H)
H = spectral_graph_forge(G, 10, transformation='identity', seed=seed)
assert_nodes_equal(G, H)
assert is_isomorphic(G, H)
# invalid transformation mode, checking the error raising
pytest.raises(NetworkXError,
spectral_graph_forge, G, 0.1, transformation='unknown',
seed=seed)