U
    9%e&                     @   s^   d dl Z e dZe d d dlZd dlmZ d dlmZ G dd dZ	dd	 Z
d
d ZdS )    NnumpyZscipy)havel_hakimi_graph)margulis_gabber_galil_graphc                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestLaplacianc                 C   s|   dddddg}t || _tdd | j D | _| jd t| j| _| j	 | _
| j
 D ]}| j
|| qdd S )N         r   c                 s   s"   | ]\}}||d ddfV  qdS )      ?333333?)weightotherN ).0uvr   r   c/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/networkx/linalg/tests/test_laplacian.py	<genexpr>   s    z,TestLaplacian.setup_class.<locals>.<genexpr>   )r   GnxZGraphedgesWGadd_nodeZ
MultiGraphMGcopyGslZnodesZadd_edge)clsdegnoder   r   r   setup_class   s    


zTestLaplacian.setup_classc                 C   s  t dddddgdddddgdddddgdddddgdddddgg}d| }d| }t jt| j | t jt| j | t jtj| jddgd t ddgddgg t jt| j	 | t jtj| j	d	d
 | t jtj| j	dd
 | d	S )zGraph Laplacianr   r   r   r   r	   r
   nodelistNr   r   )
nparraytestingZassert_equalr   Zlaplacian_matrixr   todenser   r   )selfNLZWLZOLr   r   r   test_laplacian   s(     zTestLaplacian.test_laplacianc                 C   s  t dddddgdddddgdddddgdddddgdddddgg}t dddddgdddddgdddddgdddddgdddddgg}t dddddgdd	d
ddgdd
d	ddgdddddgdddddgg}t jjtj| jtdd |dd t jjt| j |dd t jjt| j	 |dd t jjt| j
 |dd t jjtj| j
dd |dd t jjt| j |dd dS )zGeneralized Graph Laplacian      ?g&1ڿgX9v              g      ?gzҿgeaֿgK=U?gioTտr	      r!   r   decimalr   r#   N)r$   r%   r&   assert_almost_equalr   Znormalized_laplacian_matrixr   ranger'   r   r   r   )r(   r   GLZLslr   r   r   test_normalized_laplacian2   s`            z'TestLaplacian.test_normalized_laplacianN)__name__
__module____qualname__classmethodr   r*   r4   r   r   r   r   r      s   
r   c                  C   s  t  } | d tddddddgddd	d
ddgdd	ddddgdd
ddddgddddddgddddddgg}t j| dt| d}tjj||dd | d tddddddgddddddgddddddgddddd d gdddd dd!gdddd d!dgg}t j| dt| d"d#}tjj||dd td$d%d&ddd'gd%d$d(dd)dgd&d(d$dd*dgdddd$d!d!gdd)d*d!d$d+gd'ddd!d+d$gg}t j| dt| d,d#}tjj||dd t  } | d- td$d.d.d!gd.d$dd.gd.dd$d.gd!d.d.d$gg}t j| dt| d}tjj||dd d/S )0zDirected Laplacian
r   r   r   r   )r   r   )r   r   )r   r.   )r   r.   )r      )r.   r   )r.   r<   )r<   r   gŏ1w?g:pΈҿg*Dؿ\ Ac̝g&g}гYg7d?g8gDioͿgS!uqgGx$(gec]gPkwgǺgݵ|гgH}8߿g\(\g)0ʿ?alphar"   r   r/   )r   r.   )r<   r   r+   g@ǘӿgfj+޿r,   g,ԚԿg	h"lx¿g[<Կgo_r-   g      пrandomr@   r"   	walk_typer	   g@ǘÿgfj+οgTĿg]m{g[<Ŀg+eXg      lazy)r:   )r   r   )r   r   r;   )r   r   gI+ƿN)	r   DiGraphadd_edges_fromr$   r%   Zdirected_laplacian_matrixsortedr&   r1   )r   r3   Lr   r   r   test_directed_laplacian^   s\    
   



rJ   c                  C   sZ  t  } | d tddddddgddd	d
ddgdd	ddddgdd
ddddgddddddgddddddgg}t j| dt| d}tjj||dd | d tddddddgdd d!dddgdd!d"dd!dgdddd#d$d$gddd!d$d#dgdddd$dd#gg}t j| dt| d%d&}tjj||dd td"d'd(ddd)gd'd*d+dd(dgd(d+d,dd+dgdddd-ddgdd(d+dd-d)gd)dddd)d-gg}t j| dt| d.d&}tjj||dd t t	d/}t |}td0d1d1dgd1d0dd1gd1dd0d1gdd1d1d0gg}tjj||d2d t
t j t j| d3d4d5 W 5 Q R X t
t j t j| d6d7 W 5 Q R X d8S )9z Directed combinatorial Laplacianr9   g46<?gF%ugK=Ug_QkgMb`g_vOfg
ףp=
?gAǘgŏ1w-!ga+eyglxz,C|gZӼ?gy&1lgSt$g|Pk?gz6>W[g<Nё\˿gt?gB`"۩gjt?r>   r?   r   r/   rA   gB`"?gBiޡg+Χr,   g:Hg+η?ggBiޱ?gKY8?gKY8ŽrB   rC   g5;Nёg$ۗr=   g+Χ?gwgBiޡ?gKY8Ž?rE   r   gK}\UU?giKGUUr<   Zpagerankd   )rD   r@   Zsilly)rD   N)r   rF   rG   r$   r%   Z'directed_combinatorial_laplacian_matrixrH   r&   r1   r   pytestZraisesZNetworkXError)r   r3   rI   Eexpectedr   r   r   %test_directed_combinatorial_laplacian   sp    
      




rO   )rL   Zimportorskipr$   Znetworkxr   Znetworkx.generators.degree_seqr   Znetworkx.generators.expandersr   r   rJ   rO   r   r   r   r   <module>   s   

SF