ó
    ™“,j   ã                   óÈ   • S r SSKrSSKJr  SSKJr  SSKrSSKrS r	S r
S rS rS	 rS
 rS rS rS rS rS rS r\R*                  R-                  SSS/5      S 5       rg)z7Tests for the :mod:`networkx.algorithms.triads` module.é    N)Údefaultdict)Úsamplec                  óò   • [         R                  " 5       n U R                  / SQ5        0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS
_SS_SS_SS_SS_SS_n[         R                  " U 5      nX:X  d   eg)ú"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      Ú³C:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\networkx/algorithms/tests/test_triads.pyÚtest_triadic_censusr/      sý   € ä
�
Š
‹€AØ×ÑÒQÔRðØ�ðà�ðð 	ˆqðð 	�ð	ð
 	ˆqðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	ˆqðð 	�ðð  	�ð!€Hô$ ×Ò˜qÓ!€FØÓÐÑó    c                  ó  • [         R                  " 5       n U R                  5       n [        S5       HT  n[	        [        U R                  5       5      S5      nU R                  U5      n[         R                  " U5      (       a  MT   e   g)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<   &   s`   € ä
×ÒÓ€AØ	�‰‹€AÜ�3ŽZˆÜ”v˜aŸg™g›iÓ(¨!Ó,ˆØ�Z‰Z˜ÓˆÜ�{Š{˜2�‹Ðˆò r0   c                  óð  ^• [         R                  " 5       n U R                  / SQ5        [        S5       VVVs/ s H;  n[        US-   S5        H$  n[        US-   S5        H  nU SU SU 3PM     M&     M=     snnnmT Vs/ s H"  o@R	                  UR                  S5      5      PM$     snm[        [         R                  " U 5      5      n[        U4S jU 5       5      (       d   egs  snnnf s  snf )zTests the all_triads function.r   é   r   Ú,c              3   óP   >^#   • U  H  m[        U4S  jT 5       5      v •  M     g7f)c              3   óR   >#   • U  H  n[         R                  " UT5      v •  M     g 7f©N©r'   Úis_isomorphic)Ú.0ÚG1r;   s     €r.   Ú	<genexpr>Ú,test_all_triads.<locals>.<genexpr>.<genexpr><   s!   øé € Ð?²h°”2×#Ò# B¨×+Ð+²hùó   ƒ$'N©Úany)rE   r;   r,   s    @€r.   rG   Ú"test_all_triads.<locals>.<genexpr><   s   ùé € ÐQÊ&ÀBŒsÔ?±hÓ?×?Ð?Ê&ùs   „"&N)	r'   r(   r)   r5   r8   ÚsplitÚlistÚ
all_triadsÚall)r+   r:   ÚjÚkÚxr-   r,   s         @r.   Útest_all_triadsrT   0   sÙ   ø€ ä
�
Š
‹€AØ×ÑÒQÔRô �q”õâˆAÜ�q˜1‘u˜a—ˆAÜ�q˜1‘u˜a—ˆAð ˆ#ˆQˆqˆc��1�#‹ñ !ñ 	á ñ 	Ùó€Hñ 3;Ó;²(¨Q—
‘
˜1Ÿ7™7 3›<Ö(±(Ñ;€HÜ”"—-’- Ó"Ó#€FÜÔQÉ&ÓQ×QÑQÐQÑQùôùò <s   ¹AC,Â)C3c                  ó–  • [         R                  " / / / S.5      n [         R                  " U 5      S:X  d   e[         R                  " S// / S.5      n [         R                  " U 5      S:X  d   e[         R                  " SS/5      n [         R                  " U 5      S:X  d   e[         R                  " S/S// S.5      n [         R                  " U 5      S	:X  d   e[         R                  " SS
/5      n [         R                  " U 5      S:X  d   e[         R                  " SS/5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / SQ5      n [         R                  " U 5      S:X  d   e[         R                  " / S Q5      n [         R                  " U 5      S!:X  d   eg")#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&   )rV   ©r   r   rX   r#   )rV   rZ   rY   r   )rV   rY   rW   r   )rV   rY   ©r   r   r    )rV   rZ   r[   rW   r"   )rV   rZ   r[   rX   r%   )rV   rZ   rW   rY   r   )rV   rZ   rW   rX   r   )rV   rZ   rX   rY   rW   r   )rV   rZ   rY   rX   rW   r[   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                  ó   ^	• [         R                  " 5       n U R                  / SQ5        [         R                  " U 5      n[	        [
        5      nU H,  n[         R                  " U5      nX$   R                  U5        M.     [         R                  " U 5      n[        UR                  5       5      [        UR                  5       5      :X  d   eUR                  5        H.  u  pgX&   nU H  m	[        U	4S jU 5       5      (       a  M   e   M0     g )Nr   c              3   óR   >#   • U  H  n[         R                  " TU5      v •  M     g 7frB   rC   )rE   ÚeÚas     €r.   rG   Ú&test_triads_by_type.<locals>.<genexpr>w   s!   øé € ÐC²{°!”r×'Ò'¨¨1×-Ð-²{ùrI   )r'   r(   r)   rO   r   rN   r\   ÚappendÚtriads_by_typeÚsetÚkeysÚitemsrK   )
r+   rO   r,   ÚtriadÚnamer-   Útri_typeÚ	actual_GsÚexpected_Gsra   s
            @r.   Útest_triads_by_typerm   j   sÏ   ø€ Ü
�
Š
‹€AØ×ÑÒQÔRÜ—’˜qÓ!€JÜœ4Ó €HÛˆÜ�}Š}˜UÓ#ˆØ‰×Ñ˜eÖ$ñ ô ×Ò˜qÓ!€FÜˆv�{‰{‹}Ó¤ X§]¡]£_Ó!5Ó5Ð5Ð5Ø%Ÿ|™|ž~ÑˆØÑ(ˆÛˆAÜÔC±{ÓC×CÓCÐCÐCó ò  .r0   c                  óü   • [         R                  " S[         R                  S9n SS0nS HI  n[         R                  " XS9nXR	                  5        VVs0 s H  u  pEUS:”  d  M  XE_M     snn:X  a  MI   e   g s  snnf )NÚabc©Úcreate_usingr&   r   )ra   ÚbÚcÚabÚacÚbcro   ©Únodelistr   ©r'   Ú
path_graphr(   r*   rg   )r+   r,   ÚnlÚtriad_censusÚtypÚcnts         r.   Ú'test_triadic_census_short_path_nodelistr   z   so   € Ü
�Š�e¬"¯*©*Ñ5€AØ˜ˆ{€HÛ6ˆÜ×(Ò(¨Ñ8ˆØ×5GÑ5GÔ5IÔUÒ5I©¨ÈSÐSTÉW›H˜CšHÑ5IÒUÕUÐUÐUò 7ùãUs   ÁA8
Á$A8
c                  ó~  • [         R                  " S[         R                  S9n Sn[        R                  " [
        US9   [         R                  " U / SQ5        S S S 5        [        R                  " [
        US9   [         R                  " U / SQ5        S S S 5        g ! , (       d  f       NJ= f! , (       d  f       g = f)Né   rp   z3nodelist includes duplicate nodes or nodes not in G)Úmatch)r   r   r   r   )r   r   ra   r   )r'   rz   r(   ÚpytestÚraisesÚ
ValueErrorr*   )r+   Úmsgs     r.   Ú+test_triadic_census_correct_nodelist_valuesr‡   ‚   st   € Ü
�Š�a¤b§j¡jÑ1€AØ
@€CÜ	�Š”z¨Ó	-Ü
×Ò˜!š\Ô*÷ 
.ä	�Š”z¨Ó	-Ü
×Ò˜!š^Ô,÷ 
.Ð	-÷ 
.Õ	-úç	-Õ	-ús   ¿BÁ:B.Â
B+Â.
B<c                  ól  • [         R                  " [         R                  " S[         R                  S95      n 0 U R	                  5        VVs0 s H  u  pUS:”  d  M  X_M     snn:X  d   e[         R                  " [         R                  " S[         R                  S95      n 0 U R	                  5        VVs0 s H  u  pUS:”  d  M  X_M     snn:X  d   e[         R                  " [         R                  " S[         R                  S95      n 0 U R	                  5        VVs0 s H  u  pUS:”  d  M  X_M     snn:X  d   e[         R                  " [         R                  " S/5      5      n 0 U R	                  5        VVs0 s H  u  pUS:”  d  M  X_M     snn:X  d   eg s  snnf s  snnf s  snnf s  snnf )Nr   rp   r   r   rY   )r'   r*   Úempty_graphr(   rg   )Útcr}   r~   s      r.   Útest_triadic_census_tiny_graphsr‹   ‹   sE  € Ü	×	Ò	œ2Ÿ>š>¨!¼"¿*¹*ÑEÓ	F€BØ¨2¯8©8¬:ÔAª:™x˜s¸¸q¹“(�#’(©:ÒAÓAÐAÐAÜ	×	Ò	œ2Ÿ>š>¨!¼"¿*¹*ÑEÓ	F€BØ¨2¯8©8¬:ÔAª:™x˜s¸¸q¹“(�#’(©:ÒAÓAÐAÐAÜ	×	Ò	œ2Ÿ>š>¨!¼"¿*¹*ÑEÓ	F€BØ¨2¯8©8¬:ÔAª:™x˜s¸¸q¹“(�#’(©:ÒAÓAÐAÐAÜ	×	Ò	œ2Ÿ:š: v hÓ/Ó	0€BØ¨2¯8©8¬:ÔAª:™x˜s¸¸q¹“(�#’(©:ÒAÓAÐAÑAùó BùãAùãAùãAs0   ÁFÁFÂ6F$ÃF$Ä F*Ä0F*Å>F0ÆF0c            	      ód  • [         R                  " S[         R                  S9n SS0nU  Hl  nU R                  5       nUR	                  X"5        [         R
                  " U5      nXR                  5        VVs0 s H  u  pVUS:”  d  M  XV_M     snn:X  a  Ml   e   [         R                  " S[         R                  S9n [         R                  " U 5      nU  H  nU R	                  X"5        M     [         R
                  " U 5      nXD Vs0 s H  oˆ[        Xx   5      _M     sn:X  d   eg s  snnf s  snf )Nro   rp   r&   r   r   Úabcde)	r'   rz   r(   ÚcopyÚadd_edger*   rg   rd   Úlen)	ÚGGr,   Únr+   rŠ   r}   r~   ÚtbtÚtts	            r.   Útest_triadic_census_selfloopsr•   –   sú   € Ü	�Š�u¬2¯:©:Ñ	6€BØ˜ˆ{€HÛˆØ�G‰G‹IˆØ	�
‰
�1ÔÜ×Ò˜qÓ!ˆØ·X±X´ZÔK²Z©¨À3ÈÁ7›H˜CšH±ZÒKÕKÐKÐKñ	 ô 
�Š�w¬R¯Z©ZÑ	8€BÜ
×
Ò
˜BÓ
€CÛˆØ
�‰�AÖñ ä	×	Ò	˜2Ó	€BØ¨RÓ0ªR r”c˜#™'“lÒ"©RÑ0Ó0Ð0Ñ0ùó Lùò 1s   Á7D'
ÂD'
ÄD-c                  óð   • [         R                  " S[         R                  S9n SSS.n[         R                  " U 5      nXR	                  5        VVs0 s H  u  p4US:”  d  M  X4_M     snn:X  d   eg s  snnf )NÚabcdrp   r   ©r   r&   r   ry   )r+   r,   r|   r}   r~   s        r.   Útest_triadic_census_four_pathr™   §   se   € Ü
�Š�f¬2¯:©:Ñ6€AØ !Ñ$€HÜ×$Ò$ QÓ'€LØ×1CÑ1CÔ1EÔQÒ1E¡X SÈÈqÉ›˜šÑ1EÒQÓQÐQÑQùÓQs   ÁA2Á"A2c                  óÎ  • [         R                  " S[         R                  S9n SSS.nSSS.n[         R                  " U S/S9nXR	                  5        VVs0 s H  u  pEUS:”  d  M  XE_M     snn:X  d   e[         R                  " U S	/S9nX&R	                  5        VVs0 s H  u  pEUS:”  d  M  XE_M     snn:X  d   e[         R                  " U S
/S9nX'R	                  5        VVs0 s H  u  pEUS:”  d  M  XE_M     snn:X  d   e[         R                  " U S/S9nXR	                  5        VVs0 s H  u  pEUS:”  d  M  XE_M     snn:X  d   eg s  snnf s  snnf s  snnf s  snnf )Nr—   rp   r   r   r˜   ra   rw   r   rr   rs   Údry   )	r+   Úexpected_endÚexpected_midÚa_triad_censusr}   r~   Úb_triad_censusÚc_triad_censusÚd_triad_censuss	            r.   Ú&test_triadic_census_four_path_nodelistr¢   ®   sU  € Ü
�Š�f¬2¯:©:Ñ6€AØ aÑ(€LØ aÑ(€LÜ×&Ò& q°C°5Ñ9€NØ×5IÑ5IÔ5KÔWÒ5K©¨ÈsÐUVÉw›H˜CšHÑ5KÒWÓWÐWÐWÜ×&Ò& q°C°5Ñ9€NØ×5IÑ5IÔ5KÔWÒ5K©¨ÈsÐUVÉw›H˜CšHÑ5KÒWÓWÐWÐWÜ×&Ò& q°C°5Ñ9€NØ×5IÑ5IÔ5KÔWÒ5K©¨ÈsÐUVÉw›H˜CšHÑ5KÒWÓWÐWÐWÜ×&Ò& q°C°5Ñ9€NØ×5IÑ5IÔ5KÔWÒ5K©¨ÈsÐUVÉw›H˜CšHÑ5KÒWÓWÐWÑWùó XùãWùãWùãWs0   ÁEÁ'EÂEÂ/EÃ'EÃ7EÄ/E!Ä?E!c                  óÄ  • [         R                  " 5       n U R                  / SQ5        0 SS_SS_SS_SS_S	S
_SS_SS_SS_SS_SS_SS
_SS_SS_SS_SS_SS_nU Vs0 s H  o"S_M     nnU R                  5        H/  n[         R                  " X/S9nU H  nX6==   XV   -  ss'   M     M1     UR                  5        H  u  p'X2==   S-  ss'   M     X:X  d   egs  snf )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   rw   N)r'   r(   r)   r7   r*   rg   )r+   r,   rR   r-   ÚnodeÚnode_triad_censusÚ	triad_keyÚvs           r.   Útest_triadic_census_nodelistr¨   ¼   sf  € ä
�
Š
‹€AØ×ÑÒQÔRðØ�ðà�ðð 	ˆqðð 	�ð	ð
 	ˆqðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	�ðð 	ˆqðð 	�ðð 	ˆqðð 	�ðð  	�ð!€Hñ$ %Ó%šH�q�Šd™H€FÐ%Ø—‘–	ˆÜ×-Ò-¨a¸&ÑAÐÛ!ˆIØÓÐ!2Ñ!=Ñ=Õó "ñ ð
 —‘–‰ˆØ‹	�a‰�	ñ àÓÐÑùò &s   ÁCÚNr�   é
   c                 óœ  ^^• [         R                  " U SSSS9n[         R                  " U5      n[         R                  " U5      nU Vs0 s H  oD[	        X4   5      _M     nnX%:X  d   eU HU  m[         R                  " UT1S9nU Vs0 s H(  oD[        U4S jUR                  U/ 5       5       5      _M*     nnX%:X  a  MU   e   [        R                  " US5       H_  m[        T5      m[         R                  " UTS9nU Vs0 s H(  oD[        U4S jUR                  U/ 5       5       5      _M*     nnX%:X  a  M_   e   [        R                  " US	5       H_  m[        T5      m[         R                  " UTS9nU Vs0 s H(  oD[        U4S
 jUR                  U/ 5       5       5      _M*     nnX%:X  a  M_   e   g s  snf s  snf s  snf s  snf )Ng333333Ó?Té*   )ÚdirectedÚseedrw   c              3   ó8   >#   • U  H  nTU;   d  M  S v •  M     g7f)r   N© )rE   Útr’   s     €r.   rG   Ú6test_triadic_census_on_random_graph.<locals>.<genexpr>ç   s   øé € Ð<¢/˜Q°Q¸!±V—q‘q¢/ùs   ƒ
‘	r   c              3   ó`   >#   • U  H#  n[        U4S  jU 5       5      (       d  M  Sv •  M%     g7f)c              3   ó,   >#   • U  H	  oT;   v •  M     g 7frB   r°   ©rE   r’   Únss     €r.   rG   Ú@test_triadic_census_on_random_graph.<locals>.<genexpr>.<genexpr>î   ó   øé € Ð5IÂqÀ!¸2¶gÂqùó   ƒr   NrJ   ©rE   r±   r¶   s     €r.   rG   r²   î   ó    øé € ÐJš˜!´#Ô5IÁqÓ5I×2I—A‘Ašùó   ƒ.¥	.r   c              3   ó`   >#   • U  H#  n[        U4S  jU 5       5      (       d  M  Sv •  M%     g7f)c              3   ó,   >#   • U  H	  oT;   v •  M     g 7frB   r°   rµ   s     €r.   rG   r·   ö   r¸   r¹   r   NrJ   rº   s     €r.   rG   r²   ö   r»   r¼   )
r'   Úbinomial_graphr*   rd   r�   ÚsumÚgetÚ	itertoolsÚcombinationsre   )r©   r+   Útc1r“   r”   Útc2r’   r¶   s         @@r.   Ú#test_triadic_census_on_random_graphrÆ   Ý   s³  ù€ ä
×Ò˜!˜S¨4°bÑ9€AÜ
×
Ò
˜AÓ
€CÜ
×
Ò
˜AÓ
€CÙ&)Ó
*¢c Œs�3‘7‹|Ò¡c€CÐ
*Ø‹:Ðˆ:ãˆÜ×Ò ¨Q¨CÑ0ˆÙGJÓKÂsÀ”3Ô< #§'¡'¨"¨b¤/Ó<Ó<Ò<ÁsˆÐKØ�zÐˆzñ ô
 ×$Ò$ Q¨Ö*ˆÜ�‹WˆÜ×Ò ¨BÑ/ˆáUXó
ÚUXÈr”ÔJ˜sŸw™w r¨2œÓJÓJÒJÑUXð 	ð 
ð �zÐˆzñ +ô ×$Ò$ Q¨Ö*ˆÜ�‹WˆÜ×Ò ¨BÑ/ˆáUXó
ÚUXÈr”ÔJ˜sŸw™w r¨2œÓJÓJÒJÑUXð 	ð 
ð �zÐˆzò +ùò! +ùò
 Lùò
ùò
s   Á
F:Â	/F?Ä/GÅ=/G	)Ú__doc__rÂ   Úcollectionsr   Úrandomr   rƒ   Únetworkxr'   r/   r<   rT   r]   rm   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   