
    fiB                     ,   d dl Z d dlZd Zd Zd Z G d d          Z G d d          Z G d	 d
          Z G d d          Z	 G d d          Z
 G d d          Z G d d          Z G d d          Z G d d          Z G d d          ZdS )    Nc                  x    t          j        g d          } ddddddd}t          j        |           |k    sJ d S )N)      r      r      r   r
   r      )r
      )r   r         ?UUUUUU?r   r   r   r
   r   r   nxGraphsquare_clusteringGexpecteds     ~/var/www/development/aibuddy-work/election-extract/venv/lib/python3.11/site-packages/networkx/algorithms/tests/test_cluster.py'test_square_clustering_adjacent_squaresr      sO    
IIIJJA35UssCCH""h......    c            
      |    t          j        dd          } dddddddddd	}t          j        |           |k    sJ d S )Nr   r   g      ?皙?)	r   r   r   r   r   r   )r   r   r   r   r   )r   r   )r   r   r   r   )r   grid_2d_graphr   r   s     r   test_square_clustering_2d_gridr$      sa    
AA 
 
H ""h......r   c                      t          j        g d          } t                              | d          }t          j        |           |k    sJ dS )zgAn example where all nodes are part of all squares, but not every node
    is connected to every other.)r   r    r   r   r   r   r
   r	   )r   r   r   r   r   N)r   r   dictfromkeysr   r   s     r   4test_square_clustering_multiple_squares_non_completer+      sO     	QQQRRA}}Q""H""h......r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestTrianglesc                     t          j                    }t          t          j        |                                                    g k    sJ d S N)r   r   list	trianglesvaluesselfr   s     r   
test_emptyzTestTriangles.test_empty'   s@    HJJBLOO**,,--333333r   c                     t          j        d          }t          t          j        |                                                    g dk    sJ t          j        |          ddddddddddd
k    sJ d S N
   
r   r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r
   r   r         	   )r   
path_graphr0   r1   r2   r3   s     r   	test_pathzTestTriangles.test_path+   s    M"BLOO**,,--1O1O1OOOOO|A#
 #
 
 
 
 
 
 
r   c                    t          j                    }t          t          j        |                                                    g dk    sJ t          j        |d          dk    sJ t          t          j        |ddg                                                    ddgk    sJ t          j        |d          dk    sJ t          j        |ddg          dddk    sJ d S Nr   r   r   r   r   r   r   r   r   r   r   r   )r   cubical_graphr0   r1   r2   r3   s     r   test_cubicalzTestTriangles.test_cubical;   s    BLOO**,,--1I1I1IIIII|Aq!!Q&&&&BLQF++224455!Q????|Aq!!Q&&&&|A1v&&aA,,666666r   c                    t          j        d          }t          t          j        |                                                    g dk    sJ t          t          j        |                                                    dz  dk    sJ t          j        |d          dk    sJ |                    dd           t          t          j        |                                                    g dk    sJ t          j        |d          dk    sJ |                    dd           t          t          j        |                                                    g dk    sJ t          j        |d          dk    sJ d S )	Nr   )r   r   r   r   r   r   r8   r   r   r   )r   r   r   r   r   )r   complete_graphr0   r1   r2   sumremove_edgeadd_edger3   s     r   test_k5zTestTriangles.test_k5C   s\   a  BLOO**,,--@@@@2<??))++,,q0B6666|Aq!!Q&&&&	aBLOO**,,--@@@@|Aq!!Q&&&&	

1aBLOO**,,--@@@@|Aq!!Q&&&&&&r   N)__name__
__module____qualname__r5   r?   rD   rJ    r   r   r-   r-   &   sP        4 4 4
 
 
 7 7 7
' 
' 
' 
' 
'r   r-   c                   &    e Zd Zd Zd Zd Zd ZdS )TestDirectedClusteringc                     t          j                    }t          t          j        |                                                    g k    sJ t          j        |          i k    sJ d S r/   r   DiGraphr0   
clusteringr2   r3   s     r   test_clusteringz&TestDirectedClustering.test_clusteringQ   s]    JLLBM!$$++--.."4444}Q2%%%%%%r   c                 J   t          j        dt          j                              }t          t          j        |                                                    g dk    sJ t          j        |          ddddddddddd
k    sJ t          j        |d          dk    sJ d S )Nr8   create_usingr9   r   r:   r   r>   rS   r0   rT   r2   r3   s     r   r?   z TestDirectedClustering.test_pathV   s    M"2:<<888BM!$$++--.. 3
 3
 3
 
 
 
 
 }Q$
 $
 
 
 
 
 }Q""a''''''r   c                    t          j        dt          j                              }t          t          j        |                                                    g dk    sJ t          j        |          dk    sJ |                    dd           t          t          j        |                                                    g dk    sJ t          j        |ddg          ddd	k    sJ |                    dd           t          t          j        |                                                    g d
k    sJ t          j        |ddg          ddd	k    sJ t          j        |d          dk    sJ d S )Nr   rW   r   r   r   r   r   r   r   UUUUUU?r   r   r]   r]   r
   r]   r'   竪?r   r   r_   r_   r_   r   rF   rS   r0   rT   r2   average_clusteringrH   r3   s     r   rJ   zTestDirectedClustering.test_k5r   s   abjll;;;BM!$$++--..///AAAA$Q''1,,,,	aBM!$$++--.. 3
 3
 3
 
 
 
 
 }QA''qW+=+=====	aBM!$$++--.. 3
 3
 3
 
 
 
 
 }QA''q5H+I+IIIII}Q""e++++++r   c                     t          j        dt          j                              }|                    dd           t          j        |          d         dk    sJ d S )Nr   rW   r   r
   UUUUUU?)r   cycle_graphrS   rI   rT   r3   s     r   test_triangle_and_edgez-TestDirectedClustering.test_triangle_and_edge   sV    N12:<<888	

1a}Q"e++++++r   N)rK   rL   rM   rU   r?   rJ   re   rN   r   r   rP   rP   P   sP        & & &
( ( (8, , ,0, , , , ,r   rP   c                   <    e Zd Zed             Zd Zd Zd Zd ZdS )TestDirectedWeightedClusteringc                 .    t          j        d          ad S Nnumpypytestimportorskipnpclss    r   setup_classz*TestDirectedWeightedClustering.setup_class         ))r   c                     t          j                    }t          t          j        |d                                                    g k    sJ t          j        |          i k    sJ d S Nweightru   rR   r3   s     r   rU   z.TestDirectedWeightedClustering.test_clustering   sb    JLLBM!H555<<>>??2EEEE}Q2%%%%%%r   c                    t          j        dt          j                              }t          t          j        |d                                                    g dk    sJ t          j        |d          ddddddddddd
k    sJ d S )Nr8   rW   ru   rv   r9   r   r:   rY   r3   s     r   r?   z(TestDirectedWeightedClustering.test_path   s    M"2:<<888BM!H555<<>>?? D
 D
 D
 
 
 
 
 }Qx0005
 5
 
 
 
 
 
 
r   c                    t          j        dt          j                              }t          t          j        |d                                                    g dk    sJ t          j        |d          dk    sJ |                    dd           t          t          j        |d                                                    g dk    sJ t          j        |dd	gd          dd
dk    sJ |                    dd           t          t          j        |d                                                    g dk    sJ t          j        |dd	gd          dddk    sJ d S )Nr   rW   ru   rv   r[   r   r   r\   r
   r]   r'   r^   r_   r`   r3   s     r   rJ   z&TestDirectedWeightedClustering.test_k5   s   abjll;;;BM!H555<<>>?????RRRR$Qx888A====	aBM!H555<<>>?? D
 D
 D
 
 
 
 
 }QAx888g<N<NNNNN	aBM!H555<<>>?? D
 D
 D
 
 
 
 
 }QAx888"=
 =
 
 
 
 
 
 
r   c                    t          j        dt          j                              }|                    ddd           t          j        |          d         dk    sJ t
          j                            t          j        |d          d         d	           t
          j                            t          j        |dd          d	           d S )
Nr   rW   r   r
   r   rv   rc   ru   gUUUUUU?)r   rd   rS   rI   rT   rn   testingassert_allcloser3   s     r   re   z5TestDirectedWeightedClustering.test_triangle_and_edge   s    N12:<<888	

1a
"""}Q"e++++

""2=8#D#D#DQ#GPPP

""2=Ah#G#G#GPPPPPr   N)	rK   rL   rM   classmethodrq   rU   r?   rJ   re   rN   r   r   rg   rg      sn        * * [*& & &

 
 
6
 
 
4Q Q Q Q Qr   rg   c                   H    e Zd Zed             Zd Zd Zd Zd Zd Z	d Z
dS )	TestWeightedClusteringc                 .    t          j        d          ad S ri   rk   ro   s    r   rq   z"TestWeightedClustering.setup_class   rr   r   c                     t          j                    }t          t          j        |d                                                    g k    sJ t          j        |          i k    sJ d S rt   r   r   r0   rT   r2   r3   s     r   rU   z&TestWeightedClustering.test_clustering   sb    HJJBM!H555<<>>??2EEEE}Q2%%%%%%r   c                     t          j        d          }t          t          j        |d                                                    g dk    sJ t          j        |d          ddddddddddd
k    sJ d S )Nr8   ru   rv   r9   r   r:   r   r>   r0   rT   r2   r3   s     r   r?   z TestWeightedClustering.test_path   s    M"BM!H555<<>>?? D
 D
 D
 
 
 
 
 }Qx0005
 5
 
 
 
 
 
 
r   c                    t          j                    }t          t          j        |d                                                    g dk    sJ t          j        |d          dk    sJ t          t          j        |ddgd                                                    ddgk    sJ t          j        |dd          dk    sJ t          j        |ddgd          dddk    sJ d S )Nru   rv   rB   r   r   r   r   r   rC   r0   rT   r2   r3   s     r   rD   z#TestWeightedClustering.test_cubical   s   BM!H555<<>>?? 	D
 	D
 	D
 	
 	
 	
 	
 }Q""a''''BM!aVH===DDFFGGAq6QQQQ}Q(333q8888}QAx888aLLHHHHHHr   c                    t          j        d          }t          t          j        |d                                                    g dk    sJ t          j        |d          dk    sJ |                    dd           t          t          j        |d                                                    g dk    sJ t          j        |ddgd          dd	d
k    sJ d S )Nr   ru   rv   r[   r   r   r^   r
   r_   r'   r   rF   r0   rT   r2   ra   rH   r3   s     r   rJ   zTestWeightedClustering.test_k5  s   a  BM!H555<<>>?????RRRR$Qx888A====	aBM!H555<<>>?? D
 D
 D
 
 
 
 
 }QAx888"=
 =
 
 
 
 
 
 
r   c                 |   t          j        d          }|                    ddd           t          j        |          d         dk    sJ t          j                            t          j        |d          d         d           t          j                            t          j        |dd          d           d S )	Nr   r   r
   r   rv   r   ru   rc   )r   rd   rI   rT   rn   rz   r{   r3   s     r   re   z-TestWeightedClustering.test_triangle_and_edge!  s    N1	

1a
"""}Q"e++++

""2=8#D#D#DQ#GOOO

""2=Ah#G#G#GOOOOOr   c                    t          j        d          }|                    ddd           |                    ddd           t          j        |          d         dk    sJ t          j        |d          d         dk    sJ d S )	Nr   r   r   rv   r   ru   UUUUUUտ)r   rd   rI   rT   r3   s     r   test_triangle_and_signed_edgez4TestWeightedClustering.test_triangle_and_signed_edge(  s    N1	

1a
###	

1a
"""}Q"e++++}Qx0003v======r   N)rK   rL   rM   r|   rq   rU   r?   rD   rJ   re   r   rN   r   r   r~   r~      s        * * [*& & &

 
 
6I I I"
 
 
"P P P> > > > >r   r~   c                   B    e Zd Zed             Zd Zd Zd Zd Zd Z	dS )TestClusteringc                 .    t          j        d           d S ri   rl   rm   ro   s    r   rq   zTestClustering.setup_class1      G$$$$$r   c                     t          j                    }t          t          j        |                                                    g k    sJ t          j        |          i k    sJ d S r/   r   r3   s     r   rU   zTestClustering.test_clustering5  s]    HJJBM!$$++--.."4444}Q2%%%%%%r   c                     t          j        d          }t          t          j        |                                                    g dk    sJ t          j        |          ddddddddddd
k    sJ d S r7   r   r3   s     r   r?   zTestClustering.test_path:  s    M"BM!$$++--.. 3
 3
 3
 
 
 
 
 }Q$
 $
 
 
 
 
 
 
r   c                    t          j                    }t          t          j        |                                                    g dk    sJ t          j        |d          dk    sJ t          t          j        |ddg                                                    ddgk    sJ t          j        |d          dk    sJ t          j        |ddg          dddk    sJ d S rA   r   r3   s     r   rD   zTestClustering.test_cubicalU  s    BM!$$++--..2J2J2JJJJJ}Q""a''''BM!aV,,3355661a&@@@@}Q""a''''}QA''qQ<<777777r   c                    t          j        d          }t          t          j        |                                                    g dk    sJ t          j        |          dk    sJ |                    dd           t          t          j        |                                                    g dk    sJ t          j        |ddg          dddk    sJ d S )	Nr   r[   r   r   r^   r
   r_   r'   r   r3   s     r   rJ   zTestClustering.test_k5]  s    a  BM!$$++--..///AAAA$Q''1,,,,	aBM!$$++--.. 3
 3
 3
 
 
 
 
 }QA''q5H+I+IIIIIIIr   c                    t          j        d          }t          t          j        |                                                    g dk    sJ t          j        |          dk    sJ |                    dd           |                    ddd           t          t          j        |d                                                    g d	k    sJ d S )
Nr   r[   r   r   r   r   rv   ru   )rc   r   r   r   r   )r   rF   r0   rT   r2   ra   rH   rI   r3   s     r   test_k5_signedzTestClustering.test_k5_signedk  s    a  BM!$$++--..///AAAA$Q''1,,,,	a	

1a
###BM!H555<<>>?? D
 D
 D
 
 
 
 
 
 
r   N)
rK   rL   rM   r|   rq   rU   r?   rD   rJ   r   rN   r   r   r   r   0  s{        % % [%& & &

 
 
68 8 8J J J
 
 
 
 
r   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestTransitivityc                 `    t          j                    }t          j        |          dk    sJ d S Nr   )r   r   transitivityr3   s     r   test_transitivityz"TestTransitivity.test_transitivity{  s.    HJJq!!Q&&&&&&r   c                 b    t          j        d          }t          j        |          dk    sJ d S )Nr8   r   )r   r>   r   r3   s     r   r?   zTestTransitivity.test_path  s2    M"q!!Q&&&&&&r   c                 `    t          j                    }t          j        |          dk    sJ d S r   )r   rC   r   r3   s     r   rD   zTestTransitivity.test_cubical  s1    q!!Q&&&&&&r   c                     t          j        d          }t          j        |          dk    sJ |                    dd           t          j        |          dk    sJ d S )Nr   r   r   g      ?)r   rF   r   rH   r3   s     r   rJ   zTestTransitivity.test_k5  sb    a  q!!Q&&&&	aq!!U******r   N)rK   rL   rM   r   r?   rD   rJ   rN   r   r   r   r   z  sP        ' ' '' ' '' ' '+ + + + +r   r   c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestSquareClusteringc                     t          j                    }t          t          j        |                                                    g k    sJ t          j        |          i k    sJ d S r/   )r   r   r0   r   r2   r3   s     r   rU   z$TestSquareClustering.test_clustering  s_    HJJB(++224455;;;;#A&&",,,,,,r   c                     t          j        d          }t          t          j        |                                                    g dk    sJ t          j        |          ddddddddddd
k    sJ d S r7   )r   r>   r0   r   r2   r3   s     r   r?   zTestSquareClustering.test_path  s    M"B(++224455 :
 :
 :
 
 
 
 
 #A&&+
 +
 
 
 
 
 
 
r   c                    t          j                    }t          t          j        |                                                    g dk    sJ t          t          j        |ddg                                                    ddgk    sJ t          j        |dg          d         dk    sJ t          j        |d          dk    sJ t          j        |ddg          dddk    sJ d S )N)r   r   r   r   r   r   r   r   r   r   r   r   )r   rC   r0   r   r2   r3   s     r   rD   z!TestSquareClustering.test_cubical  s   B(++224455 	:
 	:
 	:
 	
 	
 	
 	
 B(QF33::<<==%OOOO#As++A.%7777#Aq))U2222#A1v..e2F2FFFFFFFr   c                     t          j        d          }t          t          j        |                                                    g dk    sJ d S )Nr   r[   )r   rF   r0   r   r2   r3   s     r   rJ   zTestSquareClustering.test_k5  sL    a  B(++224455HHHHHHr   c                     t          j        dd          }t          t          j        |                                                    g dk    sJ d S )Nr   )
r   r   r   r   r   r   r   r   r   r   )r   complete_bipartite_graphr0   r   r2   r3   s     r   test_bipartite_k5z&TestSquareClustering.test_bipartite_k5  sQ    '1--B(++2244559W9W9WWWWWWWr   c                 Z   t          j        g d          }|                    g d          }|                    g d          }t          j        |dg          d         dk    sJ t          j        |dg          d         dk    sJ t          j        |dg          d         dk    sJ dS )	z&Test C4 for figure 1 Lind et al (2005))r   r   )r   r   )r   r;   r	   r(   r   r   )r   r;   )r;   r<   )r   r<   )r;   r=   )r;   r8   )r      )r      )r      )r      )r      )r      )	r   r   r   r
   r   r   r   r   r   )r   r   r;   r<   r=   r8   r   r   r   gwqGܱ?r   r   N)r   r   subgraphr   )r4   r   G1G2s       r   test_lind_square_clusteringz0TestSquareClustering.test_lind_square_clustering  s    H  
 
. ZZ77788ZZ33344#As++A.&8888#B,,Q/58888#B,,Q/5888888r   c                 x    t          j        g d          }ddddddd}t          j        |          |k    sJ dS )z'Test eq2 for figure 1 Peng et al (2008))r   r   r	   r   r   )r   r   r   r   r   r   r   Nr   )r4   r   r   s      r   test_peng_square_clusteringz0TestSquareClustering.test_peng_square_clustering  sQ     HEEEFFsuqAA#A&&(222222r   c                     t          j        d          }t          j        |          ddddddk    sJ |                    g d           t          j        |          ddddddk    sJ d S )Nr   r   r   r   r   r   r
   )r   r!   r"   )r   r>   r   add_edges_fromr3   s     r   !test_self_loops_square_clusteringz6TestSquareClustering.test_self_loops_square_clustering  s    M!#A&&aA!a*H*HHHHH	111222#A&&aA!a*H*HHHHHHHr   N)rK   rL   rM   rU   r?   rD   rJ   r   r   r   r   rN   r   r   r   r     s        - - -

 
 
6G G G"I I IX X X9 9 9>3 3 3I I I I Ir   r   c                   6    e Zd Zed             Zd Zd Zd ZdS )TestAverageClusteringc                 .    t          j        d           d S ri   r   ro   s    r   rq   z!TestAverageClustering.setup_class  r   r   c                     t          j                    }t          j        t                    5  t          j        |           d d d            d S # 1 swxY w Y   d S r/   )r   r   rl   raisesZeroDivisionErrorra   r3   s     r   r5   z TestAverageClustering.test_empty  s    HJJ],-- 	% 	%!!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%   AAAc                    t          j        d          }|                    dd           t          j        |          dk    sJ t          j        |d          dk    sJ t          j        |d          dk    sJ t          j        |g d          d	k    sJ t          j        |g dd          d	k    sJ t          j        |g dd          d
k    sJ d S )Nr   r   g?Tcount_zerosFg98?r   r   r   gqq?gUUUUUU?r   rd   rI   ra   r3   s     r   test_average_clusteringz-TestAverageClustering.test_average_clustering   s    N1	

1a$Q''+>>>>>$QD999=PPPPP$QE:::>QQQQQ$Q			22oEEEE$Q			tDDDWWWW$Q			uEEEXXXXXXr   c                 6   t          j        d          }|                    dd           |                    ddd           t          j        |d          dk    sJ t          j        |dd	
          dk    sJ t          j        |dd
          dk    sJ d S )Nr   r   r   r   r   rv   ru   gT)ru   r   Fg98r   r3   s     r   test_average_clustering_signedz4TestAverageClustering.test_average_clustering_signed
  s    N1	

1a	

1a
###$Qx888<PPPPP!!H$GGG#$ $ $ $ !!H%HHH#$ $ $ $ $ $r   N)rK   rL   rM   r|   rq   r5   r   r   rN   r   r   r   r     s]        % % [%% % %
Y Y Y
 
 
 
 
r   r   c                   0    e Zd Zed             Zd Zd ZdS )TestDirectedAverageClusteringc                 .    t          j        d           d S ri   r   ro   s    r   rq   z)TestDirectedAverageClustering.setup_class  r   r   c                     t          j                    }t          j        t                    5  t          j        |           d d d            d S # 1 swxY w Y   d S r/   )r   rS   rl   r   r   ra   r3   s     r   r5   z(TestDirectedAverageClustering.test_empty  s    JLL],-- 	% 	%!!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%r   c                    t          j        dt          j                              }|                    dd           t          j        |          dk    sJ t          j        |d          dk    sJ t          j        |d          dk    sJ t          j        |g d	          d
k    sJ t          j        |g d	d          d
k    sJ t          j        |g d	d          dk    sJ d S )Nr   rW   r   g?Tr   Fg98?r   gqq?r   )r   rd   rS   rI   ra   r3   s     r   r   z5TestDirectedAverageClustering.test_average_clustering#  s   N12:<<888	

1a$Q''+>>>>>$QD999=PPPPP$QE:::>QQQQQ$Q			22oEEEE$Q			tDDDWWWW$Q			uEEEXXXXXXr   N)rK   rL   rM   r|   rq   r5   r   rN   r   r   r   r     sP        % % [%% % %
Y Y Y Y Yr   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestGeneralizedDegreec                 `    t          j                    }t          j        |          i k    sJ d S r/   )r   r   generalized_degreer3   s     r   test_generalized_degreez-TestGeneralizedDegree.test_generalized_degree/  s/    HJJ$Q''2------r   c                     t          j        d          }t          j        |d          ddik    sJ t          j        |d          ddik    sJ d S )Nr   r   r   r   )r   r>   r   r3   s     r   r?   zTestGeneralizedDegree.test_path3  s[    M!$Q**q!f4444$Q**q!f444444r   c                 f    t          j                    }t          j        |d          ddik    sJ d S )Nr   r   )r   rC   r   r3   s     r   rD   z"TestGeneralizedDegree.test_cubical8  s8    $Q**q!f444444r   c                 r   t          j        d          }t          j        |d          ddik    sJ |                    dd           t          j        |d          ddik    sJ t          j        |ddg          ddiddddk    sJ t          j        |          ddiddidddddddddd	k    sJ d S )
Nr   r   r   r
   r   r   r&   r   r   )r   rF   r   rH   r3   s     r   rJ   zTestGeneralizedDegree.test_k5<  s    a  $Q**q!f4444	a$Q**q!f4444$QA//1vaA,,3O3OOOOO$Q''1v1v||||||,
 ,
 
 
 
 
 
 
r   N)rK   rL   rM   r   r?   rD   rJ   rN   r   r   r   r   .  sP        . . .5 5 5
5 5 5
 
 
 
 
r   r   )rl   networkxr   r   r$   r+   r-   rP   rg   r~   r   r   r   r   r   r   rN   r   r   <module>r      s        / / // / /"/ / /'' '' '' '' '' '' '' ''T=, =, =, =, =, =, =, =,@FQ FQ FQ FQ FQ FQ FQ FQRT> T> T> T> T> T> T> T>nG
 G
 G
 G
 G
 G
 G
 G
T+ + + + + + + +(eI eI eI eI eI eI eI eIP 
  
  
  
  
  
  
  
FY Y Y Y Y Y Y Y*
 
 
 
 
 
 
 
 
 
r   