collaboration_weighted_projected_graph#
- collaboration_weighted_projected_graph(B, nodes)[source]#
Newman’s weighted projection of B onto one of its node sets.
The collaboration weighted projection is the projection of the bipartite network B onto the specified nodes with weights assigned using Newman’s collaboration model [1]:
\[w_{u, v} = \sum_k \frac{\delta_{u}^{k} \delta_{v}^{k}}{d_k - 1}\]where
u
andv
are nodes from the bottom bipartite node set, andk
is a node of the top node set. The valued_k
is the degree of nodek
in the bipartite network anddelta_{u}^{k}
is 1 if nodeu
is linked to nodek
in the original bipartite graph or 0 otherwise.The nodes retain their attributes and are connected in the resulting graph if have an edge to a common node in the original bipartite graph.
- Parameters:
- BNetworkX graph
The input graph should be bipartite.
- nodeslist or iterable
Nodes to project onto (the “bottom” nodes).
- Returns:
- GraphNetworkX graph
A graph that is the projection onto the given nodes.
See also
is_bipartite
is_bipartite_node_set
sets
weighted_projected_graph
overlap_weighted_projected_graph
generic_weighted_projected_graph
projected_graph
Notes
No attempt is made to verify that the input graph B is bipartite. The graph and node properties are (shallow) copied to the projected graph.
See
bipartite documentation
for further details on how bipartite graphs are handled in NetworkX.References
[1]Scientific collaboration networks: II. Shortest paths, weighted networks, and centrality, M. E. J. Newman, Phys. Rev. E 64, 016132 (2001).
Examples
>>> from networkx.algorithms import bipartite >>> B = nx.path_graph(5) >>> B.add_edge(1, 5) >>> G = bipartite.collaboration_weighted_projected_graph(B, [0, 2, 4, 5]) >>> list(G) [0, 2, 4, 5] >>> for edge in sorted(G.edges(data=True)): ... print(edge) (0, 2, {'weight': 0.5}) (0, 5, {'weight': 0.5}) (2, 4, {'weight': 1.0}) (2, 5, {'weight': 0.5})