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/algorithms/centrality/tests/test_harmonic_centrality.py
2020-07-30 01:16:18 +02:00

120 lines
3.2 KiB
Python

"""
Tests for degree centrality.
"""
import networkx as nx
from networkx.algorithms.centrality import harmonic_centrality
from networkx.testing import almost_equal
class TestClosenessCentrality:
@classmethod
def setup_class(cls):
cls.P3 = nx.path_graph(3)
cls.P4 = nx.path_graph(4)
cls.K5 = nx.complete_graph(5)
cls.C4 = nx.cycle_graph(4)
cls.C5 = nx.cycle_graph(5)
cls.T = nx.balanced_tree(r=2, h=2)
cls.Gb = nx.DiGraph()
cls.Gb.add_edges_from([(0, 1), (0, 2), (0, 4), (2, 1),
(2, 3), (4, 3)])
def test_p3_harmonic(self):
c = harmonic_centrality(self.P3)
d = {0: 1.5,
1: 2,
2: 1.5}
for n in sorted(self.P3):
assert almost_equal(c[n], d[n], places=3)
def test_p4_harmonic(self):
c = harmonic_centrality(self.P4)
d = {0: 1.8333333,
1: 2.5,
2: 2.5,
3: 1.8333333}
for n in sorted(self.P4):
assert almost_equal(c[n], d[n], places=3)
def test_clique_complete(self):
c = harmonic_centrality(self.K5)
d = {0: 4,
1: 4,
2: 4,
3: 4,
4: 4}
for n in sorted(self.P3):
assert almost_equal(c[n], d[n], places=3)
def test_cycle_C4(self):
c = harmonic_centrality(self.C4)
d = {0: 2.5,
1: 2.5,
2: 2.5,
3: 2.5, }
for n in sorted(self.C4):
assert almost_equal(c[n], d[n], places=3)
def test_cycle_C5(self):
c = harmonic_centrality(self.C5)
d = {0: 3,
1: 3,
2: 3,
3: 3,
4: 3,
5: 4}
for n in sorted(self.C5):
assert almost_equal(c[n], d[n], places=3)
def test_bal_tree(self):
c = harmonic_centrality(self.T)
d = {0: 4.0,
1: 4.1666,
2: 4.1666,
3: 2.8333,
4: 2.8333,
5: 2.8333,
6: 2.8333}
for n in sorted(self.T):
assert almost_equal(c[n], d[n], places=3)
def test_exampleGraph(self):
c = harmonic_centrality(self.Gb)
d = {0: 0,
1: 2,
2: 1,
3: 2.5,
4: 1}
for n in sorted(self.Gb):
assert almost_equal(c[n], d[n], places=3)
def test_weighted_harmonic(self):
XG = nx.DiGraph()
XG.add_weighted_edges_from([('a', 'b', 10), ('d', 'c', 5), ('a', 'c', 1),
('e', 'f', 2), ('f', 'c', 1), ('a', 'f', 3),
])
c = harmonic_centrality(XG, distance='weight')
d = {'a': 0,
'b': 0.1,
'c': 2.533,
'd': 0,
'e': 0,
'f': 0.83333}
for n in sorted(XG):
assert almost_equal(c[n], d[n], places=3)
def test_empty(self):
G = nx.DiGraph()
c = harmonic_centrality(G, distance='weight')
d = {}
assert c == d
def test_singleton(self):
G = nx.DiGraph()
G.add_node(0)
c = harmonic_centrality(G, distance='weight')
d = {0: 0}
assert c == d