U
    »mœd¡  ã                	   @   s°   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dlm
Z d dlmZmZmZmZmZ d dlmZ ej dddd	d
ddg¡ZG dd„ dƒZG dd„ dƒZG dd„ dƒZdS )é    N)Úassert_allcloseÚassert_equalÚassert_warnsÚassert_array_almost_equalÚassert_array_equal)Úraises)ÚRegularGridInterpolatorÚinterpnÚRectBivariateSplineÚNearestNDInterpolatorÚLinearNDInterpolator)ÚmatrixÚmethodÚlinearÚnearestÚslinearÚcubicÚquinticÚpchipc                   @   s¬  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zed	d
„ ƒZe	j
 ddddg¡dd„ ƒZe	j
 dee ddddgddddgddddgg¡fee ddddg¡fg¡dd„ ƒZedd„ ƒZdd „ Zd!d"„ Zd#d$„ Ze	j
 d%e ddddg¡d&fe ddddg¡d'fe d'd'd'd'g¡d'fe ddddg¡d(fe dd)d*dg¡d+fg¡d,d-„ ƒZd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Ze	j
 dd>d?g¡d@dA„ ƒZdBdC„ ZdDdE„ ZdFdG„ Z e	j
 dHdIej!ej"g¡e	j
 dd?d>g¡dJdK„ ƒƒZ#e	j
 dd>d?g¡dLdM„ ƒZ$e	j
 dd>d?g¡dNdO„ ƒZ%edPdQ„ ƒZ&dRdS„ Z'edTdU„ ƒZ(edVdW„ ƒZ)ee	j
 dXdYdZg¡d[d\„ ƒƒZ*d]d^„ Z+e	j
 d_ej,ej-ej.ej/g¡e	j
 d`ej,ej-g¡dadb„ ƒƒZ0dIS )cÚTestRegularGridInterpolatorc                 C   s¦   dgd }t  dddg¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d  }||fS )	N©ç        ç      à?ç      ð?é   r   r   r   é
   éd   éè  ©ÚnpÚasarrayÚnewaxis©ÚselfÚpointsÚvaluesÚvalues0Úvalues1Zvalues2Zvalues3© r(   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/interpolate/tests/test_rgi.pyÚ_get_sample_4d   s    
z*TestRegularGridInterpolator._get_sample_4dc                 C   s°   dgd dgd  }t  dddg¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d	  }||fS ©
Nr   é   )r   ç      @ç      $@r   r   r   r   r   r   r   r"   r(   r(   r)   Ú_get_sample_4d_2    s    z,TestRegularGridInterpolator._get_sample_4d_2c              	   C   s®   dgd }t  ddddddd	g¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d
  |d  |d  }||fS )N©r   r   r   ç      ø?ç       @ç      @ç      @r   r   r   r   r1   r2   r3   r4   r   r   r   r   r"   r(   r(   r)   Ú_get_sample_4d_3+   s    
z,TestRegularGridInterpolator._get_sample_4d_3c                 C   s¤   dgd }t  ddg¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d  }||fS )N)r   r   r   r   r   r   r   r   r   r"   r(   r(   r)   Ú_get_sample_4d_46   s    
z,TestRegularGridInterpolator._get_sample_4d_4c                 C   sv   |   ¡ \}}t ddddgddddgddddgg¡}t|| ¡ |d�}|| ¡ ƒ}t|||d�}||ƒ}t||ƒ d S )	Nçš™™™™™¹?r   çÍÌÌÌÌÌì?çš™™™™™É?çÍÌÌÌÌÌÜ?çš™™™™™é?r   ©r   )r5   r   r    r   Útolistr   )r#   r   r$   r%   ÚsampleÚinterpÚv1Úv2r(   r(   r)   Útest_list_inputA   s    
ÿþþz+TestRegularGridInterpolator.test_list_inputr   r   r   r   c              	   C   s”   |   ¡ \}}d}tjt|d�� t|||d� W 5 Q R X t||ƒ}t ddddgdddd	gd
d
d
d
gg¡}tjt|d�� |||d� W 5 Q R X d S )Nzpoints in dimension©Úmatchr<   r7   r   r8   r9   r:   r;   r   )r6   Úpytestr   Ú
ValueErrorr   r   r    )r#   r   r$   r%   rD   r?   r>   r(   r(   r)   Útest_spline_dim_errorR   s    

ÿz1TestRegularGridInterpolator.test_spline_dim_errorzpoints_values, sampler7   r   r8   r9   r:   r;   r   r.   ç      "@c                 C   sF   || ƒ\}}t ||dd�}||ƒ}t ||dd�}||ƒ}t||ƒ d S )Nr   r<   r   )r   r   )r#   Zpoints_valuesr>   r$   r%   r?   r@   rA   r(   r(   r)   Útest_linear_and_slinear_closeb   s    z9TestRegularGridInterpolator.test_linear_and_slinear_closec           
      C   s˜   |   ¡ \}}|d|  }t ddddgddddgddddgg¡}t|||d	�}t||j|d	�}t||j|d	�}||ƒ}||ƒd
||ƒ  }	t||	ƒ d S )Nù               @r7   r   r8   r9   r:   r;   r   r<   ù              ð?)r5   r   r    r   ÚrealÚimagr   )
r#   r   r$   r%   r>   r?   ZrinterpZiinterpr@   rA   r(   r(   r)   Útest_complexx   s    
ÿz(TestRegularGridInterpolator.test_complexc           
      C   s’   ddddgddddg }}t j||dd�\}}dd„ ||ƒ}t||f|d	d
�}t||f|dd
�}|ddgƒ}|ddgƒ}	t j||	ddd�rŽt‚d S )Né   r,   é   r   Úij)Úindexingc                 S   s   | d |d  S )Nr   r(   ©ÚxÚyr(   r(   r)   Ú<lambda>‹   ó    zATestRegularGridInterpolator.test_cubic_vs_pchip.<locals>.<lambda>r   r<   r   r1   ç›+¡†›„=r   )ÚatolZrtol)r   Úmeshgridr   ZallcloseÚAssertionError)
r#   rT   rU   ÚxgÚygr%   r   r   Z
vals_cubicZ
vals_pchipr(   r(   r)   Útest_cubic_vs_pchip‡   s    z/TestRegularGridInterpolator.test_cubic_vs_pchipc                 C   s>   |   ¡ \}}t||ƒ}t ddddg¡}d}t||ƒ|ƒ d S )Nr7   r.   rH   çÍÌÌÌÌH�@©r/   r   r   r    r   ©r#   r$   r%   r?   r>   Úwantedr(   r(   r)   Útest_linear_xi1d“   s
    
z,TestRegularGridInterpolator.test_linear_xi1dc                 C   s`   |   ¡ \}}t||ƒ}t ddddgddddgddddgg¡}t dd	d
g¡}t||ƒ|ƒ d S )Nr7   r   r8   r9   r:   r;   r   r_   çš™™™™qŠ@ç     \�@©r*   r   r   r    r   ra   r(   r(   r)   Útest_linear_xi3dš   s    

ÿz,TestRegularGridInterpolator.test_linear_xi3dzsample, wantedg     0‘@r   ç     \‘@çš™™™™™Ù?g333333ã?g     |�@c                 C   s,   |   ¡ \}}t||dd�}t||ƒ|ƒ d S )Nr   r<   )r*   r   r   )r#   r>   rb   r$   r%   r?   r(   r(   r)   Útest_nearest¢   s    z(TestRegularGridInterpolator.test_nearestc                 C   sT   |   ¡ \}}t||ƒ}t ddddgddddgg¡}t ddg¡}t||ƒ|ƒ d S )Nr   r   rh   rf   ra   r(   r(   r)   Útest_linear_edges±   s
    
z-TestRegularGridInterpolator.test_linear_edgesc                 C   s¸   ddg}t  dddg¡}|d d …t jf }|t jd d …f }||d  }ttt||ƒ ddg}ttt||ƒ ddg}ttt||ƒ dddg}ttt||ƒ ddg}ttt||d	d
� d S )Nr   )r   r   r   r   r   r   r   )r   )r   r   g      è?r   Úundefmethodr<   )r   r    r!   Úassert_raisesrF   r   )r#   r$   r%   r&   r'   r(   r(   r)   Útest_valid_create¸   s     

ÿz-TestRegularGridInterpolator.test_valid_createc                 C   s–   |   ¡ \}}t||ƒ}t ddddgddddgg¡}tt||dƒ t dddgdddgg¡}tt||ƒ t ddddgddddgg¡}tt||ƒ d S )Nr   r   rl   çš™™™™™ñ?)r*   r   r   r    rm   rF   )r#   r$   r%   r?   r>   r(   r(   r)   Útest_valid_callÊ   s    
z+TestRegularGridInterpolator.test_valid_callc              	   C   sš   |   ¡ \}}t||dd d�}t ddddgddddgddddgddddgg¡}t d	d
ddg¡}t||dd�|ƒ t ddddg¡}t||dd�|ƒ d S )NF©Úbounds_errorÚ
fill_valueçš™™™™™¹¿ro   é   çÍÌÌÌÌÌ @çš™™™™™ñ¿éõÿÿÿr   rh   ç      &@r   r<   gfffffÆ[Àgfffff“@g     žÅÀgš™™™™‹’Àr   rf   ra   r(   r(   r)   Útest_out_of_bounds_extrapÔ   s    ÿ
 
ÿz5TestRegularGridInterpolator.test_out_of_bounds_extrapc              	   C   sš   |   ¡ \}}t||dd d�}t ddddgddddgddddgddddgg¡}t d	d
d
d
g¡}t||dd�|ƒ t ddddg¡}t||dd�|ƒ d S )NFrq   rt   ro   ru   rv   rw   rx   r   ry   r   r<   g333333(Àg33333£`@g     ´�Àgš™™™™yXÀr   r`   ra   r(   r(   r)   Útest_out_of_bounds_extrap2ß   s    ÿ
 
ÿz6TestRegularGridInterpolator.test_out_of_bounds_extrap2c                 C   sÊ   |   ¡ \}}t||dtjd�}t ddddgddddgddddgg¡}t tjtjtjg¡}t||dd�|ƒ t||d	d�|ƒ t d
d
ddgdd
ddgddddgg¡}t dddg¡}t||ƒ|ƒ d S )NFrq   rt   ro   rv   rw   r   r<   r   r7   r   r8   r9   r:   r;   r   r_   rd   re   )r*   r   r   Únanr    r   ra   r(   r(   r)   Útest_out_of_bounds_fillê   s    ÿ
ÿ
ÿz3TestRegularGridInterpolator.test_out_of_bounds_fillc                 C   sŽ   |   ¡ \}}t||dd�}tj|Ž }dd„ |D ƒ}t |¡}| d¡}t||ƒ}t ddddgd	dd
dgddddgg¡}t||ƒ||ƒƒ d S )Nr   r<   c                 S   s   g | ]}|‘qS r(   r(   ©Ú.0Úpr(   r(   r)   Ú
<listcomp>ü   s     zJTestRegularGridInterpolator.test_nearest_compare_qhull.<locals>.<listcomp>éÿÿÿÿr7   r   r8   r9   r:   r;   r   )	r*   r   Ú	itertoolsÚproductr   r    Úreshaper   r   ©r#   r$   r%   r?   Zpoints_qhullZvalues_qhullZinterp_qhullr>   r(   r(   r)   Útest_nearest_compare_qhullø   s    




ÿz6TestRegularGridInterpolator.test_nearest_compare_qhullc                 C   sŠ   |   ¡ \}}t||ƒ}tj|Ž }dd„ |D ƒ}t |¡}| d¡}t||ƒ}t ddddgdddd	gd
d
d
d
gg¡}t||ƒ||ƒƒ d S )Nc                 S   s   g | ]}|‘qS r(   r(   r~   r(   r(   r)   r�     s     zITestRegularGridInterpolator.test_linear_compare_qhull.<locals>.<listcomp>r‚   r7   r   r8   r9   r:   r;   r   )	r*   r   rƒ   r„   r   r    r…   r   r   r†   r(   r(   r)   Útest_linear_compare_qhull  s    





ÿz5TestRegularGridInterpolator.test_linear_compare_qhullr   r   c                 C   sp   t  ddd¡}t  ddd¡}tdƒ}t||f||d�}|dd	gƒ}t||f|j|d�}|dd	gƒ}t||ƒ d S )
Nr   r,   é   rO   é   ©r‰   rŠ   r<   ri   çffffffæ?)r   ÚlinspaceÚMyValuer   Ú_vr   )r#   r   rT   rU   r%   r?   r@   rA   r(   r(   r)   Útest_duck_typed_values  s    z2TestRegularGridInterpolator.test_duck_typed_valuesc                 C   sb   t j d¡ t  ddd¡}t  ddd¡}t j dd¡}t||f|dd� ttt||f|dd� d S )	NéÒ  r   r,   r‰   rO   rŠ   ©rs   y      ð?       @)r   ÚrandomÚseedr�   Úrandr   rm   rF   )r#   rT   rU   r%   r(   r(   r)   Útest_invalid_fill_value  s      ÿz3TestRegularGridInterpolator.test_invalid_fill_valuec                 C   s:   t jddd�}dd„ |jD ƒ}t||ƒ t||dd� d S )N)r   é   é   z>f4©Údtypec                 S   s   g | ]}t  |¡‘qS r(   )r   Úarange)r   Únr(   r(   r)   r�   .  s     zCTestRegularGridInterpolator.test_fillvalue_type.<locals>.<listcomp>r   r’   )r   ÚonesÚshaper   )r#   r%   r$   r(   r(   r)   Útest_fillvalue_type+  s    
z/TestRegularGridInterpolator.test_fillvalue_typec                 C   sT  dd„ }t  ddd¡}t  ddd¡}|t j||ddd�Ž }t||f|dd	d
d�}t|t  ddgddgddgg¡ƒdddgdd� t|t  ddgddgddgg¡ƒdddgdd� t|t  ddg¡ƒ|jdd� d |_t|ddgddggƒddgdd� t|ddgddggƒddgdd� t||f|dd	d d�}t|ddgd d!ggƒd"dgdd� d S )#Nc                 S   s   | | S ©Nr(   rS   r(   r(   r)   Úf7  s    z;TestRegularGridInterpolator.test_length_one_axis.<locals>.frO   r   rQ   T©rR   Úsparser   Fée   ©r   rr   rs   r‰   r,   é   é   rX   ©rY   gffffffö?ç333333@g333333@ç333333@ro   ç333333Ó?g      '@gÍÌÌÌÌÌô?g      )@çVçž¯Ò<r1   gffffffþ?r   gÍÌÌÌÌÌü?éüÿÿÿgffffff@rP   )r   r�   rZ   r   r   Úarrayrs   )r#   r¡   rT   rU   Údatar?   r(   r(   r)   Útest_length_one_axis3  sJ     ÿ þ þþ ÿ ÿ ÿþz0TestRegularGridInterpolator.test_length_one_axisrs   Nc                 C   sê   |d|dœ}t  ddt j d¡}t  |¡}t|f|d d … f|Ž}t|dgf|d d …d f f|Ž}t  ddt j d d¡}||ƒ}	t  d¡}
|t  ||
g¡jƒ}t||	ƒ t  	d¡}
|t  ||
g¡jƒ}|d krÜt||	ƒ n
t||ƒ d S )	NF©rs   rr   r   r   r,   r—   r‚   rO   r   )
r   r�   ÚpiÚsinr   ZzerosÚvstackÚTr   r�   )r#   rs   r   ÚoptionsrT   ÚzÚfaZfbZx1aZzaZy1bZzbr(   r(   r)   Útest_length_one_axis2^  s"    ÿ
 


z1TestRegularGridInterpolator.test_length_one_axis2c           	   	   C   s  t dddgfdddgdd|d�}t |tjgƒ¡s6t‚tj d	¡}|jd
d�d }|jd
d�dk}tj||< tjdd�� ||ƒ}W 5 Q R X t|| tjƒ t||  |||  ƒƒ dddg}dg}t 	d¡}t ||f|dd|d�}t |tjdgƒ¡sþt‚t |dtjgƒ¡�st‚d S )NrO   r,   rP   r   r—   r˜   Fr±   ì   l¿J r   ©Úsizer   r   Úignore©Úinvalid)rP   rO   )
r   r   Úisnanr|   r[   r“   Údefault_rngÚerrstater   r�   )	r#   r   r¡   ÚrngrT   ÚiÚresrU   r¯   r(   r(   r)   Útest_nan_x_1dz  s,     ÿ


 ÿz)TestRegularGridInterpolator.test_nan_x_1dc              	   C   sz  t  dddg¡t  dddg¡ }}dd„ }t j||dd	d
�\}}|||ƒ}t||f||dd�}t jdd�� |dt jgddggƒ}	W 5 Q R X t|	d ddd� t  |	d ¡s°t‚t j	 
d¡}
|
j	dd�d d }|
j	dd�d }|
j	dd�dk}|
j	dd�dk}||B }t j||< t j||< t  ||g¡j}t jdd�� ||ƒ}	W 5 Q R X t|	| t jƒ t|	|  |||  ƒƒ d S )Nr   rO   r,   rP   rŠ   c                 S   s   | d |d  S ©Nr,   r(   rS   r(   r(   r)   r¡   �  s    z4TestRegularGridInterpolator.test_nan_x_2d.<locals>.frQ   Tr¢   F©r   rr   r½   r¾   r1   rX   r¨   rº   r   r»   r   é   r   )r   r®   rZ   r   rÂ   r|   r   rÀ   r[   r“   rÁ   rµ   r   )r#   r   rT   rU   r¡   r\   r]   r¯   r?   rÅ   rÃ   Úi1Úi2rÄ   r·   r(   r(   r)   Útest_nan_x_2d™  s2    "

 ÿ 

z)TestRegularGridInterpolator.test_nan_x_2dc                 C   sð   dd„ }t  ddd¡}t  ddd¡}t  ddd	¡}|||f}|t j|d
ddœŽŽ }t|||d�}t  dddgdddgg¡}	||	ƒ}
|d d d… }|d d d… }|d d d… }|||f}|t j|d
ddœŽŽ }t|||d�}||	ƒ}t|
|ƒ d S )Nc                 S   s   d| d  d|d   | S ©Nr,   rP   r(   )rT   rU   r·   r(   r(   r)   Úval_func_3dÀ  s    zGTestRegularGridInterpolator.test_descending_points.<locals>.val_func_3drO   r   r§   rŠ   é   é	   é!   rQ   Tr¢   r<   rv   çÍÌÌÌÌÌ@gš™™™™™ @çffffff
@çÍÌÌÌÌÌ@gffffff@r‚   )r   r�   rZ   r   r®   r   )r#   r   rÎ   rT   rU   r·   r$   r%   Zmy_interpolating_functionÚptsÚcorrect_resultZx_descendingZy_descendingZz_descendingÚpoints_shuffledÚvalues_shuffledÚtest_resultr(   r(   r)   Útest_descending_points¾  s8    
ÿþ
ÿ  ÿz2TestRegularGridInterpolator.test_descending_pointsc              	   C   sz   dd„ }t  dddddg¡}t  dddddg¡}||f}|t j|d	d
dœŽŽ }d}tjt|d�� t||ƒ W 5 Q R X d S )Nc                 S   s   d| d  d|d   S rÍ   r(   rS   r(   r(   r)   Úval_func_2dÝ  s    zJTestRegularGridInterpolator.test_invalid_points_order.<locals>.val_func_2dr   r2   r   ç      @ç      @r4   rQ   Tr¢   ú(must be strictly ascending or descendingrC   )r   r®   rZ   rE   r   rF   r   )r#   rÛ   rT   rU   r$   r%   rD   r(   r(   r)   Útest_invalid_points_orderÜ  s    
ÿ
z5TestRegularGridInterpolator.test_invalid_points_orderc                 C   s6   t t d¡gt d¡|dd�}t |dgƒ¡s2t‚d S )Nr¦   FrÈ   r   )r   r   r›   r�   rÀ   r[   )r#   r   r?   r(   r(   r)   Útest_fill_valueé  s
     ÿz+TestRegularGridInterpolator.test_fill_valuec                 C   s¼   dgd dgd  }t j d¡}| d¡}| d¡}t|||dd�}||ƒ}t|jd	|d
� g }tdƒD ]*}	t||d|	f |dd�}| ||ƒ¡ qht  |¡ 	ddd¡}
t
||
d|d� d S )N©r   r   r   r1   r2   r3   r,   ©r   r-   r.   ç      .@r—   ç      9@r‘   ©r¦   r¦   r¦   r¦   rÉ   ©rŠ   rP   r   FrÈ   ©rŠ   rP   rÉ   ©Úerr_msgrÉ   .rO   r   rX   ©rY   ré   )r   r“   rÁ   r   r   rž   ÚrangeÚappendr®   Ú	transposer   )r#   r   r$   rÃ   r%   r>   r?   ÚvÚvsÚjrA   r(   r(   r)   Útest_nonscalar_valuesï  s,    ÿþ

ÿþz1TestRegularGridInterpolator.test_nonscalar_valuesÚflip_pointsFTc                 C   sø   ddddg}|rdd„ |D ƒ}t j d¡}d}| d|˜¡}| d¡}t|||dd�}||ƒ}	|	jd|˜kspt‚t  |jdd … ¡}
t|jd ƒD ]B}t|jd ƒD ].}t||d||f |dd�}||ƒ|
||f< q¤q’t j|
dd�}t	|	|d|d� d S )Nrá   r0   ©r   r-   r.   rã   r—   rä   ç     €A@ç      B@©	r   r-   r.   rã   r—   rä   rô   rõ   é/   c                 S   s   g | ]}t t|ƒƒ‘qS r(   )ÚtupleÚreversedr~   r(   r(   r)   r�     s     zGTestRegularGridInterpolator.test_nonscalar_values_2.<locals>.<listcomp>r‘   ©rP   r,   r¦   rŠ   rÉ   rÐ   r   FrÈ   rO   éþÿÿÿr‚   .r   ©ZaxisrX   rê   )r¦   rŠ   rÉ   rÐ   )rO   ©
r   r“   rÁ   r   rž   r[   Úemptyrë   Zexpand_dimsr   )r#   r   rò   r$   rÃ   Útrailing_pointsr%   r>   r?   rî   rï   rÄ   rð   rA   r(   r(   r)   Útest_nonscalar_values_2	  s4    ý
ÿþz3TestRegularGridInterpolator.test_nonscalar_values_2c                 C   sæ   d}ddg}t j d¡}d}| d|˜¡}| d¡}t|||d	d
�}||ƒ}|jd|˜ks^t‚t  |jdd … ¡}	t|jd ƒD ]B}
t|jd ƒD ].}t||d|
|f |d	d
�}||ƒ|	|
|f< q’q€t j|	dd�}t	||d|d� d S )Nr   rá   r0   r‘   )rP   r   r¦   rŠ   r,   FrÈ   rO   rû   r‚   .r   rü   rX   rê   )r¦   rŠ   )rO   rý   )r#   r   r$   rÃ   rÿ   r%   r>   r?   rî   rï   rÄ   rð   rA   r(   r(   r)   Útest_nonscalar_values_linear_2D0  s.    ÿ
ÿþz;TestRegularGridInterpolator.test_nonscalar_values_linear_2Drš   Úxi_dtypec                 C   s�   dd„ }t  ddd¡}t  ddd¡}t j||dd	d
�\}}|||ƒ}| |¡}t||f|ƒ}	t jddgddgg|d�}
t|	|
ƒddgdd� d S )Nc                 S   s   d| d  d|d   S rÍ   r(   rS   r(   r(   r)   r¡   V  s    z:TestRegularGridInterpolator.test_float32_values.<locals>.frO   r   r§   rŠ   rÏ   rQ   Tr¢   rv   rÒ   rÓ   rÔ   r™   g Öú¦YÃ`@gÖÉø{Ò,c@gH¯¼šò×z>r¨   )r   r�   rZ   Zastyper   r®   r   )r#   rš   r  r¡   rT   rU   r\   r]   r¯   r?   rÕ   r(   r(   r)   Útest_float32_valuesO  s    


ÿÿz/TestRegularGridInterpolator.test_float32_values)1Ú__name__Ú
__module__Ú__qualname__r*   r/   r5   r6   Úparametrize_rgi_interp_methodsrB   rE   ÚmarkÚparametrizerG   r   r    rI   rN   r^   rc   rg   rj   rk   rn   rp   rz   r{   r}   r‡   rˆ   r�   r–   rŸ   r°   r|   r²   r¹   rÆ   rÌ   rÚ   rß   rà   rñ   r   r  Zfloat32Zfloat64Z	complex64Z
complex128r  r(   r(   r(   r)   r      s”   




þÿþ÷þ

ûþ



+

$


%þr   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )rŽ   z"
    Minimal indexable object
    c                 C   s(   d| _ || _t t |¡¡ |¡| _d S rÇ   )Úndimrž   r   r›   Úprodr…   r�   )r#   rž   r(   r(   r)   Ú__init__q  s    zMyValue.__init__c                 C   s
   | j | S r    )r�   )r#   Úidxr(   r(   r)   Ú__getitem__v  s    zMyValue.__getitem__c                 C   s   d S r    r(   ©r#   r(   r(   r)   Ú__array_interface__y  s    zMyValue.__array_interface__c                 C   s   t dƒ‚d S )NzNo array representation)ÚRuntimeErrorr  r(   r(   r)   Ú	__array__|  s    zMyValue.__array__N)r  r  r  Ú__doc__r  r  r  r  r(   r(   r(   r)   rŽ   l  s
   rŽ   c                   @   s   e Zd Zdd„ Zdd„ Ze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edd„ ƒZedd„ ƒZedd„ ƒZdd„ Zedd „ ƒZd!d"„ Zej d#d$d%g¡d&d'„ ƒZed(d)„ ƒZd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Z ej d8d9d:g¡d;d<„ ƒZ!d=S )>ÚTestInterpNc                 C   s”   t  ddddddg¡}t  ddddddg¡}t  ddddddgddddddgddd	dddgddddddgddddddgddddddgg¡}|||fS )
Nr   r2   r4   rÜ   rÝ   g      @rO   r,   rP   )r   r®   )r#   rT   rU   r·   r(   r(   r)   Ú_sample_2d_data�  s    úÿ
zTestInterpN._sample_2d_datac              
   C   s„   |   ¡ \}}}t|||ƒ}t dddddddgddddd	d
dgg¡j}tt||f||dd�| |d d …df |d d …df ¡ƒ d S )NrO   çffffff@r©   r   rÓ   ç333333ó?rP   rÜ   r-   r   Ú	splinef2dr<   r   )r  r
   r   r®   rµ   r   r	   Úev)r#   rT   rU   r·   ÚlutÚxir(   r(   r)   Útest_spline_2d�  s    ÿ"ÿzTestInterpN.test_spline_2dc              
   C   s„   |   ¡ \}}}t dddddddgddddd	d
dgg¡j}t||f|||d�}t| ¡ | ¡ f| ¡ | ¡ |d�}t|||d� d S )NrO   r  r©   r   rÓ   r  rP   rÜ   r-   r   r<   rè   )r  r   r®   rµ   r	   r=   r   )r#   r   rT   rU   r·   r  r@   rA   r(   r(   r)   rB   ™  s    ÿ   ÿzTestInterpN.test_list_inputc                 C   s  t  dddddg¡}t  dddddg¡}t  dddddgdddddgdddddgdddddgdddddgg¡}t|||ƒ}t  dd	d
ddddgdddddddgg¡j}t||f||dddd�}| |d d …df |d d …df ¡}d|dd…< t||ƒ ttt||f||ddd d� d S )Nr   r2   r4   rÜ   rÝ   rO   r,   rP   r  rª   rÓ   r  ç      Àr-   r   r  FçR¸…ë?�@r¥   r   r   )	r   r®   r
   rµ   r	   r  r   rm   rF   )r#   rT   rU   r·   r  r  ÚactualÚexpectedr(   r(   r)   Útest_spline_2d_outofbounds¥  s*    ( ÿÿ ÿ$
 ÿz&TestInterpN.test_spline_2d_outofboundsc                 C   s°   dgd dgd  }t  dddg¡}|d d …t jt jt jf }|t jd d …t jt jf }|t jt jd d …t jf }|t jt jt jd d …f }||d  |d  |d	  }||fS r+   r   r"   r(   r(   r)   Ú_sample_4d_data¸  s    zTestInterpN._sample_4d_datac                 C   sL   |   ¡ \}}t||ƒ}t ddddgg¡}t|||dd�}t||ƒ|ƒ d S )Nr7   r.   rH   r   r<   ©r"  r   r   r    r	   r   ©r#   r$   r%   Z	interp_rgr>   rb   r(   r(   r)   Útest_linear_4dÂ  s
    
zTestInterpN.test_linear_4dc                 C   sF   |   ¡ \}}t ddddgg¡}d}t|||dddd�}t||ƒ d S )	Nr7   rt   ç333333$@rH   r  r   Fr¥   ©r"  r   r    r	   r   ©r#   r$   r%   r>   rb   r  r(   r(   r)   Útest_4d_linear_outofboundsÊ  s    
 ÿz&TestInterpN.test_4d_linear_outofboundsc                 C   sP   |   ¡ \}}t||dd�}t ddddgg¡}t|||dd�}t||ƒ|ƒ d S )Nr   r<   r7   r.   rH   r#  r$  r(   r(   r)   Útest_nearest_4dÓ  s
    zTestInterpN.test_nearest_4dc                 C   sF   |   ¡ \}}t ddddgg¡}d}t|||dddd�}t||ƒ d S )	Nr7   rt   r&  rH   r  r   Fr¥   r'  r(  r(   r(   r)   Útest_4d_nearest_outofboundsÛ  s    
 ÿz'TestInterpN.test_4d_nearest_outofboundsc                 C   sX   |   ¡ \}}t ddddg¡}t|||dd�}t|||d d d …f dd�}t||ƒ d S )Nr7   r.   rH   F)rr   )r"  r   r    r	   r   ©r#   r$   r%   r>   r@   rA   r(   r(   r)   Ú
test_xi_1dä  s
    zTestInterpN.test_xi_1dc                 C   sv   |   ¡ \}}tj d¡ tj ddd¡}t|||ddd�}t|jdƒ t||| d	d¡ddd�}t	|| |j¡ƒ d S )
Nr‘   r,   rP   r   r   FrÈ   ©r,   rP   r‚   )
r"  r   r“   r”   r•   r	   r   rž   r…   r   r,  r(   r(   r)   Ú
test_xi_ndì  s    
ÿ ÿzTestInterpN.test_xi_ndc                 C   sÂ   |   ¡ \}}}||f}t ddd¡}t ddd¡}|d d …d f |d d d …f f}t||||dd�}	t|	jdƒ t ||¡\}
}tj|
j 	¡ |j 	¡ f }t||||dd�}t
|	| |	j¡ƒ d S )Nr   rO   r,   rP   FrÈ   r.  )r  r   r�   r	   r   rž   rZ   Zc_rµ   Zravelr   r…   )r#   r   rT   rU   r%   r$   r  Úyir>   r@   ZxxÚyyrA   r(   r(   r)   Útest_xi_broadcastû  s      ÿzTestInterpN.test_xi_broadcastc                    sš   dgd dgd  ‰t j d¡}| d¡‰| d¡‰tˆˆˆˆ dd�}t|jd	ˆ d
� ‡ ‡‡‡fdd„tdƒD ƒ}t  |¡ ddd¡}t	||dˆ d� d S )Nrá   r,   râ   r‘   rå   ræ   FrÈ   rç   rè   c              	      s&   g | ]}t ˆˆd |f ˆˆ dd�‘qS ©.FrÈ   ©r	   )r   rð   ©r   r$   r>   r%   r(   r)   r�     s   ÿÿz5TestInterpN.test_nonscalar_values.<locals>.<listcomp>rÉ   rO   r   rX   rê   )
r   r“   rÁ   r	   r   rž   rë   r®   rí   r   )r#   r   rÃ   rî   rï   rA   r(   r5  r)   rñ     s"    ÿþ


ÿÿz!TestInterpN.test_nonscalar_valuesc                    s–   ddddg‰t j d¡}d}| d|˜¡‰| d¡‰tˆˆˆˆ dd�}|jd|˜ksXt‚‡ ‡‡‡fdd„tˆjd ƒD ƒ}t|t  |¡j	dˆ d� d S )Nrá   r0   ró   rö   r‘   rú   r¦   rŠ   rÉ   rÐ   r   FrÈ   rO   c                    s0   g | ](‰ ‡ ‡‡‡‡fd d„t ˆjd ƒD ƒ‘qS )c              	      s(   g | ] }t ˆˆd |ˆ f ˆˆdd�‘qS r3  r4  )r   rÄ   )rð   r   r$   r>   r%   r(   r)   r�   :  s   ÿÿzBTestInterpN.test_nonscalar_values_2.<locals>.<listcomp>.<listcomp>rû   )rë   rž   )r   r5  )rð   r)   r�   :  s   ýþz7TestInterpN.test_nonscalar_values_2.<locals>.<listcomp>r‚   rX   rê   )r¦   rŠ   rÉ   rÐ   )rO   )
r   r“   rÁ   r	   rž   r[   rë   r   r    rµ   )r#   r   rÃ   rÿ   rî   rï   r(   r5  r)   r   $  s    ý
ýz#TestInterpN.test_nonscalar_values_2c                 C   sT   |   ¡ \}}tj d¡ tj ddddd¡}tj ddd¡}ttt|||dd� d S )	Nr‘   rP   r¦   rŠ   r§   r   r  r<   )r"  r   r“   r”   r•   rm   rF   r	   )r#   r$   r%   r>   r(   r(   r)   Ú test_non_scalar_values_splinef2dA  s    ÿz,TestInterpN.test_non_scalar_values_splinef2dc              
   C   sœ   |   ¡ \}}}||f}|d|  }t dddddddgdddd	d
ddgg¡j}t||||d�}t||j||d�}t||j||d�}	|d|	  }
t||
ƒ d S )NrJ   rO   r  r©   r   rÓ   r  rP   rÜ   r-   r   r<   rK   )r  r   r®   rµ   r	   rL   rM   r   )r#   r   rT   rU   r%   r$   r>   r@   Zv2rZv2irA   r(   r(   r)   rN   K  s    ÿzTestInterpN.test_complexc              
   C   sx   |   ¡ \}}}||f}|d|  }t dddddddgdddd	d
ddgg¡j}ttjƒ� t|||dd� W 5 Q R X d S )NrJ   rO   r  r©   r   rÓ   r  rP   rÜ   r-   r   r  r<   )r  r   r®   rµ   r   ZComplexWarningr	   )r#   rT   rU   r%   r$   r>   r(   r(   r)   Útest_complex_spline2fdZ  s    ÿz"TestInterpN.test_complex_spline2fdr   r   r   c                 C   sd   t  ddd¡}t  ddd¡}tdƒ}t||f|ddg|d	�}t||f|jddg|d	�}t||ƒ d S )
Nr   r,   r‰   rO   rŠ   r‹   ri   rŒ   r<   )r   r�   rŽ   r	   r�   r   )r#   r   rT   rU   r%   r@   rA   r(   r(   r)   r�   e  s    z"TestInterpN.test_duck_typed_valuesc                 C   sz   t  ddd¡}t  ddd¡}tt j dd¡ƒ}t j ddd¡}t||f|||d�}t||ft  |¡||d�}t||ƒ d S )Nr   r,   r¦   rO   rŠ   rP   r<   )r   r�   r   r“   r•   r	   r    r   )r#   r   rT   rU   r%   r>   r@   rA   r(   r(   r)   Útest_matrix_inputs  s    zTestInterpN.test_matrix_inputc                 C   sª   t  dddgg¡}t  ddgddgddgg¡}tdgddd	gf||ƒ}d
ddg}t||dd� t  ddgddgddgg¡}tdgddd	gf||dd d�}t||dd� d S )Nr7   rO   r   gš™™™™™@gš™™™™™	@gffffff@r,   rP   r   gìQ¸…ëÑ?gffffff@gffffff @r¬   r¨   ro   r1   gffffffÀFrq   )r   r®   r	   r   )r#   r%   r  rÅ   rb   r(   r(   r)   r°   €  s    þ ÿz TestInterpN.test_length_one_axisc              	   C   s  dd„ }t  ddddg¡}t  dddd	g¡}t  dddd	g¡}t  dd
ddg¡}||||f}|t j|dddœŽŽ }d
dt  t  dd	d¡¡t  ddd¡f}t|||ƒ}	|d d d… }
|d d d… }|d d d… }|d d d… }|
|||f}|t j|dddœŽŽ }t|||ƒ}t|	|ƒ d S )Nc                 S   s    d| d  d|d   | | S rÍ   r(   )rT   rU   r·   Úar(   r(   r)   Úvalue_func_4d—  s    z9TestInterpN.test_descending_points.<locals>.value_func_4dr   rO   r,   rP   r   r—   r˜   r7   r9   r«   rQ   Tr¢   r   r‚   )r   r®   rZ   rí   r�   r	   r   )r#   r:  Úx1Zx2Zx3Zx4r$   r%   rÕ   rÖ   Z
x1_descendZ
x2_descendZ
x3_descendZ
x4_descendr×   rØ   rÙ   r(   r(   r)   rÚ   –  s.    ÿÿÿz"TestInterpN.test_descending_pointsc                 C   sÌ   t  dddddg¡}t  dddddg¡}t  dddddgdddddgddd	ddgdddddgdddddgg¡}t  dd
ddddd	gddddddd	gg¡j}d}tjt|d�� t||f||ƒ W 5 Q R X d S )Nr   r2   r   rÜ   rÝ   r4   rO   r,   rP   r  rª   rÓ   r  r  r-   r   rÞ   rC   )r   r®   rµ   rE   r   rF   r	   )r#   rT   rU   r·   r  rD   r(   r(   r)   rß   °  s    ( ÿÿz%TestInterpN.test_invalid_points_orderc              	   C   sD   dg}ddg}t  d¡}d}tt|d�� t|||ƒ W 5 Q R X d S )N)r   rO   r   rO   )rO   rO   rP   zaThe requested sample points xi have dimension 3, but this RegularGridInterpolator has dimension 1rC   )r   r�   rm   rF   r	   )r#   r$   r%   r  Úmsgr(   r(   r)   Útest_invalid_xi_dimensions¼  s    
z&TestInterpN.test_invalid_xi_dimensionsc                 C   sŽ   t  ddd¡}t  ddd¡}t  ddd¡}|||f}t  d¡}t  ddd	g¡}|D ]}d
|j_qRd
|j_d
|j_t|||ƒ t||ƒ|ƒ d S )Nr   r   r‰   r¦   rŠ   ©r‰   r¦   rŠ   ç®Gáz®@çö(\�Âõ@çffffffò?F©r   r�   r�   r®   ÚflagsZ	writeabler	   r   )r#   rT   rU   r·   r$   r%   ÚpointÚdr(   r(   r)   Útest_readonly_gridÆ  s    


zTestInterpN.test_readonly_gridc                 C   s|   t  ddd¡}t  ddd¡}||f}t  d¡}t  ddg¡}|D ]}d|j_q@d|j_d|j_t|||ƒ t||ƒ|ƒ d S )	Nr   r   r‰   r¦   ©r‰   r¦   r?  r@  FrB  )r#   rT   rU   r$   r%   rD  rE  r(   r(   r)   Útest_2d_readonly_gridÕ  s    

z!TestInterpN.test_2d_readonly_gridc                 C   sž   t  ddd¡}t  |t  |¡f¡j ¡ d d …df }|jjr@t‚t  ddd¡}t  ddd¡}|||f}t  	d¡}t  
ddd	g¡}t|||ƒ t||ƒ|ƒ d S )
Nr   r   r‰   r¦   rŠ   r>  r?  r@  rA  )r   r�   r´   Z
empty_likerµ   ÚcopyrC  Úc_contiguousr[   r�   r®   r	   r   )r#   rT   rU   r·   r$   r%   rD  r(   r(   r)   Útest_non_c_contiguous_gridä  s    &

z&TestInterpN.test_non_c_contiguous_gridrš   z>f8z<f8c                 C   sj   t jddd|d�}t jddd|d�}||f}t jd|d�}t jddg|d�}t|||ƒ t||ƒ|ƒ d S )	Nr   r   r‰   r™   r¦   rG  r?  r@  )r   r�   r�   r®   r	   r   )r#   rš   rT   rU   r$   r%   rD  r(   r(   r)   Útest_endiannessñ  s    zTestInterpN.test_endiannessN)"r  r  r  r  r  r  rB   r!  r"  r%  r)  r*  r+  r-  r/  r2  rñ   r   r6  rN   r7  rE   r  r	  r�   r8  r°   rÚ   rß   r=  rF  rH  rK  rL  r(   r(   r(   r)   r  €  sL   	

		




þ



r  )rƒ   rE   Únumpyr   Znumpy.testingr   r   r   r   r   r   rm   Zscipy.interpolater   r	   r
   r   r   Zscipy.sparse._sputilsr   r  r	  r  r   rŽ   r  r(   r(   r(   r)   Ú<module>   s"    ÿ    \