3
dB                 @   sN   d Z ddlZdddddgZdd	dZdd
dZdddZdd ZdddZdS )z 
Eigenvalue spectrum of graphs.
    Nlaplacian_spectrumadjacency_spectrummodularity_spectrumnormalized_laplacian_spectrumbethe_hessian_spectrumweightc             C   s"   ddl m} |tj| |dj S )a  Returns eigenvalues of the Laplacian of G

    Parameters
    ----------
    G : graph
       A NetworkX graph

    weight : string or None, optional (default='weight')
       The edge data key used to compute each value in the matrix.
       If None, then each edge has weight 1.

    Returns
    -------
    evals : NumPy array
      Eigenvalues

    Notes
    -----
    For MultiGraph/MultiDiGraph, the edges weights are summed.
    See to_numpy_array for other options.

    See Also
    --------
    laplacian_matrix
    r   )eigvalsh)r   )scipy.linalgr   nxZlaplacian_matrixtodense)Gr   r    r   </tmp/pip-build-7vycvbft/networkx/networkx/linalg/spectrum.pyr      s    c             C   s"   ddl m} |tj| |dj S )a#  Return eigenvalues of the normalized Laplacian of G

    Parameters
    ----------
    G : graph
       A NetworkX graph

    weight : string or None, optional (default='weight')
       The edge data key used to compute each value in the matrix.
       If None, then each edge has weight 1.

    Returns
    -------
    evals : NumPy array
      Eigenvalues

    Notes
    -----
    For MultiGraph/MultiDiGraph, the edges weights are summed.
    See to_numpy_array for other options.

    See Also
    --------
    normalized_laplacian_matrix
    r   )r   )r   )r	   r   r
   Znormalized_laplacian_matrixr   )r   r   r   r   r   r   r   .   s    c             C   s"   ddl m} |tj| |dj S )a  Returns eigenvalues of the adjacency matrix of G.

    Parameters
    ----------
    G : graph
       A NetworkX graph

    weight : string or None, optional (default='weight')
       The edge data key used to compute each value in the matrix.
       If None, then each edge has weight 1.

    Returns
    -------
    evals : NumPy array
      Eigenvalues

    Notes
    -----
    For MultiGraph/MultiDiGraph, the edges weights are summed.
    See to_numpy_array for other options.

    See Also
    --------
    adjacency_matrix
    r   )eigvals)r   )r	   r   r
   Zadjacency_matrixr   )r   r   r   r   r   r   r   M   s    c             C   s4   ddl m} | j r"|tj| S |tj| S dS )a  Returns eigenvalues of the modularity matrix of G.

    Parameters
    ----------
    G : Graph
       A NetworkX Graph or DiGraph

    Returns
    -------
    evals : NumPy array
      Eigenvalues

    See Also
    --------
    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.
    r   )r   N)r	   r   Zis_directedr
   Zdirected_modularity_matrixZmodularity_matrix)r   r   r   r   r   r   l   s    c             C   s    ddl m} |tj| |j S )u  Returns eigenvalues of the Bethe Hessian matrix of G.

    Parameters
    ----------
    G : Graph
       A NetworkX Graph or DiGraph

    r : float
       Regularizer parameter

    Returns
    -------
    evals : NumPy array
      Eigenvalues

    See Also
    --------
    bethe_hessian_matrix

    References
    ----------
    .. [1] A. Saade, F. Krzakala and L. Zdeborová
       "Spectral clustering of graphs with the bethe hessian",
       Advances in Neural Information Processing Systems. 2014.
    r   )r   )r	   r   r
   Zbethe_hessian_matrixr   )r   rr   r   r   r   r      s    )r   )r   )r   )N)	__doc__Znetworkxr
   __all__r   r   r   r   r   r   r   r   r   <module>   s   


