
    VhB                         d dl Z d dlZd Zd Z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 G d d      Zy)    Nc                  x    t        j                  g d      } ddddddd}t        j                  |       |k(  sJ y )N)      r      r      r   r
   r      )r
      )r   r         ?UUUUUU?r   r   r   r
   r   r   nxGraphsquare_clusteringGexpecteds     V/home/dcms/DCMS/lib/python3.12/site-packages/networkx/algorithms/tests/test_cluster.py'test_square_clustering_adjacent_squaresr      s<    
IJA35UssCH"h...    c            
      |    t        j                  dd      } dddddddddd	}t        j                  |       |k(  sJ y )Nr   r   g      ?皙?)	r   r   r   r   r   r   )r   r   r   r   r   )r   r   )r   r   r   r   )r   grid_2d_graphr   r   s     r   test_square_clustering_2d_gridr$      sS    
AA 
H "h...r   c                      t        j                  g d      } t        j                  | d      }t        j                  |       |k(  sJ y)zgAn example where all nodes are part of all squares, but not every node
    is connected to every other.)r   r    r   r   r   r   r
   r	   )r   r   r   r   r   N)r   r   dictfromkeysr   r   s     r   4test_square_clustering_multiple_squares_non_completer+      s<     	QRA}}Q"H"h...r   c                   $    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)r   r   list	trianglesvaluesselfr   s     r   
test_emptyzTestTriangles.test_empty'   s1    HHJBLLO**,-333r   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   r   r   r
   r   r         	   )r   
path_graphr0   r1   r2   r3   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   cubical_graphr0   r1   r2   r3   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   r8   r   r   r   )r   r   r   r   r   )r   complete_graphr0   r1   r2   sumremove_edgeadd_edger3   s     r   test_k5zTestTriangles.test_k5C   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__r5   r?   rD   rJ    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   DiGraphr0   
clusteringr2   r3   s     r   test_clusteringz&TestDirectedClustering.test_clusteringQ   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 )Nr8   create_usingr9   r   r:   r   r>   rS   r0   rT   r2   r3   s     r   r?   z TestDirectedClustering.test_pathV   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   rW   r   r   r   r   r   r   r   UUUUUU?r   r   r]   r]   r
   r]   r'   竪?r   r   r_   r_   r_   r   rF   rS   r0   rT   r2   average_clusteringrH   r3   s     r   rJ   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   rW   r   r
   UUUUUU?)r   cycle_graphrS   rI   rT   r3   s     r   test_triangle_and_edgez-TestDirectedClustering.test_triangle_and_edge   sB    NN12::<8	

1a}}Q"e+++r   N)rK   rL   rM   rU   r?   rJ   re   rN   r   r   rP   rP   P   s    &
(8,0,r   rP   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_class          )r   c                     t        j                         }t        t        j                  |d      j	                               g k(  sJ t        j                  |      i k(  sJ y Nweightru   rR   r3   s     r   rU   z.TestDirectedWeightedClustering.test_clustering   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 )Nr8   rW   ru   rv   r9   r   r:   rY   r3   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   rW   ru   rv   r[   r   r   r\   r
   r]   r'   r^   r_   r`   r3   s     r   rJ   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   rW   r   r
   r   rv   rc   ru   gUUUUUU?)r   rd   rS   rI   rT   rn   testingassert_allcloser3   s     r   re   z5TestDirectedWeightedClustering.test_triangle_and_edge   s    NN12::<8	

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


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


""2==Ah#GPr   N)	rK   rL   rM   classmethodrq   rU   r?   rJ   re   rN   r   r   rg   rg      s)    * *&

6
4Qr   rg   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 ri   rk   ro   s    r   rq   z"TestWeightedClustering.setup_class   rr   r   c                     t        j                         }t        t        j                  |d      j	                               g k(  sJ t        j                  |      i k(  sJ y rt   r   r   r0   rT   r2   r3   s     r   rU   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 )Nr8   ru   rv   r9   r   r:   r   r>   r0   rT   r2   r3   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 )Nru   rv   rB   r   r   r   r   r   rC   r0   rT   r2   r3   s     r   rD   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   ru   rv   r[   r   r   r^   r
   r_   r'   r   rF   r0   rT   r2   ra   rH   r3   s     r   rJ   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   rv   r   ru   rc   )r   rd   rI   rT   rn   rz   r{   r3   s     r   re   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   rv   r   ru   UUUUUUտ)r   rd   rI   rT   r3   s     r   test_triangle_and_signed_edgez4TestWeightedClustering.test_triangle_and_signed_edge(  sn    NN1	

1a
#	

1a
"}}Q"e+++}}Qx03v===r   N)rK   rL   rM   r|   rq   rU   r?   rD   rJ   re   r   rN   r   r   r~   r~      s4    * *&

6I"
"P>r   r~   c                   :    e Zd Zed        Zd Zd Zd Zd Zd Z	y)TestClusteringc                 .    t        j                  d       y ri   rl   rm   ro   s    r   rq   zTestClustering.setup_class1      G$r   c                     t        j                         }t        t        j                  |      j	                               g k(  sJ t        j                  |      i k(  sJ y r/   r   r3   s     r   rU   zTestClustering.test_clustering5  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 r7   r   r3   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 rA   r   r3   s     r   rD   zTestClustering.test_cubicalU  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   r^   r
   r_   r'   r   r3   s     r   rJ   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   r   rv   ru   )rc   r   r   r   r   )r   rF   r0   rT   r2   ra   rH   rI   r3   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)
rK   rL   rM   r|   rq   rU   r?   rD   rJ   r   rN   r   r   r   r   0  s.    % %&

68J
r   r   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   transitivityr3   s     r   test_transitivityz"TestTransitivity.test_transitivity{  s$    HHJq!Q&&&r   c                 b    t        j                  d      }t        j                  |      dk(  sJ y )Nr8   r   )r   r>   r   r3   s     r   r?   zTestTransitivity.test_path  s'    MM"q!Q&&&r   c                 `    t        j                         }t        j                  |      dk(  sJ y r   )r   rC   r   r3   s     r   rD   zTestTransitivity.test_cubical  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   rF   r   rH   r3   s     r   rJ   zTestTransitivity.test_k5  sN    a q!Q&&&	aq!U***r   N)rK   rL   rM   r   r?   rD   rJ   rN   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   r0   r   r2   r3   s     r   rU   z$TestSquareClustering.test_clustering  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 r7   )r   r>   r0   r   r2   r3   s     r   r?   zTestSquareClustering.test_path  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)r   r   r   r   r   r   r   r   r   r   r   r   )r   rC   r0   r   r2   r3   s     r   rD   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   rF   r0   r   r2   r3   s     r   rJ   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_graphr0   r   r2   r3   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;   r8   )r      )r      )r      )r      )r      )r      )	r   r   r   r
   r   r   r   r   r   )r   r   r;   r<   r=   r8   r   r   r   gwqGܱ?r   r   N)r   r   subgraphr   )r4   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                 x    t        j                  g d      }ddddddd}t        j                  |      |k(  sJ y)z'Test eq2 for figure 1 Peng et al (2008))r   r   r	   r   r   )r   r   r   r   r   r   r   Nr   )r4   r   r   s      r   test_peng_square_clusteringz0TestSquareClustering.test_peng_square_clustering  s>     HHEFsuqA##A&(222r   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   r   r   r   r   r
   )r   r!   r"   )r   r>   r   add_edges_fromr3   s     r   !test_self_loops_square_clusteringz6TestSquareClustering.test_self_loops_square_clustering  sg    MM!##A&aA!a*HHHH	12##A&aA!a*HHHHr   N)rK   rL   rM   rU   r?   rD   rJ   r   r   r   r   rN   r   r   r   r     s.    -

6G"IX9>3Ir   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestAverageClusteringc                 .    t        j                  d       y ri   r   ro   s    r   rq   z!TestAverageClustering.setup_class  r   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   rl   raisesZeroDivisionErrorra   r3   s     r   r5   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   rd   rI   ra   r3   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   r   rv   ru   gT)ru   r   Fg98r   r3   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)rK   rL   rM   r|   rq   r5   r   r   rN   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 ri   r   ro   s    r   rq   z)TestDirectedAverageClustering.setup_class  r   r   c                     t        j                         }t        j                  t              5  t        j
                  |       d d d        y # 1 sw Y   y xY wr/   )r   rS   rl   r   r   ra   r3   s     r   r5   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   rW   r   g?Tr   Fg98?r   gqq?r   )r   rd   rS   rI   ra   r3   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)rK   rL   rM   r|   rq   r5   r   rN   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_degreer3   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   r3   s     r   r?   zTestGeneralizedDegree.test_path3  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   rC   r   r3   s     r   rD   z"TestGeneralizedDegree.test_cubical8  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   rF   r   rH   r3   s     r   rJ   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)rK   rL   rM   r   r?   rD   rJ   rN   r   r   r   r   .  s    .5
5
r   r   )rl   networkxr   r   r$   r+   r-   rP   rg   r~   r   r   r   r   r   r   rN   r   r   <module>r      s     //"/'' ''T=, =,@FQ FQRT> T>nG
 G
T+ +(eI eIP 
  
FY Y*
 
r   