networkx.algorithms.bipartite.projection.overlap_weighted_projected_graph¶

overlap_weighted_projected_graph
(B, nodes, jaccard=True)[source]¶ Overlap weighted projection of B onto one of its node sets.
The overlap weighted projection is the projection of the bipartite network B onto the specified nodes with weights representing the Jaccard index between the neighborhoods of the two nodes in the original bipartite network 1:
\[w_{v, u} = \frac{N(u) \cap N(v)}{N(u) \cup N(v)}\]or if the parameter ‘jaccard’ is False, the fraction of common neighbors by minimum of both nodes degree in the original bipartite graph 1:
\[w_{v, u} = \frac{N(u) \cap N(v)}{min(N(u), N(v))}\]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
B (NetworkX graph) – The input graph should be bipartite.
nodes (list or iterable) – Nodes to project onto (the “bottom” nodes).
jaccard (Bool (default=True))
 Returns
Graph – A graph that is the projection onto the given nodes.
 Return type
NetworkX graph
Examples
>>> from networkx.algorithms import bipartite >>> B = nx.path_graph(5) >>> nodes = [0, 2, 4] >>> G = bipartite.overlap_weighted_projected_graph(B, nodes) >>> list(G) [0, 2, 4] >>> list(G.edges(data=True)) [(0, 2, {'weight': 0.5}), (2, 4, {'weight': 0.5})] >>> G = bipartite.overlap_weighted_projected_graph(B, nodes, jaccard=False) >>> list(G.edges(data=True)) [(0, 2, {'weight': 1.0}), (2, 4, {'weight': 1.0})]
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.See also
is_bipartite()
,is_bipartite_node_set()
,sets()
,weighted_projected_graph()
,collaboration_weighted_projected_graph()
,generic_weighted_projected_graph()
,projected_graph()
References