o
    ð¹i  ã                   @   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                   @   s@   e Zd Zedd„ ƒZdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Z	dS )ÚTestSpectrumc                 C   sf   g d¢}t |ƒ| _t d¡| _t dd„ | j ¡ D ƒ¡| _| j d¡ t 	¡ | _
t | j
g d¢¡ d S )N)é   é   r   é   r   r   c                 s   s$    | ]\}}||d ddœfV  qdS )ç      à?ç333333Ó?)ÚweightÚotherN© )Ú.0ÚuÚvr   r   ú`/home/ubuntu/veenaModal/venv/lib/python3.10/site-packages/networkx/linalg/tests/test_spectrum.pyÚ	<genexpr>   s   € 
ÿz+TestSpectrum.setup_class.<locals>.<genexpr>é   )r   r   r   )r   ÚGÚnxÚ
path_graphÚPÚGraphÚedgesÚWGÚadd_nodeÚDiGraphÚDGÚadd_path)ÚclsÚdegr   r   r   Úsetup_class   s   


ÿ
zTestSpectrum.setup_classc                 C   sš   t  g d¢¡}tt | j¡ƒ}t j ||¡ ttj| jddƒ}t j ||¡ tt | j¡ƒ}t j |d| ¡ ttj| jddƒ}t j |d| ¡ dS )zLaplacian eigenvalues)r   r   r   r   r   N©r   r	   r   r
   )	ÚnpÚarrayÚsortedr   Úlaplacian_spectrumr   ÚtestingÚassert_almost_equalr   ©ÚselfÚevalsÚer   r   r   Útest_laplacian_spectrum   s   z$TestSpectrum.test_laplacian_spectrumc                 C   s’   t  g d¢¡}tt | j¡ƒ}t j ||¡ ttj| jddƒ}t j ||¡ tt | j¡ƒ}t j ||¡ ttj| jddƒ}t j ||¡ dS )z Normalized Laplacian eigenvalues)r   r   gI¾é`®è?g      ø?gï ‹Ï¨û?Nr"   r   )	r#   r$   r%   r   Únormalized_laplacian_spectrumr   r'   r(   r   r)   r   r   r   Ú"test_normalized_laplacian_spectrum#   s   z/TestSpectrum.test_normalized_laplacian_spectrumc                 C   s@   t  t  d¡ dt  d¡g¡}tt | j¡ƒ}t j ||¡ dS )zAdjacency eigenvaluesr   r   N)	r#   r$   Úsqrtr%   r   Úadjacency_spectrumr   r'   r(   r)   r   r   r   Útest_adjacency_spectrum/   s   z$TestSpectrum.test_adjacency_spectrumc                 C   s\   t  g d¢¡}tt | j¡ƒ}t j ||¡ t  g d¢¡}tt | j¡ƒ}t j ||¡ dS )zModularity eigenvalues)g      ø¿ç        r3   )g      à¿r3   r3   N)	r#   r$   r%   r   Úmodularity_spectrumr   r'   r(   r   r)   r   r   r   Útest_modularity_spectrum5   s   z%TestSpectrum.test_modularity_spectrumc              	   C   s„   t  ddt  d¡  dddt  d¡  g¡}ttj| jddƒ}t j ||¡ ttj| jddƒ}tt 	| j¡ƒ}t j ||¡ dS )	zBethe Hessian eigenvaluesr	   é	   é!   r   r   )Úrr   N)
r#   r$   r0   r%   r   Úbethe_hessian_spectrumr   r'   r(   r&   )r*   r+   r,   Úe1Úe2r   r   r   Útest_bethe_hessian_spectrum?   s   ,z(TestSpectrum.test_bethe_hessian_spectrumN)
Ú__name__Ú
__module__Ú__qualname__Úclassmethodr!   r-   r/   r2   r5   r<   r   r   r   r   r   
   s    

r   )ÚpytestÚimportorskipr#   Únetworkxr   Únetworkx.generators.degree_seqr   r   r   r   r   r   Ú<module>   s    

