
    ܛ7i&                     \    d Z ddlZddlZddlmc mZ ej                  Z	d Z
 G d d      Zy)z#
Threshold Graphs
================
    Nc                      g d} t        j                  t        d      5  t        j                  |        d d d        y # 1 sw Y   y xY w)N)       @      r   znot a valid creation sequence)match)pytestraises
ValueErrornxtthreshold_graph)bad_creation_sequences    e/home/rose/Desktop/poly/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_threshold.py.test_threshold_graph_invalid_creation_sequencer      s3    *	z)H	I12 
J	I	Is	   ?Ac                   x    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zy)TestGeneratorThresholdc                    t        j                  d      }t        j                  |      sJ t        j                  |j                         D cg c]  \  }}|	 c}}      sJ t        j                  d      }t        j                  |      sJ t        j                  |j                         D cg c]  \  }}|	 c}}      sJ g d}t        j                  |      rJ g d}t        j                  |      sJ t         j                  j                  |      }t        j                  |      sJ y c c}}w c c}}w )N
   )   r   r   r   r   r   r   r   r   r   )	nx
star_graphr   is_threshold_graphis_threshold_sequencedegreecomplete_graph
generatorshavel_hakimi_graph)selfGnddegs        r   "test_threshold_sequence_graph_testz9TestGeneratorThreshold.test_threshold_sequence_graph_test   s   MM"%%a(((((
)C
1!
)CDDDb!%%a(((((
)C
1!
)CDDD ,,S111((---MM,,S1%%a((( *D *Ds   D6
3D<
c                    g d}t         j                  j                  |      }t        j                  t
              5  t        j                  |dd       d d d        t        j                  |      }t        j                  |      }dj                  |      dk(  sJ t        j                  |d      }t        j                  |      }|g dk(  sJ t        j                  |d      }t        j                  |      }|g d	k(  sJ dj                  t        j                  |            dk(  sJ t        j                  ||      sJ t        j                  ||      sJ t        j                  ||      sJ y # 1 sw Y   &xY w)
Nr   Twith_labelscompact ddidr&   r   r!   r   r!   )r   ir   r!   r'   )r   r   r   )r   r   r   r   r	   r
   r   creation_sequencer   join	uncompactcould_be_isomorphic)	r   r"   r   cs0H0cs1H1cs2H2s	            r   test_creation_sequencesz.TestGeneratorThreshold.test_creation_sequences'   sB   MM,,S1]]:&!!#4F ' ##C(  %wws|v%%%##CT:  %>>>>##C6  %iwws}}S)*f444%%b!,,,%%b"---%%b"---# '&s   E::Fc                     t        j                  g d      g dk(  sJ t        j                  g d      g dk(  sJ t        j                  t        t         j                  g d       y )Nr!   r!   r!   r.   r!   r!   r   r   r   g      @      ?r   )r   make_compactr   r	   	TypeErrorr   s    r   test_make_compactz(TestGeneratorThreshold.test_make_compact>   sK     >?9LLL	*i777i!1!1?C    c                 Z   t        j                  g d      g dk(  sJ t        j                  g d      g dk(  sJ t        j                  t        j                  g d            t        j                  g d      k(  sJ t        j                  t        t         j                  g d       y )Nr>   r=   )r!   r!   r.   r!   r+   r?   )r   r3   r   r	   rB   rC   s    r   test_uncompactz%TestGeneratorThreshold.test_uncompactC   s    }}Y'+IIII}}126JJJJ}}MMBC
]]CDE 	E E 	i@rE   c                     t        j                  g d      g dk(  sJ t        j                  t        t         j                  g d       y )Nr>   )      ?rI   rI   g      ?      ?rJ   r?   )r   creation_sequence_to_weightsr   r	   rB   rC   s    r   !test_creation_sequence_to_weightsz8TestGeneratorThreshold.test_creation_sequence_to_weightsK   s<    //	: ?
 
 	
 
 	i!A!A?SrE   c                    g d}t        j                  t              5  t        j                  |dd       d d d        t        j                  |d      g dk(  sJ t        j                  |d      dgk(  sJ y # 1 sw Y   ExY w)Nr   Tr%   r*   ))r   r!   r,   r-   r/   r0      )r   r	   r
   r   weights_to_creation_sequence)r   r"   s     r   !test_weights_to_creation_sequencez8TestGeneratorThreshold.test_weights_to_creation_sequenceV   sw    ]]:&,,SdDQ '//F K
 
 	
 
 //TBqcIII '&s   A;;Bc                 ~    t        j                         }|j                  dd       t        j                  |      rJ y )Nr   r   )r   Graphadd_edger   find_alternating_4_cycle)r   r   s     r   test_find_alternating_4_cyclez4TestGeneratorThreshold.test_find_alternating_4_cycleb   s2    HHJ	

1a//2222rE   c                    g d}t         j                  j                  |      }t        j                  |d      }dD ]6  \  }}t        j
                  |||      t        j
                  |||      k(  r6J  t        j                  |d      }t        j                  |D cg c]  \  }}|	 c}}d      }	||	k(  sJ i }
t        |      D ]  \  }}||   d   }||
|<    |
t        j                  |d      k(  sJ t        j
                  g dd	d      d	dgk(  sJ t        j
                  g d
d	d      d	dgk(  sJ t        j                  t        t        j
                  g dd	d       t        j                  t        t        j
                  g d
dd       t        j                  t        t        j
                  g d
d	d       t        j
                  g d
d	d	      d	gk(  sJ y c c}}w )Nr   Tr*   ))r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r   r   r   r=   r   r>   r?   ab)r   r   r   r   r1   shortest_pathshortest_path_length	enumerate"single_source_shortest_path_lengthr   r	   rB   r
   )r   r"   r   r7   r    msplvtspl2spldjpls                r   test_shortest_pathz)TestGeneratorThreshold.test_shortest_pathg   s   MM,,S1##CT:TDAq$$S!Q/23C3CAq!3LLLL U &&sA.''s(;stq!s(;Q?d{{s^EArAq	ADG $ r<<QBBBB  !?AF1a&PPP  Aq1aV;;;i!2!2OQJj#"3"3YQGj#"3"3Y3G  Aq1aS888 )<s    G 
c                    t        j                  g dd      g dk(  sJ t        j                  g dd      g dk(  sJ t        j                  dd      g dk(  sJ t        j                  t        t         j
                  g dd       y )Nr>   r   )r   r   r   r   r   r   r=   r?   )r   rZ   r   r	   rB   rY   rC   s    r   test_shortest_path_lengthz0TestGeneratorThreshold.test_shortest_path_length   s    ''	159KKKK''(FJ O
 
 	
 
 ''(FJ O
 
 	
 
 	i!2!2OQGrE   c                     t        t        j                  dd            dk(  sJ t        j                  ddd      g dk(  sJ t        j                  t
        t        j                  dd       y )Nr   rI   *   )seed)
r!   r.   r!   r!   r!   r.   r.   r.   r!   r!   g      ?)lenr   random_threshold_sequencer   r	   r
   rC   s    r   test_random_threshold_sequencez5TestGeneratorThreshold.test_random_threshold_sequence   sc    300S9:b@@@,,R2> C
 
 	
 
 	j#"?"?SIrE   c                     t        j                  dd      g dk(  sJ t        j                  t        t         j                  dd       y Nr   r   )r!   r.   r!   )r   right_d_threshold_sequencer   r	   r
   rC   s    r   test_right_d_threshold_sequencez6TestGeneratorThreshold.test_right_d_threshold_sequence   s5    --a3FFFj#"@"@!QGrE   c                     t        j                  dd      g dk(  sJ t        j                  t        t         j                  dd       y ro   )r   left_d_threshold_sequencer   r	   r
   rC   s    r   test_left_d_threshold_sequencez5TestGeneratorThreshold.test_left_d_threshold_sequence   s5    ,,Q2oEEEj#"?"?AFrE   c                    g d}t        j                  |d      }t        j                  |      }t        j                  |      }||k(  sJ t        j                  t        j                  g d            }|dD cg c]  }|dz  	 c}k(  sJ t        j                  g d      }|dD cg c]  }|dz  	 c}k(  sJ t        j                  t	        t        d                  }|dD cg c]  }|d	z  	 c}k(  sJ t        j                  d      }|dD cg c]  }|d	z  	 c}k(  sJ t        j                  d
      }dD cg c]  }|dz  	 }}t        d t        ||      D              dk  sJ y c c}w c c}w c c}w c c}w c c}w )N)
r   rN   r   r         rv   rN   rv   rw   r   )	threshold)r   r   r   r   r   r   r   )rN   rN   rN   r   rv   rv   r   r   r   rw   rw   rw   r   r      ry   ry   g      ?ddidiiidididi)rv   rv   rN   rw   r   r   r   ry   r      r   	   r   g?ddidiiidididid)rw   rw   rv   ry   rN   rN   rN   r{   r   r|   r   r   r         c              3   >   K   | ]  \  }}t        ||z
          y wNabs.0cr!   s      r   	<genexpr>zATestGeneratorThreshold.test_weights_thresholds.<locals>.<genexpr>   s     8-$!Q3q1u:-   g+=)r   rO   rK   r3   listr[   sumzip)r   wseqcsr9   swss         r   test_weights_thresholdsz.TestGeneratorThreshold.test_weights_thresholds   s   ---dbA//3..t4Syy//>S0TUR
R!AIR
 
 	
 
 //0EFR
R!AIR
 
 	
 
 //Y5O0PQ)PQ)PAC)PQQQQ//@)PQ)PAC)PQQQQ//0@AJKJa"fJK8#dB-885@@@#



 R R Ls   <E3+E8*E=FFc                 X   t        j                  dgdgdgdgdgd      }|j                  dd       |j                  dd       |j                  dd       |j                  dd       |j                  dd       t        j                  |      g dk(  sJ t        j
                  |      }t        j                  |      sJ t        |j                               g d	k(  sJ t        j                  t        |j                               d
      }t        j                  |      |k(  sJ y )Nr   r   rN   rv   rw   )r   r   r   rN   rv   ry   )r   r   r   rw   )r   r   r   rN   rv   ry   Tr*   )r   rR   rS   r   rT   find_threshold_graphr   sortednodesr1   dictr   find_creation_sequence)r   r   TGr   s       r   test_finding_routinesz,TestGeneratorThreshold.test_finding_routines   s    HH!!!!!=>	

1a	

1a	

1a	

1a	

1a ++A.,>>> %%a(%%b)))bhhj!%7777""4		#4$G))!,222rE   c                    d}t        j                  |      }t        j                  d      t        j                  |      k(  sJ t	        t        j
                  |            t	        d |j                         D              k(  sJ t        j                  |      }|t        t        j                  |      j                               k(  sJ t        |      dz  t        j                  |      k(  sJ t        j                  |      }t        t        j                  |      j                               }t        d t        ||      D              t        j                   dd      k(  sJ t        j"                  |      j                         }t        j$                  |      }t        d t        ||      D              dk  sJ t        j&                  |      g d	k(  sJ t)        t        j*                  |      d
z         dk  sJ t        j*                  d      dk(  sJ t        j*                  d      dk(  sJ t        j*                  d      dk(  sJ t        j&                  d      g dk(  sJ t        j&                  d      g dk(  sJ y )Nddiiddidc              3   &   K   | ]	  \  }}|  y wr    )r   r    r!   s      r   r   zXTestGeneratorThreshold.test_fast_versions_properties_threshold_graphs.<locals>.<genexpr>   s     8Rztq!zs   r   c              3   >   K   | ]  \  }}t        ||z
          y wr   r   r   s      r   r   zXTestGeneratorThreshold.test_fast_versions_properties_threshold_graphs.<locals>.<genexpr>        6+$!Q3q1u:+r   r   gHz>r   c              3   >   K   | ]  \  }}t        ||z
          y wr   r   r   s      r   r   zXTestGeneratorThreshold.test_fast_versions_properties_threshold_graphs.<locals>.<genexpr>   r   r   )r   r   r   r   rv   ry   ry   r{   g!1,?g-q=diiiddigdidg      dddr@   dddiii)r   r   r   r   r   r   dddiiid)r   r   r   r   rN   rN   ry   )r   r   densityr   r   degree_sequencer   triangle_sequencer   	trianglesvaluesr   cluster_sequence
clusteringr   r   approxbetweenness_centralitybetweenness_sequenceeigenvaluesr   degree_correlation)r   r   r   tsc1c2b1b2s           r   .test_fast_versions_properties_threshold_graphszETestGeneratorThreshold.test_fast_versions_properties_threshold_graphs   s   #{{:&"**Q-777c))"-.&8Rqxxz8R2RRRR""2&T",,q/00233332w!|s}}R0000!!"%"--"))+,6#b"+66&--t:TTTT&&q)002%%b)6#b"+66===r"&>>>> 3))"->?%GGG%%i0D888%%e,444%%e,333x(,>>>>y)-BBBBrE   c                 \    t        j                  dd      }t        j                  dd      }y )Nrv   ry   )r   rs   rp   )r   r   s     r   test_tg_creation_routinesz0TestGeneratorThreshold.test_tg_creation_routines   s&    ))!Q/**1a0rE   c           	         t        j                  d      }|j                  j                  }t        j                  d       d}t	        j
                  |      }t	        j                  |      \  }}|j                  j                  |D cg c]  }|j                  ||       c}dd       t        j                  |      }y c c}w )Nnumpyscipyr   r@   g&.>)rtol)r   importorskiplinalgeigvalsr   r   eigenvectorstestingassert_allclosedotr   laplacian_matrix)	r   npeigenvalr   r   tgevaltgeveclvlapls	            r   test_eigenvectorsz(TestGeneratorThreshold.test_eigenvectors   s      )99$$G$#++B/


""V#DVrBFF2rNV#DcPT"U""1% $Es   	Cc                    d}t        j                  |      }t        j                  t        j
                  j                  t         j                  |t	        j                                t        j                  |t	        j                               }t        |j                               t        |j                               k(  sJ y )Nr   )create_using)r   r   r   r	   r   	exceptionNetworkXErrorDiGraph
MultiGraphr   edges)r   r   r   MGs       r   test_create_usingz(TestGeneratorThreshold.test_create_using  s    #LL&&		
   "--/Bbhhj!VAGGI%6666rE   N)__name__
__module____qualname__r#   r;   rD   rG   rL   rP   rU   re   rg   rm   rq   rt   r   r   r   r   r   r   r   rE   r   r   r      sf    )$..D
A	T
J3
90H(J HGA63&C81	&
7rE   r   )__doc__r   networkxr   networkx.algorithms.threshold
algorithmsrx   r   convert_node_labels_to_integerscnltir   r   r   rE   r   <module>r      s4   
   + +
**3z7 z7rE   