
    ިsg&                     b    d Z ddlZddlZddlmc mZ ddlm	Z	 ej                  Z G d d      Zy)z#
Threshold Graphs
================
    N)graph_could_be_isomorphicc                   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
   )	nx
star_graphnxtis_threshold_graphis_threshold_sequencedegreecomplete_graph
generatorshavel_hakimi_graph)selfGnddegs        [/var/www/html/venv/lib/python3.12/site-packages/networkx/algorithms/tests/test_threshold.py"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        ||      sJ t        ||      sJ t        ||      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   pytestraises
ValueErrorr   creation_sequencethreshold_graphjoin	uncompactr   )	r   r   r   cs0H0cs1H1cs2H2s	            r   test_creation_sequencesz.TestGeneratorThreshold.test_creation_sequences"   s;   MM,,S1]]:& 	G!!#4F	G ##C(  %wws|v%%%##CT:  %>>>>##C6  %iwws}}S)*f444(Q///(R000(R000#	G 	Gs   EE&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      sJ y )Nr   r   r   r&   r   r   r   r
   r	   g      @      ?g       @)r   make_compactr)   r*   	TypeErrorr   s    r   test_make_compactz(TestGeneratorThreshold.test_make_compact9   sQ     >?9LLL	*i777}}Y(8(8/JJJ    c                 ^   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      sJ y )Nr9   r8   )r   r   r&   r   r#   r:   )r   r/   r)   r*   r=   r>   s    r   test_uncompactz%TestGeneratorThreshold.test_uncompact>   s    }}Y'+IIII}}126JJJJ}}MMBC
]]CDE 	E E }}YGGGr@   c                     t        j                  g d      g dk(  sJ t        j                  t        t         j                  g d      sJ y )Nr9   )      ?rD   rD   g      ?      ?rE   r:   )r   creation_sequence_to_weightsr)   r*   r=   r>   s    r   !test_creation_sequence_to_weightsz8TestGeneratorThreshold.test_creation_sequence_to_weightsF   sI    //	: ?
 
 	
 
 }}s77
 	
 
r@   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'   r(      )r)   r*   r+   r   weights_to_creation_sequence)r   r   s     r   !test_weights_to_creation_sequencez8TestGeneratorThreshold.test_weights_to_creation_sequenceS   s    ]]:& 	R,,SdDQ	R//F K
 
 	
 
 //TBqcIII	R 	R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_cycle_   s2    HHJ	

1a//2222r@   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      sJ t        j                  t        t        j
                  g d
dd      sJ t        j                  t        t        j
                  g d
d	d      sJ 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   r8   r
   r9   r:   ab)r   r   r   r   r,   shortest_pathshortest_path_length	enumerate"single_source_shortest_path_lengthr)   r*   r=   r+   )r   r   r   r2   r   msplvtspl2spldjpls                r   test_shortest_pathz)TestGeneratorThreshold.test_shortest_pathd   s   MM,,S1##CT:T 	MDAq$$S!Q/23C3CAq!3LLLL	M &&sA.''s(;tq!(;Q?d{{s^ 	EArAq	ADG	 r<<QBBBB  !?AF1a&PPP  Aq1aV;;;}}Y(9(9?AqQQQ}}Z):):IsANNN}}Z):):Iq#NNN  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      sJ y )Nr9   r
   )r
   r   r
   r	   r
   r
   r8   r:   )r   rU   r)   r*   r=   rT   r>   s    r   test_shortest_path_lengthz0TestGeneratorThreshold.test_shortest_path_length|   s    ''	159KKKK''(FJ O
 
 	
 
 ''(FJ O
 
 	
 
 }}Y(9(9?ANNNr@   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      sJ y )Nr   rD   *   seed)
r   r&   r   r   r   r&   r&   r&   r   r   g      ?)lenr   random_threshold_sequencer)   r*   r+   r>   s    r   test_random_threshold_sequencez5TestGeneratorThreshold.test_random_threshold_sequence   si    300S9:b@@@,,R2> C
 
 	
 
 }}Z)F)FCPPPr@   c                     t        j                  dd      g dk(  sJ t        j                  t        t         j                  dd      sJ y Nr   r	   )r   r&   r   )r   right_d_threshold_sequencer)   r*   r+   r>   s    r   test_right_d_threshold_sequencez6TestGeneratorThreshold.test_right_d_threshold_sequence   s;    --a3FFF}}Z)G)GANNNr@   c                     t        j                  dd      g dk(  sJ t        j                  t        t         j                  dd      sJ y rk   )r   left_d_threshold_sequencer)   r*   r+   r>   s    r   test_left_d_threshold_sequencez5TestGeneratorThreshold.test_left_d_threshold_sequence   s;    ,,Q2oEEE}}Z)F)F1MMMr@   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   rI   r   r         rr   rI   rr   rs   r   )	threshold)r   r
   r	   r   r   r	   r   )rI   rI   rI   r   rr   rr   r	   r	   r	   rs   rs   rs   r
   r
      ru   ru   g      ?ddidiiidididi)rr   rr   rI   rs   r   r   r   ru   r	      r
   	   r   g?ddidiiidididid)rs   rs   rr   ru   rI   rI   rI   rw   r   rx   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:8   g+=)r   rJ   rF   r/   listrV   sumzip)r   wseqcsr4   swss         r   test_weights_thresholdsz.TestGeneratorThreshold.test_weights_thresholds   s   ---dbA//3..t4Syy//>S0TUR
AI
 
 	
 
 //0EFR
AI
 
 	
 
 //Y5O0PQ)PQACQQQQ//@)PQACQQQQ//0@AJKa"fK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   rI   rr   rs   )r
   r	   r   rI   rr   ru   )r
   r	   r   rs   )r
   r	   r   rI   rr   ru   Tr"   )r   rM   rN   r   rO   find_threshold_graphr   sortednodesr,   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2r@   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     8Rtq!8Rs   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:6r   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   rr   ru   ru   rw   g!1,?g-q=diiiddigdidg      dddr;   dddiii)r   r   r   r   r   r   dddiiid)r   r
   r
   r
   rI   rI   ru   )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Br@   c                     t        j                  dd      }t        j                  dd      }t        j                  |dd      }t        j                  |ddd      }y )Nrr   ru   r;   r
   re   )r   ro   rl   swap_d)r   r   s1s      r   test_tg_creation_routinesz0TestGeneratorThreshold.test_tg_creation_routines   sL    ))!Q/**1a0ZZ3$ZZ3!,r@   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#DrBFF2rN#DcPT"U""1% $Es   	Cc                    d}t        j                  |      }t        j                  t        j
                  j                  t         j                  |t	        j                               s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6r@   N)__name__
__module____qualname__r   r6   r?   rB   rG   rK   rP   r`   rb   ri   rm   rp   r   r   r   r   r   r   r   r@   r   r   r      se    )$1.K
H

J3
90O(Q ONA63&C8-	&
7r@   r   )__doc__r)   networkxr   networkx.algorithms.threshold
algorithmsrt   r   (networkx.algorithms.isomorphism.isomorphr   convert_node_labels_to_integerscnltir   r   r@   r   <module>r      s2   
   + + N
**~7 ~7r@   