123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import pytest
- pytest.importorskip("numpy")
- pytest.importorskip("scipy")
- import networkx as nx
- from networkx.algorithms.centrality.subgraph_alg import (
- communicability_betweenness_centrality,
- estrada_index,
- subgraph_centrality,
- subgraph_centrality_exp,
- )
- class TestSubgraph:
- def test_subgraph_centrality(self):
- answer = {0: 1.5430806348152433, 1: 1.5430806348152433}
- result = subgraph_centrality(nx.path_graph(2))
- for k, v in result.items():
- assert answer[k] == pytest.approx(v, abs=1e-7)
- answer1 = {
- "1": 1.6445956054135658,
- "Albert": 2.4368257358712189,
- "Aric": 2.4368257358712193,
- "Dan": 3.1306328496328168,
- "Franck": 2.3876142275231915,
- }
- G1 = nx.Graph(
- [
- ("Franck", "Aric"),
- ("Aric", "Dan"),
- ("Dan", "Albert"),
- ("Albert", "Franck"),
- ("Dan", "1"),
- ("Franck", "Albert"),
- ]
- )
- result1 = subgraph_centrality(G1)
- for k, v in result1.items():
- assert answer1[k] == pytest.approx(v, abs=1e-7)
- result1 = subgraph_centrality_exp(G1)
- for k, v in result1.items():
- assert answer1[k] == pytest.approx(v, abs=1e-7)
- def test_subgraph_centrality_big_graph(self):
- g199 = nx.complete_graph(199)
- g200 = nx.complete_graph(200)
- comm199 = nx.subgraph_centrality(g199)
- comm199_exp = nx.subgraph_centrality_exp(g199)
- comm200 = nx.subgraph_centrality(g200)
- comm200_exp = nx.subgraph_centrality_exp(g200)
- def test_communicability_betweenness_centrality_small(self):
- result = communicability_betweenness_centrality(nx.path_graph(2))
- assert result == {0: 0, 1: 0}
- result = communicability_betweenness_centrality(nx.path_graph(1))
- assert result == {0: 0}
- result = communicability_betweenness_centrality(nx.path_graph(0))
- assert result == {}
- answer = {0: 0.1411224421177313, 1: 1.0, 2: 0.1411224421177313}
- result = communicability_betweenness_centrality(nx.path_graph(3))
- for k, v in result.items():
- assert answer[k] == pytest.approx(v, abs=1e-7)
- result = communicability_betweenness_centrality(nx.complete_graph(3))
- for k, v in result.items():
- assert 0.49786143366223296 == pytest.approx(v, abs=1e-7)
- def test_communicability_betweenness_centrality(self):
- answer = {
- 0: 0.07017447951484615,
- 1: 0.71565598701107991,
- 2: 0.71565598701107991,
- 3: 0.07017447951484615,
- }
- result = communicability_betweenness_centrality(nx.path_graph(4))
- for k, v in result.items():
- assert answer[k] == pytest.approx(v, abs=1e-7)
- answer1 = {
- "1": 0.060039074193949521,
- "Albert": 0.315470761661372,
- "Aric": 0.31547076166137211,
- "Dan": 0.68297778678316201,
- "Franck": 0.21977926617449497,
- }
- G1 = nx.Graph(
- [
- ("Franck", "Aric"),
- ("Aric", "Dan"),
- ("Dan", "Albert"),
- ("Albert", "Franck"),
- ("Dan", "1"),
- ("Franck", "Albert"),
- ]
- )
- result1 = communicability_betweenness_centrality(G1)
- for k, v in result1.items():
- assert answer1[k] == pytest.approx(v, abs=1e-7)
- def test_estrada_index(self):
- answer = 1041.2470334195475
- result = estrada_index(nx.karate_club_graph())
- assert answer == pytest.approx(result, abs=1e-7)
|