o
    j                      @   s
  d dl Zd dlmZ d dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZ dd Zd*dd	Zd
d Zedddd Zedddd Zdd Zdd dD Zeejdd dkddededd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) ZdS )+    N)unwrap_phase)testing)assert_array_almost_equal_nulpassert_almost_equalassert_array_equalassert_skipif)expected_warningsc              
   O   sp  dt j t | |   dt j   }tddg( tdt t | ||   tdt t | ||  |   W d   n1 sFw   Y  t j	| rt
t j	| t| j|j t
| j|jk t | }t |}tddg( tdt t |||   tdt t |||  |  W d   n1 sw   Y  t| | |g|R i | dS )	z=An assert_almost_equal insensitive to phase shifts of n*2*pi.   zinvalid value encountered|\A\Zzdivide by zero encountered|\A\Zzassert_phase_allclose, abszassert_phase_allclose, relNz#assert_phase_allclose, no mask, absz#assert_phase_allclose, no mask, rel)nppiroundmeanr	   printmaxabsmaisMaskedArrayr   r   mask
fill_valueZasarrayr   )abargskwargsshiftauZbu r   f/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/restoration/tests/test_unwrap.pyassert_phase_almost_equal   s2   *$

 
r   c                 C   sb   t t d|  }|d ur$td t jj| |dd} t jj||dd}t|dd}t||  d S )N              ?zTesting a masked imageg      ?)r   r   r   rng)r   angleexpr   r   arrayr   r   )imager   image_wrappedimage_unwrappedr   r   r   check_unwrap+   s   r(   c                  C   s   t ddt j d} t|  tt t| d W d    n1 s#w   Y  tt t| ddd W d    d S 1 s@w   Y  d S )Nr   
   d   Tr    )r   linspacer   r(   r   raises
ValueErrorr   )r%   r   r   r   test_unwrap_1d5   s   "r.   check_with_mask)FTc                 C   sn   d }t jd dd df \}}dt j |d |d   }| r0t j|jtd}d|dd	ddf< t|| d S )
N      r
   皙?皙?ZdtypeT      r   Zogridr   zerosshapeboolr(   )r/   r   xyr%   r   r   r   test_unwrap_2d@   s   r=   c                 C   s   d }t jd dd dd df \}}}dt j |d |d  |d   }| r;t j|jtd}d	|d
dd
dddf< t|| d S )Nr0      r1   r
   r2   r3   g?r4   Tr5   r6         r7   )r/   r   r;   r<   zr%   r   r   r   test_unwrap_3dK   s   ""rB   c           
         sb  dt ddt j }|d |d< |t fddt| D }t t d| }tdg|  }t fddt| D }td	g t	|dd
}W d    n1 sWw   Y  t
d|| ||  tt|| ||  t jk  fddt| D }tdg t	||dd
}	W d    n1 sw   Y  t
d|	| |	|  t|	| |	|  d S )Nr*   r   r>   c                    s   g | ]
}| kr
nd qS r?   r   .0naxiselementsr   r   
<listcomp>[       z%check_wrap_around.<locals>.<listcomp>r   c                    s   g | ]
}| kr
d ndqS )rC   r   r   rE   rI   r   r   rK   _   rL   z#Image has a length 1 dimension|\A\Zr    zendpoints without wrap_around:c                    s   g | ]}| kqS r   r   rE   rM   r   r   rK   r   s    z$Image has a length 1 dimension.|\A\Zzendpoints with wrap_around:)r   r+   r   reshapetupleranger"   r#   r	   r   r   r   r   r   )
ndimrI   Zrampr%   r&   Zindex_firstZ
index_lastZimage_unwrap_no_wrap_aroundwrap_aroundZimage_unwrap_wrap_aroundr   rH   r   check_wrap_aroundV   sH   "rS   c                 C   s"   g | ]}t |D ]}||fqqS r   )rP   )rF   rQ   rI   r   r   r   rK      s   " rK   )r
   r@   r
   )r@   r5   z-Doesn't work with python 3.4. See issue #3079)reasonz
ndim, axisc                 C   s   t | | d S N)rS   )rQ   rI   r   r   r   test_wrap_around   s   rV   c               	   C   s  d} t ddt j | t ddt j | t ddt j | g}t |}t j| ftd}d |d< |d< tt|D ]}t j|j	td}||
d	dO }d||d d f< t jjt t d
| |d}t|}||d 8 }t|d d df ||df  tt j| tdg d|j	 }|
|}	t|	}
|
|
d 8 }
W d    n1 sw   Y  t|
d d d d df ||df  q:d S )Nr*   r   r5   r0   r6   r4   FrC   r?   r   )r   r   r   zlength 1 dimensionrD   r   r   r   )r   r+   r   ZvstackZonesr:   rP   lenr8   r9   rN   r   r$   r"   r#   r   r   r   r   r	   )lengthZrampsr%   Zmask_1dir   r&   r'   r9   Zimage_wrapped_3dZimage_unwrapped_3dr   r   r   	test_mask   s2   
 

&r\   c                   C   s   t t ttg  W d    n1 sw   Y  t t ttd W d    n1 s3w   Y  t t ttdddg  W d    n1 sSw   Y  t t ttdd W d    d S 1 sqw   Y  d S )N)r?   r?   r?   r?   )r?   r?   r@   FFalse)r   r,   r-   r   r   r8   r   r   r   r   test_invalid_input   s   "r^   c                  C   s6   t jdt jd} t| g dd}tt |dk d S )N)      (   r4   )FTF)rR   r   )r   r8   Zfloat32r   r   allr%   unwrapr   r   r   !test_unwrap_3d_middle_wrap_around   s   re   c                  C   s*   t jd} t| }tt |dk d S )Nr)   r)   r   )r   r   r8   r   r   rb   rc   r   r   r   test_unwrap_2d_compressed_mask   s   rg   c                  C      t jd} t jj| d d < t| }tt j| tt |j t jd} t jj| d d < d| d< t| }tt j| tt 	|jdk t|d dk d S )Nrf   r   rW   c   
r   r   r8   Zmaskedr   r   r   rb   r   sumrc   r   r   r   test_unwrap_2d_all_masked   s   rl   c                  C   rh   )N)r)   r)   r)   r   rX   i  rj   rc   r   r   r   test_unwrap_3d_all_masked   s   rm   rU   )numpyr   Zskimage.restorationr   sysZskimage._sharedr   Zskimage._shared.testingr   r   r   r   r   Zskimage._shared._warningsr	   r   r(   r.   Zparametrizer=   rB   rS   Zdim_axisversion_inforV   r\   r^   re   rg   rl   rm   r   r   r   r   <module>   s6    







+
!