o
    3ήc+                     @   sd   d dl Z d dlZd dlZG dd dZG dd dZG dd dZG dd	 d	eZG d
d dZdS )    Nc                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )TestKatzCentralityc                 C   s   t d}d}t ||}td}t||}t|D ]}|| tj	|| ddks-J qdd |D }t j|||d}t|D ]}|| tj	|| ddksRJ qAd	S )
Katz centrality: K5   皙?皙?Hz>absc                 S   s   i | ]}|d qS )    ).0nr   r   `/tmp/pip-target-vg8gfxp4/lib/python/networkx/algorithms/centrality/tests/test_katz_centrality.py
<dictcomp>   s    z.TestKatzCentrality.test_K5.<locals>.<dictcomp>)nstartN)
nxcomplete_graphkatz_centralitymathsqrtdictfromkeyssortedpytestapprox)selfGalphabvb_answerr   r   r   r   r   test_K5	   s   

  zTestKatzCentrality.test_K5c                 C   V   d}t d}dddd}t ||}t|D ]}|| tj|| ddks(J qd	S 
Katz centrality: P3r      L}?緶<?L}?r   r
      -C6?r   Nr   
path_graphr   r   r   r   r   r   r   r    r   r   r   r   r   test_P3      
 zTestKatzCentrality.test_P3c                 C   sH   t tj tjtdddd W d    d S 1 sw   Y  d S )Nr%   r   r   )max_iter)r   raisesr   PowerIterationFailedConvergencer   r-   r   r   r   r   test_maxiter    s   "zTestKatzCentrality.test_maxiterc                 C   \   d}d}dddd}t d}t |||}t|D ]}|| tj|| ddks+J qd S 	Nr   r&   r'   r(   r)   r%   r+   r   r,   r   r   betar    r   r   r   r   r   r   test_beta_as_scalar$      
 z&TestKatzCentrality.test_beta_as_scalarc                 C   d   d}dddd}dddd}t d}t |||}t|D ]}|| tj|| dd	ks/J qd S 
Nr         ?r)   r&   r'   r(   r%   r+   r   r,   r8   r   r   r   test_beta_as_dict-      
 z$TestKatzCentrality.test_beta_as_dictc              
   C      g d}|D ]F}dddddddddd	ddd
dd
dddddddddd}t d}t ||}t|D ]}|| tj|| | ddksKJ q8qd S N)r   r   g333333?g?      ?g333333?r&   r'   r(   r)   gtE]t?g^tE]?g3mt?gr?gW@?gKw?gK׿v?gW?g,9?g]N?r%   r+   r   r,   r   
alpha_listr   r    r   r   r   r   r   r   test_multiple_alpha6   B   
 $z&TestKatzCentrality.test_multiple_alphac                 C   B   t tj tt d W d    d S 1 sw   Y  d S Nr   r   r2   r   NetworkXExceptionr   
MultiGraphr4   r   r   r   test_multigraph^      "z"TestKatzCentrality.test_multigraphc                 C       t t  d}|i ksJ d S rI   r   r   Graphr   er   r   r   
test_emptyb      zTestKatzCentrality.test_emptyc                 C   V   t tj tdg}ddi}tj|d|d W d    d S 1 s$w   Y  d S Nr   r
   r   M   r   r9   r   r2   r   rK   rQ   r   r   r   r9   r   r   r   test_bad_betaf   
   "z TestKatzCentrality.test_bad_betac                 C   N   t tj tdg}tj|ddd W d    d S 1 s w   Y  d S NrX   r   foorZ   r[   r   r   r   r   r   test_bad_beta_numbel      "z&TestKatzCentrality.test_bad_beta_numbeN)__name__
__module____qualname__r!   r/   r5   r:   r?   rF   rM   rT   r]   rc   r   r   r   r   r      s    			(r   c                   @   sp   e Zd Zedd Zdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd ZdS )TestKatzCentralityNumpyc                 C      t dat d d S Nnumpyscipyr   importorskipnpclsr   r   r   setup_classs      
z#TestKatzCentralityNumpy.setup_classc                 C   s   t d}d}t ||}td}t||}t|D ]}|| tj	|| ddks-J qt 
|}t|D ]}|| tj	|| ddksHJ q7dS )r   r   r   r   r   r   MbP?Nr   r   r   r   r   r   r   r   r   r   eigenvector_centrality_numpyr   r   r   r   r   r    r   r   r   r   r!   y   s   

 
 zTestKatzCentralityNumpy.test_K5c                 C   r"   r#   r   r-   katz_centrality_numpyr   r   r   r.   r   r   r   r/      r0   zTestKatzCentralityNumpy.test_P3c                 C   r6   r7   rx   r8   r   r   r   r:      r;   z+TestKatzCentralityNumpy.test_beta_as_scalarc                 C   r<   r=   rx   r8   r   r   r   r?      r@   z)TestKatzCentralityNumpy.test_beta_as_dictc              
   C   rA   rB   rx   rD   r   r   r   rF      rG   z+TestKatzCentralityNumpy.test_multiple_alphac                 C   rH   rI   rJ   r4   r   r   r   rM      rN   z'TestKatzCentralityNumpy.test_multigraphc                 C   rO   rI   rP   rR   r   r   r   rT      rU   z"TestKatzCentralityNumpy.test_emptyc                 C   rV   rW   r   r2   r   rK   rQ   ry   r\   r   r   r   r]      r^   z%TestKatzCentralityNumpy.test_bad_betac                 C   r_   r`   rz   rb   r   r   r   rc      rd   z+TestKatzCentralityNumpy.test_bad_beta_numbec                 C   s   t d}d}t j||dd}td}t||}t|D ]}|| tj	|| ddks/J qt j
|dd}t|D ]}|| tj	|| ddksLJ q;dS )	r   r   r   Nweightr   r   r   rt   ru   rw   r   r   r   test_K5_unweighted   s   

  z*TestKatzCentralityNumpy.test_K5_unweightedc                 C   sZ   d}t d}dddd}t j||dd}t|D ]}|| tj|| d	d
ks*J qdS )r$   r   r%   r&   r'   r(   r)   Nr{   r+   r   rx   r.   r   r   r   test_P3_unweighted   s   
 z*TestKatzCentralityNumpy.test_P3_unweightedN)re   rf   rg   classmethodrr   r!   r/   r:   r?   rF   rM   rT   r]   rc   r}   r~   r   r   r   r   rh   r   s    
			(rh   c                   @   s(   e Zd Zedd Zdd Zdd ZdS )TestKatzCentralityDirectedc                 C   sh   t  }g d}|j|dd | | _d| j_g d| j_t |}| | _d| j_g d| j_d S )N))r
   r*   )r
   r%   )r*      )r%   r*   )r%   r   )r   r*   )r   r   )r      )r   r   )r      )r      )r   r   )r   r
   )r   r   )r   r   )r   r   )r   r   g       @r{   r   )gf?g-P ?g ?g@/6#i?g73I?gzILnl?gG6?g*?)r   DiGraphadd_edges_fromreverser   r   evcH)rq   r   edgesr   r   r   r   rr      s   


z&TestKatzCentralityDirected.setup_classc                 C   X   | j }| j j}tj||dd}tt| | j jD ]\}}|tj	|ddks)J qd S Nr|   r{   r   r   )
r   r   r   r   ziplistvaluesr   r   r   r   r   r   par   r   r   r   test_katz_centrality_weighted&     z8TestKatzCentralityDirected.test_katz_centrality_weightedc                 C   r   r   )
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   test_katz_centrality_unweighted-  r   z:TestKatzCentralityDirected.test_katz_centrality_unweightedN)re   rf   rg   r   rr   r   r   r   r   r   r   r      s
    
1r   c                       s0   e Zd Ze fddZdd Zdd Z  ZS )TestKatzCentralityDirectedNumpyc                    s"   t dat d t   d S rj   )r   rn   ro   superrr   rp   	__class__r   r   rr   6  s   

z+TestKatzCentralityDirectedNumpy.setup_classc                 C   r   r   )
r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   =  r   z=TestKatzCentralityDirectedNumpy.test_katz_centrality_weightedc                 C   r   r   )
r   r   r   ry   r   r   r   r   r   r   r   r   r   r   r   D  r   z?TestKatzCentralityDirectedNumpy.test_katz_centrality_unweighted)re   rf   rg   r   rr   r   r   __classcell__r   r   r   r   r   5  s
    r   c                   @   s    e Zd Zedd Zdd ZdS )TestKatzEigenvectorVKatzc                 C   ri   rj   rm   rp   r   r   r   rr   M  rs   z$TestKatzEigenvectorVKatz.setup_classc                 C   sp   t jdddd}ttjt | }t |}t 	|d| }|D ]}|| t
j|| ddks5J q$d S )N
   rC   i  )seedr>   r   r   )r   gnp_random_graphmaxro   linalgeigvalsadjacency_matrixtodenserv   ry   r   r   )r   r   lrS   kr   r   r   r   test_eigenvector_v_katz_randomS  s   
 z7TestKatzEigenvectorVKatz.test_eigenvector_v_katz_randomN)re   rf   rg   r   rr   r   r   r   r   r   r   L  s    
r   )	r   r   networkxr   r   rh   r   r   r   r   r   r   r   <module>   s    j B