comparison env/lib/python3.9/site-packages/networkx/algorithms/centrality/tests/test_betweenness_centrality_subset.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.testing import almost_equal
3
4
5 class TestSubsetBetweennessCentrality:
6 def test_K5(self):
7 """Betweenness Centrality Subset: K5"""
8 G = nx.complete_graph(5)
9 b = nx.betweenness_centrality_subset(
10 G, sources=[0], targets=[1, 3], weight=None
11 )
12 b_answer = {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}
13 for n in sorted(G):
14 assert almost_equal(b[n], b_answer[n])
15
16 def test_P5_directed(self):
17 """Betweenness Centrality Subset: P5 directed"""
18 G = nx.DiGraph()
19 nx.add_path(G, range(5))
20 b_answer = {0: 0, 1: 1, 2: 1, 3: 0, 4: 0, 5: 0}
21 b = nx.betweenness_centrality_subset(G, sources=[0], targets=[3], weight=None)
22 for n in sorted(G):
23 assert almost_equal(b[n], b_answer[n])
24
25 def test_P5(self):
26 """Betweenness Centrality Subset: P5"""
27 G = nx.Graph()
28 nx.add_path(G, range(5))
29 b_answer = {0: 0, 1: 0.5, 2: 0.5, 3: 0, 4: 0, 5: 0}
30 b = nx.betweenness_centrality_subset(G, sources=[0], targets=[3], weight=None)
31 for n in sorted(G):
32 assert almost_equal(b[n], b_answer[n])
33
34 def test_P5_multiple_target(self):
35 """Betweenness Centrality Subset: P5 multiple target"""
36 G = nx.Graph()
37 nx.add_path(G, range(5))
38 b_answer = {0: 0, 1: 1, 2: 1, 3: 0.5, 4: 0, 5: 0}
39 b = nx.betweenness_centrality_subset(
40 G, sources=[0], targets=[3, 4], weight=None
41 )
42 for n in sorted(G):
43 assert almost_equal(b[n], b_answer[n])
44
45 def test_box(self):
46 """Betweenness Centrality Subset: box"""
47 G = nx.Graph()
48 G.add_edges_from([(0, 1), (0, 2), (1, 3), (2, 3)])
49 b_answer = {0: 0, 1: 0.25, 2: 0.25, 3: 0}
50 b = nx.betweenness_centrality_subset(G, sources=[0], targets=[3], weight=None)
51 for n in sorted(G):
52 assert almost_equal(b[n], b_answer[n])
53
54 def test_box_and_path(self):
55 """Betweenness Centrality Subset: box and path"""
56 G = nx.Graph()
57 G.add_edges_from([(0, 1), (0, 2), (1, 3), (2, 3), (3, 4), (4, 5)])
58 b_answer = {0: 0, 1: 0.5, 2: 0.5, 3: 0.5, 4: 0, 5: 0}
59 b = nx.betweenness_centrality_subset(
60 G, sources=[0], targets=[3, 4], weight=None
61 )
62 for n in sorted(G):
63 assert almost_equal(b[n], b_answer[n])
64
65 def test_box_and_path2(self):
66 """Betweenness Centrality Subset: box and path multiple target"""
67 G = nx.Graph()
68 G.add_edges_from([(0, 1), (1, 2), (2, 3), (1, 20), (20, 3), (3, 4)])
69 b_answer = {0: 0, 1: 1.0, 2: 0.5, 20: 0.5, 3: 0.5, 4: 0}
70 b = nx.betweenness_centrality_subset(
71 G, sources=[0], targets=[3, 4], weight=None
72 )
73 for n in sorted(G):
74 assert almost_equal(b[n], b_answer[n])
75
76 def test_diamond_multi_path(self):
77 """Betweenness Centrality Subset: Diamond Multi Path"""
78 G = nx.Graph()
79 G.add_edges_from(
80 [
81 (1, 2),
82 (1, 3),
83 (1, 4),
84 (1, 5),
85 (1, 10),
86 (10, 11),
87 (11, 12),
88 (12, 9),
89 (2, 6),
90 (3, 6),
91 (4, 6),
92 (5, 7),
93 (7, 8),
94 (6, 8),
95 (8, 9),
96 ]
97 )
98 b = nx.betweenness_centrality_subset(G, sources=[1], targets=[9], weight=None)
99
100 expected_b = {
101 1: 0,
102 2: 1.0 / 10,
103 3: 1.0 / 10,
104 4: 1.0 / 10,
105 5: 1.0 / 10,
106 6: 3.0 / 10,
107 7: 1.0 / 10,
108 8: 4.0 / 10,
109 9: 0,
110 10: 1.0 / 10,
111 11: 1.0 / 10,
112 12: 1.0 / 10,
113 }
114
115 for n in sorted(G):
116 assert almost_equal(b[n], expected_b[n])
117
118
119 class TestBetweennessCentralitySources:
120 def test_K5(self):
121 """Betweenness Centrality Sources: K5"""
122 G = nx.complete_graph(5)
123 b = nx.betweenness_centrality_source(G, weight=None, normalized=False)
124 b_answer = {0: 0.0, 1: 0.0, 2: 0.0, 3: 0.0, 4: 0.0}
125 for n in sorted(G):
126 assert almost_equal(b[n], b_answer[n])
127
128 def test_P3(self):
129 """Betweenness Centrality Sources: P3"""
130 G = nx.path_graph(3)
131 b_answer = {0: 0.0, 1: 1.0, 2: 0.0}
132 b = nx.betweenness_centrality_source(G, weight=None, normalized=True)
133 for n in sorted(G):
134 assert almost_equal(b[n], b_answer[n])
135
136
137 class TestEdgeSubsetBetweennessCentrality:
138 def test_K5(self):
139 """Edge betweenness subset centrality: K5"""
140 G = nx.complete_graph(5)
141 b = nx.edge_betweenness_centrality_subset(
142 G, sources=[0], targets=[1, 3], weight=None
143 )
144 b_answer = dict.fromkeys(G.edges(), 0)
145 b_answer[(0, 3)] = b_answer[(0, 1)] = 0.5
146 for n in sorted(G.edges()):
147 assert almost_equal(b[n], b_answer[n])
148
149 def test_P5_directed(self):
150 """Edge betweenness subset centrality: P5 directed"""
151 G = nx.DiGraph()
152 nx.add_path(G, range(5))
153 b_answer = dict.fromkeys(G.edges(), 0)
154 b_answer[(0, 1)] = b_answer[(1, 2)] = b_answer[(2, 3)] = 1
155 b = nx.edge_betweenness_centrality_subset(
156 G, sources=[0], targets=[3], weight=None
157 )
158 for n in sorted(G.edges()):
159 assert almost_equal(b[n], b_answer[n])
160
161 def test_P5(self):
162 """Edge betweenness subset centrality: P5"""
163 G = nx.Graph()
164 nx.add_path(G, range(5))
165 b_answer = dict.fromkeys(G.edges(), 0)
166 b_answer[(0, 1)] = b_answer[(1, 2)] = b_answer[(2, 3)] = 0.5
167 b = nx.edge_betweenness_centrality_subset(
168 G, sources=[0], targets=[3], weight=None
169 )
170 for n in sorted(G.edges()):
171 assert almost_equal(b[n], b_answer[n])
172
173 def test_P5_multiple_target(self):
174 """Edge betweenness subset centrality: P5 multiple target"""
175 G = nx.Graph()
176 nx.add_path(G, range(5))
177 b_answer = dict.fromkeys(G.edges(), 0)
178 b_answer[(0, 1)] = b_answer[(1, 2)] = b_answer[(2, 3)] = 1
179 b_answer[(3, 4)] = 0.5
180 b = nx.edge_betweenness_centrality_subset(
181 G, sources=[0], targets=[3, 4], weight=None
182 )
183 for n in sorted(G.edges()):
184 assert almost_equal(b[n], b_answer[n])
185
186 def test_box(self):
187 """Edge betweenness subset centrality: box"""
188 G = nx.Graph()
189 G.add_edges_from([(0, 1), (0, 2), (1, 3), (2, 3)])
190 b_answer = dict.fromkeys(G.edges(), 0)
191 b_answer[(0, 1)] = b_answer[(0, 2)] = 0.25
192 b_answer[(1, 3)] = b_answer[(2, 3)] = 0.25
193 b = nx.edge_betweenness_centrality_subset(
194 G, sources=[0], targets=[3], weight=None
195 )
196 for n in sorted(G.edges()):
197 assert almost_equal(b[n], b_answer[n])
198
199 def test_box_and_path(self):
200 """Edge betweenness subset centrality: box and path"""
201 G = nx.Graph()
202 G.add_edges_from([(0, 1), (0, 2), (1, 3), (2, 3), (3, 4), (4, 5)])
203 b_answer = dict.fromkeys(G.edges(), 0)
204 b_answer[(0, 1)] = b_answer[(0, 2)] = 0.5
205 b_answer[(1, 3)] = b_answer[(2, 3)] = 0.5
206 b_answer[(3, 4)] = 0.5
207 b = nx.edge_betweenness_centrality_subset(
208 G, sources=[0], targets=[3, 4], weight=None
209 )
210 for n in sorted(G.edges()):
211 assert almost_equal(b[n], b_answer[n])
212
213 def test_box_and_path2(self):
214 """Edge betweenness subset centrality: box and path multiple target"""
215 G = nx.Graph()
216 G.add_edges_from([(0, 1), (1, 2), (2, 3), (1, 20), (20, 3), (3, 4)])
217 b_answer = dict.fromkeys(G.edges(), 0)
218 b_answer[(0, 1)] = 1.0
219 b_answer[(1, 20)] = b_answer[(3, 20)] = 0.5
220 b_answer[(1, 2)] = b_answer[(2, 3)] = 0.5
221 b_answer[(3, 4)] = 0.5
222 b = nx.edge_betweenness_centrality_subset(
223 G, sources=[0], targets=[3, 4], weight=None
224 )
225 for n in sorted(G.edges()):
226 assert almost_equal(b[n], b_answer[n])