o
    i;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   t/var/www/html/eduruby.in/lip-sync/lip-sync-env/lib/python3.10/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   ^   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      

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#   pointsrB   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   )rN   )rN      )rO   rO   )g      @r8   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   )
   rS   )rT   r   r   r7   r   rT   rC   rS   TrP   rD   )r#   rG   rA   rH   rI   rJ   rK   Zzi_rescaledr   r   r   test_square_rescaler   s   z-TestLinearNDInterpolation.test_square_rescalec                 C   v   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 NrM   r   r   r+   TrP   )r   r   r   r   r   r.   r/   r    r!   rG   r   r#   r$   r%   r1   r&   Z
yi_rescaler   r   r   test_tripoints_input_rescale   s   


z6TestLinearNDInterpolation.test_tripoints_input_rescalec                 C      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    d S 1 s?w   Y  d S 	NrM   r   r   r+   zORescaling is not supported when passing a Delaunay triangulation as ``points``.)matchTrP   )r   r   r   r   r   r.   r/   pytestr   
ValueErrorr    r!   r#   r$   r%   r1   r\   r   r   r   test_tri_input_rescale      

"z0TestLinearNDInterpolation.test_tri_input_rescalec                 C   l   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     r9   y              ?r   )
r   randomseedrandr    r!   pickleloadsdumpsr   r#   r$   r%   rB   Zip2r   r   r   test_pickle      z%TestLinearNDInterpolation.test_pickleN)__name__
__module____qualname__r'   r)   r,   r2   rL   rR   rU   rY   r`   rm   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 ]=\}\}}||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 q(d S )N)r   )r   r9   r6   )r(   r9   r   g      ?g333333?g?r   c                 S      d|  d S Nr   r(   r   r$   r%   r   r   r   <lambda>       z>TestEstimateGradients2DGlobal.test_smoketest.<locals>.<lambda>r   c                 S      d|  S Nr   r   rw   r   r   r   rx          r6   c                 S      d| S Nr   rw   r   r   r   rx      r|   r4   c                 S      dd|   d|  S Nr8   L,@r   rw   r   r   r   rx          )r8   r   r   r(   ư>)tol)   r9   gh㈵>zitem %d)rtolatolerr_msg)r   r   floatr.   r/   	enumerater    estimate_gradients_2d_globalr   r   r   )	r#   r$   r1   funcsjfuncgradr?   Zdzr   r   r   r'      s"   





" 
z,TestEstimateGradients2DGlobal.test_smoketestc                 C   st   t td}t j|jd }t|}t }|	t
jd t
j||dd W d    d S 1 s3w   Y  d S )Nzestimate_gradients_hang.npyr   z$Gradient estimation did not converger(   )maxiter)r   loadr   rf   rh   r   r.   r/   r   filterr    ZGradientEstimationWarningr   )r#   rG   rA   r1   supr   r   r   test_regression_2359   s   
"z2TestEstimateGradients2DGlobal.test_regression_2359N)ro   rp   rq   r'   r   r   r   r   r   rr      s    rr   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 )TestCloughTocher2DInterpolatorNr   Fc                 K   sP  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}n&tj|d d df |d d df f||d d df |d d df d|d}t jdd	}|sb||}	n||d d df |d d df }	||d d df |d d df }
zt|	|
fi | W d S  t	y   t
d
t|	|
  t
d|j  w )Nrd   )r   r4   r6   r5   rs   rt   )r   g?r   r   r(   r   )r   rQ   2   r9   z_check_accuracy: abs(a-b):zip.grad:)r   rf   rg   r   r   r    CloughTocher2DInterpolatorrh   r   AssertionErrorprintabsr   )r#   r   r$   r   	alternaterQ   kwrB   pabr   r   r   _check_accuracy   s2   
&" 
""z.TestCloughTocher2DInterpolator._check_accuracyc              
   C   s   dd dd dd dd g}t |D ]8\}}| 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   ru   rv   r   rw   r   r   r   rx      ry   zFTestCloughTocher2DInterpolator.test_linear_smoketest.<locals>.<lambda>c                 S   rz   r{   r   rw   r   r   r   rx      r|   c                 S   r}   r~   r   rw   r   r   r   rx      r|   c                 S   r   r   r   rw   r   r   r   rx      r   gvIh%<=gHz>Function %dr   r   r   r   TzFunction (alternate) %d)r   r   r   r   r   zFunction (rescaled) %dr   r   r   r   rQ   z!Function (alternate, rescaled) %d)r   r   r   r   rQ   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      | d S Nr9   r   rw   r   r   r   rx   	  r|   zITestCloughTocher2DInterpolator.test_quadratic_smoketest.<locals>.<lambda>c                 S      |d S r   r   rw   r   r   r   rx   
  r|   c                 S      | d |d  S r   r   rw   r   r   r   rx         c                 S      | | S Nr   rw   r   r   r   rx     r|   &.>g)\(?r   r   r   Tr   r   r   r   r   r   test_quadratic_smoketest  s   z7TestCloughTocher2DInterpolator.test_quadratic_smoketestc                 C   r-   r*   )
r   r   r   r   r   r.   r/   r    r   r   r0   r   r   r   r2     r3   z-TestCloughTocher2DInterpolator.test_tri_inputc                 C   rZ   r[   )r   r   r   r   r   r.   r/   r]   r   r^   r    r   r_   r   r   r   r`      ra   z5TestCloughTocher2DInterpolator.test_tri_input_rescalec                 C   rV   rW   )r   r   r   r   r   r.   r/   r    r   rG   r   rX   r   r   r   rY   -  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   r   r   r   rw   r   r   r   rx   <  r|   z;TestCloughTocher2DInterpolator.test_dense.<locals>.<lambda>c                 S   r   r   r   rw   r   r   r   rx   =  r|   c                 S   r   r   r   rw   r   r   r   rx   >  r   c                 S   r   r   r   rw   r   r   r   rx   ?  r|   c                 S   s(   t dt j |  t dt j |  S r   )r   cospisinrw   r   r   r   rx   @  s   ( i  )r   r4   r6   r5   r   i  r9   r   g{Gzt?g{Gz?r   )r$   r   r   r   r   T)r$   r   r   r   r   rQ   )	r   rf   rg   Zr_r   r   rh   r   r   )r#   r   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 )Nre   r8   )r   rf   randnassert_raisesr^   r    r   )r#   r$   r%   r   r   r   test_wrong_ndimM  s   z.TestCloughTocher2DInterpolator.test_wrong_ndimc                 C   rb   rc   )
r   rf   rg   rh   r    r   ri   rj   rk   r   rl   r   r   r   rm   R  rn   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   r6   r   r8   r9   )r(   r   r   r   .r   r(   )r   r   sqrtr    r   r   r   r   r   r   rf   rg   r   dotrE   )r#   rG   rA   rB   alphap1p2Zv1Zv2Ar   Zw1Zw2r   r   r   test_boundary_tri_symmetry]  s,   
"6


z9TestCloughTocher2DInterpolator.test_boundary_tri_symmetry)Nr   FF)ro   rp   rq   r   r   r   r2   r`   rY   r   r   rm   r   r   r   r   r   r      s    
r   )r   numpyr   Znumpy.testingr   r   r   r   r]   r   r   Zscipy.interpolate.interpndZinterpolater    Zscipy.spatial._qhullZspatialZ_qhullr.   ri   r   r   rr   r   r   r   r   r   <module>   s     %