o
    5ήc                     @   sN   d dl Z d dl mZ d dlmZmZmZ d dlZd dlmZ G dd dZ	dS )    N)fft)assert_almost_equalassert_array_almost_equalassert_equal)ndimagec                   @   s.  e Zd Zejdg dejdejdfejdfgdd Z	ejddd	gejdej
dfejdfgd
d Zejdg dejdejdfejdfgdd Zejddd	gejdej
dfejdfgdd Zejddd	gejdejdfejdfgdd Zejddd	gejdej
dfejdfgdd Zejdg dejdejdfejdfgdd Zejddd	gejdej
dfejdfgdd Zdd Zdd Zejdg dejd ejejej
ejgejd!ejejejgd"d# Zd$S )%TestNdimageFouriershape)             )   
   z
dtype, dec      c                 C   s   t ||}d|d< t||d d}t||d d}t|ddg|d d}t||d d}t||d d}tt	|d|d d S N      ?r   r   r   r         @      @decimal)
numpyzerosr   rfftr   fourier_gaussianifftirfftr   sumselfr   dtypedeca r&   G/tmp/pip-target-vg8gfxp4/lib/python/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01      z/TestNdimageFourier.test_fourier_gaussian_real01r	   r   c                 C      t ||}d|d< t||d d}t||d d}t|ddgdd}t||d d}t||d d}tt|jd|d d S 	Nr   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r    realr!   r&   r&   r'   test_fourier_gaussian_complex01      z2TestNdimageFourier.test_fourier_gaussian_complex01c                 C      t ||}d|d< t||d d}t||d d}t|ddg|d d}t||d d}t||d d}tt	|d|d d S r   )
r   r   r   r   r   fourier_uniformr   r   r   r    r!   r&   r&   r'   test_fourier_uniform_real01'   r)   z.TestNdimageFourier.test_fourier_uniform_real01c                 C   r*   r+   )	r   r   r   r   r1   r   r   r    r-   r!   r&   r&   r'   test_fourier_uniform_complex014   r/   z1TestNdimageFourier.test_fourier_uniform_complex01      c                 C   s   t j|d |d  |d}||_t||d d}t||d d}t|ddg|d d}t||d d}t||d d}t	|dd dd f |d dd df |d t	|j
t ||d d S Nr   r   r#   r,   r   )r   aranger   r   r   r   fourier_shiftr   r   r   imagr   r"   r   r#   r$   expectedr%   r&   r&   r'   test_fourier_shift_real01A   s   &
z,TestNdimageFourier.test_fourier_shift_real01c                 C   s   t j|d |d  |d}||_t||d d}t||d d}t|ddgdd}t||d d}t||d d}t|jdd dd f |d dd df |d t|j	t 
||d d S r6   )r   r8   r   r   r   r9   r   r   r-   r:   r   r;   r&   r&   r'   test_fourier_shift_complex01Q   s   (
z/TestNdimageFourier.test_fourier_shift_complex01   c                 C   r0   r   )
r   r   r   r   r   fourier_ellipsoidr   r   r   r    r!   r&   r&   r'   test_fourier_ellipsoid_real01a   s   z0TestNdimageFourier.test_fourier_ellipsoid_real01c                 C   r*   r+   )	r   r   r   r   r@   r   r   r    r-   r!   r&   r&   r'    test_fourier_ellipsoid_complex01o   r/   z3TestNdimageFourier.test_fourier_ellipsoid_complex01c                 C   sL   t jdt jd}tt t|d}W d    d S 1 sw   Y  d S )N)r4   r      r   r7      )r   ones
complex128pytestraisesNotImplementedErrorr   r@   )r"   xr%   r&   r&   r'   )test_fourier_ellipsoid_unimplemented_ndim|   s   "z<TestNdimageFourier.test_fourier_ellipsoid_unimplemented_ndimc                 C   sj   dD ]0}t tjtjgddgD ]"\}}tj||d}t|ddd}t|ddd}t|||d qqd S )N))r
   )r   r?   r   r7   r,   r   r   )	zipr   	complex64rF   rE   r   r@   r1   r   )r"   r   type_r$   rJ   r%   br&   r&   r'   !test_fourier_ellipsoid_1d_complex   s   z4TestNdimageFourier.test_fourier_ellipsoid_1d_complex))r   )r   r   )r   r   r#   	test_funcc                 C   s$   t ||}||d}t|| d S )NrD   )r   rE   r   )r"   r   r#   rQ   r%   rO   r&   r&   r'   test_fourier_zero_length_dims   s   	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)__name__
__module____qualname__rG   markparametrizer   float32float64r(   rM   rF   r.   r2   r3   r=   r>   rA   rB   rK   rP   r   r@   r   r1   rR   r&   r&   r&   r'   r      sp    





r   )
r   r   numpy.testingr   r   r   rG   scipyr   r   r&   r&   r&   r'   <module>   s    