o
    ßË·e+  ã                   @   sB   d dl Z e  d¡Ze  d¡ d dlZd dlmZ G dd dZdS )é    NÚnumpyÚscipy)Úhavel_hakimi_graphc                   @   s0   e Zd Zedd Zdd Zdd Zdd Zd	S )
ÚTestModularityc                 C   s,   g d¢}t || _t ¡ | _| j d¡ d S )N)é   é   r   é   r   )
)r   r   )r   r   )r   r   )r   r   )r   é   )é   r	   )r
   é   )r	   r
   )r	   r   )r   r
   )r   ÚGÚnxÚDiGraphÚDGÚadd_edges_from)ÚclsÚdeg© r   ú\/var/www/ideatree/venv/lib/python3.10/site-packages/networkx/linalg/tests/test_modularity.pyÚsetup_class   s   

ÿzTestModularity.setup_classc                 C   sp   t  g d¢g d¢g d¢g d¢g d¢g¡}g d¢}t j t | j¡|¡ t j tj| j|d|t  ||¡ ¡ dS )	zModularity matrix©g      ò¿ç      Ð?r   ç      ä?ç        ©r   ç      à¿ç      à?ç      Ð¿r   ©r   r   r   r   r   ©r   r   r   g      À¿r   ©r   r   r   r   r   )r
   r   r   r   r   ©ÚnodelistN)ÚnpÚarrayÚtestingÚassert_equalr   Úmodularity_matrixr   Úix_)ÚselfÚBÚpermutationr   r   r   Útest_modularity!   s   
üþzTestModularity.test_modularityc                 C   s   t  g d¢g d¢g d¢g d¢g d¢g¡}| j ¡ }| ¡ D ]\}}d|j||f d< qt j t |¡|¡ t j tj|ddd| ¡ d	S )
zModularity matrix with weightsr   r   r   r   r    r   Úweight)r-   N)	r#   r$   r   ÚcopyÚedgesr%   r&   r   r'   )r)   r*   Ú
G_weightedÚn1Ún2r   r   r   Útest_modularity_weight2   s   
ü
ÿz%TestModularity.test_modularity_weightc              	   C   s   t  g d¢g d¢g d¢g d¢g d¢g d¢g¡}g d¢}g d¢}tj| jt| jd	}t j ||¡ t j tj| j|d	|t  ||¡ ¡ d
S )zDirected Modularity matrix)çÉ¿ç333333ã?çé?çÙ¿r7   r7   )r   r   r   r   r   r   )gffffffæ?çÙ?g333333Ó¿ç333333ã¿r8   r9   )r4   r7   r4   r7   r5   r5   )r4   r7   r4   r5   r7   r5   )ç¹¿r4   r:   r6   r4   r4   )r	   r   r   r   r
   r   )r
   r   r   r   r   r	   r!   N)	r#   r$   r   Údirected_modularity_matrixr   Úsortedr%   r&   r(   )r)   r*   Únode_permutationÚidx_permutationÚmmr   r   r   Útest_directed_modularityF   s   
ûþz'TestModularity.test_directed_modularityN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r,   r3   r@   r   r   r   r   r   
   s    
r   )ÚpytestÚimportorskipr#   Únetworkxr   Únetworkx.generators.degree_seqr   r   r   r   r   r   Ú<module>   s    

