
    (ph                          S SK rS SKJrJrJr  S SKrS SKJr  S SK	J
r
  S SKJr   " S S5      r\R                  R                  S 5       rg)	    N)assert_allcloseassert_array_equalassert_equal)directed_hausdorff)distance)check_random_statec                   *   \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 r\R                  R                  SSS\R"                  R%                  S5      /5      S 5       rS r\R                  R                  SS/SS/\R*                  " S5      S4S/SS/SS4S/SS/\R"                  R%                  S5      S4S/SS/\R"                  R%                  S5      S4SS// SQSS4SS// SQ\R"                  R%                  S5      S4/5      S 5       rSrg)TestHausdorff   c                    [         R                  R                  S5        [         R                  R                  S5      [         R                  -  S-  n[         R                  " X[         R
                  " S5      45      n[         R                  " US   5      US'   [         R                  " US   5      US'   [         R                  " X[         R
                  " S5      45      n[         R                  " USS 2S4   5      S-  USS 2S4'   [         R                  " USS 2S4   5      S-  USS 2S4'   [         R                  " US	   5      S
-  US	'   [         R                  " US   5      S
-  US'   X l        X0l	        [         R                  " U R                  SSSS9U l        [         R                  " U R                  SSSS9U l        g )Ni  d      ).r   ).   r   r   g       @r   r   gffffff
@r   r         axis   )nprandomseedpicolumn_stackzeroscossinpath_1path_2insert	path_1_4d	path_2_4d)selfrandom_anglesrandom_columnsrandom_columns_2s       U/var/www/html/venv/lib/python3.13/site-packages/scipy/spatial/tests/test_hausdorff.pysetup_methodTestHausdorff.setup_method   ss   
		t		((-59288C=9;!#v(>!?v!#v(>!?v??288C=9;"$&&)9!"a%)@"AC"GQ"$&&)9!"a%)@"AC"GQ!#(8(>!?#!E!#(8(>!?#!E$&4;;11=4;;2A>    c                     [        U R                  U R                  5      S   n[        U R                  U R                  5      S   nX:w  d   eg )Nr   )r   r   r    )r$   forwardreverses      r(   test_symmetryTestHausdorff.test_symmetry!   sB     %T[[$++>qA$T[[$++>qA!!!r+   c                     [        U R                  U R                  5      S   n[        [        R
                  " [        R                  " U R                  U R                  5      SS95      n[        X5        g )Nr   r   r   	r   r   r    maxr   aminr   cdistr   r$   actualexpecteds      r(   #test_brute_force_comparison_forward1TestHausdorff.test_brute_force_comparison_forward)   R     $DKK=a@rwwx~~dkk4;;G$%' ()r+   c                     [        U R                  U R                  5      S   n[        [        R
                  " [        R                  " U R                  U R                  5      SS95      n[        X5        g Nr   r   )	r   r    r   r3   r   r4   r   r5   r   r6   s      r(   #test_brute_force_comparison_reverse1TestHausdorff.test_brute_force_comparison_reverse3   r;   r+   c                 b    [        U R                  U R                  5      S   n[        US5        g )Nr           )r   r   r   )r$   r7   s     r(   test_degenerate_case"TestHausdorff.test_degenerate_case=   s'     $DKK=a@$r+   c                 &   [        U R                  SS S24   U R                  SS S24   5      S   n[        [        R
                  " [        R                  " U R                  SS S24   U R                  SS S24   5      SS95      n[        X5        g )N.r   r   r   r   r2   r6   s      r(   test_2d_data_forward"TestHausdorff.test_2d_data_forwardC   s     $DKKRaR$8$(KKRaR$8::;=rwwx~~dkk#rr'.B.2kk#rr'.B D$%' ( 	)r+   c                     [        U R                  U R                  5      S   n[        [        R
                  " [        R                  " U R                  U R                  5      SS95      n[        X5        g r=   )	r   r#   r"   r3   r   r4   r   r5   r   r6   s      r(   test_4d_data_reverse"TestHausdorff.test_4d_data_reverseM   sR     $DNNDNNCAFrwwx~~dnndnnM$%' ()r+   c                     [         R                  " SS/SS/SS/SS/SS//5      n[         R                  " SS/SS/SS	/S
S//5      n[        X!5      SS  nSn[        X45        g )Nir   r   r      r      r   
   	   )r   r   )r   arrayr   r   )r$   path_simple_1path_simple_2r7   r8   s        r(   test_indicesTestHausdorff.test_indicesV   sv     2c(Aa51Q%!A1!FG1Q%!A3"Q!@A#MA!"E6,r+   c                     [        S 5      nUR                  5       n[        U R                  U R                  5        [        S 5      nUR                  5       n[        XB5        g Nr   	get_stater   r   r    r   )r$   rsold_global_staters2new_global_states        r(   test_random_stateTestHausdorff.test_random_state_   sK      %<<>4;;4 &==?%8r+   r   NiE   c                     [        S 5      nUR                  5       n[        U R                  U R                  U5        [        S 5      nUR                  5       n[        XS5        g rV   rW   )r$   r   rY   rZ   r[   r\   s         r(   test_random_state_None_int(TestHausdorff.test_random_state_None_inti   sM      %<<>4;;T: &==?%8r+   c                    [         R                  R                  S5      nUR                  S5      nUR                  S5      nSn[        R                  " [
        US9   [        X#5        S S S 5        g ! , (       d  f       g = f)Nl	   "{`R! r   r   )r   r   z'need to have the same number of columns)match)r   r   default_rngpytestraises
ValueErrorr   )r$   rngABmsgs        r(   test_invalid_dimensions%TestHausdorff.test_invalid_dimensionst   s\     ii##$KLJJvJJv8]]:S1q$ 211s   A22
B zA, B, seed, expectedr   r   r   )rA   r   r   r   r   )r   r   rp   *- )rA   r   r   )rA   r   r   c                 b   [        XUS9n[        US   US   5        Un[        US5      (       a   UR                  R                  R
                  nUS:X  d  US:w  a  USS  USS  :X  d   e[        U[        R                  R                  5      (       d  [        XUS9n[        US   US   5        g g )N)uvr   r   bit_generatorr   rr   )rt   ru   rj   )
r   r   hasattrrv   	_seed_seqentropy
isinstancer   r   RandomState)r$   rk   rl   r   r8   num_parallel_threadsr7   starting_seeds           r(   test_subsetsTestHausdorff.test_subsets   s    L $a48q	8A;/4)) ..88@@M1$(>!":!"---$		 5 566'!d;FF1Ix{3 7r+   )r   r"   r    r#   )__name__
__module____qualname____firstlineno__r)   r/   r9   r>   rB   rE   rH   rS   r]   rg   markparametrizer   r   rf   ra   rn   int64r~   __static_attributes__ r+   r(   r
   r
      si   ?&"**%**-9 [[VdHbii6K6KC6P%QR9 S9% [[3

	!		 
	
		
 
			q	!		 
			q	!		
 5		 	 
	 5		 			u	% 
	9#6 #H4I#H4r+   r
   c                      SS K n W R	                  5       R
                  S:  a  [        R                  " S5        [        S5      n[        R                  " US4S9n[        R                  " SS9nS	S	/X!S
-
  '   [        X#S9n[        US   S5        [        US
   US
-
  5        g ! [         a    [        R                  " S5         Nf = f)Nr   z)psutil required to check available memoryl       P z.insufficient memory available to run this testg   ZAr   )shaperd   r   r   )rt   ru   g
 H@)psutilModuleNotFoundErrorrg   skipvirtual_memory	availableintr   r   r   r   )r   sizearr1arr2r7   s        r(   test_massive_arr_overflowr      s    
A ((83DEs8D884)$D88&!DVDN$/FF1I12F1Itax(  A?@As   B# # CC)numpyr   numpy.testingr   r   r   rg   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r
   r   xslowr   r   r+   r(   <module>r      sK    ) )  5 " /g4 g4T ) )r+   