U
    »mœd“  ã                   @   sì   d Z ddlZddlmZmZmZ ddlmZmZm	Z	m
Z
mZmZ ddlm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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 )-z Test functions for rbf module é    N)Úassert_Úassert_array_almost_equalÚassert_almost_equal)ÚlinspaceÚsinÚcosÚrandomÚexpÚallclose)ÚRbf©Zmultiquadriczinverse multiquadricZgaussianZcubicZquinticz
thin-plateZlinearc                 C   sR   t dddƒ}t|ƒ}t||| d�}||ƒ}t||ƒ t|t|d ƒƒ|d ƒ d S )Nr   é
   é	   ©Úfunction)r   r   r   r   r   Úfloat)r   ÚxÚyÚrbfÚyi© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/interpolate/tests/test_rbf.pyÚcheck_rbf1d_interpolation   s    
r   c                 C   sx   t  dd¡d d }t  dd¡d d }|t|d  d|d   ƒ }t|||d| d�}|||ƒ}|j|_t||ƒ d S )Né2   é   é   é   ù              ð?©Úepsilonr   ©r   Úrandr	   r   Úshaper   )r   r   r   Úzr   Úzir   r   r   Úcheck_rbf2d_interpolation   s    
r%   c                 C   sŒ   t  dd¡d d }t  dd¡d d }t  dd¡d d }|t|d  |d  ƒ }t||||d| d�}||||ƒ}|j|_t||ƒ d S )Nr   r   r   r   r   r    )r   r   r   r#   Údr   Údir   r   r   Úcheck_rbf3d_interpolation#   s    r(   c                  C   s&   t D ]} t| ƒ t| ƒ t| ƒ qd S ©N)Ú	FUNCTIONSr   r%   r(   r   r   r   r   Útest_rbf_interpolation/   s    r+   c                 C   sl   t dddƒ}t|ƒ}t|ƒ}t ||g¡j}t||| dd�}||ƒ}t||ƒ t|t	|d ƒƒ|d ƒ d S )Nr   r   r   úN-D©r   Úmode)
r   r   r   ÚnpÚvstackÚTr   r   r   r   )r   r   Úy0Úy1r   r   r   r   r   r   Úcheck_2drbf1d_interpolation6   s    
r4   c                 C   s¤   t  d¡d d }t  d¡d d }|t|d  d|d   ƒ }|t|d  d|d   ƒ }t ||g¡j}t|||d| dd�}|||ƒ}|j|_t||ƒ d S )Nr   r   r   r   r,   ©r   r   r.   ©	r   r!   r	   r/   r0   r1   r   r"   r   )r   r   r   Zz0Zz1r#   r   r$   r   r   r   Úcheck_2drbf2d_interpolationB   s    
r7   c           	   	   C   s²   t  d¡d d }t  d¡d d }t  d¡d d }|t|d  |d  ƒ }|t|d  |d  ƒ }t ||g¡j}t||||d| dd�}||||ƒ}|j|_t||ƒ d S )Nr   r   r   r,   r5   r6   )	r   r   r   r#   Zd0Zd1r&   r   r'   r   r   r   Úcheck_2drbf3d_interpolationO   s    r8   c                  C   s&   t D ]} t| ƒ t| ƒ t| ƒ qd S r)   )r*   r4   r7   r8   r   r   r   r   Útest_2drbf_interpolation]   s    r9   c                 C   sj   t dddƒ}t|ƒ}t||| d�}t dddƒ}||ƒ}dt|t|ƒ ƒ ¡  }tt|t|ƒ|d�|ƒ d S )Nr   r   r   r   éd   úabs-diff: %f©Úatol)r   r   r   ÚabsÚmaxr   r
   )r   r=   r   r   r   Úxir   Úmsgr   r   r   Úcheck_rbf1d_regularityd   s    rB   c                  C   s4   ddddddddœ} t D ]}t||  |d¡ƒ qd S ©Ngš™™™™™¹?g333333Ã?gš™™™™™É?r   g{®Gáz„?)r*   rB   Úget©Z
tolerancesr   r   r   r   Útest_rbf_regularityp   s    ù	rF   c           
      C   s¤   t dddƒ}t|ƒ}t|ƒ}t ||g¡j}t||| dd�}t dddƒ}||ƒ}dt|t t|ƒt|ƒg¡j ƒ ¡  }	t	t
|t t|ƒt|ƒg¡j|d�|	ƒ d S )	Nr   r   r   r,   r-   r:   r;   r<   )r   r   r   r/   r0   r1   r   r>   r?   r   r
   )
r   r=   r   r2   r3   r   r   r@   r   rA   r   r   r   Úcheck_2drbf1d_regularity~   s    (rG   c                  C   s4   ddddddddœ} t D ]}t||  |d¡ƒ qd S rC   )r*   rG   rD   rE   r   r   r   Útest_2drbf_regularityŒ   s    ù	rH   c                 C   s†   t j d¡ t  ddd¡}|dt j t|ƒ¡  }t||| d�}t  ddd¡}||ƒ}tt  || ¡ 	¡ t  || ¡ 	¡  dk ƒ d S )	NiÒ  r   r   r   g      @r   iè  gš™™™™™ñ?)
r/   r   Úseedr   ZrandnÚlenr   r   r>   r?   )r   r   r#   r   r@   r   r   r   r   Úcheck_rbf1d_stabilityš   s    rK   c                  C   s   t D ]} t| ƒ qd S r)   )r*   rK   r   r   r   r   Útest_rbf_stabilityª   s    rL   c                  C   s4   t dddƒ} t| ƒ}t| |ƒ}|| ƒ}t||ƒ d S )Nr   r   r   ©r   r   r   r   )r   r   r   r   r   r   r   Útest_default_construction¯   s
    
rN   c                  C   s@   t dddƒ} t| ƒ}dd„ }t| ||d�}|| ƒ}t||ƒ d S )Nr   r   r   c                 S   s   | S r)   r   )r   r   r   r   Ú<lambda>½   ó    z+test_function_is_callable.<locals>.<lambda>r   rM   )r   r   Zlinfuncr   r   r   r   r   Útest_function_is_callable¹   s    rQ   c                  C   s@   dd„ } t dddƒ}t|ƒ}t||| d�}||ƒ}t||ƒ d S )Nc                 S   s
   | j | S r)   ©r   )ÚselfÚrr   r   r   Ú_funcÆ   s    z0test_two_arg_function_is_callable.<locals>._funcr   r   r   r   rM   )rU   r   r   r   r   r   r   r   Ú!test_two_arg_function_is_callableÃ   s    rV   c                  C   s&   t dddƒ} t| ƒ}t| |d d� d S )Nr   r   r   rR   )r   r   r   )r   r   r   r   r   Útest_rbf_epsilon_noneÐ   s    rW   c                  C   s@   dddg} dddg}dddg}t | ||d d�}t|jd	kƒ d S )
Nr   r   é   r   é   é   é   rR   r   )r   r   r   )r   r   r#   r   r   r   r   Útest_rbf_epsilon_none_collinearÖ   s
    


r\   )#Ú__doc__Únumpyr/   Znumpy.testingr   r   r   r   r   r   r   r	   r
   Zscipy.interpolate._rbfr   r*   r   r%   r(   r+   r4   r7   r8   r9   rB   rF   rG   rH   rK   rL   rN   rQ   rV   rW   r\   r   r   r   r   Ú<module>   s0    


