## 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)
 `12345678910111213141516171819202122232425262728293031323334353637` ``````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()])) ``````