File: smetric.py

package info (click to toggle)
python-networkx 1.7~rc1-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 4,128 kB
  • sloc: python: 44,557; makefile: 135
file content (37 lines) | stat: -rw-r--r-- 1,206 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import networkx as nx
#from networkx.generators.smax import li_smax_graph

def s_metric(G, normalized=True):
    """Return the s-metric of graph.

    The s-metric is defined as the sum of the products deg(u)*deg(v)
    for every edge (u,v) in G. If norm is provided construct the
    s-max graph and compute it's s_metric, and return the normalized
    s value

    Parameters
    ----------
    G    : graph
           The graph used to compute the s-metric.
    normalized : bool (optional)
           Normalize the value.

    Returns
    -------       
    s : float
        The s-metric of the graph.

    References
    ----------
    .. [1] Lun Li, David Alderson, John C. Doyle, and Walter Willinger,
           Towards a Theory of Scale-Free Graphs:
           Definition, Properties, and  Implications (Extended Version), 2005.
           http://arxiv.org/abs/cond-mat/0501169
    """
    if normalized:
        raise nx.NetworkXError("Normalization not implemented")
#        Gmax = li_smax_graph(list(G.degree().values()))
#        return s_metric(G,normalized=False)/s_metric(Gmax,normalized=False)
#    else:    
    return float(sum([G.degree(u)*G.degree(v) for (u,v) in G.edges_iter()]))