
    shB                         S SK r S SKrS rS rS r " S S5      r " S S5      r " S	 S
5      r " S S5      r	 " S S5      r
 " S S5      r " S S5      r " S S5      r " S S5      r " S S5      rg)    Nc                  ~    [         R                  " / SQ5      n SSSSSSS.n[         R                  " U 5      U:X  d   eg )N)      r      r      r   r
   r      )r
      )r   r         ?UUUUUU?r   r   r   r
   r   r   nxGraphsquare_clusteringGexpecteds     z/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/networkx/algorithms/tests/test_cluster.py'test_square_clustering_adjacent_squaresr      s<    
IJA35UssCH"h...    c            
          [         R                  " SS5      n SSSSSSSSSS.	n[         R                  " U 5      U:X  d   eg )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$      sS    
AA 
H "h...r   c                      [         R                  " / SQ5      n [        R                  U S5      n[         R                  " U 5      U:X  d   eg)zcAn 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+      s<     	QRA}}Q"H"h...r   c                   ,    \ rS rSrS rS rS rS rSrg)TestTriangles&   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   eg N)r   r   list	trianglesvaluesselfr   s     r   
test_emptyTestTriangles.test_empty'   s1    HHJBLLO**,-333r   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg N
   
r   r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r
   r   r         	   )r   
path_graphr1   r2   r3   r4   s     r   	test_pathTestTriangles.test_path+   sr    MM"BLLO**,-1OOOO||A#
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg Nr   r   r   r   r   r   r   r   r   r   r   r   )r   cubical_graphr1   r2   r3   r4   s     r   test_cubicalTestTriangles.test_cubical;   s    BLLO**,-1IIII||Aq!Q&&&BLLQF+2245!Q???||Aq!Q&&&||A1v&aA,666r   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[        [         R                  " U5      R	                  5       5      S-  S:X  d   e[         R                  " US5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   eg )	Nr   )r   r   r   r   r   r   r:   r   r   r   )r   r   r   r   r   )r   complete_graphr1   r2   r3   sumremove_edgeadd_edger4   s     r   test_k5TestTriangles.test_k5C   s   a BLLO**,-@@@2<<?))+,q0B666||Aq!Q&&&	aBLLO**,-@@@||Aq!Q&&&	

1aBLLO**,-@@@||Aq!Q&&&r    N)	__name__
__module____qualname____firstlineno__r6   rA   rG   rN   __static_attributes__rP   r   r   r-   r-   &   s    4
 7
'r   r-   c                   ,    \ rS rSrS rS rS rS rSrg)TestDirectedClusteringP   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r0   r   DiGraphr1   
clusteringr3   r4   s     r   test_clustering&TestDirectedClustering.test_clusteringQ   sI    JJLBMM!$++-."444}}Q2%%%r   c                 F   [         R                  " S[         R                  " 5       S9n[        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   e[         R                  " US5      S:X  d   eg )Nr:   create_usingr;   r   r<   r   r@   r[   r1   r\   r3   r4   s     r   rA    TestDirectedClustering.test_pathV   s    MM"2::<8BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
 }}Q"a'''r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " U5      S:X  d   eUR                  SS5        [        [         R                  " U5      R                  5       5      / SQ:X  d   e[         R                  " USS/5      SSS	.:X  d   eUR                  SS5        [        [         R                  " U5      R                  5       5      / S
Q:X  d   e[         R                  " USS/5      SSS	.:X  d   e[         R                  " US5      S:X  d   eg )Nr   r`   r   r   r   r   r   r   r   UUUUUU?r   r   rg   rg   r
   rg   r'   竪?r   r   ri   ri   ri   r   rJ   r[   r1   r\   r3   average_clusteringrL   r4   s     r   rN   TestDirectedClustering.test_k5r   s2   abjjl;BMM!$++-./AAA$$Q'1,,,	aBMM!$++-. 3
 
 	
 
 }}QA'qW+====	aBMM!$++-. 3
 
 	
 
 }}QA'q5H+IIII}}Q"e+++r   c                     [         R                  " S[         R                  " 5       S9nUR                  SS5        [         R                  " U5      S   S:X  d   eg )Nr   r`   r   r
   UUUUUU?)r   cycle_graphr[   rM   r\   r4   s     r   test_triangle_and_edge-TestDirectedClustering.test_triangle_and_edge   sB    NN12::<8	

1a}}Q"e+++r   rP   N)	rQ   rR   rS   rT   r]   rA   rN   rp   rU   rP   r   r   rW   rW   P   s    &
(8,0,r   rW   c                   <    \ rS rSr\S 5       rS rS rS rS r	Sr
g)	TestDirectedWeightedClustering   c                 0    [         R                  " S5      qg Nnumpypytestimportorskipnpclss    r   setup_class*TestDirectedWeightedClustering.setup_class          )r   c                     [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg Nweightr   rZ   r4   s     r   r]   .TestDirectedWeightedClustering.test_clustering   sK    JJLBMM!H5<<>?2EEE}}Q2%%%r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS9SSSSSSSSSSS.
:X  d   eg )Nr:   r`   r   r   r;   r   r<   rb   r4   s     r   rA   (TestDirectedWeightedClustering.test_path   s    MM"2::<8BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    [         R                  " S[         R                  " 5       S9n[        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS9S:X  d   eUR                  SS5        [        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS	/SS9SS
S.:X  d   eUR                  SS5        [        [         R                  " USS9R                  5       5      / SQ:X  d   e[         R                  " USS	/SS9SSS.:X  d   eg )Nr   r`   r   r   re   r   r   rf   r
   rg   r'   rh   ri   rj   r4   s     r   rN   &TestDirectedWeightedClustering.test_k5   s0   abjjl;BMM!H5<<>??RRR$$Qx8A===	aBMM!H5<<>? D
 
 	
 
 }}QAx8g<NNNN	aBMM!H5<<>? D
 
 	
 
 }}QAx8"=
 
 	
 
r   c                    [         R                  " S[         R                  " 5       S9nUR                  SSSS9  [         R                  " U5      S   S:X  d   e[
        R                  R                  [         R                  " USS9S   S	5        [
        R                  R                  [         R                  " USSS9S	5        g )
Nr   r`   r   r
   r   r   rn   r   gUUUUUU?)r   ro   r[   rM   r\   r{   testingassert_allcloser4   s     r   rp   5TestDirectedWeightedClustering.test_triangle_and_edge   s    NN12::<8	

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


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


""2==Ah#GPr   rP   N)rQ   rR   rS   rT   classmethodr~   r]   rA   rN   rp   rU   rP   r   r   rs   rs      s)    * *&

6
4Qr   rs   c                   H    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	rg
)TestWeightedClustering   c                 0    [         R                  " S5      qg rv   rx   r|   s    r   r~   "TestWeightedClustering.setup_class   r   r   c                     [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r   r   r   r1   r\   r3   r4   s     r   r]   &TestWeightedClustering.test_clustering   sK    HHJBMM!H5<<>?2EEE}}Q2%%%r   c                     [         R                  " S5      n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " USS9SSSSSSSSSSS.
:X  d   eg )Nr:   r   r   r;   r   r<   r   r@   r1   r\   r3   r4   s     r   rA    TestWeightedClustering.test_path   s    MM"BMM!H5<<>? D
 
 	
 
 }}Qx05
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/SS9R	                  5       5      SS/:X  d   e[         R                  " USSS9S:X  d   e[         R                  " USS/SS9SSS.:X  d   eg )Nr   r   rE   r   r   r   r   r   rF   r1   r\   r3   r4   s     r   rG   #TestWeightedClustering.test_cubical   s    BMM!H5<<>? 	D
 	
 		
 	
 }}Q"a'''BMM!aVH=DDFGAq6QQQ}}Q(3q888}}QAx8aLHHHr   c                    [         R                  " S5      n[        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R
                  " USS9S:X  d   eUR                  SS5        [        [         R                  " USS9R	                  5       5      / SQ:X  d   e[         R                  " USS/SS9SS	S
.:X  d   eg )Nr   r   r   re   r   r   rh   r
   ri   r'   r   rJ   r1   r\   r3   rk   rL   r4   s     r   rN   TestWeightedClustering.test_k5  s    a BMM!H5<<>??RRR$$Qx8A===	aBMM!H5<<>? D
 
 	
 
 }}QAx8"=
 
 	
 
r   c                 d   [         R                  " S5      nUR                  SSSS9  [         R                  " U5      S   S:X  d   e[        R
                  R                  [         R                  " USS9S   S5        [        R
                  R                  [         R                  " USSS9S5        g )	Nr   r   r
   r   r   r   r   rn   )r   ro   rM   r\   r{   r   r   r4   s     r   rp   -TestWeightedClustering.test_triangle_and_edge!  s    NN1	

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


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


""2==Ah#GOr   c                     [         R                  " S5      nUR                  SSSS9  UR                  SSSS9  [         R                  " U5      S   S:X  d   e[         R                  " USS9S   S:X  d   eg )	Nr   r   r   r   r   r   UUUUUUտ)r   ro   rM   r\   r4   s     r   test_triangle_and_signed_edge4TestWeightedClustering.test_triangle_and_signed_edge(  sn    NN1	

1a
#	

1a
"}}Q"e+++}}Qx03v===r   rP   N)rQ   rR   rS   rT   r   r~   r]   rA   rG   rN   rp   r   rU   rP   r   r   r   r      s4    * *&

6I"
"P>r   r   c                   B    \ rS rSr\S 5       rS rS rS rS r	S r
Srg	)
TestClusteringi0  c                 0    [         R                  " S5        g rv   ry   rz   r|   s    r   r~   TestClustering.setup_class1      G$r   c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r0   r   r4   s     r   r]   TestClustering.test_clustering5  sI    HHJBMM!$++-."444}}Q2%%%r   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg r9   r   r4   s     r   rA   TestClustering.test_path:  s~    MM"BMM!$++-. 3
 
 	
 
 }}Q$
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " US5      S:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg rD   r   r4   s     r   rG   TestClustering.test_cubicalU  s    BMM!$++-.2JJJJ}}Q"a'''BMM!aV,33561a&@@@}}Q"a'''}}QA'qQ<777r   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R
                  " U5      S:X  d   eUR                  SS5        [        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " USS/5      SSS.:X  d   eg )	Nr   re   r   r   rh   r
   ri   r'   r   r4   s     r   rN   TestClustering.test_k5]  s    a BMM!$++-./AAA$$Q'1,,,	aBMM!$++-. 3
 
 	
 
 }}QA'q5H+IIIIr   c                    [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R
                  " U5      S:X  d   eUR                  SS5        UR                  SSSS9  [        [         R                  " USS9R	                  5       5      / S	Q:X  d   eg )
Nr   re   r   r   r   r   r   r   )rn   r   r   r   r   )r   rJ   r1   r\   r3   rk   rL   rM   r4   s     r   test_k5_signedTestClustering.test_k5_signedk  s    a BMM!$++-./AAA$$Q'1,,,	a	

1a
#BMM!H5<<>? D
 
 	
 
r   rP   N)rQ   rR   rS   rT   r   r~   r]   rA   rG   rN   r   rU   rP   r   r   r   r   0  s.    % %&

68J
r   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestTransitivityiz  c                 f    [         R                  " 5       n[         R                  " U5      S:X  d   eg Nr   )r   r   transitivityr4   s     r   test_transitivity"TestTransitivity.test_transitivity{  s$    HHJq!Q&&&r   c                 h    [         R                  " S5      n[         R                  " U5      S:X  d   eg )Nr:   r   )r   r@   r   r4   s     r   rA   TestTransitivity.test_path  s'    MM"q!Q&&&r   c                 f    [         R                  " 5       n[         R                  " U5      S:X  d   eg r   )r   rF   r   r4   s     r   rG   TestTransitivity.test_cubical  s'    q!Q&&&r   c                     [         R                  " S5      n[         R                  " U5      S:X  d   eUR                  SS5        [         R                  " U5      S:X  d   eg )Nr   r   r   g      ?)r   rJ   r   rL   r4   s     r   rN   TestTransitivity.test_k5  sN    a q!Q&&&	aq!U***r   rP   N)	rQ   rR   rS   rT   r   rA   rG   rN   rU   rP   r   r   r   r   z  s    '''+r   r   c                   D    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
rg)TestSquareClusteringi  c                     [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / :X  d   e[         R                  " U5      0 :X  d   eg r0   )r   r   r1   r   r3   r4   s     r   r]   $TestSquareClustering.test_clustering  sM    HHJB((+2245;;;##A&",,,r   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[         R                  " U5      SSSSSSSSSSS.
:X  d   eg r9   )r   r@   r1   r   r3   r4   s     r   rA   TestSquareClustering.test_path  s    MM"B((+2245 :
 
 	
 
 ##A&+
 
 	
 
r   c                    [         R                  " 5       n[        [         R                  " U5      R	                  5       5      / SQ:X  d   e[        [         R                  " USS/5      R	                  5       5      SS/:X  d   e[         R                  " US/5      S   S:X  d   e[         R                  " US5      S:X  d   e[         R                  " USS/5      SSS.:X  d   eg )N)r   r   r   r   r   r   r   r   r   r   r   r   )r   rF   r1   r   r3   r4   s     r   rG   !TestSquareClustering.test_cubical  s    B((+2245 	:
 	
 		
 	
 B((QF3::<=%OOO##As+A.%777##Aq)U222##A1v.e2FFFFr   c                     [         R                  " S5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   eg )Nr   re   )r   rJ   r1   r   r3   r4   s     r   rN   TestSquareClustering.test_k5  s9    a B((+2245HHHr   c                     [         R                  " SS5      n[        [         R                  " U5      R	                  5       5      / SQ:X  d   eg )Nr   )
r   r   r   r   r   r   r   r   r   r   )r   complete_bipartite_graphr1   r   r3   r4   s     r   test_bipartite_k5&TestSquareClustering.test_bipartite_k5  s<    ''1-B((+22459WWWWr   c                 F   [         R                  " / SQ5      nUR                  / SQ5      nUR                  / SQ5      n[         R                  " US/5      S   S:X  d   e[         R                  " US/5      S   S:X  d   e[         R                  " US/5      S   S:X  d   eg)	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=   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   gwqGܱ?r   r   N)r   r   subgraphr   )r5   r   G1G2s       r   test_lind_square_clustering0TestSquareClustering.test_lind_square_clustering  s    HH
. ZZ78ZZ34##As+A.&888##B,Q/5888##B,Q/5888r   c                 ~    [         R                  " / SQ5      nSSSSSSS.n[         R                  " U5      U:X  d   eg)z'Test eq2 for figure 1 Peng et al (2008))r   r   r	   r   r   )r   r   r   r   r   r   r   Nr   )r5   r   r   s      r   test_peng_square_clustering0TestSquareClustering.test_peng_square_clustering  s>     HHEFsuqA##A&(222r   c                     [         R                  " S5      n[         R                  " U5      SSSSSS.:X  d   eUR                  / SQ5        [         R                  " U5      SSSSSS.:X  d   eg )Nr   r   r   r   r   r   r
   )r   r!   r"   )r   r@   r   add_edges_fromr4   s     r   !test_self_loops_square_clustering6TestSquareClustering.test_self_loops_square_clustering  sg    MM!##A&aA!a*HHHH	12##A&aA!a*HHHHr   rP   N)rQ   rR   rS   rT   r]   rA   rG   rN   r   r   r   r   rU   rP   r   r   r   r     s.    -

6G"IX9>3Ir   r   c                   6    \ rS rSr\S 5       rS rS rS rSr	g)TestAverageClusteringi  c                 0    [         R                  " S5        g rv   r   r|   s    r   r~   !TestAverageClustering.setup_class  r   r   c                     [         R                  " 5       n[        R                  " [        5         [         R
                  " U5        S S S 5        g ! , (       d  f       g = fr0   )r   r   ry   raisesZeroDivisionErrorrk   r4   s     r   r6    TestAverageClustering.test_empty  s4    HHJ]],-!!!$ .--   A
Ac                    [         R                  " S5      nUR                  SS5        [         R                  " U5      S:X  d   e[         R                  " USS9S:X  d   e[         R                  " USS9S:X  d   e[         R                  " U/ SQ5      S	:X  d   e[         R                  " U/ SQSS9S	:X  d   e[         R                  " U/ SQSS9S
:X  d   eg )Nr   r   g?Tcount_zerosFg98?r   r   r   gqq?gUUUUUU?r   ro   rM   rk   r4   s     r   test_average_clustering-TestAverageClustering.test_average_clustering   s    NN1	

1a$$Q'+>>>>$$QD9=PPPP$$QE:>QQQQ$$Q	2oEEE$$Q	tDWWW$$Q	uEXXXr   c                    [         R                  " S5      nUR                  SS5        UR                  SSSS9  [         R                  " USS9S:X  d   e[         R                  " USS	S
9S:X  d   e[         R                  " USSS
9S:X  d   eg )Nr   r   r   r   r   r   r   gT)r   r   Fg98r   r4   s     r   test_average_clustering_signed4TestAverageClustering.test_average_clustering_signed
  s    NN1	

1a	

1a
#$$Qx8<PPPP!!!H$G#$	
$ !!!H%H#$	
$r   rP   N)
rQ   rR   rS   rT   r   r~   r6   r   r   rU   rP   r   r   r   r     s$    % %%
Y
r   r   c                   0    \ rS rSr\S 5       rS rS rSrg)TestDirectedAverageClusteringi  c                 0    [         R                  " S5        g rv   r   r|   s    r   r~   )TestDirectedAverageClustering.setup_class  r   r   c                     [         R                  " 5       n[        R                  " [        5         [         R
                  " U5        S S S 5        g ! , (       d  f       g = fr0   )r   r[   ry   r   r   rk   r4   s     r   r6   (TestDirectedAverageClustering.test_empty  s4    JJL]],-!!!$ .--r   c                    [         R                  " S[         R                  " 5       S9nUR                  SS5        [         R                  " U5      S:X  d   e[         R                  " USS9S:X  d   e[         R                  " USS9S:X  d   e[         R                  " U/ S	Q5      S
:X  d   e[         R                  " U/ S	QSS9S
:X  d   e[         R                  " U/ S	QSS9S:X  d   eg )Nr   r`   r   g?Tr   Fg98?r   gqq?r   )r   ro   r[   rM   rk   r4   s     r   r   5TestDirectedAverageClustering.test_average_clustering#  s    NN12::<8	

1a$$Q'+>>>>$$QD9=PPPP$$QE:>QQQQ$$Q	2oEEE$$Q	tDWWW$$Q	uEXXXr   rP   N)	rQ   rR   rS   rT   r   r~   r6   r   rU   rP   r   r   r   r     s    % %%
Yr   r   c                   ,    \ rS rSrS rS rS rS rSrg)TestGeneralizedDegreei.  c                 f    [         R                  " 5       n[         R                  " U5      0 :X  d   eg r0   )r   r   generalized_degreer4   s     r   test_generalized_degree-TestGeneralizedDegree.test_generalized_degree/  s&    HHJ$$Q'2---r   c                     [         R                  " S5      n[         R                  " US5      SS0:X  d   e[         R                  " US5      SS0:X  d   eg )Nr   r   r   r   )r   r@   r  r4   s     r   rA   TestGeneralizedDegree.test_path3  sN    MM!$$Q*q!f444$$Q*q!f444r   c                 l    [         R                  " 5       n[         R                  " US5      SS0:X  d   eg )Nr   r   )r   rF   r  r4   s     r   rG   "TestGeneralizedDegree.test_cubical8  s/    $$Q*q!f444r   c                 |   [         R                  " S5      n[         R                  " US5      SS0:X  d   eUR                  SS5        [         R                  " US5      SS0:X  d   e[         R                  " USS/5      SS0SSS.S.:X  d   e[         R                  " U5      SS0SS0SSS.SSS.SSS.S	.:X  d   eg )
Nr   r   r   r
   r   r   r&   r   r   )r   rJ   r  rL   r4   s     r   rN   TestGeneralizedDegree.test_k5<  s    a $$Q*q!f444	a$$Q*q!f444$$QA/1vaA,3OOOO$$Q'1v1v|||,
 
 	
 
r   rP   N)	rQ   rR   rS   rT   r  rA   rG   rN   rU   rP   r   r   r  r  .  s    .5
5
r   r  )ry   networkxr   r   r$   r+   r-   rW   rs   r   r   r   r   r   r   r  rP   r   r   <module>r     s     //"/'' ''T=, =,@FQ FQRT> T>nG
 G
T+ +(eI eIP 
  
FY Y*
 
r   