comparison env/lib/python3.9/site-packages/networkx/algorithms/bipartite/tests/test_centrality.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 import networkx as nx
2 from networkx.algorithms import bipartite
3 from networkx.testing import almost_equal
4
5
6 class TestBipartiteCentrality:
7 @classmethod
8 def setup_class(cls):
9 cls.P4 = nx.path_graph(4)
10 cls.K3 = nx.complete_bipartite_graph(3, 3)
11 cls.C4 = nx.cycle_graph(4)
12 cls.davis = nx.davis_southern_women_graph()
13 cls.top_nodes = [
14 n for n, d in cls.davis.nodes(data=True) if d["bipartite"] == 0
15 ]
16
17 def test_degree_centrality(self):
18 d = bipartite.degree_centrality(self.P4, [1, 3])
19 answer = {0: 0.5, 1: 1.0, 2: 1.0, 3: 0.5}
20 assert d == answer
21 d = bipartite.degree_centrality(self.K3, [0, 1, 2])
22 answer = {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0, 5: 1.0}
23 assert d == answer
24 d = bipartite.degree_centrality(self.C4, [0, 2])
25 answer = {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}
26 assert d == answer
27
28 def test_betweenness_centrality(self):
29 c = bipartite.betweenness_centrality(self.P4, [1, 3])
30 answer = {0: 0.0, 1: 1.0, 2: 1.0, 3: 0.0}
31 assert c == answer
32 c = bipartite.betweenness_centrality(self.K3, [0, 1, 2])
33 answer = {0: 0.125, 1: 0.125, 2: 0.125, 3: 0.125, 4: 0.125, 5: 0.125}
34 assert c == answer
35 c = bipartite.betweenness_centrality(self.C4, [0, 2])
36 answer = {0: 0.25, 1: 0.25, 2: 0.25, 3: 0.25}
37 assert c == answer
38
39 def test_closeness_centrality(self):
40 c = bipartite.closeness_centrality(self.P4, [1, 3])
41 answer = {0: 2.0 / 3, 1: 1.0, 2: 1.0, 3: 2.0 / 3}
42 assert c == answer
43 c = bipartite.closeness_centrality(self.K3, [0, 1, 2])
44 answer = {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0, 5: 1.0}
45 assert c == answer
46 c = bipartite.closeness_centrality(self.C4, [0, 2])
47 answer = {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0}
48 assert c == answer
49 G = nx.Graph()
50 G.add_node(0)
51 G.add_node(1)
52 c = bipartite.closeness_centrality(G, [0])
53 assert c == {1: 0.0}
54 c = bipartite.closeness_centrality(G, [1])
55 assert c == {1: 0.0}
56
57 def test_davis_degree_centrality(self):
58 G = self.davis
59 deg = bipartite.degree_centrality(G, self.top_nodes)
60 answer = {
61 "E8": 0.78,
62 "E9": 0.67,
63 "E7": 0.56,
64 "Nora Fayette": 0.57,
65 "Evelyn Jefferson": 0.57,
66 "Theresa Anderson": 0.57,
67 "E6": 0.44,
68 "Sylvia Avondale": 0.50,
69 "Laura Mandeville": 0.50,
70 "Brenda Rogers": 0.50,
71 "Katherina Rogers": 0.43,
72 "E5": 0.44,
73 "Helen Lloyd": 0.36,
74 "E3": 0.33,
75 "Ruth DeSand": 0.29,
76 "Verne Sanderson": 0.29,
77 "E12": 0.33,
78 "Myra Liddel": 0.29,
79 "E11": 0.22,
80 "Eleanor Nye": 0.29,
81 "Frances Anderson": 0.29,
82 "Pearl Oglethorpe": 0.21,
83 "E4": 0.22,
84 "Charlotte McDowd": 0.29,
85 "E10": 0.28,
86 "Olivia Carleton": 0.14,
87 "Flora Price": 0.14,
88 "E2": 0.17,
89 "E1": 0.17,
90 "Dorothy Murchison": 0.14,
91 "E13": 0.17,
92 "E14": 0.17,
93 }
94 for node, value in answer.items():
95 assert almost_equal(value, deg[node], places=2)
96
97 def test_davis_betweenness_centrality(self):
98 G = self.davis
99 bet = bipartite.betweenness_centrality(G, self.top_nodes)
100 answer = {
101 "E8": 0.24,
102 "E9": 0.23,
103 "E7": 0.13,
104 "Nora Fayette": 0.11,
105 "Evelyn Jefferson": 0.10,
106 "Theresa Anderson": 0.09,
107 "E6": 0.07,
108 "Sylvia Avondale": 0.07,
109 "Laura Mandeville": 0.05,
110 "Brenda Rogers": 0.05,
111 "Katherina Rogers": 0.05,
112 "E5": 0.04,
113 "Helen Lloyd": 0.04,
114 "E3": 0.02,
115 "Ruth DeSand": 0.02,
116 "Verne Sanderson": 0.02,
117 "E12": 0.02,
118 "Myra Liddel": 0.02,
119 "E11": 0.02,
120 "Eleanor Nye": 0.01,
121 "Frances Anderson": 0.01,
122 "Pearl Oglethorpe": 0.01,
123 "E4": 0.01,
124 "Charlotte McDowd": 0.01,
125 "E10": 0.01,
126 "Olivia Carleton": 0.01,
127 "Flora Price": 0.01,
128 "E2": 0.00,
129 "E1": 0.00,
130 "Dorothy Murchison": 0.00,
131 "E13": 0.00,
132 "E14": 0.00,
133 }
134 for node, value in answer.items():
135 assert almost_equal(value, bet[node], places=2)
136
137 def test_davis_closeness_centrality(self):
138 G = self.davis
139 clos = bipartite.closeness_centrality(G, self.top_nodes)
140 answer = {
141 "E8": 0.85,
142 "E9": 0.79,
143 "E7": 0.73,
144 "Nora Fayette": 0.80,
145 "Evelyn Jefferson": 0.80,
146 "Theresa Anderson": 0.80,
147 "E6": 0.69,
148 "Sylvia Avondale": 0.77,
149 "Laura Mandeville": 0.73,
150 "Brenda Rogers": 0.73,
151 "Katherina Rogers": 0.73,
152 "E5": 0.59,
153 "Helen Lloyd": 0.73,
154 "E3": 0.56,
155 "Ruth DeSand": 0.71,
156 "Verne Sanderson": 0.71,
157 "E12": 0.56,
158 "Myra Liddel": 0.69,
159 "E11": 0.54,
160 "Eleanor Nye": 0.67,
161 "Frances Anderson": 0.67,
162 "Pearl Oglethorpe": 0.67,
163 "E4": 0.54,
164 "Charlotte McDowd": 0.60,
165 "E10": 0.55,
166 "Olivia Carleton": 0.59,
167 "Flora Price": 0.59,
168 "E2": 0.52,
169 "E1": 0.52,
170 "Dorothy Murchison": 0.65,
171 "E13": 0.52,
172 "E14": 0.52,
173 }
174 for node, value in answer.items():
175 assert almost_equal(value, clos[node], places=2)