a
    
d!                     @   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   st  dt j t | |   dt j   }tddgP tdt t | ||   tdt t | ||  |   W d   n1 s0    Y  t j	| rTt
t j	| t| j|j t
| j|jk t | }t |}tddgP tdt t |||   tdt t |||  |  W d   n1 sJ0    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   n/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/restoration/tests/test_unwrap.pyassert_phase_almost_equal   s0    *"

$r   c                 C   sb   t t d|  }|d urHt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 sF0    Y  tt t| ddd W d    n1 s~0    Y  d S )Nr   
   d   Tr    )r   linspacer   r(   r   raises
ValueErrorr   )r%   r   r   r   test_unwrap_1d-   s    (r.   check_with_mask)FTc                 C   sn   d }t jd dd df \}}dt j |d |d   }| r`t 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_2d8   s    r=   c                 C   s   d }t jd dd dd df \}}}dt j |d |d  |d   }| rvt 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_3dC   s    ""rB   c           
         sd  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 s0    Y  t
d|| ||  tt|| ||  t jk  fddt| D }tdg t	||dd
}	W d    n1 s00    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>S   s   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   X       z#Image has a length 1 dimension|\A\Zr    zendpoints without wrap_around:c                    s   g | ]}| kqS r   r   rE   rL   r   r   rK   d   rM   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_aroundN   s@    
*
&rS   c                 C   s"   g | ]}t |D ]}||fqqS r   )rP   )rF   rQ   rI   r   r   r   rK   q   rM   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_aroundt   s    rU   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8 d|j	 }|
|}	t|	}
|
|
d 8 }
W d    n1 sV0    Y  t|
d d d d df ||df  qtd 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.0    Y  t t ttd W d    n1 sf0    Y  t t& ttdddg  W d    n1 s0    Y  t t  ttdd W d    n1 s0    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    ,,4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   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   s   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   rV   c   
r   r   r8   Zmaskedr   r   r   rb   r   sumrc   r   r   r   test_unwrap_2d_all_masked   s    rk   c                  C   s   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 )N)r)   r)   r)   r   rW   i  ri   rc   r   r   r   test_unwrap_3d_all_masked   s    rl   )N)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_inforU   r[   r]   re   rg   rk   rl   r   r   r   r   <module>   s2   







#
 