
    h>                         S SK r S SKr " S S5      r " S S5      r " S S5      r " S S	5      r " S
 S5      r " S S5      r " S S5      r	 " S S5      r
 " S S5      r " S S5      rg)    Nc                   ,    \ rS rSrS rS rS rS rSrg)TestTriangles   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   eg N)nxGraphlist	trianglesvaluesselfGs     X/var/www/html/env/lib/python3.13/site-packages/networkx/algorithms/tests/test_cluster.py
test_emptyTestTriangles.test_empty   s1    HHJBLLO**,-333    c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg N
   
r   r   r   r   r   r   r   r   r   r   r   
r                  r         	   )r   
path_graphr
   r   r   r   s     r   	test_pathTestTriangles.test_path   sr    MM"BLLO**,-1OOOO||A#
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   cubical_graphr
   r   r   r   s     r   test_cubicalTestTriangles.test_cubical   s    BLLO**,-1IIII||Aq!Q&&&BLLQF+2245!Q???||Aq!Q&&&||A1v&aA,666r   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[        [         R                  " U5      R	                  5       5      S-  S:X  d   e[         R                  " US5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   eg )	Nr   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   complete_graphr
   r   r   sumremove_edgeadd_edger   s     r   test_k5TestTriangles.test_k5#   s   a BLLO**,-@@@2<<?))+,q0B666||Aq!Q&&&	aBLLO**,-@@@||Aq!Q&&&	

1aBLLO**,-@@@||Aq!Q&&&r    N)	__name__
__module____qualname____firstlineno__r   r"   r)   r0   __static_attributes__r2   r   r   r   r      s    4
 7
'r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestDirectedClustering0   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r   r   DiGraphr
   
clusteringr   r   s     r   test_clustering&TestDirectedClustering.test_clustering1   sI    JJLBMM!$++-."444}}Q2%%%r   c                 F   [         R                  " S[         R                  " 5       S9n[        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   e[         R                  " US5      S:X  d   eg )Nr   create_usingr   r   r   r   r!   r=   r
   r>   r   r   s     r   r"    TestDirectedClustering.test_path6   s    MM"2::<8BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
 }}Q"a'''r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " U5      S:X  d   eUR                  SS5        [        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " USS/5      SSS	.:X  d   eUR                  SS5        [        [         R                  " U5      R                  5       5      / S
Q:X  d   e[         R                  " USS/5      SSS	.:X  d   e[         R                  " US5      S:X  d   eg )Nr   rB   r   r   r   r   r   r   r   UUUUUU?r   r   rI   rI   r   rI   r   r   竪?r   r   rL   rL   rL   r   r,   r=   r
   r>   r   average_clusteringr.   r   s     r   r0   TestDirectedClustering.test_k5R   s2   abjjl;BMM!$++-./AAA$$Q'1,,,	aBMM!$++-. 3
 
 	
 
 }}QA'qW+====	aBMM!$++-. 3
 
 	
 
 }}QA'q5H+IIII}}Q"e+++r   c                     [         R                  " S[         R                  " 5       S9nUR                  SS5        [         R                  " U5      S   S:X  d   eg )Nr   rB   r   r   UUUUUU?)r   cycle_graphr=   r/   r>   r   s     r   test_triangle_and_edge-TestDirectedClustering.test_triangle_and_edgej   sB    NN12::<8	

1a}}Q"e+++r   r2   N)	r3   r4   r5   r6   r?   r"   r0   rS   r7   r2   r   r   r9   r9   0   s    &
(8,0,r   r9   c                   <    \ rS rSr\S 5       rS rS rS rS r	Sr
g)	TestDirectedWeightedClusteringp   c                 0    [         R                  " S5      qg Nnumpypytestimportorskipnpclss    r   setup_class*TestDirectedWeightedClustering.setup_classq          )r   c                     [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg Nweightrf   r<   r   s     r   r?   .TestDirectedWeightedClustering.test_clusteringv   sK    JJLBMM!H5<<>?2EEE}}Q2%%%r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS9SSSSSSSSSSS.
:X  d   eg )Nr   rB   rf   rg   r   r   r   rD   r   s     r   r"   (TestDirectedWeightedClustering.test_path{   s    MM"2::<8BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS9S:X  d   eUR                  SS5        [        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS	/SS9SS
S.:X  d   eUR                  SS5        [        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS	/SS9SSS.:X  d   eg )Nr   rB   rf   rg   rG   r   r   rH   r   rI   rJ   rK   rL   rM   r   s     r   r0   &TestDirectedWeightedClustering.test_k5   s0   abjjl;BMM!H5<<>??RRR$$Qx8A===	aBMM!H5<<>? D
 
 	
 
 }}QAx8g<NNNN	aBMM!H5<<>? D
 
 	
 
 }}QAx8"=
 
 	
 
r   c                    [         R                  " S[         R                  " 5       S9nUR                  SSSS9  [         R                  " U5      S   S:X  d   e[
        R                  R                  [         R                  " USS9S   S	5        [
        R                  R                  [         R                  " USSS9S	5        g )
Nr   rB   r   r   r   rg   rQ   rf   gUUUUUU?)r   rR   r=   r/   r>   r^   testingassert_allcloser   s     r   rS   5TestDirectedWeightedClustering.test_triangle_and_edge   s    NN12::<8	

1a
"}}Q"e+++


""2==8#DQ#GP


""2==Ah#GPr   r2   N)r3   r4   r5   r6   classmethodra   r?   r"   r0   rS   r7   r2   r   r   rV   rV   p   s)    * *&

6
4Qr   rV   c                   H    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	rg
)TestWeightedClustering   c                 0    [         R                  " S5      qg rY   r[   r_   s    r   ra   "TestWeightedClustering.setup_class   rc   r   c                     [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg re   r   r	   r
   r>   r   r   s     r   r?   &TestWeightedClustering.test_clustering   sK    HHJBMM!H5<<>?2EEE}}Q2%%%r   c                     [         R                  " S5      n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " USS9SSSSSSSSSSS.
:X  d   eg )Nr   rf   rg   r   r   r   r   r!   r
   r>   r   r   s     r   r"    TestWeightedClustering.test_path   s    MM"BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/SS9R	                  5       5      SS/:X  d   e[         R                  " USSS9S:X  d   e[         R                  " USS/SS9SSS.:X  d   eg )Nrf   rg   r&   r   r   r   r'   r   r(   r
   r>   r   r   s     r   r)   #TestWeightedClustering.test_cubical   s    BMM!H5<<>? 	D
 	
 		
 	
 }}Q"a'''BMM!aVH=DDFGAq6QQQ}}Q(3q888}}QAx8aLHHHr   c                    [         R                  " S5      n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R
                  " USS9S:X  d   eUR                  SS5        [        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " USS/SS9SS	S
.:X  d   eg )Nr   rf   rg   rG   r   r   rK   r   rL   rJ   r   r,   r
   r>   r   rN   r.   r   s     r   r0   TestWeightedClustering.test_k5   s    a BMM!H5<<>??RRR$$Qx8A===	aBMM!H5<<>? D
 
 	
 
 }}QAx8"=
 
 	
 
r   c                 d   [         R                  " S5      nUR                  SSSS9  [         R                  " U5      S   S:X  d   e[        R
                  R                  [         R                  " USS9S   S5        [        R
                  R                  [         R                  " USSS9S5        g )	Nr   r   r   r   rg   UUUUUU?rf   rQ   )r   rR   r/   r>   r^   rn   ro   r   s     r   rS   -TestWeightedClustering.test_triangle_and_edge  s    NN1	

1a
"}}Q"e+++


""2==8#DQ#GO


""2==Ah#GOr   c                     [         R                  " S5      nUR                  SSSS9  UR                  SSSS9  [         R                  " U5      S   S:X  d   e[         R                  " USS9S   S:X  d   eg )	Nr   r   r   rg   r   rf   UUUUUUտ)r   rR   r/   r>   r   s     r   test_triangle_and_signed_edge4TestWeightedClustering.test_triangle_and_signed_edge  sn    NN1	

1a
#	

1a
"}}Q"e+++}}Qx03v===r   r2   N)r3   r4   r5   r6   rq   ra   r?   r"   r)   r0   rS   r   r7   r2   r   r   rs   rs      s4    * *&

6I"
"P>r   rs   c                   B    \ rS rSr\S 5       rS rS rS rS r	S r
Srg	)
TestClusteringi  c                 0    [         R                  " S5        g rY   r\   r]   r_   s    r   ra   TestClustering.setup_class      G$r   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r   rx   r   s     r   r?   TestClustering.test_clustering  sI    HHJBMM!$++-."444}}Q2%%%r   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg r   r{   r   s     r   r"   TestClustering.test_path  s~    MM"BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg r%   r~   r   s     r   r)   TestClustering.test_cubical5  s    BMM!$++-.2JJJJ}}Q"a'''BMM!aV,33561a&@@@}}Q"a'''}}QA'qQ<777r   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R
                  " U5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " USS/5      SSS.:X  d   eg )	Nr   rG   r   r   rK   r   rL   rJ   r   r   s     r   r0   TestClustering.test_k5=  s    a BMM!$++-./AAA$$Q'1,,,	aBMM!$++-. 3
 
 	
 
 }}QA'q5H+IIIIr   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R
                  " U5      S:X  d   eUR                  SS5        UR                  SSSS9  [        [         R                  " USS9R	                  5       5      / S	Q:X  d   eg )
Nr   rG   r   r   r   r   rg   rf   )rQ   r   r         ?r   )r   r,   r
   r>   r   rN   r.   r/   r   s     r   test_k5_signedTestClustering.test_k5_signedK  s    a BMM!$++-./AAA$$Q'1,,,	a	

1a
#BMM!H5<<>? D
 
 	
 
r   r2   N)r3   r4   r5   r6   rq   ra   r?   r"   r)   r0   r   r7   r2   r   r   r   r     s.    % %&

68J
r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestTransitivityiZ  c                 f    [         R                  " 5       n[         R                  " U5      S:X  d   eg Nr   )r   r	   transitivityr   s     r   test_transitivity"TestTransitivity.test_transitivity[  s$    HHJq!Q&&&r   c                 h    [         R                  " S5      n[         R                  " U5      S:X  d   eg )Nr   r   )r   r!   r   r   s     r   r"   TestTransitivity.test_path_  s'    MM"q!Q&&&r   c                 f    [         R                  " 5       n[         R                  " U5      S:X  d   eg r   )r   r(   r   r   s     r   r)   TestTransitivity.test_cubicalc  s'    q!Q&&&r   c                     [         R                  " S5      n[         R                  " U5      S:X  d   eUR                  SS5        [         R                  " U5      S:X  d   eg )Nr   r   r   g      ?)r   r,   r   r.   r   s     r   r0   TestTransitivity.test_k5g  sN    a q!Q&&&	aq!U***r   r2   N)	r3   r4   r5   r6   r   r"   r)   r0   r7   r2   r   r   r   r   Z  s    '''+r   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestSquareClusteringin  c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r   )r   r	   r
   square_clusteringr   r   s     r   r?   $TestSquareClustering.test_clusteringo  sM    HHJB((+2245;;;##A&",,,r   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg r   )r   r!   r
   r   r   r   s     r   r"   TestSquareClustering.test_patht  s    MM"B((+2245 :
 
 	
 
 ##A&+
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US/5      S   S:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg )N)r   r   r   r   r   r   r   r   r   r   r   r'   )r   r(   r
   r   r   r   s     r   r)   !TestSquareClustering.test_cubical  s    B((+2245 	:
 	
 		
 	
 B((QF3::<=%OOO##As+A.%777##Aq)U222##A1v.e2FFFFr   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   eg )Nr   rG   )r   r,   r
   r   r   r   s     r   r0   TestSquareClustering.test_k5  s9    a B((+2245HHHr   c                     [         R                  " SS5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   eg )Nr   )
r   r   r   r   r   r   r   r   r   r   )r   complete_bipartite_graphr
   r   r   r   s     r   test_bipartite_k5&TestSquareClustering.test_bipartite_k5  s<    ''1-B((+22459WWWWr   c                 F   [         R                  " / SQ5      nUR                  / SQ5      nUR                  / SQ5      n[         R                  " US/5      S   S:X  d   e[         R                  " US/5      S   S:X  d   e[         R                  " US/5      S   S:X  d   eg)	z&Test C4 for figure 1 Lind et al (2005))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   gwqGܱ?r   皙?N)r   r	   subgraphr   )r   r   G1G2s       r   test_lind_square_clustering0TestSquareClustering.test_lind_square_clustering  s    HH
. ZZ78ZZ34##As+A.&888##B,Q/5888##B,Q/5888r   c                 v    [         R                  " / SQ5      n[         R                  " US/5      S   S:X  d   eg)z'Test eq2 for figure 1 Peng et al (2008))r'   r   r   r   r   )r   r   r   r   N)r   r	   r   r   s     r   test_peng_square_clustering0TestSquareClustering.test_peng_square_clustering  s3    HHEF##As+A.%777r   c                     [         R                  " S5      n[         R                  " U5      SSSSSS.:X  d   eUR                  / SQ5        [         R                  " U5      SSSSSS.:X  d   eg )	Nr   r   g        r   r   r   r   r   ))r   r   )r   r   )r   r   r   r   r   )r   r!   r   add_edges_fromr   s     r   !test_self_loops_square_clustering6TestSquareClustering.test_self_loops_square_clustering  sg    MM!##A&aCCCA*NNNN	12##A&aCCCA*NNNNr   r2   N)r3   r4   r5   r6   r?   r"   r)   r0   r   r   r   r   r7   r2   r   r   r   r   n  s.    -

6G"IX9>8
Or   r   c                   6    \ rS rSr\S 5       rS rS rS rSr	g)TestAverageClusteringi  c                 0    [         R                  " S5        g rY   r   r_   s    r   ra   !TestAverageClustering.setup_class  r   r   c                     [         R                  " 5       n[        R                  " [        5         [         R
                  " U5        S S S 5        g ! , (       d  f       g = fr   )r   r	   r\   raisesZeroDivisionErrorrN   r   s     r   r    TestAverageClustering.test_empty  s4    HHJ]],-!!!$ .--   A
Ac                    [         R                  " S5      nUR                  SS5        [         R                  " U5      S:X  d   e[         R                  " USS9S:X  d   e[         R                  " USS9S:X  d   e[         R                  " U/ SQ5      S	:X  d   e[         R                  " U/ SQSS9S	:X  d   e[         R                  " U/ SQSS9S
:X  d   eg )Nr   r   g?Tcount_zerosFg98?r   r   r   gqq?gUUUUUU?r   rR   r/   rN   r   s     r   test_average_clustering-TestAverageClustering.test_average_clustering  s    NN1	

1a$$Q'+>>>>$$QD9=PPPP$$QE:>QQQQ$$Q	2oEEE$$Q	tDWWW$$Q	uEXXXr   c                    [         R                  " S5      nUR                  SS5        UR                  SSSS9  [         R                  " USS9S:X  d   e[         R                  " USS	S
9S:X  d   e[         R                  " USSS
9S:X  d   eg )Nr   r   r   r   r   rg   rf   gT)rf   r   Fg98r   r   s     r   test_average_clustering_signed4TestAverageClustering.test_average_clustering_signed  s    NN1	

1a	

1a
#$$Qx8<PPPP!!!H$G#$	
$ !!!H%H#$	
$r   r2   N)
r3   r4   r5   r6   rq   ra   r   r   r   r7   r2   r   r   r   r     s$    % %%
Y
r   r   c                   0    \ rS rSr\S 5       rS rS rSrg)TestDirectedAverageClusteringi  c                 0    [         R                  " S5        g rY   r   r_   s    r   ra   )TestDirectedAverageClustering.setup_class  r   r   c                     [         R                  " 5       n[        R                  " [        5         [         R
                  " U5        S S S 5        g ! , (       d  f       g = fr   )r   r=   r\   r   r   rN   r   s     r   r   (TestDirectedAverageClustering.test_empty  s4    JJL]],-!!!$ .--r   c                    [         R                  " S[         R                  " 5       S9nUR                  SS5        [         R                  " U5      S:X  d   e[         R                  " USS9S:X  d   e[         R                  " USS9S:X  d   e[         R                  " U/ S	Q5      S
:X  d   e[         R                  " U/ S	QSS9S
:X  d   e[         R                  " U/ S	QSS9S:X  d   eg )Nr   rB   r   g?Tr   Fg98?r   gqq?r   )r   rR   r=   r/   rN   r   s     r   r   5TestDirectedAverageClustering.test_average_clustering   s    NN12::<8	

1a$$Q'+>>>>$$QD9=PPPP$$QE:>QQQQ$$Q	2oEEE$$Q	tDWWW$$Q	uEXXXr   r2   N)	r3   r4   r5   r6   rq   ra   r   r   r7   r2   r   r   r   r     s    % %%
Yr   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestGeneralizedDegreei  c                 f    [         R                  " 5       n[         R                  " U5      0 :X  d   eg r   )r   r	   generalized_degreer   s     r   test_generalized_degree-TestGeneralizedDegree.test_generalized_degree  s&    HHJ$$Q'2---r   c                     [         R                  " S5      n[         R                  " US5      SS0:X  d   e[         R                  " US5      SS0:X  d   eg )Nr   r   r   r   )r   r!   r   r   s     r   r"   TestGeneralizedDegree.test_path  sN    MM!$$Q*q!f444$$Q*q!f444r   c                 l    [         R                  " 5       n[         R                  " US5      SS0:X  d   eg )Nr   r   )r   r(   r   r   s     r   r)   "TestGeneralizedDegree.test_cubical  s/    $$Q*q!f444r   c                 |   [         R                  " S5      n[         R                  " US5      SS0:X  d   eUR                  SS5        [         R                  " US5      SS0:X  d   e[         R                  " USS/5      SS0SSS.S.:X  d   e[         R                  " U5      SS0SS0SSS.SSS.SSS.S	.:X  d   eg )
Nr   r   r   r   r   r   )r   r   r'   r   )r   r,   r   r.   r   s     r   r0   TestGeneralizedDegree.test_k5  s    a $$Q*q!f444	a$$Q*q!f444$$QA/1vaA,3OOOO$$Q'1v1v|||,
 
 	
 
r   r2   N)	r3   r4   r5   r6   r   r"   r)   r0   r7   r2   r   r   r   r     s    .5
5
r   r   )r\   networkxr   r   r9   rV   rs   r   r   r   r   r   r   r2   r   r   <module>r      s     '' ''T=, =,@FQ FQRT> T>nG
 G
T+ +(bO bOJ 
  
FY Y*
 
r   