
    e!h                          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y)	    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                  j                  d
ddej                   j#                  d      g      d        Zd Zej                  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                   j#                  d      dfdgddgej                   j#                  d      dfddgg dddfddgg dej                   j#                  d      dfg      d        Zy)TestHausdorffc                    t         j                  j                  d       t         j                  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      | _        y )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       j/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/spatial/tests/test_hausdorff.pysetup_methodzTestHausdorff.setup_method   s{   
		t		((-59M288C=9;!#v(>!?v!#v(>!?v??M288C=9;"$&&)9!"a%)@"AC"GQ"$&&)9!"a%)@"AC"GQ!#(8(>!?#!E!#(8(>!?#!E$&4;;11=4;;2A>    c                     t        | j                  | j                        d   }t        | j                  | j                        d   }||k7  sJ y )Nr   )r   r   r   )r#   forwardreverses      r'   test_symmetryzTestHausdorff.test_symmetry!   sD     %T[[$++>qA$T[[$++>qA'!!!r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y )Nr   r   r   	r   r   r   maxr   aminr   cdistr   r#   actualexpecteds      r'   #test_brute_force_comparison_forwardz1TestHausdorff.test_brute_force_comparison_forward)   T     $DKK=a@rwwx~~dkk4;;G$%' ()r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y 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                 b    t        | j                  | j                        d   }t        |d       y )Nr           )r   r   r   )r#   r4   s     r'   test_degenerate_casez"TestHausdorff.test_degenerate_case=   s'     $DKK=a@$r)   c                 *   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        ||       y )N.r   r   r   r   r/   r3   s      r'   test_2d_data_forwardz"TestHausdorff.test_2d_data_forwardC   s     $DKKRaR$8$(KKRaR$8::;=rwwx~~dkk#rr'.B.2kk#rr'.B D$%' ( 	)r)   c                     t        | j                  | j                        d   }t        t	        j
                  t        j                  | j                  | j                        d            }t        ||       y r9   )	r   r"   r!   r0   r   r1   r   r2   r   r3   s      r'   test_4d_data_reversez"TestHausdorff.test_4d_data_reverseM   sT     $DNNDNNCAFrwwx~~dnndnn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        ||       y )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   sz     2c(Aa51Q%!A1!FG1Q%!A3"Q!@A#M=A!"E68,r)   c                     t        d       }|j                         }t        | j                  | j                         t        d       }|j                         }t        ||       y Nr   	get_stater   r   r   r   )r#   rsold_global_staters2new_global_states        r'   test_random_statezTestHausdorff.test_random_state_   sN      %<<>4;;4 &==?%'78r)   r   NiE   c                     t        d       }|j                         }t        | j                  | j                  |       t        d       }|j                         }t        ||       y rM   rN   )r#   r   rP   rQ   rR   rS   s         r'   test_random_state_None_intz(TestHausdorff.test_random_state_None_inti   sP      %<<>4;;T: &==?%'78r)   c                    t         j                  j                  d      }|j                  d      }|j                  d      }d}t        j                  t
        |      5  t        ||       d d d        y # 1 sw Y   y xY w)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   sg     ii##$KLJJvJJv8]]:S1 	%q!$	% 	% 	%s   A55A>zA, B, seed, expectedr   r   r   )r<   r   r   r   r   )r   r   rd   *- )r<   r   r   )r<   r   r   c                 X   t        |||      }t        |d   |d          |}t        |d      r |j                  j                  j
                  }|dk(  s|dk7  r|dd  |dd  k(  sJ t        |t        j                  j                        s!t        |||      }t        |d   |d          y y )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q	8A;/4) ..88@@M1$(>!":!"---$		 5 56'!qd;FF1Ix{3 7r)   )__name__
__module____qualname__r(   r-   r6   r:   r=   r?   rA   rK   rT   r\   markparametrizer   r   r[   rW   rc   int64rr    r)   r'   r
   r
      sk   ?&"**%**-9 [[VdHbii6K6KC6P%QR9 S9% [[3

	!		 
	
		
 
			q	!		 
			q	!		
 5		 	 
	 5		 			u	% 
	9#6 #H4I#H4r)   r
   c                     	 dd l }  j	                         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
         y # t        $ r t        j                  d       Y w xY w)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 ((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   r\   scipy.spatial.distancer   scipy.spatialr   scipy._lib._utilr   r
   rv   xslowr   ry   r)   r'   <module>r      sK    ) )  5 " /g4 g4T ) )r)   