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                   @   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   Z/var/www/ideatree/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    

