# square_clustering#

square_clustering(G, nodes=None)[source]#

Compute the squares clustering coefficient for nodes.

For each node return the fraction of possible squares that exist at the node 

$C_4(v) = \frac{ \sum_{u=1}^{k_v} \sum_{w=u+1}^{k_v} q_v(u,w) }{ \sum_{u=1}^{k_v} \sum_{w=u+1}^{k_v} [a_v(u,w) + q_v(u,w)]},$

where $$q_v(u,w)$$ are the number of common neighbors of $$u$$ and $$w$$ other than $$v$$ (ie squares), and $$a_v(u,w) = (k_u - (1+q_v(u,w)+\theta_{uv})) + (k_w - (1+q_v(u,w)+\theta_{uw}))$$, where $$\theta_{uw} = 1$$ if $$u$$ and $$w$$ are connected and 0 otherwise. 

Parameters:
Ggraph
nodescontainer of nodes, optional (default=all nodes in G)

Compute clustering for nodes in this container.

Returns:
c4dictionary

A dictionary keyed by node with the square clustering coefficient value.

Notes

While $$C_3(v)$$ (triangle clustering) gives the probability that two neighbors of node v are connected with each other, $$C_4(v)$$ is the probability that two neighbors of node v share a common neighbor different from v. This algorithm can be applied to both bipartite and unipartite networks.

References



Pedro G. Lind, Marta C. González, and Hans J. Herrmann. 2005 Cycles and clustering in bipartite networks. Physical Review E (72) 056127.



Zhang, Peng et al. Clustering Coefficient and Community Structure of Bipartite Networks. Physica A: Statistical Mechanics and its Applications 387.27 (2008): 6869–6875. https://arxiv.org/abs/0710.0117v1

Examples

>>> G = nx.complete_graph(5)
>>> print(nx.square_clustering(G, 0))
1.0
>>> print(nx.square_clustering(G))
{0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0}