a
    BCCfv                     @   s  d dl Z d dlmZmZmZmZmZmZ d dlm	Z
 d dlZd dlmZ d dlZd dlmZmZmZmZ d dlmZ d dlmZ d dlZejeegdd	d
 Zdd Zdd ZG dd dZeG dd deZeG dd deZeG dd deZeG dd deZ G dd dZ!G dd dZ"G dd dZ#eG dd  d e#Z$eG d!d" d"e#Z%eG d#d$ d$e#Z&eG d%d& d&e$Z'eG d'd( d(e$Z(eG d)d* d*e$Z)eG d+d, d,e%Z*eG d-d. d.e$Z+eG d/d0 d0e$Z,d1d2 Z-d3d4 Z.G d5d6 d6Z/eG d7d8 d8e/Z0eG d9d: d:e/Z1eG d;d< d<e0Z2eG d=d> d>e1Z3eG d?d@ d@e0Z4eG dAdB dBe1Z5G dCdD dDZ6dEdF Z7dGdH Z8dIdJ Z9dKdL Z:G dMdN dNZ;eG dOdP dPe;Z<G dQdR dRZ=eG dSdT dTe=Z>dUdV Z?dWdX Z@dYdZ ZAd[d\ ZBd]d^ ZCd_d` ZDdadb ZEdcdd ZFdedf ZGdgdh ZHdidj ZIdkdl ZJdmdn ZKdodp ZLdqdr ZMdsdt ZNdudv ZOdwdx ZPdydz ZQd{d| ZRd}d~ ZSejTjUe dkdddd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_ejT`dg ddd ZaeG dd dZbdd Zcdd Zddd ZeejT`deegdd Zfdd Zgdd ZhejT`deegdd ZidS )    N)assert_equalassert_array_equalassert_assert_almost_equalassert_array_almost_equalassert_allclose)raises)python_implementation)KDTree	Rectangledistance_matrixcKDTree)cKDTreeNodeminkowski_distance)paramsc                 C   s   | j S N)param)request r   [/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/spatial/tests/test_kdtree.pykdtree_type   s    r   c                 C   sp   | j dstdttfD ]N}| j dd d |j  }|t v rNtd| t|| fd|i}|t |< q| S )zClass decorator to create test cases for KDTree and cKDTree

    Tests use the class variable ``kdtree_type`` as the tree constructor.
    Z_Testz)Expected a class name starting with _Test   N_zDuplicated test name: r   )__name__
startswithRuntimeErrorr
   r   globalstype)ZklstreeZ	test_nameZ	test_caser   r   r   
KDTreeTest   s    
r    c                 C   sH   | | }||d| k  |8  < ||d| k   |7  < t |d|}|S )N      ?g      r   r   )abpboxsizediffdr   r   r   distance_box+   s
    r(   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )ConsistencyTestsc                 C   s   t |||S r   r   selfr"   r#   r$   r   r   r   distance3   s    zConsistencyTests.distancec              	   C   s~   | j }| j|d\}}t|d t|| j|  d  d}tttj| j|tj	d d f  d dd|d | k d S )Nr      :0yE>Zaxis)
xkdtreequeryr   npsumdatar   allnewaxis)r+   r0   r'   iepsr   r   r   test_nearest6   s
    "zConsistencyTests.test_nearestc              	   C   s   | j }| j}| j||\}}t|}|t| }t|d t|| j	|  d  d}t
ttj| j	|tjd d f  d dd|d | k | d S )Nr-   r.   r   r/   )r0   mr1   r2   r3   amaxZargmaxr   r4   r5   r   r7   )r+   r0   r;   ddiir'   r8   r9   r   r   r   test_m_nearest=   s    
"6zConsistencyTests.test_m_nearestc           	      C   s   | j }| j}| jj|| jj|d\}}d}d}t||D ]`\}}|tjkrLq8|d7 }t|d t	|| j
|  d  t||| k d|dd|d q8tt	| | j
|d|d | k | d S )	Nkdistance_upper_boundr.   r   r   r-   near_d=g should be less than )r0   r'   r1   r2   nzipr3   infr   r4   r5   r   r   r,   	r+   r0   r'   r=   r>   r9   hitsZnear_dZnear_ir   r   r   test_points_nearJ   s    
"$z!ConsistencyTests.test_points_nearc           	      C   s   | j }| j}| jj|| jjd|d\}}d}d}t||D ]X\}}|tjkrNq:|d7 }t|| 	|| j
| d t||| k d|dd|d q:tt| 	| j
|d|| k | d S )Nr   rA   r$   rB   r.   r   rC   rD   rE   )r0   r'   r1   r2   rF   rG   r3   rH   r   r,   r5   r   r   r4   rI   r   r   r   test_points_near_l1X   s    
$z$ConsistencyTests.test_points_near_l1c           	      C   s   | j }| j}| jj|| jjtj|d\}}d}d}t||D ]Z\}}|tjkrPq<|d7 }t|| 	|| j
| tj t||| k d|dd|d q<tt| 	| j
|tj|| k | d S )NrL   r.   r   r   rC   rD   rE   )r0   r'   r1   r2   rF   r3   rH   rG   r   r,   r5   r   r   r4   rI   r   r   r   test_points_near_linff   s    
$z&ConsistencyTests.test_points_near_linfc                 C   sV   | j }| j}d}| j||\}}| jj|||d\}}tt||d|  k d S )N皙?)r9   r   )r0   rA   r1   r2   r   r3   r6   )r+   r0   rA   r9   Zd_realZi_realr'   r8   r   r   r   test_approxt   s    zConsistencyTests.test_approxN)
r   
__module____qualname__r,   r:   r?   rK   rM   rN   rP   r   r   r   r   r)   2   s   r)   c                   @   s   e Zd Zdd ZdS )_Test_randomc                 C   s^   d| _ d| _tjd tj| j | j| _| j| jdd| _tj| j| _	d| _
d| _d S )Nd        r-   leafsize皙?
   )rF   r;   r3   randomseedrandnr5   r   r1   r0   r'   rA   r+   r   r   r   setup_method   s    z_Test_random.setup_methodNr   rQ   rR   r_   r   r   r   r   rS   }   s   rS   c                       s   e Zd Z fddZ  ZS )_Test_random_farc                    s"   t    tj| jd | _d S )NrZ   )superr_   r3   r[   r]   r;   r0   r^   	__class__r   r   r_      s    
z_Test_random_far.setup_methodr   rQ   rR   r_   __classcell__r   r   rc   r   ra      s   ra   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Test_smallc                 C   s   t g dg dg dg dg dg dg dg dg| _| | j| _| jj| _| jj| _t jd	 t j	d
| _
d| _d| _d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rV      r!   rU   )r3   arrayr5   r   r1   rF   r;   r[   r\   r]   r0   r'   rA   r^   r   r   r   r_      s     


z_Test_small.setup_methodc                 C   s   t | jddd d S )Nr   r   rO   r   )rO   r   r   r1   r2   r^   r   r   r   r:      s    z_Test_small.test_nearestc                 C   s$   t | jddddgddgf d S )Nrr   r-   rO   g?r   r   rs   r^   r   r   r   test_nearest_two   s    z_Test_small.test_nearest_twoN)r   rQ   rR   r_   r:   rt   r   r   r   r   rg      s   rg   c                       s   e Zd Z fddZ  ZS )_Test_small_nonleafc                    s    t    | j| jdd| _d S )Nr   rW   )rb   r_   r   r5   r1   r^   rc   r   r   r_      s    
z _Test_small_nonleaf.setup_methodre   r   r   rc   r   ru      s   ru   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test_vectorization_KDTreec                 C   sL   t g dg dg dg dg dg dg dg dg| _t| j| _d S 	Nrh   ri   rj   rk   rl   rm   rn   ro   )r3   rq   r5   r
   r1   r^   r   r   r   r_      s    
z&Test_vectorization_KDTree.setup_methodc                 C   s>   | j tg d\}}tt|t tt|tj d S Nrh   )	r1   r2   r3   rq   r   
isinstancefloatZ
issubdtypeZsignedintegerr+   r'   r8   r   r   r   test_single_query   s    z+Test_vectorization_KDTree.test_single_queryc                 C   s:   | j td\}}tt|d tt|d d S Nr-   rU   rp   )r-   rU   r1   r2   r3   zerosr   shaper{   r   r   r   test_vectorized_query   s    z/Test_vectorization_KDTree.test_vectorized_queryc                 C   s   d}| j j| }| j jtg d|d\}}tt||f tt||f ttt	|| d    tt|| d  | j jk d S N   rh   rA   )
r1   rF   r2   r3   rq   r   r   r   r6   isfiniter+   skkr'   r8   r   r   r   $test_single_query_multiple_neighbors   s     z>Test_vectorization_KDTree.test_single_query_multiple_neighborsc              
   C   s   d}| j j| }| j jtd|d\}}tt|dd|f tt|dd|f ttt	|d d d d | d f   tt|d d d d | d f | j jk d S Nr   r~   r   r-   rU   
r1   rF   r2   r3   r   r   r   r   r6   r   r   r   r   r   (test_vectorized_query_multiple_neighbors   s    .zBTest_vectorization_KDTree.test_vectorized_query_multiple_neighborsc                 C   sF   d}t jtdd  | jj|d d W d    n1 s80    Y  d S )N      ?zk must be an integer or*matchr   )pytestr   
ValueErrorr1   r2   )r+   r0   r   r   r   test_query_raises_for_k_none   s    z6Test_vectorization_KDTree.test_query_raises_for_k_noneN)	r   rQ   rR   r_   r|   r   r   r   r   r   r   r   r   rv      s   		rv   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )Test_vectorization_cKDTreec                 C   sL   t g dg dg dg dg dg dg dg dg| _t| j| _d S rw   )r3   rq   r5   r   r1   r^   r   r   r   r_      s    
z'Test_vectorization_cKDTree.setup_methodc                 C   s4   | j g d\}}tt|t tt|t d S rx   )r1   r2   r   ry   rz   intr{   r   r   r   r|      s    z,Test_vectorization_cKDTree.test_single_queryc                 C   s:   | j td\}}tt|d tt|d d S r}   r   r{   r   r   r   r      s    z0Test_vectorization_cKDTree.test_vectorized_queryc                 C   s^   t jd t jddj}| j|\}}t|||D ] \}}}t| j|||f q8d S )NrV   rp     )	r3   r[   r\   r]   Tr1   r2   rG   r   )r+   qsdsZi_sqr'   r8   r   r   r   *test_vectorized_query_noncontiguous_values   s
    zETest_vectorization_cKDTree.test_vectorized_query_noncontiguous_valuesc                 C   s   d}| j j| }| j jg d|d\}}tt||f tt||f ttt|| d    tt|| d  | j jk d S r   )	r1   rF   r2   r   r3   r   r   r6   r   r   r   r   r   r      s     z?Test_vectorization_cKDTree.test_single_query_multiple_neighborsc              
   C   s   d}| j j| }| j jtd|d\}}tt|dd|f tt|dd|f ttt	|d d d d | d f   tt|d d d d | d f | j jk d S r   r   r   r   r   r   r   	  s    .zCTest_vectorization_cKDTree.test_vectorized_query_multiple_neighborsN)	r   rQ   rR   r_   r|   r   r   r   r   r   r   r   r   r      s   	r   c                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )	ball_consistency        c                 C   s   t |d |d |S Nr   r   r*   r   r   r   r,     s    zball_consistency.distancec                 C   s   t | j}t | j|jd d }| jj|| j| j| j	d}t
|D ]t\}}| | j| || | j|| d| j	   }| | j| || | j|| d| j	   }t|| j| k d qFd S )Nr$   r9   r   T)r3   
atleast_2dr0   broadcast_tor'   r   r   query_ball_pointr$   r9   	enumerater,   r5   r   tol)r+   r0   r'   lr8   inddistnormr   r   r   test_in_ball  s    ,,zball_consistency.test_in_ballc           	      C   s   t | j}t | j|jd d }| jj|| j| j| j	d}t
|D ]\}}t j| jjtd}d||< | | j| || | j|| d| j	   }| | j| || | j|| d| j	   }t|| j | kd qFd S )Nr   r   dtypeFr   T)r3   r   r0   r   r'   r   r   r   r$   r9   r   onesrF   boolr,   r5   r   r   )	r+   r0   r'   r   r8   r   cr   r   r   r   r   test_found_all!  s    ,,zball_consistency.test_found_allN)r   rQ   rR   r   r,   r   r   r   r   r   r   r     s   	r   c                   @   s   e Zd Zdd ZdS )_Test_random_ballc                 C   sZ   d}d}t jd t j||| _| j| jdd| _t j|| _d| _d| _	d| _
d S )	NrT   rU   rV   r-   rW          @r   rY   )r3   r[   r\   r]   r5   r   r   r0   r$   r9   r'   r+   rF   r;   r   r   r   r_   .  s    z_Test_random_ball.setup_methodNr`   r   r   r   r   r   ,  s   r   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
_Test_random_ball_periodicc                 C   s   t |||dS r   r(   r*   r   r   r   r,   <  s    z#_Test_random_ball_periodic.distancec                 C   s`   d}d}t jd t jj||fd| _| j| jddd| _t |d| _d	| _	d
| _
d| _d S )Ni'  rU   rV   sizer-   r   rX   r%   rO   r   r   rY   )r3   r[   r\   uniformr5   r   r   fullr0   r$   r9   r'   r   r   r   r   r_   ?  s    z'_Test_random_ball_periodic.setup_methodc                 C   s   | j j| jd | j| j| jd}|D ]0}t| | j| | j| j| jd| j  k q$| j j| jd | j| j| jd}|D ]0}t| | j| | j| j| jd| j  k qzd S )Nr   r   )	r   r   r0   r'   r$   r9   r   r,   r5   )r+   r   r8   r   r   r   test_in_ball_outsideJ  s     . z/_Test_random_ball_periodic.test_in_ball_outsidec                 C   s   t j| jjtd}| jj| jd | j| j| j	d}d||< t 
| | j| | j| j| jd| j	  kslJ | jj| jd | j| j| j	d}d||< t 
| | j| | j| j| jd| j	  ksJ d S )Nr   r   r   F)r3   r   r   rF   r   r   r0   r'   r$   r9   r6   r,   r5   )r+   r   r   r   r   r   test_found_all_outsideR  s     & &z1_Test_random_ball_periodic.test_found_all_outsideN)r   rQ   rR   r,   r_   r   r   r   r   r   r   r   :  s   r   c                   @   s   e Zd ZdZdd ZdS )"_Test_random_ball_largep_issue9890gvIh%<=c                 C   sX   d}d}t jd t jjdd||fd| _| | j| _| j| _d| _d| _	d| _
d S )Nr   r-   {   rT   r   r   rZ   )r3   r[   r\   randintr5   r   r   r0   r$   r9   r'   r   r   r   r   r_   g  s    z/_Test_random_ball_largep_issue9890.setup_methodN)r   rQ   rR   r   r_   r   r   r   r   r   a  s   r   c                       s   e Zd Z fddZ  ZS )_Test_random_ball_approxc                    s   t    d| _d S NrO   rb   r_   r9   r^   rc   r   r   r_   v  s    
z%_Test_random_ball_approx.setup_methodre   r   r   rc   r   r   s  s   r   c                       s   e Zd Z fddZ  ZS )!_Test_random_ball_approx_periodicc                    s   t    d| _d S r   r   r^   rc   r   r   r_   ~  s    
z._Test_random_ball_approx_periodic.setup_methodre   r   r   rc   r   r   {  s   r   c                       s   e Zd Z fddZ  ZS )_Test_random_ball_farc                    s   t    d| _d S Nr   rb   r_   r'   r^   rc   r   r   r_     s    
z"_Test_random_ball_far.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )_Test_random_ball_far_periodicc                    s   t    d| _d S r   r   r^   rc   r   r   r_     s    
z+_Test_random_ball_far_periodic.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )_Test_random_ball_l1c                    s   t    d| _d S )Nr   )rb   r_   r$   r^   rc   r   r   r_     s    
z!_Test_random_ball_l1.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )_Test_random_ball_linfc                    s   t    tj| _d S r   rb   r_   r3   rH   r$   r^   rc   r   r   r_     s    
z#_Test_random_ball_linf.setup_methodre   r   r   rc   r   r     s   r   c                 C   s`   d}d}t jd | t j||}|t jdd|d}t|jd tt|d t	 d S )	N      rV   r-   rp   r   r-   rp   r   r   )
r3   r[   r\   r]   r   r   r   r   ry   list)r   rF   r;   r   rr   r   r   test_random_ball_vectorized  s    r   c           	      C   s   t jd d}d}t j||}| |}|j|ddd}|j|ddd}|j|ddd}t|D ]&}|| sv|| rbt|| ||  qbt|D ]&}|| s|| rt|| ||  qd S )	Nr     r-   g~jth?r   workers@   r   )r3   r[   r\   r]   r   ranger   )	r   rF   rA   pointsr   l1l2l3r8   r   r   r   $test_query_ball_point_multithreading  s    r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )two_trees_consistencyc                 C   s   t |||S r   r   r*   r   r   r   r,     s    ztwo_trees_consistency.distancec                 C   sl   | j j| j| j| j| jd}t|D ]B\}}|D ]4}| | j| | j	| | j| jd| j  ks0J q0q$d S )Nr   r   )
T1query_ball_treeT2r'   r$   r9   r   r,   data1data2)r+   r   r8   r   jr   r   r   test_all_in_ball  s    z&two_trees_consistency.test_all_in_ballc                 C   s   | j j| j| j| j| jd}t|D ]X\}}tj| jj	t
d}d||< t| | j| | j| | j| jd| j  ks$J q$d S )Nr   r   Fr   )r   r   r   r'   r$   r9   r   r3   r   rF   r   r6   r,   r   r   )r+   r   r8   r   r   r   r   r   r     s    z$two_trees_consistency.test_found_allN)r   rQ   rR   r,   r   r   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd ZdS )_Test_two_random_treesc                 C   sn   d}d}t jd t j||| _| j| jdd| _t j||| _| j| jdd| _d| _	d| _
d| _d S )	N2   rU   rV   r-   rW   r   r   rY   )r3   r[   r\   r]   r   r   r   r   r   r$   r9   r'   r   r   r   r   r_     s    z#_Test_two_random_trees.setup_methodNr`   r   r   r   r   r     s   r   c                   @   s   e Zd Zdd Zdd ZdS )_Test_two_random_trees_periodicc                 C   s   t |||dS r   r   r*   r   r   r   r,     s    z(_Test_two_random_trees_periodic.distancec                 C   sz   d}d}t jd t jj||fd| _| j| jddd| _t jj||fd| _| j| jddd| _d| _	d	| _
d
| _d S )Nr   rU   rV   r   r-   r   r   r   r   rY   )r3   r[   r\   r   r   r   r   r   r   r$   r9   r'   r   r   r   r   r_     s    z,_Test_two_random_trees_periodic.setup_methodN)r   rQ   rR   r,   r_   r   r   r   r   r     s   r   c                       s   e Zd Z fddZ  ZS )_Test_two_random_trees_farc                    s   t    d| _d S Nr-   r   r^   rc   r   r   r_     s    
z'_Test_two_random_trees_far.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )#_Test_two_random_trees_far_periodicc                    s   t    d| _d S r   r   r^   rc   r   r   r_     s    
z0_Test_two_random_trees_far_periodic.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )_Test_two_random_trees_linfc                    s   t    tj| _d S r   r   r^   rc   r   r   r_   
  s    
z(_Test_two_random_trees_linf.setup_methodre   r   r   rc   r   r     s   r   c                       s   e Zd Z fddZ  ZS )$_Test_two_random_trees_linf_periodicc                    s   t    tj| _d S r   r   r^   rc   r   r   r_     s    
z1_Test_two_random_trees_linf_periodic.setup_methodre   r   r   rc   r   r     s   r   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )Test_rectanglec                 C   s   t ddgddg| _d S Nr   r   )r   rectr^   r   r   r   r_     s    zTest_rectangle.setup_methodc                 C   s   t | jddgd d S )Nr!   r   r   r   min_distance_pointr^   r   r   r   test_min_inside  s    zTest_rectangle.test_min_insidec                 C   s   t | jddgd d S Nr!   g      ?r   r^   r   r   r   test_min_one_side  s    z Test_rectangle.test_min_one_sidec                 C   s    t | jddgtd d S r   )r   r   r   r3   sqrtr^   r   r   r   test_min_two_sides"  s    z!Test_rectangle.test_min_two_sidesc                 C   s$   t | jddgdtd  d S )Nr!   r   r-   r   r   max_distance_pointr3   r   r^   r   r   r   test_max_inside%  s    zTest_rectangle.test_max_insidec                 C   s"   t | jddgtdd d S r   )r   r   r   r3   hypotr^   r   r   r   test_max_one_side(  s    
z Test_rectangle.test_max_one_sidec                 C   s$   t | jddgdtd  d S r   r   r^   r   r   r   test_max_two_sides,  s    z!Test_rectangle.test_max_two_sidesc                 C   sV   | j dd\}}t|jddg t|jddg t|jddg t|jddg d S )Nr   rO   r   )r   splitr   maxesmins)r+   lessgreaterr   r   r   
test_split/  s
    zTest_rectangle.test_splitN)r   rQ   rR   r_   r   r   r   r   r   r   r  r   r   r   r   r     s   r   c                   C   s$   t tddgddgdtd d S Nr   r   r-   )r   r   r3   r   r   r   r   r   test_distance_l27  s    r  c                   C   s   t tddgddgdd d S r  )r   r   r   r   r   r   test_distance_l1;  s    r  c                   C   s    t tddgddgtjd d S r   )r   r   r3   rH   r   r   r   r   test_distance_linf?  s    r  c                  C   sB   t jd t jddd} t jddd}tt| |jd d S )NrV   rZ   r   rp      )rZ   r  )r3   r[   r\   r]   r   r   r   )r0   yr   r   r   test_distance_vectorizationC  s    r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )count_neighbors_consistencyc              	   C   s:   d}t | j| j|tdd | j| j|D  d S )NrY   c                 S   s   g | ]}t |qS r   len.0r   r   r   r   
<listcomp>N      z?count_neighbors_consistency.test_one_radius.<locals>.<listcomp>r   r   count_neighborsr   r3   r4   r   r+   r   r   r   r   test_one_radiusK  s    z+count_neighbors_consistency.test_one_radiusc              	   C   s:   d}t | j| j|tdd | j| j|D  d S )Nr   c                 S   s   g | ]}t |qS r   r
  r  r   r   r   r  S  r  zAcount_neighbors_consistency.test_large_radius.<locals>.<listcomp>r  r  r   r   r   test_large_radiusP  s    z-count_neighbors_consistency.test_large_radiusc                 C   sv   t t t dt dd}| j| j|}tt t 	|dk t
||D ]\}}t| j| j|| qRd S )N{Gz?rZ   rp   r   )r3   explinspacelogr   r  r   r   r6   r&   rG   r   )r+   rsresultsr   resultr   r   r   test_multiple_radiusU  s
     z0count_neighbors_consistency.test_multiple_radiusN)r   rQ   rR   r  r  r  r   r   r   r   r	  J  s   r	  c                   @   s   e Zd Zdd ZdS )_Test_count_neighborsc                 C   sL   d}d}t jd | jt j||dd| _| jt j||dd| _d S )Nr   r-   rV   rW   )r3   r[   r\   r   r]   r   r   r   r   r   r   r_   ^  s
    z"_Test_count_neighbors.setup_methodNr`   r   r   r   r   r  \  s   r  c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )"sparse_distance_matrix_consistencyc                 C   s   t |||S r   r   r*   r   r   r   r,   h  s    z+sparse_distance_matrix_consistency.distancec              	   C   s   | j | j| j}| j | j| j}t|D ]D\}}|D ]6}t|||f | | j j| | jj| | j	dd q8q,|
 D ]\\}}}t||| v  qzd S )N   decimal)r   sparse_distance_matrixr   r   r   r   r   r,   r5   r$   itemsr   )r+   Mr   r8   r   r   r'   r   r   r   test_consistency_with_neighborsk  s    

zBsparse_distance_matrix_consistency.test_consistency_with_neighborsc                 C   s   | j | j | j d S r   )r   r"  r   r^   r   r   r   test_zero_distancex  s    z5sparse_distance_matrix_consistency.test_zero_distancec                 C   sH   | j | j| j}t| j j| jj}d||| jk< t| |dd d S )Nr   r  r   )r   r"  r   r   r   r5   r   toarray)r+   ZM1expectedr   r   r   test_consistency|  s    z3sparse_distance_matrix_consistency.test_consistencyc                 C   sX   t jd t jt jddtd}| j|ddd}||d }t	||j
dd	 d S )
Nr      r-   r   Fbalanced_treecompact_nodesrp   r  r   )r3   r[   r\   rq   r]   r   r   r"  r'  r   r   )r+   too_manyr   r'   r   r   r   #test_against_logic_error_regression  s    zFsparse_distance_matrix_consistency.test_against_logic_error_regressionc                 C   s  t | j| jf}t| jD ]L}t| jD ]<}| j|d d f | j|d d f  }t |||||f< q*qt |}d||| jk< t | j| jf}| j	j
| j| jdd}| D ]\}}|||f |||f< qt||dd t | j| jf}| j	j
| j| jdd}t|jd D ]6}|d | }|d	 | }|d
 | }||||f< qt||dd | j	j
| j| jdd}t|| dd | j	j
| j| jdd}t|| dd d S )Nr   dictoutput_typer  r   ndarrayr   r8   r   v
dok_matrix
coo_matrix)r3   r   rF   r   r   r   dotr   r   r   r"  r   keysr   r   r'  )r+   refr8   r   r4  r   r   rA   r   r   r   test_ckdtree_return_types  s<    $
z<sparse_distance_matrix_consistency.test_ckdtree_return_typesN)	r   rQ   rR   r,   r%  r&  r)  r/  r:  r   r   r   r   r  f  s   	r  c                   @   s   e Zd Zdd ZdS )_Test_sparse_distance_matrixc                 C   sx   d}d}t jd t j||}t j||}| j|dd| _| j|dd| _d| _d| _|| _	|| _
|| _|| _d S )Nr   rU   rV   r-   rW   r!   )r3   r[   r\   r]   r   r   r   r   r$   r   r   rF   r;   )r+   rF   r;   r   r   r   r   r   r_     s    z)_Test_sparse_distance_matrix.setup_methodNr`   r   r   r   r   r;    s   r;  c                  C   s   d} d}d}t jd t j| |}t j||}t||}t|j| |f t| D ]2}t|D ]$}tt	|| || |||f  qbqVd S )NrZ      rU   rV   )
r3   r[   r\   r]   r   r   r   r   r   r   )r;   rF   rA   xsysr   r8   r   r   r   r   test_distance_matrix  s    
r?  c                  C   sZ   d} d}d}t jd t j| |}t j||}t||}t||dd}t|| d S )NrZ   r<  rU   rV   r   )	threshold)r3   r[   r\   r]   r   r   )r;   rF   rA   r=  r>  r   Zdslr   r   r   test_distance_matrix_looping  s    
rA  c                 C   sZ   |  | |}t }t|D ](\}}|D ]}||k r&|||f q&qt|| |k d S r   )r   setr   addr   query_pairs)r   r'   r   r   r8   r   r   r   r   r   check_onetree_query  s    rE  c                 C   s   t jd d}d}t j||}| |}t|d t jd| |}|d |  d9  < ||d|   d7  < | |}t|d t|d t|d t|d	 d S )
Nr   r   rU   rO   rp   gMbP?r-   gh㈵>gư>)r3   r[   r\   r]   rE  )r   rF   rA   r   r   r   r   r   test_onetree_query  s    



rF  c                 C   s$   | ddgg}t |dt  d S )Nr   r   r!   )r   rD  rB  )r   r   r   r   r   test_query_pairs_single_node  s    rG  c                 C   sF  t jd d}d}d}|d }t j||}| |}t }t|D ]V}t|d |D ]B}	||d d f ||	d d f  }
t |
|
|krV|||	f qVqDt|}|	|}t|}t
|| |j	|dd}t|}t
|| t }|j	|dd}t|jd D ],}|t||df t||df f qt|}t
|| d S )	Nr   r   r-   rO   r   rB  r1  r3  )r3   r[   r\   r]   rB  r   r7  rC  sortedrD  r   r   r   )r   rF   rA   r   r2r   r   Zbruter8   r   r4  Zl0r   r   arrr   r   r   r   test_kdtree_query_pairs  s4     


*rK  c                    st   t d}t dd| d}t dd| d  fdd|D }| |}|j|dd}|j|d	 d
}t|| d S )Nr-   r   rp   rU   c                    s   g | ]} D ]}||fqqS r   r   )r  xiyiZy_ranger   r   r  "  r  z(test_query_pairs_eps.<locals>.<listcomp>rO   )r   r9   )\(?r   )r3   r   r  rD  r   )r   spacingZx_rangeZxy_arrayr   Z	pairs_epspairsr   rN  r   test_query_pairs_eps  s    
rS  c                 C   s   t jddddf \}}tt| | }| |}ttg dt|dd t j|t	d}| |}ttg dt|dd d S )Nr   rU   )rU      	      )r-   r   r   r   )
r3   mgridr   rG   ravelr   rH  r   asarrayrz   )r   r0   r  r   r   r   r   r   test_ball_point_ints+  s    rZ  c                  C   s2   dd t dD } tt| t| d d d  d S )Nc                 S   s   g | ]}t  qS r   )r
   noder  r   r   r   r   r  :  r  z+test_kdtree_comparisons.<locals>.<listcomp>rp   r   )r   r   rH  )nodesr   r   r   test_kdtree_comparisons8  s    r^  c                 C   s   t jd d}d}t j||}| |j|ddd }| |ddj|ddd }| |dd	j|ddd }| |ddd
j|ddd }t|| t|| t|| d S )Nr   r   rU   r   r   r   F)r-  )r,  )r-  r,  )r3   r[   r\   r]   r2   r   )r   rF   rA   r   r   r   T3ZT4r   r   r   test_kdtree_build_modes>  s"    

r`  c                 C   sx   dd l }tjd d}d}tj||}| |}||}||}|j|ddd }|j|ddd }t|| d S )Nr   r   rU   r   r   r   )	pickler3   r[   r\   r]   dumpsloadsr2   r   r   ra  rF   rA   r   r   tmpr   r   r   r   test_kdtree_pickleM  s    

rf  c                 C   s   dd l }tjd d}d}tjj||fd}| |dd}||}||}|j|ddd	 }|j|ddd	 }t|| d S )
Nr   r   rU   r   r   )r%   r   r   r   )	ra  r3   r[   r\   r   rb  rc  r2   r   rd  r   r   r   test_kdtree_pickle_boxsize[  s    

rg  c                 C   sz   t jd d}d}t j||}| |dd}| }|j|ddd }t j|||d	< |j|ddd }t|| d S )
Nr   r   rU   T)Z	copy_datar   r   r   .)r3   r[   r\   r]   copyr2   r   )r   rF   rA   r   r   r   r   r   r   r   r   test_kdtree_copy_datai  s    ri  c           	      C   s   t jd d}d}t j||}| |}|j|dddd }|j|dddd }|j|ddd }t|| t|| |td	d
d  tj	t
dd  |j|ddd W d    n1 s0    Y  d S )Nr   r   rU   r   r   )rA   r   r   r   	cpu_countc                   S   s   d S r   r   r   r   r   r   <lambda>  r  z'test_ckdtree_parallel.<locals>.<lambda>zCannot determine ther   r   r   )r3   r[   r\   r]   r2   r   setattrosr   r   NotImplementedError)	r   ZmonkeypatchrF   rA   r   r   r   r   r_  r   r   r   test_ckdtree_parallelx  s    

ro  c                     s~   t jd d} d}t j| |}t|  fdd j  j} tt | jt	d t j
| jd d f | j d S )Nr   rT   rU   c                    s   t t| t | jdkrLt | jd u  t | jd u  t | jjd  jk nT| j | j | jj	d d | jf }| jj	d d | jf }t |
 | k  d S )Nr   r   )r   ry   r   	split_dimlesserr   indicesr   rX   data_pointsmaxmin)rF   r0   r  r1   recurse_treer   r   rw    s    


z'test_ckdtree_view.<locals>.recurse_tree)r3   r[   r\   r]   r   r   r   sortrr  r   r5   rs  )rF   rA   r   r   rv  r   test_ckdtree_view  s    
ry  c                 C   s6  d}d}g d}d}t jd t jj||fd}| |dd}|||\}}|||\}	}
t||	 t||
 t ddg}d}|||\}}|||\}	}
t|	|d	|d f  t|
|d	|d f  ||d\}}||dg\}	}
tt|jd tt|	jd t|t 	|	 t|t 	|
 d S )
N   r-   )r   r-   rp   rp   rV   r   r   rW   .)
r3   r[   r\   r   r2   r   rq   r  r   rX  )r   rF   r;   ZklistZkintr5   r1   r=   r>   dd1ii1r   r   r   test_kdtree_list_k  s.    

r}  c                 C   s   d}d}d}t jd t jj||fd}| |ddd}| |dd}dd	d
t jfD ]}|j|||d\}}	|j|d ||d\}
}t||
 t|	| |j|d ||d\}
}t||
 t|	| t|||d|d\}}t|| t|	| qRd S )N  rp   rV   r   r   r   r   rW   r-   g      @r$   )r%   r$   )	r3   r[   r\   r   rH   r2   r   r   simulate_periodic_box)r   rF   r;   rA   r5   r1   kdtree2r$   r=   r>   r{  r|  dd2ii2r   r   r   test_kdtree_box  s$    




r  c                 C   s   d}d}d}t jd t jj||fd}| |ddd}| |dd	}ddt jfD ]@}|j|||d
\}}	|j|||d
\}
}t||
 t|	| qPd S )Nr~  r-   rp   rV   r   r   r   r   rW   r  )r3   r[   r\   r   rH   r2   r   r   )r   rF   r;   rA   r5   r1   r  r$   r=   r>   r{  r|  r   r   r   test_kdtree_box_0boxsize  s    
r  c                 C   s   t ddddd}|d d df  d7  < tt | |ddd W d    n1 s\0    Y  tt | |ddd W d    n1 s0    Y  | |dd	d d S )
Nr   r-   rZ   r   r   r   r   )r   r   )r   r   )r3   r  reshaper   r   r   r   r5   r   r   r   test_kdtree_box_upper_bounds  s    ,,r  c                 C   s$   t ddd}tt| |ddd d S )Nr   r   rZ   r   r   )r3   r  assert_raisesr   r  r   r   r   test_kdtree_box_lower_bounds  s    r  c                 C   s8  g }g }t d|jd  }t t |dg|jd  j}|d }|D ]T}	||	d |  }
| j|
||d\}}|d|}|d|}|| || qHt j	|dd}t j	|dd}t j
t|t|| gddgd	}||d
 d d < ||d d d < |jdd |d d d d |f |d
 d d d |f fS )Nrp   r   r   r  r   r/   )r>   i8)r=   Zf8r   r>   r=   )order)r3   aranger   rq   Zunravel_indexr   r2   r  appendconcatenateemptyr  rx  )r1   r5   rA   r%   r$   r=   r>   r0   nnrF   imager  r  r  r   r   r   r  
  s,     
r  PyPyz Fails on PyPy CI runs. See #9507)reasonc                  C   s  zdd l } W n ty    Y d S 0 d\}}tjtdd| |tdd| |f \}}t|d td||  t|  }t|}||d d < d}tj	d|j
tj	dd }||j|< tt||kj}	tt||kj}
| | jj}tdD ]}t|	}qd}tdD ]P}| | jj}t|	}|j|
d	d
d\}}| | jj}||kr|d7 }qt|dk  d S )Nr   )皙?r  r   r   rZ   g     X@r   rT   rU   r-   )rA   r$   )resourceImportErrorr3   rW  slicesincosZ
empty_liker[   r   r   ZflatZvstackZnonzeror   Z	getrusageZRUSAGE_SELFZ	ru_maxrssr   r   r2   r   )r  ZdxZdyr  r0   zZz_copyZFILLVALmaskZigoodZibadZmem_user8   r   Z	num_leaksr   ZiqueryZnew_mem_user   r   r   test_ckdtree_memuse#  s8    
*


r  c              
   C   s  t ddddd}| |dd}t jt|dd}||}t|g d tt|j|d d  t	d	D ]}|
|t dd	|}|j
|t dd	|||fd
}|j
|t dd	||d fd
}|j
|t dd	|d |fd
}	|j
|t dd	||d
 t|| t|| t||	 qjt	t|D ]}| }
d|
|< ||
dk }| |}|j
|t dd	d|
|
fd
}|
|t dd	d}t|| tt|j
|t dd	d|
d
 q$d S )Nr   r   rU   r   rW   Zf4r   )rU   r-   r   r   r-   r   r   rZ   )weightsrT   )r3   r  r  r   r  Z_build_weightsr   r  r   r   r  rh  )r   r5   Ztree1r  nwr8   c1c2c3Zc4Zw1r   Ztree2r   r   r   test_kdtree_weightsN  sH    



r  c                 C   s   d}d}t jd t jj||fd}| |dd}g d}t t|}|||}|j||dd	}t||  t	t
|t
|D ]&\}	}
|||
}t||t|	  qd S )
Nr~  r-   rV   r   r   rW   )r   r  r  g{Gz?r  F
cumulative)r3   r[   r\   normalr  r  r  r   ZcumsumrG   	itertoolspermutationsr   r   )r   rF   r;   r5   r1   Zr0Zi0Zn0Znncr8   r   r   r   r   &test_kdtree_count_neighbous_multiple_r|  s    
r  c                 C   s,  t jd t jdd}t jdd}| |}|jddgdd\}}|ddgd| }t|g  |j|dd\}}| }||d| }t jdt	d	}|
g  t|| | |}	||	d| }tdg g | ||	d| }t|d
k |j|	d| dd}t|t dkd |j|	d| dd}t|t dkd |j|	d| dd}t|i  |j|	d| dd}dt jfdt jfdt jfg}
t j|
dd}t jd|d	}t|| |j|dd\}}|d d df  }|jd| dd}t|t  |jd| dd}t jdt jd	}t|| d S )NrV   rZ   r-   r!   r   r   rO   )rZ   )r   r   r   r5  r1  )rZ   rZ   Tr6  r0  r3  r8   r   r4  )align)r   r   rB  )r   r-   )r3   r[   r\   randr2   r   r   ru  r  objectfillr   r  r   r"  r   r   Zintpfloat64r   rD  rB  )r   XYr   r'   r8   r  Zmindr  otherZ_dtypeZ	res_dtyper   r   r   test_len0_arrays  sH    




r  c              	   C   s   d}t ddD ]}t||f}d||d d < tjdddD ]|\}}| |||dd}|jdksdJ | tu rr|jn|jj}t	t
|jjtd	|d  t	t
|jjt|d | q>qd S )
Ni   r   rT  r-   FT)repeat)r,  r-  rX   rp   r   )r   r3   r   r  productr   r   r   _noder   rx  rq  rr  r  r   )r   rF   r;   r5   Zbalancedcompactr1   r   r   r   r   test_kdtree_duplicated_inputs  s(    r  c                 C   s,   | dggdd}t t|j|ddgdd d S )Nr   r   rW   rO   Fr  )r  r   r  )r   r1   r   r   r   'test_kdtree_noncumulative_nondecreasing  s    
r  c                 C   s   t jg dg dg dg dg dg dgdd}| |}|j|d	d
d\}}t|dt jt jt jgddt jt jgddt jt jgddt jt jgddt jt jgdt jt jt jgg d S )N)r   r   r   )rO  r   r   )r   r   r   )r   rO  r   )r   r   r   )r   r   r   r  r   rU   rY   r@   r   r  )r3   rq   r2   r   rH   )r   ZxyzckdtZdeqZieqr   r   r   test_short_knn  s*    	r  c                    s   t jd t jjdd}t jjdd}| | t jjddt|d} ||} fddt||D }t||D ]\}}tt	|t	| qtd S )NrV   rT   rp   r   r   333333?c                    s   g | ]\}}  ||qS r   r   )r  qiZdir   r   r   r    r  z2test_query_ball_point_vector_r.<locals>.<listcomp>)
r3   r[   r\   r  r   r  r   rG   r   rH  )r   r5   r2   r'   ZrvectorZrscalarr"   r#   r   r  r   test_query_ball_point_vector_r  s    r  c                    s   t jd t jjdd}t jjdd}| |d j| dd}dd j| d	dD } fd
d|D } fdd|D }t|| t|| t|| d S )NrV   r  r   r  TZreturn_lengthc                 S   s   g | ]}t |qS r   r
  )r  r   r   r   r   r    r  z0test_query_ball_point_length.<locals>.<listcomp>Fc                    s   g | ]}t | qS r   )r  r   r  r  r'   r   r   r   r    r  c                    s   g | ]}j | d dqS )Tr  r  r  r  r   r   r    r  )r3   r[   r\   r  r   r   )r   r5   r2   lengthlength2Zlength3Zlength4r   r  r   test_query_ball_point_length  s    

r  c                 C   s  t jd t jjdd}t dd }t t dd d d d d d d }t jjdd}t |jj}|jd |jd ksJ |jd |jd ksJ | |}|j||dd}|j||dd}t	|| |
|d	\}	}
|
|d	\}}t	|	| t	|
| d S )
NrV   r  r   rT   g{Gz?r   Tr  r   )r3   r[   r\   r  r  Zascontiguousarrayr   stridesr   r   r2   )r   r5   Zd_contiguousZd_discontiguousZquery_contiguousZquery_discontiguousr   Zlength1r  Zd1i1Zd2i2r   r   r   test_discontiguous  s0    

r  zbalanced_tree, compact_nodes))TF)TT)FFr  c                 C   s   t jd t jdd}t jdd}t jdd}| |||d}|j|ddd	}|d
ksZJ ||d\}}	|	jdksxJ |jdksJ t |	 sJ |
|d
dg}
t|
d
d
g ||d}|jdksJ d S )NrV   )r   rp   )r   )r   rp   r   r+  r  Tr  r   r-   )r-   r-   r   r   )r3   r[   r\   r  r   r   r2   r   isinfr6   r  r   r"  )r   r,  r-  Zempty_v3Zquery_v3Zquery_v2r   r  r=   r>   Nr$  r   r   r   test_kdtree_empty_input/  s"    r  c                   @   s$   e Zd Zdd Zdd Zdd ZdS )_Test_sorted_query_ball_pointc                 C   s.   t jd t jdd| _| | j| _d S )NrV   rT   r   )r3   r[   r\   r]   r0   r   r  r^   r   r   r   r_   M  s    z*_Test_sorted_query_ball_point.setup_methodc                 C   s\   | j j| jddd}|D ]}t|t| q| jD ]$}| j j|ddd}t|t| q2d S )Nr   TZreturn_sorted)r  r   r0   r   rH  )r+   	idxs_listidxsrL  r   r   r   test_return_sorted_TrueR  s    
z5_Test_sorted_query_ball_point.test_return_sorted_Truec                    sr    j  jd}|D ]}t|t| q fdd jD } j j jddd}t||D ]\}}t|| qZdS )zPrevious behavior was to sort the returned indices if there were
        multiple points per query but not sort them if there was a single point
        per query.r   c                    s   g | ]} j |d qS )r   )r  r   )r  rL  r^   r   r   r  c  r  zI_Test_sorted_query_ball_point.test_return_sorted_None.<locals>.<listcomp>Fr  N)r  r   r0   r   rH  rG   )r+   r  r  Zidxs_list_singleZidxs_list_FalseZidxs0Zidxs1r   r^   r   test_return_sorted_None[  s    z5_Test_sorted_query_ball_point.test_return_sorted_NoneN)r   rQ   rR   r_   r  r  r   r   r   r   r  K  s   	r  c                  C   s   t jddt} tjtdd t| }W d    n1 s@0    Y  t| j	}tjtdd |
|  W d    n1 s0    Y  tjtdd |j| dd W d    n1 s0    Y  d S )NrZ   r-   zcomplex datar   r   rP  )r3   r[   r  viewcomplexr   r   	TypeErrorr
   realr2   r   r   tr   r   r   test_kdtree_complex_datai  s    &
(r  c                  C   sB  t jd t jdd} t| }|j}t|tjs8J |j| j	d ksLJ |g}|r>|
d}t|tjrt|jts~J |jt|jksJ t| |j |jj qRt|tjsJ t|jtsJ d|j  kr|jk sn J t|jtsJ t|jtsJ |j|jj|jj ks$J ||j ||j qRd S )NrV   rT   rU   r   r   )r3   r[   r\   r  r
   r   ry   Z	innernodechildrenr   popZleafnoder   r  idxr   r  rs  rp  r;   r   rz   r   r   r  )r   r  rootr]  rF   r   r   r   test_kdtree_tree_accessy  s*    
r  c                  C   s   t jd t jdd} t| }t|jts2J |j| j	d ksFJ t|jtsVJ |j| j	d ksjJ t|j
tszJ |j
dksJ t|jt j| dd t|jt j| dd |j| u sJ d S )NrV   rT   rU   r   r   rZ   r/   )r3   r[   r\   r  r
   ry   r;   r   rF   r   rX   r   r   r<   r   Zaminr5   r  r   r   r   test_kdtree_attributes  s    r  kdtree_classc           
         s  t jd t ddd}t jdd}t jdd}t jd}t jd	}| |}| |}|j||d
||fd}|d d d f |d d d f  t jj|d d d d d f |d d d d d f  dd  fddtt	
dg|d d |D }	t||	 d S )NrV   r  r      )r  rp   -   )   rp   r  r  F)r  r  r   r/   c                    s*   g | ]"\}}t | k  |k@  qS r   )r3   r4   )r  Zprev_radiusZradiusr   r  r   r   r    s   z8test_kdtree_count_neighbors_weighted.<locals>.<listcomp>r   )r3   r[   r\   r  r  r  Zlinalgr   rG   r  chainr   )
r  r   ABZwAZwBZkdAZkdBZnABexpectr   r  r   $test_kdtree_count_neighbors_weighted  s     8r  c                  C   sn   g d} t | }t| t|tjgd d d f }tjtdd t| W d    n1 s`0    Y  d S )N)
r   r   ir  ii   rp   imust be finiter   )	r  r3   r  r   nanr   r   r   r
   )valsrF   r5   r   r   r   test_kdtree_nan  s
    $r  c                  C   s  t jd} | jdddd}t|ddd}dd	 td
D }tjtdd |	| W d    n1 sj0    Y  tjtdd |
|d W d    n1 s0    Y  t j|dd d f< tjtdd t|ddd W d    n1 s0    Y  tjtdd t|ddd W d    n1 s00    Y  tjtdd t|ddd W d    n1 sn0    Y  tjtdd t|ddd W d    n1 s0    Y  d S )Ni90  r  r   rO   )r   lowhighFr+  c                 S   s   g | ]
}t jqS r   )r3   r  r\  r   r   r   r    r  z2test_nonfinite_inputs_gh_18223.<locals>.<listcomp>rp   r  r   r   r   T)r3   r[   Zdefault_rngr   r
   r   r   r   r   r2   r   r  )rngZcoordsr  Z	bad_coordr   r   r   test_nonfinite_inputs_gh_18223  s"    (*,..r  incantationc                 C   s`   G dd dt j}ddgddgddgg}t |}||}| |d	}||d
 ||d d S )Nc                   @   s   e Zd Zdd Zdd ZdS )ztest_gh_18800.<locals>.ArrLikec                 S   s   t || }d |_|S r   )r3   rY  r  r6   )clsZinput_arrayobjr   r   r   __new__  s    z&test_gh_18800.<locals>.ArrLike.__new__c                 S   s   |d u rd S t |dd | _d S )Nr6   )getattrr6   )r+   r  r   r   r   __array_finalize__  s    z1test_gh_18800.<locals>.ArrLike.__array_finalize__N)r   rQ   rR   r  r  r   r   r   r   ArrLike  s   r  gGzP@gQE@@gQ6@gp=
c6@g(\?@g=
ףpMT@rZ   r   rz  )r3   r3  rq   r2   r   )r  r  r   rJ  Zarr_liker   r   r   r   test_gh_18800  s    

r  )jrm  Znumpy.testingr   r   r   r   r   r   r   r   r  platformr	   numpyr3   Zscipy.spatialr
   r   r   r   Zscipy.spatial._ckdtreer   r   r  Zfixturer   r    r(   r)   rS   ra   rg   ru   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r	  r  r  r;  r?  rA  rE  rF  rG  rK  rS  rZ  r^  r`  rf  rg  ri  ro  ry  r}  r  r  r  r  r  markZskipifr  r  r  r  r  r  r  r  r  r  Zparametrizer  r  r  r  r  r  r  r  r  r   r   r   r   <module>   s    
K-/& 	I
!""

)..


