Ë
    ©Ó^j   ã                   óÈ   — d Z ddlZddlmZ ddlmZ ddlZddl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*                  j-                  dddg«      d„ «       Zy)z7Tests for the :mod:`networkx.algorithms.triads` module.é    N)Údefaultdict)Úsamplec                  óî   — t        j                  «       } | j                  g d¢«       i 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“}t        j                  | «      }||k(  sJ ‚y)ú"Tests the triadic_census function.©
Ú01Ú02Ú03Ú04Ú05Ú12Ú16Ú51Ú56Ú65Ú030Té   Ú120Cé   Ú210r   Ú120UÚ012é	   Ú102é   Ú021UÚ111UÚ003é   Ú030CÚ021DÚ201Ú111DÚ300Ú120DÚ021CN)ÚnxÚDiGraphÚadd_edges_fromÚtriadic_census)ÚGÚexpectedÚactuals      úp/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_triads.pyÚtest_triadic_censusr/      sÿ   € ä
�
‰
‹€AØ×ÑÒQÔRðØ�ðà�ðð 	ˆqðð 	�ð	ð
 	ˆqðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	ˆqðð 	�ðð  	�ð!€Hô$ ×Ñ˜qÓ!€FØ�vÒÐÑó    c                  ó  — t        j                  «       } | j                  «       } t        d«      D ]M  }t	        t        | j                  «       «      d«      }| j                  |«      }t        j                  |«      rŒMJ ‚ y)zTests the is_triad functionéd   r   N)	r'   Úkarate_club_graphÚto_directedÚranger   ÚsortedÚnodesÚsubgraphÚis_triad)r+   Úir7   ÚG2s       r.   Útest_is_triadr<   &   sc   € ä
×ÑÓ€AØ	�‰‹€AÜ�3‹Zò ˆÜ”v˜aŸg™g›iÓ(¨!Ó,ˆØ�Z‰Z˜ÓˆÜ�{‰{˜2�Ðˆñr0   c                  óÊ  ‡— t        j                  «       } | j                  g d¢«       t        d«      D ���cg c]4  }t        |dz   d«      D ]   }t        |dz   d«      D ]  }|› d|› d|› �‘Œ Œ" Œ6 c}}}Š‰D �cg c]"  }| j	                  |j                  d«      «      ‘Œ$ c}Št        t        j                  | «      «      }t        ˆfd„|D «       «      sJ ‚yc c}}}w c c}w )zTests the all_triads function.r   é   r   ú,c              3   óH   •‡K  — | ]  Št        ˆfd „‰D «       «      –— Œ y­w)c              3   óJ   •K  — | ]  }t        j                  |‰«      –— Œ y ­w©N©r'   Úis_isomorphic)Ú.0ÚG1r;   s     €r.   ú	<genexpr>z,test_all_triads.<locals>.<genexpr>.<genexpr><   s   øè ø€ Ò?°”2×#Ñ# B¨×+Ñ?ùó   ƒ #N©Úany)rE   r;   r,   s    @€r.   rG   z"test_all_triads.<locals>.<genexpr><   s   ùè ø€ ÒQÀBŒsÓ?°hÔ?×?ÑQùs   „"N)	r'   r(   r)   r5   r8   ÚsplitÚlistÚ
all_triadsÚall)r+   r:   ÚjÚkÚxr-   r,   s         @r.   Útest_all_triadsrR   0   sâ   ø€ ä
�
‰
‹€AØ×ÑÒQÔRô �q“÷ð àÜ�q˜1‘u˜a“òð Ü�q˜1‘u˜a“ò	ð ð ˆ#ˆQˆqˆc��1�#ŠðØðØô€Hð 3;Ö;¨Q�—
‘
˜1Ÿ7™7 3›<Õ(Ò;€HÜ”"—-‘- Ó"Ó#€FÜÓQÈ&ÔQÔQÐQÑQùôùò <s   ¸9CÁ:'C c                  ó6  — t        j                  g g g dœ«      } t        j                  | «      dk(  sJ ‚t        j                  dgg g dœ«      } t        j                  | «      dk(  sJ ‚t        j                  ddg«      } t        j                  | «      dk(  sJ ‚t        j                  dgdgg dœ«      } t        j                  | «      d	k(  sJ ‚t        j                  dd
g«      } t        j                  | «      dk(  sJ ‚t        j                  ddg«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d¢«      } t        j                  | «      dk(  sJ ‚t        j                  g d ¢«      } t        j                  | «      d!k(  sJ ‚y")#zTests the triad_type function.)r   r   r   r   r   r   ©r   r   ©r   r   r!   r   r   ©r   r   r   ©r   r   r&   )rT   ©r   r   rV   r#   )rT   rX   rW   r   )rT   rW   rU   r   )rT   rW   ©r   r   r    )rT   rX   rY   rU   r"   )rT   rX   rY   rV   r%   )rT   rX   rU   rW   r   )rT   rX   rU   rV   r   )rT   rX   rV   rW   rU   r   )rT   rX   rW   rV   rU   rY   r$   N)r'   r(   Ú
triad_type)r+   s    r.   Útest_triad_typer[   ?   sˆ  € ô 	�
‰
�r˜b RÑ(Ó)€AÜ�=‰=˜Ó˜uÒ$Ð$Ð$ä
�
‰
˜�s˜r bÑ)Ó*€AÜ�=‰=˜Ó˜uÒ$Ð$Ð$ä
�
‰
�F˜FÐ#Ó$€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
˜�s ˜s rÑ*Ó+€AÜ�=‰=˜Ó˜uÒ$Ð$Ð$Ü
�
‰
�F˜FÐ#Ó$€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
�F˜FÐ#Ó$€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%ä
�
‰
Ò+Ó,€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
Ò+Ó,€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
Ò+Ó,€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
Ò+Ó,€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%ä
�
‰
Ò3Ó4€AÜ�=‰=˜Ó˜uÒ$Ð$Ð$Ü
�
‰
Ò3Ó4€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
Ò3Ó4€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%Ü
�
‰
Ò3Ó4€AÜ�=‰=˜Ó˜vÒ%Ð%Ð%ä
�
‰
Ò;Ó<€AÜ�=‰=˜Ó˜uÒ$Ð$Ð$ä
�
‰
ÒCÓD€AÜ�=‰=˜Ó˜uÒ$Ð$Ñ$r0   c                  ó  ‡	— t        j                  «       } | j                  g d¢«       t        j                  | «      }t	        t
        «      }|D ]+  }t        j                  |«      }||   j                  |«       Œ- t        j                  | «      }t        |j                  «       «      t        |j                  «       «      k(  sJ ‚|j                  «       D ]'  \  }}||   }|D ]  Š	t        ˆ	fd„|D «       «      rŒJ ‚ Œ) y )Nr   c              3   óJ   •K  — | ]  }t        j                  ‰|«      –— Œ y ­wrB   rC   )rE   ÚeÚas     €r.   rG   z&test_triads_by_type.<locals>.<genexpr>w   s   øè ø€ ÒC°!”r×'Ñ'¨¨1×-ÑCùrH   )r'   r(   r)   rM   r   rL   rZ   ÚappendÚtriads_by_typeÚsetÚkeysÚitemsrJ   )
r+   rM   r,   ÚtriadÚnamer-   Útri_typeÚ	actual_GsÚexpected_Gsr_   s
            @r.   Útest_triads_by_typerj   j   så   ø€ Ü
�
‰
‹€AØ×ÑÒQÔRÜ—‘˜qÓ!€JÜœ4Ó €HØò %ˆÜ�}‰}˜UÓ#ˆØ�‰×Ñ˜eÕ$ð%ô ×Ñ˜qÓ!€FÜˆv�{‰{‹}Ó¤ X§]¡]£_Ó!5Ò5Ð5Ð5Ø%Ÿ|™|›~ò DÑˆ�)Ø˜xÑ(ˆØò 	DˆAÜÓC°{ÔCÕCÐCÐCñ	DñDr0   c                  óü   — t        j                  dt         j                  ¬«      } ddi}dD ]H  }t        j                  | |¬«      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  rŒHJ ‚ y c c}}w )NÚabc©Úcreate_usingr&   r   )r_   ÚbÚcÚabÚacÚbcrl   ©Únodelistr   ©r'   Ú
path_graphr(   r*   rd   )r+   r,   ÚnlÚtriad_censusÚtypÚcnts         r.   Ú'test_triadic_census_short_path_nodelistr|   z   sv   € Ü
�‰�e¬"¯*©*Ô5€AØ˜ˆ{€HØ6ò VˆÜ×(Ñ(¨°RÔ8ˆØ°\×5GÑ5GÓ5I×U©¨¨cÈSÐSTËW˜C ™HÓUÓUÐUÐUñVùãUs   ÁA8
Á(A8
c                  ór  — t        j                  dt         j                  ¬«      } d}t        j                  t
        |¬«      5  t        j                  | g d¢«       d d d «       t        j                  t
        |¬«      5  t        j                  | g d¢«       d d d «       y # 1 sw Y   ŒFxY w# 1 sw Y   y xY w)Né   rm   z3nodelist includes duplicate nodes or nodes not in G)Úmatch)r   r   r   r   )r   r   r_   r   )r'   rw   r(   ÚpytestÚraisesÚ
ValueErrorr*   )r+   Úmsgs     r.   Ú+test_triadic_census_correct_nodelist_valuesr„   ‚   s†   € Ü
�‰�a¤b§j¡jÔ1€AØ
@€CÜ	�‰”z¨Ô	-ñ +Ü
×Ñ˜!š\Ô*÷+ä	�‰”z¨Ô	-ñ -Ü
×Ñ˜!š^Ô,÷-ð -÷+ð +ú÷-ð -ús   ÁB!Á?B-Â!B*Â-B6c                  óN  — t        j                  t        j                  dt         j                  ¬«      «      } i | j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  t        j                  dt         j                  ¬«      «      } i | j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  t        j                  dt         j                  ¬«      «      } i | j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  t        j                  dg«      «      } i | j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚y c c}}w c c}}w c c}}w c c}}w )Nr   rm   r   r   rW   )r'   r*   Úempty_graphr(   rd   )Útcrz   r{   s      r.   Útest_triadic_census_tiny_graphsrˆ   ‹   s=  € Ü	×	Ñ	œ2Ÿ>™>¨!¼"¿*¹*ÔEÓ	F€BØ¨2¯8©8«:×A™x˜s C¸¸q»�#�s‘(ÓAÒAÐAÐAÜ	×	Ñ	œ2Ÿ>™>¨!¼"¿*¹*ÔEÓ	F€BØ¨2¯8©8«:×A™x˜s C¸¸q»�#�s‘(ÓAÒAÐAÐAÜ	×	Ñ	œ2Ÿ>™>¨!¼"¿*¹*ÔEÓ	F€BØ¨2¯8©8«:×A™x˜s C¸¸q»�#�s‘(ÓAÒAÐAÐAÜ	×	Ñ	œ2Ÿ:™: v hÓ/Ó	0€BØ¨2¯8©8«:×A™x˜s C¸¸q»�#�s‘(ÓAÒAÐAÑAùó BùãAùãAùãAs0   ÁFÁFÂ4FÃFÄFÄ)FÅ3F!ÆF!c            	      óZ  — t        j                  dt         j                  ¬«      } ddi}| D ]h  }| j                  «       }|j	                  ||«       t        j
                  |«      }||j                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  rŒhJ ‚ t        j                  dt         j                  ¬«      } t        j                  | «      }| D ]  }| j	                  ||«       Œ t        j
                  | «      }||D �ci c]  }|t        ||   «      “Œ c}k(  sJ ‚y c c}}w c c}w )Nrl   rm   r&   r   r   Úabcde)	r'   rw   r(   ÚcopyÚadd_edger*   rd   ra   Úlen)	ÚGGr,   Únr+   r‡   rz   r{   ÚtbtÚtts	            r.   Útest_triadic_census_selfloopsr’   –   s
  € Ü	�‰�u¬2¯:©:Ô	6€BØ˜ˆ{€HØò LˆØ�G‰G‹IˆØ	�
‰
�1�aÔÜ×Ñ˜qÓ!ˆØ°R·X±X³Z×K©¨¨cÀ3ÈÃ7˜C ™HÓKÓKÐKÐKð	Lô 
�‰�w¬R¯Z©ZÔ	8€BÜ
×
Ñ
˜BÓ
€CØò ˆØ
�‰�A�qÕðä	×	Ñ	˜2Ó	€BØ¨RÖ0 r�"”c˜#˜b™'“lÑ"Ò0Ò0Ð0Ñ0ùó Lùò 1s   Á:D"
ÂD"
ÄD(c                  óì   — t        j                  dt         j                  ¬«      } dddœ}t        j                  | «      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚y c c}}w )NÚabcdrm   r   ©r   r&   r   rv   )r+   r,   ry   rz   r{   s        r.   Útest_triadic_census_four_pathr–   §   sc   € Ü
�‰�f¬2¯:©:Ô6€AØ !Ñ$€HÜ×$Ñ$ QÓ'€LØ°×1CÑ1CÓ1E×Q¡X S¨#ÈÈqË˜˜S™ÓQÒQÐQÑQùÓQs   ÁA0Á"A0c                  óÊ  — t        j                  dt         j                  ¬«      } dddœ}dddœ}t        j                  | dg¬«      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  | d	g¬«      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  | d
g¬«      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚t        j                  | dg¬«      }||j	                  «       D ��ci c]  \  }}|dkD  sŒ||“Œ c}}k(  sJ ‚y c c}}w c c}}w c c}}w c c}}w )Nr”   rm   r   r   r•   r_   rt   r   ro   rp   Údrv   )	r+   Úexpected_endÚexpected_midÚa_triad_censusrz   r{   Úb_triad_censusÚc_triad_censusÚd_triad_censuss	            r.   Ú&test_triadic_census_four_path_nodelistrŸ   ®   sM  € Ü
�‰�f¬2¯:©:Ô6€AØ aÑ(€LØ aÑ(€LÜ×&Ñ& q°C°5Ô9€NØ°^×5IÑ5IÓ5K×W©¨¨cÈsÐUVËw˜C ™HÓWÒWÐWÐWÜ×&Ñ& q°C°5Ô9€NØ°^×5IÑ5IÓ5K×W©¨¨cÈsÐUVËw˜C ™HÓWÒWÐWÐWÜ×&Ñ& q°C°5Ô9€NØ°^×5IÑ5IÓ5K×W©¨¨cÈsÐUVËw˜C ™HÓWÒWÐWÐWÜ×&Ñ& q°C°5Ô9€NØ°^×5IÑ5IÓ5K×W©¨¨cÈsÐUVËw˜C ™HÓWÒWÐWÑWùó XùãWùãWùãWs0   ÁEÁ*EÂ#EÂ1EÃ*EÃ8EÄ1EÄ?Ec                  óÀ  — t        j                  «       } | j                  g d¢«       i 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 �ci c]  }|d“Œ }}| j                  «       D ]1  }t        j                  | |g¬«      }|D ]  }||xx   ||   z  cc<   Œ Œ3 |j                  «       D ]  \  }}||xx   dz  cc<   Œ ||k(  sJ ‚yc c}w )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   rt   N)r'   r(   r)   r7   r*   rd   )r+   r,   rP   r-   ÚnodeÚnode_triad_censusÚ	triad_keyÚvs           r.   Útest_triadic_census_nodelistr¥   ¼   s‚  € ä
�
‰
‹€AØ×ÑÒQÔRðØ�ðà�ðð 	ˆqðð 	�ð	ð
 	ˆqðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	ˆqðð 	�ðð  	�ð!€Hð$ %Ö%�qˆa�‰dÐ%€FÐ%Ø—‘“	ò >ˆÜ×-Ñ-¨a¸4¸&ÔAÐØ!ò 	>ˆIØ�9ÓÐ!2°9Ñ!=Ñ=Ôñ	>ð>ð
 —‘“ò ‰ˆˆ1Øˆq‹	�a‰Œ	ðà�vÒÐÑùò &s   Á
CÚNr~   é
   c                 ó„  ‡‡— t        j                  | ddd¬«      }t        j                  |«      }t        j                  |«      }|D �ci c]  }|t	        ||   «      “Œ }}||k(  sJ ‚|D ]S  Št        j                  |‰h¬«      }|D �ci c]'  }|t        ˆfd„|j                  |g «      D «       «      “Œ) }}||k(  rŒSJ ‚ t        j                  |d«      D ]]  Št        ‰«      Št        j                  |‰¬«      }|D �ci c]'  }|t        ˆfd„|j                  |g «      D «       «      “Œ) }}||k(  rŒ]J ‚ t        j                  |d	«      D ]]  Št        ‰«      Št        j                  |‰¬«      }|D �ci c]'  }|t        ˆfd
„|j                  |g «      D «       «      “Œ) }}||k(  rŒ]J ‚ y c c}w c c}w c c}w c c}w )Ng333333Ó?Té*   )ÚdirectedÚseedrt   c              3   ó,   •K  — | ]  }‰|v sŒd –— Œ y­w)r   N© )rE   Útr�   s     €r.   rG   z6test_triadic_census_on_random_graph.<locals>.<genexpr>ç   s   øè ø€ Ò<˜Q°Q¸!²V”qÑ<ùs   ƒ	�r   c              3   óL   •K  — | ]  }t        ˆfd „|D «       «      sŒd–— Œ y­w)c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrB   r­   ©rE   r�   Únss     €r.   rG   z@test_triadic_census_on_random_graph.<locals>.<genexpr>.<genexpr>î   ó   øè ø€ Ò5IÀ!°a¸2´gÑ5Iùó   ƒr   NrI   ©rE   r®   r²   s     €r.   rG   z6test_triadic_census_on_random_graph.<locals>.<genexpr>î   ó   øè ø€ ÒJ˜!´#Ó5IÀqÔ5IÕ2I”AÑJùó   ƒ$�$r   c              3   óL   •K  — | ]  }t        ˆfd „|D «       «      sŒd–— Œ y­w)c              3   ó&   •K  — | ]  }|‰v –— Œ
 y ­wrB   r­   r±   s     €r.   rG   z@test_triadic_census_on_random_graph.<locals>.<genexpr>.<genexpr>ö   r³   r´   r   NrI   rµ   s     €r.   rG   z6test_triadic_census_on_random_graph.<locals>.<genexpr>ö   r¶   r·   )
r'   Úbinomial_graphr*   ra   r�   ÚsumÚgetÚ	itertoolsÚcombinationsrb   )r¦   r+   Útc1r�   r‘   Útc2r�   r²   s         @@r.   Ú#test_triadic_census_on_random_graphrÁ   Ý   sÌ  ù€ ä
×Ñ˜!˜S¨4°bÔ9€AÜ
×
Ñ
˜AÓ
€CÜ
×
Ñ
˜AÓ
€CØ&)Ö
* ˆ2Œs�3�r‘7‹|ÑÐ
*€CÐ
*Ø�#Š:Ðˆ:àò ˆÜ×Ñ ¨Q¨CÔ0ˆØGJÖKÀˆr”3Ó< #§'¡'¨"¨b£/Ô<Ó<Ñ<ÐKˆÐKØ�c‹zÐˆzðô
 ×$Ñ$ Q¨Ó*ò ˆÜ�‹WˆÜ×Ñ ¨BÔ/ˆàUXö
ØOQˆB”ÓJ˜sŸw™w r¨2›ÔJÓJÑJð
ˆð 
ð �c‹zÐˆzðô ×$Ñ$ Q¨Ó*ò ˆÜ�‹WˆÜ×Ñ ¨BÔ/ˆàUXö
ØOQˆB”ÓJ˜sŸw™w r¨2›ÔJÓJÑJð
ˆð 
ð �c‹zÐˆzñùò! +ùò
 Lùò
ùò
s   Á
F.Â
,F3Ä ,F8Å6,F=)Ú__doc__r½   Úcollectionsr   Úrandomr   r€   Únetworkxr'   r/   r<   rR   r[   rj   r|   r„   rˆ   r’   r–   rŸ   r¥   ÚmarkÚparametrizerÁ   r­   r0   r.   ú<module>rÈ      s„   ðÙ =ã Ý #Ý ã ã òò4òRò(%òVDò Vò-òBò1ò"RòXòðB ‡�×Ñ˜˜q "˜gÓ&ñó 'ñr0   