a
    ‡ù»j ,  ã                   @   sŠ   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
mZmZmZ ej deeeg¡ZG dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZdS )é    N)Úassert_equalÚassert_array_equalÚassert_allclose)Úraises)ÚgriddataÚNearestNDInterpolatorÚLinearNDInterpolatorÚCloughTocher2DInterpolatorÚinterpolatorc                   @   s\   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d„ Zdd„ ZdS )ÚTestGriddatac                 C   sZ   g d¢}g d¢}t ||g d¢dd�}t|g d¢ƒ t ||g d¢ƒ}t|tjtjdgƒ d S )N)©r   r   ©r   é   ©r   r   )r   é   é   )©r   r   )r   r   r   éÿÿÿÿ)Z
fill_value)g      ð¿r   r   r   )r   r   ÚnpÚnan)ÚselfÚxÚyÚyi© r   úME:\soccer\ml_env\Lib\site-packages\scipy/interpolate/tests/test_ndgriddata.pyÚtest_fill_value   s    zTestGriddata.test_fill_valuec              	   C   sÎ   t jg d¢t jd�}t j|jd t jd�d d …d f t  ddg¡d d d …f  }dD ]t}dD ]j}t||fƒ}t|d d …df |d d …df f||d d …df |d d …df f||d�}t||d|d	� q\qTd S ©
N©r   )ç      à¿r   )r   ç      à?)r    r    )g      Ð?g333333Ó?©Zdtyper   r   ©ÚnearestZlinearZcubic©TF©ÚmethodÚrescaleç›+¡†›„=©ÚatolÚerr_msg©r   ÚarrayÚfloat64ÚarangeÚshapeÚreprr   r   ©r   r   r   r&   r'   Úmsgr   r   r   r   Útest_alternative_call   s    
ÿ ÿBÿz"TestGriddata.test_alternative_callc              	   C   s–   t jg d¢t jd�}t j|jd t jd�d d …d f t  ddg¡d d d …f  }dD ]<}dD ]2}t||fƒ}t|||||d�}t||d|d	� q\qTd S r   r,   r2   r   r   r   Útest_multivalue_2d(   s    
ÿ ÿzTestGriddata.test_multivalue_2dc              	   C   sÆ   t jg d¢t jd�}t j|jd t jd�}|d d …d d d …f t  g d¢¡d d d …d f  }dD ]`}dD ]V}t||fƒ}t|||||d�}t|jd|d	� t|t  	|d d …d f d
¡d|d� qhq`d S )Nr   r!   r   ©r   r   r   r"   r$   r%   ©é   r   ©r+   ©r   r   r(   r)   ©
r   r-   r.   r/   r0   r1   r   r   r   Ztile©r   r   r   Úxir&   r'   r3   r   r   r   r   Útest_multipoint_2d4   s    
ÿ2ÿzTestGriddata.test_multipoint_2dc              	   C   sÜ   t jg d¢t jd�}t j|jd t jd�}|d|d d d…   }|d d …d d d …f t  g d¢¡d d d …d f  }dD ]`}dD ]V}t||fƒ}t|||||d	�}t|jd
|d� t|t  	|d d …d f d¡d|d� q~qvd S )Nr   r!   r   ù               @r   r6   r"   r$   r%   r7   r9   r:   r(   r)   r;   r<   r   r   r   Útest_complex_2dD   s    
ÿ2ÿzTestGriddata.test_complex_2dc                 C   sŠ   t  g d¢¡}t  g d¢¡}dD ]d}tt||||d�||dd� tt| dd¡|||d�||dd� tt|f||f|d�||dd� q d S )	N©r   ç      @r   ç      @r8   é   ©r   r   r   g333333@r   r   r"   ©r&   r(   ©r+   r*   rD   r   ©r   r-   r   r   Úreshape©r   r   r   r&   r   r   r   Útest_1dU   s    ÿÿÿzTestGriddata.test_1dc                 C   s    t  g d¢¡}t  g d¢¡}t  ddg¡}t  ddg¡}d}tt||||d�||dd	� tt| d
d¡|||d�||dd	� tt|f||f|d�||dd	� d S )NrA   rE   çÍÌÌÌÌÌì?g      @ç      ð?r#   rF   r(   rG   rD   r   rH   )r   r   r   r=   Z	yi_shouldr&   r   r   r   Útest_1d_bordersa   s4    
ÿýÿýÿýzTestGriddata.test_1d_bordersc                 C   sŠ   t  g d¢¡}t  g d¢¡}dD ]d}tt||||d�||dd� tt| dd¡|||d�||dd� tt|f||f|d�||dd� q d S )	N)rB   r   rC   r8   rD   r   rE   r"   rF   g»½×Ùß|Û=rG   rD   r   rH   rJ   r   r   r   Útest_1d_unsortedw   s    ÿÿÿzTestGriddata.test_1d_unsortedc              	   C   sî   t jg d¢t jd�}t jg d¢t jd�}t jg d¢t jd�}t  t  ddd¡d d …d f t  ddd¡d d d …f ¡\}}| ¡ }| ¡ }t  ||g¡j ¡ }d	D ]H}|}t|||t  dd
g¡ |d�}	t||||dd�}
t	|	|
|dd� q d S )N)r   )r   éd   )é
   rP   )rQ   r   )r   r8   r!   )r   r   r   r   )çš™™™™™¹?gš™™™™™©?)rM   g       @g      Àg      @g      "@r   rQ   é   rP   r"   g      Y@rF   Tr%   gê-�™—q=rG   )
r   r-   r.   Zbroadcast_arraysÚlinspaceÚravelÚTÚcopyr   r   )r   ZpointsZpoints_rescaledÚvaluesÚxxÚyyr=   r&   r3   ZziZzi_rescaledr   r   r   Útest_square_rescale_manualƒ   s,    
ÿÿÿ
ÿÿz'TestGriddata.test_square_rescale_manualc           	   	   C   sØ   t jg d¢t jd�}t j|jd t jd�}|d|d d d…   }t  ddg¡}dD ]€}t||||d�}t|||d d d …f |d�}t|||d	� t  dg¡}t  g d
¢¡}ttt||||d� ttt||||d� qRd S )Nr   r!   r   r?   r   r    r"   rF   r9   )r    r    r    )	r   r-   r.   r/   r0   r   r   Úassert_raisesÚ
ValueError)	r   r   r   r=   r&   Úp1Zp2Zxi1Zxi3r   r   r   Ú
test_xi_1d˜   s$    
ÿÿÿzTestGriddata.test_xi_1dN)Ú__name__Ú
__module__Ú__qualname__r   r4   r5   r>   r@   rK   rN   rO   r[   r_   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 )
ÚTestNearestNDInterpolatorc                 C   sf   d\}}t  || ¡ ||f¡}t  |¡}t||ƒ}dddœ}t|||d�}t||ƒ||ƒdd� d S )N)é   r   F)Zbalanced_treeZcompact_nodes)Ztree_optionsr(   )r*   )r   r/   rI   r   r   )r   ZnptsÚndr   r   ZnndiÚoptsZnndi_or   r   r   Útest_nearest_options¯   s    


z.TestNearestNDInterpolator.test_nearest_optionsc                 C   s¤   t  g d¢g d¢g d¢g¡}|d d …dd …f }t|d |d f|d ƒ}t|dd	gdd	gƒddgƒ t|d |d ft|d ƒƒ}t|dd	gdd	gƒddgƒ 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   r   rR   rL   )r   r-   r   r   Úlist)r   re   ÚdÚNIr   r   r   Útest_nearest_list_argumentº   s    
þz4TestNearestNDInterpolator.test_nearest_list_argumentc                 C   sú   t  g d¢g d¢g d¢g¡}d}d| d| gd| d| gf}t|d |d f|d ƒ}t  |d |d  ¡d }t|||d	�t jt jgƒ t  |d |d  ¡d }t j}t||||d
�ddgƒ t  |d |d  ¡d }t|||d	�ddgƒ d S )N)r   r    r   r   )r   r   r    r   ©r   r   r   r   rR   r   r   r   gH¯¼šò×z>)Údistance_upper_bound)rm   Úp)r   r-   r   Úsqrtr   r   Úinf)r   re   ÚdeltaZquery_pointsrj   rm   rn   r   r   r   Útest_nearest_query_optionsÈ   s,    
þ 
ÿþ
þz4TestNearestNDInterpolator.test_nearest_query_optionsc                 C   sr   t  g d¢g d¢g d¢g¡}t|d |d f|d ƒ}ttƒ�  |ddgdd	� W d   ƒ n1 sd0    Y  d S )
N)r   r   r   r   )r   r   r   r   rl   r   r   r   r    znot a dictionary)Zquery_options)r   r-   r   r\   Ú	TypeError)r   re   rj   r   r   r   Útest_nearest_query_valid_inputså   s    
þ
z9TestNearestNDInterpolator.test_nearest_query_valid_inputsN)r`   ra   rb   rg   rk   rr   rt   r   r   r   r   rc   ®   s   rc   c                   @   s$   e Zd Zedd„ ƒZedd„ ƒZdS )ÚTestNDInterpolatorsc                 C   s  t j d¡ t j d¡}t j d¡}t  ||¡}t  t|ƒt|ƒ¡}t  t|ƒt|ƒ¡}t  ||¡\}}t  | 	¡ | 	¡ f¡j
}|tt||ƒƒ|ƒ}||ƒ}	|||fƒ}
||dfƒ}|||ƒ}||dƒ}t|	j|
j  koú|j  koú|j  koú|jkn  dƒ d S )Nr   rQ   g        T)r   ÚrandomÚseedÚhypotrT   ÚminÚmaxZmeshgridZvstackrU   rV   rh   Úzipr   Úsize)r   r
   r   r   ÚzÚXÚYÚXYÚinterpZinterp_points0Zinterp_points1Zinterp_points2Zinterp_points3Zinterp_points4r   r   r   Útest_broadcastable_inputï   s2    

ÿþýüüz,TestNDInterpolators.test_broadcastable_inputc                 C   sŒ   t j d¡ t j d¡}|d d …df |d d …df  }}t  ||¡}t j d¡}|jdd� |jdd� |jdd� |||ƒ}||ƒ d S )Nr   )rQ   r   r   )é2   r   F)Úwrite)r   rv   rw   rx   Zsetflags)r   r
   Zxyr   r   r}   r€   r�   r   r   r   Útest_read_only  s    "
z"TestNDInterpolators.test_read_onlyN)r`   ra   rb   Úparametrize_interpolatorsr‚   r…   r   r   r   r   ru   î   s   
ru   )Únumpyr   Znumpy.testingr   r   r   Zpytestr   r\   Zscipy.interpolater   r   r   r	   ÚmarkZparametrizer†   r   rc   ru   r   r   r   r   Ú<module>   s   ÿÿ @