
    ިsg/,                         d dl Z d dlZd Zd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)    Nc                     t        j                  g dddd      } | j                  d   }|h dh dh d	gk(  sJ t        |       d
k(  sJ t        t	        | j                                     d
k(  sJ t        j                  g ddd      } | j                  d   }|h dh dh d	gk(  sJ t        |       d
k(  sJ t        t	        | j                                     dk(  sJ t        j                  g dddd      } | j                  d   }|h dh dh d	gk(  sJ t        |       d
k(  sJ t        t	        | j                                     dk(  sJ t        j                  g dddd      } | j                  d   }|h dh dh d	gk(  sJ t        |       d
k(  sJ t        t	        | j                                     dk(  sJ t        j                  g ddd      } | j                  d   }|dhddhh dh dh dgk(  sJ t        |       dk(  sJ t         j                  }t        j                  t         j                  |g ddd       t        j                  t         j                  |g ddd       t        j                  t         j                  |g ddd       t        j                  t         j                  |g ddd       y )N)   r   r      r   *   seed	partition>   r   r      >   r         >            	      Tdirected   6   )r   r
   r   r   r         ?皙?r
   >   r   r   r   r   >   
                  )r   r
   r   皙?皙)	nxrandom_partition_graphgraphlenlistedgespytestraisesNetworkXError)GCrpgs      [/var/www/html/venv/lib/python3.12/site-packages/networkx/generators/tests/test_community.pytest_random_partition_graphr-      s]   
!!)Q;A	AIy1111q6Q;;tAGGI1$$$
!!)Q2A	AIy1111q6Q;;tAGGI2%%%
!!)QDAA	AIy1111q6Q;;tAGGI2%%%
!!)QDAA	AIy1111q6Q;;tAGGI2%%%
!!/3<A	A!q!fi7KLLLLq6R<<

#
#C
MM"""CC=
MM"""CD#>
MM"""CC=
MM"""CC>    c                     t        j                  ddddd      } | j                  d   }t        |      dk(  sJ t        |       dk(  sJ t        t	        | j                                     dk(  sJ t        j                  dddd      } | j                  d   }t        |      dk(  sJ t        |       dk(  sJ t        t	        | j                                     d	k(  sJ t        j                  d
dddd      } | j                  d   }t        |      d
k(  sJ t        |       dk(  sJ t        j                  ddddd      } | j                  d   }t        |      dk(  sJ t        |       dk(  sJ t        t	        | j                                     dk(  sJ t        j                  ddddd      } | j                  d   }t        |      dk(  sJ t        |       dk(  sJ t        t	        | j                                     dk(  sJ t        j                  d
ddddd      } | j                  d   }t        |      d
k(  sJ t        |       dk(  sJ t         j                  }t        j                  t         j                  |dddd       t        j                  t         j                  |dddd       t        j                  t         j                  |dddd       t        j                  t         j                  |dddd       y )Nr   r   r   r   r   r   r	   r   r   r   r   r   (   Tr      l   )r   r   r   r   )	r    planted_partition_graphr"   r#   r$   r%   r&   r'   r(   )r)   r*   ppgs      r,   test_planted_partition_graphr5   +   s   
""1aAB7A	Aq6Q;;q6R<<tAGGI2%%%
""1aA.A	Aq6Q;;q6R<<tAGGI2%%%
""2q#s<A	Aq6R<<q6R<<
""1aA=A	Aq6Q;;q6R<<tAGGI2%%%
""1aA=A	Aq6Q;;q6R<<tAGGI3&&&
""2q#sdKA	Aq6R<<q6R<<

$
$C
MM"""CAsC8
MM"""CAtS9
MM"""CAsC8
MM"""CAsD9r.   c                  @   t        j                  ddd      } t        |       dk(  sJ t        j                  ddd      } t        |       dk(  sJ t        j                  ddd      } t        |       dk(  sJ t        j                  dddd      } t        |       dk(  sJ y )	Nr   r   r   r   r   r   r   r   )r    relaxed_caveman_graphr#   r)   s    r,   test_relaxed_caveman_graphr9   U   s    
  Aq)Aq6R<<
  Aq)Aq6R<<
  As+Aq6R<<
  As4Aq6R<<r.   c                  b   t        j                  dd      } t        |       dk(  sJ t        j                  dd      } t        j                  d      }|j	                  dd       t        j
                  | |      sJ t        j                  t         j                  t         j                  dd       y )Nr   r   r   r   r   )	r    connected_caveman_graphr#   complete_graphremove_edgeis_isomorphicr&   r'   r(   )r)   K5s     r,   test_connected_caveman_graphr@   `   s    
""1a(Aq6R<<
""1a(A			1	BNN1aAr""" MM"""B$>$>1Er.   c                  \   t        j                  dd      } t        |       dk(  sJ t        j                  dd      } t        j                  d      }t        j                  | |      sJ t        j                  dd      } t        j
                  d      }t        j                  | |      sJ y )Nr   r   r   r   r   )r    caveman_graphr#   empty_graphr>   r<   )r)   E5r?   s      r,   test_caveman_graphrE   m   s    
AAq6R<<
AA		BAr"""
AA			1	BAr"""r.   c            	         t        j                  ddddd      } t        |       dk(  sJ t        j                  dddddd      } t        |       dk(  sJ t        j                  ddddddd	      } t        |       dk(  sJ t        | t         j                        rJ t        j                  ddddddd	      } t        |       dk(  sJ t        | t         j                        sJ t        j                  t         j                  t         j                  dd
ddd       t        j                  dddddd      } t        |       dk(  sJ y )Nd   r   g333333?{Gz?Tr   Fr   )r   r   e   r   r   r   r   )r    gaussian_random_partition_graphr#   
isinstanceDiGraphr&   r'   r(   r8   s    r,   $test_gaussian_random_partition_graphrM   z   s1   
**3BTBAq6S==
**3BTDQAq6S==
**RS$R	A q6S==!RZZ(((
**RS$B	A q6S==a$$$
MM
"<<c3Aq 	**2sCcJAq6R<<r.   c                  r   t        ddd      D ]  } t        ddd      D ]u  }t        j                  | |      }|j                         | |z  k(  sJ | dk7  s|dk7  r| ||dz
  z  dz  dz   z  }n| ||dz
  z  dz  dz   z  dz
  }|j	                         |k(  ruJ   t        j                  t        j                  d      5  t        j                  dd       d d d        t        j                  t        j                  d      5  t        j                  dd	       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)
Nr
      r   r   z0A ring of cliques must have at least two cliquesmatchr   (The cliques must have at least two nodesr   )ranger    ring_of_cliquesnumber_of_nodesnumber_of_edgesr&   r'   r(   )ijr)   expected_num_edgess       r,   test_ring_of_cliquesrZ      sJ   1b!_ 	=q"a 	=A""1a(A$$&!a%///Ava%&AQKA+=*B%C" &'AQKA+=*B%Ca%G"$$&*<<<<	=	= 

 R
 ! 	1a ! 

 J
 ! 	1a ! !	! !! !s   =D!D-!D*-D6c                     t        ddd      D ]  } t        ddd      D ]  }t        j                  | |      }|j                         |dz
  | z  dz   k(  sJ |j	                         | |z  |dz
  z  dz  k(  sJ |j                  d      |j                         dz
  k(  sJ t        d|j                               D ]  }|j                  |      |dz
  k(  rJ    t        j                  t        j                  d      5  t        j                  dd       d d d        t        j                  t        j                  d      5  t        j                  dd       d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)	Nr
   rO   r   r   r   z/A windmill graph must have at least two cliquesrP   rR   )	rS   r    windmill_graphrU   rV   degreer&   r'   r(   )nkr)   rW   s       r,   test_windmill_graphr`      sq   1b!_ ,q"a 	,A!!!Q'A$$&1q5A+/999$$&!a%1q5/A*====88A;!"3"3"5"99991a//12 ,xx{a!e+++,	,, 

 Q
   	!Q  

 J
   	!Q   	      s   >E"E."E+.E7c                     g d} g dg dg dg}t        j                  | |d      }|j                  d   }t        |      dk(  sJ t        |      d	k(  sJ |j	                         d
k(  sJ t        j                  | |t        d	      d      }|j                  |j                  k(  sJ t         j                  }t        t        d            }g dg dg dg}g dg dg dg}g dg dg}	ddgddgddgg}
g dg dg dg}t        j                  t         j                  || |       t        j                  t         j                  || |       t        j                  t         j                  || |	d       t        j                  t         j                  || |
d       t        j                  t         j                  || |d       t        j                  t         j                  || ||       dgt        t        d            z   }t        j                  t         j                  || ||       t        j                  | |dd      }|j                  |j                  k(  sJ t        j                  | |dd      }|j                  |j                  k(  sJ t        j                  | |dd      }|j                  |j                  k(  sJ y )N)K   rb   i,  )      ?皙?{Gz?)rd   gffffff?Q?)re   rf   g?r   r   r	   r   i  iV  i  )rc   rd   gRQ?)rd   ffffffֿrf   rc   rd   rg   re   rf   )rc   rd   rH   Tr   Fi  )r   	selfloops)rh   r   )r   sparse)r    stochastic_block_modelr"   r#   sizerS   nodesr$   r&   r'   NetworkXException)sizesprobsr)   r*   GGsbmbadnodelist	badprobs1	badprobs2probs_rect1probs_rect2	asymprobsnodelists                r,   test_stochastic_block_modelry      sP   E!35GHE
!!%Q7A	Aq6Q;;q6S==668u		"	"5%s!	DB77bhh 
#
#CuSz"K#%79KLI#%8:LMI%':;K$<$t=K#%8:LMI
MM"&&UI>
MM"&&UI>
MM"&&UK$O
MM"&&UK$O
MM"&&UIN
MM"&&UE;GsT%*%%H
MM"&&UE8D 
	"	"5%a4	HB77bhh		"	"5%4$	OB77bhh		"	"5%a	FB77bhhr.   c            	      &   d} d}d}d}t        j                  | |||ddd      }t        |      dk(  sJ |D ch c]  }t        |j                  |   d	          }}t         j
                  j                  |j	                         |      sJ y c c}w )
N   r         ?r   r   rO   r   )average_degreemin_communityr   	communityr    LFR_benchmark_graphr#   	frozensetrl   r   is_partitionr^   tau1tau2mur)   vr*   s          r,   test_generatorr      s    ADD	B
	4r!2B	A q6S==5671771:k*	+7A7<<$$QWWY222 	8s   "Bc                      t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||d       d d d        y # 1 sw Y   y xY w)Nztau2 must be greater than onerP   rG   r
   r   r   
min_degreer&   r'   r    r(   r   r^   r   r   r   s       r,   test_invalid_tau1r      Z    	r''/N	O @
q$bQ?@ @ @   #AAc                      t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||d       d d d        y # 1 sw Y   y xY w)Nztau1 must be greater than onerP   rG   r   r
   r   r   r   r   s       r,   test_invalid_tau2r      r   r   c                      t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||d       d d d        y # 1 sw Y   y xY w)N#mu must be in the interval \[0, 1\]rP   rG   r
   r   r   r   r   s       r,   test_mu_too_larger      sZ    	r''/V	W @
q$bQ?@ @ @r   c                      t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||d       d d d        y # 1 sw Y   y xY w)Nr   rP   rG   r
   r   r   r   s       r,   test_mu_too_smallr     sZ    	r''/V	W @
q$bQ?@ @ @r   c                      t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||       d d d        y # 1 sw Y   y xY w)N8Must assign exactly one of min_degree and average_degreerP   rG   r
   r   r   r   s       r,   test_both_degrees_noner     sY    	
H
 2 
q$b12 2 2s   !AAc            	          t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||dd       d d d        y # 1 sw Y   y xY w)Nr   rP   rG   r
   r   r   )r   r}   r   r   s       r,   test_neither_degrees_noner     sa    	
H
 R 
q$bQqQR R R   $AAc            
          t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||ddd       d d d        y # 1 sw Y   y xY w)Nz:Could not assign communities; try increasing min_communityrP   r   r
   r   r   )r   	max_itersr   r&   r'   r    ExceededMaxIterationsr   r   s       r,   test_max_iters_exceededr   (  sd    	
  J
 V 
q$bQ"STUV V Vs   %AAc            
          t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||| dz   dd       d d d        y # 1 sw Y   y xY w)Nz+max_degree must be in the interval \(0, n\]rP   r   r
   r   r   )
max_degreer   r   r   r   s       r,   test_max_deg_out_of_ranger   4  sf    	
 O
 	
 
tT2!a%2A	
	
 	
 	
s   (AA c                  *   d} d}d}d}t        j                  | |||ddddd	
	      }t        |      dk(  sJ |D ch c]  }t        |j                  |   d          }}t         j
                  j                  |j	                         |      sJ y c c}w )Nr{   r   r|   r   r   rG   2      r   )r}   r   r~   max_communityr   r   r   r   s          r,   test_max_communityr   A  s    ADD	B
	

	A q6S==5671771:k*	+7A7<<$$QWWY222 	8s   "Bc            	          t        j                  t        j                  d      5  d} d}d}d}t        j                  | |||dd       d d d        y # 1 sw Y   y xY w)Nz#Could not create power law sequencerP   rG   r
   r   r   )r   r   r   r   s       r,   !test_powerlaw_iterations_exceededr   V  sa    	
  (M
 M 
q$bQ!LM M Mr   c                      d} t        | t        j                  j                  j	                  ddd      z
        dk  sJ y )NgSbQ?r
   r   g-C6?rH   )absr    
generatorsr   _hurwitz_zeta)zeta2s    r,   test_no_scipy_zetar   a  s8    Eur}}..<<Q6JJKdRRRr.   c                      t        j                  t        j                  d      5  t        j                  j
                  j                  ddddd       d d d        y # 1 sw Y   y xY w)NzCould not match average_degreerP   r
   r   rH   r   )r&   r'   r    r   r   r   _generate_min_degree r.   r,   test_generate_min_degree_itrr   f  sU    	
  (H
 G 	44Q1dAFG G Gs   .AA&)r&   networkxr    r-   r5   r9   r@   rE   rM   rZ   r`   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r.   r,   <module>r      s     "?J':T
F
#.!* &#L
3@@@@	2	R	V

3*MS
Gr.   