U
    :vf  ã                   @   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 )é    NZnumpyZ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   sn   dddddg}t |ƒ| _t d¡| _t dd„ | j ¡ D ƒ¡| _| j d¡ t 	¡ | _
t | j
dddg¡ d S )Né   é   é   r   c                 s   s"   | ]\}}||d ddœfV  qdS )ç      à?ç333333Ó?)ÚweightÚotherN© )Ú.0ÚuÚvr   r   úG/tmp/pip-unpacked-wheel-_lngutwb/networkx/linalg/tests/test_spectrum.pyÚ	<genexpr>   s    z+TestSpectrum.setup_class.<locals>.<genexpr>é   )r   ÚGÚnxZ
path_graphÚPZGraphÚedgesÚWGÚadd_nodeZDiGraphÚDGZadd_path)ÚclsÚdegr   r   r   Úsetup_class   s    

ÿ

zTestSpectrum.setup_classc                 C   s    t  dddddg¡}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 eigenvaluesr   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  dddddg¡}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 eigenvaluesr   gI¾é`®è?g      ø?gï ‹Ï¨û?Nr   r
   )	r   r   r   r   Z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   Zadjacency_spectrumr   r!   r"   r#   r   r   r   Útest_adjacency_spectrum/   s    z$TestSpectrum.test_adjacency_spectrumc                 C   s`   t  dddg¡}tt | j¡ƒ}t j ||¡ t  dddg¡}tt | j¡ƒ}t j ||¡ dS )zModularity eigenvaluesg      ø¿g        g      à¿N)	r   r   r   r   Z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   r)   r   r   Z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(   r*   r+   r1   r   r   r   r   r   
   s   

r   )ZpytestZimportorskipr   Znetworkxr   Znetworkx.generators.degree_seqr   r   r   r   r   r   Ú<module>   s
   

