ó
|£*^c           @   sg  d  Z  d Z d d l m Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 yÁ d d l m Z m Z m Z m Z m Z m Z m Z m Z m Z m Z d d	 l m Z m Z d d
 l m Z d d l m Z m Z d d l m Z m  Z  d d l! m" Z" m# Z# d d d g Z$ Wn e% k
 r2g  Z$ n Xy  d d l& m' Z' m( Z( m) Z) Wn; e% k
 r�e$ r‘e e d d ƒZ' e Z) d „  Z( q‘n Xe
 d ƒ Z* d e+ f d „  ƒ  YZ, d e+ f d „  ƒ  YZ- d e+ f d „  ƒ  YZ. d „  Z/ d „  Z0 d „  Z1 d „  Z2 e d  ƒ d! e3 d" d# d$ „ ƒ Z4 e d  ƒ d! e3 d" d# d% „ ƒ Z5 d! e3 d" d# d& „ Z6 d' „  Z7 d S((   sB   
Algebraic connectivity and Fiedler vectors of undirected graphs.
s&   ysitu <ysitu@users.noreply.github.com>iÿÿÿÿ(   t   partialN(   t   not_implemented_for(   t   reverse_cuthill_mckee_ordering(   t   compile(
   t   arrayt   asmatrixt   asarrayt   dott   matrixt   ndarrayt   onest   reshapet   sqrtt   zeros(   t   normt   qr(   t   normal(   t   eight   inv(   t
   csc_matrixt   spdiags(   t   eigsht   lobpcgt   algebraic_connectivityt   fiedler_vectort   spectral_ordering(   t   dasumt   daxpyt   ddott   ordi   c         C   s   | | |  7} | S(   N(    (   t   xt   yt   a(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR   (   s    s   ^tracemin(?:_(.*))?$t
   _PCGSolverc           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s.   Preconditioned conjugate gradient method.
    c         C   s   | |  _  | p d „  |  _ d  S(   Nc         S   s
   |  j  ƒ  S(   N(   t   copy(   R   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   <lambda>5   s    (   t   _At   _M(   t   selft   At   M(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   __init__3   s    	c         C   su   t  | ƒ } t | j d d ƒ} xM t | j d ƒ D]8 } |  j | d  d  … | f | ƒ | d  d  … | f <q5 W| S(   Nt   ordert   Fi   (   R   R	   t   shapet   ranget   _solve(   R&   t   Bt   tolt   Xt   j(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   solve7   s
    6c         C   s  |  j  } |  j } | t | ƒ 9} t | j ƒ } | j ƒ  } | | ƒ } t | | ƒ } | j ƒ  }	 x« t r| |	 ƒ }
 | t |	 |
 ƒ } t |	 | d | ƒ} t |
 | d | ƒ} t | ƒ | k  rÍ | S| | ƒ } t | | ƒ } | | | } } t |	 | d | ƒ}	 qg Wd  S(   NR    (	   R$   R%   R   R   R,   R"   R   t   TrueR   (   R&   t   bR0   R'   R(   R   t   rt   zt   rzt   pt   Apt   alphat   beta(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR.   >   s&    			(   t   __name__t
   __module__t   __doc__R)   R3   R.   (    (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR!   /   s   		t   _CholeskySolverc           B   sT   e  Z d  Z d „  Z d „  Z y d d l m Z e Z Wn e k
 rQ d Z n XRS(   s   Cholesky factorization.
    c         C   s1   |  j  s t j d ƒ ‚ n  |  j  | ƒ |  _ d  S(   Ns   Cholesky solver unavailable.(   t	   _choleskyt   nxt   NetworkXErrort   _chol(   R&   R'   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR)   Z   s    	c         C   s   |  j  | ƒ S(   N(   RD   (   R&   R/   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR3   _   s    iÿÿÿÿ(   t   choleskyN(
   R=   R>   R?   R)   R3   t   scikits.sparse.cholmodRE   RA   t   ImportErrort   None(    (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR@   V   s   		
t	   _LUSolverc        
   B   sz   e  Z d  Z d „  Z d „  Z y@ d d l m Z e e d d d d d	 i e d
 6e d 6ƒZ	 Wn e
 k
 rw d Z	 n XRS(   s   LU factorization.
    c         C   s1   |  j  s t j d ƒ ‚ n  |  j  | ƒ |  _ d  S(   Ns   LU solver unavailable.(   t   _spluRB   RC   t   _LU(   R&   R'   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR)   m   s    	c         C   su   t  | ƒ } t | j d d ƒ} xM t | j d ƒ D]8 } |  j j | d  d  … | f ƒ | d  d  … | f <q5 W| S(   NR*   R+   i   (   R   R	   R,   R-   RK   R3   (   R&   R/   R1   R2   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR3   r   s
    6iÿÿÿÿ(   t   splut
   permc_spect   MMD_AT_PLUS_At   diag_pivot_threshg        t   optionst   Equilt   SymmetricModeN(   R=   R>   R?   R)   R3   t   scipy.sparse.linalgRL   R    R4   RJ   RG   RH   (    (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyRI   i   s   		c            sá   ˆ  j  ƒ  r] t j ƒ  } | j ˆ  ƒ | j ‡ f d †  ˆ  j d t ƒ Dƒ d ˆ ƒ| ‰  n  ˆ  j ƒ  sŽ ‡ f d †  ˆ  j d t ƒ Dƒ } n ‡  ‡ f d †  ˆ  j ƒ  Dƒ } t j ƒ  } | j ˆ  ƒ | j d „  | Dƒ ƒ | S(   s:   Compute edge weights and eliminate zero-weight edges.
    c         3   s?   |  ]5 \ } } } | | k r | | | j  ˆ  d  ƒ f Vq d S(   g      ð?N(   t   get(   t   .0t   ut   vt   e(   t   weight(    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>‡   s   t   dataRY   c         3   sE   |  ]; \ } } } | | k r | | t  | j ˆ  d  ƒ ƒ f Vq d S(   g      ð?N(   t   absRT   (   RU   RV   RW   RX   (   RY   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>Œ   s   c         3   sT   |  ]J \ } } | | k r | | t  ‡ f d  †  ˆ  | | j ƒ  Dƒ ƒ f Vq d S(   c         3   s'   |  ] } t  | j ˆ  d  ƒ ƒ Vq d S(   g      ð?N(   R[   RT   (   RU   RX   (   RY   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>�   s    N(   t   sumt   values(   RU   RV   RW   (   t   GRY   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>�   s   c         s   s3   |  ]) \ } } } | d  k r | | | f Vq d S(   i    N(    (   RU   RV   RW   RX   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>“   s    (	   t   is_directedRB   t
   MultiGrapht   add_nodes_fromt   add_weighted_edges_fromt
   edges_iterR4   t   is_multigrapht   Graph(   R^   RY   t   Ht   edges(    (   R^   RY   sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   _preprocess_graph�   s     	c         C   s•   |  j  | ƒ }  t |  ƒ } t | ƒ } t t | t | ƒ ƒ ƒ } t | d t ƒ} x( t | ƒ D] \ } } | | | | <qa W| | d d 8} | S(   sJ   Estimate the Fiedler vector using the reverse Cuthill-McKee ordering.
    t   dtypei   g       @(	   t   subgraphR   t   lent   dictt   zipR-   R	   t   floatt	   enumerate(   R^   t   nodelistR*   t   nt   indexR   t   iRV   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   _rcm_estimate—   s    c            sÓ  ˆ j  d ‰ ˆ ro t ˆ j ƒ  ƒ ‰ t d ˆ d g ˆ ˆ d d ƒ‰  ˆ  ˆ ˆ  ‰ ˆ d t ˆ d ƒ 9‰ n  ˆ s‡ ‡ f d †  } n ‡ f d †  } | d k r« d } n  | d k rö ‡ ‡ ‡ ‡ f d	 †  ‰ t ‡ ‡ f d
 †  ‡  f d †  ƒ } n” | d k s| d k r{t ˆ d t d t	 ƒ} | j
 d | j
 d  j ƒ  } t d ƒ | | | f <| d k rlt n t | ƒ } n t j d ƒ ‚ t ˆ ƒ j d d ƒ j ƒ  j ƒ  }	 | ˆ ƒ t t ˆ j  d d ƒƒ }
 xít	 rÂt ˆ ƒ d ‰ ˆ ˆ |
 d d … d d … f <ˆ j |
 } t | d t	 ƒ\ } } ˆ | 9‰ t |
 t | ƒ d d … d f | d ˆ d d … d f ƒ |	 } | | k  r‘Pn  | d k rs|
 | 9}
 |
 |
 j ˆ ˆ j j 8}
 | |
 ƒ ˆ j ƒ  j t ƒ ‰  ˆ  d t ˆ ƒ t |
 ƒ j d d ƒ 7‰  ˆ  t ˆ ƒ t ˆ |
 j ˆ ƒ j d d ƒ 7‰  d ˆ  ˆ  | |	 k  <d ˆ  ‰  ˆ | j |
 d ƒ 8‰ qÖ| j ˆ ƒ |
 d d … d d … f <| |
 ƒ t |
 j ˆ ƒ |
 j j ‰ qÖW| t ˆ ƒ f S(   sJ   Compute the Fiedler vector of L using the TraceMIN-Fiedler algorithm.
    i    g      ð?t   formatt   csri   c            sd   t  |  ƒ }  xQ t |  j d ƒ D]< } |  d d … | f c |  d d … | f j ƒ  ˆ  8<q  Wd S(   s5   Make X orthogonal to the nullspace of L.
            i   N(   R   R-   R,   R\   (   R1   R2   (   Rq   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   project³   s    c            sg   t  |  ƒ }  xT t |  j d ƒ D]? } |  d d … | f c t |  d d … | f ˆ  ƒ ˆ  8<q  Wd S(   s5   Make X orthogonal to the nullspace of L.
            i   N(   R   R-   R,   R   (   R1   R2   (   RX   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyRw   º   s    t   pcgc            sk   |  t  |  ˆ  ˆ  j ƒ d d  d  … f 8}  ˆ sH |  |  j ƒ  ˆ 8}  n t ˆ |  d t |  ˆ ƒ ƒ}  |  S(   Ni    R    (   R   t   TR\   R   R   (   R   (   R1   RX   Rq   t
   normalized(    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   PÆ   s
    +c            s   ˆ ˆ  ˆ |  ƒ ƒ S(   N(    (   R   (   t   LR{   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR#   Í   s    c            s   ˆ  |  S(   N(    (   R   (   t   D(    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR#   Í   s    t   cholt   luRi   R"   i   iÿÿÿÿt   infs   unknown linear system solver.t   axisR*   R+   Nt   overwrite_ag       @gš™™™™™¹?(   R,   R   t   diagonalR   R   RH   R!   R   Rn   R4   t   indptrt   argmaxR@   RI   RB   RC   R[   R\   t   flattent   maxR   R	   R   Ry   R   R   t   astypeR   R3   R   (   R|   R1   Rz   R0   t   methodRw   t   solverR'   Rs   t   Lnormt   WRf   t   sigmat   Yt   res(    (   R}   R|   R{   R1   RX   Rq   Rz   sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   _tracemin_fiedler¥   s\    "	'!$
	 
F

*1
%
!c            sw   t  j ˆ  ƒ } | r6 | j d ƒ ‰  ‡  f d †  } n= ˆ  d k sN ˆ  d k r` ‡  f d †  } n t j d ˆ  ƒ ‚ | S(   sB   Return a function that solves the Fiedler eigenvalue problem.
    i   c            s�   ˆ  d k r d n t  d |  j d d ƒ } t t d | |  j d f ƒ ƒ j } t |  | | | ˆ  ƒ \ } } | d | d  d  … d f f S(   NRx   i   i   i    i   t   size(   t   minR,   R   R   Ry   R�   (   R|   R   Rz   R0   t   qR1   R�   (   R‰   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   find_fiedler  s    ,%t   lanczosR   c   
         s{  t  |  d t ƒ}  |  j d } | rd t d t |  j ƒ  ƒ d g | | d d ƒ} | |  | }  n  ˆ  d k s| | d k  rÁ t |  d d	 d
 d | d t ƒ\ } } | d | d  d  … d f f St t	 | ƒ j
 ƒ } t d |  j ƒ  d g | | ƒ } t | ƒ }	 | r|	 | j ƒ  :}	 n  t |  | d | d t	 |	 ƒ j
 d | d | d t ƒ\ } } | d | d  d  … d f f Sd  S(   NRi   i    g      ð?Ru   t   cscR•   i
   i   t   whicht   SMR0   t   return_eigenvectorsi   R(   RŽ   t   maxitert   largest(   R   Rn   R,   R   R   Rƒ   R   R4   R   R   Ry   R
   R   t   False(
   R|   R   Rz   R0   Rq   R}   R�   R1   R(   RŽ   (   R‰   (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR”     s"    ."'s   unknown method '%s'.(   t   _tracemin_methodt   matcht   groupRB   RC   (   R‰   Rž   R”   (    (   R‰   sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   _get_fiedler_func	  s    t   directedRY   g:Œ0âŽyE>t   traceminc         C   sÂ   t  |  ƒ d k  r$ t j d ƒ ‚ n  t |  | ƒ }  t j |  ƒ sF d St j |  ƒ } | j d d k r~ | sz d | d Sd St | ƒ } | d k rœ d n t	 |  |  ƒ } | | | | | ƒ d S(	   s§  Return the algebraic connectivity of an undirected graph.

    The algebraic connectivity of a connected undirected graph is the second
    smallest eigenvalue of its Laplacian matrix.

    Parameters
    ----------
    G : NetworkX graph
        An undirected graph.

    weight : object, optional
        The data key used to determine the weight of each edge. If None, then
        each edge has unit weight. Default value: None.

    normalized : bool, optional
        Whether the normalized Laplacian matrix is used. Default value: False.

    tol : float, optional
        Tolerance of relative residual in eigenvalue computation. Default
        value: 1e-8.

    method : string, optional
        Method of eigenvalue computation. It should be one of 'tracemin'
        (TraceMIN), 'lanczos' (Lanczos iteration) and 'lobpcg' (LOBPCG).
        Default value: 'tracemin'.

        The TraceMIN algorithm uses a linear system solver. The following
        values allow specifying the solver to be used.

        =============== ========================================
        Value           Solver
        =============== ========================================
        'tracemin_pcg'  Preconditioned conjugate gradient method
        'tracemin_chol' Cholesky factorization
        'tracemin_lu'   LU factorization
        =============== ========================================

    Returns
    -------
    algebraic_connectivity : float
        Algebraic connectivity.

    Raises
    ------
    NetworkXNotImplemented
        If G is directed.

    NetworkXError
        If G has less than two nodes.

    Notes
    -----
    Edge weights are interpreted by their absolute values. For MultiGraph's,
    weights of parallel edges are summed. Zero-weighted edges are ignored.

    To use Cholesky factorization in the TraceMIN algorithm, the
    :samp:`scikits.sparse` package must be installed.

    See Also
    --------
    laplacian_matrix
    i   s   graph has less than two nodes.g        i    g       @R   (   i    i    N(
   Rk   RB   RC   Rh   t   is_connectedt   laplacian_matrixR,   R    RH   Rt   (   R^   RY   Rz   R0   R‰   R|   R”   R   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR   1  s    A!c         C   sÉ   t  |  ƒ d k  r$ t j d ƒ ‚ n  t |  | ƒ }  t j |  ƒ sT t j d ƒ ‚ n  t  |  ƒ d k rv t d d g ƒ St | ƒ } t j |  ƒ } | d k r£ d n t	 |  |  ƒ } | | | | | ƒ d S(	   sê  Return the Fiedler vector of a connected undirected graph.

    The Fiedler vector of a connected undirected graph is the eigenvector
    corresponding to the second smallest eigenvalue of the Laplacian matrix of
    of the graph.

    Parameters
    ----------
    G : NetworkX graph
        An undirected graph.

    weight : object, optional
        The data key used to determine the weight of each edge. If None, then
        each edge has unit weight. Default value: None.

    normalized : bool, optional
        Whether the normalized Laplacian matrix is used. Default value: False.

    tol : float, optional
        Tolerance of relative residual in eigenvalue computation. Default
        value: 1e-8.

    method : string, optional
        Method of eigenvalue computation. It should be one of 'tracemin'
        (TraceMIN), 'lanczos' (Lanczos iteration) and 'lobpcg' (LOBPCG).
        Default value: 'tracemin'.

        The TraceMIN algorithm uses a linear system solver. The following
        values allow specifying the solver to be used.

        =============== ========================================
        Value           Solver
        =============== ========================================
        'tracemin_pcg'  Preconditioned conjugate gradient method
        'tracemin_chol' Cholesky factorization
        'tracemin_lu'   LU factorization
        =============== ========================================

    Returns
    -------
    fiedler_vector : NumPy array of floats.
        Fiedler vector.

    Raises
    ------
    NetworkXNotImplemented
        If G is directed.

    NetworkXError
        If G has less than two nodes or is not connected.

    Notes
    -----
    Edge weights are interpreted by their absolute values. For MultiGraph's,
    weights of parallel edges are summed. Zero-weighted edges are ignored.

    To use Cholesky factorization in the TraceMIN algorithm, the
    :samp:`scikits.sparse` package must be installed.

    See Also
    --------
    laplacian_matrix
    i   s   graph has less than two nodes.s   graph is not connected.g      ð?g      ð¿R   i   N(
   Rk   RB   RC   Rh   R£   R   R    R¤   RH   Rt   (   R^   RY   Rz   R0   R‰   R”   R|   R   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR   �  s    B!c         C   s  t  |  ƒ d k r$ t j d ƒ ‚ n  t |  | ƒ }  t | ƒ } g  } xº t j |  ƒ D]© } t  | ƒ } | d k rñ t j |  | ƒ }	 | d k r— d n t |  | ƒ }
 | |	 |
 | | ƒ d } | j	 d „  t
 t | t | ƒ | ƒ ƒ Dƒ ƒ qU | j	 | ƒ qU W| S(   s»  Compute the spectral_ordering of a graph.

    The spectral ordering of a graph is an ordering of its nodes where nodes
    in the same weakly connected components appear contiguous and ordered by
    their corresponding elements in the Fiedler vector of the component.

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

    weight : object, optional
        The data key used to determine the weight of each edge. If None, then
        each edge has unit weight. Default value: None.

    normalized : bool, optional
        Whether the normalized Laplacian matrix is used. Default value: False.

    tol : float, optional
        Tolerance of relative residual in eigenvalue computation. Default
        value: 1e-8.

    method : string, optional
        Method of eigenvalue computation. It should be one of 'tracemin'
        (TraceMIN), 'lanczos' (Lanczos iteration) and 'lobpcg' (LOBPCG).
        Default value: 'tracemin'.

        The TraceMIN algorithm uses a linear system solver. The following
        values allow specifying the solver to be used.

        =============== ========================================
        Value           Solver
        =============== ========================================
        'tracemin_pcg'  Preconditioned conjugate gradient method
        'tracemin_chol' Cholesky factorization
        'tracemin_lu'   LU factorization
        =============== ========================================

    Returns
    -------
    spectral_ordering : NumPy array of floats.
        Spectral ordering of nodes.

    Raises
    ------
    NetworkXError
        If G is empty.

    Notes
    -----
    Edge weights are interpreted by their absolute values. For MultiGraph's,
    weights of parallel edges are summed. Zero-weighted edges are ignored.

    To use Cholesky factorization in the TraceMIN algorithm, the
    :samp:`scikits.sparse` package must be installed.

    See Also
    --------
    laplacian_matrix
    i    s   graph is empty.i   R   i   c         s   s   |  ] \ } } } | Vq d  S(   N(    (   RU   R   t   cRV   (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pys	   <genexpr>  s    N(   Rk   RB   RC   Rh   R    t   connected_componentsR¤   RH   Rt   t   extendt   sortedRm   R-   (   R^   RY   Rz   R0   R‰   R”   R*   t	   componentR‘   R|   R   t   fiedler(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyR   Ò  s    >!,c         C   sP   d d l  m } y d d  l } d d  l } Wn t k
 rK | d ƒ ‚ n Xd  S(   Niÿÿÿÿ(   t   SkipTests   SciPy not available.(   t   noseR«   t   numpyt   scipy.sparseRG   (   t   moduleR«   R­   t   scipy(    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   setup_module%  s    (8   R?   t
   __author__t	   functoolsR    t   networkxRB   t   networkx.utilsR   R   t   reR   R­   R   R   R   R   R   R	   R
   R   R   R   t   numpy.linalgR   R   t   numpy.randomR   t   scipy.linalgR   R   R®   R   R   RS   R   R   t   __all__RG   t   scipy.linalg.blasR   R   R   R�   t   objectR!   R@   RI   Rh   Rt   R�   R    Rœ   R   R   R   R±   (    (    (    sy   /home/gitlab-runner/builds/8480fa44/0/bergerc/fluidmanager-web/art-framework/bin/networkx/linalg/algebraicconnectivity.pyt   <module>   sP   F
 '			d	(		N		O	R