
    fi5                         d dl mZ d dlZd dlZ ej        d          ZdZd Zd Z	d Z
d Zd	 Zd
 Z G d d          Z G d d          ZdS )    )sqrtNnumpy)tracemin_pcgtracemin_lulanczoslobpcgc                      t          j        d           t          j        dd          } t          j        t          j                  5  t          j        | d           ddd           dS # 1 swxY w Y   dS z.Test that "tracemin_chol" raises an exception.scipy      tracemin_cholmethodN)pytestimportorskipnxbarbell_graphraisesNetworkXErroralgebraic_connectivityGs    /var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/linalg/tests/test_algebraic_connectivity.py)test_algebraic_connectivity_tracemin_cholr      s    
   
AA	r'	(	( = =
!!O<<<<= = = = = = = = = = = = = = = = = =   A,,A03A0c                      t          j        d           t          j        dd          } t          j        t          j                  5  t          j        | d           ddd           dS # 1 swxY w Y   dS r
   )r   r   r   r   r   r   fiedler_vectorr   s    r   !test_fiedler_vector_tracemin_cholr      s    
   
AA	r'	(	( 5 5
!O44445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5r   c                      t          j        d           t          j        dd          } t          j        t          j                  5  t          j        | d           ddd           dS # 1 swxY w Y   dS r
   )r   r   r   r   r   r   spectral_orderingr   s    r   $test_spectral_ordering_tracemin_cholr"      s    
   
AA	r'	(	( 8 8
Q77778 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8r   c                     t          j        d           t          j        dd          } t          j        |           }t
                              t
          j                            d|j	        d         f                    j
        }t          j        t          j        d          5  t          j        j                            ||d	d
d           ddd           dS # 1 swxY w Y   dS )z1Test that "tracemin_unknown" raises an exception.r   r   r      r   )sizezUnknown linear system solver)matchFg:0yE>tracemin_unknown
normalizedtolr   N)r   r   r   r   laplacian_matrixnpasarrayrandomnormalshapeTr   r   linalgalgebraicconnectivity_tracemin_fiedler)r   LXs      r   $test_fiedler_vector_tracemin_unknownr7   #   s   
   
AA
AA


29##!QWQZ#99::<A	r'/M	N	N	N 
 

	'99qU5G 	: 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   (*CC#&C#c                     t          j        d           t          j        dd          } t          j        |           }|h dh dfk    sJ t          t          d                    }t          j        | |          } t          j        |           }||d         |d         |d         h|d         |d	         |d
         hfk    sJ d S )Nr      r   >   r   r$      >   r9   r   r   badfecr$   r:   r   r   )r   r   r   r   spectral_bisectiondict	enumeraterelabel_nodes)r   Cmappings      r   test_spectral_bisectionrB   /   s    
   
AA
a  AIII&&&&&9X&&''G
G$$A
a  A	WQZ,	WQZ,          c                 F   t           j                            |          }|t          j        dd          k    sJ | |z  }t           j                            |          }||z  t          j        ||z  d          k    sJ |t          j        ||z  d          k    sJ d S )Nr   Hz>abs)r,   r2   normr   approx)Alxr   ynys         r   check_eigenvectorrO   >   s    			Bqe,,,,,,,	AA			Bq5FM"r't4444444q2v4000000000rC   c                   P   e Zd Zej                            de          d             Zej                            de          d             Zej                            de          d             Z	d Z
ej                            de          d             Zej                            de          d             Zd Zej                            de          d	             Zej                            de          d
             Zej                            de          d             Zej                            de          d             Zej                            dddej        fddej        ff          ej                            de          d                         ZdS )TestAlgebraicConnectivityr   c                     t          j                    }t          j        t           j        t           j        ||           t          j        t           j        t           j        ||           d S )Nr   )r   DiGraphr   r   NetworkXNotImplementedr   r   selfr   r   s      r   test_directedz'TestAlgebraicConnectivity.test_directedK   s\    JLL%r'@!F	
 	
 	
 	
 	b/1BAfUUUUUUrC   c                    t          j                    }t          j        t           j        t           j        ||           t          j        t           j        t           j        ||           |                    dd           t          j        t           j        t           j        ||           t          j        t           j        t           j        ||           d S )Nr   r   )r   Graphr   r   r   r   r   add_edgerU   s      r   test_null_and_singletonz1TestAlgebraicConnectivity.test_null_and_singletonS   s    HJJb&(A1VTTTTb&(91VLLLL	

1ab&(A1VTTTTb&(91VLLLLLLrC   c                    t          j                    }|                    t          d                     t          j        |          dk    sJ t          j        t           j        t           j        ||           |	                    ddd           t          j        |          dk    sJ t          j        t           j        t           j        ||           d S )Nr:   r   r   r$   weight)
r   rY   add_nodes_fromranger   r   r   r   r   rZ   rU   s      r   test_disconnectedz+TestAlgebraicConnectivity.test_disconnected\   s    HJJ	q"""(++q0000b&(91VLLLL	

1a
"""(++q0000b&(91VLLLLLLrC   c                    t          j        d           t          j        d          }t          j        t          j        t          j        |d           t          j        t          j        t          j        |d           d S )Nr   r   unknownr   )r   r   r   
path_graphr   r   r   r   rV   r   s     r   test_unrecognized_methodz2TestAlgebraicConnectivity.test_unrecognized_methodf   sf    G$$$M!b&(A1YWWWWb&(91YOOOOOOrC   c                 ^   t          j        d           t          j                    }|                    ddd           t          j        |          }t          j        |d|          t          j        dd	          k    sJ t          j        |d|          }t          |d|           d S )
Nr   r   r$   r]   -q=r*   r   r:   rE   rF   )
r   r   r   rY   rZ   r+   r   rI   r   rO   rV   r   r   rJ   rL   s        r   test_two_nodesz(TestAlgebraicConnectivity.test_two_nodesl   s    G$$$HJJ	

1a
"""""(fEEE4J
 J
 J
 
 
 
 
 aU6:::!Q"""""rC   c                    t          j        d           t          j                    }|                    ddd           |                    ddd           |                    ddd           dt          j        |d	          z  }t          j        |dd
|          t          j        dd          k    sJ t          j        |dd
|          }t          |d|           d S )Nr   r   g    חA)spamr$   rm   r]   rh   )r^   r*   r      rE   rF   )
r   r   r   
MultiGraphrZ   r+   r   rI   r   rO   rj   s        r   test_two_nodes_multigraphz3TestAlgebraicConnectivity.test_two_nodes_multigraphx   s    G$$$MOO	

1ac
"""	

1aa
   	

1ab
!!!$Qv6666(f%
 
 
]1$'''( ( ( ( aE&III!Q"""""rC   c                 x   t          j        d           t          j        d          }t          j        |          }dt          dt          d          z             z
  }t          j        |dd          }|t          j        |d          k    sJ t          j        |dd          }t          |||           d S )	Nr      r:   rh   traceminri   rE   rF   
r   r   r   rd   r+   r   r   rI   r   rO   )rV   r   rJ   sigmaacrL   s         r   test_abbreviation_of_methodz5TestAlgebraicConnectivity.test_abbreviation_of_method   s    G$$$M!""DT!WW%%%&qeJGGGV]5d3333333aU:>>>!UA&&&&&rC   c                 x   t          j        d           t          j        d          }t          j        |          }dt          dt          d          z             z
  }t          j        |d|          }|t          j        |d          k    sJ t          j        |d|          }t          |||           d S Nr   rt   r:   rh   ri   rE   rF   rv   rV   r   r   rJ   rw   rx   rL   s          r   	test_pathz#TestAlgebraicConnectivity.test_path   s    G$$$M!""DT!WW%%%&qeFCCCV]5d3333333aU6:::!UA&&&&&rC   c                 f   t          j        d           t          j        d          }|                    ddg           t          j        |          }d}t          j        |d|          }|t          j        |d	          k    sJ t          j        |d|          }t          |||           d S )
Nr   r   )r   r:   )r   r$   g׋ʄ?rh   ri   rE   rF   )
r   r   r   rd   add_edges_fromr+   r   rI   r   rO   r|   s          r   !test_problematic_graph_issue_2381z;TestAlgebraicConnectivity.test_problematic_graph_issue_2381   s    G$$$M!	&&)***""&qeFCCCV]5d3333333aU6:::!UA&&&&&rC   c                 X   t          j        d           t          j        d          }t          j        |          }dt          d          z
  }t          j        |d|          }|t          j        |d          k    sJ t          j        |d|          }t          |||           d S r{   
r   r   r   cycle_graphr+   r   r   rI   r   rO   r|   s          r   
test_cyclez$TestAlgebraicConnectivity.test_cycle   s    G$$$N1""DGG&qeFCCCV]5d3333333aU6:::!UA&&&&&rC   c                 \   t          j        d           t          j        d          }t          j        |          }dt          d          z
  }t          j        |d|d          }|t          j        |d          k    sJ t          j        |d|d          }t          |||           d S )	Nr   rt   r:   rh   r$   )r*   r   seedrE   rF   r   r|   s          r   test_seed_argumentz,TestAlgebraicConnectivity.test_seed_argument   s    G$$$N1""DGG&qeFKKKV]5d3333333aU6BBB!UA&&&&&rC   )r)   rw   laplacian_fnFg'?TgG'91Ŵ?c                 v   t          j        d           t          j        g d          } ||          }	 t          j        ||d|          t          j        |d          k    sJ t          j        ||d|          }t          |||           d S # t          j        $ r}|j	        dvr Y d }~d S d }~ww xY w)Nr   )Z)r$   
   )r$   )   )r$   ;   )r:      )r:   *   )r:   <   )r9   rp   )r9   +   )r9   9   )r   rt   )r   ,   )r   :   )r      )r   8   )r   r   )rp   r   )rp      )      )r   r   )r   r   )rt   r   )rt       )	      )r   5   )r   r   )r      )      )r   r   )r   r   )r      )r   r   )r      )r      )r      )r   1   )r      )r   2   )      )r      )r   6   )r      )r   7   )r   r   )r   r   )r   r   )r   r   )   r   )r   !   )r   r   )   r   )r   "   )r   r   )r   r   )r   #   )r   r   )r   $   )r   r   )r   3   )r   r   )r   4   )r   r   )   r   )r   r   )r   r   )   r   )r   r   )r   r   )r   /   )r   0   )r   -   )r   .   )r   r   )r   %   )r   &   )r   '   )r   r   )r   (   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   rh   r(   rE   rF   ))zCholesky solver unavailable.)zLU solver unavailable.)
r   r   r   rY   r   rI   r   rO   r   args)	rV   r)   rw   r   r   r   rJ   rL   errs	            r   test_buckminsterfullerenez3TestAlgebraicConnectivity.test_buckminsterfullerene   s    	G$$$H[ [ []
 ]
| LOO	,jeF  u$///0 0 0 0 !!
fUUUAa***** 	 	 	x     	     	s   AB B8#
B33B8N)__name__
__module____qualname__r   markparametrizemethodsrW   r[   ra   rf   rk   rr   ry   r}   r   r   r   r   r+   normalized_laplacian_matrixr    rC   r   rQ   rQ   J   sR       [Xw//V V 0/V [Xw//M M 0/M [Xw//M M 0/MP P P [Xw//	# 	# 0/	# [Xw//# # 0/#' ' ' [Xw//' ' 0/' [Xw//	' 	' 0/	' [Xw//' ' 0/' [Xw//' ' 0/' [/&(;<&(FG	
  [Xw//l l 0/ l l lrC   rQ   c                      e Zd Zej        ej        ej        ej        fZe	j
                            de          d             Ze	j
                            de          d             Zd Ze	j
                            de          d             Ze	j
                            de          d             Ze	j
                            de          d             Ze	j
                            de          d	             Ze	j
                            de          d
             Ze	j
                            ddg dg dgfdg dg dgff          e	j
                            de          d                         ZdS )TestSpectralOrderinggraphc                 n     |            }t          j        t          j        t          j        |           d S )N)r   r   r   r   r!   rV   r   r   s      r   test_nullgraphz#TestSpectralOrdering.test_nullgraph7  s-    EGGb&(<a@@@@@rC   c                     |            }|                     d           t          j        |          dgk    sJ |                    ddd           |                    ddd           t          j        |          dgk    sJ d S )NrL   r   r]   )add_noder   r!   rZ   r   s      r   test_singletonz#TestSpectralOrdering.test_singleton<  s    EGG	

3#A&&3%////	

3B
'''	

3B
'''#A&&3%//////rC   c                     t          j        d          }t          j        t           j        t           j        |d           d S )Nr   rc   r   )r   rd   r   r   r   r!   re   s     r   rf   z-TestSpectralOrdering.test_unrecognized_methodE  s6    M!b&(<a	RRRRRRrC   r   c                 `   t          j        d           t          j                    }|                    g dd           t          j        |d|          }t          |          t          |          k    sJ ddht          |d d                   t          |dd                    fv sJ d S )	Nr   )r$   r:   r$   r$   r9   r:   r:   r9   r$   rm   r]   )r^   r   r$   r9   )r   r   r   rY   add_weighted_edges_fromr!   setrV   r   r   orders       r   test_three_nodesz%TestSpectralOrdering.test_three_nodesI  s    G$$$HJJ	!!"C"C"CF!SSS$QvfEEE5zzSVV####1v#eCRCj//3uQRRy>>:::::::rC   c                 Z   t          j        d           t          j                    }|                    g d           t          j        ||          }t          |          t          |          k    sJ ddht          |d d                   t          |dd                    fv sJ d S )Nr   )r   r   r   )r:   r9   r:   r   r:   r9   r   r$   )r   r   r   MultiDiGraphr   r!   r   r   s       r   test_three_nodes_multigraphz0TestSpectralOrdering.test_three_nodes_multigraphR  s    G$$$O	!!"N"N"NOOO$Qv6665zzSVV####1v#eCRCj//3uQRRy>>:::::::rC   c                 d   t          j        d           t          t          d                    }t          j                            |           t          j                    }t          j	        ||           t          j
        ||          }||t          t          |                    fv sJ d S )Nr   r   r   r   r   listr`   r,   r.   shuffler   rY   add_pathr!   reversedrV   r   pathr   r   s        r   r}   zTestSpectralOrdering.test_path[  s    G$$$E"II
	$HJJ
At$Qv666tHTNN334444444rC   c                 f   t          j        d           t          t          d                    }t          j                            |           t          j                    }t          j	        ||           t          j
        ||d          }||t          t          |                    fv sJ d S )Nr   r   r$   )r   r   r   r   s        r   r   z'TestSpectralOrdering.test_seed_argumente  s    G$$$E"II
	$HJJ
At$QvA>>>tHTNN334444444rC   c           
      x   t          j        d           t          j                    }t          j        |t          ddd                     t          j        |t          ddd                     t          j        ||          }t          |          t          |          k    sJ t          t          ddd                    t          t          ddd	                    t          t          ddd                    t          t          d
dd	                    g}|d d         |v sJ |dd          |v sJ d S )Nr   r   r   r:   r$   r   rt   r   rn   r   r   )	r   r   r   rY   r   r`   r!   r   r   )rV   r   r   r   seqss        r   ra   z&TestSpectralOrdering.test_disconnectedo  s!   G$$$HJJ
AuQA'''
AuQA'''$Qv6665zzSVV####q"a!!q"b!!""q"a!!q"b!!""	
 RaRyD    QRRyD      rC   )r)   expected_orderF)
r$   r:   r   r9   r   r   rp   r   r   rt   )
rt   r   r   rp   r   r   r9   r   r:   r$   T)
r$   r:   r9   r   r   r   r   rp   r   rt   )
rt   r   rp   r   r   r   r   r9   r:   r$   c                    t          j        d           t          t          d                    }t	          j                    }t	          j        ||d           |                    |d         |d         d           t	          j        |          	                                }t	          j
        |||          }||v sJ d S )	Nr   r   r   r]   r   r   r$   )r)   r   )r   r   r   r`   r   rY   r   rZ   r+   todenser!   )rV   r)   r   r   r   r   rJ   r   s           r   r   zTestSpectralOrdering.test_cycle  s     	G$$$E"IIHJJ
AtA&&&&	

48T!WQ
///""**,,$Q:fMMM&&&&&&rC   N)r   r   r   r   rY   rS   rq   r   _graphsr   r   r   r   r   rf   r   r   r   r}   r   ra   r   r   rC   r   r   r   4  s       xR]BODG[Wg..A A /.A [Wg..0 0 /.0S S S [Xw//; ; 0/; [Xw//; ; 0/; [Xw//5 5 0/5 [Xw//5 5 0/5 [Xw//! ! 0/!  [(3335S5S5STU2224R4R4RST	
  [Xw//' ' 0/ ' ' 'rC   r   )mathr   r   networkxr   r   r,   r   r   r   r"   r7   rB   rO   rQ   r   r   rC   r   <module>r      s
             V!!
>= = =5 5 58 8 8	
 	
 	
  	1 	1 	1g g g g g g g gT\' \' \' \' \' \' \' \' \' \'rC   