ó ŸĂŇYc@ s´dZddlmZddlZddlmZdjdddd gƒZd d gZ ed ƒed ƒddd„ƒƒZ edƒed ƒddd„ƒƒZ d„Z dS(sModularity matrix of graphs. i˙˙˙˙(tdivisionN(tnot_implemented_fors s%Aric Hagberg sPieter Swart (swart@lanl.gov)s Dan Schult (dschult@colgate.edu)s1Jean-Gabriel Young (Jean.gabriel.young@gmail.com)tmodularity_matrixtdirected_modularity_matrixtdirectedt multigraphcC s~|d krt|ƒ}ntj|d|d|ddƒ}|jddƒ}|jƒd}||jƒd|}||S( sŐReturn the modularity matrix of G. The modularity matrix is the matrix B = A - , where A is the adjacency matrix and is the average adjacency matrix, assuming that the graph is described by the configuration model. More specifically, the element B_ij of B is defined as A_ij - k_i k_j / 2 * m where k_i(in) is the degree of node i, and were m is the number of edges in the graph. When weight is set to a name of an attribute edge, Aij, k_i, k_j and m are computed using its value. Parameters ---------- G : Graph A NetworkX graph nodelist : list, optional The rows and columns are ordered according to the nodes in nodelist. If nodelist is None, then the ordering is produced by G.nodes(). weight : string or None, optional (default=None) The edge attribute that holds the numerical value used for the edge weight. If None then all edge weights are 1. Returns ------- B : Numpy matrix The modularity matrix of G. Examples -------- >>> import networkx as nx >>> k =[3, 2, 2, 1, 0] >>> G = nx.havel_hakimi_graph(k) >>> B = nx.modularity_matrix(G) See Also -------- to_numpy_matrix adjacency_matrix laplacian_matrix directed_modularity_matrix References ---------- .. [1] M. E. J. Newman, "Modularity and community structure in networks", Proc. Natl. Acad. Sci. USA, vol. 103, pp. 8577-8582, 2006. tnodelisttweighttformattcsrtaxisigŕ?iN(tNonetlisttnxtto_scipy_sparse_matrixtsumt transpose(tGRRtAtktmtX((sv/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/linalg/modularitymatrix.pyRs5  t undirectedcC s‚|dkrt|ƒ}ntj|d|d|ddƒ}|jddƒ}|jddƒ}|jƒ}|||}||S( sfReturn the directed modularity matrix of G. The modularity matrix is the matrix B = A - , where A is the adjacency matrix and is the expected adjacency matrix, assuming that the graph is described by the configuration model. More specifically, the element B_ij of B is defined as B_ij = A_ij - k_i(out) k_j(in) / m where k_i(in) is the in degree of node i, and k_j(out) is the out degree of node j, with m the number of edges in the graph. When weight is set to a name of an attribute edge, Aij, k_i, k_j and m are computed using its value. Parameters ---------- G : DiGraph A NetworkX DiGraph nodelist : list, optional The rows and columns are ordered according to the nodes in nodelist. If nodelist is None, then the ordering is produced by G.nodes(). weight : string or None, optional (default=None) The edge attribute that holds the numerical value used for the edge weight. If None then all edge weights are 1. Returns ------- B : Numpy matrix The modularity matrix of G. Examples -------- >>> import networkx as nx >>> G = nx.DiGraph() >>> G.add_edges_from(((1,2), (1,3), (3,1), (3,2), (3,5), (4,5), (4,6), ... (5,4), (5,6), (6,4))) >>> B = nx.directed_modularity_matrix(G) Notes ----- NetworkX defines the element A_ij of the adjacency matrix as 1 if there is a link going from node i to node j. Leicht and Newman use the opposite definition. This explains the different expression for B_ij. See Also -------- to_numpy_matrix adjacency_matrix laplacian_matrix modularity_matrix References ---------- .. [1] E. A. Leicht, M. E. J. Newman, "Community structure in directed networks", Phys. Rev Lett., vol. 100, no. 11, p. 118703, 2008. RRRR R iiN(R R R RR(RRRRtk_intk_outRR((sv/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/linalg/modularitymatrix.pyRSs>   cC sFddlm}yddl}ddl}Wn|dƒ‚nXdS(Ni˙˙˙˙(tSkipTestsNumPy not available(tnoseRtnumpytscipy(tmoduleRRR((sv/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/linalg/modularitymatrix.pyt setup_moduležs  (t__doc__t __future__RtnetworkxR tnetworkx.utilsRtjoint __author__t__all__R RRR(((sv/private/var/folders/w6/vb91730s7bb1k90y_rnhql1dhvdd44/T/pip-build-w4MwvS/networkx/networkx/linalg/modularitymatrix.pyts      >  I