
    0-Ph                         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 ZddZd Z ej        d	d
          d             Z ej        d	d
          d             Zd Zd dD             Z eej        dd         dk    d           ej        de          d                         Zd Zd Zd Zd Zd Zd ZdS )    N)unwrap_phase)testing)assert_array_almost_equal_nulpassert_almost_equalassert_array_equalassert_skipif)expected_warningsc                    dt           j        z  t          j        |                                |                                 z
  dt           j        z  z            z  }t	          ddg          5  t          dt          j        t          j        | ||z
  z
                                 t          dt          j        t          j        | ||z
  z
  | z                                 ddd           n# 1 swxY w Y   t           j        	                    |           r+t          t           j        	                    |                     t          | j        |j                   t          | j        |j        k               t          j        |           }t          j        |          }t	          ddg          5  t          dt          j        t          j        |||z
  z
                                 t          dt          j        t          j        |||z
  z
  |z                                 ddd           n# 1 swxY w Y   t          | |z   |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_valueasarrayr   )abargskwargsshiftaubus          e/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/restoration/tests/test_unwrap.pyassert_phase_almost_equalr!      s   I!&&((QVVXX"5!be)!DEEEE		*,NO
 
 S S 	*BF26!q5y/3J3J,K,KLLL*BF261E	?a:O3P3P,Q,QRRR	S S S S S S S S S S S S S S S
 
u1 ##A&&'''1616***,---Z]]Z]].0RS
 
 		 		 5rvbfR2PU:EV>W>W7X7X   5rvrR%Z0B67788  		 		 		 		 		 		 		 		 		 		 		 		 		 		 		 #1u9aA$AAA&AAAAAs&   -A8C11C58C58A8H<<I I c                 D   t          j        t          j        d| z                      }|St          d           t           j                            | |d          } t           j                            ||d          }t          |d          }t          ||            d S )N              ?zTesting a masked imageg      ?)r   r   r   rng)r   angleexpr   r   arrayr   r!   )imager   image_wrappedimage_unwrappeds       r    check_unwrapr,   +   s    HRVBJ//00M&'''E==MMM"=a888Oou55555    c                  t   t          j        ddt           j        z  d          } t          |            t	          j        t                    5  t          | d           d d d            n# 1 swxY w Y   t	          j        t                    5  t          | dd           d d d            d S # 1 swxY w Y   d S )Nr   
   d   Tr$   )r   linspacer   r,   r   raises
ValueErrorr   )r)   s    r    test_unwrap_1dr4   5   s)   K2:s++E	
	#	# " "UD!!!" " " " " " " " " " " " " " " 

	#	# ) )UDa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s$   A))A-0A-B--B14B1check_with_mask)FTc                     d }t           j        d dd df         \  }}dt           j        z  |dz  |dz  z   z  }| r+t          j        |j        t
                    }d|dd	ddf<   t          ||           d S )
N      r   皙?皙?dtypeT      r   ogridr   zerosshapeboolr,   )r5   r   xyr)   s        r    test_unwrap_2drF   @   s    D8BQBGDAqIS1s7*+E x4000QqS!A#Xr-   c                 
   d }t           j        d dd dd df         \  }}}dt           j        z  |dz  |dz  z   |dz  z   z  }| r.t          j        |j        t
                    }d	|d
dd
dddf<   t          ||           d S )Nr7      r8   r   r9   r:   g?r;   Tr=   r>         r?   )r5   r   rD   rE   zr)   s         r    test_unwrap_3drL   K   s    Dhrr3B3|$GAq!IS1s7*QX56E #x4000"QqS!A#qs]r-   c                   
 d
t          j        ddt           j        z  
          }|d         |d<   |                    t	          
fdt          |           D                                 }t          j        t          j        d|z                      }t	          dg| z            }t	          fdt          |           D                       }t          dg          5  t          |d	          }d d d            n# 1 swxY w Y   t          d
||         ||                    t          t          ||         ||         z
            t           j        k               fdt          |           D             }t          dg          5  t          ||d	          }	d d d            n# 1 swxY w Y   t          d|	|         |	|                    t          |	|         |	|                    d S )Nr0   r   rH   c                 $    g | ]}|k    rnd S rI    ).0naxiselementss     r    
<listcomp>z%check_wrap_around.<locals>.<listcomp>[   s%    RRRAII1RRRr-   r#   c                 $    g | ]}|k    rd ndS )rN   r   rQ   rR   rS   rT   s     r    rV   z%check_wrap_around.<locals>.<listcomp>_   s%    DDD1a4iiQDDDr-   z#Image has a length 1 dimension|\A\Zr$   zendpoints without wrap_around:c                     g | ]}|k    	S rQ   rQ   rX   s     r    rV   z%check_wrap_around.<locals>.<listcomp>r   s    22219222r-   z$Image has a length 1 dimension.|\A\Zzendpoints with wrap_around:)r   r1   r   reshapetupleranger&   r'   r
   r   r   r   r   r   )ndimrT   rampr)   r*   index_first
index_lastimage_unwrap_no_wrap_aroundwrap_aroundimage_unwrap_wrap_aroundrU   s    `        @r    check_wrap_aroundrd   V   s   H;q"ru*h//DAwDHLLRRRRReDkkRRRSSTTEHRVBJ//00Md
##KDDDDdDDDEEJ 
BC	D	D I I&2=a&H&H&H#I I I I I I I I I I I I I I I	(#K0#J/   '4)*56	
 	
 %		   3222eDkk222K	CD	E	E S S#/{PQ#R#R#R S S S S S S S S S S S S S S S	% - ,    -/G
/S    s$   #DDDF,,F03F0c                 :    g | ]}t          |          D ]}||fS rQ   )r\   )rR   r]   rT   s      r    rV   rV      s/    DDDTdDDT4LDDDDr-   )r   rJ   r   )rJ   r=   z-Doesn't work with python 3.4. See issue #3079)reasonz
ndim, axisc                 &    t          | |           d S N)rd   )r]   rT   s     r    test_wrap_aroundri      s     dD!!!!!r-   c            	         d} t          j        ddt           j        z  |           t          j        ddt           j        z  |           t          j        ddt           j        z  |           g}t          j        |          }t          j        | ft
                    }dx|d<   |d<   t          t          |                    D ]{}t          j        |j	        t
                    }||
                    d	d          z  }d||d d f<   t           j                            t          j        t          j        d
|z                      |          }t          |          }||d         z  }t!          |d d df         ||df                    t#          t           j                            |                     t'          dg          5  d|j	        z   }|
                    |          }	t          |	          }
|
|
d         z  }
d d d            n# 1 swxY w Y   t!          |
d d d d df         ||df                    }d S )Nr0   r   r=   r7   r>   r;   FrN   rI   r#   )r   r   r   zlength 1 dimensionrP   r   r   r   )r   r1   r   vstackonesrC   r\   lenrA   rB   rZ   r   r(   r&   r'   r   r   r   r   r
   )lengthrampsr)   mask_1dir   r*   r+   rB   image_wrapped_3dimage_unwrapped_3ds              r    	test_maskrv      sa   F
Aq25y&))
Aq25y&))
Aq25y&))E
 IeEgvit,,,G$$GAJ3u:: S Sx40002&&&QT
BHRVBJ-?-?$@$@tLL&}55?400 	'qqq"u'=uQU|LLL##O44555  4566 	> 	>=..E,44U;;!-.>!?!?"4W"==	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	''9!!!QQQ('CU1b5\RRRR)S Ss   :HH	H	c                     t          j        t                    5  t          t	          j        g                      d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          ddgz             d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d           d d d            d S # 1 swxY w Y   d S )N)rI   rI   rI   rI   )rI   rI   rJ   FFalse)r   r2   r3   r   r   rA   rQ   r-   r    test_invalid_inputry      s   	
	#	# # #RXb\\"""# # # # # # # # # # # # # # #	
	#	# - -RXl++,,,- - - - - - - - - - - - - - -	
	#	# 4 4RXf%%qE7{3334 4 4 4 4 4 4 4 4 4 4 4 4 4 4	
	#	# 0 0RXf%%w///0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0sG   "AAA,"BB!B>'C11C58C5#EE	E	c                      t          j        dt           j                  } t          | g d          }t	          t          j        |dk                         d S )N)      (   r;   )FTF)rb   r   )r   rA   float32r   r   allr)   unwraps     r    !test_unwrap_3d_middle_wrap_aroundr      sU     H\444E%-A-A-ABBBFBF6Q;     r-   c                      t           j                            d          } t          |           }t	          t          j        |dk                         d S )Nr/   r/   r   )r   r   rA   r   r   r   r   s     r    test_unwrap_2d_compressed_maskr      sF     EKK!!E%  FBF6Q;     r-   c                     t           j                            d          } t           j        j        | d d <   t	          |           }t          t           j                            |                     t          t          j        |j                             t           j                            d          } t           j        j        | d d <   d| d<   t	          |           }t          t           j                            |                     t          t          j	        |j                  dk               t          |d         dk               d S )Nr   r   rk   c   
r   r   rA   maskedr   r   r   r   r   sumr   s     r    test_unwrap_2d_all_maskedr      s    EKK!!Eu|E!!!H%  FBE''(((BF6;    EKK!!Eu|E!!!HE$K%  FBE''(((BF6;2%&&&F4LAr-   c                     t           j                            d          } t           j        j        | d d <   t	          |           }t          t           j                            |                     t          t          j        |j                             t           j                            d          } t           j        j        | d d <   d| d<   t	          |           }t          t           j                            |                     t          t          j	        |j                  dk               t          |d         dk               d S )N)r/   r/   r/   r   rl   i  r   r   s     r    test_unwrap_3d_all_maskedr      s   EKK%%Eu|E!!!H%  FBE''(((BF6;    EKK%%Eu|E!!!HE'N%  FBE''(((BF6;3&'''F7Oq !!!!!r-   rh   )numpyr   skimage.restorationr   sysskimage._sharedr   skimage._shared.testingr   r   r   r   r	   skimage._shared._warningsr
   r!   r,   r4   parametrizerF   rL   rd   dim_axisversion_infori   rv   ry   r   r   r   r   rQ   r-   r    <module>r      s       , , , , , , 



 # # # # # #              8 7 7 7 7 7B B B66 6 6 6) ) ) &66  76 &66  76( ( (V EDVDDD RaRF":   \8,," " -,	 
"S S SB0 0 0! ! !! ! !  (" " " " "r-   