a
    ‡ù»jî6  ã                   @   sž   d dl Z d dlZd dlmZmZmZmZ d dlm	Z
 d dlZd dlm  mZ d dlm  mZ d dlZdd„ ZG dd„ dƒZG dd	„ d	ƒZG d
d„ dƒZdS )é    N)Úassert_equalÚassert_allcloseÚassert_almost_equalÚsuppress_warnings)Úraisesc                 C   s    t j t j t j t¡¡d| ¡S )NÚdata)ÚosÚpathÚjoinÚabspathÚdirnameÚ__file__)Úbasename© r   úKE:\soccer\ml_env\Lib\site-packages\scipy/interpolate/tests/test_interpnd.pyÚ	data_file   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d„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestLinearNDInterpolationc                 C   sH   t jg d¢t jd�}t j|jd t jd�}t ||¡|ƒ}t||ƒ d S )N©©r   r   )ç      à¿r   )r   ç      à?)r   r   )ç      Ð?ç333333Ó?©Zdtyper   ©ÚnpÚarrayÚfloat64ÚarangeÚshapeÚinterpndÚLinearNDInterpolatorr   ©ÚselfÚxÚyÚyir   r   r   Útest_smoketest   s    
ÿz(TestLinearNDInterpolation.test_smoketestc                 C   s~   t jg d¢t jd�}t j|jd t jd�}t |d d …df |d d …df f|¡|d d …df |d d …df ƒ}t||ƒ d S )Nr   r   r   é   r   r"   r   r   r   Útest_smoketest_alternate   s    
ÿFz2TestLinearNDInterpolation.test_smoketest_alternatec                 C   sT   t jg d¢t jd�}t j|jd t jd�}|d|  }t ||¡|ƒ}t||ƒ d S ©Nr   r   r   ù              @r   r"   r   r   r   Útest_complex_smoketest'   s    
ÿz0TestLinearNDInterpolation.test_complex_smoketestc                 C   s^   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}t ||¡|ƒ}t	||ƒ d S r*   )
r   r   r   r   r   ÚqhullÚDelaunayr    r!   r   ©r#   r$   r%   Útrir&   r   r   r   Útest_tri_input1   s    
ÿ
z(TestLinearNDInterpolation.test_tri_inputc                    s¸   t jg d¢t jd�}t jg d¢t jd�‰ ‡ fdd„}t  t  ddd¡d d …d f t  ddd¡d d d …f ¡\}}| ¡ }| ¡ }t  ||g¡j ¡ }t 	|ˆ ¡|ƒ}t
||||ƒƒ d S )	N)r   ©r   r(   ©r(   r(   ©r(   r   r   ©g      ð?g       @g      Àg      @c           	         s¦   | | dk}| }| | }|| }| | }|| }d|  }ˆ d d| |  ˆ d |  ˆ d |  ||< ˆ d || d  ˆ d d|   ˆ d d|   ||< |S )Nr(   r   é   é   r   )	r$   r%   Út1Út2Úx1Úy1Zx2Úy2Úz©Úvaluesr   r   ÚipJ   s$    
ÿ
þÿþz1TestLinearNDInterpolation.test_square.<locals>.ipr   r(   é   ©r   r   r   Zbroadcast_arraysZlinspaceZravelÚTÚcopyr    r!   r   )r#   Úpointsr@   ÚxxÚyyÚxiÚzir   r>   r   Útest_square<   s    	ÿz%TestLinearNDInterpolation.test_squarec                 C   sL   t jg d¢t jd�}t j|jd t jd�}tj||dd�|ƒ}t||ƒ d S )N©r   )éûÿÿÿrL   )rL   é   )rM   rM   )g      @r6   r   r   T©Úrescaler   r"   r   r   r   Útest_smoketest_rescalei   s    
ÿz0TestLinearNDInterpolation.test_smoketest_rescalec                 C   sº   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 ¡ }t 	||¡|ƒ}tj	||dd	�|ƒ}t
||ƒ d S )
N)r   )r   éd   )é
   rQ   )rR   r   r   r5   r   rR   rA   rQ   TrN   rB   )r#   rE   r?   rF   rG   rH   rI   Zzi_rescaledr   r   r   Útest_square_rescaler   s    ÿÿÿz-TestLinearNDInterpolation.test_square_rescalec                 C   sv   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}t |j	|¡|ƒ}tj|j	|dd�|ƒ}t
||ƒ d S ©NrK   r   r   r+   TrN   )r   r   r   r   r   r-   r.   r    r!   rE   r   ©r#   r$   r%   r0   r&   Z
yi_rescaler   r   r   Útest_tripoints_input_rescale„   s    
ÿ

ÿÿz6TestLinearNDInterpolation.test_tripoints_input_rescalec                 C   sŠ   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}d}tjt	|d��$ t
j||dd�|ƒ W d   ƒ n1 s|0    Y  d S ©	NrK   r   r   r+   zORescaling is not supported when passing a Delaunay triangulation as ``points``.)ÚmatchTrN   )r   r   r   r   r   r-   r.   Úpytestr   Ú
ValueErrorr    r!   ©r#   r$   r%   r0   rX   r   r   r   Útest_tri_input_rescale‘   s    
ÿ
z0TestLinearNDInterpolation.test_tri_input_rescalec                 C   sl   t j d¡ t j dd¡}t j d¡dt j d¡  }t ||¡}t t |¡¡}t	|ddƒ|ddƒƒ d S ©NéÒ  é   r7   y              ð?r   )
r   ÚrandomÚseedÚrandr    r!   ÚpickleÚloadsÚdumpsr   ©r#   r$   r%   r@   Zip2r   r   r   Útest_picklež   s    z%TestLinearNDInterpolation.test_pickleN)Ú__name__Ú
__module__Ú__qualname__r'   r)   r,   r1   rJ   rP   rS   rV   r\   rg   r   r   r   r   r      s   		
-	r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestEstimateGradients2DGlobalc           	      C   sÐ   t jg d¢td�}t |¡}dd„ dfdd„ dfdd„ d	fd
d„ dfg}t|ƒD ]z\}\}}||d d …df |d d …df ƒ}tj||dd�}t|j	dƒ t
|t  |¡d d d …f d|  ddd| d� qPd S )N)r   )r   r7   r4   )r(   r7   ©r   g      è?©g333333ã?gš™™™™™é?r   c                 S   s   d|  d S ©Nr   r(   r   ©r$   r%   r   r   r   Ú<lambda>³   ó    z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>r   c                 S   s   d|  S ©Nr   r   ro   r   r   r   rp   ´   rq   r4   c                 S   s   d| S ©Néþÿÿÿr   ro   r   r   r   rp   µ   rq   r2   c                 S   s   dd|   d|  S ©Nr6   çÍÌÌÌÌL,@r   ro   r   r   r   rp   ¶   rq   )r6   rv   r   r(   ç�íµ ÷Æ°>)Útol)é   r7   gñhãˆµøä>zitem %d)ÚrtolÚatolÚerr_msg)r   r   Úfloatr-   r.   Ú	enumerater    Úestimate_gradients_2d_globalr   r   r   )	r#   r$   r0   ÚfuncsÚjÚfuncÚgradr=   Zdzr   r   r   r'   «   s     
ÿ




ü" 
ÿz,TestEstimateGradients2DGlobal.test_smoketestc                 C   sr   t  tdƒ¡}t j |jd ¡}t |¡}tƒ �.}| 	t
jd¡ t
j||dd� W d   ƒ n1 sd0    Y  d S )Nzestimate_gradients_hang.npyr   z$Gradient estimation did not converger(   )Úmaxiter)r   Úloadr   r`   rb   r   r-   r.   r   Úfilterr    ZGradientEstimationWarningr   )r#   rE   r?   r0   Úsupr   r   r   Útest_regression_2359Á   s    
ÿz2TestEstimateGradients2DGlobal.test_regression_2359N)rh   ri   rj   r'   rˆ   r   r   r   r   rk   ª   s   rk   c                   @   s^   e Zd Zd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 )ÚTestCloughTocher2DInterpolatorNrw   Fc                 K   sX  t j d¡ |d u r&t jg d¢td�}|s\tj|||d d …df |d d …df ƒd|d�}nLtj|d d …df |d d …df f||d d …df |d d …df ƒd|d�}t j dd	¡}|sÄ||ƒ}	n"||d d …df |d d …df ƒ}	||d d …df |d d …df ƒ}
zt|	|
fi |¤Ž W n4 t	�yR   t
d
t|	|
 ƒƒ t
d|jƒ ‚ Y n0 d S )Nr^   )r   r2   r4   r3   rl   rm   )r   gš™™™™™É?r   r   r(   rw   )rx   rO   é2   r7   z_check_accuracy: abs(a-b):zip.grad:)r   r`   ra   r   r}   r    ÚCloughTocher2DInterpolatorrb   r   ÚAssertionErrorÚprintÚabsrƒ   )r#   r‚   r$   rx   Ú	alternaterO   Úkwr@   ÚpÚaÚbr   r   r   Ú_check_accuracyÑ   s0    
ý&ÿ" þ
""z.TestCloughTocher2DInterpolator._check_accuracyc              
   C   sš   dd„ dd„ dd„ dd„ g}t |ƒD ]p\}}| j|dddd| d	� | j|dddd
d| d� | j|dddd| d
d� | j|dddd
d
d| d� q$d S )Nc                 S   s   d|  d S rn   r   ro   r   r   r   rp   ô   rq   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>c                 S   s   d|  S rr   r   ro   r   r   r   rp   õ   rq   c                 S   s   d| S rs   r   ro   r   r   r   rp   ö   rq   c                 S   s   dd|   d|  S ru   r   ro   r   r   r   rp   ÷   rq   g‚vIhÂ%<=gH¯¼šò×z>úFunction %d©rx   r{   rz   r|   TzFunction (alternate) %d)rx   r{   rz   r�   r|   zFunction (rescaled) %d©rx   r{   rz   r|   rO   z!Function (alternate, rescaled) %d)rx   r{   rz   r�   rO   r|   ©r~   r”   ©r#   r€   r�   r‚   r   r   r   Útest_linear_smoketestñ   s(    üÿþÿþz4TestCloughTocher2DInterpolator.test_linear_smoketestc              	   C   sd   dd„ dd„ dd„ dd„ g}t |ƒD ]:\}}| j|dddd	| d
� | j|dddd	| dd� q$d S )Nc                 S   s   | d S ©Nr7   r   ro   r   r   r   rp   
  rq   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>c                 S   s   |d S r›   r   ro   r   r   r   rp     rq   c                 S   s   | d |d  S r›   r   ro   r   r   r   rp     rq   c                 S   s   | | S ©Nr   ro   r   r   r   rp     rq   ç•Ö&è.>g)\�Âõ(Ì?r   r•   r–   Tr—   r˜   r™   r   r   r   Útest_quadratic_smoketest  s    üÿÿz7TestCloughTocher2DInterpolator.test_quadratic_smoketestc                 C   s^   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}t ||¡|ƒ}t	||ƒ d S r*   )
r   r   r   r   r   r-   r.   r    r‹   r   r/   r   r   r   r1     s    
ÿ
z-TestCloughTocher2DInterpolator.test_tri_inputc                 C   sŠ   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}d}tjt	|d��$ t
j||dd�|ƒ W d   ƒ n1 s|0    Y  d S rW   )r   r   r   r   r   r-   r.   rY   r   rZ   r    r‹   r[   r   r   r   r\   !  s    
ÿ
z5TestCloughTocher2DInterpolator.test_tri_input_rescalec                 C   sv   t jg d¢t jd�}t j|jd t jd�}|d|  }t |¡}t |j	|¡|ƒ}tj|j	|dd�|ƒ}t
||ƒ d S rT   )r   r   r   r   r   r-   r.   r    r‹   rE   r   rU   r   r   r   rV   .  s    
ÿ
z;TestCloughTocher2DInterpolator.test_tripoints_input_rescalec              
   C   s    dd„ dd„ dd„ dd„ dd„ g}t j d¡ t jt jg d¢td	�t j d
d¡f }t|ƒD ]>\}}| j||dddd| d� | j||dddd| dd� q\d S )Nc                 S   s   | d S r›   r   ro   r   r   r   rp   =  rq   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>c                 S   s   |d S r›   r   ro   r   r   r   rp   >  rq   c                 S   s   | d |d  S r›   r   ro   r   r   r   rp   ?  rq   c                 S   s   | | S rœ   r   ro   r   r   r   rp   @  rq   c                 S   s(   t  dt j |  ¡t  dt j | ¡ S r›   )r   ÚcosÚpiÚsinro   r   r   r   rp   A  rq   iá  )r   r2   r4   r3   r   i„  r7   r�   g{®Gázt?g{®Gáz„?r•   )r$   rx   r{   rz   r|   T)r$   rx   r{   rz   r|   rO   )	r   r`   ra   Zr_r   r}   rb   r~   r”   )r#   r€   Úgridr�   r‚   r   r   r   Ú
test_dense:  s"    ûÿÿÿz)TestCloughTocher2DInterpolator.test_densec                 C   s.   t j dd¡}t j d¡}tttj||ƒ d S )Nr_   r6   )r   r`   ÚrandnÚassert_raisesrZ   r    r‹   )r#   r$   r%   r   r   r   Útest_wrong_ndimN  s    z.TestCloughTocher2DInterpolator.test_wrong_ndimc                 C   sl   t j d¡ t j dd¡}t j d¡dt j d¡  }t ||¡}t t |¡¡}t	|ddƒ|ddƒƒ d S r]   )
r   r`   ra   rb   r    r‹   rc   rd   re   r   rf   r   r   r   rg   S  s    z*TestCloughTocher2DInterpolator.test_picklec                 C   sV  t  dddt  d¡d fg¡}t  g d¢¡}t ||¡}d|jd< d	}t  dt  |¡ dt  |¡ g¡}t  dt  t jd | ¡ dt  t jd | ¡ g¡}||ƒ}||ƒ}t	||ƒ t j
 d
¡ t j
 dd¡}	t j
 d¡}
|	 |j¡j|
d d d …f  }|	 |¡|
 }|	 |¡|
 }t ||¡}d|jd< ||ƒ}||ƒ}t	||ƒ t	||ƒ d S )Nr   r4   r   r6   r7   )r(   r   r   r   .r   r(   )r   r   Úsqrtr    r‹   rƒ   rŸ   r¡   r    r   r`   ra   r¤   ÚdotrC   )r#   rE   r?   r@   ÚalphaÚp1Zp2Zv1Zv2ÚAr“   Zw1Zw2r   r   r   Útest_boundary_tri_symmetry^  s,    
"6


z9TestCloughTocher2DInterpolator.test_boundary_tri_symmetry)Nrw   FF)rh   ri   rj   r”   rš   rž   r1   r\   rV   r£   r¦   rg   r¬   r   r   r   r   r‰   Ï   s     ÿ
 r‰   )r   Únumpyr   Znumpy.testingr   r   r   r   rY   r   r¥   Zscipy.interpolate.interpndZinterpolater    Zscipy.spatial._qhullZspatialZ_qhullr-   rc   r   r   rk   r‰   r   r   r   r   Ú<module>   s    %