a
    Re;5                     @   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   Y/var/www/sunrise/env/lib/python3.9/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double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 Nr   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   gh㈵>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   gvIh%<=gHz>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   @  rq   i  )r   r2   r4   r3   r   i  r7   r   g{Gzt?g{Gz?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   Zgridr   r   r   r   r   
test_dense9  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_ndimM  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   R  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p1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    %