a
    BCCf  ã                   @   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&   ú\/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/ndimage/tests/test_fourier.pyÚtest_fourier_gaussian_real01   s    z/TestNdimageFourier.test_fourier_gaussian_real01r	   r   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 |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 r2   )r   r4   r   r   r   r5   r   r   r+   r6   r   r7   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   sJ   t jdt jd}t t¡ t |d¡ W d   ƒ n1 s<0    Y  d S )N)r0   r   é   r   r3   é   )r   ÚonesÚ
complex128ÚpytestZraisesÚNotImplementedErrorr   r<   )r"   Úxr&   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   r;   r   r3   r*   r   r   )	Úzipr   Ú	complex64rB   rA   r   r<   r-   r   )r"   r   Útype_r$   rE   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   rA   r   )r"   r   r#   rL   r%   rJ   r&   r&   r'   Útest_fourier_zero_length_dimsŒ   s    	
z0TestNdimageFourier.test_fourier_zero_length_dimsN)Ú__name__Ú
__module__Ú__qualname__rC   ÚmarkZparametrizer   Zfloat32Zfloat64r(   rH   rB   r,   r.   r/   r9   r:   r=   r>   rF   rK   r   r<   r   r-   rM   r&   r&   r&   r'   r      sn   ÿ
ÿ
ÿ
ÿ
ÿÿÿÿ

ÿÿþÿr   )
r   r   Znumpy.testingr   r   r   rC   Zscipyr   r   r&   r&   r&   r'   Ú<module>   s
   