U
    }h                     @   s   d dl Z d dlZd dlZd dlmZ d dlmZ dd Zdd Z	ej
dd	ej
d
ddd Zej
dd	dd Zdd ZdS )    N)	_QuadTree)check_random_statec                  C   s   g } |  tjddgddggtjd |  tjddgddggtjd |  tjddgddggtjd |  tjddgd	dggtjd | D ]"}td
dd}|| |  qd S )N   Zdtyper   gưgư>gо   n_dimensionsverboseappendnparrayfloat32r   
build_treeZ_check_coherenceZXsXtree r   J/tmp/pip-unpacked-wheel-ig1s1lm8/sklearn/neighbors/tests/test_quad_tree.py"test_quadtree_boundary_computation
   s    """"
r   c                  C   sB  g } |  tjddgddggtjd |  tjddgddggtjd |  tjd	dgd
dggtjd |  tjddgddggtjd |  tjddgddggtjd |  tjd	dgd
dggtjd |  tjddgddggtjd |  tjddgddggtjd | D ]$}tddd}|| |  qd S )Nr   r	         r   g      ?g       @g      @grZ|
 ?g㈵ ?g9b->  @grZ|
  @g 9?g 9?r   r
   r   r   r   r   r   test_quadtree_similar_point   s    """""""
r   r   )r	   r   protocol)r   r   r	   c           
      C   sr   t d}|d| f}t| dd}|| tj||d}t|}|D ]$}||}||}	||	ksHtqHd S )Nr   
   r
   )r   )	r   random_sampler   r   pickledumpsloadsget_cellAssertionError)
r   r   rngr   r   sZbt2xZcell_x_treeZ
cell_x_bt2r   r   r   test_quad_tree_pickle?   s    



r'   c           
      C   s   t d}|d| f}tj||d d f }t| dd}|| |j}|j}t|D ]6\}}|	|}	||	 stt
||	 d|dk  ksVt
qVd S )Nr   r      r
   r   )r   r   r   Zr_r   r   cumulative_sizeleafs	enumerater"   r#   )
r   r$   r   ZXdr   r)   r*   ir&   Zcell_idr   r   r   test_qt_insert_duplicateR   s    

r-   c                  C   s  d} t jddgddgddgddggt jd}|dd d f }|jd }|d }t|dd	}|| |||| \}}|| }||d  }	|dd  jdd
}
|d |
 d  }||kst	|	dkst	d
|	t ||st	|||d\}}|dd  jdd
}
|d |
 d  }|d| ks0t	tdD ]p}||| |  }||| | d  }	|d ||d   d  }|	dkst	d
|	t ||s8t	q8d S )Ng?g      $g      "@g      $@r   r   r   r	   )r   )Zaxisr   zsummary size = {}g        )r   r   r   shaper   r   Z_py_summarizeZmeansumr#   formatiscloserange)Zangler   Zquery_ptr   offsetZqtidxsummaryZ	node_distZ	node_sizeZ
barycenterZds2cr,   r   r   r   test_summarizef   s8     

r6   )r   Znumpyr   ZpytestZsklearn.neighbors._quad_treer   Zsklearn.utilsr   r   r   markZparametrizer'   r-   r6   r   r   r   r   <module>   s   "
