
    wg>                         d dl Z d dlZ G d d      Z G d d      Z G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z	 G d d      Z
 G d d      Z G d d      Zy)    Nc                   $    e Zd Zd Zd Zd Zd Zy)TestTrianglesc                     t        j                         }t        t        j                  |      j	                               g k(  sJ y N)nxGraphlist	trianglesvaluesselfGs     k/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_cluster.py
test_emptyzTestTriangles.test_empty   s1    HHJBLLO**,-333    c                     t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        j                  |      ddddddddddd
k(  sJ y N
   
r   r   r   r   r   r   r   r   r   r   r   
r                           	   )r   
path_graphr	   r
   r   r   s     r   	test_pathzTestTriangles.test_path   sr    MM"BLLO**,-1OOOO||A#
 
 	
 
r   c                    t        j                         }t        t        j                  |      j	                               g dk(  sJ t        j                  |d      dk(  sJ t        t        j                  |ddg      j	                               ddgk(  sJ t        j                  |d      dk(  sJ t        j                  |ddg      dddk(  sJ y Nr   r   r   r   r   r   r   r   r   r   r   r   r   )r   cubical_graphr	   r
   r   r   s     r   test_cubicalz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                    t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        t        j                  |      j	                               dz  dk(  sJ t        j                  |d      dk(  sJ |j                  dd       t        t        j                  |      j	                               g dk(  sJ t        j                  |d      dk(  sJ |j                  dd       t        t        j                  |      j	                               g dk(  sJ t        j                  |d      dk(  sJ y )	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_k5z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__r   r!   r'   r-    r   r   r   r      s    4
 7
'r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestDirectedClusteringc                     t        j                         }t        t        j                  |      j	                               g k(  sJ t        j                  |      i k(  sJ y r   r   DiGraphr	   
clusteringr   r   s     r   test_clusteringz&TestDirectedClustering.test_clustering1   sI    JJLBMM!$++-."444}}Q2%%%r   c                 <   t        j                  dt        j                               }t        t        j                  |      j                               g dk(  sJ t        j                  |      ddddddddddd
k(  sJ t        j                  |d      dk(  sJ y )Nr   create_usingr   r   r   r   r    r6   r	   r7   r   r   s     r   r!   z TestDirectedClustering.test_path6   s    MM"2::<8BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
 }}Q"a'''r   c                    t        j                  dt        j                               }t        t        j                  |      j                               g dk(  sJ t        j                  |      dk(  sJ |j                  dd       t        t        j                  |      j                               g dk(  sJ t        j                  |ddg      ddd	k(  sJ |j                  dd       t        t        j                  |      j                               g d
k(  sJ t        j                  |ddg      ddd	k(  sJ t        j                  |d      dk(  sJ y )Nr   r:   r   r   r   r   r   r   r   UUUUUU?r   r   r@   r@   r   r@   r   r   竪?r   r   rC   rC   rC   r   r)   r6   r	   r7   r   average_clusteringr+   r   s     r   r-   z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                     t        j                  dt        j                               }|j                  dd       t        j                  |      d   dk(  sJ y )Nr   r:   r   r   UUUUUU?)r   cycle_graphr6   r,   r7   r   s     r   test_triangle_and_edgez-TestDirectedClustering.test_triangle_and_edgej   sB    NN12::<8	

1a}}Q"e+++r   N)r.   r/   r0   r8   r!   r-   rI   r1   r   r   r3   r3   0   s    &
(8,0,r   r3   c                   4    e Zd Zed        Zd Zd Zd Zd Zy)TestDirectedWeightedClusteringc                 .    t        j                  d      ay Nnumpypytestimportorskipnpclss    r   setup_classz*TestDirectedWeightedClustering.setup_classq          )r   c                     t        j                         }t        t        j                  |d      j	                               g k(  sJ t        j                  |      i k(  sJ y NweightrY   r5   r   s     r   r8   z.TestDirectedWeightedClustering.test_clusteringv   sK    JJLBMM!H5<<>?2EEE}}Q2%%%r   c                    t        j                  dt        j                               }t        t        j                  |d      j                               g dk(  sJ t        j                  |d      ddddddddddd
k(  sJ y )Nr   r:   rY   rZ   r   r   r   r<   r   s     r   r!   z(TestDirectedWeightedClustering.test_path{   s    MM"2::<8BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    t        j                  dt        j                               }t        t        j                  |d      j                               g dk(  sJ t        j                  |d      dk(  sJ |j                  dd       t        t        j                  |d      j                               g dk(  sJ t        j                  |dd	gd      dd
dk(  sJ |j                  dd       t        t        j                  |d      j                               g dk(  sJ t        j                  |dd	gd      dddk(  sJ y )Nr   r:   rY   rZ   r>   r   r   r?   r   r@   rA   rB   rC   rD   r   s     r   r-   z&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                    t        j                  dt        j                               }|j                  ddd       t        j                  |      d   dk(  sJ t
        j                  j                  t        j                  |d      d   d	       t
        j                  j                  t        j                  |dd      d	       y )
Nr   r:   r   r   r   rZ   rG   rY   gUUUUUU?)r   rH   r6   r,   r7   rR   testingassert_allcloser   s     r   rI   z5TestDirectedWeightedClustering.test_triangle_and_edge   s    NN12::<8	

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


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


""2==Ah#GPr   N)	r.   r/   r0   classmethodrU   r8   r!   r-   rI   r1   r   r   rK   rK   p   s)    * *&

6
4Qr   rK   c                   @    e Zd Zed        Zd Zd Zd Zd Zd Z	d Z
y)	TestWeightedClusteringc                 .    t        j                  d      ay rM   rO   rS   s    r   rU   z"TestWeightedClustering.setup_class   rV   r   c                     t        j                         }t        t        j                  |d      j	                               g k(  sJ t        j                  |      i k(  sJ y rX   r   r   r	   r7   r   r   s     r   r8   z&TestWeightedClustering.test_clustering   sK    HHJBMM!H5<<>?2EEE}}Q2%%%r   c                     t        j                  d      }t        t        j                  |d      j	                               g dk(  sJ t        j                  |d      ddddddddddd
k(  sJ y )Nr   rY   rZ   r   r   r   r   r    r	   r7   r   r   s     r   r!   z TestWeightedClustering.test_path   s    MM"BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    t        j                         }t        t        j                  |d      j	                               g dk(  sJ t        j                  |d      dk(  sJ t        t        j                  |ddgd      j	                               ddgk(  sJ t        j                  |dd      dk(  sJ t        j                  |ddgd      dddk(  sJ y )NrY   rZ   r$   r   r   r   r%   r   r&   r	   r7   r   r   s     r   r'   z#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                    t        j                  d      }t        t        j                  |d      j	                               g dk(  sJ t        j
                  |d      dk(  sJ |j                  dd       t        t        j                  |d      j	                               g dk(  sJ t        j                  |ddgd      dd	d
k(  sJ y )Nr   rY   rZ   r>   r   r   rB   r   rC   rA   r   r)   r	   r7   r   rE   r+   r   s     r   r-   zTestWeightedClustering.test_k5   s    a BMM!H5<<>??RRR$$Qx8A===	aBMM!H5<<>? D
 
 	
 
 }}QAx8"=
 
 	
 
r   c                 l   t        j                  d      }|j                  ddd       t        j                  |      d   dk(  sJ t        j
                  j                  t        j                  |d      d   d       t        j
                  j                  t        j                  |dd      d       y )	Nr   r   r   r   rZ   UUUUUU?rY   rG   )r   rH   r,   r7   rR   r^   r_   r   s     r   rI   z-TestWeightedClustering.test_triangle_and_edge  s    NN1	

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


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


""2==Ah#GOr   c                     t        j                  d      }|j                  ddd       |j                  ddd       t        j                  |      d   dk(  sJ t        j                  |d      d   dk(  sJ y )	Nr   r   r   rZ   rm   rY   UUUUUUտ)r   rH   r,   r7   r   s     r   test_triangle_and_signed_edgez4TestWeightedClustering.test_triangle_and_signed_edge  sn    NN1	

1a
#	

1a
"}}Q"e+++}}Qx03v===r   N)r.   r/   r0   r`   rU   r8   r!   r'   r-   rI   rq   r1   r   r   rb   rb      s4    * *&

6I"
"P>r   rb   c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestClusteringc                 .    t        j                  d       y rM   rP   rQ   rS   s    r   rU   zTestClustering.setup_class      G$r   c                     t        j                         }t        t        j                  |      j	                               g k(  sJ t        j                  |      i k(  sJ y r   re   r   s     r   r8   zTestClustering.test_clustering  sI    HHJBMM!$++-."444}}Q2%%%r   c                     t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        j                  |      ddddddddddd
k(  sJ y r   rg   r   s     r   r!   zTestClustering.test_path  s~    MM"BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
r   c                    t        j                         }t        t        j                  |      j	                               g dk(  sJ t        j                  |d      dk(  sJ t        t        j                  |ddg      j	                               ddgk(  sJ t        j                  |d      dk(  sJ t        j                  |ddg      dddk(  sJ y r#   ri   r   s     r   r'   z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                    t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        j
                  |      dk(  sJ |j                  dd       t        t        j                  |      j	                               g dk(  sJ t        j                  |ddg      dddk(  sJ y )	Nr   r>   r   r   rB   r   rC   rA   rk   r   s     r   r-   zTestClustering.test_k5=  s    a BMM!$++-./AAA$$Q'1,,,	aBMM!$++-. 3
 
 	
 
 }}QA'q5H+IIIIr   c                 ~   t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        j
                  |      dk(  sJ |j                  dd       |j                  ddd       t        t        j                  |d      j	                               g d	k(  sJ y )
Nr   r>   r   r   r   ro   rZ   rY   )rG   rp   r         ?r|   )r   r)   r	   r7   r   rE   r+   r,   r   s     r   test_k5_signedzTestClustering.test_k5_signedK  s    a BMM!$++-./AAA$$Q'1,,,	a	

1a
#BMM!H5<<>? D
 
 	
 
r   N)
r.   r/   r0   r`   rU   r8   r!   r'   r-   r}   r1   r   r   rs   rs     s.    % %&

68J
r   rs   c                   $    e Zd Zd Zd Zd Zd Zy)TestTransitivityc                 `    t        j                         }t        j                  |      dk(  sJ y Nr   )r   r   transitivityr   s     r   test_transitivityz"TestTransitivity.test_transitivity[  s$    HHJq!Q&&&r   c                 b    t        j                  d      }t        j                  |      dk(  sJ y )Nr   r   )r   r    r   r   s     r   r!   zTestTransitivity.test_path_  s'    MM"q!Q&&&r   c                 `    t        j                         }t        j                  |      dk(  sJ y r   )r   r&   r   r   s     r   r'   zTestTransitivity.test_cubicalc  s'    q!Q&&&r   c                     t        j                  d      }t        j                  |      dk(  sJ |j                  dd       t        j                  |      dk(  sJ y )Nr   r   r   g      ?)r   r)   r   r+   r   s     r   r-   zTestTransitivity.test_k5g  sN    a q!Q&&&	aq!U***r   N)r.   r/   r0   r   r!   r'   r-   r1   r   r   r   r   Z  s    '''+r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestSquareClusteringc                     t        j                         }t        t        j                  |      j	                               g k(  sJ t        j                  |      i k(  sJ y r   )r   r   r	   square_clusteringr   r   s     r   r8   z$TestSquareClustering.test_clusteringo  sM    HHJB((+2245;;;##A&",,,r   c                     t        j                  d      }t        t        j                  |      j	                               g dk(  sJ t        j                  |      ddddddddddd
k(  sJ y r   )r   r    r	   r   r   r   s     r   r!   zTestSquareClustering.test_patht  s    MM"B((+2245 :
 
 	
 
 ##A&+
 
 	
 
r   c                    t        j                         }t        t        j                  |      j	                               g dk(  sJ t        t        j                  |ddg      j	                               ddgk(  sJ t        j                  |dg      d   dk(  sJ t        j                  |d      dk(  sJ t        j                  |ddg      dddk(  sJ y )N)rm   rm   rm   rm   rm   rm   rm   rm   r   r   rm   r%   )r   r&   r	   r   r   r   s     r   r'   z!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                     t        j                  d      }t        t        j                  |      j	                               g dk(  sJ y )Nr   r>   )r   r)   r	   r   r   r   s     r   r-   zTestSquareClustering.test_k5  s9    a B((+2245HHHr   c                     t        j                  dd      }t        t        j                  |      j	                               g dk(  sJ y )Nr   )
r   r   r   r   r   r   r   r   r   r   )r   complete_bipartite_graphr	   r   r   r   s     r   test_bipartite_k5z&TestSquareClustering.test_bipartite_k5  s<    ''1-B((+22459WWWWr   c                 8   t        j                  g d      }|j                  g d      }|j                  g d      }t        j                  |dg      d   dk(  sJ t        j                  |dg      d   dk(  sJ t        j                  |dg      d   dk(  sJ y)	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ܱ?rm   皙?N)r   r   subgraphr   )r   r   G1G2s       r   test_lind_square_clusteringz0TestSquareClustering.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                 p    t        j                  g d      }t        j                  |dg      d   dk(  sJ y)z'Test eq2 for figure 1 Peng et al (2008))r%   r   r   r   r   )r   r   r   rm   N)r   r   r   r   s     r   test_peng_square_clusteringz0TestSquareClustering.test_peng_square_clustering  s3    HHEF##As+A.%777r   c                     t        j                  d      }t        j                  |      ddddddk(  sJ |j                  g d       t        j                  |      ddddddk(  sJ y )	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_clusteringz6TestSquareClustering.test_self_loops_square_clustering  sg    MM!##A&aCCCA*NNNN	12##A&aCCCA*NNNNr   N)r.   r/   r0   r8   r!   r'   r-   r   r   r   r   r1   r   r   r   r   n  s.    -

6G"IX9>8
Or   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestAverageClusteringc                 .    t        j                  d       y rM   ru   rS   s    r   rU   z!TestAverageClustering.setup_class  rv   r   c                     t        j                         }t        j                  t              5  t        j
                  |       d d d        y # 1 sw Y   y xY wr   )r   r   rP   raisesZeroDivisionErrorrE   r   s     r   r   z TestAverageClustering.test_empty  s=    HHJ]],- 	%!!!$	% 	% 	%   AAc                    t        j                  d      }|j                  dd       t        j                  |      dk(  sJ t        j                  |d      dk(  sJ t        j                  |d      dk(  sJ t        j                  |g d      d	k(  sJ t        j                  |g dd      d	k(  sJ t        j                  |g dd      d
k(  sJ y )Nr   r   g?Tcount_zerosFg98?r   r   r   gqq?gUUUUUU?r   rH   r,   rE   r   s     r   test_average_clusteringz-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                 &   t        j                  d      }|j                  dd       |j                  ddd       t        j                  |d      dk(  sJ t        j                  |dd	
      dk(  sJ t        j                  |dd
      dk(  sJ y )Nr   r   r   r   ro   rZ   rY   gT)rY   r   Fg98r   r   s     r   test_average_clustering_signedz4TestAverageClustering.test_average_clustering_signed  s    NN1	

1a	

1a
#$$Qx8<PPPP!!!H$G#$	
$ !!!H%H#$	
$r   N)r.   r/   r0   r`   rU   r   r   r   r1   r   r   r   r     s$    % %%
Y
r   r   c                   (    e Zd Zed        Zd Zd Zy)TestDirectedAverageClusteringc                 .    t        j                  d       y rM   ru   rS   s    r   rU   z)TestDirectedAverageClustering.setup_class  rv   r   c                     t        j                         }t        j                  t              5  t        j
                  |       d d d        y # 1 sw Y   y xY wr   )r   r6   rP   r   r   rE   r   s     r   r   z(TestDirectedAverageClustering.test_empty  s=    JJL]],- 	%!!!$	% 	% 	%r   c                    t        j                  dt        j                               }|j                  dd       t        j                  |      dk(  sJ t        j                  |d      dk(  sJ t        j                  |d      dk(  sJ t        j                  |g d	      d
k(  sJ t        j                  |g d	d      d
k(  sJ t        j                  |g d	d      dk(  sJ y )Nr   r:   r   g?Tr   Fg98?r   gqq?rm   )r   rH   r6   r,   rE   r   s     r   r   z5TestDirectedAverageClustering.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   N)r.   r/   r0   r`   rU   r   r   r1   r   r   r   r     s    % %%
Yr   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestGeneralizedDegreec                 `    t        j                         }t        j                  |      i k(  sJ y r   )r   r   generalized_degreer   s     r   test_generalized_degreez-TestGeneralizedDegree.test_generalized_degree  s&    HHJ$$Q'2---r   c                     t        j                  d      }t        j                  |d      ddik(  sJ t        j                  |d      ddik(  sJ y )Nr   r   r   r   )r   r    r   r   s     r   r!   zTestGeneralizedDegree.test_path  sN    MM!$$Q*q!f444$$Q*q!f444r   c                 f    t        j                         }t        j                  |d      ddik(  sJ y )Nr   r   )r   r&   r   r   s     r   r'   z"TestGeneralizedDegree.test_cubical  s/    $$Q*q!f444r   c                 j   t        j                  d      }t        j                  |d      ddik(  sJ |j                  dd       t        j                  |d      ddik(  sJ t        j                  |ddg      ddiddddk(  sJ t        j                  |      ddiddidddddddddd	k(  sJ y )
Nr   r   r   r   r   r   )r   r   r%   r   )r   r)   r   r+   r   s     r   r-   z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   N)r.   r/   r0   r   r!   r'   r-   r1   r   r   r   r     s    .5
5
r   r   )rP   networkxr   r   r3   rK   rb   rs   r   r   r   r   r   r1   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   