o
    3ήc(                     @   s   d dl Z d dlZd dlmZmZ e jdeefdd Ze jdeefdd Z	dd	 Z
d
d Zdd Ze jdeef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 )"    N)greedy_modularity_communities#naive_greedy_modularity_communitiesfuncc                 C   sR   t  }tg d}tg d}tg d}|||h}t| |d d|ks'J d S )N)                                                 !   )r            
            )	            	               weight)nxkarate_club_graph	frozensetset)r   Gjohn_amr_hioverlapexpected r1   ^/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/community/tests/test_modularity_max.pytest_modularity_communities
   s   
r3   c                 C   s>   t g d}th dth dh}t| ||ksJ d S )N
)ab)r5   c)r6   r7   )r6   dr8   e)r8   f)r8   g)r;   r<   r9   )r;   r:      r8   r:   r;   r<      r5   r6   r7   )r(   Graphr*   r+   )r   r,   r0   r1   r1   r2   .test_modularity_communities_categorical_labels   s
   r@   c                  C   s   t g d} t| h dddhddhgksJ t| ddh dddhddhgks+J t| ddh dddhgks;J t| ddh d	gksHJ d S )
N))r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   best_n>   r   r   r   r   r   >   r   r   r   r   r   r   r   )r(   r?   r   )r,   r1   r1   r2   -test_greedy_modularity_communities_components/   s
   "& rG   c               	   C   sZ   t dd} dddddddd	d
}t | |} th dth dg}t| |ks+J d S )Nr   r5   r6   r7   r8   r:   r;   r<   h)r   r   r   r   r   r   r   r    >   r5   r6   r8   r:   >   r7   r;   r<   )r(   balanced_treerelabel_nodesr*   r   )r,   mappingr0   r1   r1   r2   ,test_greedy_modularity_communities_relabeled:   s
   rL   c                  C   sx   t g d} th dth dg}t| |ksJ t  } | g d th dth dg}t| |ks:J d S )Nr4   r=   r>   )
)r   r   r   r   r   r   rA   r   r   )r   r   )r   r   rB   )r   r   rC      r   r   r   rD   )r(   DiGraphr*   r   add_edges_fromr,   r0   r1   r1   r2   +test_greedy_modularity_communities_directedC   s   rT   c                 C   s   t dd}|jD ]!\}}|dks|dkr"|dkr"d|| | d< q	d|| | d< q	h dh d	g}| |dd
|ks=J | |ddd|ksHJ | |ddd|ksSJ | |ddd|ks^J d S )Nr   r   r   r   g      $@r'   g      ?>   r   r   r   r   r    r   r!   r   >   r   r   r   r   r"   r#   r   r&   g?r'   
resolution333333?g?)r(   rI   edges)r   r,   r5   r6   r0   r1   r1   r2   $test_modularity_communities_weighted^   s   rY   c                  C   sT   t  } | g d h dh dg}t| dd|ksJ t| ddd|ks(J d S )N))r   r   r"   )r   r   G   )r   r   r   )r   r   r   )r   r   r#   >   r   r   r   >   r   r   r   r'   r&   gGz?rU   )r(   r?   add_weighted_edges_fromr   rS   r1   r1   r2   *test_modularity_communities_floating_pointq   s   
r\   c                  C   s   t  } | g d th dth dg}t| dd|ks!J d| d d d< th d	th d
g}t| dd|ks?J d S )N)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   rP   r'   r&   r	   r   r   >   r   r   r   r   >   r   r   r    r   )r(   rQ   r[   r*   r   rS   r1   r1   r2   -test_modularity_communities_directed_weighted   s   r`   c                  C   sv   t  } | g d th dth dg}t| |ksJ | dd th dth dg}t| |ks9J d S )N)rM   rM   rN   rA   rO   r   r   rB   rC   r   r    rb   r   r    r    r   r   r      r   r   r   r      r   r   r    r   r   r   r_   rP   )r(   
MultiGraphrR   r*   r   add_edgerS   r1   r1   r2   -test_greedy_modularity_communities_multigraph   s   rj   c                  C   s   t  } | g d th dth dg}t| dd|ks!J | jdddd th d	th d
g}t| dd|ks?J d| d d d d< th dth dg}t| dd|ks_J d S )N)r]   r   r   r   r   r   r   rl   )r   r   r   r^   r^   r   r   r   rm   )r   r   r   r   r   r   r   r   r    )r   r   r   r   r    r!   rp   )r   r    r   r    r   r   rq   r   r   r   rr   rf   rg   r'   r&   r   r   r   r_   rP   r   r   )r(   rh   r[   r*   r   ri   rS   r1   r1   r2   6test_greedy_modularity_communities_multigraph_weighted   s   rs   c                  C   F   t  } | g d th dth dg}t| dd|ks!J d S )N)rM   rM   )r   r   rA   rA   )r   r   rO   ra   )r   r   rB   rC   rC   )r   r   rb   rc   rd   re   )r   r   rf   rg   r'   r&   )r(   MultiDiGraphrR   r*   r   rS   r1   r1   r2   .test_greed_modularity_communities_multidigraph   s   rv   c                  C   rt   )N)r]   rk   )r   r   r   rl   )r   r   r   )r   r   r   )r   r   r   rm   )r   r   r   )r   r   r   )r   r   r   )r   r   r   rn   ro   )r   r   r   rp   rp   )r    r   r   rq   )r   r    r   rr   rr   rf   rg   r'   r&   )r(   ru   r[   r*   r   rS   r1   r1   r2   7test_greed_modularity_communities_multidigraph_weighted   s   rw   c                  C   s   t dd} d}ttdttddttddg}t| |d|ks%J t| |d|ks/J d}h dh d	h d
dhdhg}t| |d|ksJJ t| |d|ksTJ d}ttdttddg}t| |d|ksmJ t| |d|kswJ d S )Nr   r   r   r   r#   )rV   g      @>   r   r   r   r   >   r!   r   r   r"   >   r   r   r    r   rW   )r(   barbell_graphr*   ranger   r   )r,   gammar0   r1   r1   r2    test_resolution_parameter_impact  s   &r{   c                  C   s   t d} dd tdD }t| dd|ksJ dd tdddD }t| dd|ks-J ttddttddg}t| d	d|ksEJ d S )
Nr   c                 S   s   g | ]}|hqS r1   r1   .0kr1   r1   r2   
<listcomp>1  s    z)test_cutoff_parameter.<locals>.<listcomp>r   )cutoffc                 S   s   g | ]}||d  hqS )r   r1   r|   r1   r1   r2   r   5  s    r   r   r   )r(   circular_ladder_graphry   r   r*   rS   r1   r1   r2   test_cutoff_parameter-  s   
r   c                  C   s   t dd} d}ttdttddttddg}t| |d|ks%J d}ttdttddg}t| |d|ks>J d}ttddg}t| |d|ksRJ d S )	Nr   r   r   r#   rE   r   r   r   )r(   rx   r*   ry   r   )r,   rF   r0   r1   r1   r2   test_best_n=  s   &r   )pytestnetworkxr(   networkx.algorithms.communityr   r   markparametrizer3   r@   rG   rL   rT   rY   r\   r`   rj   rs   rv   rw   r{   r   r   r1   r1   r1   r2   <module>   s6    

	
( 