o
    ˷e!                     @   s   d dl Z d dlZdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )"    Nc                  C   sR  t jg ddddd} | jd }|h dh dh d	gksJ t| d
ks'J tt|  d
ks3J t g ddd} | jd }|h dh dh d	gksPJ t| d
ksXJ tt|  dksdJ t jg ddddd} | jd }|h dh dh d	gksJ t| d
ksJ tt|  dksJ t jg ddddd} | jd }|h dh dh d	gksJ t| d
ksJ tt|  dksJ t g ddd} | jd }|dhddhh dh dh dgksJ t| dksJ t j}tt j|g ddd tt j|g ddd tt j|g ddd tt j|g ddd d S )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rpg r*   _/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/generators/tests/test_community.pytest_random_partition_graph   s:   




(r,   c                  C   s4  t jdddddd} | jd }t|dksJ t| dksJ tt|  dks+J t dddd} | jd }t|dks@J t| dksHJ tt|  d	ksTJ t jd
ddddd} | jd }t|d
kskJ t| dkssJ t jdddddd} | jd }t|dksJ t| dksJ tt|  dksJ t jdddddd} | jd }t|dksJ t| dksJ tt|  dksJ t jd
dddddd} | jd }t|d
ksJ t| dksJ t j}tt j|dddd tt j|dddd tt j|dddd tt j|dddd d S )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(   ppgr*   r*   r+   test_planted_partition_graph+   sB   





r2   c                  C   s   t ddd} t| dksJ t ddd} t| dksJ t ddd} t| dks-J t jddddd} t| dks>J d S )	Nr	   r   r   r   r   r   r   r   )r   relaxed_caveman_graphr!   r'   r*   r*   r+   test_relaxed_caveman_graphU   s   r5   c                  C   sf   t dd} t| dksJ t dd} t d}|dd t | |s'J tt jt jdd d S Nr	   r   r   r   r
   )	r   connected_caveman_graphr!   complete_graphremove_edgeis_isomorphicr$   r%   r&   r'   K5r*   r*   r+   test_connected_caveman_graph`   s   
r=   c                  C   sF   t dd} t| dksJ t dd} t d}t | |s!J d S r6   )r   caveman_graphr!   r8   r:   r;   r*   r*   r+   test_caveman_graphm   s
   
r?   c               	   C   s   t 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 jdddddddd	} t| dks8J t| t jr@J t jdddddddd	} t| dksTJ t| t js\J tt jt jdd
ddd d S )Nd   r   g333333?{Gz?Tr   Fr   )r   r   e   r   r   )r   gaussian_random_partition_graphr!   
isinstanceDiGraphr$   r%   r&   r4   r*   r*   r+   $test_gaussian_random_partition_graphv   s"   rF   c                  C   s   t dddD ]F} t dddD ]=}t| |}| | | ks J | dks(|dkr5| ||d  d d  }n| ||d  d d  d }| |ksKJ qqttjtjdd ttjtjdd d S )Nr      r   r   r
   r   )ranger   ring_of_cliquesnumber_of_nodesnumber_of_edgesr$   r%   r&   )ijr'   expected_num_edgesr*   r*   r+   test_ring_of_cliques   s   	rO   c                  C   s   t dddD ]Q} t dddD ]H}t| |}| |d |  d ks$J | | | |d  d ks4J |d| d ksAJ t d| D ]}|||d ksUJ qHqqttjtj	dd ttjtj	dd d S )Nr   rG   r   r   r   r   )
rH   r   windmill_graphrJ   rK   degreer$   r%   r&   rI   )nkr'   rL   r*   r*   r+   test_windmill_graph   s    rT   c                  C   s  g d} g dg dg dg}t j| |dd}|jd }t|dks$J t|d	ks,J | d
ks4J t j| |td	dd}|j|jksGJ 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	t j
|| | t	t j
|| | tj	t j
|| |	dd tj	t j
|| |
dd tj	t j
|| |dd t	t j
|| || dgttd }t	t j
|| || t j| |ddd}|j|jksJ t j| |ddd}|j|jksJ t j| |ddd}|j|jksJ d S )N)K   rU   i,  )      ?皙?{Gz?)rW   gffffff?Q?)rX   rY   g?r   r   r   r   i  iV  i  )rV   rW   gRQ?)rW   ffffffֿrY   rV   rW   rZ   rX   rY   )rV   rW   rA   Tr   Fi  )r   	selfloops)r[   r   )r   sparse)r   stochastic_block_modelr    r!   sizerH   nodesr"   r$   r%   NetworkXException)sizesprobsr'   r(   GGsbmbadnodelist	badprobs1	badprobs2probs_rect1probs_rect2	asymprobsnodelistr*   r*   r+   test_stochastic_block_model   s<   
rl   c               	      sd   d} d}d}d}t j| |||dddd t dksJ  fd	d
 D }t j  |s0J d S )N   r   g      ?r   r
   rG   r   )average_degreemin_communityr   c                    s   h | ]}t  j| d  qS )	community)	frozensetr_   ).0vr4   r*   r+   	<setcomp>   s    z!test_generator.<locals>.<setcomp>)r   LFR_benchmark_graphr!   rp   is_partitionr_   )rR   tau1tau2mur(   r*   r4   r+   test_generator   s   rz   c                  C   sV   t tj d} d}d}d}tj| |||dd W d    d S 1 s$w   Y  d S )Nr@   r   r   r   
min_degreer$   r%   r   r&   ru   rR   rw   rx   ry   r*   r*   r+   test_invalid_tau1      "r   c                  C   sV   t tj d} d}d}d}tj| |||dd W d    d S 1 s$w   Y  d S )Nr@   r   r   r   r{   r}   r~   r*   r*   r+   test_invalid_tau2   r   r   c                  C   V   t tj d} d}d}d}tj| |||dd W d    d S 1 s$w   Y  d S )Nr@   r   r   r{   r}   r~   r*   r*   r+   test_mu_too_large   r   r   c                  C   r   )Nr@   r   r{   r}   r~   r*   r*   r+   test_mu_too_small   r   r   c                  C   sR   t tj d} d}d}d}t| ||| W d    d S 1 s"w   Y  d S )Nr@   r   r   r}   r~   r*   r*   r+   test_both_degrees_none   s   "r   c               	   C   sX   t tj d} d}d}d}tj| |||ddd W d    d S 1 s%w   Y  d S )Nr@   r   r   r
   )r|   rn   r}   r~   r*   r*   r+   test_neither_degrees_none  s   "r   )r$   networkxr   r,   r2   r5   r=   r?   rF   rO   rT   rl   rz   r   r   r   r   r   r   r*   r*   r*   r+   <module>   s$    %*	&					