U
    ?h                     @   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                   @   s6  e Zd Zejd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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ddgejdej
dfejdfgdd Zejd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dd Zdd Zejddd d!g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$   R/var/www/html/venv/lib/python3.8/site-packages/scipy/ndimage/tests/test_fourier.pytest_fourier_gaussian_real01   s    z/TestNdimageFourier.test_fourier_gaussian_real01c                 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|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   s    z2TestNdimageFourier.test_fourier_gaussian_complex01c                 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 r   )
r   r   r   r   r   fourier_uniformr   r   r   r   r   r$   r$   r%   test_fourier_uniform_real01'   s    z.TestNdimageFourier.test_fourier_uniform_real01c                 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|jd|d d S r'   )	r   r   r   r   r+   r   r   r   r)   r   r$   r$   r%   test_fourier_uniform_complex014   s    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 r0   )r   r2   r   r   r   r3   r   r   r)   r4   r   r5   r$   r$   r%   test_fourier_shift_complex01Q   s    (z/TestNdimageFourier.test_fourier_shift_complex01   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 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   s   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 r'   )	r   r   r   r   r:   r   r   r   r)   r   r$   r$   r%    test_fourier_ellipsoid_complex01o   s    z3TestNdimageFourier.test_fourier_ellipsoid_complex01c              	   C   s6   t jdt jd}tt t|d}W 5 Q R X d S )N)r.   r      r   r1      )r   ones
complex128pytestZ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 ]`}t tjtjgddgD ]D\}}tj||d}t|ddd}t|ddd}t|||d qqd S )N))r	   )r   r9   r   r1   r(   r   r   )	zipr   	complex64r@   r?   r   r:   r+   r   )r    r   type_r"   rC   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 )Nr>   )r   r?   r   )r    r   r!   rJ   r#   rH   r$   r$   r%   test_fourier_zero_length_dims   s    	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)__name__
__module____qualname__rA   markZparametrizer   Zfloat32Zfloat64r&   rF   r@   r*   r,   r-   r7   r8   r;   r<   rD   rI   r   r:   r   r+   rK   r$   r$   r$   r%   r      sp   





 r   )
r   r   Znumpy.testingr   r   r   rA   Zscipyr   r   r$   r$   r$   r%   <module>   s
   