
    _Mh                          d dl Zd dlmZmZmZ d dlZd dlmZ d dl	m
Z
 d dlmZ  G d d          Zej        j        d             ZdS )	    N)assert_allcloseassert_array_equalassert_equal)directed_hausdorff)distance)check_random_statec                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zej                            d
ddej                            d          g          d             Zd Zej                            ddgddg ej        d          dfdgddgddfdgddgej                            d          dfdgddgej                            d          dfddgg dddfddgg dej                            d          dfg          d             ZdS )TestHausdorffc                 ~   t           j                            d           t           j                            d          t           j        z  dz  }t          j        ||t          j        d          f          }t          j        |d                   |d<   t          j        |d                   |d<   t          j        ||t          j        d          f          }t          j        |dd df                   dz  |dd df<   t          j        |dd df                   dz  |dd df<   t          j        |d	                   d
z  |d	<   t          j        |d                   d
z  |d<   || _        || _	        t          j
        | j        ddd          | _        t          j
        | j	        ddd          | _        d S )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       b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/spatial/tests/test_hausdorff.pysetup_methodzTestHausdorff.setup_method   s   
	t	((--59M28C==9; ;!#v(>!?!?v!#v(>!?!?v?M28C==9; ;"$&)9!""a%)@"A"AC"GQ"$&)9!""a%)@"A"AC"GQ!#(8(>!?!?#!E!#(8(>!?!?#!E$&4;11===4;2A>>>    c                     t          | j        | j                  d         }t          | j        | j                  d         }||k    sJ d S )Nr   )r   r   r   )r#   forwardreverses      r'   test_symmetryzTestHausdorff.test_symmetry!   sK     %T[$+>>qA$T[$+>>qA'!!!!!!r)   c                     t          | j        | j                  d         }t          t	          j        t          j        | j        | j                  d                    }t          ||           d S )Nr   r   r   	r   r   r   maxr   aminr   cdistr   r#   actualexpecteds      r'   #test_brute_force_comparison_forwardz1TestHausdorff.test_brute_force_comparison_forward)   i     $DK==a@rwx~dk4;GG$%' ' ' ( ()))))r)   c                     t          | j        | j                  d         }t          t	          j        t          j        | j        | j                  d                    }t          ||           d S Nr   r   )	r   r   r   r0   r   r1   r   r2   r   r3   s      r'   #test_brute_force_comparison_reversez1TestHausdorff.test_brute_force_comparison_reverse3   r7   r)   c                 f    t          | j        | j                  d         }t          |d           d S )Nr           )r   r   r   )r#   r4   s     r'   test_degenerate_casez"TestHausdorff.test_degenerate_case=   s2     $DK==a@$$$$$r)   c                 6   t          | j        dd df         | j        dd df                   d         }t          t	          j        t          j        | j        dd df         | j        dd df                   d                    }t          ||           d S )N.r   r   r   r   r/   r3   s      r'   test_2d_data_forwardz"TestHausdorff.test_2d_data_forwardC   s     $DKRaR$8$(KRaR$8: ::;=rwx~dk#rr'.B.2k#rr'.B D  D$%' ' ' ( ( 	)))))r)   c                     t          | j        | j                  d         }t          t	          j        t          j        | j        | j                  d                    }t          ||           d S r9   )	r   r"   r!   r0   r   r1   r   r2   r   r3   s      r'   test_4d_data_reversez"TestHausdorff.test_4d_data_reverseM   si     $DNDNCCAFrwx~dndnMM$%' ' ' ( ()))))r)   c                     t          j        ddgddgddgddgddgg          }t          j        ddgddgdd	gd
dgg          }t          ||          dd          }d}t          ||           d S )Nir   r   r      r      r   
   	   )r   r   )r   arrayr   r   )r#   path_simple_1path_simple_2r4   r5   s        r'   test_indiceszTestHausdorff.test_indicesV   s     2c(Aa51Q%!A1!FGG1Q%!A3"Q!@AA#M=AA!""E68,,,,,r)   c                     t          d           }|                                }t          | j        | j                   t          d           }|                                }t          ||           d S Nr   	get_stater   r   r   r   )r#   rsold_global_staters2new_global_states        r'   test_random_statezTestHausdorff.test_random_state_   sf      %%<<>>4;444 &&==??%'788888r)   r   NiE   c                     t          d           }|                                }t          | j        | j        |           t          d           }|                                }t          ||           d S rM   rN   )r#   r   rP   rQ   rR   rS   s         r'   test_random_state_None_intz(TestHausdorff.test_random_state_None_inti   sh      %%<<>>4;T::: &&==??%'788888r)   c                 $   t           j                            d          }|                    d          }|                    d          }d}t          j        t
          |          5  t          ||           d d d            d S # 1 swxY w Y   d S )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_dimensionsz%TestHausdorff.test_invalid_dimensionst   s     i##$KLLJJvJJv8]:S111 	% 	%q!$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   'BB	B	zA, B, seed, expectedr   r   r   )r<   r   r   r   r   )r   r   rd   *- )r<   r   r   )r<   r   r   c                    t          |||          }t          |d         |d                    |}t          |d          r|j        j        j        }|dk    s|dk    r|dd          |dd          k    sJ t          |t          j        j	                  s0t          |||          }t          |d         |d                    d S d S )N)uvr   r   bit_generatorr   rf   )rh   ri   r_   )
r   r   hasattrrj   	_seed_seqentropy
isinstancer   r   RandomState)r#   r`   ra   r   r5   num_parallel_threadsr4   starting_seeds           r'   test_subsetszTestHausdorff.test_subsets   s    L $a14888q	8A;///4)) 	A .8@M1$$(>(>!"":!""----$	 566 	4'!qd;;;FF1Ix{33333	4 	4r)   )__name__
__module____qualname__r(   r-   r6   r:   r=   r?   rA   rK   rT   r\   markparametrizer   r   r[   rW   rc   int64rr    r)   r'   r
   r
      s       ? ? ?&" " "* * ** * *% % %* * ** * *- - -9 9 9 [VdHbi6K6KC6P6P%QRR9 9 SR9% % % [3

	!		 
	
		
 
			q	!	!		 
			q	!	!		
 5		 	 	 	 
	 5		 	 	 			u	%	% 
	9#6 # #H4 4I# #H4 4 4r)   r
   c                     	 dd l } n$# t          $ r t          j        d           Y nw xY w|                                 j        dk     rt          j        d           t          d          }t          j        |df          }t          j        d          }d	d	g||d
z
  <   t          ||          }t          |d         d           t          |d
         |d
z
             d S )Nr   z)psutil required to check available memoryl       P z.insufficient memory available to run this testg   ZAr   )shaperY   r   r   )rh   ri   g
 H@)psutilModuleNotFoundErrorr\   skipvirtual_memory	availableintr   r   r   r   )r|   sizearr1arr2r4   s        r'   test_massive_arr_overflowr      s    
A A A A?@@@@@A(833DEEEs88D84)$$$D8&!!!DVDN$$///FF1I1222F1Itax(((((s    (()numpyr   numpy.testingr   r   r   r\   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r
   rv   xslowr   ry   r)   r'   <module>r      s       ) ) ) ) ) ) ) ) ) )  5 5 5 5 5 5 " " " " " " / / / / / /g4 g4 g4 g4 g4 g4 g4 g4T ) ) ) ) )r)   