ó
 ‰\c           @  s¡  d  d l  m Z m Z d  d l Z d  d l m Z d  d l 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
 e e f ƒ d „  ƒ Z e
 j d
 e e f ƒ d „  ƒ Z d „  Z g  d D]% Z e e ƒ D] Z e e f ^ qqZ  e e j! d  d k d d ƒe
 j d e  ƒ d „  ƒ ƒ Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d S(   iÿÿÿÿ(   t   print_functiont   divisionN(   t   unwrap_phase(   t   testing(   t   assert_array_almost_equal_nulpt   assert_almost_equalt   assert_array_equalt   assert_t   skipif(   t   expected_warningsc         O  s  d t  j t  j | j ƒ  |  j ƒ  d t  j ƒ } t j ƒ  d t j d ƒ t d t  j t  j	 |  | | ƒ ƒ ƒ t d t  j t  j	 |  | | |  ƒ ƒ ƒ Wd QXt  j
 j |  ƒ rut t  j
 j | ƒ ƒ t |  j | j ƒ t  j |  ƒ } t  j | ƒ } t j ƒ  d t j d ƒ t d t  j t  j	 | | | ƒ ƒ ƒ t d t  j t  j	 | | | | ƒ ƒ ƒ Wd QXn  t |  | | | | Ž d S(   s=   An assert_almost_equal insensitive to phase shifts of n*2*pi.i   t   ignores   assert_phase_allclose, abss   assert_phase_allclose, relNs#   assert_phase_allclose, no mask, abss#   assert_phase_allclose, no mask, rel(   t   npt   pit   roundt   meant   warningst   catch_warningst   simplefiltert   printt   maxt   abst   mat   isMaskedArrayR   R   t   maskt   asarrayR   (   t   at   bt   argst   kwargst   shiftt   aut   bu(    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   assert_phase_almost_equal   s$    5'+!.c         C  sˆ   t  j t  j d |  ƒ ƒ } | d  k	 re t d ƒ t  j j |  d | ƒ}  t  j j | d | ƒ} n  t | d d ƒ} t | |  ƒ d  S(   Ny              ð?s   Testing a masked imageR   t   seedi    (	   R   t   anglet   expt   NoneR   R   t   arrayR   R    (   t   imageR   t   image_wrappedt   image_unwrapped(    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   check_unwrap%   s    
c       
   C  sv   t  j d d t  j d ƒ }  t |  ƒ t j t ƒ  t |  t ƒ Wd  QXt j t ƒ  t |  t d d ƒWd  QXd  S(   Ni    i
   id   R!   (	   R   t   linspaceR   R)   R   t   raisest
   ValueErrort   TrueR   (   R&   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_1d/   s    
t   check_with_maskc         C  s™   d  } t j d  d … d  d … f \ } } d t j | d | d } |  rˆ t j | j d t j ƒ} t | d d … d d … f <n  t | | ƒ d  S(	   Ni   i   i   gš™™™™™É?gš™™™™™¹?t   dtypei   i   (	   R$   R   t   ogridR   t   zerost   shapet   boolR-   R)   (   R/   R   t   xt   yR&   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_2d:   s    %c         C  s¶   d  } t j d  d … d  d … d  d … f \ } } } d t j | d | d | d } |  r¥ t j | j d t j ƒ} t | d	 d
 … d	 d
 … d d … f <n  t | | ƒ d  S(   Ni   i   i   i   gš™™™™™É?gš™™™™™¹?gš™™™™™©?R0   i   i   i   i   (	   R$   R   R1   R   R2   R3   R4   R-   R)   (   R/   R   R5   R6   t   zR&   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_3dE   s    1%(c      
   C  sÐ  d } t  j d d t  j | ƒ } | d | d <| j t g  t |  ƒ D] } | | k r^ | n d ^ qF ƒ ƒ } t  j t  j d | ƒ ƒ } t d g |  ƒ } t g  t |  ƒ D] } | | k rÇ d n d ^ q¯ ƒ } t j	 ƒ  $ t j
 d ƒ t | d d ƒ}	 Wd  QXt d	 |	 | |	 | ƒ t t |	 | |	 | ƒ t  j k ƒ g  t |  ƒ D] } | | k ^ qR}
 t j	 ƒ  ' t j
 d ƒ t | |
 d d ƒ} Wd  QXt d
 | | | | ƒ t | | | | ƒ d  S(   Nid   i    i   iÿÿÿÿi   y              ð?R
   R!   s   endpoints without wrap_around:s   endpoints with wrap_around:(   R   R*   R   t   reshapet   tuplet   rangeR"   R#   R   R   R   R   R   R   R   R   (   t   ndimt   axist   elementst   rampt   nR&   R'   t   index_firstt
   index_lastt   image_unwrap_no_wrap_aroundt   wrap_aroundt   image_unwrap_wrap_around(    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   check_wrap_aroundP   s4    47%
i   i   i   t   reasons-   Doesn't work with python 3.4. See issue #3079s
   ndim, axisc         C  s   t  |  | ƒ d  S(   N(   RG   (   R=   R>   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_wrap_aroundx   s    c       
   C  sü  d }  t  j d d t  j |  ƒ t  j d d t  j |  ƒ t  j d d t  j |  ƒ g } t  j | ƒ } t  j |  f d t  j ƒ} t | d <| d <xbt t | ƒ ƒ D]N} t  j	 | j
 d t  j ƒ} | | j d d ƒ O} t | | d  d  … f <t  j j t  j t  j d	 | ƒ ƒ d
 | ƒ} t | ƒ } | | d 8} t | d  d  … d f | | d f ƒ t t  j j | ƒ ƒ t d g ƒ ; d | j
 } | j | ƒ }	 t |	 ƒ }
 |
 |
 d 8}
 Wd  QXt |
 d  d  … d  d  … d f | | d f ƒ q¦ Wd  S(   Nid   i    i   i   i   R0   iÿÿÿÿi   y              ð?R   s   length 1 dimension(   i    i    (   i   (   i    i    i    (   R   R*   R   t   vstackt   onesR4   t   FalseR<   t   lenR2   R3   R:   R   R%   R"   R#   R   R   R   R   R	   (   t   lengtht   rampsR&   t   mask_1dt   iR   R'   R(   R3   t   image_wrapped_3dt   image_unwrapped_3d(    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt	   test_mask   s.    .'c           C  sµ   t  j t ƒ  t t j g  ƒ ƒ Wd  QXt  j t ƒ  t t j d ƒ ƒ Wd  QXt  j t ƒ " t t j d ƒ d t g ƒ Wd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXd  S(   Ni   i   RL   (   i   i   i   i   (   i   i   (   i   i   (   R   R+   R,   R   R   R2   RL   (    (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_invalid_inputŸ   s    #c          C  sP   t  j d d t  j ƒ}  t |  d t t t g ƒ} t t  j | d k ƒ ƒ d  S(   Ni   i   i(   R0   RE   i    (   i   i   i(   (   R   R2   t   float32R   RL   R-   R   t   all(   R&   t   unwrap(    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt!   test_unwrap_3d_middle_wrap_aroundª   s    c          C  s;   t  j j d ƒ }  t |  ƒ } t t  j | d k ƒ ƒ d  S(   Ni
   i    (   i
   i
   (   R   R   R2   R   R   RW   (   R&   RX   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_2d_compressed_mask²   s    c          C  sÖ   t  j j d ƒ }  t  j j |  (t |  ƒ } t t  j j | ƒ ƒ t t  j | j ƒ ƒ t  j j d ƒ }  t  j j |  (d |  d <t |  ƒ } t t  j j | ƒ ƒ t t  j	 | j ƒ d k ƒ t | d d k ƒ d  S(   Ni
   i    ic   (   i
   i
   (   i
   i
   (   i    i    (   i    i    (
   R   R   R2   t   maskedR   R   R   RW   R   t   sum(   R&   RX   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_2d_all_maskedº   s    
c          C  sÖ   t  j j d ƒ }  t  j j |  (t |  ƒ } t t  j j | ƒ ƒ t t  j | j ƒ ƒ t  j j d ƒ }  t  j j |  (d |  d <t |  ƒ } t t  j j | ƒ ƒ t t  j	 | j ƒ d k ƒ t | d d k ƒ d  S(   Ni
   i    iç  (   i
   i
   i
   (   i
   i
   i
   (   i    i    i    (   i    i    i    (
   R   R   R2   R[   R   R   R   RW   R   R\   (   R&   RX   (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   test_unwrap_3d_all_maskedÎ   s    
(   i   i   (   i   i   ()   t
   __future__R    R   t   numpyR   t   skimage.restorationR   t   sysR   t   skimage._sharedR   t   skimage._shared.testingR   R   R   R   R   t   skimage._shared._warningsR	   R    R$   R)   R.   t   parametrizeRL   R-   R7   R9   RG   R=   R<   R>   t   dim_axist   version_infoRI   RT   RU   RY   RZ   R]   R^   (    (    (    sD   lib/python2.7/site-packages/skimage/restoration/tests/test_unwrap.pyt   <module>   s.   (	
	!!	%2	 				