
    e!hm                     
   d Z ddlZddlmZmZ ddlmZmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlZdZd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#ejH                  jJ                  d        Z&y)z Test functions for rbf module     N)assert_array_almost_equalassert_almost_equal)linspacesincosexpallclose)Rbf)_run_concurrent_barriermultiquadriczinverse multiquadricgaussiancubicquinticz
thin-platelinearc                     t        ddd      }t        |      }t        |||       } ||      }t        ||       t	         |t        |d               |d   d       y )Nr   
   	   functionF)check_0d)r   r   r
   r   r   float)r   xyrbfyis        h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_rbf.pycheck_rbf1d_interpolationr      sW    2aAAA
aX
&C	QBa$E!A$K(!A$?    c                 D   t         j                  j                  d      }|j                  dd      dz  dz
  }|j                  dd      dz  dz
  }|t	        |dz   d|dz  z  z
        z  }t        |||d|       } |||      }|j                  |_        t        ||       y )N  2                          ?epsilonr   nprandomRandomStaterandr   r
   shaper   )r   rngr   r   zr   zis          r   check_rbf2d_interpolationr2      s    
))


%CAqAAqA	#q!teBq!tGm
A
aAq8
4C	QBwwBHa$r   c                 r   t         j                  j                  d      }|j                  dd      dz  dz
  }|j                  dd      dz  dz
  }|j                  dd      dz  dz
  }|t	        |dz   |dz  z
        z  }t        ||||d|       } ||||      }|j                  |_        t        ||       y )Nr!   r"   r#   r$   r%   r'   r)   )r   r/   r   r   r0   dr   dis           r   check_rbf3d_interpolationr6   )   s    
))


%CQAAQAAQAA	#q!teadl
A
aAq!h
7C	Q1BwwBHb!$r   c                  \    t         D ]#  } t        |        t        |        t        |        % y N)	FUNCTIONSr   r2   r6   r   s    r   test_rbf_interpolationr:   6   s)     ,!(+!(+!(+,r   c                    t        ddd      }t        |      }t        |      }t        j                  ||g      j
                  }t        ||| d      } ||      }t        ||       t         |t        |d               |d          y )Nr   r   r   N-Dr   mode)
r   r   r   r*   vstackTr
   r   r   r   )r   r   y0y1r   r   r   s          r   check_2drbf1d_interpolationrC   =   sx    BA	QB	QB
		2r(A
aXE
2C	QBa$E!A$K(!A$/r   c                    t         j                  j                  d      }|j                  d      dz  dz
  }|j                  d      dz  dz
  }|t	        |dz   d|dz  z  z
        z  }|t	        |dz   d|dz  z  z
        z  }t        j
                  ||g      j                  }t        |||d| d      } |||      }|j                  |_        t        ||       y )Nr!   r"   r$   r%   r&   r<   r(   r   r>   
r*   r+   r,   r-   r   r?   r@   r
   r.   r   )	r   r/   r   r   z0z1r0   r   r1   s	            r   check_2drbf2d_interpolationrI   I   s    
))


%CQAQA	
S!q&2Q;&'	'B	
S!q&2Q;&'	'B
		2r(A
aAq8%
@C	QBwwBHa$r   c           	         t         j                  j                  d      }|j                  d      dz  dz
  }|j                  d      dz  dz
  }|j                  d      dz  dz
  }|t	        |dz   |dz  z
        z  }|t	        |dz   |dz  z
        z  }t        j
                  ||g      j                  }t        ||||d| d      } ||||      }	|j                  |	_        t        |	|       y )Nr!   r"   r$   r%   r<   rE   rF   )
r   r/   r   r   r0   d0d1r4   r   r5   s
             r   check_2drbf3d_interpolationrM   W   s    
))


%CQAQAQA	
S!q&16!"	"B	
S!q&16!"	"B
		2r(A
aAq!hU
CC	Q1BwwBHb!$r   c                  \    t         D ]#  } t        |        t        |        t        |        % y r8   )r9   rC   rI   rM   r   s    r   test_2drbf_interpolationrO   f   s)     .#H-#H-#H-.r   c                    t        ddd      }t        |      }t        |||       }t        ddd      } ||      }dt        |t        |      z
        j	                         d}t        |t        |      |      sJ |       y )	Nr   r   r   r   d   
abs-diff: fatol)r   r   r
   absmaxr	   )r   rU   r   r   r   xir   msgs           r   check_rbf1d_regularityrZ   m   s     	BAAA
aX
&C	!R	B	RBs2B<(,,.q1
2CBBd+0S0+r   c                  f    dddddddd} t         D ]  }t        || j                  |d               y Ng?g333333?g?r   g{Gz?)r9   rZ   get
tolerancesr   s     r   test_rbf_regularityr`   y   sF     $J  Ix$)GHIr   c           
         t        ddd      }t        |      }t        |      }t        j                  ||g      j
                  }t        ||| d      }t        ddd      } ||      }dt        |t        j                  t        |      t        |      g      j
                  z
        j                         d}	t        |t        j                  t        |      t        |      g      j
                  |	      sJ |	       y )
Nr   r   r   r<   r=   rQ   rR   rS   rT   )
r   r   r   r*   r?   r@   r
   rV   rW   r	   )
r   rU   r   rA   rB   r   r   rX   r   rY   s
             r   check_2drbf1d_regularityrb      s     	BA	QB	QB
		2r(A
aXE
2C	!R	B	RBs2		3r7CG*< = ? ??@DDFqI
JCB		3r7CG"4577dCHSHCr   c                  f    dddddddd} t         D ]  }t        || j                  |d               y r\   )r9   rb   r]   r^   s     r   test_2drbf_regularityrd      sF     $J  K :>>(D+IJKr   c                    t         j                  j                  d      }t        j                  ddd      }|d|j	                  t        |            z  z   }t        |||       }t        j                  ddd      } ||      }t        j                  ||z
        j                         t        j                  ||z
        j                         z  dk  sJ y )	Nr!   r   r   r"   g      @r   i  g?)	r*   r+   r,   r   randnlenr
   rV   rW   )r   r/   r   r0   r   rX   r   s          r   check_rbf1d_stabilityrh      s    
 ))


%C
Ar2A	C#))CF###A
aX
&C	QD	!B	RB 66"R%=!!22S888r   c                  0    t         D ]  } t        |         y r8   )r9   rh   r   s    r   test_rbf_stabilityrj      s     (h'(r   c                  t    t        ddd      } t        |       }t        | |      } ||       }t        ||       y )Nr   r   r   r   r   r
   r   )r   r   r   r   s       r   test_default_constructionrm      s9     	2aAAA
a)C	QBa$r   c                  ~    t        ddd      } t        |       }d }t        | ||      } ||       }t        ||       y )Nr   r   r   c                     | S r8    )r   s    r   linfuncz*test_function_is_callable.<locals>.linfunc   s    r   r   rl   )r   r   rq   r   r   s        r   test_function_is_callablerr      s?    2aAAA
aW
%C	QBa$r   c                  ~    d } t        ddd      }t        |      }t        |||       } ||      }t        ||       y )Nc                      | j                   |z   S r8   r(   )selfrs     r   _funcz0test_two_arg_function_is_callable.<locals>._func   s    ||ar   r   r   r   r   rl   )rx   r   r   r   r   s        r   !test_two_arg_function_is_callablery      sA      	2aAAA
aU
#C	QBa$r   c                  P    t        ddd      } t        |       }t        | |d        y )Nr   r   r   ru   )r   r   r
   )r   r   s     r   test_rbf_epsilon_noner{      s%    BAAA1dr   c                  \    g d} g d}g d}t        | ||d       }|j                  dkD  sJ y )N)r#   r%      )r$   r$   r$   )         ru   r   )r
   r(   )r   r   r0   r   s       r   test_rbf_epsilon_none_collinearr      s3     	AAA
aAt
$C;;??r   c                      t        ddd      } t        |       }t        |       }t        j                  ||g      j
                  }t        | |d      }d }t        d|||        y )Nr   r   rQ   r<   )r>   c                      ||       y r8   rp   )_interpxps      r   	worker_fnz'test_rbf_concurrency.<locals>.worker_fn   s	    r
r   )r   r   r   r*   r?   r@   r
   r   )r   rA   rB   r   r   r   s         r   test_rbf_concurrencyr      s]    BA	QB	QB
		2r(A
a
C B	32r   )'__doc__numpyr*   scipy._lib._array_apir   r   r   r   r   r   r	   scipy.interpolate._rbfr
   scipy._lib._testutilsr   pytestr9   r   r2   r6   r:   rC   rI   rM   rO   rZ   r`   rb   rd   rh   rj   rm   rr   ry   r{   r   markthread_unsafer   rp   r   r   <module>r      s    %  P 3 3 & 9 9	@	%
%,	0%%.	1IIK9 (
%%
% 
3 
3r   