
    e!h+                     >   d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ d dlmZ ej                  j!                  de
eeg      Zej                  j!                  dd      Zej                  j!                  d	d
      Z G d d      Z G d d      Z G d d      Zy)    N)xp_assert_equalxp_assert_close)raises)griddataNearestNDInterpolatorLinearNDInterpolatorCloughTocher2DInterpolator)_run_concurrent_barrierinterpolatormethod)nearestlinearcubicrescale)TFc                       e Zd Zd Zeed               Zeed               Zeed               Zeed               Z	ed        Z
d Zed        Zed	        Zed
        Zy)TestGriddatac                     g d}g d}t        ||g dd      }t        |g d       t        ||g d      }t        |t        j                  t        j                  dg       y )N)r   r   r      r   r   )r         )r   r   )r   r   r   )
fill_value)g      r   r   r   )r   r   npnan)selfxyyis       o/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/interpolate/tests/test_ndgriddata.pytest_fill_valuezTestGriddata.test_fill_value   sO    !a1bAL)a12RVVRVVQ/0    c                    t        j                  g dt         j                        }t        j                  |j                  d   t         j                        d d d f   t        j                  ddg      d d d f   z   }t        ||f      }t        |d d df   |d d df   f||d d df   |d d df   f||      }t        ||d|       y Nr   )      r)   )r)         ?)r*   r*   )g      ?g333333?dtyper   r   r   r   +=atolerr_msgr   arrayfloat64arangeshapereprr   r   r   r   r   r    r!   msgr"   s          r#   test_alternative_callz"TestGriddata.test_alternative_call'   s     HHN::'YYqwwqz4QtV<xx1tAv&' FG$%q1vq1v&AacFAacF+;F%'2E37r%   c                 Z   t        j                  g dt         j                        }t        j                  |j                  d   t         j                        d d d f   t        j                  ddg      d d d f   z   }t        ||f      }t        |||||      }t        ||d|       y r'   r2   r8   s          r#   test_multivalue_2dzTestGriddata.test_multivalue_2d4   s     HHN::'YYqwwqz4QtV<xx1tAv&' FG$%aAfg>2E37r%   c                    t        j                  g dt         j                        }t        j                  |j                  d   t         j                        }|d d d d d f   t        j                  g d      d d d d f   z   }t        ||f      }t        |||||      }|j                  dk(  sJ |       t        |t        j                  |d d d f   d      d|	       y )
Nr(   r+   r   r   r   r   r-      r   r   r   r.   r/   	r   r3   r4   r5   r6   r7   r   r   tiler   r   r   r    r!   xir9   r"   s           r#   test_multipoint_2dzTestGriddata.test_multipoint_2d@   s     HHN::'IIaggaj

3qax[288G,T!D[99FG$%aBvw?xx6!&3&!BGGAafIv6"C	1r%   c                    t        j                  g dt         j                        }t        j                  |j                  d   t         j                        }|d|d d d   z  z
  }|d d d d d f   t        j                  g d      d d d d f   z   }t        ||f      }t        |||||      }|j                  dk(  sJ t        |t        j                  |d d d f   d	      d
|       y )Nr(   r+   r                  @r   r>   r-   r?   rA   r.   r/   rB   rD   s           r#   test_complex_2dzTestGriddata.test_complex_2dP   s     HHN::'IIaggaj

31TrT7
Nqax[288G,T!D[99FG$%aBvw?xx6!!!BGGAafIv6"C	1r%   c                 ,   t        j                  g d      }t        j                  g d      }t        t        ||||      ||d       t        t        |j	                  dd      |||      ||d       t        t        |f||f|      ||d       y )Nr         @r         @r@      r   r   r   g333333@r   r   r   r.   r1   r0   rN   r   r   r3   r   r   reshaper   r   r    r!   s       r#   test_1dzTestGriddata.test_1da       HH+,HH)*Aq8! &U	41a!QvF &U	4!q1$v> &U	4r%   c                    t        j                  g d      }t        j                  g d      }t        j                  ddg      }t        j                  ddg      }d}t        t        ||||      ||d	       t        t        |j	                  d
d      |||      ||d	       t        t        |f||f|      ||d	       y )NrK   rO   ?g      @      ?r   rP   r.   rQ   rN   r   rR   )r   r    r!   rE   	yi_shouldr   s         r#   test_1d_borderszTestGriddata.test_1d_bordersm   s     HH+,HH)*XXsCj!HHc3Z(	Ar(.01: &"	$ 	1a!R(.01: &"	$ 	!B6(.01: &"	$r%   c                 ,   t        j                  g d      }t        j                  g d      }t        t        ||||      ||d       t        t        |j	                  dd      |||      ||d       t        t        |f||f|      ||d       y )N)rL   r   rM   r@   rN   r   rO   rP   g|=rQ   rN   r   rR   rT   s       r#   test_1d_unsortedzTestGriddata.test_1d_unsorted   rV   r%   c           	         t        j                  g dt         j                        }t        j                  g dt         j                        }t        j                  g dt         j                        }t        j                  t        j                  ddd      d d d f   t        j                  ddd      d d d f         \  }}|j                         }|j                         }t        j                  ||g      j                  j                         }|}t        |||t        j                  dd	g      z  |
      }	t        ||||d      }
t        |	|
|d       y )N)r   )r   d   )
   r_   )r`   r   )r   r@   r+   )r   r   r   r   )皙?g?)rY          @g      g      @g      "@r   r`      r_   g      Y@rP   Tr-   g-q=rQ   )
r   r3   r4   broadcast_arrayslinspaceravelTcopyr   r   )r   r   pointspoints_rescaledvaluesxxyyrE   r9   zizi_rescaleds              r#   test_square_rescale_manualz'TestGriddata.test_square_rescale_manual   s   DBJJW((#L)+5/rzzB$$R[[B%;AdF%C%'[[C%<T!V%DFBXXZXXZXXr2h!!&&(ovr"((B:2F/F#%vvr&'+-K"	$r%   c                 $   t        j                  g dt         j                        }t        j                  |j                  d   t         j                        }|d|d d d   z  z
  }t        j                  ddg      }t        ||||      }t        |||d d d f   |      }t        |||       t        j                  dg      }t        j                  g d	      }t        t        t
        ||||       t        t        t
        ||||       y )
Nr(   r+   r   rH   r   r*   rP   )r1   )r*   r*   r*   )	r   r3   r4   r5   r6   r   r   assert_raises
ValueError)	r   r   r    r!   rE   p1p2xi1xi3s	            r#   
test_xi_1dzTestGriddata.test_xi_1d   s     HHN::'IIaggaj

31TrT7
NXXsCj!aBv.aBtAvJv6B/hhuohh'j(Aq##	%j(Aq##	%r%   N)__name__
__module____qualname__r$   parametrize_methodsparametrize_rescaler:   r<   rF   rI   rU   r[   r]   rp   rx    r%   r#   r   r      s    1 	8  	8 8  8 1  1 1  1 	4 	4$, 	4 	4 $ $( % %r%   r   c                   \    e Zd Zd Zd Zd Zd Zej                  j                  d        Z
y)TestNearestNDInterpolatorc                     d\  }}t        j                  ||z        j                  ||f      }t        j                  |      }t        ||      }ddd}t        |||      }t	         ||       ||      d       y )N)   r   F)balanced_treecompact_nodes)tree_optionsr.   )r0   )r   r5   rS   r   r   )r   nptsndr    r!   nndioptsnndi_os           r#   test_nearest_optionsz.TestNearestNDInterpolator.test_nearest_options   sq    bIId2g&&bz2IIdO$Q*!&?&q!$?Q7r%   c                 (   t        j                  g dg dg dg      }|d d dd f   }t        |d   |d   f|d         }t         |dd	gdd	g      d
dg       t        |d   |d   ft	        |d               }t         |dd	gdd	g      d
dg       y )N)r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   ra   rX           rb   )r   r3   r   r   list)r   r   dNIs       r#   test_nearest_list_argumentz4TestNearestNDInterpolator.test_nearest_list_argument   s    XX,,,. / q!"uI #AaD!A$<16C:Sz2S#J? #AaD!A$<ad<C:Sz2S#J?r%   c                 >   t        j                  g dg dg dg      }d}d|z   d|z   gd|z   d|z   gf}t        |d   |d   f|d         }t        j                  |dz  |dz  z         dz
  }t	         |||	      t         j
                  t         j
                  g       t        j                  |dz  |dz  z         dz
  }t         j                  }t	         ||||
      ddg       t        j                  |dz  |dz  z         dz   }t	         |||	      ddg       y )N)r   r*   r   r   )r   r   r*   r   r   r   r   r   ra   r   r   r   gHz>)distance_upper_bound)r   pr   rb   )r   r3   r   sqrtr   r   inf)r   r   deltaquery_pointsr   r   r   s          r#   test_nearest_query_optionsz4TestNearestNDInterpolator.test_nearest_query_options   s.   XX~%#% & E	1u9-E	1u9/EE #BqE2a5>2a59!wwuzEQJ'>?$F<>RSFFBFF+	-  "wwuzEQJ'>?$FFF|2F!L#J	
  "wwuzEQJ'>?$F|2FG#J	
r%   c                     t        j                  g dg dg dg      }t        |d   |d   f|d         }t        t              5   |ddgd	       d d d        y # 1 sw Y   y xY w)
N)r   r   r   r   )r   r   r   r   r   r   r   r   r*   znot a dictionary)query_options)r   r3   r   rr   	TypeError)r   r   r   s      r#   test_nearest_query_valid_inputsz9TestNearestNDInterpolator.test_nearest_query_valid_inputs   sg    XX|##% & #BqE2a5>2a599% 	=Sz);<	= 	= 	=s   AA$c                     d\  }}t        j                  ||z        j                  ||f      t        j                  |      }t        |      }fd}t	        d||       y )N)2   r   c                      |       y )Nr~   )_splr    s     r#   	worker_fnz=TestNearestNDInterpolator.test_concurrency.<locals>.worker_fn   s
    Fr%   r`   )r   r5   rS   r   r
   )r   r   r   r!   r   r   r    s         @r#   test_concurrencyz*TestNearestNDInterpolator.test_concurrency   sY    bIIdRi (($4IIdO$Q*	 	 It4r%   N)ry   rz   r{   r   r   r   r   pytestmarkthread_unsafer   r~   r%   r#   r   r      s5    	8@
:= [[	5 	5r%   r   c                   ,    e Zd Zed        Zed        Zy)TestNDInterpolatorsc                 .   t         j                  j                  d      }|j                  d      }|j                  d      }t        j                  ||      }t        j                  t        |      t        |            }t        j                  t        |      t        |            }t        j                  ||      \  }}t        j                  |j                         |j                         f      j                  } |t        t        ||            |      }	 |	|      }
 |	||f      } |	|df      } |	||      } |	|d      }|
j                  |j                  cxk(  r0|j                  cxk(  r |j                  cxk(  r|j                  k(  sJ  J y )Nr   r`   r   )r   randomRandomStatehypotre   minmaxmeshgridvstackrf   rg   r   zipsize)r   r   rngr    r!   zXYXYinterpinterp_points0interp_points1interp_points2interp_points3interp_points4s                  r#   test_broadcastable_inputz,TestNDInterpolators.test_broadcastable_input  sU    ii##A&JJrNJJrNHHQN KKAA'KKAA'{{1a 1YY	1779-.00d3q!9oq1AC)13####$##$ ##$ ##	$ 	% $ 	% $r%   c                 d   t         j                  j                  d      }|j                  d      }|d d df   |d d df   }}t        j                  ||      }|j                  d      }|j	                  d       |j	                  d       |j	                  d        |||      } ||       y )Nr   )r`   r   r   )r   r   F)write)r   r   r   r   setflags)	r   r   r   xyr    r!   r   r   r   s	            r#   test_read_onlyz"TestNDInterpolators.test_read_only$  s     ii##A&ZZ !Q$xAqD1HHQN ZZ 
% 	



% b!$r
r%   N)ry   rz   r{   parametrize_interpolatorsr   r   r~   r%   r#   r   r     s(    % %8  r%   r   )numpyr   scipy._lib._array_apir   r   r   r   rr   scipy.interpolater   r   r   r	   scipy._lib._testutilsr
   r   parametrizer   r|   r}   r   r   r   r~   r%   r#   <module>r      s      *; ; : #KK33*,@/1  kk--"  kk-- [% [%|I5 I5X. .r%   