o
    \i                     @   s  d dl Z d dlZd dlZd dlmZmZmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZ ejdZeddZeeejZdZi i edd	i d
Zg dZg dZee
gZdd Zdd Z ej!"de #eeej!"dddgej!"dedd Z$ej!"de%eddgdd Z&ej!"dedd Z'ej!"dedd  Z(ej!"de #eed!d" Z)ej!"de #eed#d$ Z*d%d& Z+d)d'd(Z,dS )*    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           	      K   s   ddl m} t| t|} }|j|fi ||| }tj|ddd d d |f }|t|jd d d d f |f }||fS )Nr   )DistanceMetric   )axis)	sklearn.metricsr   r
   
get_metricpairwisenpargsortarangeshape)	XYkmetrickwargsr   Dinddist r-   /var/www/www-root/data/www/176.119.141.140/sports-predictor/venv/lib/python3.10/site-packages/sklearn/neighbors/tests/test_ball_tree.pybrute_force_neighbors*   s   $r/   c                   C   s   t ttsJ d S )N)
issubclassr   r   r-   r-   r-   r.   $test_BallTree_is_BallTree64_subclass4   s   r1   r(   
array_typelistarrayBallTreeImplementationc                 C   s   t d}| tv r|dd}|dd}n| tv r1d|d d}d|d d}t||}t||}d}||d| d}|||\}}	t|||| \}
}t||
 d S )Nr   )(   r   )r   r         r   	leaf_sizer(   )	r   BOOLEAN_METRICSrandom_sampleroundDISCRETE_METRICSr	   queryr/   r   )r(   r2   r5   rngr%   r&   r'   btdist1ind1dist2ind2r-   r-   r.   test_ball_tree_query_metrics8   s   

rF   z#BallTreeImplementation, decimal_tol   r8   c           	      C   sl   t d}dtj |d }| |ddd}|j|dd\}}t||ddd	\}}t|||d
 t|| d S )Nr      )r6   rH   r   	haversiner9   r8   r'   )r'   r(   )decimal)r   r!   pir<   r?   r/   r   )	r5   decimal_tolr@   r%   rA   rB   rC   rD   rE   r-   r-   r.   test_query_haversineN   s   rN   c                 C   sN   t jg dtd}tjtdd | | W d   dS 1 s w   Y  dS )z/Check that we do not accept object dtype array.))r   rH   r   )rH   r8   )r8   r8   r   rH   )dtypez(setting an array element with a sequencematchN)r!   r4   objectpytestraises
ValueError)r5   r%   r-   r-   r.   test_array_object_type\   s   
"rV   c                 C   s   dd }dd }t d}d}tjt|d | ||d W d    n1 s'w   Y  d	}tjt|d | ||d W d    d S 1 sGw   Y  d S )
Nc                 S      dS )N1r-   )xyr-   r-   r.   wrong_returned_valuef      z4test_bad_pyfunc_metric.<locals>.wrong_returned_valuec                 S   rW   )Ng      ?r-   )rY   r-   r-   r.   one_arg_funci   r\   z,test_bad_pyfunc_metric.<locals>.one_arg_func)r8   rH   zDCustom distance function must accept two vectors and return a float.rP   )r(   z,takes 1 positional argument but 2 were given)r!   onesrS   rT   	TypeError)r5   r[   r]   r%   msgr-   r-   r.   test_bad_pyfunc_metricd   s   
"ra   c                 C   sj  t | dd\}}}}t|i }t|fd|d|}t|fd|d|}d}	|j||	d\}
}|j||	d\}}t|
|dd t|| |
jt	j
ksNJ |jt	jksVJ d	}|j||d
}|j||d
}t||D ]	\}}t|| qk|j||dd\}}
|j||dd\}}t|||
|D ]"\}}}}t|| t||dd |jt	j
ksJ |jt	jksJ qd S )N2   )random_seedfeaturesr   r9   r8   rJ   h㈵>rtolg
ףp=
@)rT)rh   return_distance)get_dataset_for_binary_treeMETRICSgetr   r   r?   r   r   rO   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_32rh   _ind64_ind32_dist_64_dist_32r-   r-   r.   $test_ball_tree_numerical_consistencyv   s4   

r   c                 C   s   t | d\}}}}t|i }t|fd|d|}t|fd|d|}d}	d}
|j||
|	dd}|j||
|	dd}t||dd	 |jtj	ksJJ |jtj
ksRJ d S )
Nrc   r   r9   gaussiang?T)hkernelbreadth_firstre   rf   )rj   rk   rl   r   r   kernel_densityr   rO   r!   rm   rn   )rq   r(   rr   rs   rt   ru   rv   rw   rx   r   r   	density64	density32r-   r-   r.   )test_kernel_density_numerical_consistency   s   r   c           
      C   sf   t | d\}}}}t|dd}t|dd}tddd}|j||dd}|j||dd}	t||	 d S )Nr   r   )r:   r   r   T)rh   dualtree)rj   r   r   r!   linspacetwo_point_correlationr   )
rq   rr   rs   rt   ru   rw   rx   rh   	counts_64	counts_32r-   r-   r.   0test_two_point_correlation_numerical_consistency   s   r   c           	      C   sp   t j| }|d|}|d|}|jt jdd}|jt jdd}|jt jdd}|jt jdd}||||fS )Nd   r8   F)rO   copy)r!   randomRandomStaterandastyperm   rn   )	rc   rd   r@   _X_Yrr   rt   rs   ru   r-   r-   r.   rj      s   rj   )r   )-	itertoolsnumpyr!   rS   numpy.testingr   r   r   sklearn.neighbors._ball_treer   r   r   sklearn.utilsr   sklearn.utils._testingr	   sklearn.utils.validationr
   r   r   r@   r   V_mahalanobisdotT	DIMENSIONdictrk   r>   r;   BALL_TREE_CLASSESr/   r1   markparametrizechainrF   rp   rN   rV   ra   r   r   r   rj   r-   r-   r-   r.   <module>   sT    





&
