U
    »mœdå$  ã                   @   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   sd   dddg}dddg}t ||dddgd	d
�}t|dd	dgƒ t ||dddgƒ}t|tjtjdgƒ d S )N©r   r   ©r   é   ©r   r   r   é   é   ©r   r   )r   r   éÿÿÿÿ)Z
fill_valueg      ð¿)r   r   ÚnpÚnan)ÚselfÚxÚyÚyi© r   ú`/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/interpolate/tests/test_ndgriddata.pyÚtest_fill_value   s    

zTestGriddata.test_fill_valuec              	   C   sÔ   t jdddddg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� qbqZd S ©Nr   ©ç      à¿r   ©r   ç      à?©r!   r!   ©g      Ð?g333333Ó?©Zdtyper   r   ©ÚnearestZlinearZcubic©TF©ÚmethodÚrescaleç›+¡†›„=©ÚatolÚerr_msg©r   ÚarrayÚdoubleÚ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dddddg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� qbqZd S r   r/   r5   r   r   r   Útest_multivalue_2d(   s    ÿ ÿzTestGriddata.test_multivalue_2dc              	   C   sÎ   t jdddddgt jd�}t j|jd t jd�}|d d …d d d …f t  dddg¡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� qpqhd S )Nr   r   r    r"   r#   r$   r   r%   r'   r(   ©é   r   ©r.   ©r   r   r+   r,   ©
r   r0   r1   r2   r3   r4   r   r   r   Ztile©r   r   r   Úxir)   r*   r6   r   r   r   r   Útest_multipoint_2d4   s    ÿ4 ÿzTestGriddata.test_multipoint_2dc              	   C   sä   t jdddddgt jd�}t j|jd t jd�}|d|d d d	…   }|d d …d d d …f t  dddg¡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†q~d S )Nr   r   r    r"   r#   r$   r   ù               @r   r%   r'   r(   r9   r;   r<   r+   r,   r=   r>   r   r   r   Útest_complex_2dD   s    ÿ4 ÿzTestGriddata.test_complex_2dc                 C   sš   t  ddddddg¡}t  dddd	ddg¡}d
D ]d}tt||||d�||dd� tt| dd¡|||d�||dd� tt|f||f|d�||dd� q0d S )Nr   ç      @r   ç      @r:   é   r   r   ç333333@r%   ©r)   r+   ©r.   r-   ©r   r0   r   r   Úreshape©r   r   r   r)   r   r   r   Útest_1dU   s     ÿ ÿ ÿzTestGriddata.test_1dc                 C   s°   t  ddddddg¡}t  dddd	ddg¡}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 )Nr   rC   r   rD   r:   rE   r   r   rF   çÍÌÌÌÌÌì?g      @ç      ð?r&   rG   r+   rH   rI   )r   r   r   r?   Z	yi_shouldr)   r   r   r   Útest_1d_bordersa   s4    
ÿýÿýÿýzTestGriddata.test_1d_bordersc                 C   sš   t  ddddddg¡}t  dddd	ddg¡}d
D ]d}tt||||d�||dd� tt| dd¡|||d�||dd� tt|f||f|d�||dd� q0d S )NrC   r   rD   r:   rE   r   r   r   rF   r%   rG   g»½×Ùß|Û=rH   rI   rK   r   r   r   Útest_1d_unsortedw   s     ÿ ÿ ÿzTestGriddata.test_1d_unsortedc              	   C   s   t jdddddgt jd�}t jdddd	d
gt jd�}t jdddddg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 )Nr   )r   éd   )é
   rQ   )rR   r   )r   r:   r$   r   r   r   )çš™™™™™¹?gš™™™™™©?rN   g       @g      Àg      @g      "@r   rR   é   rQ   r%   g      Y@rG   Tr(   gê-�™—q=rH   )
r   r0   r1   Zbroadcast_arraysÚlinspaceÚravelÚTÚcopyr   r   )r   ZpointsZpoints_rescaledÚvaluesZxxÚyyr?   r)   r6   ZziZzi_rescaledr   r   r   Útest_square_rescale_manualƒ   s(    ÿÿ
ÿÿz'TestGriddata.test_square_rescale_manualc           	   	   C   sà   t jdddddg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  d
d
d
g¡}ttt||||d� ttt||||d� qXd S )Nr   r   r    r"   r#   r$   r   rA   r   r!   r%   rG   r;   )	r   r0   r1   r2   r3   r   r   Úassert_raisesÚ
ValueError)	r   r   r   r?   r)   Úp1Úp2Zxi1Zxi3r   r   r   Ú
test_xi_1d—   s$    ÿÿÿzTestGriddata.test_xi_1dN)Ú__name__Ú
__module__Ú__qualname__r   r7   r8   r@   rB   rL   rO   rP   r[   r`   r   r   r   r   r      s   
r   c                   @   s   e Z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   r2   rJ   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  dddddddgdddddddgdddddddg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 )Nr   r   r   r   rS   rM   )r   r0   r   r   Úlist)r   rf   ÚdZNIr   r   r   Útest_nearest_list_argument¹   s    þz4TestNearestNDInterpolator.test_nearest_list_argumentN)ra   rb   rc   rh   rk   r   r   r   r   rd   ­   s   rd   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   rR   g        T)r   ÚrandomÚseedÚhypotrU   ÚminÚmaxZmeshgridZvstackrV   rW   ri   Ú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   )rR   r   r   )é2   r   F)Úwrite)r   rm   rn   ro   Zsetflags)r   r
   Zxyr   r   rt   rw   rx   r   r   r   Útest_read_onlyæ   s    "
z"TestNDInterpolators.test_read_onlyN)ra   rb   rc   Úparametrize_interpolatorsry   r|   r   r   r   r   rl   È   s   
rl   )Únumpyr   Znumpy.testingr   r   r   Zpytestr   r\   Zscipy.interpolater   r   r   r	   ÚmarkZparametrizer}   r   rd   rl   r   r   r   r   Ú<module>   s    ÿÿ 