o
    ?Hh+                     @   s   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ ejde
eegZejddZejd	d
ZG dd dZG dd dZG dd dZdS )    N)xp_assert_equalxp_assert_close)raises)griddataNearestNDInterpolatorLinearNDInterpolatorCloughTocher2DInterpolator)_run_concurrent_barrierinterpolatormethod)nearestlinearcubicrescale)TFc                   @   s   e Zd Zdd Zeedd Zeedd Zeedd Zeed	d
 Z	edd Z
dd Zedd Zedd Zedd ZdS )TestGriddatac                 C   sZ   g d}g d}t ||g ddd}t|g d t ||g d}t|tjtjdg d S )N)r   r   r      r   r   )r         )r   r   )r   r   r   )
fill_value)g      r   r   r   )r   r   npnan)selfxyyi r    g/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/scipy/interpolate/tests/test_ndgriddata.pytest_fill_value   s   zTestGriddata.test_fill_valuec                 C   s   t jg dt jd}t j|jd t jdd d d f t ddgd d d f  }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 d S Nr   )      r%   )r%         ?)r&   r&   )g      ?g333333?dtyper   r   r   r   +=atolerr_msgr   arrayfloat64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g dt jd}t j|jd t jdd d d f t ddgd d d f  }t||f}t|||||d}t||d|d d S r#   r.   r4   r    r    r!   test_multivalue_2d4   s   
 zTestGriddata.test_multivalue_2dc                 C   s   t jg dt jd}t j|jd t jd}|d d d d d f t g dd d d d f  }t||f}t|||||d}|jdksFJ |t|t |d d d f dd|d	 d S )
Nr$   r'   r   r   r   r   r)      r   r   r   r*   r+   	r   r/   r0   r1   r2   r3   r   r   tiler   r   r   r   r   xir5   r   r    r    r!   test_multipoint_2d@   s   
2
zTestGriddata.test_multipoint_2dc                 C   s   t jg dt jd}t j|jd t jd}|d|d d d   }|d d d d d f t g dd d d d f  }t||f}t|||||d}|jdksOJ t|t |d d d f d	d
|d d S )Nr$   r'   r                  @r   r8   r)   r9   r;   r*   r+   r<   r>   r    r    r!   test_complex_2dP   s   
2
zTestGriddata.test_complex_2dc                 C      t g d}t g d}tt||||d||dd tt|dd|||d||dd tt|f||f|d||dd d S )Nr         @r         @r:      r   r   r   g333333@r   r   r   r*   r-   r,   rG   r   r   r/   r   r   reshaper   r   r   r   r    r    r!   test_1da      
zTestGriddata.test_1dc                 C   s   t g d}t g d}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 )NrD   rH   ?g      @      ?r   rI   r*   rJ   rG   r   rK   )r   r   r   r?   	yi_shouldr   r    r    r!   test_1d_bordersm   s4   

zTestGriddata.test_1d_bordersc                 C   rC   )N)rE   r   rF   r:   rG   r   rH   rI   g|=rJ   rG   r   rK   rM   r    r    r!   test_1d_unsorted   rO   zTestGriddata.test_1d_unsortedc                 C   s   t jg dt jd}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 dd	g |d
}	t||||dd}
t	|	|
|dd d S )N)r   )r   d   )
   rU   )rV   r   )r   r:   r'   )r   r   r   r   )皙?g?)rQ          @g      g      @g      "@r   rV      rU   g      Y@rI   Tr)   g-q=rJ   )
r   r/   r0   broadcast_arrayslinspaceravelTcopyr   r   )r   r   pointspoints_rescaledvaluesxxyyr?   r5   zizi_rescaledr    r    r!   test_square_rescale_manual   s*   


z'TestGriddata.test_square_rescale_manualc           	      C   s   t jg dt jd}t j|jd t jd}|d|d d d   }t ddg}t||||d}t|||d d d f |d}t|||d t dg}t g d	}ttt||||d ttt||||d d S )
Nr$   r'   r   rA   r   r&   rI   )r-   )r&   r&   r&   )	r   r/   r0   r1   r2   r   r   assert_raises
ValueError)	r   r   r   r   r?   p1p2xi1xi3r    r    r!   
test_xi_1d   s"   

zTestGriddata.test_xi_1dN)__name__
__module____qualname__r"   parametrize_methodsparametrize_rescaler6   r7   r@   rB   rN   rS   rT   rf   rm   r    r    r    r!   r      s.    




r   c                   @   s<   e Zd Zdd Zdd Zdd Zdd Zejj	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)balanced_treecompact_nodes)tree_optionsr*   )r,   )r   r1   rL   r   r   )r   nptsndr   r   nndioptsnndi_or    r    r!   test_nearest_options   s   


z.TestNearestNDInterpolator.test_nearest_optionsc                 C   s   t g dg dg d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 )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   rW   rP           rX   )r   r/   r   r   list)r   ry   dNIr    r    r!   test_nearest_list_argument   s   
 z4TestNearestNDInterpolator.test_nearest_list_argumentc                 C   s   t g dg dg dg}d}d| d| gd| d| gf}t|d |d f|d }t |d |d  d }t|||d	t jt jg t |d |d  d }t j}t||||d
ddg t |d |d  d }t|||d	ddg d S )N)r   r&   r   r   )r   r   r&   r   r   r   r   r   rW   r   r   r   gHz>)distance_upper_bound)r   pr~   rX   )r   r/   r   sqrtr   r   inf)r   ry   deltaquery_pointsr   r   r   r    r    r!   test_nearest_query_options   s,   
 

z4TestNearestNDInterpolator.test_nearest_query_optionsc                 C   st   t g dg dg dg}t|d |d f|d }tt |ddgdd	 W d    d S 1 s3w   Y  d S )
N)r   r   r   r   )r   r   r   r   r   r   r   r   r&   znot a dictionary)query_options)r   r/   r   rg   	TypeError)r   ry   r   r    r    r!   test_nearest_query_valid_inputs   s   

"z9TestNearestNDInterpolator.test_nearest_query_valid_inputsc                    sP   d\}}t || ||f t |}t |} fdd}td|| d S )N)2   r   c                    s   |  d S )Nr    )_splr   r    r!   	worker_fn   s   z=TestNearestNDInterpolator.test_concurrency.<locals>.worker_fnrV   )r   r1   rL   r   r	   )r   rx   ry   r   rz   r   r    r   r!   test_concurrency   s   

z*TestNearestNDInterpolator.test_concurrencyN)rn   ro   rp   r}   r   r   r   pytestmarkthread_unsafer   r    r    r    r!   rs      s    rs   c                   @   s$   e Zd Zedd Zedd ZdS )TestNDInterpolatorsc                 C   s  t jd}|d}|d}t ||}t t|t|}t t|t|}t ||\}}t |	 |	 fj
}|tt|||}	|	|}
|	||f}|	|df}|	||}|	|d}|
j|j  kr||j  kr||j  kr||jksJ  J d S )Nr   rV   r~   )r   randomRandomStatehypotr[   minmaxmeshgridvstackr\   r]   r   zipsize)r   r
   rngr   r   zXYXYinterpinterp_points0interp_points1interp_points2interp_points3interp_points4r    r    r!   test_broadcastable_input  s.   



z,TestNDInterpolators.test_broadcastable_inputc           	      C   s   t jd}|d}|d d df |d d df }}t ||}|d}|jdd |jdd |jdd |||}|| d S )Nr   )rV   r   r   )r   r   F)write)r   r   r   r   setflags)	r   r
   r   xyr   r   r   r   r   r    r    r!   test_read_only$  s   
"

z"TestNDInterpolators.test_read_onlyN)rn   ro   rp   parametrize_interpolatorsr   r   r    r    r    r!   r     s
    
r   )numpyr   scipy._lib._array_apir   r   r   r   rg   scipy.interpolater   r   r   r   scipy._lib._testutilsr	   r   parametrizer   rq   rr   r   rs   r   r    r    r    r!   <module>   s.     L