
    Ug                         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g          d             Zd Zej                            ddgddgddfdgddgddfddgg d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       a/var/www/surfInsights/venv3-11/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   rc   i*- )r<   r   r   c                     t          |||          }t          |d         |d                    |dd          |dd          k    sJ d S )N)uvr   r   r   )r   r   )r#   r_   r`   r   r5   r4   s         r'   test_subsetszTestHausdorff.test_subsets~   sW    * $a14888q	8A;///abbzXabb\))))))r)   )__name__
__module____qualname__r(   r-   r6   r:   r=   r?   rA   rK   rT   r[   markparametrizerV   rb   rh    r)   r'   r
   r
      se       ? ? ?&" " "* * ** * *% % %* * ** * *- - -9 9 9 [VdH%5669 9 769% % % [3

	
		 
	
		
 5		 	 	 	 
	6  &* *' &* * *r)   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   )shaperX   r   r   )rf   rg   g
 H@)psutilModuleNotFoundErrorr[   skipvirtual_memory	availableintr   r   r   r   )rq   sizearr1arr2r4   s        r'   test_massive_arr_overflowrz      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
   rl   xslowrz   rn   r)   r'   <module>r      s       ) ) ) ) ) ) ) ) ) )  5 5 5 5 5 5 " " " " " " / / / / / /L* L* L* L* L* L* L* L*^ ) ) ) ) )r)   