
    e!hV                         d dl Z d dlZd dlmZmZmZmZ d dlZd dl	m
Z
 d dlmZ ej                  j                  Zeej                  j                  d       edddg	      gZ edd
       G d d             Zy)    N)xp_assert_equalassert_array_almost_equalassert_almost_equalis_cupy)ndimage)array_api_compatibleskip_xp_backendsTcupyz	jax.numpy)cpu_only
exceptionszjax-ml/jax#23827)reasonc                   r   e Zd Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  dd	d
g      d               Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  dd	d
g      d               Z	ej                  j                  dddg      ej                  j                  dddg      d               Z
ej                  j                  dddg      ej                  j                  dddg      d               Zej                  j                  dg d      ej                  j                  dddg      d               Zej                  j                  dddg      ej                  j                  ddd
g      d               Zd Zd Zej                  j                  dg d      ej                  j                  dg d      ej                  j                  dej"                  ej$                  ej&                  g      d                      Zy) TestNdimageFouriershape)             )   
   z
dtype, dec)float32   )float64   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y Nfftdtype      ?r   r   r   naxisr         @      @Fdecimalcheck_0d)getattrnpzerosasarrayrfftr   r   fourier_gaussianifftirfftr   sumselfr   r!   decxpr   as          h/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01z/TestNdimageFourier.test_fourier_gaussian_real01   s     b% HHU%($JJqMHHQ%(H+GGAqG*$$Qc
E!Ha@HHQ%(H+IIa58!I,GKKNBJJqM3%*	,    r   r   )	complex64r   )
complex128r   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y Nr   r    r"   r#   r   r$   r   r'   r(   Fr)   )r,   r-   r.   r/   r   r   r1   r2   r   r4   realr5   s          r:   test_fourier_gaussian_complex01z2TestNdimageFourier.test_fourier_gaussian_complex01)   s     b% HHU%($JJqMGGAqG*GGAqG*$$Qc
B:HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r<   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y r   )r,   r-   r.   r/   r0   r   r   fourier_uniformr2   r3   r   r4   r5   s          r:   test_fourier_uniform_real01z.TestNdimageFourier.test_fourier_uniform_real01:   s     b% HHU%($JJqMHHQ%(H+GGAqG*##ASz58Q?HHQ%(H+IIa58!I,GKKNBJJsOS%*	,r<   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y r@   )r,   r-   r.   r/   r   r   rE   r2   r   r4   rB   r5   s          r:   test_fourier_uniform_complex01z1TestNdimageFourier.test_fourier_uniform_complex01K   s     b% HHU%($JJqMGGAqG*GGAqG*##ASz2q9HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r<   )r      )r      c                    t        |d      }t        j                  |d   |d   z  |      j                  |      }|j	                  |      }|j                  ||d   d      }|j                  ||d   d      }t        j                  |ddg|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        |dd dd f   |d dd df   |       y Nr   r   r   r    r$   rA   r*   )r,   r-   arangereshaper/   r0   r   r   fourier_shiftr2   r3   r   r6   r   r!   r7   r8   r   expectedr9   s           r:   test_fourier_shift_real01z,TestNdimageFourier.test_fourier_shift_real01\   s     b% 99U1Xa0>FFuM::h'HHXqH2GGAqG*!!!aVU1Xq9HHQ%(H+IIa58!I,!!ABF)Xcrc3B3h-?Mr<   )r=   rI   )r>   rJ   c                 >   t        |d      }t        j                  |d   |d   z  |      j                  |      }|j	                  |      }|j                  ||d   d      }|j                  ||d   d      }t        j                  |ddgdd      }|j                  ||d   d      }|j                  ||d   d      }t        |j                  |      dd dd f   |d dd df   |       t        |j                  |      |j                  |      |       y rL   )r,   r-   rN   rO   r/   r   r   rP   r2   r   rB   imagr.   rQ   s           r:   test_fourier_shift_complex01z/TestNdimageFourier.test_fourier_shift_complex01k   s    b% 99U1Xa0>FFuM::h'GGHaqG1GGAqG*!!!aVR3HHQ%(H+HHQ%(H+!"''!*QRV"4hssCRCx6HRUV!"''!*bhhuosKr<   )r      c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j                  ||d   d      }t        j                  |dd	g|d   d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |      |j                  d      |d
       y r   )r,   r-   r.   r/   r0   r   r   fourier_ellipsoidr2   r3   r   r4   r5   s          r:   test_fourier_ellipsoid_real01z0TestNdimageFourier.test_fourier_ellipsoid_real01{   s     b% HHU%($JJqMHHQ%(H+GGAqG*%%a#sU1XqAHHQ%(H+IIa58!I,GKKNBJJsOS%*	,r<   )r=   rW   c                    t        |d      }t        j                  ||      }d|d<   |j                  |      }|j	                  ||d   d      }|j	                  ||d   d      }t        j                  |dd	gd
d      }|j                  ||d   d      }|j                  ||d   d      }t        t        j                  |j                  |            |j                  d      |d       y r@   )r,   r-   r.   r/   r   r   rY   r2   r   r4   rB   r5   s          r:    test_fourier_ellipsoid_complex01z3TestNdimageFourier.test_fourier_ellipsoid_complex01   s     b% HHU%($JJqMGGAqG*GGAqG*%%a#sR;HHQ%(H+HHQ%(H+GKK
3RZZ_c%*	,r<   c                     |j                  d|j                        }t        j                  t              5  t        j                  |d       d d d        y # 1 sw Y   y xY w)N)rI   r      r   r       )onesr>   pytestraisesNotImplementedErrorr   rY   )r6   r8   xs      r:   )test_fourier_ellipsoid_unimplemented_ndimz<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndim   sJ    GGMG7]]./ 	,%%a+	, 	, 	,s   AA c                    dD ]  }t        |j                  |j                  gddg      D ]V  \  }}|j                  ||      }t	        j
                  |ddd      }t	        j                  |ddd      }t        |||       X  y )N))r   )r   rW   r   r    rA   r   rM   )zipr=   r>   r`   r   rY   rE   r   )r6   r8   r   type_r7   rd   r9   bs           r:   !test_fourier_ellipsoid_1d_complexz4TestNdimageFourier.test_fourier_ellipsoid_1d_complex   s    % 	=E!2<<"?!RI =
sGGEG/--aB:++Aq"a8)!Q<	=	=r<   ))r   )r   r   )r   r   r!   )r   r   r=   r>   	test_funcc                     t        |      r<|j                  dk(  r-t        j                  |      dk(  rt	        j
                  d       t        ||      }|j                  ||      } ||d      }t        ||       y )NrY   r   z7CuPy's fourier_ellipsoid does not accept size==0 arraysr    r_   )	r   __name__mathprodra   xfailr,   r`   r   )r6   r   r!   rk   r8   r9   ri   s          r:   test_fourier_zero_length_dimsz0TestNdimageFourier.test_fourier_zero_length_dims   so     2;!!%88yy1$||L E"GGEG'aO1r<   N)rm   
__module____qualname__ra   markparametrizer;   rC   rF   rH   rS   rV   rZ   r\   re   rj   r   rY   r1   rE   rq    r<   r:   r   r      s    [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <, [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <, [[Wx&:;[[\NO+LMN N <N [[Wx&:;[[\,<>P+QRL S <L [[W&CD[[\NO+LM, N E, [[Wx&:;[[\,<>P+QR, S <,,= [[W&?@[[W 'B C[[[%77%66%5578
	8C A
r<   r   )rn   numpyr-   scipy._lib._array_apir   r   r   r   ra   scipyr   scipy.conftestr   rt   r	   usefixtures
pytestmarkr   rv   r<   r:   <module>r}      s         /;;// "FKK$;$;<N$O&+9NPR
 +&89g g :gr<   