diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/planemo/lib/python3.7/site-packages/networkx/generators/social.py	Fri Jul 31 00:32:28 2020 -0400
@@ -0,0 +1,537 @@
+"""
+Famous social networks.
+"""
+import networkx as nx
+__author__ = """\n""".join(['Jordi Torrents <jtorrents@milnou.net>',
+                            'Katy Bold <kbold@princeton.edu>',
+                            'Aric Hagberg <aric.hagberg@gmail.com)',
+                            'Issa Annamoradnejad <i.moradnejad@gmail.com>'])
+
+__all__ = ['karate_club_graph', 'davis_southern_women_graph',
+           'florentine_families_graph', 'les_miserables_graph']
+
+
+def karate_club_graph():
+    """Returns Zachary's Karate Club graph.
+
+    Each node in the returned graph has a node attribute 'club' that
+    indicates the name of the club to which the member represented by that node
+    belongs, either 'Mr. Hi' or 'Officer'.
+
+    Examples
+    --------
+    To get the name of the club to which a node belongs::
+
+        >>> import networkx as nx
+        >>> G = nx.karate_club_graph()
+        >>> G.nodes[5]['club']
+        'Mr. Hi'
+        >>> G.nodes[9]['club']
+        'Officer'
+
+    References
+    ----------
+    .. [1] Zachary, Wayne W.
+       "An Information Flow Model for Conflict and Fission in Small Groups."
+       *Journal of Anthropological Research*, 33, 452--473, (1977).
+
+    .. [2] Data file from:
+       http://vlado.fmf.uni-lj.si/pub/networks/data/Ucinet/UciData.htm
+    """
+    # Create the set of all members, and the members of each club.
+    all_members = set(range(34))
+    club1 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 16, 17, 19, 21}
+    # club2 = all_members - club1
+
+    G = nx.Graph()
+    G.add_nodes_from(all_members)
+    G.name = "Zachary's Karate Club"
+
+    zacharydat = """\
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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"""
+
+    for row, line in enumerate(zacharydat.split('\n')):
+        thisrow = [int(b) for b in line.split()]
+        for col, entry in enumerate(thisrow):
+            if entry == 1:
+                G.add_edge(row, col)
+
+    # Add the name of each member's club as a node attribute.
+    for v in G:
+        G.nodes[v]['club'] = 'Mr. Hi' if v in club1 else 'Officer'
+    return G
+
+
+def davis_southern_women_graph():
+    """Returns Davis Southern women social network.
+
+    This is a bipartite graph.
+
+    References
+    ----------
+    .. [1] A. Davis, Gardner, B. B., Gardner, M. R., 1941. Deep South.
+        University of Chicago Press, Chicago, IL.
+    """
+    G = nx.Graph()
+    # Top nodes
+    women = ["Evelyn Jefferson",
+             "Laura Mandeville",
+             "Theresa Anderson",
+             "Brenda Rogers",
+             "Charlotte McDowd",
+             "Frances Anderson",
+             "Eleanor Nye",
+             "Pearl Oglethorpe",
+             "Ruth DeSand",
+             "Verne Sanderson",
+             "Myra Liddel",
+             "Katherina Rogers",
+             "Sylvia Avondale",
+             "Nora Fayette",
+             "Helen Lloyd",
+             "Dorothy Murchison",
+             "Olivia Carleton",
+             "Flora Price"]
+    G.add_nodes_from(women, bipartite=0)
+    # Bottom nodes
+    events = ["E1",
+              "E2",
+              "E3",
+              "E4",
+              "E5",
+              "E6",
+              "E7",
+              "E8",
+              "E9",
+              "E10",
+              "E11",
+              "E12",
+              "E13",
+              "E14"]
+    G.add_nodes_from(events, bipartite=1)
+
+    G.add_edges_from([("Evelyn Jefferson", "E1"),
+                      ("Evelyn Jefferson", "E2"),
+                      ("Evelyn Jefferson", "E3"),
+                      ("Evelyn Jefferson", "E4"),
+                      ("Evelyn Jefferson", "E5"),
+                      ("Evelyn Jefferson", "E6"),
+                      ("Evelyn Jefferson", "E8"),
+                      ("Evelyn Jefferson", "E9"),
+                      ("Laura Mandeville", "E1"),
+                      ("Laura Mandeville", "E2"),
+                      ("Laura Mandeville", "E3"),
+                      ("Laura Mandeville", "E5"),
+                      ("Laura Mandeville", "E6"),
+                      ("Laura Mandeville", "E7"),
+                      ("Laura Mandeville", "E8"),
+                      ("Theresa Anderson", "E2"),
+                      ("Theresa Anderson", "E3"),
+                      ("Theresa Anderson", "E4"),
+                      ("Theresa Anderson", "E5"),
+                      ("Theresa Anderson", "E6"),
+                      ("Theresa Anderson", "E7"),
+                      ("Theresa Anderson", "E8"),
+                      ("Theresa Anderson", "E9"),
+                      ("Brenda Rogers", "E1"),
+                      ("Brenda Rogers", "E3"),
+                      ("Brenda Rogers", "E4"),
+                      ("Brenda Rogers", "E5"),
+                      ("Brenda Rogers", "E6"),
+                      ("Brenda Rogers", "E7"),
+                      ("Brenda Rogers", "E8"),
+                      ("Charlotte McDowd", "E3"),
+                      ("Charlotte McDowd", "E4"),
+                      ("Charlotte McDowd", "E5"),
+                      ("Charlotte McDowd", "E7"),
+                      ("Frances Anderson", "E3"),
+                      ("Frances Anderson", "E5"),
+                      ("Frances Anderson", "E6"),
+                      ("Frances Anderson", "E8"),
+                      ("Eleanor Nye", "E5"),
+                      ("Eleanor Nye", "E6"),
+                      ("Eleanor Nye", "E7"),
+                      ("Eleanor Nye", "E8"),
+                      ("Pearl Oglethorpe", "E6"),
+                      ("Pearl Oglethorpe", "E8"),
+                      ("Pearl Oglethorpe", "E9"),
+                      ("Ruth DeSand", "E5"),
+                      ("Ruth DeSand", "E7"),
+                      ("Ruth DeSand", "E8"),
+                      ("Ruth DeSand", "E9"),
+                      ("Verne Sanderson", "E7"),
+                      ("Verne Sanderson", "E8"),
+                      ("Verne Sanderson", "E9"),
+                      ("Verne Sanderson", "E12"),
+                      ("Myra Liddel", "E8"),
+                      ("Myra Liddel", "E9"),
+                      ("Myra Liddel", "E10"),
+                      ("Myra Liddel", "E12"),
+                      ("Katherina Rogers", "E8"),
+                      ("Katherina Rogers", "E9"),
+                      ("Katherina Rogers", "E10"),
+                      ("Katherina Rogers", "E12"),
+                      ("Katherina Rogers", "E13"),
+                      ("Katherina Rogers", "E14"),
+                      ("Sylvia Avondale", "E7"),
+                      ("Sylvia Avondale", "E8"),
+                      ("Sylvia Avondale", "E9"),
+                      ("Sylvia Avondale", "E10"),
+                      ("Sylvia Avondale", "E12"),
+                      ("Sylvia Avondale", "E13"),
+                      ("Sylvia Avondale", "E14"),
+                      ("Nora Fayette", "E6"),
+                      ("Nora Fayette", "E7"),
+                      ("Nora Fayette", "E9"),
+                      ("Nora Fayette", "E10"),
+                      ("Nora Fayette", "E11"),
+                      ("Nora Fayette", "E12"),
+                      ("Nora Fayette", "E13"),
+                      ("Nora Fayette", "E14"),
+                      ("Helen Lloyd", "E7"),
+                      ("Helen Lloyd", "E8"),
+                      ("Helen Lloyd", "E10"),
+                      ("Helen Lloyd", "E11"),
+                      ("Helen Lloyd", "E12"),
+                      ("Dorothy Murchison", "E8"),
+                      ("Dorothy Murchison", "E9"),
+                      ("Olivia Carleton", "E9"),
+                      ("Olivia Carleton", "E11"),
+                      ("Flora Price", "E9"),
+                      ("Flora Price", "E11")])
+    G.graph['top'] = women
+    G.graph['bottom'] = events
+    return G
+
+
+def florentine_families_graph():
+    """Returns Florentine families graph.
+
+    References
+    ----------
+    .. [1] Ronald L. Breiger and Philippa E. Pattison
+       Cumulated social roles: The duality of persons and their algebras,1
+       Social Networks, Volume 8, Issue 3, September 1986, Pages 215-256
+    """
+    G = nx.Graph()
+    G.add_edge('Acciaiuoli', 'Medici')
+    G.add_edge('Castellani', 'Peruzzi')
+    G.add_edge('Castellani', 'Strozzi')
+    G.add_edge('Castellani', 'Barbadori')
+    G.add_edge('Medici', 'Barbadori')
+    G.add_edge('Medici', 'Ridolfi')
+    G.add_edge('Medici', 'Tornabuoni')
+    G.add_edge('Medici', 'Albizzi')
+    G.add_edge('Medici', 'Salviati')
+    G.add_edge('Salviati', 'Pazzi')
+    G.add_edge('Peruzzi', 'Strozzi')
+    G.add_edge('Peruzzi', 'Bischeri')
+    G.add_edge('Strozzi', 'Ridolfi')
+    G.add_edge('Strozzi', 'Bischeri')
+    G.add_edge('Ridolfi', 'Tornabuoni')
+    G.add_edge('Tornabuoni', 'Guadagni')
+    G.add_edge('Albizzi', 'Ginori')
+    G.add_edge('Albizzi', 'Guadagni')
+    G.add_edge('Bischeri', 'Guadagni')
+    G.add_edge('Guadagni', 'Lamberteschi')
+    return G
+
+
+def les_miserables_graph():
+    """Returns coappearance network of characters in the novel Les Miserables.
+
+    References
+    ----------
+    .. [1] D. E. Knuth, 1993.
+       The Stanford GraphBase: a platform for combinatorial computing,
+       pp. 74-87. New York: AcM Press.
+    """
+    G = nx.Graph()
+    G.add_edge('Napoleon', 'Myriel', weight=1)
+    G.add_edge('MlleBaptistine', 'Myriel', weight=8)
+    G.add_edge('MmeMagloire', 'Myriel', weight=10)
+    G.add_edge('MmeMagloire', 'MlleBaptistine', weight=6)
+    G.add_edge('CountessDeLo', 'Myriel', weight=1)
+    G.add_edge('Geborand', 'Myriel', weight=1)
+    G.add_edge('Champtercier', 'Myriel', weight=1)
+    G.add_edge('Cravatte', 'Myriel', weight=1)
+    G.add_edge('Count', 'Myriel', weight=2)
+    G.add_edge('OldMan', 'Myriel', weight=1)
+    G.add_edge('Valjean', 'Labarre', weight=1)
+    G.add_edge('Valjean', 'MmeMagloire', weight=3)
+    G.add_edge('Valjean', 'MlleBaptistine', weight=3)
+    G.add_edge('Valjean', 'Myriel', weight=5)
+    G.add_edge('Marguerite', 'Valjean', weight=1)
+    G.add_edge('MmeDeR', 'Valjean', weight=1)
+    G.add_edge('Isabeau', 'Valjean', weight=1)
+    G.add_edge('Gervais', 'Valjean', weight=1)
+    G.add_edge('Listolier', 'Tholomyes', weight=4)
+    G.add_edge('Fameuil', 'Tholomyes', weight=4)
+    G.add_edge('Fameuil', 'Listolier', weight=4)
+    G.add_edge('Blacheville', 'Tholomyes', weight=4)
+    G.add_edge('Blacheville', 'Listolier', weight=4)
+    G.add_edge('Blacheville', 'Fameuil', weight=4)
+    G.add_edge('Favourite', 'Tholomyes', weight=3)
+    G.add_edge('Favourite', 'Listolier', weight=3)
+    G.add_edge('Favourite', 'Fameuil', weight=3)
+    G.add_edge('Favourite', 'Blacheville', weight=4)
+    G.add_edge('Dahlia', 'Tholomyes', weight=3)
+    G.add_edge('Dahlia', 'Listolier', weight=3)
+    G.add_edge('Dahlia', 'Fameuil', weight=3)
+    G.add_edge('Dahlia', 'Blacheville', weight=3)
+    G.add_edge('Dahlia', 'Favourite', weight=5)
+    G.add_edge('Zephine', 'Tholomyes', weight=3)
+    G.add_edge('Zephine', 'Listolier', weight=3)
+    G.add_edge('Zephine', 'Fameuil', weight=3)
+    G.add_edge('Zephine', 'Blacheville', weight=3)
+    G.add_edge('Zephine', 'Favourite', weight=4)
+    G.add_edge('Zephine', 'Dahlia', weight=4)
+    G.add_edge('Fantine', 'Tholomyes', weight=3)
+    G.add_edge('Fantine', 'Listolier', weight=3)
+    G.add_edge('Fantine', 'Fameuil', weight=3)
+    G.add_edge('Fantine', 'Blacheville', weight=3)
+    G.add_edge('Fantine', 'Favourite', weight=4)
+    G.add_edge('Fantine', 'Dahlia', weight=4)
+    G.add_edge('Fantine', 'Zephine', weight=4)
+    G.add_edge('Fantine', 'Marguerite', weight=2)
+    G.add_edge('Fantine', 'Valjean', weight=9)
+    G.add_edge('MmeThenardier', 'Fantine', weight=2)
+    G.add_edge('MmeThenardier', 'Valjean', weight=7)
+    G.add_edge('Thenardier', 'MmeThenardier', weight=13)
+    G.add_edge('Thenardier', 'Fantine', weight=1)
+    G.add_edge('Thenardier', 'Valjean', weight=12)
+    G.add_edge('Cosette', 'MmeThenardier', weight=4)
+    G.add_edge('Cosette', 'Valjean', weight=31)
+    G.add_edge('Cosette', 'Tholomyes', weight=1)
+    G.add_edge('Cosette', 'Thenardier', weight=1)
+    G.add_edge('Javert', 'Valjean', weight=17)
+    G.add_edge('Javert', 'Fantine', weight=5)
+    G.add_edge('Javert', 'Thenardier', weight=5)
+    G.add_edge('Javert', 'MmeThenardier', weight=1)
+    G.add_edge('Javert', 'Cosette', weight=1)
+    G.add_edge('Fauchelevent', 'Valjean', weight=8)
+    G.add_edge('Fauchelevent', 'Javert', weight=1)
+    G.add_edge('Bamatabois', 'Fantine', weight=1)
+    G.add_edge('Bamatabois', 'Javert', weight=1)
+    G.add_edge('Bamatabois', 'Valjean', weight=2)
+    G.add_edge('Perpetue', 'Fantine', weight=1)
+    G.add_edge('Simplice', 'Perpetue', weight=2)
+    G.add_edge('Simplice', 'Valjean', weight=3)
+    G.add_edge('Simplice', 'Fantine', weight=2)
+    G.add_edge('Simplice', 'Javert', weight=1)
+    G.add_edge('Scaufflaire', 'Valjean', weight=1)
+    G.add_edge('Woman1', 'Valjean', weight=2)
+    G.add_edge('Woman1', 'Javert', weight=1)
+    G.add_edge('Judge', 'Valjean', weight=3)
+    G.add_edge('Judge', 'Bamatabois', weight=2)
+    G.add_edge('Champmathieu', 'Valjean', weight=3)
+    G.add_edge('Champmathieu', 'Judge', weight=3)
+    G.add_edge('Champmathieu', 'Bamatabois', weight=2)
+    G.add_edge('Brevet', 'Judge', weight=2)
+    G.add_edge('Brevet', 'Champmathieu', weight=2)
+    G.add_edge('Brevet', 'Valjean', weight=2)
+    G.add_edge('Brevet', 'Bamatabois', weight=1)
+    G.add_edge('Chenildieu', 'Judge', weight=2)
+    G.add_edge('Chenildieu', 'Champmathieu', weight=2)
+    G.add_edge('Chenildieu', 'Brevet', weight=2)
+    G.add_edge('Chenildieu', 'Valjean', weight=2)
+    G.add_edge('Chenildieu', 'Bamatabois', weight=1)
+    G.add_edge('Cochepaille', 'Judge', weight=2)
+    G.add_edge('Cochepaille', 'Champmathieu', weight=2)
+    G.add_edge('Cochepaille', 'Brevet', weight=2)
+    G.add_edge('Cochepaille', 'Chenildieu', weight=2)
+    G.add_edge('Cochepaille', 'Valjean', weight=2)
+    G.add_edge('Cochepaille', 'Bamatabois', weight=1)
+    G.add_edge('Pontmercy', 'Thenardier', weight=1)
+    G.add_edge('Boulatruelle', 'Thenardier', weight=1)
+    G.add_edge('Eponine', 'MmeThenardier', weight=2)
+    G.add_edge('Eponine', 'Thenardier', weight=3)
+    G.add_edge('Anzelma', 'Eponine', weight=2)
+    G.add_edge('Anzelma', 'Thenardier', weight=2)
+    G.add_edge('Anzelma', 'MmeThenardier', weight=1)
+    G.add_edge('Woman2', 'Valjean', weight=3)
+    G.add_edge('Woman2', 'Cosette', weight=1)
+    G.add_edge('Woman2', 'Javert', weight=1)
+    G.add_edge('MotherInnocent', 'Fauchelevent', weight=3)
+    G.add_edge('MotherInnocent', 'Valjean', weight=1)
+    G.add_edge('Gribier', 'Fauchelevent', weight=2)
+    G.add_edge('MmeBurgon', 'Jondrette', weight=1)
+    G.add_edge('Gavroche', 'MmeBurgon', weight=2)
+    G.add_edge('Gavroche', 'Thenardier', weight=1)
+    G.add_edge('Gavroche', 'Javert', weight=1)
+    G.add_edge('Gavroche', 'Valjean', weight=1)
+    G.add_edge('Gillenormand', 'Cosette', weight=3)
+    G.add_edge('Gillenormand', 'Valjean', weight=2)
+    G.add_edge('Magnon', 'Gillenormand', weight=1)
+    G.add_edge('Magnon', 'MmeThenardier', weight=1)
+    G.add_edge('MlleGillenormand', 'Gillenormand', weight=9)
+    G.add_edge('MlleGillenormand', 'Cosette', weight=2)
+    G.add_edge('MlleGillenormand', 'Valjean', weight=2)
+    G.add_edge('MmePontmercy', 'MlleGillenormand', weight=1)
+    G.add_edge('MmePontmercy', 'Pontmercy', weight=1)
+    G.add_edge('MlleVaubois', 'MlleGillenormand', weight=1)
+    G.add_edge('LtGillenormand', 'MlleGillenormand', weight=2)
+    G.add_edge('LtGillenormand', 'Gillenormand', weight=1)
+    G.add_edge('LtGillenormand', 'Cosette', weight=1)
+    G.add_edge('Marius', 'MlleGillenormand', weight=6)
+    G.add_edge('Marius', 'Gillenormand', weight=12)
+    G.add_edge('Marius', 'Pontmercy', weight=1)
+    G.add_edge('Marius', 'LtGillenormand', weight=1)
+    G.add_edge('Marius', 'Cosette', weight=21)
+    G.add_edge('Marius', 'Valjean', weight=19)
+    G.add_edge('Marius', 'Tholomyes', weight=1)
+    G.add_edge('Marius', 'Thenardier', weight=2)
+    G.add_edge('Marius', 'Eponine', weight=5)
+    G.add_edge('Marius', 'Gavroche', weight=4)
+    G.add_edge('BaronessT', 'Gillenormand', weight=1)
+    G.add_edge('BaronessT', 'Marius', weight=1)
+    G.add_edge('Mabeuf', 'Marius', weight=1)
+    G.add_edge('Mabeuf', 'Eponine', weight=1)
+    G.add_edge('Mabeuf', 'Gavroche', weight=1)
+    G.add_edge('Enjolras', 'Marius', weight=7)
+    G.add_edge('Enjolras', 'Gavroche', weight=7)
+    G.add_edge('Enjolras', 'Javert', weight=6)
+    G.add_edge('Enjolras', 'Mabeuf', weight=1)
+    G.add_edge('Enjolras', 'Valjean', weight=4)
+    G.add_edge('Combeferre', 'Enjolras', weight=15)
+    G.add_edge('Combeferre', 'Marius', weight=5)
+    G.add_edge('Combeferre', 'Gavroche', weight=6)
+    G.add_edge('Combeferre', 'Mabeuf', weight=2)
+    G.add_edge('Prouvaire', 'Gavroche', weight=1)
+    G.add_edge('Prouvaire', 'Enjolras', weight=4)
+    G.add_edge('Prouvaire', 'Combeferre', weight=2)
+    G.add_edge('Feuilly', 'Gavroche', weight=2)
+    G.add_edge('Feuilly', 'Enjolras', weight=6)
+    G.add_edge('Feuilly', 'Prouvaire', weight=2)
+    G.add_edge('Feuilly', 'Combeferre', weight=5)
+    G.add_edge('Feuilly', 'Mabeuf', weight=1)
+    G.add_edge('Feuilly', 'Marius', weight=1)
+    G.add_edge('Courfeyrac', 'Marius', weight=9)
+    G.add_edge('Courfeyrac', 'Enjolras', weight=17)
+    G.add_edge('Courfeyrac', 'Combeferre', weight=13)
+    G.add_edge('Courfeyrac', 'Gavroche', weight=7)
+    G.add_edge('Courfeyrac', 'Mabeuf', weight=2)
+    G.add_edge('Courfeyrac', 'Eponine', weight=1)
+    G.add_edge('Courfeyrac', 'Feuilly', weight=6)
+    G.add_edge('Courfeyrac', 'Prouvaire', weight=3)
+    G.add_edge('Bahorel', 'Combeferre', weight=5)
+    G.add_edge('Bahorel', 'Gavroche', weight=5)
+    G.add_edge('Bahorel', 'Courfeyrac', weight=6)
+    G.add_edge('Bahorel', 'Mabeuf', weight=2)
+    G.add_edge('Bahorel', 'Enjolras', weight=4)
+    G.add_edge('Bahorel', 'Feuilly', weight=3)
+    G.add_edge('Bahorel', 'Prouvaire', weight=2)
+    G.add_edge('Bahorel', 'Marius', weight=1)
+    G.add_edge('Bossuet', 'Marius', weight=5)
+    G.add_edge('Bossuet', 'Courfeyrac', weight=12)
+    G.add_edge('Bossuet', 'Gavroche', weight=5)
+    G.add_edge('Bossuet', 'Bahorel', weight=4)
+    G.add_edge('Bossuet', 'Enjolras', weight=10)
+    G.add_edge('Bossuet', 'Feuilly', weight=6)
+    G.add_edge('Bossuet', 'Prouvaire', weight=2)
+    G.add_edge('Bossuet', 'Combeferre', weight=9)
+    G.add_edge('Bossuet', 'Mabeuf', weight=1)
+    G.add_edge('Bossuet', 'Valjean', weight=1)
+    G.add_edge('Joly', 'Bahorel', weight=5)
+    G.add_edge('Joly', 'Bossuet', weight=7)
+    G.add_edge('Joly', 'Gavroche', weight=3)
+    G.add_edge('Joly', 'Courfeyrac', weight=5)
+    G.add_edge('Joly', 'Enjolras', weight=5)
+    G.add_edge('Joly', 'Feuilly', weight=5)
+    G.add_edge('Joly', 'Prouvaire', weight=2)
+    G.add_edge('Joly', 'Combeferre', weight=5)
+    G.add_edge('Joly', 'Mabeuf', weight=1)
+    G.add_edge('Joly', 'Marius', weight=2)
+    G.add_edge('Grantaire', 'Bossuet', weight=3)
+    G.add_edge('Grantaire', 'Enjolras', weight=3)
+    G.add_edge('Grantaire', 'Combeferre', weight=1)
+    G.add_edge('Grantaire', 'Courfeyrac', weight=2)
+    G.add_edge('Grantaire', 'Joly', weight=2)
+    G.add_edge('Grantaire', 'Gavroche', weight=1)
+    G.add_edge('Grantaire', 'Bahorel', weight=1)
+    G.add_edge('Grantaire', 'Feuilly', weight=1)
+    G.add_edge('Grantaire', 'Prouvaire', weight=1)
+    G.add_edge('MotherPlutarch', 'Mabeuf', weight=3)
+    G.add_edge('Gueulemer', 'Thenardier', weight=5)
+    G.add_edge('Gueulemer', 'Valjean', weight=1)
+    G.add_edge('Gueulemer', 'MmeThenardier', weight=1)
+    G.add_edge('Gueulemer', 'Javert', weight=1)
+    G.add_edge('Gueulemer', 'Gavroche', weight=1)
+    G.add_edge('Gueulemer', 'Eponine', weight=1)
+    G.add_edge('Babet', 'Thenardier', weight=6)
+    G.add_edge('Babet', 'Gueulemer', weight=6)
+    G.add_edge('Babet', 'Valjean', weight=1)
+    G.add_edge('Babet', 'MmeThenardier', weight=1)
+    G.add_edge('Babet', 'Javert', weight=2)
+    G.add_edge('Babet', 'Gavroche', weight=1)
+    G.add_edge('Babet', 'Eponine', weight=1)
+    G.add_edge('Claquesous', 'Thenardier', weight=4)
+    G.add_edge('Claquesous', 'Babet', weight=4)
+    G.add_edge('Claquesous', 'Gueulemer', weight=4)
+    G.add_edge('Claquesous', 'Valjean', weight=1)
+    G.add_edge('Claquesous', 'MmeThenardier', weight=1)
+    G.add_edge('Claquesous', 'Javert', weight=1)
+    G.add_edge('Claquesous', 'Eponine', weight=1)
+    G.add_edge('Claquesous', 'Enjolras', weight=1)
+    G.add_edge('Montparnasse', 'Javert', weight=1)
+    G.add_edge('Montparnasse', 'Babet', weight=2)
+    G.add_edge('Montparnasse', 'Gueulemer', weight=2)
+    G.add_edge('Montparnasse', 'Claquesous', weight=2)
+    G.add_edge('Montparnasse', 'Valjean', weight=1)
+    G.add_edge('Montparnasse', 'Gavroche', weight=1)
+    G.add_edge('Montparnasse', 'Eponine', weight=1)
+    G.add_edge('Montparnasse', 'Thenardier', weight=1)
+    G.add_edge('Toussaint', 'Cosette', weight=2)
+    G.add_edge('Toussaint', 'Javert', weight=1)
+    G.add_edge('Toussaint', 'Valjean', weight=1)
+    G.add_edge('Child1', 'Gavroche', weight=2)
+    G.add_edge('Child2', 'Gavroche', weight=2)
+    G.add_edge('Child2', 'Child1', weight=3)
+    G.add_edge('Brujon', 'Babet', weight=3)
+    G.add_edge('Brujon', 'Gueulemer', weight=3)
+    G.add_edge('Brujon', 'Thenardier', weight=3)
+    G.add_edge('Brujon', 'Gavroche', weight=1)
+    G.add_edge('Brujon', 'Eponine', weight=1)
+    G.add_edge('Brujon', 'Claquesous', weight=1)
+    G.add_edge('Brujon', 'Montparnasse', weight=1)
+    G.add_edge('MmeHucheloup', 'Bossuet', weight=1)
+    G.add_edge('MmeHucheloup', 'Joly', weight=1)
+    G.add_edge('MmeHucheloup', 'Grantaire', weight=1)
+    G.add_edge('MmeHucheloup', 'Bahorel', weight=1)
+    G.add_edge('MmeHucheloup', 'Courfeyrac', weight=1)
+    G.add_edge('MmeHucheloup', 'Gavroche', weight=1)
+    G.add_edge('MmeHucheloup', 'Enjolras', weight=1)
+    return G