comparison planemo/lib/python3.7/site-packages/networkx/generators/social.py @ 1:56ad4e20f292 draft

"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author guerler
date Fri, 31 Jul 2020 00:32:28 -0400
parents
children
comparison
equal deleted inserted replaced
0:d30785e31577 1:56ad4e20f292
1 """
2 Famous social networks.
3 """
4 import networkx as nx
5 __author__ = """\n""".join(['Jordi Torrents <jtorrents@milnou.net>',
6 'Katy Bold <kbold@princeton.edu>',
7 'Aric Hagberg <aric.hagberg@gmail.com)',
8 'Issa Annamoradnejad <i.moradnejad@gmail.com>'])
9
10 __all__ = ['karate_club_graph', 'davis_southern_women_graph',
11 'florentine_families_graph', 'les_miserables_graph']
12
13
14 def karate_club_graph():
15 """Returns Zachary's Karate Club graph.
16
17 Each node in the returned graph has a node attribute 'club' that
18 indicates the name of the club to which the member represented by that node
19 belongs, either 'Mr. Hi' or 'Officer'.
20
21 Examples
22 --------
23 To get the name of the club to which a node belongs::
24
25 >>> import networkx as nx
26 >>> G = nx.karate_club_graph()
27 >>> G.nodes[5]['club']
28 'Mr. Hi'
29 >>> G.nodes[9]['club']
30 'Officer'
31
32 References
33 ----------
34 .. [1] Zachary, Wayne W.
35 "An Information Flow Model for Conflict and Fission in Small Groups."
36 *Journal of Anthropological Research*, 33, 452--473, (1977).
37
38 .. [2] Data file from:
39 http://vlado.fmf.uni-lj.si/pub/networks/data/Ucinet/UciData.htm
40 """
41 # Create the set of all members, and the members of each club.
42 all_members = set(range(34))
43 club1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 19, 21}
44 # club2 = all_members - club1
45
46 G = nx.Graph()
47 G.add_nodes_from(all_members)
48 G.name = "Zachary's Karate Club"
49
50 zacharydat = """\
51 0 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0
52 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0
53 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0
54 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
55 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
56 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
58 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
59 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1
60 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
61 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
62 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
63 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
64 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
65 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
66 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
67 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
68 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
69 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
70 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
71 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
72 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
73 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
74 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1
75 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0
76 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0
77 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1
78 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1
79 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1
80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1
81 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
82 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1
83 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 1 1 1 0 1
84 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0"""
85
86 for row, line in enumerate(zacharydat.split('\n')):
87 thisrow = [int(b) for b in line.split()]
88 for col, entry in enumerate(thisrow):
89 if entry == 1:
90 G.add_edge(row, col)
91
92 # Add the name of each member's club as a node attribute.
93 for v in G:
94 G.nodes[v]['club'] = 'Mr. Hi' if v in club1 else 'Officer'
95 return G
96
97
98 def davis_southern_women_graph():
99 """Returns Davis Southern women social network.
100
101 This is a bipartite graph.
102
103 References
104 ----------
105 .. [1] A. Davis, Gardner, B. B., Gardner, M. R., 1941. Deep South.
106 University of Chicago Press, Chicago, IL.
107 """
108 G = nx.Graph()
109 # Top nodes
110 women = ["Evelyn Jefferson",
111 "Laura Mandeville",
112 "Theresa Anderson",
113 "Brenda Rogers",
114 "Charlotte McDowd",
115 "Frances Anderson",
116 "Eleanor Nye",
117 "Pearl Oglethorpe",
118 "Ruth DeSand",
119 "Verne Sanderson",
120 "Myra Liddel",
121 "Katherina Rogers",
122 "Sylvia Avondale",
123 "Nora Fayette",
124 "Helen Lloyd",
125 "Dorothy Murchison",
126 "Olivia Carleton",
127 "Flora Price"]
128 G.add_nodes_from(women, bipartite=0)
129 # Bottom nodes
130 events = ["E1",
131 "E2",
132 "E3",
133 "E4",
134 "E5",
135 "E6",
136 "E7",
137 "E8",
138 "E9",
139 "E10",
140 "E11",
141 "E12",
142 "E13",
143 "E14"]
144 G.add_nodes_from(events, bipartite=1)
145
146 G.add_edges_from([("Evelyn Jefferson", "E1"),
147 ("Evelyn Jefferson", "E2"),
148 ("Evelyn Jefferson", "E3"),
149 ("Evelyn Jefferson", "E4"),
150 ("Evelyn Jefferson", "E5"),
151 ("Evelyn Jefferson", "E6"),
152 ("Evelyn Jefferson", "E8"),
153 ("Evelyn Jefferson", "E9"),
154 ("Laura Mandeville", "E1"),
155 ("Laura Mandeville", "E2"),
156 ("Laura Mandeville", "E3"),
157 ("Laura Mandeville", "E5"),
158 ("Laura Mandeville", "E6"),
159 ("Laura Mandeville", "E7"),
160 ("Laura Mandeville", "E8"),
161 ("Theresa Anderson", "E2"),
162 ("Theresa Anderson", "E3"),
163 ("Theresa Anderson", "E4"),
164 ("Theresa Anderson", "E5"),
165 ("Theresa Anderson", "E6"),
166 ("Theresa Anderson", "E7"),
167 ("Theresa Anderson", "E8"),
168 ("Theresa Anderson", "E9"),
169 ("Brenda Rogers", "E1"),
170 ("Brenda Rogers", "E3"),
171 ("Brenda Rogers", "E4"),
172 ("Brenda Rogers", "E5"),
173 ("Brenda Rogers", "E6"),
174 ("Brenda Rogers", "E7"),
175 ("Brenda Rogers", "E8"),
176 ("Charlotte McDowd", "E3"),
177 ("Charlotte McDowd", "E4"),
178 ("Charlotte McDowd", "E5"),
179 ("Charlotte McDowd", "E7"),
180 ("Frances Anderson", "E3"),
181 ("Frances Anderson", "E5"),
182 ("Frances Anderson", "E6"),
183 ("Frances Anderson", "E8"),
184 ("Eleanor Nye", "E5"),
185 ("Eleanor Nye", "E6"),
186 ("Eleanor Nye", "E7"),
187 ("Eleanor Nye", "E8"),
188 ("Pearl Oglethorpe", "E6"),
189 ("Pearl Oglethorpe", "E8"),
190 ("Pearl Oglethorpe", "E9"),
191 ("Ruth DeSand", "E5"),
192 ("Ruth DeSand", "E7"),
193 ("Ruth DeSand", "E8"),
194 ("Ruth DeSand", "E9"),
195 ("Verne Sanderson", "E7"),
196 ("Verne Sanderson", "E8"),
197 ("Verne Sanderson", "E9"),
198 ("Verne Sanderson", "E12"),
199 ("Myra Liddel", "E8"),
200 ("Myra Liddel", "E9"),
201 ("Myra Liddel", "E10"),
202 ("Myra Liddel", "E12"),
203 ("Katherina Rogers", "E8"),
204 ("Katherina Rogers", "E9"),
205 ("Katherina Rogers", "E10"),
206 ("Katherina Rogers", "E12"),
207 ("Katherina Rogers", "E13"),
208 ("Katherina Rogers", "E14"),
209 ("Sylvia Avondale", "E7"),
210 ("Sylvia Avondale", "E8"),
211 ("Sylvia Avondale", "E9"),
212 ("Sylvia Avondale", "E10"),
213 ("Sylvia Avondale", "E12"),
214 ("Sylvia Avondale", "E13"),
215 ("Sylvia Avondale", "E14"),
216 ("Nora Fayette", "E6"),
217 ("Nora Fayette", "E7"),
218 ("Nora Fayette", "E9"),
219 ("Nora Fayette", "E10"),
220 ("Nora Fayette", "E11"),
221 ("Nora Fayette", "E12"),
222 ("Nora Fayette", "E13"),
223 ("Nora Fayette", "E14"),
224 ("Helen Lloyd", "E7"),
225 ("Helen Lloyd", "E8"),
226 ("Helen Lloyd", "E10"),
227 ("Helen Lloyd", "E11"),
228 ("Helen Lloyd", "E12"),
229 ("Dorothy Murchison", "E8"),
230 ("Dorothy Murchison", "E9"),
231 ("Olivia Carleton", "E9"),
232 ("Olivia Carleton", "E11"),
233 ("Flora Price", "E9"),
234 ("Flora Price", "E11")])
235 G.graph['top'] = women
236 G.graph['bottom'] = events
237 return G
238
239
240 def florentine_families_graph():
241 """Returns Florentine families graph.
242
243 References
244 ----------
245 .. [1] Ronald L. Breiger and Philippa E. Pattison
246 Cumulated social roles: The duality of persons and their algebras,1
247 Social Networks, Volume 8, Issue 3, September 1986, Pages 215-256
248 """
249 G = nx.Graph()
250 G.add_edge('Acciaiuoli', 'Medici')
251 G.add_edge('Castellani', 'Peruzzi')
252 G.add_edge('Castellani', 'Strozzi')
253 G.add_edge('Castellani', 'Barbadori')
254 G.add_edge('Medici', 'Barbadori')
255 G.add_edge('Medici', 'Ridolfi')
256 G.add_edge('Medici', 'Tornabuoni')
257 G.add_edge('Medici', 'Albizzi')
258 G.add_edge('Medici', 'Salviati')
259 G.add_edge('Salviati', 'Pazzi')
260 G.add_edge('Peruzzi', 'Strozzi')
261 G.add_edge('Peruzzi', 'Bischeri')
262 G.add_edge('Strozzi', 'Ridolfi')
263 G.add_edge('Strozzi', 'Bischeri')
264 G.add_edge('Ridolfi', 'Tornabuoni')
265 G.add_edge('Tornabuoni', 'Guadagni')
266 G.add_edge('Albizzi', 'Ginori')
267 G.add_edge('Albizzi', 'Guadagni')
268 G.add_edge('Bischeri', 'Guadagni')
269 G.add_edge('Guadagni', 'Lamberteschi')
270 return G
271
272
273 def les_miserables_graph():
274 """Returns coappearance network of characters in the novel Les Miserables.
275
276 References
277 ----------
278 .. [1] D. E. Knuth, 1993.
279 The Stanford GraphBase: a platform for combinatorial computing,
280 pp. 74-87. New York: AcM Press.
281 """
282 G = nx.Graph()
283 G.add_edge('Napoleon', 'Myriel', weight=1)
284 G.add_edge('MlleBaptistine', 'Myriel', weight=8)
285 G.add_edge('MmeMagloire', 'Myriel', weight=10)
286 G.add_edge('MmeMagloire', 'MlleBaptistine', weight=6)
287 G.add_edge('CountessDeLo', 'Myriel', weight=1)
288 G.add_edge('Geborand', 'Myriel', weight=1)
289 G.add_edge('Champtercier', 'Myriel', weight=1)
290 G.add_edge('Cravatte', 'Myriel', weight=1)
291 G.add_edge('Count', 'Myriel', weight=2)
292 G.add_edge('OldMan', 'Myriel', weight=1)
293 G.add_edge('Valjean', 'Labarre', weight=1)
294 G.add_edge('Valjean', 'MmeMagloire', weight=3)
295 G.add_edge('Valjean', 'MlleBaptistine', weight=3)
296 G.add_edge('Valjean', 'Myriel', weight=5)
297 G.add_edge('Marguerite', 'Valjean', weight=1)
298 G.add_edge('MmeDeR', 'Valjean', weight=1)
299 G.add_edge('Isabeau', 'Valjean', weight=1)
300 G.add_edge('Gervais', 'Valjean', weight=1)
301 G.add_edge('Listolier', 'Tholomyes', weight=4)
302 G.add_edge('Fameuil', 'Tholomyes', weight=4)
303 G.add_edge('Fameuil', 'Listolier', weight=4)
304 G.add_edge('Blacheville', 'Tholomyes', weight=4)
305 G.add_edge('Blacheville', 'Listolier', weight=4)
306 G.add_edge('Blacheville', 'Fameuil', weight=4)
307 G.add_edge('Favourite', 'Tholomyes', weight=3)
308 G.add_edge('Favourite', 'Listolier', weight=3)
309 G.add_edge('Favourite', 'Fameuil', weight=3)
310 G.add_edge('Favourite', 'Blacheville', weight=4)
311 G.add_edge('Dahlia', 'Tholomyes', weight=3)
312 G.add_edge('Dahlia', 'Listolier', weight=3)
313 G.add_edge('Dahlia', 'Fameuil', weight=3)
314 G.add_edge('Dahlia', 'Blacheville', weight=3)
315 G.add_edge('Dahlia', 'Favourite', weight=5)
316 G.add_edge('Zephine', 'Tholomyes', weight=3)
317 G.add_edge('Zephine', 'Listolier', weight=3)
318 G.add_edge('Zephine', 'Fameuil', weight=3)
319 G.add_edge('Zephine', 'Blacheville', weight=3)
320 G.add_edge('Zephine', 'Favourite', weight=4)
321 G.add_edge('Zephine', 'Dahlia', weight=4)
322 G.add_edge('Fantine', 'Tholomyes', weight=3)
323 G.add_edge('Fantine', 'Listolier', weight=3)
324 G.add_edge('Fantine', 'Fameuil', weight=3)
325 G.add_edge('Fantine', 'Blacheville', weight=3)
326 G.add_edge('Fantine', 'Favourite', weight=4)
327 G.add_edge('Fantine', 'Dahlia', weight=4)
328 G.add_edge('Fantine', 'Zephine', weight=4)
329 G.add_edge('Fantine', 'Marguerite', weight=2)
330 G.add_edge('Fantine', 'Valjean', weight=9)
331 G.add_edge('MmeThenardier', 'Fantine', weight=2)
332 G.add_edge('MmeThenardier', 'Valjean', weight=7)
333 G.add_edge('Thenardier', 'MmeThenardier', weight=13)
334 G.add_edge('Thenardier', 'Fantine', weight=1)
335 G.add_edge('Thenardier', 'Valjean', weight=12)
336 G.add_edge('Cosette', 'MmeThenardier', weight=4)
337 G.add_edge('Cosette', 'Valjean', weight=31)
338 G.add_edge('Cosette', 'Tholomyes', weight=1)
339 G.add_edge('Cosette', 'Thenardier', weight=1)
340 G.add_edge('Javert', 'Valjean', weight=17)
341 G.add_edge('Javert', 'Fantine', weight=5)
342 G.add_edge('Javert', 'Thenardier', weight=5)
343 G.add_edge('Javert', 'MmeThenardier', weight=1)
344 G.add_edge('Javert', 'Cosette', weight=1)
345 G.add_edge('Fauchelevent', 'Valjean', weight=8)
346 G.add_edge('Fauchelevent', 'Javert', weight=1)
347 G.add_edge('Bamatabois', 'Fantine', weight=1)
348 G.add_edge('Bamatabois', 'Javert', weight=1)
349 G.add_edge('Bamatabois', 'Valjean', weight=2)
350 G.add_edge('Perpetue', 'Fantine', weight=1)
351 G.add_edge('Simplice', 'Perpetue', weight=2)
352 G.add_edge('Simplice', 'Valjean', weight=3)
353 G.add_edge('Simplice', 'Fantine', weight=2)
354 G.add_edge('Simplice', 'Javert', weight=1)
355 G.add_edge('Scaufflaire', 'Valjean', weight=1)
356 G.add_edge('Woman1', 'Valjean', weight=2)
357 G.add_edge('Woman1', 'Javert', weight=1)
358 G.add_edge('Judge', 'Valjean', weight=3)
359 G.add_edge('Judge', 'Bamatabois', weight=2)
360 G.add_edge('Champmathieu', 'Valjean', weight=3)
361 G.add_edge('Champmathieu', 'Judge', weight=3)
362 G.add_edge('Champmathieu', 'Bamatabois', weight=2)
363 G.add_edge('Brevet', 'Judge', weight=2)
364 G.add_edge('Brevet', 'Champmathieu', weight=2)
365 G.add_edge('Brevet', 'Valjean', weight=2)
366 G.add_edge('Brevet', 'Bamatabois', weight=1)
367 G.add_edge('Chenildieu', 'Judge', weight=2)
368 G.add_edge('Chenildieu', 'Champmathieu', weight=2)
369 G.add_edge('Chenildieu', 'Brevet', weight=2)
370 G.add_edge('Chenildieu', 'Valjean', weight=2)
371 G.add_edge('Chenildieu', 'Bamatabois', weight=1)
372 G.add_edge('Cochepaille', 'Judge', weight=2)
373 G.add_edge('Cochepaille', 'Champmathieu', weight=2)
374 G.add_edge('Cochepaille', 'Brevet', weight=2)
375 G.add_edge('Cochepaille', 'Chenildieu', weight=2)
376 G.add_edge('Cochepaille', 'Valjean', weight=2)
377 G.add_edge('Cochepaille', 'Bamatabois', weight=1)
378 G.add_edge('Pontmercy', 'Thenardier', weight=1)
379 G.add_edge('Boulatruelle', 'Thenardier', weight=1)
380 G.add_edge('Eponine', 'MmeThenardier', weight=2)
381 G.add_edge('Eponine', 'Thenardier', weight=3)
382 G.add_edge('Anzelma', 'Eponine', weight=2)
383 G.add_edge('Anzelma', 'Thenardier', weight=2)
384 G.add_edge('Anzelma', 'MmeThenardier', weight=1)
385 G.add_edge('Woman2', 'Valjean', weight=3)
386 G.add_edge('Woman2', 'Cosette', weight=1)
387 G.add_edge('Woman2', 'Javert', weight=1)
388 G.add_edge('MotherInnocent', 'Fauchelevent', weight=3)
389 G.add_edge('MotherInnocent', 'Valjean', weight=1)
390 G.add_edge('Gribier', 'Fauchelevent', weight=2)
391 G.add_edge('MmeBurgon', 'Jondrette', weight=1)
392 G.add_edge('Gavroche', 'MmeBurgon', weight=2)
393 G.add_edge('Gavroche', 'Thenardier', weight=1)
394 G.add_edge('Gavroche', 'Javert', weight=1)
395 G.add_edge('Gavroche', 'Valjean', weight=1)
396 G.add_edge('Gillenormand', 'Cosette', weight=3)
397 G.add_edge('Gillenormand', 'Valjean', weight=2)
398 G.add_edge('Magnon', 'Gillenormand', weight=1)
399 G.add_edge('Magnon', 'MmeThenardier', weight=1)
400 G.add_edge('MlleGillenormand', 'Gillenormand', weight=9)
401 G.add_edge('MlleGillenormand', 'Cosette', weight=2)
402 G.add_edge('MlleGillenormand', 'Valjean', weight=2)
403 G.add_edge('MmePontmercy', 'MlleGillenormand', weight=1)
404 G.add_edge('MmePontmercy', 'Pontmercy', weight=1)
405 G.add_edge('MlleVaubois', 'MlleGillenormand', weight=1)
406 G.add_edge('LtGillenormand', 'MlleGillenormand', weight=2)
407 G.add_edge('LtGillenormand', 'Gillenormand', weight=1)
408 G.add_edge('LtGillenormand', 'Cosette', weight=1)
409 G.add_edge('Marius', 'MlleGillenormand', weight=6)
410 G.add_edge('Marius', 'Gillenormand', weight=12)
411 G.add_edge('Marius', 'Pontmercy', weight=1)
412 G.add_edge('Marius', 'LtGillenormand', weight=1)
413 G.add_edge('Marius', 'Cosette', weight=21)
414 G.add_edge('Marius', 'Valjean', weight=19)
415 G.add_edge('Marius', 'Tholomyes', weight=1)
416 G.add_edge('Marius', 'Thenardier', weight=2)
417 G.add_edge('Marius', 'Eponine', weight=5)
418 G.add_edge('Marius', 'Gavroche', weight=4)
419 G.add_edge('BaronessT', 'Gillenormand', weight=1)
420 G.add_edge('BaronessT', 'Marius', weight=1)
421 G.add_edge('Mabeuf', 'Marius', weight=1)
422 G.add_edge('Mabeuf', 'Eponine', weight=1)
423 G.add_edge('Mabeuf', 'Gavroche', weight=1)
424 G.add_edge('Enjolras', 'Marius', weight=7)
425 G.add_edge('Enjolras', 'Gavroche', weight=7)
426 G.add_edge('Enjolras', 'Javert', weight=6)
427 G.add_edge('Enjolras', 'Mabeuf', weight=1)
428 G.add_edge('Enjolras', 'Valjean', weight=4)
429 G.add_edge('Combeferre', 'Enjolras', weight=15)
430 G.add_edge('Combeferre', 'Marius', weight=5)
431 G.add_edge('Combeferre', 'Gavroche', weight=6)
432 G.add_edge('Combeferre', 'Mabeuf', weight=2)
433 G.add_edge('Prouvaire', 'Gavroche', weight=1)
434 G.add_edge('Prouvaire', 'Enjolras', weight=4)
435 G.add_edge('Prouvaire', 'Combeferre', weight=2)
436 G.add_edge('Feuilly', 'Gavroche', weight=2)
437 G.add_edge('Feuilly', 'Enjolras', weight=6)
438 G.add_edge('Feuilly', 'Prouvaire', weight=2)
439 G.add_edge('Feuilly', 'Combeferre', weight=5)
440 G.add_edge('Feuilly', 'Mabeuf', weight=1)
441 G.add_edge('Feuilly', 'Marius', weight=1)
442 G.add_edge('Courfeyrac', 'Marius', weight=9)
443 G.add_edge('Courfeyrac', 'Enjolras', weight=17)
444 G.add_edge('Courfeyrac', 'Combeferre', weight=13)
445 G.add_edge('Courfeyrac', 'Gavroche', weight=7)
446 G.add_edge('Courfeyrac', 'Mabeuf', weight=2)
447 G.add_edge('Courfeyrac', 'Eponine', weight=1)
448 G.add_edge('Courfeyrac', 'Feuilly', weight=6)
449 G.add_edge('Courfeyrac', 'Prouvaire', weight=3)
450 G.add_edge('Bahorel', 'Combeferre', weight=5)
451 G.add_edge('Bahorel', 'Gavroche', weight=5)
452 G.add_edge('Bahorel', 'Courfeyrac', weight=6)
453 G.add_edge('Bahorel', 'Mabeuf', weight=2)
454 G.add_edge('Bahorel', 'Enjolras', weight=4)
455 G.add_edge('Bahorel', 'Feuilly', weight=3)
456 G.add_edge('Bahorel', 'Prouvaire', weight=2)
457 G.add_edge('Bahorel', 'Marius', weight=1)
458 G.add_edge('Bossuet', 'Marius', weight=5)
459 G.add_edge('Bossuet', 'Courfeyrac', weight=12)
460 G.add_edge('Bossuet', 'Gavroche', weight=5)
461 G.add_edge('Bossuet', 'Bahorel', weight=4)
462 G.add_edge('Bossuet', 'Enjolras', weight=10)
463 G.add_edge('Bossuet', 'Feuilly', weight=6)
464 G.add_edge('Bossuet', 'Prouvaire', weight=2)
465 G.add_edge('Bossuet', 'Combeferre', weight=9)
466 G.add_edge('Bossuet', 'Mabeuf', weight=1)
467 G.add_edge('Bossuet', 'Valjean', weight=1)
468 G.add_edge('Joly', 'Bahorel', weight=5)
469 G.add_edge('Joly', 'Bossuet', weight=7)
470 G.add_edge('Joly', 'Gavroche', weight=3)
471 G.add_edge('Joly', 'Courfeyrac', weight=5)
472 G.add_edge('Joly', 'Enjolras', weight=5)
473 G.add_edge('Joly', 'Feuilly', weight=5)
474 G.add_edge('Joly', 'Prouvaire', weight=2)
475 G.add_edge('Joly', 'Combeferre', weight=5)
476 G.add_edge('Joly', 'Mabeuf', weight=1)
477 G.add_edge('Joly', 'Marius', weight=2)
478 G.add_edge('Grantaire', 'Bossuet', weight=3)
479 G.add_edge('Grantaire', 'Enjolras', weight=3)
480 G.add_edge('Grantaire', 'Combeferre', weight=1)
481 G.add_edge('Grantaire', 'Courfeyrac', weight=2)
482 G.add_edge('Grantaire', 'Joly', weight=2)
483 G.add_edge('Grantaire', 'Gavroche', weight=1)
484 G.add_edge('Grantaire', 'Bahorel', weight=1)
485 G.add_edge('Grantaire', 'Feuilly', weight=1)
486 G.add_edge('Grantaire', 'Prouvaire', weight=1)
487 G.add_edge('MotherPlutarch', 'Mabeuf', weight=3)
488 G.add_edge('Gueulemer', 'Thenardier', weight=5)
489 G.add_edge('Gueulemer', 'Valjean', weight=1)
490 G.add_edge('Gueulemer', 'MmeThenardier', weight=1)
491 G.add_edge('Gueulemer', 'Javert', weight=1)
492 G.add_edge('Gueulemer', 'Gavroche', weight=1)
493 G.add_edge('Gueulemer', 'Eponine', weight=1)
494 G.add_edge('Babet', 'Thenardier', weight=6)
495 G.add_edge('Babet', 'Gueulemer', weight=6)
496 G.add_edge('Babet', 'Valjean', weight=1)
497 G.add_edge('Babet', 'MmeThenardier', weight=1)
498 G.add_edge('Babet', 'Javert', weight=2)
499 G.add_edge('Babet', 'Gavroche', weight=1)
500 G.add_edge('Babet', 'Eponine', weight=1)
501 G.add_edge('Claquesous', 'Thenardier', weight=4)
502 G.add_edge('Claquesous', 'Babet', weight=4)
503 G.add_edge('Claquesous', 'Gueulemer', weight=4)
504 G.add_edge('Claquesous', 'Valjean', weight=1)
505 G.add_edge('Claquesous', 'MmeThenardier', weight=1)
506 G.add_edge('Claquesous', 'Javert', weight=1)
507 G.add_edge('Claquesous', 'Eponine', weight=1)
508 G.add_edge('Claquesous', 'Enjolras', weight=1)
509 G.add_edge('Montparnasse', 'Javert', weight=1)
510 G.add_edge('Montparnasse', 'Babet', weight=2)
511 G.add_edge('Montparnasse', 'Gueulemer', weight=2)
512 G.add_edge('Montparnasse', 'Claquesous', weight=2)
513 G.add_edge('Montparnasse', 'Valjean', weight=1)
514 G.add_edge('Montparnasse', 'Gavroche', weight=1)
515 G.add_edge('Montparnasse', 'Eponine', weight=1)
516 G.add_edge('Montparnasse', 'Thenardier', weight=1)
517 G.add_edge('Toussaint', 'Cosette', weight=2)
518 G.add_edge('Toussaint', 'Javert', weight=1)
519 G.add_edge('Toussaint', 'Valjean', weight=1)
520 G.add_edge('Child1', 'Gavroche', weight=2)
521 G.add_edge('Child2', 'Gavroche', weight=2)
522 G.add_edge('Child2', 'Child1', weight=3)
523 G.add_edge('Brujon', 'Babet', weight=3)
524 G.add_edge('Brujon', 'Gueulemer', weight=3)
525 G.add_edge('Brujon', 'Thenardier', weight=3)
526 G.add_edge('Brujon', 'Gavroche', weight=1)
527 G.add_edge('Brujon', 'Eponine', weight=1)
528 G.add_edge('Brujon', 'Claquesous', weight=1)
529 G.add_edge('Brujon', 'Montparnasse', weight=1)
530 G.add_edge('MmeHucheloup', 'Bossuet', weight=1)
531 G.add_edge('MmeHucheloup', 'Joly', weight=1)
532 G.add_edge('MmeHucheloup', 'Grantaire', weight=1)
533 G.add_edge('MmeHucheloup', 'Bahorel', weight=1)
534 G.add_edge('MmeHucheloup', 'Courfeyrac', weight=1)
535 G.add_edge('MmeHucheloup', 'Gavroche', weight=1)
536 G.add_edge('MmeHucheloup', 'Enjolras', weight=1)
537 return G