ó
 ‰\c           @   sŒ  d  d l  Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z m Z d  d l Z d  d l  Z d  d l m Z d Z d	 Z e d
 e Z e e j ƒ d k rÂ d Z n d Z d d „ Z d d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# e d e d d ƒ d „  ƒ Z$ d „  Z% d „  Z& d  „  Z' d! „  Z( d S("   iÿÿÿÿN(   t   random_walker(   t   resize(   t   expected_warnings(   t   testing(   t   xfailt   arch32(   t   LooseVersions   numpy.linalg.matrix_rank|\A\Zs
   pyamg|\A\Zt   |s   1.15.0s   matrix subclassc         C   s›  | d  k r |  } n  t j j d ƒ t j |  | f ƒ d t j j |  | ƒ } t |  d ƒ } d | |  d | |  d | … | d | | d | … f <d t j j d | d d | d ƒ | |  d | d |  d | d … | d | d | d | d … f <d | |  d | | d | d | d | d … f <t j | ƒ } d | |  d | d f <d | |  d | d | d | d f <| | f S(	   NiÒ  gš™™™™™¹?i   i   i   i    i   i   (   t   Nonet   npt   randomt   seedt   zerost   randnt   intt
   zeros_like(   t   lxt   lyt   datat   small_lt   seeds(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   make_2d_syntheticdata   s    	,<o6(c         C   s  | d  k r |  } n  | d  k r* |  } n  t j j d ƒ t j |  | | f ƒ d t j j |  | | ƒ } t |  d ƒ } d | |  d | |  d | … | d | | d | … | d | | d | … f <d | |  d | d |  d | d … | d | d | d | d … | d | d | d | d … f <t j d | d g ƒ } d | |  d | | d | | d | … | d | | d | … f <t j | ƒ } d | |  d | d | d f <d | |  d | d | d | d | d | d f <| | f S(	   NiÒ  gš™™™™™¹?i   i   i   i    i   i   (	   R   R	   R
   R   R   R   R   t   maxR   (   R   R   t   lzR   R   t	   hole_sizeR   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   make_3d_syntheticdata*   s    		2UmG7c          C   sð  d }  d } t  |  | ƒ \ } } t t g ƒ   t | | d d d d ƒ} Wd  QX| d d … d	 d
 … f d k j ƒ  s€ t ‚ | j | j k s˜ t ‚ t t g ƒ & t | | d d d d d t ƒ} Wd  QX| d d d … d	 d
 … f | d d d … d	 d
 … f k j ƒ  st ‚ | j | j k s1t ‚ d | d <t t g ƒ & t | | d d d d d t ƒ} Wd  QX| d d d … d	 d
 … f | d d d … d	 d
 … f k j ƒ  s¼t ‚ t | ƒ d k sÔt ‚ | j | j k sìt ‚ d  S(   NiF   id   t   betaiZ   t   modet   bfi   i-   i(   i<   i   t   return_full_probi   i    i   i7   iP   (   i7   iP   (	   R   R   t   NUMPY_MATRIX_WARNINGR    t   allt   AssertionErrort   shapet   Truet   len(   R   R   R   t   labelst	   labels_bft   full_prob_bf(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt
   test_2d_bfE   s*    !..
.c          C   sI  d }  d } t  |  | ƒ \ } } t d t t g ƒ   t | | d d d d ƒ} Wd  QX| d	 d
 … d d … f d k j ƒ  s‡ t ‚ | j | j k sŸ t ‚ t d t t g ƒ & t | | d d d d d t ƒ} Wd  QX| d d	 d
 … d d … f | d d	 d
 … d d … f k j ƒ  s't ‚ | j | j k s?t ‚ | | f S(   NiF   id   s	   "cg" modeR   R   iZ   R   t   cgi   i-   i(   i<   i   R   i   i    s
   "cg" mode|s
   "cg" mode|(	   R   R   t   SCIPY_RANK_WARNINGR   R    R   R    R!   R"   (   R   R   R   R$   t	   labels_cgt	   full_prob(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt
   test_2d_cg^   s     
!.
.c          C   sE  d }  d } t  |  | ƒ \ } } d t t g } t | ƒ   t | | d d d d ƒ} Wd  QX| d d	 … d
 d … f d k j ƒ  s t ‚ | j | j k s¥ t ‚ t | ƒ & t | | d d d d d t ƒ} Wd  QX| d d d	 … d
 d … f | d d d	 … d
 d … f k j ƒ  s#t ‚ | j | j k s;t ‚ | | f S(   NiF   id   s   scipy.sparse.sparsetools|%sR   iZ   R   t   cg_mgi   i-   i(   i<   i   R   i   i    (	   R   t   PYAMG_OR_SCIPY_WARNINGR   R   R    R   R    R!   R"   (   R   R   R   R$   t   anticipated_warningst   labels_cg_mgR+   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_2d_cg_mgq   s     	!..c          C   sß   d }  d } t  |  | ƒ \ } } d | | j ƒ  | j ƒ  | j ƒ  } | j t j ƒ } t t t g ƒ   t	 | | d d d d ƒ} Wd  QX| d d	 … d
 d … f d k j
 ƒ  s½ t ‚ | j | j k sÕ t ‚ | | f S(   NiF   id   iÿ   R   iZ   R   R-   i   i-   i(   i<   i   (   R   t   minR   t   astypeR	   t   uint8R   R.   R   R    R   R    R!   (   R   R   R   R$   R0   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt
   test_types…   s    (!.c          C   s²   d }  d } t  |  | ƒ \ } } d | | d k <t t g ƒ   t | | d d d d ƒ} Wd  QX| d	 d
 … d d … f d k j ƒ  s t ‚ | j | j k s¨ t ‚ | | f S(   NiF   id   i   i   R   iZ   R   R   i   i-   i(   i<   (   R   R   R   R    R   R    R!   (   R   R   R   R$   R%   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_reorder_labels’   s    !.c       	   C   sã   d }  d } t  |  | ƒ \ } } d | d d … d d … f <d | d d … d	 d
 … f <t t g ƒ  t | | d d ƒ} Wd  QX| j |  | f ƒ d d … d d … f d k j ƒ  sÁ t ‚ | j | j k sÙ t ‚ | | f S(   NiF   id   iÿÿÿÿi
   i   iþÿÿÿi.   i2   i!   i&   R   iZ   i   i-   i(   i<   i   (   R   R   R   R    t   reshapeR   R    R!   (   R   R   R   R$   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_2d_inactivež   s    =c       	   C   sÉ   d }  |  |  |  } } } t  | | | ƒ \ } } t d	 t t g ƒ  t | | d d ƒ} Wd  QX| j | j ƒ d d … d d … d d … f d k j ƒ  s§ t ‚ | j | j k s¿ t ‚ | | f S(
   Ni   s	   "cg" modeR   R   R(   i   i   i   s
   "cg" mode|(	   R   R   R)   R   R    R7   R!   R   R    (   t   nR   R   R   R   R$   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_3d«   s    
Cc       	   C   s  d }  |  |  |  } } } t  | | | ƒ \ } } t j | ƒ } d | d d … d d … d d … f <t j | ƒ } t d d t t g ƒ  t | | d	 d
 ƒ} Wd  QX| j | j ƒ d d … d d … d d … f d k j	 ƒ  sî t
 ‚ | j | j k st
 ‚ | | | | f S(   Ni   iÿÿÿÿi   i   i   i   s   "cg" mode|CObject typeR   R   R(   i   i   i   (   R   R	   t   copyR   R)   R   R    R7   R!   R   R    (   R9   R   R   R   R   R$   t
   old_labelst   after_labels(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_3d_inactive·   s    %Cc          C   s3  d \ }  } t  |  | ƒ \ } } | d t j f j d d d ƒ} t d t t g ƒ   t | | d	 d
 d t ƒ} Wd  QX| d j	 | j	 k s— t
 ‚ t d t t g ƒ  t | d | d	 d
 ƒ} Wd  QX| j | j	 ƒ d d … d d … f d k j ƒ  st
 ‚ | d j	 | j	 k s#t
 ‚ | | | | f S(   NiF   id   .i   t   axisiÿÿÿÿs	   "cg" modeR   R   R(   t   multichanneli    i   i-   i(   i<   (   iF   id   s
   "cg" mode|(   .i    s
   "cg" mode|(   .i    (   .i    (   R   R	   t   newaxist   repeatR   R)   R   R    R"   R!   R    R7   R   (   R   R   R   R$   t   multi_labelst   single_labels(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_multispectral_2dÆ   s    "

:c          C   s  d }  |  |  |  } } } t  | | | ƒ \ } } | d t j f j d d d ƒ} t d t t g ƒ   t | | d d	 d
 t ƒ} Wd  QX| d j	 | j	 k s¨ t
 ‚ t d t t g ƒ  t | d | d d	 ƒ} Wd  QX| j | j	 ƒ d d … d d … d d … f d k j ƒ  s!t
 ‚ | j | j	 ƒ d d … d d … d d … f d k j ƒ  sdt
 ‚ | d j	 | j	 k s€t
 ‚ | | | | f S(   Ni   .i   R?   iÿÿÿÿs	   "cg" modeR   R   R(   R@   i    i   i   s
   "cg" mode|(   .i    s
   "cg" mode|(   .i    (   .i    (   R   R	   RA   RB   R   R)   R   R    R"   R!   R    R7   R   (   R9   R   R   R   R   R$   RC   RD   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_multispectral_3d×   s     "

CCc          C   s‘  d }  |  |  |  } } } t  | | | ƒ \ } } t j |  |  |  d f ƒ } xX t | ƒ D]J \ } } t | |  |  d f d d d t ƒ| | d  d  … d  d  … f <q[ Wt | d ƒ }	 t j | ƒ }
 d |
 | d | d | d f <d |
 | d |	 d | d |	 d | d |	 d	 f <t d t	 t
 g ƒ   t | |
 d d d d ƒ}
 Wd  QX|
 d d … d d … d d … f d k j ƒ  st ‚ d  S(   Ni   i   R   t   constantt   anti_aliasingi   i   i   i   s	   "cg" modeR   R(   t   spacingg      ð?g      à?i   i   i   i	   s
   "cg" mode|(   g      ð?g      ð?g      à?(   R   R	   R   t	   enumerateR   t   FalseR   R   R   R)   R   R    R   R    (   R9   R   R   R   R   t   _t
   data_anisot   it   yzR   t   labels_aniso(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_spacing_0ê   s"    &7
t	   conditiont   reasons°   Known test failure on 32-bit platforms. See links for details: https://github.com/scikit-image/scikit-image/issues/3091 https://github.com/scikit-image/scikit-image/issues/3092c          C   sþ  d }  |  |  |  } } } t  | | | ƒ \ } } t j |  |  d |  f ƒ } xX t | ƒ D]J \ } } t | |  d |  f d d d t ƒ| | d  d  … d  d  … f <q[ Wt | d ƒ }	 t j | ƒ }
 d |
 | d | d | d f <d |
 | d |	 d | |	 d | d |	 d f <t d t	 t
 g ƒ   t | |
 d d d d ƒ}
 Wd  QX|
 d d … d d … d d … f d k j ƒ  s‰t ‚ t j |  |  d |  f ƒ } xr t | j d ƒ D]] } t | d  d  … d d  d  … f |  d |  f d d d t ƒ| | d  d  … d  d  … f <q¹Wt | d ƒ }	 t j | ƒ } d | | d | d | d f <d | | |	 d | d |	 d | d |	 d f <t d t	 t
 g ƒ   t | | d d d d ƒ} Wd  QX| d d … d d … d d … f d k j ƒ  sút ‚ d  S(   Ni   i   R   RG   RH   i   i   i   s	   "cg" modeR   R(   RI   g      ð?g       @i   i   i   i"   s
   "cg" mode|(   g      ð?g       @g      ð?s
   "cg" mode|(   g       @g      ð?g      ð?(   R   R	   R   RJ   R   RK   R   R   R   R)   R   R    R   R    t   rangeR!   (   R9   R   R   R   R   RL   RM   RN   RO   R   RP   t   labels_aniso2(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_spacing_1  s@    &3
7/&3
c       
   C   sõ   t  j d
 ƒ }  t  j d ƒ } t d g ƒ  t |  | ƒ } Wd  QXt  j j | | ƒ d | d  d  … d  d … f <t  j | d k d t  j f | d k d t  j f f d d ƒ} t d g ƒ  t |  | d	 t ƒ} Wd  QXt  j j | | ƒ d  S(   Ni
   s   Returning provided labelsi   i   i   .R?   i   R   (   i
   i
   (   i
   i
   (	   R	   t   onesR   R    R   t   assert_array_equalt   concatenateRA   R"   (   t   imgR$   t   pass_throught   expectedt   test(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_trivial_casesB  s    %c       
   C   s   t  j j d ƒ t  j d ƒ d t  j j d d ƒ }  t  j d d t  j ƒ} d | d <d | d <t t g ƒ  t	 |  | d d ƒWd  QXd  S(   Ni*   i
   gš™™™™™É?t   sizet   dtypei   i   i   i   i   RI   g      ð?g       @(   i
   i
   (   i
   i
   (   i
   i
   (   i   i   (   i   i   (   g      ð?g       @(
   R	   R
   R   RW   t   normalR   R4   R   R   R    (   RZ   R$   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_length2_spacingT  s    &

c          C   s¨  t  j d ƒ }  t  j d ƒ } t j t ƒ  t |  | ƒ Wd  QXt j t ƒ  t |  | d t ƒWd  QXt  j j	 d ƒ t  j j
 d d ƒ }  t  j d ƒ j |  j ƒ } t j t ƒ  t |  | ƒ Wd  QXt j t ƒ  t |  | d t ƒWd  QXt  j j
 d d ƒ }  t  j d ƒ } d | d <d | d <t j t ƒ  t |  | d d ƒWd  QXt  j j
 d d ƒ }  t  j d ƒ } t j t ƒ  t |  | d d ƒWd  QXd  S(   Ni
   R@   i*   R_   i   i   i   i   i   i   RI   i   R   t   bad(   i   i   i   i   i   ió   (   i
   i
   (   i
   i
   (   i   i   (   i   i   (   i   (   i
   i
   (   i
   i
   (   R	   RW   t   arangeR   t   raisest
   ValueErrorR    R"   R
   R   Ra   R7   R!   R   (   RZ   R$   (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_bad_inputs`  s.    

c       
   C   s  t  j j d ƒ t  j j d	 ƒ }  t  j |  j ƒ } d | d
 <d | d d  … d d  … f <d | d <d | d <t t g ƒ  t |  | ƒ } Wd  QX| d d k sª t ‚ t t g ƒ  t |  | d t	 ƒ} Wd  QX| d d k së t ‚ | d d k st ‚ d  S(   Ni    i   i   i   i   i   i   R   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i    i   i   (   i   i   i   (
   R	   R
   R   RW   R!   R   R   R    R    R"   (   t   at   maskt   res(    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   test_isolated_seeds  s    


()   t   numpyR	   t   skimage.segmentationR    t   skimage.transformR   t   skimage._shared._warningsR   t   skimage._sharedR   t   skimage._shared.testingR   R   t   scipyt   distutils.versionR   t   VersionR)   t   PYAMG_MISSING_WARNINGR.   t   __version__R   R   R   R   R'   R,   R1   R5   R6   R8   R:   R>   RE   RF   RQ   RV   R^   Rb   Rg   Rk   (    (    (    sL   lib/python2.7/site-packages/skimage/segmentation/tests/test_random_walker.pyt   <module>   sB   												:			!