
    (phJ                     >   S SK r S SKrS SKrS SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJrJrJrJr  S SKJr  S SKJr  S	 rS
 rS rS r\R4                  R7                  S\" \5      5      S 5       r " S S5      r " S S\5      r " S S\5      r  " S S\5      r!g)    N)LinAlgError)xp_assert_close)Halton)cKDTree)
_AVAILABLE_SCALE_INVARIANT_NAME_TO_MIN_DEGREE_monomial_powersRBFInterpolator)_rbfinterp_pythran)_run_concurrent_barrierc                 `    [        U R                  S   U5      n[        R                  " X5      $ )N   )r
   shaper   _polynomial_matrix)xdegreepowerss      Y/var/www/html/venv/lib/python3.13/site-packages/scipy/interpolate/tests/test_rbfinterp.py_vandermonder      s)     aggaj&1F00;;    c                     U S S 2S4   n S[         R                  " U * 5      S[         R                  " SU -  5      -  -
  S[         R                  " SU -  5      -  -   -  nU$ )Nr   g
ףp=
@      npexp)r   ys     r   _1d_test_functionr!      sT     	
!Q$AbffaRj1RVVBqD\>)AbffRTlN:;AHr   c                    U S S 2S4   U S S 2S4   p!S[         R                  " SU-  S-
  S-  * S-  SU-  S-
  S-  S-  -
  5      -  nS[         R                  " SU-  S-   S-  * S-  SU-  S-   S-  -
  5      -  nS	[         R                  " SU-  S
-
  S-  * S-  SU-  S-
  S-  S-  -
  5      -  nS[         R                  " SU-  S-
  S-  * SU-  S
-
  S-  -
  5      -  nX4-   U-   U-   nU$ )Nr   r   g      ?	      r   1   
   g      ?   r   gɿr   )r   x1x2term1term2term3term4r    s           r   _2d_test_functionr.      s    q!tWa1g266AbDFQ;,q.AbDFQ;q=899E266AbDFQ;,r/QrT!VRK788E"&&1R46A+a1R46A+a-788E266AbDFQ;,!B$q&1455E%AHr   c                 V   SnSnS H  n[        US[        R                  R                  5       S9n[	        U5       H  nSUR                  U5      -  S-
  n[
        R                  " Xp5      n[        XqS-
  5      n	[        R                  R                  U	SS	9u  pU
S S 2U	R                  S   S 24   nUR                  R                  U5      R                  U5      n [        R                  R                  U5        M     M     g
! [        R                  R                   a         gf = f)Nr&   d   )r   r$   r   r      Fscrambleseedr$   r   complete)modeT)r   r   randomRandomStateranger   _kernel_matrixr   linalgqrr   Tdotcholeskyr   )kernelmnxntestsndimseq_r   APQRQ2Bs                 r   #_is_conditionally_positive_definiterM   +   s     
BF TE		0E0E0GHvA#**R. 1$A"11!<AQA&A99<<
<3DA
 1aggajk>"B#A		""1% 	  (  99(( s   DD('D(r@   c                 \    [         R                  " U S5      S-   n[        X5      (       d   eg )Nr   )r	   getrM   )r@   rA   s     r   $test_conditionally_positive_definiterQ   J   s,    
 	+a/A.v9999r   c                      \ rS rSr\R
                  R                  S\" \5      5      S 5       r	\R
                  R                  S\" \5      5      S 5       r
\R
                  R                  S\" \5      5      S 5       rS r\R
                  R                  S 5       rS rS	 r\R
                  R                  S\" \5      5      S
 5       r\R
                  R                  S\" \5      5      S 5       r\R
                  R                  S\" \5      5      S 5       rS rS rS rS rS rS rS rS rS r\R
                  R<                  S 5       rS r S r!S r"S r#Sr$g)_TestRBFInterpolatorS   r@   c                 (   [        SS[        R                  R                  5       S9nSUR                  S5      -  n[	        U5      nSUR                  S5      -  nU R                  X4SUS9" U5      nU R                  X4SUS9" U5      n[        XgS	S
9  g )Nr   Fr2   r   2         ?epsilonr@          @:0yE>atol)r   r   r7   r8   r!   buildr   selfr@   rE   r   r    xitpyitp1yitp2s           r   test_scale_invariance_1d-_TestRBFInterpolator.test_scale_invariance_1dT   s     QRYY-B-B-DEcjjna B

1V
<TB

1V
<TB40r   c                    [        SS[        R                  R                  5       S9nUR                  S5      n[	        U5      nUR                  S5      nU R                  X4SUS9" U5      nU R                  X4SUS9" U5      n[        XgSS	9  g )
Nr$   Fr2   r0   rW   rX   rZ   r[   r\   )r   r   r7   r8   r.   r^   r   r_   s           r   test_scale_invariance_2d-_TestRBFInterpolator.test_scale_invariance_2d`   s     QRYY-B-B-DEJJsOa zz#

1V
<TB

1V
<TB40r   c                    [        SS[        R                  R                  5       S9nSnSnUR                  S5      n[	        U5      nUR                  S5      nU[
        ;   a8  U R                  XVUS9" U5      nU R                  XS-  U-   UUS9" Xs-  U-   5      n	O<U R                  XVSUS	9" U5      nU R                  XS-  U-   USU-  US	9" Xs-  U-   5      n	[        XS
S9  g )Nr$   Fr2   gd~QJgAjZKr0   r@         @rX   r[   r\   )r   r   r7   r8   r.   r   r^   r   )
r`   r@   rE   scaleshiftr   r    ra   rb   rc   s
             r   test_extreme_domains)_TestRBFInterpolator.test_extreme_domainsl   s     QRYY-B-B-DEJJsOa zz#%%JJqFJ3D9EJJ%   *u$&E
 JJqSJ@FEJJ%E	   *u$	&E 	40r   c                    [         R                  R                  S5      n[        SSUS9nSnUR                  S5      nUR                  S5      n[	        XC5      n[	        XS5      nUR                  SSUR                  S	   5      nUR                  U5      n	UR                  U5      n
U R                  XIUS
9" U5      n[        XSS9  g )Nr   r$   Fr2   r   rV           rW   r   r   r[   r\   )
r   r7   r8   r   r   normalr   r>   r^   r   )r`   rngrE   r   r   ra   rH   Pitppoly_coeffsr    rb   rc   s               r   test_polynomial_reproduction1_TestRBFInterpolator.test_polynomial_reproduction   s     ii##A&QS1JJrNzz"~#D)jjc1771:6EE+%

1
/540r   c                   ^ [         R                  R                  S5      n[        SSUS9nSnSnUR                  S5      nUR                  U5      n[	        Xd5      n[	        Xt5      n	UR                  SS	UR                  S
   5      n
UR                  U
5      nU	R                  U
5      nU R                  XkUS9nUR                  mU4S jnUR                  USU5        U" U5      n[        XSS9  g )Nr   r$   Fr2   r   i	  rV   rq   rW   r   rr   c                  2   > UR                  SS9  T" U 0 UD6$ )Nr0   )memory_budget)update)argskwargsce_reals     r   _chunk_evaluator<_TestRBFInterpolator.test_chunking.<locals>._chunk_evaluator   s!    MMM,D+F++r   r   r[   r\   )r   r7   r8   r   r   rs   r   r>   r^   r   setattrr   )r`   monkeypatchrt   rE   r   largeNr   ra   rH   ru   rv   r    rb   interpr   rc   r   s                   @r   test_chunking"_TestRBFInterpolator.test_chunking   s    
 ii##A&QS1JJrNzz&!#D)jjc1771:6EE+%A0))	, 	F$68HIt40r   c           
         [        SS[        R                  R                  5       S9nUR                  S5      nUR                  S5      n[        R                  " [        U5      [        US S 2S S S24   5      /5      R                  nU R                  X$5      " U5      nU R                  X$S S 2S4   5      " U5      nU R                  X$S S 2S4   5      " U5      n[        US S 2S4   U5        [        US S 2S4   U5        g )Nr$   Fr2   r0   rO   r   r   )	r   r   r7   r8   arrayr.   r=   r^   r   r`   rE   r   ra   r    rb   rc   yitp3s           r   test_vector_data%_TestRBFInterpolator.test_vector_data   s     QRYY-B-B-DEJJsOzz#HH'*'!TrT'
35 667a 	
 

1 &

11g&t,

11g&t,adU+adU+r   c           	         [        SS[        R                  R                  5       S9nUR                  S5      nUR                  S5      n[	        U5      S[	        US S 2S S S24   5      -  -   nU R                  X$5      " U5      nU R                  X$R                  5      " U5      nU R                  X$R                  5      " U5      n[        UR                  U5        [        UR                  U5        g )Nr$   Fr2   r0   y              ?rO   )	r   r   r7   r8   r.   r^   realimagr   r   s           r   test_complex_data&_TestRBFInterpolator.test_complex_data   s     QRYY-B-B-DEJJsOzz#a 2&7!TrT'
&C#CC

1 &

1ff%d+

1ff%d+

E*

E*r   c                 B   [        SS[        R                  R                  5       S9nSUR                  S5      -  nSUR                  S5      -  n[	        U5      n[	        U5      nU R                  X5SUS9" U5      n[        R                  " Xv-
  S-  5      nUS	:  d   eg )
Nr   Fr2   r   rV   rk   rX   r$   -C6?)r   r   r7   r8   r!   r^   mean	r`   r@   rE   r   ra   r    ytrueyitpmses	            r   test_interpolation_misfit_1d1_TestRBFInterpolator.test_interpolation_misfit_1d   s     QRYY-B-B-DEcjjnBa !$'zz!Fz;DAggt|a'(V||r   c                 6   [        SS[        R                  R                  5       S9nUR                  S5      nUR                  S5      n[	        U5      n[	        U5      nU R                  X5SUS9" U5      n[        R                  " Xv-
  S-  5      nUS:  d   eg )Nr$   Fr2   r0   rk   rX   g-C6*?)r   r   r7   r8   r.   r^   r   r   s	            r   test_interpolation_misfit_2d1_TestRBFInterpolator.test_interpolation_misfit_2d   s     QRYY-B-B-DEJJsOzz#a !$'zz!Fz;DAggt|a'(V||r   c           	         [         R                  R                  S5      n[        SSUS9nSnSnS[         R                  " SSS	5      -  nS
UR                  S5      -  n[        U5      UR                  SUS5      -   n[        U5      n	Sn
U HS  nU R                  XxSUUS9" U5      n[         R                  " [         R                  " X-
  S-  5      5      nX:  d  MQ  Sn
  O   U
(       d   eg )Nr   r   Fr2   g?g?r&      r   r0   rq   )r0   rW   )rY   	smoothingr@   r$   T)
r   r7   r8   r   linspacer!   rs   r^   sqrtr   )r`   r@   rt   rE   noisermse_tolsmoothing_ranger   r    r   rmse_within_tolr   ysmoothrmses                 r   test_smoothing_misfit*_TestRBFInterpolator.test_smoothing_misfit  s     ii##A&QS1bkk"a44cjjoa 3::c5&#AA!!$(Ijj#	 !   !	"G
 77277GOa#789D"& ) r   c                    [         R                  R                  S5      n[        SSUS9nSnUR                  S5      n[	        XC5      nUR                  SSUR                  S   5      nUR                  U5      n[         R                  " U5      nUS	==   S-  ss'   [         R                  " S
5      n	SU	S	'   U R                  XHU	S9" U5      n
[        XSS9  g )Nr   r   Fr2   r$   rV   rq   rW   r&   )rV   g     @@r   r   r\   )r   r7   r8   r   r   rs   r   r>   copyzerosr^   r   )r`   rt   rE   r   r   rH   rv   r    y_with_outlierr   r   s              r   test_array_smoothing)_TestRBFInterpolator.test_array_smoothing  s     ii##A&QS1JJrN#jjc1771:6EE+rc!HHUO		"zz!yzA!Dd+r   c                    [        SS[        R                  R                  5       S9R                  S5      n[	        U5      n[        SS[        R                  R                  5       S9R                  S5      nSn[
        R                  " [        US9   U R                  X5      " U5        S S S 5        g ! , (       d  f       g = f)Nr$   Fr2   r&   r   zExpected the second axis of `x`match)	r   r   r7   r8   r.   pytestraises
ValueErrorr^   )r`   r    dr   r   s        r   $test_inconsistent_x_dimensions_error9_TestRBFInterpolator.test_inconsistent_x_dimensions_error0  s     1u299+@+@+BCJJ2Na 1u299+@+@+BCJJ2N1]]:U3JJqQ 433s   B44
Cc                     [         R                  " SSS5      S S 2S 4   n[         R                  " S5      nSn[        R                  " [
        US9   U R                  X5        S S S 5        g ! , (       d  f       g = f)Nr   r   r1   zExpected the first axis of `d`r   r   r   r   r   r   r   r^   r`   r    r   r   s       r    test_inconsistent_d_length_error5_TestRBFInterpolator.test_inconsistent_d_length_error:  sU    KK1a D)HHQK0]]:U3JJq 433s   A,,
A:c                     [         R                  " SSS5      n[         R                  " S5      nSn[        R                  " [
        US9   U R                  X5        S S S 5        g ! , (       d  f       g = f)Nr   r   r1   z"`y` must be a 2-dimensional array.r   r   r   s       r   test_y_not_2d_error(_TestRBFInterpolator.test_y_not_2d_errorA  sL    KK1a HHQK4]]:U3JJq 433s   
A%%
A3c                 $   [         R                  " SSS5      S S 2S 4   n[         R                  " S5      n[         R                  " S5      nSn[        R
                  " [        US9   U R                  XUS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r1   zExpected `smoothing` to ber   r   )r   r   r   onesr   r   r   r^   )r`   r    r   r   r   s        r   (test_inconsistent_smoothing_length_error=_TestRBFInterpolator.test_inconsistent_smoothing_length_errorH  sf    KK1a D)HHQKGGAJ	,]]:U3JJqyJ1 433s   'B
Bc                     [         R                  " SSS5      S S 2S 4   n[         R                  " S5      nSn[        R                  " [
        US9   U R                  XSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   r1   z`kernel` must be one ofr   testrj   r   r   s       r   test_invalid_kernel_name_error3_TestRBFInterpolator.test_invalid_kernel_name_errorP  sY    KK1a D)HHQK)]]:U3JJqFJ+ 433   A++
A9c                 ,   [         R                  " SSS5      S S 2S 4   n[         R                  " S5      n[         HC  nU[        ;   a  M  Sn[
        R                  " [        US9   U R                  XUS9  S S S 5        ME     g ! , (       d  f       MW  = f)Nr   r   r1   z`epsilon` must be specifiedr   rj   )	r   r   r   r   r   r   r   r   r^   )r`   r    r   r@   r   s        r    test_epsilon_not_specified_error5_TestRBFInterpolator.test_epsilon_not_specified_errorW  st    KK1a D)HHQK F))1Ez7

1
/ 87 !
 87s   &B
B	c                 6   [         R                  " SSS5      S S 2S 4   n[         R                  " SSS5      n[         R                  " S5      nSn[        R                  " [
        US9   U R                  X5      " U5        S S S 5        g ! , (       d  f       g = f)Nr   r   r1   z"`x` must be a 2-dimensional array.r   r   )r`   r    r   r   r   s        r   test_x_not_2d_error(_TestRBFInterpolator.test_x_not_2d_errorb  sl    KK1a D)KK1a HHQK4]]:U3JJqQ 433s   )B


Bc                     [         R                  " SSS5      S S 2S 4   n[         R                  " S5      nSn[        R                  " [
        US9   U R                  XSS9  S S S 5        g ! , (       d  f       g = f)Nr   r   z#At least 2 data points are requiredr   thin_plate_splinerj   r   r   s       r   "test_not_enough_observations_error7_TestRBFInterpolator.test_not_enough_observations_errorj  sZ    KK1a D)HHQK5]]:U3JJq$7J8 433r   c           
      T   [         R                  " SSS5      S S 2S 4   n[         R                  " S5      n[        R                  " 5        HH  u  p4US:  d  M  SU 3n[
        R                  " [        US9   U R                  XSX4S-
  S9  S S S 5        MJ     g ! , (       d  f       M\  = f)Nr   r   r1   z`degree` should not be below r   rW   rY   r@   r   )	r   r   r   r	   itemsr   warnsWarningr^   )r`   r    r   r@   degr   s         r   test_degree_warning(_TestRBFInterpolator.test_degree_warningq  s    KK1a D)HHQK.446KFax7u=\\'7JJqSAJN 87	 7 87s   6B
B'	c           	          [         R                  " SSS5      S S 2S 4   n[         R                  " S5      n[        R                  " 5        H  u  p4U R                  XSUSS9  M     g )Nr   r   r1   rW   rO   r   )r   r   r   r	   r   r^   )r`   r    r   r@   rF   s        r   test_minus_one_degree*_TestRBFInterpolator.test_minus_one_degree|  sS    KK1a D)HHQK,224IFJJqSJC 5r   c                    [         R                  " SS/SS/SS//5      n[         R                  " / SQ5      nSn[        R                  " [        US9   U R                  XSS9" U5        S S S 5        g ! , (       d  f       g = f)	NrZ   rq   rW   )rq   rq   rq   zdoes not have full column rankr   r   rj   )r   r   r   r   r   r^   r   s       r   test_rank_error$_TestRBFInterpolator.test_rank_error  sh     HHsCj3*sCj9:HH_%0]];e4JJq$7J8; 544s   A33
Bc                     S HR  n[         R                  " SU45      n[         R                  " S5      nU R                  X#SS9" U5      n[	        X45        MT     g )N)r   r$   r   r   )r   linearrj   )r   r   r   r^   r   )r`   dimr    r   fs        r   test_single_point&_TestRBFInterpolator.test_single_point  sL     C!S"AA

1
1!4AA!	 r   c                 `   [        SS[        R                  R                  S5      S9nSUR                  S5      -  nSUR                  S5      -  n[	        U5      nU R                  X$5      nU" U5      n[        R                  " [        R                  " U5      5      " U5      n[        XgSS9  g )	Nr   Fl   e r2   r   rV   gؗҜ<r\   )
r   r   r7   r8   r!   r^   pickleloadsdumpsr   )r`   rE   r   ra   r    r   rb   rc   s           r   test_pickleable$_TestRBFInterpolator.test_pickleable  s     QRYY-B-B:-NOcjjnBa A!tV\\&124851r    N)%__name__
__module____qualname____firstlineno__r   markparametrizesortedr   rd   rg   r   rn   rw   slowr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   thread_unsafer   r   r   r   r   __static_attributes__r   r   r   rS   rS   S   s   [[Xv.>'?@	1 A	1 [[Xv.>'?@	1 A	1 [[Xvj'9:1 ;161, [[1 1>,$+" [[Xvj'9: ; [[Xvj'9: ; [[Xvj'9: ;6,& 2,	0 9 [[O OD<"2r   rS   c                   &    \ rS rSrS rS rS rSrg) TestRBFInterpolatorNeighborsNonei  c                     [        U0 UD6$ Nr   r`   r}   r~   s      r   r^   &TestRBFInterpolatorNeighborsNone.build  s    ///r   c                    [        SS[        R                  R                  5       S9nSnSnSUR                  S5      -  nSUR                  S5      -  n[	        U5      nU R                  XFUUS9" U5      n[        XB5      n[        XR5      n	U	R                  [        R                  R                  XS S9S	   5      n
[        XzS
S9  g )Nr   Fr2   r       חArV   r   r   rcondr   r[   r\   )r   r   r7   r8   r!   r^   r   r>   r;   lstsqr   r`   rE   r   r   r   ra   r    rb   rH   ru   rc   s              r   test_smoothing_limit_1d8TestRBFInterpolatorNeighborsNone.test_smoothing_limit_1d  s     QRYY-B-B-DE	cjjnBa 

   	 #D)T:1=>40r   c                    [        SS[        R                  R                  5       S9nSnSnUR                  S5      nUR                  S5      n[	        U5      nU R                  XFUUS9" U5      n[        XB5      n[        XR5      n	U	R                  [        R                  R                  XS S9S	   5      n
[        XzS
S9  g )Nr$   Fr2   r   r  r0   r  r  r   r[   r\   )r   r   r7   r8   r.   r^   r   r>   r;   r	  r   r
  s              r   test_smoothing_limit_2d8TestRBFInterpolatorNeighborsNone.test_smoothing_limit_2d  s     QRYY-B-B-DE	JJsOzz#a 

   	 #D)T:1=>40r   r   N)r   r   r   r   r^   r  r  r   r   r   r   r   r     s    0121r   r   c                   &    \ rS rSrS rS rS rSrg)TestRBFInterpolatorNeighbors20i  c                      [        U0 UDSS0D6$ )N	neighborsr   r  r  s      r   r^   $TestRBFInterpolatorNeighbors20.build  s    =="==r   c                    [        SS[        R                  R                  5       S9nUR                  S5      nUR                  S5      n[	        U5      nU R                  X$5      " U5      n/ n[        U5      nU HB  nUR                  US5      u  pUR                  [        X*   XJ   5      " US    5      S   5        MD     [        XVSS9  g )	Nr$   Fr2   r0   r   r   r[   r\   )r   r   r7   r8   r.   r^   r   queryappendr   r   )r`   rE   r   ra   r    rb   rc   treexirF   nbrs              r   #test_equivalent_to_rbf_interpolatorBTestRBFInterpolatorNeighbors20.test_equivalent_to_rbf_interpolator  s    QRYY-B-B-DEJJsOzz#a 

1 &qzBZZB'FALL8DB1EF  	40r   c                     [        SS[        R                  R                  S5      S9nUR                  S5      nUR                  S5      n[	        U5      nU R                  X$5      nS n[        SXeU5        g )Nr$   Fr   r2   r0   c                     U" U5        g r   r   )rF   r   xps      r   	worker_fnBTestRBFInterpolatorNeighbors20.test_concurrency.<locals>.worker_fn   s	    2Jr   r&   )r   r   r7   r8   r.   r^   r   )r`   rE   r   ra   r    r   r   s          r   test_concurrency/TestRBFInterpolatorNeighbors20.test_concurrency  sf     QRYY-B-B1-EFJJsOzz#a A!	 	 It<r   r   N)r   r   r   r   r^   r  r"  r   r   r   r   r  r    s    >1$=r   r  c                        \ rS rSrS rS rSrg)TestRBFInterpolatorNeighborsInfi  c                 <    [        U0 UDS[        R                  0D6$ )Nr  )r   r   infr  s      r   r^   %TestRBFInterpolatorNeighborsInf.build	  s    AA"&&AAr   c                    [        SS[        R                  R                  5       S9nSUR                  S5      -  nSUR                  S5      -  n[	        U5      nU R                  X$5      " U5      n[        X$5      " U5      n[        XVSS9  g )Nr   Fr2   r   rV   r[   r\   )r   r   r7   r8   r!   r^   r   r   )r`   rE   r   ra   r    rb   rc   s          r   r  CTestRBFInterpolatorNeighborsInf.test_equivalent_to_rbf_interpolator  sw    QRYY-B-B-DEcjjnBa 

1 &%d+40r   r   N)r   r   r   r   r^   r  r   r   r   r   r%  r%    s    B
1r   r%  )"r   r   numpyr   numpy.linalgr   scipy._lib._array_apir   scipy.stats.qmcr   scipy.spatialr   scipy.interpolate._rbfinterpr   r   r	   r
   r   scipy.interpolater   scipy._lib._testutilsr   r   r!   r.   rM   r   r   r   rQ   rS   r   r  r%  r   r   r   <module>r3     s       $ 1 " !  1 9<	> 6*#56: 7:Q2 Q2h
41'; 41n%=%9 %=P1&F 1r   