
    -i                        S SK r S SKrS SKrS SKJrJrJr  S SKJ	r	J
r
Jr  S SKJr  S SKJr  S SKJr  \R$                  R'                  S5      r\R+                  SS5      r\R.                  " \\R0                  5      rSr0 0 \" SS	90 S
.r/ SQr/ SQr\\
/rS rS r \RB                  RE                  S\ RF                  " \\5      5      \RB                  RE                  SSS/5      \RB                  RE                  S\5      S 5       5       5       r$\RB                  RE                  S\%" \SS/5      5      S 5       r&\RB                  RE                  S\5      S 5       r'\RB                  RE                  S\5      S 5       r(\RB                  RE                  S\ RF                  " \\5      5      S 5       r)\RB                  RE                  S\ RF                  " \\5      5      S 5       r*S r+SS jr,g)     N)assert_allcloseassert_array_almost_equalassert_equal)BallTree
BallTree32
BallTree64)check_random_state)_convert_container)check_array
      )p)	euclidean	manhattan	minkowski	chebyshev)hammingcanberra
braycurtis)jaccarddicerogerstanimoto
russellraosokalmichenersokalsneathc                    SSK Jn  [        U 5      [        U5      pUR                  " U40 UD6R	                  X5      n[
        R                  " USS9S S 2S U24   nU[
        R                  " UR                  S   5      S S 2S 4   U4   nX4$ )Nr   )DistanceMetric   )axis)	sklearn.metricsr   r   
get_metricpairwisenpargsortarangeshape)	XYkmetrickwargsr   Dinddists	            Y/var/www/html/venv/lib/python3.13/site-packages/sklearn/neighbors/tests/test_ball_tree.pybrute_force_neighborsr0   *   s    .q>;q>q!!&3F3<<QBA
**QQ
2A2
&CRYYqwwqz"1d7+S01D9    c                  :    [        [        [        5      (       d   eg )N)
issubclassr   r    r1   r/   $test_BallTree_is_BallTree64_subclassr5   4   s    h
++++r1   r*   
array_typelistarrayBallTreeImplementationc                    [        S5      nU [        ;   aA  UR                  S5      R                  S5      nUR                  S5      R                  S5      nOPU [        ;   aF  SUR                  S5      -  R                  S5      nSUR                  S5      -  R                  S5      n[        WU5      n[        WU5      nSnU" USU S9nUR                  XV5      u  p[        XEX`5      u  p[        X5        g )Nr   )(   r   )r   r         r   	leaf_sizer*   )	r	   BOOLEAN_METRICSrandom_sampleroundDISCRETE_METRICSr
   queryr0   r   )r*   r6   r9   rngr'   r(   r)   btdist1ind1dist2ind2s               r/   test_ball_tree_query_metricsrK   8   s     Q
C h'--a0h'--a0	#	#""8,,33A6""8,,33A61j)A1j)A	A	Qv	>B((1.KE'a8KEe+r1   z#BallTreeImplementation, decimal_tol   r=   c                     [        S5      nS[        R                  -  UR                  S5      -  nU " USSS9nUR	                  USS9u  pV[        X3SSS	9u  px[        XWUS
9  [        Xh5        g )Nr      )r;   rN   r   	haversiner>   r=   r)   )r)   r*   )decimal)r	   r#   pirA   rD   r0   r   )	r9   decimal_tolrE   r'   rF   rG   rH   rI   rJ   s	            r/   test_query_haversinerT   N   so     Q
C	BEE	C%%g..A	Q{	CB((1("KE'+FKEeK@d)r1   c                     [         R                  " / SQ[        S9n[        R                  " [
        SS9   U " U5        SSS5        g! , (       d  f       g= f)z/Check that we do not accept object dtype array.))r   rN   r   )rN   r=   )r=   r=   r   rN   )dtypez(setting an array element with a sequencematchN)r#   r8   objectpytestraises
ValueError)r9   r'   s     r/   test_array_object_typer]   \   s9     	2&AA	z)S	Tq! 
U	T	Ts   	A
Ac                 (   S nS n[         R                  " S5      nSn[        R                  " [        US9   U " X1S9  S S S 5        Sn[        R                  " [        US9   U " X2S9  S S S 5        g ! , (       d  f       N9= f! , (       d  f       g = f)Nc                     g)N1r4   )xys     r/   wrong_returned_value4test_bad_pyfunc_metric.<locals>.wrong_returned_valuef       r1   c                     g)Ng      ?r4   )ra   s    r/   one_arg_func,test_bad_pyfunc_metric.<locals>.one_arg_funci   re   r1   )r=   rN   zDCustom distance function must accept two vectors and return a float.rW   )r*   z,takes 1 positional argument but 2 were given)r#   onesrZ   r[   	TypeError)r9   rc   rg   r'   msgs        r/   test_bad_pyfunc_metricrl   d   sr     	A
PC	y	,q> 
- 9C	y	,q6 
-	,	 
-	, 
-	,s   A2"B2
B 
Bc                     [        U SS9u  p#pE[        R                  U0 5      n[        U4SUS.UD6n[	        U4SUS.UD6nSn	UR                  XIS9u  pUR                  XYS9u  p[        XSS9  [        X5        U
R                  [        R                  :X  d   eUR                  [        R                  :X  d   eS	nUR                  XNS
9nUR                  X^S
9n[        X5       H  u  nn[        UU5        M     UR                  XNSS9u  pUR                  X^SS9u  p[        XX5       H_  u  nnnn[        UU5        [        UUSS9  UR                  [        R                  :X  d   eUR                  [        R                  :X  a  M_   e   g )N2   )random_seedfeaturesr   r>   r=   rP   h㈵>rtolg
ףp=
@)rT)rt   return_distance)get_dataset_for_binary_treeMETRICSgetr   r   rD   r   r   rV   r#   float64float32query_radiuszip)global_random_seedr*   X_64X_32Y_64Y_32metric_paramsbt_64bt_32r)   dist_64ind_64dist_32ind_32rt   _ind64_ind32_dist_64_dist_32s                      r/   $test_ball_tree_numerical_consistencyr   v   s    9&D KK+MtIqI=IEtIqI=IE 	
Akk$k,OGkk$k,OGG40 ==BJJ&&&==BJJ&&& 	A*F*Ff-VV$ .
 ((D(IOF((D(IOF.1&'.S*(VV$(6~~+++~~+++	 /Tr1   c                 d   [        U S9u  p#pE[        R                  U0 5      n[        U4SUS.UD6n[	        U4SUS.UD6nSn	Sn
UR                  XJU	SS9nUR                  XZU	SS9n[        XSS	9  UR                  [        R                  :X  d   eUR                  [        R                  :X  d   eg )
Nro   r   r>   gaussiang?T)hkernelbreadth_firstrq   rr   )rv   rw   rx   r   r   kernel_densityr   rV   r#   ry   rz   )r}   r*   r~   r   r   r   r   r   r   r   r   	density64	density32s                r/   )test_kernel_density_numerical_consistencyr      s     9EWXDKK+MtIqI=IEtIqI=IEFA$$TvT$RI$$TvT$RIIt4??bjj(((??bjj(((r1   c                     [        U S9u  pp4[        USS9n[        USS9n[        R                  " SSS5      nUR                  X7SS9nUR                  XGSS9n	[        X5        g )Nr   r   )r?   r   r   T)rt   dualtree)rv   r   r   r#   linspacetwo_point_correlationr   )
r}   r~   r   r   r   r   r   rt   	counts_64	counts_32s
             r/   0test_two_point_correlation_numerical_consistencyr      sn    8EWXDtr*Etr*E
Aq"A++D+EI++D+EII)r1   c                    [         R                  R                  U 5      nUR                  SU5      nUR                  SU5      nUR	                  [         R
                  SS9nUR	                  [         R
                  SS9nUR	                  [         R                  SS9nUR	                  [         R                  SS9nXWXh4$ )Nd   r=   F)rV   copy)r#   randomRandomStaterandastypery   rz   )	ro   rp   rE   _X_Yr~   r   r   r   s	            r/   rv   rv      s    
))


,C	#x	 B	!X	B992::E92D992::E92D992::E92D992::E92Dt!!r1   )r   )-	itertoolsnumpyr#   rZ   numpy.testingr   r   r   sklearn.neighbors._ball_treer   r   r   sklearn.utilsr	   sklearn.utils._testingr
   sklearn.utils.validationr   r   r   rE   r   V_mahalanobisdotT	DIMENSIONdictrw   rC   r@   BALL_TREE_CLASSESr0   r5   markparametrizechainrK   r|   rT   r]   rl   r   r   r   rv   r4   r1   r/   <module>r      s      R R I I , 5 0iiBA}moo6	 	 9   , 9???DT#UV'8913DE, F : W,& )3/@1a&+I** 13DE" F" 13DE7 F7" 9??7O#LM#, N#,L 9??7O#LM) N)"*"r1   