Ë
    ©Ó^j ¡  ã                   óì   — d dl Z d dlZd dlmZmZmZ d dlmZm	Z	m
Z
mZ e j                  j                  dd«      d„ «       Ze j                  j                  d«      d„ «       Zd	„ Zd
„ Zd„ Z G d„ d«      Zy)é    N)Úgraph_edit_distanceÚoptimal_edit_pathsÚoptimize_graph_edit_distance)Úcircular_ladder_graphÚcycle_graphÚ
path_graphÚwheel_graphÚsource)é
   Úfooc                 ó  — t        j                  d«       t        j                  d«      }t        j                  |d| ¬«      }t        j
                  t        j                  d¬«      5  t        |«       d d d «       y # 1 sw Y   y xY w)NÚnumpyé   é   )Úsample_sizer
   zInitial node.*not in G©Úmatch)ÚpytestÚimportorskipÚnxÚcomplete_graphÚgenerate_random_pathsÚraisesÚNodeNotFoundÚnext)r
   ÚGÚpath_gens      út/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_similarity.pyÚ*test_generate_random_paths_source_not_in_Gr      sc   € ä
×Ñ˜Ô Ü
×Ñ˜!Ó€Aä×'Ñ'¨°qÀÔH€HÜ	�‰”r—‘Ð.FÔ	Gñ ÜˆXŒ÷÷ ñ ús   Á(A=Á=Bzignore::RuntimeWarningc            	      ó¨  — t        j                  d«       t        j                  «       } | j	                  g d¢«       | j                  dd«       t        t        j                  | dddd¬«      «      }t        |«      dk(  sJ ‚t        d„ |D «       «      sJ ‚t        d	„ |D «       «      sJ ‚t        j                  | dddd¬«      }t        j                  t        d
¬«      5  t        |«       d d d «       t        j                  | ddd¬«      }t        j                  t        d
¬«      5  t        |«       d d d «       y # 1 sw Y   ŒRxY w# 1 sw Y   y xY w)Nr   )r   é   é   r   r!   r"   é*   )Úpath_lengthr
   Úseedc              3   ó8   K  — | ]  }t        |«      d k(  –— Œ y­w)r   N)Úlen©Ú.0Úpaths     r   ú	<genexpr>zAtest_generate_random_paths_with_isolated_nodes.<locals>.<genexpr>%   s   è ø€ Ò0 $Œs�4‹y˜A�~Ñ0ùs   ‚c              3   ó,   K  — | ]  }|d    d k(  –— Œ y­w©r   N© r(   s     r   r+   zAtest_generate_random_paths_with_isolated_nodes.<locals>.<genexpr>&   s   è ø€ Ò. ˆt�A‰w˜!�|Ñ.ùs   ‚zprobabilities contain NaNr   ©r$   r%   )r   r   r   ÚGraphÚadd_nodes_fromÚadd_edgeÚlistr   r'   Úallr   Ú
ValueError)r   Úpathsr   s      r   Ú.test_generate_random_paths_with_isolated_nodesr7      s  € ä
×Ñ˜Ô Ü
�‰‹
€AØ×Ñ’YÔØ‡J�Jˆq�!Ôô ”×)Ñ)¨!¨Q¸AÀaÈbÔQÓR€EÜˆu‹:˜Š?Ðˆ?ÜÑ0¨%Ô0Ô0Ð0Ð0ÜÑ.¨Ô.Ô.Ð.Ð.ô ×'Ñ'¨¨1¸!ÀAÈBÔO€HÜ	�‰”zÐ)DÔ	Eñ ÜˆXŒ÷ô ×'Ñ'¨¨1¸!À"ÔE€HÜ	�‰”zÐ)DÔ	Eñ ÜˆXŒ÷ð ÷ð ú÷
ð ús   ÃD<Ä'EÄ<EÅEc                 ó   — | |k(  S ©Nr.   ©Ún1Ún2s     r   Únmatchr=   3   ó   € Ø�‰8€Oó    c                 ó   — | |k(  S r9   r.   ©Úe1Úe2s     r   ÚematchrD   7   r>   r?   c                  ó>  — t        j                  «       } | j                  dd¬«       | j                  dd¬«       | j                  dd¬«       | j                  dd¬«       | j                  ddd¬«       | j                  ddd¬«       | j                  ddd¬«       | S )	NÚA©ÚlabelÚBÚCÚDúa-búb-cúb-d)r   r0   Úadd_noder2   )r   s    r   ÚgetCanonicalrP   ;   sˆ   € Ü
�‰‹
€AØ‡J�Jˆs˜#€JÔØ‡J�Jˆs˜#€JÔØ‡J�Jˆs˜#€JÔØ‡J�Jˆs˜#€JÔØ‡J�Jˆs�C˜u€JÔ%Ø‡J�Jˆs�C˜u€JÔ%Ø‡J�Jˆs�C˜u€JÔ%Ø€Hr?   c                   óŽ  — e Zd Zed„ «       Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zej@                  ejB                  jD                  jF                  gZ$e%jL                  jO                  de$«      d„ «       Z(e%jL                  jO                  de$«      d„ «       Z)e%jL                  jO                  de$«      d„ «       Z*e%jL                  jO                  de$«      d „ «       Z+e%jL                  jO                  d!e$«      d"„ «       Z,d#„ Z-d$„ Z.d%„ Z/d&„ Z0d'„ Z1d(„ Z2d)„ Z3d*„ Z4d+„ Z5d,„ Z6e%jL                  jO                  d-d.«      e%jL                  jO                  d/d0«      d1„ «       «       Z7d2„ Z8d3„ Z9d4„ Z:d5„ Z;d6„ Z<d7„ Z=d8„ Z>d9„ Z?d:„ Z@d;„ ZAd<„ ZBd=„ ZCd>„ ZDd?„ ZEd@„ ZFdA„ ZGdB„ ZHdC„ ZIyD)EÚTestSimilarityc                 óX   — t        j                  d«      at        j                  d«       y )Nr   Úscipy)r   r   Únp)Úclss    r   Úsetup_classzTestSimilarity.setup_classH   s"   € ô × Ñ  Ó)ˆÜ×Ñ˜GÕ$r?   c                 óú  — t        j                  d«      }|j                  «       }t        j                  t
        t        ||dg¬«       t        j                  t
        t        ||g d¢¬«       t        j                  t         j                  t        ||d¬«       t        j                  t         j                  t        ||d¬«       t        j                  t         j                  t        ||d¬«       t        ||d¬«      d	k(  sJ ‚t        ||d
¬«      dk(  sJ ‚t        ||dd¬«      d	k(  sJ ‚t        ||d
d¬«      dk(  sJ ‚t        ||d
d¬«      �J ‚t        j                  t         j                  t        ||d	¬«       y )Nr   r"   )Úroots)r"   r   é   )é	   r   )r   r[   )r[   r[   ©r!   r"   r   ©r   r!   é   )rY   Útimeoutç-Cëâ6?)r_   )	r   Ú
star_graphÚcopyr   r   r5   r   r   ÚNetworkXError)ÚselfÚG0ÚG1s      r   Ú*test_graph_edit_distance_roots_and_timeoutz9TestSimilarity.test_graph_edit_distance_roots_and_timeoutN   s$  € Ü�]‰]˜1ÓˆØ�W‰W‹YˆÜ�‰”jÔ"5°r¸2ÀaÀSÕIÜ�‰”jÔ"5°r¸2ÂYÕOÜ�‰”b—o‘oÔ':¸BÀÈ&ÕQÜ�‰”b—o‘oÔ':¸BÀÈ&ÕQÜ�‰”b—o‘oÔ':¸BÀÈ&ÕQÜ" 2 r°Ô8¸AÒ=Ð=Ð=Ü" 2 r°Ô8¸AÒ=Ð=Ð=Ü" 2 r°ÀÔCÀqÒHÐHÐHÜ" 2 r°ÀÔCÀqÒHÐHÐHÜ" 2 r°ÀÔHÐPÐPÐPä�‰”b×&Ñ&Ô(;¸RÀÈQÖOr?   c                 óŽ  — t        j                  «       }t        d«      }t        d«      }t	        d«      }t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )	Né   é   r   é   é   é   r!   r^   )r   r0   r   r   r	   r   ©rd   re   rf   ÚG2ÚG3s        r   Útest_graph_edit_distancez'TestSimilarity.test_graph_edit_distance^   sx  € Ü�X‰X‹ZˆÜ˜‹]ˆÜ˜‹^ˆÜ˜‹^ˆä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨bÒ0Ð0Ð0Ü" 2 rÓ*¨bÒ0Ð0Ð0Ü" 2 rÓ*¨bÒ0Ð0Ð0Ü" 2 rÓ*¨bÒ0Ð0Ð0Ü" 2 rÓ*¨bÒ0Ð0Ð0Ü" 2 rÓ*¨bÒ0Ð0Ð0ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ñ/r?   c                 ó>  — t        d«      }t        d«      }|j                  j                  «       D ]  \  }}|dz  dk(  rdnd|d<   Œ |j                  j                  «       D ]  \  }}|dz  dk(  rdnd|d<   Œ t        ||«      dk(  sJ ‚t        ||d„ ¬	«      dk(  sJ ‚y )
Nr   r"   r   ÚredÚblueÚcolorr!   c                 ó   — | d   |d   k(  S ©Nru   r.   r:   s     r   ú<lambda>zDTestSimilarity.test_graph_edit_distance_node_match.<locals>.<lambda>‚   ó   € °"°W±+ÀÀGÁÑ2L€ r?   )Ú
node_match)r   ÚnodesÚitemsr   )rd   rf   ro   ÚnÚattrs        r   Ú#test_graph_edit_distance_node_matchz2TestSimilarity.test_graph_edit_distance_node_matchx   s³   € Ü˜‹^ˆÜ˜‹^ˆØ—x‘x—~‘~Ó'ò 	<‰GˆAˆtØ%&¨¡U¨a¢Z™E°VˆD�ŠMð	<à—x‘x—~‘~Ó'ò 	<‰GˆAˆtØ%&¨¡U¨a¢Z™E°VˆD�ŠMð	<ä" 2 rÓ*¨aÒ/Ð/Ð/äØ�BÑ#Lôð òð	
ñr?   c                 ób  — t        d«      }t        d«      }|j                  j                  «       D ]  \  }}t        |«      dz  dk(  rdnd|d<   Œ |j                  j                  «       D ]  \  }}t        |«      dz  dk(  rdnd|d<   Œ t	        ||«      dk(  sJ ‚t	        ||d„ ¬	«      dk(  sJ ‚y )
Nri   r"   r   rs   rt   ru   r   c                 ó   — | d   |d   k(  S rw   r.   rA   s     r   rx   zDTestSimilarity.test_graph_edit_distance_edge_match.<locals>.<lambda>‘   ry   r?   )Ú
edge_match©r   Úedgesr|   Úminr   )rd   rf   ro   Úer~   s        r   Ú#test_graph_edit_distance_edge_matchz2TestSimilarity.test_graph_edit_distance_edge_match‡   sÀ   € Ü˜‹]ˆÜ˜‹]ˆØ—x‘x—~‘~Ó'ò 	A‰GˆAˆtÜ%(¨£V¨a¡Z°1¢_™E¸&ˆD�ŠMð	Aà—x‘x—~‘~Ó'ò 	B‰GˆAˆtÜ%(¨£V¨q¡[°AÒ%5™E¸6ˆD�ŠMð	Bä" 2 rÓ*¨aÒ/Ð/Ð/äØ�BÑ#Lôð òð	
ñr?   c                 ó0  — t        d«      }t        d«      }|j                  j                  «       D ]  \  }}|dz  dk(  rdnd|d<   Œ |j                  j                  «       D ]  \  }}|dz  dk(  rdnd|d<   Œ d„ }d	„ }d
„ }t        |||||¬«      dk(  sJ ‚y )Nri   r"   r   rs   rt   ru   r!   c                 ó   — | d   |d   k(  ryy)Nru   r!   r   r.   )ÚuattrÚvattrs     r   Únode_subst_costzJTestSimilarity.test_graph_edit_distance_node_cost.<locals>.node_subst_costž   s   € Ø�W‰~  w¡Ò/Øàr?   c                 ó   — | d   dk(  ryy)Nru   rt   é   é2   r.   ©r~   s    r   Únode_del_costzHTestSimilarity.test_graph_edit_distance_node_cost.<locals>.node_del_cost¤   s   € Ø�G‰} Ò&Øàr?   c                 ó   — | d   dk(  ryy)Nru   rt   é(   éd   r.   r�   s    r   Únode_ins_costzHTestSimilarity.test_graph_edit_distance_node_cost.<locals>.node_ins_costª   s   € Ø�G‰} Ò&Øàr?   )rŒ   r‘   r•   )r   r{   r|   r   )rd   rf   ro   r}   r~   rŒ   r‘   r•   s           r   Ú"test_graph_edit_distance_node_costz1TestSimilarity.test_graph_edit_distance_node_cost–   s¶   € Ü˜‹]ˆÜ˜‹]ˆØ—x‘x—~‘~Ó'ò 	<‰GˆAˆtØ%&¨¡U¨a¢Z™E°VˆD�ŠMð	<à—x‘x—~‘~Ó'ò 	<‰GˆAˆtØ%&¨¡U¨a¢Z™E°VˆD�ŠMð	<ò	ò	ò	ô  ØØØ /Ø+Ø+ôð òð		
ñr?   c                 óT  — t        d«      }t        d«      }|j                  j                  «       D ]  \  }}t        |«      dz  dk(  rdnd|d<   Œ |j                  j                  «       D ]  \  }}t        |«      dz  dk(  rdnd|d<   Œ d„ }d	„ }d
„ }t	        |||||¬«      dk(  sJ ‚y )Nri   r"   r   rs   rt   ru   r   c                 ó   — | d   |d   k(  ryy)Nru   ç{®Gáz„?çš™™™™™¹?r.   )ÚgattrÚhattrs     r   Úedge_subst_costzJTestSimilarity.test_graph_edit_distance_edge_cost.<locals>.edge_subst_costÃ   s   € Ø�W‰~  w¡Ò/Øàr?   c                 ó   — | d   dk(  ryy)Nru   rt   çš™™™™™É?ç      à?r.   r�   s    r   Úedge_del_costzHTestSimilarity.test_graph_edit_distance_edge_cost.<locals>.edge_del_costÉ   ó   € Ø�G‰} Ò&Øàr?   c                 ó   — | d   dk(  ryy)Nru   rt   gš™™™™™Ù?ç      ð?r.   r�   s    r   Úedge_ins_costzHTestSimilarity.test_graph_edit_distance_edge_cost.<locals>.edge_ins_costÏ   r¢   r?   )r�   r¡   r¥   gq=
×£pÍ?rƒ   )rd   rf   ro   r†   r~   r�   r¡   r¥   s           r   Ú"test_graph_edit_distance_edge_costz1TestSimilarity.test_graph_edit_distance_edge_cost»   sÃ   € Ü˜‹]ˆÜ˜‹]ˆØ—x‘x—~‘~Ó'ò 	A‰GˆAˆtÜ%(¨£V¨a¡Z°1¢_™E¸&ˆD�ŠMð	Aà—x‘x—~‘~Ó'ò 	B‰GˆAˆtÜ%(¨£V¨q¡[°AÒ%5™E¸6ˆD�ŠMð	Bò	ò	ò	ô  ØØØ /Ø+Ø+ôð òð		
ñr?   c                 ó˜   — t        d«      }t        d«      }t        ||d¬«      �J ‚t        ||d¬«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )Nr"   ri   r   )Úupper_boundé   é   )r   r   ©rd   rf   ro   s      r   Ú$test_graph_edit_distance_upper_boundz3TestSimilarity.test_graph_edit_distance_upper_boundà   sW   € Ü" 1Ó%ˆÜ" 1Ó%ˆÜ" 2 r°qÔ9ÐAÐAÐAÜ" 2 r°rÔ:¸bÒ@Ð@Ð@Ü" 2 rÓ*¨bÒ0Ð0Ñ0r?   c                 ó@  — t        d«      }t        d«      }t        ||«      \  }}|dk(  sJ ‚t        |«      dk(  sJ ‚d„ }g d¢g d¢fg d¢g d¢fg d	¢g d
¢fg d¢g d¢fg d¢g d¢fg d¢g d¢fg}|D �ch c]  } ||Ž ’Œ	 c}|D �ch c]  } ||Ž ’Œ	 c}k(  sJ ‚y c c}w c c}w )Nr   r!   ri   c                 óX   — t        t        | «      «      t        t        |d„ ¬«      «      fS )Nc                 ó   — d | v | fS r9   r.   )Úxs    r   rx   zKTestSimilarity.test_optimal_edit_paths.<locals>.canonical.<locals>.<lambda>ñ   s   € °t¸q°yÀ!°n€ r?   )Úkey)ÚtupleÚsorted)Úvertex_pathÚ	edge_paths     r   Ú	canonicalz9TestSimilarity.test_optimal_edit_paths.<locals>.canonicalî   s)   € ä”f˜[Ó)Ó*Ü”f˜YÑ,DÔEÓFðð r?   )©r   r   ©r!   r!   ©r"   r"   )©r]   r]   ©r\   r\   ©N©r   r"   )r·   r\   ©r"   r!   )©r]   r½   r»   ©Nr]   )r]   ©r!   r   r¹   )rº   ©r\   r½   ©Nr\   )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'   )rd   rf   ro   r6   Úcostr¶   Úexpected_pathsÚps           r   Útest_optimal_edit_pathsz&TestSimilarity.test_optimal_edit_pathsç   sÎ   € Ü˜‹]ˆÜ˜‹^ˆÜ(¨¨RÓ0‰ˆˆtØ�qŠyÐˆyÜ�5‹z˜QŠÐˆò	ò )ÚDðò
 )ÚDðò
 )ÚDðò
 )ÚDðò
 )ÚDðò
 )ÚDðð+
ˆð4 (-Ö- !‘	˜1’Ò-ÈÖ1XÀA±)¸Q²-Ò1XÒXÐXÑXùÒ-ùÒ1Xs   Á0BÂBc                 óv   — t        d«      }t        d«      }d}t        ||«      D ]  }||k  sJ ‚|}Œ |dk(  sJ ‚y )Nr"   ri   iè  rª   )r   r   )rd   rf   ro   ÚbestcostrÇ   s        r   Ú!test_optimize_graph_edit_distancez0TestSimilarity.test_optimize_graph_edit_distance  sP   € Ü" 1Ó%ˆÜ" 1Ó%ˆØˆÜ0°°RÓ8ò 	ˆDØ˜(’?Ð"�?Ø‰Hð	ð ˜2Š~Ð‰~r?   c                 ó*  — t        j                  «       }t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )N)©rF   rF   ©rF   rI   )rÐ   ©rI   rI   )rÏ   rÐ   rÑ   r   rZ   r   r!   )r   r0   Úadd_edges_fromr   rn   s        r   Útest_selfloopszTestSimilarity.test_selfloops  s«  € Ü�X‰X‹ZˆÜ�X‰X‹ZˆØ
×ÑÐ2Ô3Ü�X‰X‹ZˆØ
×ÑÐ2Ô3Ü�X‰X‹ZˆØ
×ÑÐ>Ô?ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ñ/r?   c                 ó*  — t        j                  «       }t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )N)rÐ   ©rI   rJ   ©rJ   rK   )rK   rF   )rÐ   rÕ   rÖ   ©rF   rK   )rÐ   ©rF   rJ   )rI   rK   rÖ   r   r^   r"   rZ   )r   ÚDiGraphrÒ   r   rn   s        r   Útest_digraphzTestSimilarity.test_digraph;  s«  € Ü�Z‰Z‹\ˆÜ�Z‰Z‹\ˆØ
×ÑÐJÔKÜ�Z‰Z‹\ˆØ
×ÑÐJÔKÜ�Z‰Z‹\ˆØ
×ÑÐJÔKä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ñ/r?   c                 ó*  — t        j                  «       }t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      d	k(  sJ ‚t        ||«      d	k(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )
N)rÐ   rÕ   rØ   )rÐ   rÕ   rÕ   rØ   )rÐ   rÕ   rØ   rØ   rØ   r   ri   rj   r^   r!   r"   )r   Ú
MultiGraphrÒ   r   rn   s        r   Útest_multigraphzTestSimilarity.test_multigraphX  s«  € Ü�]‰]‹_ˆÜ�]‰]‹_ˆØ
×ÑÐ>Ô?Ü�]‰]‹_ˆØ
×ÑÐJÔKÜ�]‰]‹_ˆØ
×ÑÐVÔWä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ð/ä" 2 rÓ*¨aÒ/Ð/Ñ/r?   c                 óÜ   — t        j                  «       }|j                  d«       t        j                  «       }|j                  d«       t        ||«      dk(  sJ ‚t        ||«      dk(  sJ ‚y )N))ÚhardwareÚkernel)rà   rß   )rà   Ú	userspace)rá   rà   ))ÚwinterÚspring)rã   Úsummer)rä   Úautumn)rå   râ   r   )r   ÚMultiDiGraphrÒ   r   r«   s      r   Útest_multidigraphz TestSimilarity.test_multidigraphu  sn   € Ü�_‰_ÓˆØ
×Ñðô	
ô �_‰_ÓˆØ
×Ñðô	
ô # 2 rÓ*¨aÒ/Ð/Ð/Ü" 2 rÓ*¨aÒ/Ð/Ñ/r?   c                 óô   — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t	        ||j                  «       t        t        ¬«      dk(  sJ ‚y ©NrF   rG   rI   rL   ©rz   r‚   r   )r   r0   rO   r2   r   rb   r=   rD   ©rd   r   s     r   ÚtestCopyzTestSimilarity.testCopy�  sa   € Ü�H‰H‹JˆØ	�
‰
�3˜cˆ
Ô"Ø	�
‰
�3˜cˆ
Ô"Ø	�
‰
�3˜ 5ˆ
Ô)ä  1§6¡6£8¼Ì6ÔRÐVWÒWð	
ÙWr?   c                 ót  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y ré   ©r   r0   rO   r2   r   r=   rD   r«   s      r   ÚtestSamezTestSimilarity.testSame–  ó–   € Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 ót  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y )NrF   rG   rI   rL   Úbadrê   r!   rî   r«   s      r   ÚtestOneEdgeLabelDiffz#TestSimilarity.testOneEdgeLabelDiff¡  rð   r?   c                 ót  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y )NrF   rG   rI   rL   ÚZrê   r!   rî   r«   s      r   ÚtestOneNodeLabelDiffz#TestSimilarity.testOneNodeLabelDiff¬  rð   r?   c                 óš  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       |j                  dd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y )NrF   rG   rI   rL   rJ   rê   r!   rî   r«   s      r   ÚtestOneExtraNodezTestSimilarity.testOneExtraNode·  s¦   € Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜sˆÔ#Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 ó  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       |j                  ddd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y )	NrF   rG   rI   rJ   rL   úa-crê   r!   rî   r«   s      r   ÚtestOneExtraEdgezTestSimilarity.testOneExtraEdgeÃ  sØ   € Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 óÂ  — t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  ddd¬«       |j                  ddd¬«       t	        ||t
        t        ¬«      dk(  sJ ‚y )	NrF   rG   rI   rL   rJ   rú   rê   r"   rî   r«   s      r   ÚtestOneExtraNodeAndEdgez&TestSimilarity.testOneExtraNodeAndEdgeÒ  s¸   € Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ü�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 óˆ  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       t        ||t        t        ¬	«      d
k(  sJ ‚y )NrF   rG   rI   rK   ÚErL   rN   úd-erê   r   ©rP   r   r0   rO   r2   r   r=   rD   r«   s      r   Ú
testGraph1zTestSimilarity.testGraph1ß  ó¤   € Ü‹^ˆÜ�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 óÖ  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd	¬«       |j	                  ddd
¬«       t        ||t        t        ¬«      dk(  sJ ‚y )NrF   rG   rI   rJ   rK   rÿ   rL   rM   úc-dzc-erê   rZ   r  r«   s      r   Ú
testGraph2zTestSimilarity.testGraph2ë  sÆ   € Ü‹^ˆÜ�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTUÒUÐUÑUr?   c                 ór  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd	¬«       |j	                  ddd
¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       t        ||t        t        ¬«      dk(  sJ ‚y )NrF   rG   rI   rJ   rK   rÿ   ÚFr   rú   úa-dr   zd-fzd-gze-brê   rl   r  r«   s      r   Ú
testGraph3zTestSimilarity.testGraph3ù  s
  € Ü‹^ˆÜ�X‰X‹ZˆØ
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜sˆÔ#Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ø
�‰�C˜ EˆÔ*Ü" 2 r´fÌÔPÐTVÒVÐVÑVr?   c                 óˆ  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       t        ||t        t        ¬	«      d
k(  sJ ‚y )NrF   rG   rI   rJ   rK   rL   rM   r  rê   r"   r  r«   s      r   Ú
testGraph4zTestSimilarity.testGraph4  r  r?   c                 óˆ  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       t        ||t        t        ¬	«      d
k(  sJ ‚y )NrF   rG   rI   rJ   rK   rL   rM   r	  rê   r"   r  r«   s      r   ÚtestGraph4_azTestSimilarity.testGraph4_a  r  r?   c                 óˆ  — t        «       }t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j	                  ddd¬«       |j	                  ddd¬«       |j	                  ddd¬«       t        ||t        t        ¬	«      d
k(  sJ ‚y )NrF   rG   rI   rJ   rK   rL   rM   rò   rê   r!   r  r«   s      r   ÚtestGraph4_bzTestSimilarity.testGraph4_b#  r  r?   Úsimrank_similarityc           
      óÒ  — t        j                  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œddddddœdœ} ||«      }|j                  «       D ]$  \  }}|t        j                  ||   d¬«      k(  rŒ$J ‚ t        j
                  «       }|j                  d	d
¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  g 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œddddddœdœ} ||d¬«      }|j                  «       D ]$  \  }}|t        j                  ||   d¬«      k(  rŒ$J ‚ y )Nr   r!   çˆàí“­IÙ?çÂ~$oCâ?çŠàí“­IÙ?©r   r!   r"   r   rZ   r™   ©Úabsr   ÚUnivrG   ÚProfAr"   ÚProfBr   ÚStudentArZ   ÚStudentB©r]   r½   )r!   r   ©r"   rZ   )rZ   r"   )r   r   ç        ç×(-fðÀ?ç”@<yX¡?gÐ�¦ŸwÚ?gç$=»?g¹PD—®¥?glÉ‹‘Ý•¶?gÔs¸,Õ?çš™™™™™é?)Úimportance_factor)r   r   r|   r   ÚapproxrÙ   rO   rÒ   )rd   r  r   ÚexpectedÚactualÚkÚvs          r   Ú test_simrank_no_source_no_targetz/TestSimilarity.test_simrank_no_source_no_target5  sÝ  € ä�N‰N˜1Óˆð Ø%Ø%Ø%Ø%ñð &ØØ%Ø%Ø%ñð &Ø%ØØ%Ø%ñð &Ø%Ø%ØØ%ñð &Ø%Ø%Ø%Øññ;$
ˆñJ $ AÓ&ˆØ—N‘NÓ$ò 	;‰DˆAˆqØœŸ™ f¨Q¡i°TÔ:Ó:Ð:Ð:ð	;ô
 �J‰J‹LˆØ	�
‰
�1˜Fˆ
Ô#Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Jˆ
Ô'Ø	�
‰
�1˜Jˆ
Ô'Ø	×ÑÒIÔJð ˜Ð!3¸Ð@SÑTØ˜1Ð!3¸Ð@SÑTà%Ø%ØØ&Ø&ñð ˜3Ð#6¸1ÐASÑTà&Ø&Ø&Ø%Øññ
ˆñ( $ A¸Ô=ˆØ—N‘NÓ$ò 	;‰DˆAˆqØœŸ™ f¨Q¡i°TÔ:Ó:Ð:Ð:ñ	;r?   c                 óô  — t        j                  d«      }ddddddœ} ||d¬«      }|t        j                  |d	¬
«      k(  sJ ‚t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  g d¢«       ddddddœ} ||dd¬«      }|t        j                  |d	¬
«      k(  sJ ‚y )Nr   r!   r  r  r  r  r   ©r
   r™   r  r  rG   r  r"   r  r   r  rZ   r  r  r   r!  r"  r#  ©r$  r
   ©r   r   r   r%  rÙ   rO   rÒ   ©rd   r  r   r&  r'  s        r   Útest_simrank_source_no_targetz,TestSimilarity.test_simrank_source_no_targetƒ  sò   € ä�N‰N˜1ÓˆàØ!Ø!Ø!Ø!ñ
ˆñ $ A¨aÔ0ˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ð:ô �J‰J‹LˆØ	�
‰
�1˜Fˆ
Ô#Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Jˆ
Ô'Ø	�
‰
�1˜Jˆ
Ô'Ø	×ÑÒIÔJà˜SÐ%7¸CÐDWÑXˆá# A¸ÀQÔGˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ñ:r?   c                 óÜ  — t        j                  d«      }t        j                  |t        t	        d«      «      «      }ddddddœ} ||d¬	«      }|t        j                  |d
¬«      k(  sJ ‚t        j                  «       }|j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  dd¬«       |j                  g d¢«       t        t	        t        j                  |d«      j                  «       «      «      }t        j                  ||«      }ddddddœ} ||dd¬«      }|t        j                  |d
¬«      k(  sJ ‚y )Nr   Úabcder!   r  r  r  )ÚaÚbÚcÚdr†   r3  r,  r™   r  r   r  rG   r  r"   r  r   r  rZ   r  r  rH   r   r!  r"  )r  r  r  r  r  r#  r-  )r   r   Úrelabel_nodesÚdictÚ	enumerater   r%  rÙ   rO   rÒ   Úget_node_attributesÚvalues)rd   r  r   r&  r'  Únode_labelss         r   Útest_simrank_noninteger_nodesz,TestSimilarity.test_simrank_noninteger_nodesŸ  sM  € ä�N‰N˜1ÓˆÜ×Ñ˜Q¤¤Y¨wÓ%7Ó 8Ó9ˆàØ#Ø#Ø#Ø#ñ
ˆñ $ A¨cÔ2ˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ð:ô �J‰J‹LˆØ	�
‰
�1˜Fˆ
Ô#Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Jˆ
Ô'Ø	�
‰
�1˜Jˆ
Ô'Ø	×ÑÒIÔJÜœ9¤R×%;Ñ%;¸A¸wÓ%G×%NÑ%NÓ%PÓQÓRˆÜ×Ñ˜Q Ó,ˆð ØØ'ØØ+ñ
ˆñ $ A¸ÀVÔLˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ñ:r?   c                 óà  — t        j                  d«      }d} ||dd¬«      }|t        j                  |d¬«      k(  sJ ‚t        j                  «       }|j                  dd¬«       |j                  dd	¬«       |j                  d
d¬«       |j                  dd¬«       |j                  dd¬«       |j                  g d¢«       d} ||ddd
¬«      }|t        j                  |d¬«      k(  sJ ‚y )Nr   r!   r   ©r
   Útargetr™   r  r  rG   r  r"   r  r   r  rZ   r  r  r!  r#  )r$  r
   r@  gñhãˆµøä>r.  r/  s        r   Útest_simrank_source_and_targetz-TestSimilarity.test_simrank_source_and_targetÄ  sØ   € ä�N‰N˜1ÓˆØˆÙ# A¨a¸Ô:ˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ð:ô �J‰J‹LˆØ	�
‰
�1˜Fˆ
Ô#Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Gˆ
Ô$Ø	�
‰
�1˜Jˆ
Ô'Ø	�
‰
�1˜Jˆ
Ô'Ø	×ÑÒIÔJà%ˆñ $ A¸ÀQÈqÔQˆØœ6Ÿ=™=¨°TÔ:Ò:Ð:Ñ:r?   Úalgc                 ó|   — t        j                  d«      }t        j                  t         j                  ||d¬«       y )Nr   r   )Úmax_iterations)r   r   r   r   ÚExceededMaxIterations)rd   rB  r   s      r   Útest_simrank_max_iterationsz*TestSimilarity.test_simrank_max_iterationsÛ  s(   € ä�N‰N˜1ÓˆÜ�‰”b×.Ñ.°°QÀrÖJr?   c                 óÐ   — t        j                  d«      }t        j                  t         j                  d¬«      5  t        j
                  |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   úSource node 10 not in Gr   r   r,  ©r   r   r   r   r   r  rë   s     r   Útest_simrank_source_not_foundz,TestSimilarity.test_simrank_source_not_foundà  óH   € Ü�N‰N˜1ÓˆÜ�]‰]œ2Ÿ?™?Ð2KÔLñ 	0Ü×!Ñ! !¨BÕ/÷	0÷ 	0ñ 	0úó   »AÁA%c                 óÐ   — t        j                  d«      }t        j                  t         j                  d¬«      5  t        j
                  |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   zTarget node 10 not in Gr   r   )r@  rI  rë   s     r   Útest_simrank_target_not_foundz,TestSimilarity.test_simrank_target_not_foundå  rK  rL  c                 ó  — t        j                  d«      }ddddddœ}ddd	d	ddœ}t        j                  |d
¬«      }|t        j                  |d¬«      k(  sJ ‚|t        j                  |d¬«      k7  sJ ‚|t        j                  |d¬«      k(  sJ ‚t         j
                  j                  |d
¬«      }|t        j                  |d¬«      k(  sJ ‚|t        j                  |d¬«      k7  sJ ‚|t        j                  |d¬«      k(  sJ ‚y )Nr   r!   gL†Z±?Ù?gœ£R9Y@â?g�£R9Y@â?r  r¤   çô©I˜CÙ?çŽÎ«cAâ?r   r,  çH¯¼šò×z>r  r`   gü©ñÒMbP?)r   r   r  r   r%  Ú
similarityÚ_simrank_similarity_python)rd   r   Úexpected_python_tol4Úexpected_numpy_tol4r'  s        r   Útest_simrank_between_versionsz,TestSimilarity.test_simrank_between_versionsê  s  € Ü�N‰N˜1Óˆð Ø Ø!Ø!Ø ñ 
Ðð Ø!Ø Ø Ø!ñ
Ðô ×&Ñ& q°Ô3ˆØ"¤f§m¡m°FÀÔ&EÒEÐEÐEà#¤v§}¡}°VÀÔ'FÒFÐFÐFØ#¤v§}¡}°VÀÔ'FÒFÐFÐFä—‘×9Ñ9¸!ÀAÐ9ÓFˆØ#¤v§}¡}°VÀÔ'FÒFÐFÐFà"¤f§m¡m°FÀÔ&EÒEÐEÐEØ"¤f§m¡m°FÀÔ&EÒEÐEÑEr?   c                 óø   — t        j                  d«      }t        j                  g d¢g d¢g d¢g d¢g d¢g«      }t         j                  j                  |«      }t        j                  j                  ||d¬«       y )	Nr   ©r¤   rP  rQ  rQ  rP  )rP  r¤   rP  rQ  rQ  )rQ  rP  r¤   rP  rQ  )rQ  rQ  rP  r¤   rP  )rP  rQ  rQ  rP  r¤   rR  ©Úatol©r   r   rU   ÚarrayrS  Ú_simrank_similarity_numpyÚtestingÚassert_allclose©rd   r   r&  r'  s       r   Ú&test_simrank_numpy_no_source_no_targetz5TestSimilarity.test_simrank_numpy_no_source_no_target  sl   € Ü�N‰N˜1ÓˆÜ—8‘8òòòòòð;$ó&
ˆôN —‘×8Ñ8¸Ó;ˆÜ
�
‰
×"Ñ" 8¨V¸$Ð"Õ?r?   c                 óâ   — t        j                  d«      }t        j                  g d¢«      }t         j                  j                  |d¬«      }t        j                  j                  ||d¬«       y )Nr   rY  r   r,  rR  rZ  r\  ra  s       r   Ú#test_simrank_numpy_source_no_targetz2TestSimilarity.test_simrank_numpy_source_no_target4  sW   € Ü�N‰N˜1ÓˆÜ—8‘8òó
ˆô —‘×8Ñ8¸À1Ð8ÓEˆÜ
�
‰
×"Ñ" 8¨V¸$Ð"Õ?r?   c                 óº   — t        j                  d«      }d}t         j                  j                  |dd¬«      }t        j
                  j                  ||d¬«       y )Nr   r¤   r   r?  rR  rZ  )r   r   rS  r^  rU   r_  r`  ra  s       r   Ú$test_simrank_numpy_source_and_targetz3TestSimilarity.test_simrank_numpy_source_and_targetB  sI   € Ü�N‰N˜1ÓˆØˆÜ—‘×8Ñ8¸À1ÈQÐ8ÓOˆÜ
�
‰
×"Ñ" 8¨V¸$Ð"Õ?r?   c                 ó.  — t        j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       dddddœ}t        j                  |ddd	¬
«      }||k(  sJ ‚y )Nr   r!   r"   r   rZ   r    g      À?)r   r"   r!   rZ   r#   r/   ©r   r0   r2   Úpanther_similarity©rd   r   r&  Úsims       r   Ú"test_panther_similarity_unweightedz1TestSimilarity.test_panther_similarity_unweightedH  sƒ   € Ü�H‰H‹JˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ˜s s¨uÑ5ˆÜ×#Ñ# A q°a¸bÔAˆØ�hŠÐ‰r?   c                 óD  — t        j                  «       }|j                  ddd¬«       |j                  ddd¬«       |j                  ddd¬«       |j                  ddd	¬«       |j                  dd
d¬«       dddddœ}t        j                  |dddd¬«      }||k(  sJ ‚y )NÚv1Úv2r   )ÚwÚv3r!   Úv4r"   rš   Úv5g      è?r    g      Ð?)rq  rr  ro  rs  rp  r#   )r$   Úweightr%   rh  rj  s       r   Ú test_panther_similarity_weightedz/TestSimilarity.test_panther_similarity_weightedS  s™   € Ü�H‰H‹JˆØ	�
‰
�4˜ ˆ
Ô#Ø	�
‰
�4˜ ˆ
Ô#Ø	�
‰
�4˜ ˆ
Ô#Ø	�
‰
�4˜ ˆ
Ô%Ø	�
‰
�4˜ ˆ
Ô#Ø c°¸DÑAˆÜ×#Ñ# A t¸À3ÈRÔPˆØ�hŠÐ‰r?   c                 óô   — t        j                  «       }|j                  g d¢«       t        j                  t         j
                  d¬«      5  t        j                  |d¬«       d d d «       y # 1 sw Y   y xY w)N©r]   r½   )r   r   r\   r  rH  r   r   r,  )r   r0   rÒ   r   r   r   ri  rë   s     r   Ú(test_panther_similarity_source_not_foundz7TestSimilarity.test_panther_similarity_source_not_found^  sT   € Ü�H‰H‹JˆØ	×ÑÒAÔBÜ�]‰]œ2Ÿ?™?Ð2KÔLñ 	0Ü×!Ñ! !¨BÕ/÷	0÷ 	0ñ 	0ús   ÁA.Á.A7c                 ó  — t        j                  «       }|j                  t        d«      «       t	        j
                  t         j                  d¬«      5  t        j                  |d¬«       d d d «       y # 1 sw Y   y xY w)Nr   zAPanther similarity is not defined for the isolated source node 1.r   r!   r,  )r   r0   r1   Úranger   r   ÚNetworkXUnfeasibleri  rë   s     r   Ú test_panther_similarity_isolatedz/TestSimilarity.test_panther_similarity_isolatedd  s^   € Ü�H‰H‹JˆØ	×Ñœ˜q›Ô"Ü�]‰]Ü×!Ñ!ØUô
ñ 	/ô ×!Ñ! !¨AÕ.÷		/÷ 	/ñ 	/ús   ÁA5Á5A>Ú	num_paths)r!   r   r   r
   r]   c                 ó  ‡— t        j                  g d¢«      }i }t        j                  ||d|‰¬«      }t        |«      }t	        |«      |k(  sJ ‚t        ˆfd„|D «       «      sJ ‚t        |‰   «      t        t        |«      «      k(  sJ ‚y )Nrw  r"   )r$   Ú	index_mapr
   c              3   ó.   •K  — | ]  }|d    ‰k(  –— Œ y­wr-   r.   )r)   rÉ   r
   s     €r   r+   zGTestSimilarity.test_generate_random_paths_with_start.<locals>.<genexpr>  s   øè ø€ Ò1 a�1�Q‘4˜6•>Ñ1ùs   ƒ)r   r0   r   r3   r'   r4   r³   rz  )rd   r}  r
   r   r  r   r6   s     `    r   Ú%test_generate_random_paths_with_startz4TestSimilarity.test_generate_random_paths_with_startm  s�   ø€ ô �H‰HÒ=Ó>ˆØˆ	ä×+Ñ+ØØØØØô
ˆô �X“ˆô �5‹z˜YÒ&Ð&Ð&äÓ1¨5Ô1Ô1Ð1Ð1ô �i Ñ'Ó(¬D´°yÓ1AÓ,BÒBÐBÑBr?   c                 ó²  — i }d}d}t        j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       t        j                  ||||d¬«      }g d	¢g d
¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
}h d£h d£h d£h d£ddhdœ}|t	        |«      k(  sJ ‚||k(  sJ ‚y )Nr   r"   r   r!   r   rZ   r#   ©r$   r  r%   )r   r   r   )rZ   r"   r!   )r"   r!   r   )r"   r   r   )r   r   r!   )rZ   r"   r   )r   r   r"   )r"   r!   r"   >   r   r"   r   rZ   r   ri   rj   r^   >   r!   r"   rZ   r   rj   r[   >   r!   r"   r   ri   rj   r^   r[   >   r   r   rZ   r   r^   ri   r  ©r   r0   r2   r   r3   ©rd   r  r}  r$   r   r6   rÈ   Úexpected_maps           r   Ú%test_generate_random_paths_unweightedz4TestSimilarity.test_generate_random_paths_unweighted„  sâ   € Øˆ	Øˆ	ØˆÜ�H‰H‹JˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔÜ×(Ñ(Øˆy k¸YÈRô
ˆò ÚÚÚÚÚÚÚÚÚð
ˆò (Ú!Ú$ÚØ�1ˆvñ
ˆð ¤ e£Ò,Ð,Ð,Ø˜yÒ(Ð(Ñ(r?   c                 óô  — i }d}d}t        j                  «       }|j                  ddd¬«       |j                  ddd¬«       |j                  dd	d
¬«       |j                  ddd¬«       |j                  ddd¬«       |j                  dd	d¬«       t        j                  ||||d¬«      }g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
}h d£h d£h d£h d£h d£h d£d œ}|t	        |«      k(  sJ ‚||k(  sJ ‚y )!Nr   ri   r3  r4  g333333ã?©rt  r5  rŸ   r6  rš   r†   gffffffæ?ÚfgÍÌÌÌÌÌì?g333333Ó?r#   rƒ  )r6  r5  rŠ  r5  r6  r3  r4  )r†   r5  rŠ  r5  rŠ  r5  r†   )r6  r3  r4  r3  r4  r3  r5  )r4  r3  r6  r3  r4  r3  r4  )r6  r3  r4  r3  r4  r3  r6  )r6  r3  r4  r3  r4  r3  r4  )rŠ  r5  rŠ  r5  rŠ  r5  r†   )r6  r3  r6  r3  r4  r3  r4  )r†   r5  rŠ  r5  r†   r5  r6  >   r   r"   r   rZ   r   ri   r^   r[   >   r   r!   r"   r   rj   r[   >   r   r!   rj   r[   >   r   r"   r   rZ   r   ri   r^   >   r!   rj   r[   )r6  r5  rŠ  r3  r4  r†   r„  r…  s           r   Ú#test_generate_random_paths_weightedz2TestSimilarity.test_generate_random_paths_weighted¨  s  € Øˆ	Øˆ	ØˆÜ�H‰H‹JˆØ	�
‰
�3˜ Cˆ
Ô(Ø	�
‰
�3˜ Cˆ
Ô(Ø	�
‰
�3˜ Cˆ
Ô(Ø	�
‰
�3˜ Cˆ
Ô(Ø	�
‰
�3˜ Cˆ
Ô(Ø	�
‰
�3˜ Cˆ
Ô(Ü×(Ñ(Øˆy k¸YÈRô
ˆò
 0Ú/Ú/Ú/Ú/Ú/Ú/Ú/Ú/Ú/ð
ˆò *Ú#ÚÚ&Ú&Úñ
ˆð ¤ e£Ò,Ð,Ð,Ø˜yÒ(Ð(Ñ(r?   c                 óŽ   — t        j                  dg«      }t        j                  «       }t        j                  ||«      dk(  sJ ‚y )Nr·   r"   ©r   rÙ   r   r«   s      r   Ú&test_one_node_one_loop_and_empty_graphz5TestSimilarity.test_one_node_one_loop_and_empty_graphÏ  s8   € Ü�Z‰Z˜˜Ó!ˆÜ�Z‰Z‹\ˆÜ×%Ñ% b¨"Ó-°Ò2Ð2Ñ2r?   c                 óæ   — t        j                  ddg«      }t        j                  |t        j                  «       «      dk(  sJ ‚t        j                  |t        j                  «       «      dk(  sJ ‚y )Nr·   r   )r   ræ   r   rÙ   )rd   rf   s     r   Ú'test_one_node_two_loops_and_empty_graphz6TestSimilarity.test_one_node_two_loops_and_empty_graphÔ  sX   € Ü�_‰_˜f fÐ-Ó.ˆÜ×%Ñ% b¬"¯*©*«,Ó7¸1Ò<Ð<Ð<Ü×%Ñ% b¬"¯/©/Ó*;Ó<ÀÒAÐAÑAr?   c                 óŒ   — t        j                  ddg«      }t        j                  |t        j                  «       «      dk(  sJ ‚y )Nr·   r¸   rZ   r�  rë   s     r   Útest_two_directed_loopsz&TestSimilarity.test_two_directed_loopsÙ  s6   € Ü�J‰J˜ Ð'Ó(ˆÜ×%Ñ% a¬¯©«Ó6¸!Ò;Ð;Ñ;r?   c                 ó  — d\  }}t        j                  «       }|j                  ||f«       |j                  ||fg«       t        j                  «       }|j                  ||f«       |j                  ||fg«       ||fD ]>  }|D ]  }||j                  |   d<   Œ |j
                  D ]  }||j
                  |   d<   Œ Œ@ d„ }t        j                  ||||¬«      dk(  sJ ‚t        j                  ||||¬«      dk(  sJ ‚y)zgG2 has edge (a,b) and G3 has edge (a,a) but node order for G2 is (a,b)
        while for G3 it is (b,a)rÐ   r~   c                 ó   — | |k(  S r9   r.   )r°   Úys     r   Ú
user_matchzETestSimilarity.test_symmetry_with_custom_matching.<locals>.user_matchî  s   € Ø˜‘6ˆMr?   rê   r!   N)r   r0   r1   rÒ   r{   r„   r   )	rd   r3  r4  ro   rp   r   r}   r†   r–  s	            r   Ú"test_symmetry_with_custom_matchingz1TestSimilarity.test_symmetry_with_custom_matchingÝ  s  € ð ‰ˆˆ1Ü�X‰X‹ZˆØ
×Ñ˜1˜a˜&Ô!Ø
×Ñ˜A˜q˜6˜(Ô#Ü�X‰X‹ZˆØ
×Ñ˜1˜a˜&Ô!Ø
×Ñ˜A˜q˜6˜(Ô#Ø�b�ò 	'ˆAØò '�Ø%&�—‘˜‘
˜6Ò"ð'à—W‘Wò '�Ø%&�—‘˜‘
˜6Ò"ñ'ð	'ò	ô ×"Ñ" 2 r°jÈZÔXØòð	
ðô ×"Ñ" 2 r°jÈZÔXØòð	
ñr?   c                 ó®  — t        j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       t        j                  |ddddd¬«      }t	        |«      dkD  sJ ‚d|vsJ ‚t        d„ |D «       «      sJ ‚t        d	„ |j                  «       D «       «      sJ ‚y
)z2Basic test for panther_vector_similarity function.r   r!   r"   r   rZ   r#   ©rK   r(  r$   r%   c              3   ó$   K  — | ]  }|d v –— Œ
 y­w)©r!   r"   r   rZ   Nr.   ©r)   Únodes     r   r+   zFTestSimilarity.test_panther_vector_similarity_basic.<locals>.<genexpr>  s   è ø€ Ò8¨D�4˜<Ô'Ñ8ùs   ‚c              3   ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­w©r   r!   Nr.   ©r)   Úscores     r   r+   zFTestSimilarity.test_panther_vector_similarity_basic.<locals>.<genexpr>  ó   è ø€ Ò= u�1˜–? —?�?Ñ=ùó   ‚N©r   r0   r2   Úpanther_vector_similarityr'   r4   r;  ©rd   r   rk  s      r   Ú$test_panther_vector_similarity_basicz3TestSimilarity.test_panther_vector_similarity_basicú  s·   € ä�H‰H‹JˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔä×*Ñ*¨1¨a°1¸ÀqÈrÔRˆä�3‹x˜!Š|Ðˆ|Ø˜‰|Ðˆ|ÜÑ8°CÔ8Ô8Ð8Ð8ÜÑ=°·
±
³Ô=Ô=Ð=Ñ=r?   c                 ó´  ‡— t        j                  «       }|j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       |j                  dd«       t        j                  |ddddd¬«      Št	        ‰«      dk(  sJ ‚d‰vsJ ‚t        ˆfd„d	D «       «      sJ ‚t        d
„ ‰j                  «       D «       «      sJ ‚y)z5Test panther_vector_similarity with unweighted graph.r   r!   r"   r   rZ   r#   r™  c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr9   r.   ©r)   r�  rk  s     €r   r+   zKTestSimilarity.test_panther_vector_similarity_unweighted.<locals>.<genexpr>  s   øè ø€ Ò8 4�4˜3”;Ñ8ùó   ƒr›  c              3   ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­wrŸ  r.   r   s     r   r+   zKTestSimilarity.test_panther_vector_similarity_unweighted.<locals>.<genexpr>  r¢  r£  Nr¤  r¦  s     @r   Ú)test_panther_vector_similarity_unweightedz8TestSimilarity.test_panther_vector_similarity_unweighted
  s¸   ø€ ä�H‰H‹JˆØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔØ	�
‰
�1�aÔä×*Ñ*¨1¨a°1¸ÀqÈrÔRˆä�3‹x˜1Š}Ðˆ}Ø˜‰|Ðˆ|ÜÓ8¨<Ô8Ô8Ð8Ð8ÜÑ=°·
±
³Ô=Ô=Ð=Ñ=r?   c           	      óÊ  ‡— t        j                  «       }|j                  ddd¬«       |j                  ddd¬«       |j                  ddd¬«       |j                  ddd	¬«       |j                  dd
d¬«       t        j                  |dddddd¬«      Št	        ‰«      dk(  sJ ‚d‰vsJ ‚t        d„ ‰j                  «       D «       «      sJ ‚t        ˆfd„dD «       «      sJ ‚y)z3Test panther_vector_similarity with weighted graph.rn  ro  r   r‰  rq  r!   rr  r"   rš   rs  r   rZ   rt  r#   )rK   r(  r$   rt  r%   c              3   ó<   K  — | ]  }d |cxk  xr dk  nc –— Œ y­wrŸ  r.   r   s     r   r+   zITestSimilarity.test_panther_vector_similarity_weighted.<locals>.<genexpr>)  r¢  r£  c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wr9   r.   rª  s     €r   r+   zITestSimilarity.test_panther_vector_similarity_weighted.<locals>.<genexpr>*  s   øè ø€ Ò> 4�4˜3”;Ñ>ùr«  )ro  rq  rr  Nr¤  r¦  s     @r   Ú'test_panther_vector_similarity_weightedz6TestSimilarity.test_panther_vector_similarity_weighted  sÔ   ø€ ä�H‰H‹JˆØ	�
‰
�4˜ aˆ
Ô(Ø	�
‰
�4˜ aˆ
Ô(Ø	�
‰
�4˜ aˆ
Ô(Ø	�
‰
�4˜ cˆ
Ô*Ø	�
‰
�4˜ aˆ
Ô(ä×*Ñ*Øˆt�q˜A¨1°XÀBô
ˆô �3‹x˜1Š}Ðˆ}Ø˜3‰ÐˆÜÑ=°·
±
³Ô=Ô=Ð=Ð=ÜÓ>Ð+=Ô>Ô>Ð>Ñ>r?   c                 óð   — t        j                  «       }|j                  g d¢«       t        j                  t         j
                  «      5  t        j                  |d¬«       ddd«       y# 1 sw Y   yxY w)z=Test panther_vector_similarity with non-existent source node.rw  r   r,  N)r   r0   rÒ   r   r   r   r¥  rë   s     r   Ú/test_panther_vector_similarity_source_not_foundz>TestSimilarity.test_panther_vector_similarity_source_not_found,  sQ   € ä�H‰H‹JˆØ	×ÑÒAÔBä�]‰]œ2Ÿ?™?Ó+ñ 	7Ü×(Ñ(¨°2Õ6÷	7÷ 	7ñ 	7ús   ÁA,Á,A5c                 ó"  — t        j                  «       }|j                  t        d«      «       |j	                  dd«       t        j                  t         j                  «      5  t        j                  |d¬«       ddd«       y# 1 sw Y   yxY w)z9Test panther_vector_similarity with isolated source node.r   r   r!   r"   r,  N)	r   r0   r1   rz  r2   r   r   r{  r¥  rë   s     r   Ú'test_panther_vector_similarity_isolatedz6TestSimilarity.test_panther_vector_similarity_isolated4  sd   € ä�H‰H‹JˆØ	×Ñœ˜q›Ô"Ø	�
‰
�1�aÔä�]‰]œ2×0Ñ0Ó1ñ 	6Ü×(Ñ(¨°1Õ5÷	6÷ 	6ñ 	6ús   Á$BÂBc                 óÐ   — t        j                  d«      }t        j                  t         j                  «      5  t        j
                  |ddd¬«       ddd«       y# 1 sw Y   yxY w)z%Test raises when D > number of nodes.r   r   r   )rK   r(  N©r   ra   r   r   r{  r¥  rë   s     r   Ú*test_panther_vector_similarity_too_large_Dz9TestSimilarity.test_panther_vector_similarity_too_large_D=  sK   € ä�M‰M˜!Óˆä�]‰]œ2×0Ñ0Ó1ñ 	9Ü×(Ñ(¨¨A°°aÕ8÷	9÷ 	9ñ 	9ús   ¹AÁA%c                 óÎ   — t        j                  d«      }t        j                  t         j                  «      5  t        j
                  |dd¬«       ddd«       y# 1 sw Y   yxY w)z%Test raises when k > number of nodes.r   r   r   )r(  Nr·  rë   s     r   Ú*test_panther_vector_similarity_too_large_kz9TestSimilarity.test_panther_vector_similarity_too_large_kD  sI   € ä�M‰M˜!Óˆä�]‰]œ2×0Ñ0Ó1ñ 	4Ü×(Ñ(¨¨A°Õ3÷	4÷ 	4ñ 	4ús   ¹AÁA$c                 óÄ   — t        j                  «       }|j                  dd«       t        j                  |dddd¬«      }t	        |«      dk(  sJ ‚d|v sJ ‚|d   dkD  sJ ‚y)z7Test panther_vector_similarity with a very small graph.r   r!   r"   r#   )rK   r(  r%   N)r   r0   r2   r¥  r'   r¦  s      r   Ú*test_panther_vector_similarity_small_graphz9TestSimilarity.test_panther_vector_similarity_small_graphK  s^   € ä�H‰H‹JˆØ	�
‰
�1�aÔä×*Ñ*¨1¨a°1¸ÀÔCˆä�3‹x˜1Š}Ðˆ}Ø�C‰xˆˆxØ�1‰v˜ŠzÐ‰zr?   c                 óÈ   — t        j                  «       }|j                  g d¢«       t        j                  |dddd¬«      }t        j                  |dddd¬«      }||k(  sJ ‚y)z4Test that results are deterministic with fixed seed.rw  r   r   r"   r#   )rK   r$   r%   N)r   r0   rÒ   r¥  )rd   r   Úsim1Úsim2s       r   Ú,test_panther_vector_similarity_deterministicz;TestSimilarity.test_panther_vector_similarity_deterministicV  sX   € ä�H‰H‹JˆØ	×ÑÒAÔBä×+Ñ+¨A¨q°AÀ1È2ÔNˆä×+Ñ+¨A¨q°AÀ1È2ÔNˆà�tŠ|Ð‰|r?   c                 óä   — t        j                  d«       t        j                  «       }|j	                  g d¢«       t        j
                  |dddd¬«      }d|vsJ ‚t        d„ |D «       «      sJ ‚y)	z/Test panther_similarity with string node names.r   ©rÐ   rØ   r×   rÕ   rF   r"   r#   )r(  r$   r%   c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr9   ©Ú
isinstanceÚstrrœ  s     r   r+   zFTestSimilarity.test_panther_similarity_string_nodes.<locals>.<genexpr>j  ó   è ø€ Ò9¨T”:˜d¤C×(Ñ9ùr£  N)r   r   r   r0   rÒ   ri  r4   r¦  s      r   Ú$test_panther_similarity_string_nodesz3TestSimilarity.test_panther_similarity_string_nodesa  sb   € ä×Ñ˜GÔ$Ü�H‰H‹JˆØ	×ÑÒIÔJä×#Ñ# A s¨a¸QÀRÔHˆà˜#‰~Ðˆ~ÜÑ9°SÔ9Ô9Ð9Ñ9r?   c                 óæ   — t        j                  d«       t        j                  «       }|j	                  g d¢«       t        j
                  |ddddd¬«      }d|vsJ ‚t        d„ |D «       «      sJ ‚y	)
z6Test panther_vector_similarity with string node names.r   rÂ  rF   r   r"   r#   r™  c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr9   rÄ  rœ  s     r   r+   zMTestSimilarity.test_panther_vector_similarity_string_nodes.<locals>.<genexpr>u  rÇ  r£  N)r   r   r   r0   rÒ   r¥  r4   r¦  s      r   Ú+test_panther_vector_similarity_string_nodesz:TestSimilarity.test_panther_vector_similarity_string_nodesl  se   € ä×Ñ˜GÔ$Ü�H‰H‹JˆØ	×ÑÒIÔJä×*Ñ*¨1¨c°Q¸!ÈÐQSÔTˆà˜#‰~Ðˆ~ÜÑ9°SÔ9Ô9Ð9Ñ9r?   c                 óŠ  — t        j                  d«       t        j                  d«      }dD ]”  }t        j                  |d|d¬«      }t        |«      |k(  sJ d|› dt        |«      › d	�«       ‚d|vsJ d
«       ‚t        j                  |d|d¬«      }t        |«      |k(  sJ d|› dt        |«      › d	�«       ‚d|vrŒ�J d
«       ‚ y )Nr   r”   )r!   r"   r   rZ   r   r   r!   r#   )r
   r(  r%   zpanther_similarity k=z
 returned z resultsz$Source node should not be in resultszpanther_vector_similarity k=)r   r   r   ra   ri  r'   r¥  )rd   r   Úk_valÚresult_pantherÚresult_vectors        r   Ú5test_panther_similarity_k_parameter_returns_k_resultszDTestSimilarity.test_panther_similarity_k_parameter_returns_k_resultsw  sí   € Ü×Ñ˜GÔ$Ü�M‰M˜#Óˆà(ò 	RˆEÜ×2Ñ2°1¸QÀ%ÈbÔQˆNÜ�~Ó&¨%Ò/ð Ø'¨ w¨j¼¸^Ó9LÐ8MÈXÐVóÐ/ð ˜NÑ*ÐRÐ,RÓRÐ*ä×8Ñ8¸À1ÈÐTVÔWˆMÜ�}Ó%¨Ò.ð Ø.¨u¨g°ZÄÀMÓ@RÐ?SÐS[Ð\óÐ.ð ˜MÒ)ÐQÐ+QÓQÐ)ñ	Rr?   N)JÚ__name__Ú
__module__Ú__qualname__ÚclassmethodrW   rg   rq   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  Ú
algorithmsrS  rT  Úsimrank_algsr   ÚmarkÚparametrizer*  r0  r=  rA  rF  rJ  rN  rW  rb  rd  rf  rl  ru  rx  r|  r�  r‡  r‹  rŽ  r�  r’  r—  r§  r­  r±  r³  rµ  r¸  rº  r¼  rÀ  rÈ  rË  rÐ  r.   r?   r   rR   rR   G   sh  „ Øñ%ó ð%ò
Pò 0ò4
ò
ò#
òJ#
òJ1ò'YòRò0ò:0ò:0ò:0ò0
ò	Vò	Vò	Vò
VòVòVò
VòVòWò$
Vò
Vò
Vð 	×ÑØ
�‰× Ñ ×;Ñ;ð€Lð
 ‡[�[×ÑÐ1°<Ó@ñK;ó AðK;ðZ ‡[�[×ÑÐ1°<Ó@ñ;ó Að;ð6 ‡[�[×ÑÐ1°<Ó@ñ";ó Að";ðH ‡[�[×ÑÐ1°<Ó@ñ;ó Að;ð, ‡[�[×Ñ˜U LÓ1ñKó 2ðKò0ò
0ò
Fò<*@òX@ò@ò	ò	ò0ò/ð ‡[�[×Ñ˜[¨*Ó5Ø‡[�[×Ñ˜X vÓ.ñCó /ó 6ðCò*")òH%)òN3ò
Bò
<ò
ò:>ò >ò ?ò$7ò6ò9ò4ò	ò	ò	:ò	:óRr?   rR   )r   Únetworkxr   Únetworkx.algorithms.similarityr   r   r   Únetworkx.generators.classicr   r   r   r	   r×  rØ  r   Úfilterwarningsr7   r=   rD   rP   rR   r.   r?   r   ú<module>rÝ     s…   ðÛ ã ÷ñ ÷
ó ð ‡�×Ñ˜ ;Ó/ñó 0ðð ‡�×ÑÐ4Ó5ñó 6ðò.òò	÷Rò Rr?   