
    e!hŴ                        d dl Z d dlZd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ d dl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mZ ej4                  j7                  d
ej8                        Z G d d      Z G d d      Z G d d      Z y)    N)assert_warns)xp_assert_equalxp_assert_closeassert_array_almost_equal)skip_xp_invalid_arg)raises)RegularGridInterpolatorinterpnRectBivariateSplineNearestNDInterpolatorLinearNDInterpolator)matrix)ComplexWarning)_run_concurrent_barriermethodc                      e Zd Zd Zd Zd Zd Zed        Ze	j                  j                  dg d      d        Ze	j                  j                  d	e ej                  g d
g dg dg      fe ej                  g d      fg      d        Zd Zed        Zd Zd Zd Ze	j                  j                  d ej                  g d      df ej                  g d      df ej                  g d      df ej                  g d      df ej                  g d      dfg      d        Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Ze	j                  j                  dd'd(g      d)        Zd* Zd+ Z d, Z!e	j                  j                  d-d.ejD                  ejF                  g      e	j                  j                  dd(d'g      d/               Z$e	j                  j                  dd'd(g      d0        Z%e	j                  j                  dd'd(g      d1        Z&e	j                  jO                  d2      ee	j                  j                  d3d4d5 fd6d7 fd8d9 fd:d; fg      d<                      Z(d= Z)ed>        Z*e	j                  jO                  d:      ed?               Z+ee	j                  j                  d@dAdBg      dC               Z,dD Z-e	j                  j                  dEej\                  ej^                  ej`                  ejb                  g      e	j                  j                  dFej\                  ej^                  g      dG               Z2dH Z3e	j                  jh                  dI        Z5y.)JTestRegularGridInterpolatorc                    dgdz  }t        j                  g d      }|d d t         j                  t         j                  t         j                  f   }|t         j                  d d t         j                  t         j                  f   }|t         j                  t         j                  d d t         j                  f   }|t         j                  t         j                  t         j                  d d f   }||dz  z   |dz  z   |dz  z   }||fS )N              ?      ?   
   d     npasarraynewaxisselfpointsvaluesvalues0values1values2values3s          h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_rgi.py_get_sample_4dz*TestRegularGridInterpolator._get_sample_4d   s    !#L)BJJ

BJJ>?Q

BJJ>?RZZBJJ>?RZZQ>?GbL(7S=87T>Iv~    c                 "   dgdz  dgdz  z   }t        j                  g d      }|d d t         j                  t         j                  t         j                  f   }|t         j                  d d t         j                  t         j                  f   }|t         j                  t         j                  d d t         j                  f   }|t         j                  t         j                  t         j                  d d f   }||dz  z   |dz  z   |dz  z   }||fS Nr      )r         @      $@r   r   r   r   r!   s          r)   _get_sample_4d_2z,TestRegularGridInterpolator._get_sample_4d_2'   s    !#}o&99L)BJJ

BJJ>?Q

BJJ>?RZZBJJ>?RZZQ>?GbL(7S=87T>Iv~r+   c                    dgdz  }t        j                  g d      }|d d t         j                  t         j                  t         j                  f   }|t         j                  d d t         j                  t         j                  f   }|t         j                  t         j                  d d t         j                  f   }|t         j                  t         j                  t         j                  d d f   }||dz  z   |dz  z   |dz  z   }||fS )Nr   r   r         ?       @      @      @r   r   r   r   r   r!   s          r)   _get_sample_4d_3z,TestRegularGridInterpolator._get_sample_4d_32   s    56:?@BJJ

BJJ>?Q

BJJ>?RZZBJJ>?RZZQ>?GbL(7S=87T>Iv~r+   c                    dgdz  }t        j                  ddg      }|d d t         j                  t         j                  t         j                  f   }|t         j                  d d t         j                  t         j                  f   }|t         j                  t         j                  d d t         j                  f   }|t         j                  t         j                  t         j                  d d f   }||dz  z   |dz  z   |dz  z   }||fS )N)r   r   r   r   r   r   r   r   r   r!   s          r)   _get_sample_4d_4z,TestRegularGridInterpolator._get_sample_4d_4=   s    !S#J'BJJ

BJJ>?Q

BJJ>?RZZBJJ>?RZZQ>?GbL(7S=87T>Iv~r+   c                    | j                         \  }}t        j                  g dg dg dg      }t        ||j	                         |      } ||j	                               }t        |||      } ||      }t        ||       y )N皙?r=   r   ?皙?r=   g?g?r   r   r   r   r   )r8   r   r   r	   tolistr   )r"   r   r#   r$   sampleinterpv1v2s           r)   test_list_inputz+TestRegularGridInterpolator.test_list_inputH   s    ..0/1D/1 2 ))/068 FMMO$()/068 F^Br+   r   )cubicquinticpchipc                 r   | j                         \  }}d}t        j                  t        |      5  t	        |||       d d d        t	        ||      }t        j                  g dg dg dg      }t        j                  t        |      5   |||       d d d        y # 1 sw Y   bxY w# 1 sw Y   y xY w)Nzpoints in dimensionmatchrB   r<   r?   rA   )r:   pytestr   
ValueErrorr	   r   r   )r"   r   r#   r$   rN   rE   rD   s          r)   test_spline_dim_errorz1TestRegularGridInterpolator.test_spline_dim_errorY   s    ..0% ]]:U3 	C#FF6B	C )8/1D/1 2]]:U3 	*6&)	* 	*	C 	C	* 	*s   B!B-!B*-B6zpoints_values, sampler<   r?   rA   r=   r=   r0         "@c                      ||       \  }}t        ||d      } ||      }t        ||d      } ||      }t        ||       y )NlinearrB   slinear)r	   r   )r"   points_valuesrD   r#   r$   rE   rF   rG   s           r)   test_linear_and_slinear_closez9TestRegularGridInterpolator.test_linear_and_slinear_closei   sJ     't,(IF^(	JF^Br+   c                    | j                         \  }}t        j                  g dg dg dg      }t        ||d      }t	        t
              5   ||d       d d d        t         ||d      t        j                  g d	      d
       t         ||d      t        j                  g d      d
       t         ||d      t        j                  g d      d       y # 1 sw Y   xY w)Nr<   r?   rA   rV   rB      )nu)rZ   r   r   r   )r   rZ   rZ   V瞯<atol)r   rZ   r   r   )r0   r   r   )r   rZ   rZ   r   )r   r   r   g-=)r*   r   arrayr	   assert_raisesrP   r   r   )r"   r#   r$   rD   rE   s        r)   test_derivativesz,TestRegularGridInterpolator.test_derivatives   s    ,,.3335 6 )	J:& 	!6a 	! 	v,7

;/e	=v,7

>2	@ 	v,7

;/e	=	! 	!s   C$$C-c                 v   |dk(  rt        j                  d       | j                         \  }}|d|z  z
  }t        j                  g dg dg dg      }t        |||      }t        ||j                  |      }t        ||j                  |      } ||      } ||      d ||      z  z   }	t        ||	       y )	NrK   *pchip does not make sense for complex data               @r<   r?   rA   rB                 ?)	rO   skipr8   r   r   r	   realimagr   )
r"   r   r#   r$   rD   rE   rinterpiinterprF   rG   s
             r)   test_complexz(TestRegularGridInterpolator.test_complex   s    WKKDE..0"V)#/1D/1 2 )G)&&++fM)&&++fMF^V_r'&/11Br+   c                     g dg d}}t        j                  ||d      \  }} d ||      }t        ||f|d      }t        ||f|d      } |dd	g      } |dd	g      }	t        j                  ||	d
d      rJ y )N)rZ   r.      r   ij)indexingc                     | dz  |dz  z  S )Nr    xys     r)   <lambda>zATestRegularGridInterpolator.test_cubic_vs_pchip.<locals>.<lambda>   s    q!tad{ r+   rI   rB   rK   r4   r.   +=r   r^   rtol)r   meshgridr	   allclose)
r"   rs   rt   xgygr$   rI   rK   
vals_cubic
vals_pchips
             r)   test_cubic_vs_pchipz/TestRegularGridInterpolator.test_cubic_vs_pchip   s    \1QD1B*B3'AwG'AwGC8_
C8_
;;z:EJJJJr+   c                     | j                         \  }}t        ||      }t        j                  g d      }t        j                  dg      }t	         ||      |       y )NrR   H@r1   r	   r   r   r   r"   r#   r$   rE   rD   wanteds         r)   test_linear_xi1dz,TestRegularGridInterpolator.test_linear_xi1d   sM    ..0(8/0VH%!&.&9r+   c                     | j                         \  }}t        ||      }t        j                  g dg dg dg      }t        j                  g d      }t	         ||      |       y )Nr<   r?   rA   r   gq@g     \@r*   r	   r   r   r   r   s         r)   test_linear_xi3dz,TestRegularGridInterpolator.test_linear_xi3d   sY    ,,.(8/1D/1 223!&.&9r+   zsample, wanted)r=   r=   r>   r>   g     0@)r=   r=   r=   r=   r   r   r   r   r   r   r   r   r        \@)r=   皙?g333333?r>   g     |@c                     | j                         \  }}t        ||d      }t        j                  |g      }t	         ||      |       y )NnearestrB   r   )r"   rD   r   r#   r$   rE   s         r)   test_nearestz(TestRegularGridInterpolator.test_nearest   sB     ,,.(	JVH%!&.&9r+   c                     | j                         \  }}t        ||      }t        j                  g dg dg      }t        j                  ddg      }t	         ||      |       y )Nr   r   r   r   r   r   s         r)   test_linear_edgesz-TestRegularGridInterpolator.test_linear_edges   sU    ,,.(8-/?@ARK(!&.&9r+   c                    ddg}t        j                  g d      }|d d t         j                  f   }|t         j                  d d f   }||dz  z   }t        t        t
        ||       ddg}t        t        t
        ||       ddg}t        t        t
        ||       g d}t        t        t
        ||       ddg}t        t        t
        ||d       y )	Nr   )r   r   r   r   )r   )r   r   g      ?r   )r   r   r   undefmethodrB   )r   r   r    r`   rP   r	   )r"   r#   r$   r%   r&   s        r)   test_valid_createz-TestRegularGridInterpolator.test_valid_create   s    -L)BJJ'Q'GbL(j"966J"L1j"966J#\2j"966J;j"966J-j"966*	,r+   c                 L   | j                         \  }}t        ||      }t        j                  g dg dg      }t	        t
        ||d       t        j                  g dg dg      }t	        t
        ||       t        j                  g dg dg      }t	        t
        ||       y )Nr   r   r   )r   r   r   )r   r   r   )r   r   r   皙?)r*   r	   r   r   r`   rP   )r"   r#   r$   rE   rD   s        r)   test_valid_callz+TestRegularGridInterpolator.test_valid_call   s    ,,.(8-/?@Aj&&-@\<89j&&1-/@ABj&&1r+   c                 6   | j                         \  }}t        ||dd       }t        j                  g dg dg dg dg      }t        j                  g d      }t	         ||d	      |       t        j                  g d
      }t	         ||d	      |       y )NFbounds_error
fill_value皙r   r   r   r   r   r   r       @皙ir   r   r   r   )r   r         &@r   r   rB   )gfffff[gfffff@g     grU   r   r   s         r)   test_out_of_bounds_extrapz5TestRegularGridInterpolator.test_out_of_bounds_extrap   s    ,,.(e48:13G13IK L12!&	"BFK>?!&"A6Jr+   c                 6   | j                         \  }}t        ||dd       }t        j                  g dg dg dg dg      }t        j                  g d      }t	         ||d	      |       t        j                  g d
      }t	         ||d	      |       y )NFr   r   r   r   r   )r   r   r   r   r   rB   )g333333(g33333`@g     gyXrU   r   r   s         r)   test_out_of_bounds_extrap2z6TestRegularGridInterpolator.test_out_of_bounds_extrap2   s    ..0(e48:13G13IK L/0!&	"BFK9:!&"A6Jr+   c                    | j                         \  }}t        ||dt        j                        }t        j                  g dg dg dg      }t        j                  t        j                  t        j                  t        j                  g      }t         ||d      |       t         ||d      |       t        j                  g d	g d
g dg      }t        j                  g d      }t         ||      |       y )NFr   r   r   r   r   rB   rU   r<   r?   rA   r   )r*   r	   r   nanr   r   r   s         r)   test_out_of_bounds_fillz3TestRegularGridInterpolator.test_out_of_bounds_fill  s    ,,.(e46FF<13G35 6RVVRVVRVV45!&	"BFK!&"A6J/1D/1 223!&.&9r+   c                 b   | j                         \  }}t        ||d      }t        j                  | }|D cg c]  }| }}t	        j
                  |      }|j                  d      }t        ||      }t	        j
                  g dg dg dg      }t         ||       ||             y c c}w )Nr   rB   r<   r?   rA   )	r*   r	   	itertoolsproductr   r   reshaper   r   	r"   r#   r$   rE   points_qhullpvalues_qhullinterp_qhullrD   s	            r)   test_nearest_compare_qhullz6TestRegularGridInterpolator.test_nearest_compare_qhull  s    ,,.(	J ((&1#/0a00zz,/~~b),\<H/1D/1 2!&.,v2FG 1s   	B,c                 ^   | j                         \  }}t        ||      }t        j                  | }|D cg c]  }| }}t	        j
                  |      }|j                  d      }t        ||      }t	        j
                  g dg dg dg      }t         ||       ||             y c c}w )Nr   r<   r?   rA   )	r*   r	   r   r   r   r   r   r   r   r   s	            r)   test_linear_compare_qhullz5TestRegularGridInterpolator.test_linear_compare_qhull"  s    ,,.(8 ((&1#/0a00zz,/~~b)+L,G/1D/1 2!&.,v2FG 1s   	B*r   rU   c                    t        j                  ddd      }t        j                  ddd      }t        d      }t        ||f||      } |dd	g      }t        ||f|j                  |      } |dd	g      }t        ||d
       y )Nr   r.      rZ      r   r   rB   r   ffffff?Fcheck_dtype)r   linspaceMyValuer	   _vr   )r"   r   rs   rt   r$   rE   rF   rG   s           r)   test_duck_typed_valuesz2TestRegularGridInterpolator.test_duck_typed_values.  s    KK1a KK1a (!QGS#J(!Q6JS#JBE2r+   c                 2   t         j                  j                  d       t        j                  ddd      }t        j                  ddd      }t         j                  j	                  dd      }t        ||f|d       t        t        t
        ||f|d       y )	N  r   r.   r   rZ   r   r   y      ?       @)r   randomseedr   randr	   r`   rP   )r"   rs   rt   r$   s       r)   test_invalid_fill_valuez3TestRegularGridInterpolator.test_invalid_fill_value<  sv    
		tKK1a KK1a 1% 	 A1= 	j"9!ff	7r+   c                     t        j                  dd      }|j                  D cg c]  }t        j                  |       }}t	        ||       t	        ||d       y c c}w )Nr         z>f4dtyper   r   )r   onesshapearanger	   )r"   r$   nr#   s       r)   test_fillvalue_typez/TestRegularGridInterpolator.test_fillvalue_typeI  sL    U3(.51"))A,55/2> 6s   Ac           
         d }t        j                  ddd      }t        j                  ddd      } |t        j                  ||dd       }t        ||f|ddd	
      }t	         |t        j
                  ddgddgddgg            t        j                  g d      d       t	         |t        j
                  ddgddgddgg            g dd       t	         |t        j
                  ddg            |j                  dddd       d |_        t	         |ddgddgg      ddgd       t	         |ddgddgg      ddgd       t        ||f|ddd 
      }t	         |ddgddgg      t        j                  d d!g      d       y )"Nc                     | |z   S Nrq   rr   s     r)   fz;TestRegularGridInterpolator.test_length_one_axis.<locals>.fU  s    q5Lr+   rZ   r   rn   Tro   sparserU   Fe   r   r   r   r   )r5         rv   r]   gffffff?333333@)333333@333333@r   r   r   )r   check_shapecheck_0dr^   333333?g      '@g?g      )@r\   r4   gffffff?r   g?gffffff@r7   r   )r   r   ry   r	   r   r_   r   r   )r"   r   rs   rt   datarE   s         r)   test_length_one_axisz0TestRegularGridInterpolator.test_length_one_axisQ  s   	KK1a KK2r""++aT$?@(!Qh6;M 	rxx!Q!Q!R(ABC

<0"	$
 	rxx!SAs8aW(EFG&"	$
 	rxxc
34))$)uu"	$ !C1d)45d%	1 	c
S$K89d%	1 )!Qi6;Nc
RI67

C8,"	$r+   r   Nc                    |d|d}t        j                  ddt         j                  z  d      }t        j                  |      }t	        |f|d d  fi |}t	        |dgf|d d d f   fi |}t        j                  ddt         j                  z  dz   d      } ||      }	t        j
                  d      }
 |t        j                  ||
g      j                        }t        ||	       t        j                  d      }
 |t        j                  ||
g      j                        }|t        ||	       y t        |t        j                  ||             y )	NFr   r   r   r   r.   r   r   rZ   r   )r   r   pisinr	   zerosvstackTr   r   	full_like)r"   r   r   optionsrs   zfafbx1azay1bzbs               r)   test_length_one_axis2z1TestRegularGridInterpolator.test_length_one_axis2}  s     ",U#% KK1RUU7B'FF1I$aT1Q4;7;$a!XqDzEWEkk"agai-W hhsm		3*%''(B ggcl		3*%''(B#BR <=r+   c                    t        g dfg ddd|      }t        j                   |t        j                  g            sJ t        j                  j                  d      }|j	                  d      d	z  }|j	                  d      d
kD  }t        j                  ||<   t        j                  d      5   ||      }d d d        t        j                  |         j                         sJ t        ||     |||                 g d}dg}t        j                  d      }t        ||f|dd|      }t        j                  t        j                   |t        j                  dg                  sJ t        j                  t        j                   |dt        j                  g                  sJ y # 1 sw Y   xY w)N)rZ   r.   rm   r   rZ   Fr      lJ r   sizer   r   ignoreinvalid)rm   rZ   )
r	   r   isnanr   r   default_rngerrstateallr   r   )	r"   r   r   rngrs   iresrt   r   s	            r)   test_nan_x_1dz)TestRegularGridInterpolator.test_nan_x_1d  so    $YL,116vGxx266($$$ ii##J/JJCJ "JJCJ 3&vv![[* 	
 A$C	 xxA##%%%QB1aR5* Ewwv#QFDQ16vGvvbhhq"&&!~.///vvbhhq!RVV~.///#	 	s   4	F66F?c                 *   t        j                  g d      t        j                  g d      }}d }t        j                  ||dd      \  }} |||      }t        ||f||d      }t        j                  d	
      5   |dt         j
                  gddgg      }	d d d        t        	d   dd       t        j                  |	d         sJ t         j                  j                  d      }
|
j                  d      dz  dz
  }|
j                  d      dz  }|
j                  d      dkD  }|
j                  d      dkD  }||z  }t         j
                  ||<   t         j
                  ||<   t        j                  ||g      j                  }t        j                  d	
      5   ||      }	d d d        t        j                  |	|         j                         sJ t        |	|     |||          d       y # 1 sw Y   cxY w# 1 sw Y   [xY w)N)r   rZ   r.   )rZ   rm   r   c                     | dz  |dz  z   S Nr.   rq   rr   s     r)   r   z4TestRegularGridInterpolator.test_nan_x_2d.<locals>.f  s    a4!Q$;r+   rn   Tr   Fr   r   r   r   r4   rZ   r5   rv   r]   r   r   r   r   r      r   r   )r   r_   ry   r	   r  r   r   r  r   r  r   r  r   )r"   r   rs   rt   r   r{   r|   r   rE   r  r  i1i2r  r   s                  r)   test_nan_x_2dz)TestRegularGridInterpolator.test_nan_x_2d  s   xx	"BHHY$71	 QD>BRy(!Q06UL [[* 	23-!Q01C	2A%0xxA ii##J/JJCJ "1$JJCJ "ZZSZ!C'ZZSZ!C'G""HHaV[[* 	
 )C	 xxA##%%%QB1"EB/	2 	2	 	s   >G<&	H	<H	Hr   )ndimsfuncr.   c                 $    d| dz  z  d|dz  z  z   S Nr.   rm   rq   rr   s     r)   ru   z$TestRegularGridInterpolator.<lambda>  s    Q!Va!q&j0 r+   rm   c                 *    d| dz  z  d|dz  z  z   |z
  S r  rq   )rs   rt   r   s      r)   ru   z$TestRegularGridInterpolator.<lambda>  s     AQJQ!V3a7 r+   r   c                 0    d| dz  z  d|dz  z  z   |z
  |z   S r  rq   rs   rt   r   as       r)   ru   z$TestRegularGridInterpolator.<lambda>  s%    q16zAQJ6:Q> r+   r   c                 6    d| dz  z  d|dz  z  z   |z
  ||z  z   S r  rq   )rs   rt   r   r  bs        r)   ru   z$TestRegularGridInterpolator.<lambda>  s)    !a1f*q16z"9A"=A"E r+   c                    |dk\  r|dv rt        j                  d       t        j                  j	                  d      }d}d}|j                  ||d|f      }t        |      D cg c]  }t        j                  ||d	       }	} |t        j                  |	d
dd }
t        |	|
|      } ||      }|	D cg c]
  }|d d d    }} |t        j                  |d
dd }t        |||      } ||      }t        ||       y c c}w c c}w )Nr   >   rI   rJ   z-too slow; OOM (quintic); or nearly so (cubic)*   rZ   r   r.   r      rn   Tr   rB   r   )rO   rf   r   r   r  uniformranger   ry   r	   r   )r"   r   r  r  r  
sample_lowsample_hightest_points_ascending_pointsascending_valuesascending_interpascending_resultxidescending_pointsdescending_valuesdescending_interpdescending_results                     r)   test_descending_points_ndz5TestRegularGridInterpolator.test_descending_points_nd  sB    A:&$88KKGHii##B'
kk*kE
kK &+5\3 ! KK
KD 3 3  .>6:48": ; 33C3C:@B ,K80@A"R"XAA "++/@7;59#; < 44E4E;AC .k:(*;<+3 Bs   %D8D
c                    d }t        j                  g d      }t        j                  g d      }||f} |t        j                  |ddd }d}t        j                  t
        |      5  t        ||       d d d        y # 1 sw Y   y xY w)	Nc                 $    d| dz  z  d|dz  z  z   S r  rq   rr   s     r)   val_func_2dzJTestRegularGridInterpolator.test_invalid_points_order.<locals>.val_func_2d  s    qAv:AF
**r+   r   r5   r         @      @r   r5   r7   r2  r3  rn   Tr   (must be strictly ascending or descendingrM   )r   r_   ry   rO   r   rP   r	   )r"   r0  rs   rt   r#   r$   rN   s          r)   test_invalid_points_orderz5TestRegularGridInterpolator.test_invalid_points_order  s~    	+ HH*+HH*+Qbkk6D157 8:]]:U3 	4#FF3	4 	4 	4s   ,BBc                     t        t        j                  d      gt        j                  d      |d      }t        j                   |dg            sJ y )Nr   Fr  r   )r	   r   r   r   r  )r"   r   rE   s      r)   test_fill_valuez+TestRegularGridInterpolator.test_fill_value  s@    ("))A,06ULxxt%%%r+   c                    |dk(  rt        j                  d       dgdz  dgdz  z   }t        j                  j	                  d      }|j                  d      }|j                  d      }t        |||d	
      } ||      }|j                  dk(  sJ |       g }t        d      D ]-  }	t        ||d|	f   |d	
      }|j                   ||             / t        j                  |      j                  ddd      }
t        ||
d|       y NrJ   Way too slow.r   r   r   r4   r5   r6   r.   )r   r/   r0         .@r         9@r   )r   r   r   r   r  )r   rm   r   Fr  )r   rm   r  r  .rZ   r   rv   r^   err_msg)rO   rf   r   r   r  r	   r   r  appendr_   	transposer   )r"   r   r#   r  r$   rD   rE   vvsjrG   s              r)   test_nonscalar_valuesz1TestRegularGridInterpolator.test_nonscalar_values  s    YKK( 11A5,9
9  ii##D)O,I&(6;=6Nww)#+V+#q 	&A,VVCF^4::?AF IIfVn%		&
 XXb\##Aq!,2E6:r+   flip_pointsFTc           	         |dv rt        j                  d       g d}|r!|D cg c]  }t        t        |             }}t        j
                  j                  d      }d}|j                  dddd	g|      }|j                  d
      }t        |||d      }	 |	|      }
|
j                  dg|k(  sJ t	        j                  |j                  dd        }t        |j                  d         D ]O  }t        |j                  d         D ]2  }t        ||d||f   |d      }	 |	|      j                         |||f<   4 Q t	        j                  |d      }t        |
|d|       y c c}w )N>   rI   rJ   r;  r<  r3   )r   r/   r0   r=  r   r>       A@      B@)	r   r/   r0   r=  r   r>  rJ  rK  /   r   rm   r.   r   r   r  	   r   Fr  rZ   r   .r   axisrv   r?  )rO   rf   tuplereversedr   r   r  r	   r   emptyr  itemexpand_dimsr   )r"   r   rG  r#   r   r  trailing_pointsr$   rD   rE   rC  rD  r  rE  rG   s                  r)   test_nonscalar_values_2z3TestRegularGridInterpolator.test_nonscalar_values_28  sr    ))KK(D 289QeHQK(9F9ii##D) Q1a:/:;A(6;=6N ww1///// XXfll23'(v||B'( 	1A6<<+, 10Q	9J8>>CE "&>..01a4	1	1 ^^BQ'2E6:3 :s   E*c           	      \   d}ddg}t         j                  j                  d      }d}|j                  ddg|      }|j                  d      }t        |||d	
      } ||      }|j                  dg|k(  sJ t        j
                  |j                  dd        }	t        |j                  d         D ]O  }
t        |j                  d         D ]2  }t        ||d|
|f   |d	
      } ||      j                         |	|
|f<   4 Q t        j                  |	d      }t        ||d|       y )NrU   r<  r3   r   )rm   r   r   r   r.   Fr  rZ   rO  r   .r   rP  rv   r?  )
r   r   r  r	   r   rT  r  rU  rV  r   )r"   r   r#   r  rW  r$   rD   rE   rC  rD  r  rE  rG   s                r)   test_nonscalar_values_linear_2Dz;TestRegularGridInterpolator.test_nonscalar_values_linear_2Dc  s=   059 ii##D) Q4O45A(6;=6N ww1///// XXfll23'(v||B'( 	1A6<<+, 10Q	9J8>>CE "&>..01a4	1	1 ^^BQ'2E6:r+   r   xi_dtypec                 X   d }t        j                  ddd      }t        j                  ddd      }t        j                  ||dd	      \  }} |||      }|j                  |      }t	        ||f|      }	t        j
                  d
dgddgg|      }
t         |	|
      ddgddd       y )Nc                 $    d| dz  z  d|dz  z  z   S r  rq   rr   s     r)   r   z:TestRegularGridInterpolator.test_float32_values.<locals>.f  s    q!t8a!Q$h&&r+   rZ   r   r   r      rn   Tr   r   g@ffffff
@g@r   g Y`@g{,c@gHz>F)r^   rx   r   )r   r   ry   astyper	   r_   r   )r"   r   r[  r   rs   rt   r{   r|   r   rE   ptss              r)   test_float32_valuesz/TestRegularGridInterpolator.test_float32_values  s    	' KK1b!KK1b!QD>BRy{{5!(!Q6hhc
c
$+35 	slL%A!%	Ar+   c                 T   t        j                  ddd      }t        j                  ddd      }t        j                  ||dd      \  }}||z   }t        t              5  t        ||f|d        d d d        t        t              5  t        ||f|d	d
        d d d        t        t              5  t        ||f|d	d d       d d d        t        t              5  t        ||f|d	ddi       d d d        y # 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)Nr   rm   r   rn   Tr   c                     | S r   rq   rs   s    r)   ru   z=TestRegularGridInterpolator.test_bad_solver.<locals>.<lambda>  s    1 r+   )solverrV   c                     | S r   rq   re  s    r)   ru   z=TestRegularGridInterpolator.test_bad_solver.<locals>.<lambda>       r+   )r   rf  c                     | S r   rq   re  s    r)   ru   z=TestRegularGridInterpolator.test_bad_solver.<locals>.<lambda>  rh  r+   woof)r   rf  rj  r  )r   solver_args)r   r   ry   r`   rP   r	   	TypeError)r"   rs   rt   r{   r|   r   s         r)   test_bad_solverz+TestRegularGridInterpolator.test_bad_solver  s!   KK1a KK1a QD>BBw :& 	F#QFDE	F 9% 	#AY{	 9% 	#AY{	 9% 	#AYfb\	 		F 	F	 		 		 	s0   C:D2DD:DDDD'c                     | j                         \  }}t        j                  g dg dg dg dg      t        ||d      }ddgfd}t	        d	||       y )
Nr<   r?   rA   )r   r=   r@   r   rV   rB   r   c                 b    |j                   }| dz     } ||       |j                   |u sJ y )Nr.   rB   )_spline)tidrE   spliner   methodsrD   s       r)   	worker_fnz?TestRegularGridInterpolator.test_concurrency.<locals>.worker_fn  s6    ^^FS1W%F6&)>>V+++r+   r   )r*   r   r_   r	   r   )r"   r#   r$   rE   rt  rs  rD   s        @@r)   test_concurrencyz,TestRegularGridInterpolator.test_concurrency  sc    ,,.33335 6 )	J i(	, 	 Iv6r+   )6__name__
__module____qualname__r*   r1   r8   r:   parametrize_rgi_interp_methodsrH   rO   markparametrizerQ   r   r   rX   ra   rk   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  	fail_slowr-  r6  r8  rF  rX  rZ  float32float64	complex64
complex128rb  rm  thread_unsaferu  rq   r+   r)   r   r      s   				 $  $   [[X'DE* F* [[ 

)*)+ zrzz*?@A
	
  =( $  $  
K:: [[RZZ,-v6RZZ,-s3RZZ,-s3RZZ,-v6RZZ,-v6	
	:	::,$2	K	K:
H
H [[X	8'<=3 >37?*$X [[\D"&&"%%+@A[[X)'<=> > B>4 [[X	8'<=0 >0< [[X	8'<="C >"CH [[2#[[.	
01	
78	
>?	
EF	1 = $ =B4 $& $&
 [[1#; $ ;: $[[]UDM:'; ; $';R;> [[	RZZr}}= [[Z"**bjj)ABA C	
A08 [[7 7r+   r   c                   *    e Zd ZdZd Zd Zd ZddZy)r   z"
    Minimal indexable object
    c                     d| _         || _        t        j                  t        j                  |            j                  |      | _        y r  )ndimr   r   r   prodr   r   )r"   r   s     r)   __init__zMyValue.__init__  s3    	
))BGGEN+33E:r+   c                      | j                   |   S r   )r   )r"   idxs     r)   __getitem__zMyValue.__getitem__  s    wws|r+   c                      y r   rq   )r"   s    r)   __array_interface__zMyValue.__array_interface__  s    r+   Nc                     t        d      )NzNo array representation)RuntimeError)r"   r   copys      r)   	__array__zMyValue.__array__  s    455r+   )NN)rv  rw  rx  __doc__r  r  r  r  rq   r+   r)   r   r     s    ;
6r+   r   c                      e Zd Zd Zd Zed        Zd Zd Zd Z	d Z
d Zd	 Zd
 Zd Zed        Zej"                  j%                  d      ed               Zed        Zd Zed        Zej"                  j.                  d        Zej"                  j.                  d        Zej"                  j5                  dddg      d        Zeed               Zd Zd Zd Z d Z!d Z"d Z#d Z$ej"                  j5                  d d!d"g      d#        Z%y$)%TestInterpNc           	          t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg dg dg dg      }|||fS )N)r   r5   r7   r2  r3  g      @)rZ   r.   rZ   r.   rZ   rZ   )rZ   r.   rm   r.   rZ   rZ   )rZ   r.   r.   r.   rZ   rZ   )r   r_   )r"   rs   rt   r   s       r)   _sample_2d_datazTestInterpN._sample_2d_data  sR    HH./HH./HH""""""	
 !Qwr+   c           	         | j                         \  }}}t        |||      }t        j                  g dg dg      j                  }t        t        ||f||d      |j                  |d d df   |d d df                y )NrZ   ffffff@r   r   r_  333333?rm   rZ   r_  r  r2  r/   r   rm   	splinef2drB   r   rZ   )r  r   r   r_   r   r   r
   ev)r"   rs   rt   r   lutr(  s         r)   test_spline_2dzTestInterpN.test_spline_2d  s|    &&(1a!!Q*XX668 99: 	!'1a&!R"L"%&&AqD2ad8"<	>r+   c                 F   | j                         \  }}}t        j                  g dg dg      j                  }t	        ||f|||      }t	        |j                         |j                         f|j                         |j                         |      }t        |||       y )Nr  r  rB   )r@  )r  r   r_   r   r
   rC   r   )r"   r   rs   rt   r   r(  rF   rG   s           r)   rH   zTestInterpN.test_list_input  s    &&(1aXX668 99: 	aVQ62XXZ$ahhj"))+f
 	B/r+   c           
         t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg dg dg      }t        |||      }t        j                  g dg dg      j                  }t	        ||f||ddd	
      }|j                  |d d df   |d d df         }d	|dd t        ||       t        t        t        ||f||ddd 
       y )Nr4  rZ   r.   rZ   r.   rZ   rZ   r.   rm   r.   rZ   rZ   r.   r.   r.   rZ   rZ   r  r   r   r_  r  rm   rZ   r_  r  g      r/   r   rm   r  FR?@r   r   rZ   r.   r   )	r   r_   r   r   r
   r  r   r`   rP   )r"   rs   rt   r   r  r(  actualexpecteds           r)   test_spline_2d_outofboundsz&TestInterpN.test_spline_2d_outofbounds  s    HH*+HH*+HHo%8 9!!Q*XX679 ::;! 	!QB{&+@66"QT(Bq!tH-1!&(3 	j'Aq61b#(T	;r+   c                 "   dgdz  dgdz  z   }t        j                  g d      }|d d t         j                  t         j                  t         j                  f   }|t         j                  d d t         j                  t         j                  f   }|t         j                  t         j                  d d t         j                  f   }|t         j                  t         j                  t         j                  d d f   }||dz  z   |dz  z   |dz  z   }||fS r-   r   r!   s          r)   _sample_4d_datazTestInterpN._sample_4d_data  s    !#}o&99L)BJJ

BJJ>?Q

BJJ>?RZZBJJ>?RZZQ>?GbL(7S=87T>Iv~r+   c                     | j                         \  }}t        ||      }t        j                  g dg      }t	        |||d      }t         ||      |       y )NrR   rU   rB   r  r	   r   r   r
   r   r"   r#   r$   	interp_rgrD   r   s         r)   test_linear_4dzTestInterpN.test_linear_4d%  sQ    --/+FF;	012A!)F"3V<r+   c                     | j                         \  }}t        j                  g dg      }t        j                  dg      }t        |||ddd      }t	        ||       y )Nr=   r   g333333$@rS   r  rU   Fr   r  r   r   r
   r   r"   r#   r$   rD   r   r  s         r)   test_4d_linear_outofboundsz&TestInterpN.test_4d_linear_outofbounds-  sX    --/234VH%&+@!&&1r+   c                     | j                         \  }}t        ||d      }t        j                  g dg      }t	        |||d      }t         ||      |       y )Nr   rB   rR   r  r  s         r)   test_nearest_4dzTestInterpN.test_nearest_4d6  sS    --/+FF9M	012	B!)F"3V<r+   c                     | j                         \  }}t        j                  g dg      }t        j                  dg      }t        |||ddd      }t	        ||       y )Nr  r  r   Fr   r  r  s         r)   test_4d_nearest_outofboundsz'TestInterpN.test_4d_nearest_outofbounds>  sX    --/234VH%	&+@!&&1r+   c                     | j                         \  }}t        j                  g d      }t        |||d      }t        |||d d d f   d      }t	        ||       y )NrR   F)r   )r  r   r   r
   r   r"   r#   r$   rD   rF   rG   s         r)   
test_xi_1dzTestInterpN.test_xi_1dG  sU    --//0VVV%@VVVDF^%HBr+   c                 v   | j                         \  }}t        j                  j                  d       t        j                  j	                  ddd      }t        |||dd      }|j                  dk(  sJ t        |||j                  d	d      dd      }t        ||j                  |j                               y )
Nr   r.   rm   r   r   Fr  r.   rm   r   )	r  r   r   r   r   r
   r   r   r   r  s         r)   
test_xi_ndzTestInterpN.test_xi_ndO  s    --/
		t1a(VVVI"')xx6!!!VVV^^B%:%E;BJJrxx01r+   c                    | j                         \  }}}||f}t        j                  ddd      }t        j                  ddd      }|d d d f   |d d d f   f}t        ||||d      }	|	j                  dk(  sJ t        j
                  ||      \  }
}t        j                  |
j                  j                         |j                  j                         f   }t        ||||d      }t        |	|j                  |	j                               y )Nr   rZ   r.   rm   Fr  r  )r  r   r   r
   r   ry   c_r   ravelr   r   )r"   r   rs   rt   r$   r#   r(  yirD   rF   xxyyrG   s                r)   test_xi_broadcastzTestInterpN.test_xi_broadcast^  s     ++-1fQ[[Aq![[Aq!QW+r$'{+VVVFOxx6!!!R$Brttzz|RTTZZ\12VVV"8BJJrxx01r+   r   c           
         |dk(  rt        j                  d       dgdz  dgdz  z   }t        j                  j	                  d      }|j                  d      }|j                  d      }t        ||||d	
      }|j                  dk(  sJ |       t        d      D cg c]  }t        ||d|f   ||d	
       }}t        j                  |      j                  ddd      }	t        ||	d|       y c c}w r:  )rO   rf   r   r   r  r
   r   r  r_   rB  r   )
r"   r   r#   r  r$   rD   rC  rE  rD  rG   s
             r)   rF  z!TestInterpN.test_nonscalar_valuesr  s    YKK( 11A5,9
9  ii##D)O,I&FFF6!&(ww)#+V+# 498=./ ffS!VnfV#(* = =XXb\##Aq!,2E6:	=s   C0c                 H   |dv rt        j                  d       g d}t        j                  j	                  d      }d}|j                  dddd	g|      }|j                  d
      }t        ||||d      }|j                  dg|k(  sJ t        |j                  d         D 	cg c]<  }t        |j                  d         D 	cg c]  }	t        ||d|	|f   ||d       c}	> }
}}	t        |t        j                  |
      j                  d|       y c c}	w c c}	}w )N>   rI   rJ   r;  rI  r   rM  r   r   r  rN  r   Fr  rZ   r   rO  .rv   r?  )rO   rf   r   r   r  r
   r   r  r   r   r   )r"   r   r#   r  rW  r$   rD   rC  rE  r  rD  s              r)   rX  z#TestInterpN.test_nonscalar_values_2  s&    ))KK(D
 ii##D) Q1a:/:;AFFF6N ww1///// v||B/02  6;6<<;K5L01 sAqy 16&%*, 2 2
 	2::b>++%H 2s   (DD$DDc                 "   | j                         \  }}t        j                  j                  d       t        j                  j	                  ddddd      }t        j                  j	                  ddd      }t        t        t        |||d       y )	Nr   rm   r   r   r   r   r  rB   )r  r   r   r   r   r`   rP   r
   )r"   r#   r$   rD   s       r)    test_non_scalar_values_splinef2dz,TestInterpN.test_non_scalar_values_splinef2d  si    --/
		t1aA.2q)j'666(	*r+   c                 l   |dk(  rt        j                  d       | j                         \  }}}||f}|d|z  z
  }t        j                  g dg dg      j
                  }t        ||||      }t        ||j                  ||      }t        ||j                  ||      }	|d|	z  z   }
t        ||
       y )NrK   rc   rd   r  r  rB   re   )
rO   rf   r  r   r_   r   r
   rg   rh   r   )r"   r   rs   rt   r$   r#   rD   rF   v2rv2irG   s              r)   rk   zTestInterpN.test_complex  s    WKKDE++-1fQ"V)#::< ==>Q 	 VVVF;ffkk6&Affkk6&A2c6\Br+   c                    | j                         \  }}}||f}|d|z  z
  }t        j                  g dg dg      j                  }t	        j
                  t        d      5  t        |||d       d d d        y # 1 sw Y   y xY w)Nrd   r  r  rg   rM   rK   rB   )r  r   r_   r   rO   r   rP   r
   r"   rs   rt   r$   r#   rD   s         r)   test_complex_pchipzTestInterpN.test_complex_pchip  s     ++-1fQ"V)#::< ==>Q 	]]:V4 	<FFF7;	< 	< 	<s   !A::Bc                     | j                         \  }}}||f}|d|z  z
  }t        j                  g dg dg      j                  }t	        t
              5  t        |||d       d d d        y # 1 sw Y   y xY w)Nrd   r  r  r  rB   )r  r   r_   r   r   r   r
   r  s         r)   test_complex_spline2fdz"TestInterpN.test_complex_spline2fd  s     ++-1fQ"V)#::< ==>Q 	.) 	@FFF;?	@ 	@ 	@s   A..A7r   rU   r   c                     t        j                  ddd      }t        j                  ddd      }t        d      }t        ||f|ddg|	      }t        ||f|j                  ddg|	      }t        ||d
       y )Nr   r.   r   rZ   r   r   r   r   rB   Fr   )r   r   r   r
   r   r   )r"   r   rs   rt   r$   rF   rG   s          r)   r   z"TestInterpN.test_duck_typed_values  sq    
 KK1a KK1a aVVc3Z?aVVYYc
6BBE2r+   c                    t        j                  ddd      }t        j                  ddd      }t        t         j                  j	                  dd            }t         j                  j	                  ddd      }t        ||f|||      }t        ||ft        j                  |      ||      }|dk(  rt        ||d	d
       yt        ||       y)z8np.matrix inputs are allowed for backwards compatibilityr   r.   r   rZ   r   rm   rB   rJ   g-C6
?g>rw   N)r   r   r   r   r   r
   r   r   )r"   r   rs   rt   r$   rD   rF   rG   s           r)   test_matrix_inputzTestInterpN.test_matrix_input  s     KK1a KK1a 		q!,-1a(aVVVF;aVRZZ/GYBD9B#r+   c                 :   t        j                  g dg      }t        j                  ddgddgddgg      }t        dgg df||      }g d}t        ||d	       t        j                  d
dgddgddgg      }t        dgg df||dd       }t        ||d	       y )N)r=   rZ   r   rZ   g@g	@gffffff@)r.   rm   r   )gQ?gffffff@gffffff @r\   r]   r   r4   gffffffFr   )r   r_   r
   r   )r"   r$   r(  r  r   s        r)   r   z TestInterpN.test_length_one_axis  s    
 <.)XX3x!SAs845sI&3 	V%0 XXSzC:c{;<sI&#(T; 	V%0r+   c           	      P   d }t        j                  g d      }t        j                  g d      }t        j                  g d      }t        j                  g d      }||||f} |t        j                  |ddd }dd	t        j                  t        j                  d
dd            t        j                  d
d	d      f}t        |||      }	|d d d   }
|d d d   }|d d d   }|d d d   }|
|||f} |t        j                  |ddd }t        |||      }t        |	|       y )Nc                 0    d| dz  z  d|dz  z  z   |z
  |z
  S r  rq   r  s       r)   value_func_4dz9TestInterpN.test_descending_points.<locals>.value_func_4d  s'    qAv:AF
*Q.22r+   )r   rZ   r.   rm   )r   r   r   r   )r   r=   r@   r   rn   Tr   r=   r   r   r   r   r   )r   r_   ry   rB  r   r
   r   )r"   r  x1x2x3x4r#   r$   ra  correct_result
x1_descend
x2_descend
x3_descend
x4_descendpoints_shuffledvalues_shuffledtest_results                    r)   test_descending_pointsz"TestInterpN.test_descending_points  s!   	3 XXl#XXo&XXo&XX&'b"b![[&4=?Cbkk!R&;<{{1c1%' 5"X
"X
"X
"X
%z:zJ'[[/DFHoD4r+   c                 t   t        j                  g d      }t        j                  g d      }t        j                  g dg dg dg dg dg      }t        j                  g dg dg      j                  }d}t        j                  t
        |	      5  t        ||f||       d d d        y # 1 sw Y   y xY w)
Nr1  r4  r  r  r  r  r  r5  rM   )r   r_   r   rO   r   rP   r
   )r"   rs   rt   r   r(  rN   s         r)   r6  z%TestInterpN.test_invalid_points_order3  s    HH*+HH*+HHo%8 9XX679 ::;! 	 ;]]:U3 	#QFAr"	# 	# 	#s   B..B7c                     dg}ddg}t        j                  d      }d}t        t        |      5  t	        |||       d d d        y # 1 sw Y   y xY w)N)r   rZ   r   rZ   )rZ   rZ   rm   zaThe requested sample points xi have dimension 3, but this RegularGridInterpolator has dimension 1rM   )r   r   r`   rP   r
   )r"   r#   r$   r(  msgs        r)   test_invalid_xi_dimensionsz&TestInterpN.test_invalid_xi_dimensions?  sR    QWWY9:S1 	(FFB'	( 	( 	(s   AAc                    t        j                  ddd      }t        j                  ddd      }t        j                  ddd      }|||f}t        j                  d      }t        j                  g d      }|D ]  }d|j                  _         d|j                  _        d|j                  _        t        |||        t        ||      |       y )	Nr   r   r   r   r   r   r   r   Gz@(\@gffffff?Fr   r   r   r_   flags	writeabler
   r	   )r"   rs   rt   r   r#   r$   pointds           r)   test_readonly_gridzTestInterpN.test_readonly_gridI  s    KK1a KK1a KK1a Q#+, 	&A %AGG	&!& %&//6r+   c                 r   t        j                  ddd      }t        j                  ddd      }||f}t        j                  d      }t        j                  ddg      }|D ]  }d|j                  _         d|j                  _        d|j                  _        t        |||        t        ||      |       y )	Nr   r   r   r   r   r   r  r  Fr  )r"   rs   rt   r#   r$   r  r  s          r)   test_2d_readonly_gridz!TestInterpN.test_2d_readonly_gridX  s     KK1a KK1a Q$& 	&A %AGG	&!& %&//6r+   c                    t        j                  ddd      }t        j                  |t        j                  |      f      j                  j                         d d df   }|j                  j                  rJ t        j                  ddd      }t        j                  ddd      }|||f}t        j                  d      }t        j                  g d      }t        |||        t        ||      |       y )Nr   r   r   r   r   r  r  )r   r   r   
empty_liker   r  r  c_contiguousr   r_   r
   r	   )r"   rs   rt   r   r#   r$   r  s          r)   test_non_c_contiguous_gridz&TestInterpN.test_non_c_contiguous_gridg  s    KK1a IIq"--*+,..335ad;77''''KK1a KK1a Q#+,&//6r+   r   z>f8z<f8c                    t        j                  ddd|      }t        j                  ddd|      }||f}t        j                  d|      }t        j                  ddg|      }t	        |||        t        ||      |       y )	Nr   r   r   r   r   r  r  r  )r   r   r   r_   r
   r	   )r"   r   rs   rt   r#   r$   r  s          r)   test_endiannesszTestInterpN.test_endiannesst  sw     KK1au-KK1au-Qu-$U3&//6r+   N)&rv  rw  rx  r  r  ry  rH   r  r  r  r  r  r  r  r  r  rO   rz  r|  rF  rX  r  rk   r  r  r  r{  r   r   r  r   r  r6  r  r  r  r  r  rq   r+   r)   r  r    s   > $0 $0;&=2=2 2 $2 $2& [[1#; $ ;0 $I $I@* $  $ $ [[	< 	< [[	@ 	@ [[	93	3 #$ $ $"1,54
#(777 [[Wuen5	7 6	7r+   r  )!r   rO   numpyr   numpy.testingr   scipy._lib._array_apir   r   r   scipy.conftestr   r   r`   scipy.interpolater	   r
   r   r   r   scipy.sparse._sputilsr   scipy._lib._utilr   scipy._lib._testutilsr   rz  r{  _ALL_METHODSry  r   r   r  rq   r+   r)   <module>r     s       &  / *L L ) + 9 "(!8!8%22" r
7 r
7j6 6(Z7 Z7r+   