
    h7                         S SK r \ R                  " S5      r\ R                  " S5        S SKrS SKJr  S SKJr   " S S5      r	S r
S	 rg)
    Nnumpyscipy)havel_hakimi_graph)margulis_gabber_galil_graphc                   0    \ rS rSr\S 5       rS rS rSrg)TestLaplacian   c                    / SQn[        U5      U l        [        R                  " S U R                  R	                  5        5       5      U l        U R
                  R                  S5        [        R                  " U R                  5      U l        U R                  R                  5       U l
        U R                  R                  5        H  nU R                  R                  X"5        M      [        R                  " 5       U l        U R                  R                  S5        [        R                   " U R                  5      U l        [        R                  " S U R                  R	                  5        5       5      U l        U R                  R                  5       U l        U R&                  R                  5        H  nU R&                  R                  X"5        M      g )N)      r      r   c              3   4   #    U  H  u  pXS SS.4v   M     g7f      ?333333?)weightotherN .0uvs      V/var/www/html/env/lib/python3.13/site-packages/networkx/linalg/tests/test_laplacian.py	<genexpr>,TestLaplacian.setup_class.<locals>.<genexpr>   s      
@MfqQcC01      
r   r   r   r   )r   r   )r   r   )r      )r   r!   )r      )r!   r   )r!   r"   )r"   r   c              3   4   #    U  H  u  pXS SS.4v   M     g7fr   r   r   s      r   r   r   -   s      
@OfqQcC01r   )r   GnxGraphedgesWGadd_node
MultiGraphMGcopyGslnodesadd_edgeDiGraphDiGadd_edges_fromMultiDiGraphDiMGDiWGDiGsl)clsdegnodes      r   setup_classTestLaplacian.setup_class   s6   "3' 
@C
 
 	suu% %%**,GGMMODGGT( $
 **,	
 ??377+:: 
@C
 
 GGLLN	IIOO%DIIt* &    c           	      B   [         R                  / SQ/ SQ/ SQ/ SQ/ SQ/5      nSU-  nSU-  n[         R                  / SQ/ S	Q/ S
Q/ SQ/ SQ/ SQ/5      nSU-  nSU-  n[         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  SS/S9R                  5       [         R                  SS/SS//5      5        [         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  SS9R                  5       U5        [         R                  R                  [        R
                  " U R                  SS9R                  5       U5        [         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  SS/S9R                  5       [         R                  SS/SS//5      5        [         R                  R                  [        R
                  " U R                  5      R                  5       U5        [         R                  R                  [        R
                  " U R                  SS9R                  5       U5        [         R                  R                  [        R
                  " U R                  SS9R                  5       U5        g)zGraph Laplacian)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   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   nodelistr>   Nr   r   r   )nparraytestingassert_equalr%   laplacian_matrixr$   todenser+   r(   r1   r4   r5   )selfNLWLOLDiNLDiWLDiOLs          r   test_laplacianTestLaplacian.test_laplacian4   s    XX+++++	- . 2X2Xxx1111113 4 TzTz


 3 3DFF ; C C ErJ


 3 3DGG < D D FK


!Q8@@BHHq"gAw'(	
 	

 3 3DGG < D D FK


 3 3DGGD I Q Q SUWX


8@@BB	
 	

 3 3DHH = E E GN


 3 3DII > F F H$O


Aq6:BBDHHq"g1v&'	
 	

 3 3DII > F F H$O


		$7??A4	
 	

		':BBDd	
r<   c           	         [         R                  / SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  / SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  / SQ/ SQ/ SQ/ S	Q/ SQ/5      n[         R                  / S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  / S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R                  R                  [        R
                  " U R                  [        S5      S9R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  SS9R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  [        SS5      S9R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  [         R                  R                  [        R
                  " U R                  SS9R                  5       USS9  [         R                  R                  [        R
                  " U R                  5      R                  5       USS9  g) zGeneralized Graph Laplacian)      ?&1ڿrS   X9v        )rS   rR         rU   rU   )rS   rV   rR   rU   rU   )rT   rU   rU   rR   rU   )rU   rU   rU   rU   rU   )      ?登zҿrX   eaֿrU   )rX   K=U?ioTտrU   rU   )rX   r[   rZ   rU   rU   )rY   rU   rU   r   rU   )rR   rU   rڿrU   rU   rU   )rU   rU   rU   rU   rU   rU   )r\   rU   rR   rU   r\   rU   )rU   rU   rU   rR   rV   -)rU   rU   rU   rV   rR   r]   )rU   rU   rU   r]   rU   rR   )r\   rU   rR   r\   rU   rU   )rU   rU   rU   rU   r]   rR   )rZ   gzrX   rU   rU   rU   )rX   rV   rW   rX   rU   rU   )rU   rU   rU   rZ   r[   r\   )rU   rU   rU   r[   rZ   r\   )rU   rU   rU   rU   r\   r   r!   r?   r   decimalr   rA   r      N)rB   rC   rD   assert_almost_equalr%   normalized_laplacian_matrixr$   rangerG   r+   r(   r-   r1   r4   r5   r6   )rH   r$   GLLslr1   DiGLDiLsls          r   test_normalized_laplacian'TestLaplacian.test_normalized_laplacianc   s    HH;;;;;	= >
 XX?????	A B
 hhEEEEE	G H hhNNNNNNP Q xxOOOOOOQ R PPPPPPR S 	

&&**466E!HEMMO 	' 	

 	

&&**4662::<b! 	' 	
 	

&&**4773;;=r1 	' 	
 	

&&**4773;;=r1 	' 	
 	

&&**4777CKKM 	' 	

 	

&&**4884<<>Q 	' 	
 	

&&**q% gi 	' 	
 	

&&**4884<<>a 	' 	
 	

&&**4995==?q 	' 	
 	

&&**4995==?q 	' 	
 	

&&**499WEMMO 	' 	

 	

&&**4::6>>@%QR 	' 	
r<   r   N)	__name__
__module____qualname____firstlineno__classmethodr:   rO   rh   __static_attributes__r   r<   r   r   r      s!    %+ %+N-
^V
r<   r   c            	         [         R                  " 5       n U R                  S5        [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      S	9n[        R                  R                  X!S
S9  U R                  S5        [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      SS9n[        R                  R                  X!S
S9  [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      SS9n[        R                  R                  X!S
S9  [         R                  " 5       n U R                  S5        [        R	                  / SQ/ SQ/ SQ/ S Q/5      n[         R
                  " U S[        U 5      S	9n[        R                  R                  X!S
S9  g!)"zDirected Laplacianr   )ŏ1w?:pΈҿ*Dؿ\ Ac̝着&}гY)rr   g7d?8gDioͿS!uqGx$(篔ec])rs   rw   rq   PkwǺݵ|г)rt   rx   r{   rq   H}8߿\(\)ru   ry   r|   r~   rq   )0ʿ)rv   rz   r}   r   r   rq   ?alphar@   r   r^   )r   r!   )r"   r   )rR   @ǘӿfj+޿rU   rU   ,ԚԿ)r   rR   	h"lx¿rU   [<ԿrU   )r   r   rR   rU   o_rU   )rU   rU   rU   rR   rV   rV   )rU   r   r   rV   rR         п)r   rU   rU   rV   r   rR   randomr   r@   	walk_type)r   @ǘÿfj+οrU   rU   TĿ)r   r   ]m{rU   [<ĿrU   )r   r   r   rU   +eXrU   )rU   rU   rU   r   r   r   )rU   r   r   r   r         )r   rU   rU   r   r   r   lazy)r   )r   r   )r   r   r    )r   r   )r   I+ƿr   r   )r   r   rU   r   )r   rU   r   r   )r   r   r   r   N)	r%   r0   r2   rB   rC   directed_laplacian_matrixsortedrD   ra   )r$   rd   Ls      r   test_directed_laplacianr      s   
 	

A	
 
IIIIIIK 
LB 	$$QcF1IFAJJ""1!"4 %&	IIIIIIK 
LB 	$$	vayH	A JJ""1!"4 
IIIIIIK 
LB 	$$QcF1IQWXAJJ""1!"4 	

A=>	33335 
6B
 	$$QcF1IFAJJ""1!"4r<   c            	         [         R                  " 5       n U R                  S5        [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      S	9n[        R                  R                  X!S
S9  U R                  S5        [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      SS9n[        R                  R                  X!S
S9  [        R	                  / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n[         R
                  " U S[        U 5      SS9n[        R                  R                  X!S
S9  [         R                  " [        S5      5      n[         R
                  " U5      n[        R	                  / SQ/ SQ/ SQ/ S Q/5      n[        R                  R                  X$S!S9  [        R                  " [         R                  5         [         R
                  " U S"S#S$9  S%S%S%5        [        R                  " [         R                  5         [         R
                  " U S&S'9  S%S%S%5        g%! , (       d  f       NQ= f! , (       d  f       g%= f)(z Directed combinatorial Laplacianr   )g46<?F%uK=U_QkMb`_vOf)r   g
ףp=
?Aǘŏ1w-!a+eylxz,C|)r   r   gZӼ?y&1lSt$r   )r   r   r   g|Pk?z6>W[<Nё\˿)r   r   r   r   gt?B`"۩)r   r   r   r   r   gjt?r   r   r   r^   r   )gB`"?Biޡ+ΧrU   rU   :H)r   g+η?rU   r   rU   )r   r   Biޱ?rU   r   rU   )rU   rU   rU   KY8?KY8Žr   )rU   r   r   r   r   r   )r   rU   rU   r   r   r   r   r   )r   5;Nё$ۗrU   rU   rt   )r   g+Χ?wrU   r   rU   )r   r   gBiޡ?rU   r   rU   )rU   rU   rU   KY8Ž?r   r   )rU   r   r   r   r   rt   )rt   rU   rU   r   rt   r   r   r   )K}\UU?iKGUUr   rU   )r   r   rU   r   )r   rU   r   r   )rU   r   r   r   r"   pagerankd   )r   r   Nsilly)r   )r%   r0   r2   rB   rC   'directed_combinatorial_laplacian_matrixr   rD   ra   r   pytestraisesNetworkXError)r$   rd   r   Eexpecteds        r   %test_directed_combinatorial_laplacianr     s   
 	

A	
 
IIIIIIK 
LB 	221C&QR)TAJJ""1!"4 %& 
IIIIIIK 
LB 	22	vayH	A JJ""1!"4 
IIIIIIK 
LB 	22	vayF	A JJ""1!"4


.q12A
2215Axx	=	=	=	=	?H JJ""1":	r''	(
221
RUV 
)	r''	(
221H 
)	( 
)	(	(	(s   >I I1 
I.1
I?)r   importorskiprB   networkxr%   networkx.generators.degree_seqr   networkx.generators.expandersr   r   r   r   r   r<   r   <module>r      sJ    !   G   = En
 n
bC5LNIr<   