Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > e5ddaa4c8aef3b801d60a051db101461 > files > 1050

python-networkx-1.8.1-3.mga4.noarch.rpm



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>networkx.algorithms.bipartite.cluster &mdash; NetworkX 1.8.1 documentation</title>
    
    <link rel="stylesheet" href="../../../../_static/networkx.css" type="text/css" />
    <link rel="stylesheet" href="../../../../_static/pygments.css" type="text/css" />
    
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../../../../',
        VERSION:     '1.8.1',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  false
      };
    </script>
    <script type="text/javascript" src="../../../../_static/jquery.js"></script>
    <script type="text/javascript" src="../../../../_static/underscore.js"></script>
    <script type="text/javascript" src="../../../../_static/doctools.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within NetworkX 1.8.1 documentation"
          href="../../../../_static/opensearch.xml"/>
    <link rel="top" title="NetworkX 1.8.1 documentation" href="../../../../index.html" />
    <link rel="up" title="networkx" href="../../../networkx.html" /> 
  </head>
  <body>
<div style="color: black;background-color: white; font-size: 3.2em; text-align: left; padding: 15px 10px 10px 15px">
NetworkX
</div>

    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../../../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../../../../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="http://networkx.github.com/">NetworkX Home </a> |&nbsp;</li>
        <li><a href="http://networkx.github.com/documentation.html">Documentation </a>|&nbsp;</li>
        <li><a href="http://networkx.github.com/download.html">Download </a> |&nbsp;</li>
        <li><a href="http://github.com/networkx">Developer (Github)</a></li>



          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
          <li><a href="../../../networkx.html" accesskey="U">networkx</a> &raquo;</li> 
      </ul>
    </div>



      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../../../../search.html" method="get">
      <input type="text" name="q" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <h1>Source code for networkx.algorithms.bipartite.cluster</h1><div class="highlight"><pre>
<span class="c">#-*- coding: utf-8 -*-</span>
<span class="c">#    Copyright (C) 2011 by </span>
<span class="c">#    Jordi Torrents &lt;jtorrents@milnou.net&gt;</span>
<span class="c">#    Aric Hagberg &lt;hagberg@lanl.gov&gt;</span>
<span class="c">#    All rights reserved.</span>
<span class="c">#    BSD license.</span>
<span class="kn">import</span> <span class="nn">itertools</span>
<span class="kn">import</span> <span class="nn">networkx</span> <span class="kn">as</span> <span class="nn">nx</span>
<span class="n">__author__</span> <span class="o">=</span> <span class="s">&quot;&quot;&quot;</span><span class="se">\n</span><span class="s">&quot;&quot;&quot;</span><span class="o">.</span><span class="n">join</span><span class="p">([</span><span class="s">&#39;Jordi Torrents &lt;jtorrents@milnou.net&gt;&#39;</span><span class="p">,</span>
                            <span class="s">&#39;Aric Hagberg (hagberg@lanl.gov)&#39;</span><span class="p">])</span>
<span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span> <span class="s">&#39;clustering&#39;</span><span class="p">,</span>
            <span class="s">&#39;average_clustering&#39;</span><span class="p">,</span>
            <span class="s">&#39;latapy_clustering&#39;</span><span class="p">,</span>
            <span class="s">&#39;robins_alexander_clustering&#39;</span><span class="p">]</span>

<span class="c"># functions for computing clustering of pairs</span>
<span class="k">def</span> <span class="nf">cc_dot</span><span class="p">(</span><span class="n">nu</span><span class="p">,</span><span class="n">nv</span><span class="p">):</span>
    <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span> <span class="o">&amp;</span> <span class="n">nv</span><span class="p">))</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span> <span class="o">|</span> <span class="n">nv</span><span class="p">)</span>

<span class="k">def</span> <span class="nf">cc_max</span><span class="p">(</span><span class="n">nu</span><span class="p">,</span><span class="n">nv</span><span class="p">):</span>
    <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span> <span class="o">&amp;</span> <span class="n">nv</span><span class="p">))</span><span class="o">/</span><span class="nb">max</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">nv</span><span class="p">))</span>

<span class="k">def</span> <span class="nf">cc_min</span><span class="p">(</span><span class="n">nu</span><span class="p">,</span><span class="n">nv</span><span class="p">):</span>
    <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span> <span class="o">&amp;</span> <span class="n">nv</span><span class="p">))</span><span class="o">/</span><span class="nb">min</span><span class="p">(</span><span class="nb">len</span><span class="p">(</span><span class="n">nu</span><span class="p">),</span><span class="nb">len</span><span class="p">(</span><span class="n">nv</span><span class="p">))</span>
    
<span class="n">modes</span><span class="o">=</span><span class="p">{</span><span class="s">&#39;dot&#39;</span><span class="p">:</span><span class="n">cc_dot</span><span class="p">,</span>
       <span class="s">&#39;min&#39;</span><span class="p">:</span><span class="n">cc_min</span><span class="p">,</span>
       <span class="s">&#39;max&#39;</span><span class="p">:</span><span class="n">cc_max</span><span class="p">}</span>

<div class="viewcode-block" id="latapy_clustering"><a class="viewcode-back" href="../../../../reference/generated/networkx.algorithms.bipartite.cluster.latapy_clustering.html#networkx.algorithms.bipartite.cluster.latapy_clustering">[docs]</a><span class="k">def</span> <span class="nf">latapy_clustering</span><span class="p">(</span><span class="n">G</span><span class="p">,</span> <span class="n">nodes</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">&#39;dot&#39;</span><span class="p">):</span>
    <span class="sd">r&quot;&quot;&quot;Compute a bipartite clustering coefficient for nodes.</span>

<span class="sd">    The bipartie clustering coefficient is a measure of local density</span>
<span class="sd">    of connections defined as [1]_:</span>
<span class="sd">    </span>
<span class="sd">    .. math::</span>

<span class="sd">       c_u = \frac{\sum_{v \in N(N(v))} c_{uv} }{|N(N(u))|}</span>

<span class="sd">    where `N(N(u))` are the second order neighbors of `u` in `G` excluding `u`, </span>
<span class="sd">    and `c_{uv}` is the pairwise clustering coefficient between nodes </span>
<span class="sd">    `u` and `v`.</span>

<span class="sd">    The mode selects the function for `c_{uv}` which can be:</span>

<span class="sd">    `dot`: </span>

<span class="sd">    .. math::</span>

<span class="sd">       c_{uv}=\frac{|N(u)\cap N(v)|}{|N(u) \cup N(v)|}</span>

<span class="sd">    `min`: </span>

<span class="sd">    .. math::</span>

<span class="sd">       c_{uv}=\frac{|N(u)\cap N(v)|}{min(|N(u)|,|N(v)|)}</span>

<span class="sd">    `max`: </span>

<span class="sd">    .. math::</span>

<span class="sd">       c_{uv}=\frac{|N(u)\cap N(v)|}{max(|N(u)|,|N(v)|)}</span>


<span class="sd">    Parameters</span>
<span class="sd">    ----------</span>
<span class="sd">    G : graph</span>
<span class="sd">        A bipartite graph</span>

<span class="sd">    nodes : list or iterable (optional)</span>
<span class="sd">        Compute bipartite clustering for these nodes. The default </span>
<span class="sd">        is all nodes in G.</span>

<span class="sd">    mode : string</span>
<span class="sd">        The pariwise bipartite clustering method to be used in the computation.</span>
<span class="sd">        It must be &quot;dot&quot;, &quot;max&quot;, or &quot;min&quot;. </span>
<span class="sd">    </span>
<span class="sd">    Returns</span>
<span class="sd">    -------</span>
<span class="sd">    clustering : dictionary</span>
<span class="sd">        A dictionary keyed by node with the clustering coefficient value.</span>


<span class="sd">    Examples</span>
<span class="sd">    --------</span>
<span class="sd">    &gt;&gt;&gt; from networkx.algorithms import bipartite</span>
<span class="sd">    &gt;&gt;&gt; G = nx.path_graph(4) # path graphs are bipartite</span>
<span class="sd">    &gt;&gt;&gt; c = bipartite.clustering(G) </span>
<span class="sd">    &gt;&gt;&gt; c[0]</span>
<span class="sd">    0.5</span>
<span class="sd">    &gt;&gt;&gt; c = bipartite.clustering(G,mode=&#39;min&#39;) </span>
<span class="sd">    &gt;&gt;&gt; c[0]</span>
<span class="sd">    1.0</span>

<span class="sd">    See Also</span>
<span class="sd">    --------</span>
<span class="sd">    robins_alexander_clustering</span>
<span class="sd">    square_clustering</span>
<span class="sd">    average_clustering</span>
<span class="sd">    </span>
<span class="sd">    References</span>
<span class="sd">    ----------</span>
<span class="sd">    .. [1] Latapy, Matthieu, Clémence Magnien, and Nathalie Del Vecchio (2008).</span>
<span class="sd">       Basic notions for the analysis of large two-mode networks. </span>
<span class="sd">       Social Networks 30(1), 31--48.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">if</span> <span class="ow">not</span> <span class="n">nx</span><span class="o">.</span><span class="n">algorithms</span><span class="o">.</span><span class="n">bipartite</span><span class="o">.</span><span class="n">is_bipartite</span><span class="p">(</span><span class="n">G</span><span class="p">):</span>
        <span class="k">raise</span> <span class="n">nx</span><span class="o">.</span><span class="n">NetworkXError</span><span class="p">(</span><span class="s">&quot;Graph is not bipartite&quot;</span><span class="p">)</span>
    
    <span class="k">try</span><span class="p">:</span>
        <span class="n">cc_func</span> <span class="o">=</span> <span class="n">modes</span><span class="p">[</span><span class="n">mode</span><span class="p">]</span>
    <span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
        <span class="k">raise</span> <span class="n">nx</span><span class="o">.</span><span class="n">NetworkXError</span><span class="p">(</span>\
                <span class="s">&quot;Mode for bipartite clustering must be: dot, min or max&quot;</span><span class="p">)</span>

    <span class="k">if</span> <span class="n">nodes</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="n">nodes</span> <span class="o">=</span> <span class="n">G</span>
    <span class="n">ccs</span> <span class="o">=</span> <span class="p">{}</span>
    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">nodes</span><span class="p">:</span>
        <span class="n">cc</span> <span class="o">=</span> <span class="mf">0.0</span>
        <span class="n">nbrs2</span><span class="o">=</span><span class="nb">set</span><span class="p">([</span><span class="n">u</span> <span class="k">for</span> <span class="n">nbr</span> <span class="ow">in</span> <span class="n">G</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">G</span><span class="p">[</span><span class="n">nbr</span><span class="p">]])</span><span class="o">-</span><span class="nb">set</span><span class="p">([</span><span class="n">v</span><span class="p">])</span>
        <span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">nbrs2</span><span class="p">:</span>
            <span class="n">cc</span> <span class="o">+=</span> <span class="n">cc_func</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">u</span><span class="p">]),</span><span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">v</span><span class="p">]))</span>
        <span class="k">if</span> <span class="n">cc</span> <span class="o">&gt;</span> <span class="mf">0.0</span><span class="p">:</span> <span class="c"># len(nbrs2)&gt;0</span>
            <span class="n">cc</span> <span class="o">/=</span> <span class="nb">len</span><span class="p">(</span><span class="n">nbrs2</span><span class="p">)</span>
        <span class="n">ccs</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="o">=</span> <span class="n">cc</span>
    <span class="k">return</span> <span class="n">ccs</span>
</div>
<span class="n">clustering</span> <span class="o">=</span> <span class="n">latapy_clustering</span>

<div class="viewcode-block" id="average_clustering"><a class="viewcode-back" href="../../../../reference/generated/networkx.algorithms.bipartite.cluster.average_clustering.html#networkx.algorithms.bipartite.cluster.average_clustering">[docs]</a><span class="k">def</span> <span class="nf">average_clustering</span><span class="p">(</span><span class="n">G</span><span class="p">,</span> <span class="n">nodes</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">&#39;dot&#39;</span><span class="p">):</span>
    <span class="sd">r&quot;&quot;&quot;Compute the average bipartite clustering coefficient.</span>

<span class="sd">    A clustering coefficient for the whole graph is the average, </span>

<span class="sd">    .. math::</span>

<span class="sd">       C = \frac{1}{n}\sum_{v \in G} c_v,</span>
<span class="sd">       </span>
<span class="sd">    where `n` is the number of nodes in `G`.</span>

<span class="sd">    Similar measures for the two bipartite sets can be defined [1]_</span>
<span class="sd">    </span>
<span class="sd">    .. math::</span>

<span class="sd">       C_X = \frac{1}{|X|}\sum_{v \in X} c_v,</span>
<span class="sd">       </span>
<span class="sd">    where `X` is a bipartite set of `G`.</span>

<span class="sd">    Parameters</span>
<span class="sd">    ----------</span>
<span class="sd">    G : graph</span>
<span class="sd">        a bipartite graph</span>

<span class="sd">    nodes : list or iterable, optional</span>
<span class="sd">        A container of nodes to use in computing the average.  </span>
<span class="sd">        The nodes should be either the entire graph (the default) or one of the </span>
<span class="sd">        bipartite sets.</span>

<span class="sd">    mode : string</span>
<span class="sd">        The pariwise bipartite clustering method. </span>
<span class="sd">        It must be &quot;dot&quot;, &quot;max&quot;, or &quot;min&quot; </span>
<span class="sd">    </span>
<span class="sd">    Returns</span>
<span class="sd">    -------</span>
<span class="sd">    clustering : float</span>
<span class="sd">       The average bipartite clustering for the given set of nodes or the </span>
<span class="sd">       entire graph if no nodes are specified.</span>

<span class="sd">    Examples</span>
<span class="sd">    --------</span>
<span class="sd">    &gt;&gt;&gt; from networkx.algorithms import bipartite</span>
<span class="sd">    &gt;&gt;&gt; G=nx.star_graph(3) # star graphs are bipartite</span>
<span class="sd">    &gt;&gt;&gt; bipartite.average_clustering(G) </span>
<span class="sd">    0.75</span>
<span class="sd">    &gt;&gt;&gt; X,Y=bipartite.sets(G)</span>
<span class="sd">    &gt;&gt;&gt; bipartite.average_clustering(G,X) </span>
<span class="sd">    0.0</span>
<span class="sd">    &gt;&gt;&gt; bipartite.average_clustering(G,Y) </span>
<span class="sd">    1.0</span>

<span class="sd">    See Also</span>
<span class="sd">    --------</span>
<span class="sd">    clustering</span>
<span class="sd">   </span>
<span class="sd">    Notes    </span>
<span class="sd">    -----</span>
<span class="sd">    The container of nodes passed to this function must contain all of the nodes</span>
<span class="sd">    in one of the bipartite sets (&quot;top&quot; or &quot;bottom&quot;) in order to compute </span>
<span class="sd">    the correct average bipartite clustering coefficients.</span>

<span class="sd">    References</span>
<span class="sd">    ----------</span>
<span class="sd">    .. [1] Latapy, Matthieu, Clémence Magnien, and Nathalie Del Vecchio (2008).</span>
<span class="sd">        Basic notions for the analysis of large two-mode networks. </span>
<span class="sd">        Social Networks 30(1), 31--48.</span>
<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">if</span> <span class="n">nodes</span> <span class="ow">is</span> <span class="bp">None</span><span class="p">:</span>
        <span class="n">nodes</span><span class="o">=</span><span class="n">G</span>
    <span class="n">ccs</span><span class="o">=</span><span class="n">latapy_clustering</span><span class="p">(</span><span class="n">G</span><span class="p">,</span> <span class="n">nodes</span><span class="o">=</span><span class="n">nodes</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="n">mode</span><span class="p">)</span>
    <span class="k">return</span> <span class="nb">float</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">ccs</span><span class="p">[</span><span class="n">v</span><span class="p">]</span> <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">nodes</span><span class="p">))</span><span class="o">/</span><span class="nb">len</span><span class="p">(</span><span class="n">nodes</span><span class="p">)</span>
</div>
<div class="viewcode-block" id="robins_alexander_clustering"><a class="viewcode-back" href="../../../../reference/generated/networkx.algorithms.bipartite.cluster.robins_alexander_clustering.html#networkx.algorithms.bipartite.cluster.robins_alexander_clustering">[docs]</a><span class="k">def</span> <span class="nf">robins_alexander_clustering</span><span class="p">(</span><span class="n">G</span><span class="p">):</span>
    <span class="sd">r&quot;&quot;&quot;Compute the bipartite clustering of G.</span>

<span class="sd">    Robins and Alexander [1]_ defined bipartite clustering coefficient as</span>
<span class="sd">    four times the number of four cycles `C_4` divided by the number of</span>
<span class="sd">    three paths `L_3` in a bipartite graph:</span>

<span class="sd">    .. math::</span>

<span class="sd">       CC_4 = \frac{4 * C_4}{L_3}</span>
<span class="sd">       </span>
<span class="sd">    Parameters</span>
<span class="sd">    ----------</span>
<span class="sd">    G : graph</span>
<span class="sd">        a bipartite graph</span>

<span class="sd">    Returns</span>
<span class="sd">    -------</span>
<span class="sd">    clustering : float</span>
<span class="sd">       The Robins and Alexander bipartite clustering for the input graph.</span>

<span class="sd">    Examples</span>
<span class="sd">    --------</span>
<span class="sd">    &gt;&gt;&gt; from networkx.algorithms import bipartite</span>
<span class="sd">    &gt;&gt;&gt; G = nx.davis_southern_women_graph()</span>
<span class="sd">    &gt;&gt;&gt; print(round(bipartite.robins_alexander_clustering(G), 3))</span>
<span class="sd">    0.468</span>

<span class="sd">    See Also</span>
<span class="sd">    --------</span>
<span class="sd">    latapy_clustering</span>
<span class="sd">    square_clustering</span>
<span class="sd">   </span>
<span class="sd">    References</span>
<span class="sd">    ----------</span>
<span class="sd">    .. [1] Robins, G. and M. Alexander (2004). Small worlds among interlocking </span>
<span class="sd">           directors: Network structure and distance in bipartite graphs. </span>
<span class="sd">           Computational &amp; Mathematical Organization Theory 10(1), 69–94.</span>

<span class="sd">    &quot;&quot;&quot;</span>
    <span class="k">if</span> <span class="n">G</span><span class="o">.</span><span class="n">order</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">4</span> <span class="ow">or</span> <span class="n">G</span><span class="o">.</span><span class="n">size</span><span class="p">()</span> <span class="o">&lt;</span> <span class="mi">3</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">0</span>
    <span class="n">L_3</span> <span class="o">=</span> <span class="n">_threepaths</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
    <span class="k">if</span> <span class="n">L_3</span> <span class="o">==</span> <span class="mi">0</span><span class="p">:</span>
        <span class="k">return</span> <span class="mi">0</span>
    <span class="n">C_4</span> <span class="o">=</span> <span class="n">_four_cycles</span><span class="p">(</span><span class="n">G</span><span class="p">)</span>
    <span class="k">return</span> <span class="p">(</span><span class="mf">4.</span> <span class="o">*</span> <span class="n">C_4</span><span class="p">)</span> <span class="o">/</span> <span class="n">L_3</span>
</div>
<span class="k">def</span> <span class="nf">_four_cycles</span><span class="p">(</span><span class="n">G</span><span class="p">):</span>
    <span class="n">cycles</span> <span class="o">=</span> <span class="mi">0</span>
    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">G</span><span class="p">:</span>
        <span class="k">for</span> <span class="n">u</span><span class="p">,</span> <span class="n">w</span> <span class="ow">in</span> <span class="n">itertools</span><span class="o">.</span><span class="n">combinations</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">v</span><span class="p">],</span> <span class="mi">2</span><span class="p">):</span>
            <span class="n">cycles</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">((</span><span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">u</span><span class="p">])</span> <span class="o">&amp;</span> <span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">w</span><span class="p">]))</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">v</span><span class="p">]))</span>
    <span class="k">return</span> <span class="n">cycles</span> <span class="o">/</span> <span class="mi">4</span>

<span class="k">def</span> <span class="nf">_threepaths</span><span class="p">(</span><span class="n">G</span><span class="p">):</span>
    <span class="n">paths</span> <span class="o">=</span> <span class="mi">0</span>
    <span class="k">for</span> <span class="n">v</span> <span class="ow">in</span> <span class="n">G</span><span class="p">:</span>
        <span class="k">for</span> <span class="n">u</span> <span class="ow">in</span> <span class="n">G</span><span class="p">[</span><span class="n">v</span><span class="p">]:</span>
            <span class="k">for</span> <span class="n">w</span> <span class="ow">in</span> <span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">u</span><span class="p">])</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">v</span><span class="p">]):</span>
                <span class="n">paths</span> <span class="o">+=</span> <span class="nb">len</span><span class="p">(</span><span class="nb">set</span><span class="p">(</span><span class="n">G</span><span class="p">[</span><span class="n">w</span><span class="p">])</span> <span class="o">-</span> <span class="nb">set</span><span class="p">([</span><span class="n">v</span><span class="p">,</span> <span class="n">u</span><span class="p">]))</span>
    <span class="c"># Divide by two because we count each three path twice</span>
    <span class="c"># one for each possible starting point</span>
    <span class="k">return</span> <span class="n">paths</span> <span class="o">/</span> <span class="mi">2</span>
</pre></div>

          </div>
        </div>
      </div>
      <div class="clearer"></div>
    </div>
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../../../../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../../../../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li><a href="http://networkx.github.com/">NetworkX Home </a> |&nbsp;</li>
        <li><a href="http://networkx.github.com/documentation.html">Documentation </a>|&nbsp;</li>
        <li><a href="http://networkx.github.com/download.html">Download </a> |&nbsp;</li>
        <li><a href="http://github.com/networkx">Developer (Github)</a></li>



          <li><a href="../../../index.html" >Module code</a> &raquo;</li>
          <li><a href="../../../networkx.html" >networkx</a> &raquo;</li> 
      </ul>
    </div>
    <div class="footer">
        &copy; Copyright 2013, NetworkX Developers.
      Last updated on Oct 23, 2013.
      Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
    </div>
  </body>
</html>