Mercurial > repos > shellac > sam_consensus_v3
comparison env/lib/python3.9/site-packages/networkx/algorithms/approximation/clustering_coefficient.py @ 0:4f3585e2f14b draft default tip
"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author | shellac |
---|---|
date | Mon, 22 Mar 2021 18:12:50 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4f3585e2f14b |
---|---|
1 from networkx.utils import not_implemented_for | |
2 from networkx.utils import py_random_state | |
3 | |
4 __all__ = ["average_clustering"] | |
5 | |
6 | |
7 @py_random_state(2) | |
8 @not_implemented_for("directed") | |
9 def average_clustering(G, trials=1000, seed=None): | |
10 r"""Estimates the average clustering coefficient of G. | |
11 | |
12 The local clustering of each node in `G` is the fraction of triangles | |
13 that actually exist over all possible triangles in its neighborhood. | |
14 The average clustering coefficient of a graph `G` is the mean of | |
15 local clusterings. | |
16 | |
17 This function finds an approximate average clustering coefficient | |
18 for G by repeating `n` times (defined in `trials`) the following | |
19 experiment: choose a node at random, choose two of its neighbors | |
20 at random, and check if they are connected. The approximate | |
21 coefficient is the fraction of triangles found over the number | |
22 of trials [1]_. | |
23 | |
24 Parameters | |
25 ---------- | |
26 G : NetworkX graph | |
27 | |
28 trials : integer | |
29 Number of trials to perform (default 1000). | |
30 | |
31 seed : integer, random_state, or None (default) | |
32 Indicator of random number generation state. | |
33 See :ref:`Randomness<randomness>`. | |
34 | |
35 Returns | |
36 ------- | |
37 c : float | |
38 Approximated average clustering coefficient. | |
39 | |
40 References | |
41 ---------- | |
42 .. [1] Schank, Thomas, and Dorothea Wagner. Approximating clustering | |
43 coefficient and transitivity. Universität Karlsruhe, Fakultät für | |
44 Informatik, 2004. | |
45 http://www.emis.ams.org/journals/JGAA/accepted/2005/SchankWagner2005.9.2.pdf | |
46 | |
47 """ | |
48 n = len(G) | |
49 triangles = 0 | |
50 nodes = list(G) | |
51 for i in [int(seed.random() * n) for i in range(trials)]: | |
52 nbrs = list(G[nodes[i]]) | |
53 if len(nbrs) < 2: | |
54 continue | |
55 u, v = seed.sample(nbrs, 2) | |
56 if u in G[v]: | |
57 triangles += 1 | |
58 return triangles / float(trials) |