ó
 ‰\c        
   @   s©  d  d l  Z  d  d l Z d  d l m Z d  d l m Z m Z m	 Z	 d  d l m
 Z
 m Z m Z d  d l m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z m Z m Z d	 e f d
 „  ƒ  YZ d e f d „  ƒ  YZ e j e j e j e j e j e j  g Z! e d e! ƒ d „  ƒ Z" d „  Z# e j e j g Z$ e d e$ ƒ d „  ƒ Z% d „  Z& d „  Z' d „  Z( e j) d d d d d g d d d d d g d d d  d! d" g d# d$ d% d& d' g d( d) d* d& d+ g g ƒ Z* e j) d d d d d g d d d d d" g d# d$ d d" d" g d$ d$ d$ d& d" g d# d$ d* d+ d+ g g ƒ Z+ e j) d d d d d g d d d d d g d d d! d d! g d( d% d% d! d' g d( d( d% d& d' g g ƒ Z, e j) d d d d d g d d d d d g d d d d& d" g d# d$ d& d& d& g d# d* d* d& d+ g g ƒ Z- e j) d d d d d g d d d d d g d d d d! d' g d d d% d& d' g d( d% d& d& d& g g ƒ Z. d, „  Z/ d- „  Z0 d. „  Z1 d/ „  Z2 d S(0   iÿÿÿÿN(   t   ndimage(   t   colort   datat	   transform(   t   img_as_uintt   img_as_ubytet   data_dir(   t   greyt   selem(   t   expected_warnings(   t   testing(   t   assert_array_equalt   assert_equalt   TestCaset   parametrizet   TestMorphologyc           B   s   e  Z d  „  Z d „  Z RS(   c   	   	   C   sÿ   t  j t  j t  j t  j t  j t  j f } t j t j	 t j
 t j f } t d g ƒ , t t j t j t j ƒ  ƒ d ƒ ƒ } Wd  QXi  } xm t d d ƒ D]\ } xS | D]K } xB | D]: } d j | j | | j ƒ } | | | | ƒ ƒ | | <qµ Wq¨ Wq› W| S(   Ns   Possible precision lossi   i   i   s   {0}_{1}_{2}(   i   i   (   R   t   erosiont   dilationt   openingt   closingt   white_tophatt   black_tophatR   t   squaret   diamondt   diskt   starR	   R   R   t   downscale_local_meanR   t   rgb2grayR   t   coffeet   ranget   formatt   __name__(	   t   selft   funcst	   selems_2Dt   imaget   outputt   nt   strelt   funct   key(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   _build_expected_output   s    	$%c         C   sA   t  t j t j j t d ƒ ƒ ƒ } |  j ƒ  } t | | ƒ d  S(   Ns   gray_morph_output.npz(	   t   dictt   npt   loadt   ost   patht   joinR   R)   R   (   R    t   expectedt
   calculated(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_gray_morphology-   s    	(   R   t
   __module__R)   R2   (    (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyR      s   
	t    TestEccentricStructuringElementsc           B   sb   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z RS(
   c         C   s‚   d t  j d d t  j ƒ|  _ d |  j d <d |  j |  _ t j d ƒ t j d d ƒ t j d d ƒ t j d d ƒ g |  _ d  S(	   Niÿ   i   t   dtypei    i   i   (   i   i   (   i   i   (	   R+   t   onest   uint8t   black_pixelt   white_pixelR   R   t	   rectanglet   selems(   R    (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   setUp5   s
    c         C   sa   xZ |  j  D]O } t j |  j | ƒ } t j |  j | ƒ } t j | d | k ƒ s
 t ‚ q
 Wd  S(   Niÿ   (	   R;   R   R   R8   R   R9   R+   t   allt   AssertionError(   R    t   st   ct   d(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_dilate_erode_symmetry<   s    c         C   sK   xD |  j  D]9 } t j |  j | ƒ } t j | |  j k ƒ s
 t ‚ q
 Wd  S(   N(   R;   R   R   R8   R+   R=   R>   (   R    R?   t	   grey_open(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_open_black_pixelB   s    c         C   sK   xD |  j  D]9 } t j |  j | ƒ } t j | |  j k ƒ s
 t ‚ q
 Wd  S(   N(   R;   R   R   R9   R+   R=   R>   (   R    R?   t
   grey_close(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_close_white_pixelG   s    c         C   sB   x; |  j  D]0 } t j t j |  j | ƒ d k ƒ s
 t ‚ q
 Wd  S(   Ni    (   R;   R+   R=   R   R   R9   R>   (   R    R?   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_open_white_pixelL   s    c         C   sB   x; |  j  D]0 } t j t j |  j | ƒ d k ƒ s
 t ‚ q
 Wd  S(   Niÿ   (   R;   R+   R=   R   R   R8   R>   (   R    R?   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_close_black_pixelP   s    c         C   sK   xD |  j  D]9 } t j |  j | ƒ } t j | |  j k ƒ s
 t ‚ q
 Wd  S(   N(   R;   R   R   R9   R+   R=   R>   (   R    R?   t   tophat(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_white_tophat_white_pixelT   s    c         C   sO   xH |  j  D]= } t j |  j | ƒ } t j | d |  j k ƒ s
 t ‚ q
 Wd  S(   Niÿ   (   R;   R   R   R8   R+   R=   R>   (   R    R?   RI   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_black_tophat_black_pixelY   s    c         C   sH   xA |  j  D]6 } t j |  j | ƒ } t j | d k ƒ s
 t ‚ q
 Wd  S(   Ni    (   R;   R   R   R8   R+   R=   R>   (   R    R?   RI   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_white_tophat_black_pixel^   s    c         C   sH   xA |  j  D]6 } t j |  j | ƒ } t j | d k ƒ s
 t ‚ q
 Wd  S(   Ni    (   R;   R   R   R9   R+   R=   R>   (   R    R?   RI   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_black_tophat_white_pixelc   s    (   R   R3   R<   RB   RD   RF   RG   RH   RJ   RK   RL   RM   (    (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyR4   4   s   									t   functionc         C   s  t  j d d ƒ } t j d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 d d d d d d d d d d g
 g t j ƒ } |  | | ƒ } |  | ƒ } t j | | ƒ d  S(   Nt   radiusi   i    (   R   R   R+   t   arrayR7   R
   R   (   RN   R&   R#   t   im_expectedt   im_test(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_default_selemn   s"    '!!!!!!!!!!!0c          C   s    t  j d t  j ƒ }  d |  d d … d d … d d … f <t j |  ƒ } t  j d	 d t ƒ} t j d d ƒ | d d … d d … d d … f <t | | ƒ d  S(
   Ni   i   i   iþÿÿÿR5   i   i   (   i   i   i   (   i   i   i   (   R+   t   zerost   boolR   R   t   ndit   generate_binary_structureR   (   R#   t   openedt   image_expected(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_3d_fallback_default_selemƒ   s    %1c         C   su   t  j d t  j ƒ } d | d d … d d … d d … f <t  j d d t  j ƒ} |  | | ƒ } t j | | ƒ d  S(	   Ni   i   i   iþÿÿÿi   R5   (   i   i   i   (   i   i   i   (   R+   RT   RU   R6   R7   R
   R   (   RN   R#   t   cubet	   new_image(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_3d_fallback_cube_selem“   s
    %c       	   C   sô   t  j d
 d t ƒ}  d |  d d d … d d … f <d |  d d d … d d … f <d |  d d d … d d … f <t d g ƒ  t j |  ƒ } Wd  QXt j d d ƒ } t d g ƒ ) t j |  j d t  j	 ƒ d	 | ƒ} Wd  QXt
 | | ƒ d  S(   Ni   R5   i   i   i   i   i   s   operator.*deprecated|\A\Zt	   footprint(   i   i   i   (   R+   RT   RU   R	   R   R   RV   RW   t   viewR7   R   (   R#   R\   R^   RY   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_3d_fallback_white_tophatŸ   s    $c       	   C   sô   t  j d d t ƒ}  d |  d d d … d d … f <d |  d d d … d d … f <d |  d d d … d d … f <t d g ƒ  t j |  ƒ } Wd  QXt j d d	 ƒ } t d g ƒ ) t j |  j d t  j	 ƒ d
 | ƒ} Wd  QXt
 | | ƒ d  S(   Ni   R5   i    i   i   i   i   s   operator.*deprecated|\A\Zi   R^   (   i   i   i   (   R+   R6   RU   R	   R   R   RV   RW   R_   R7   R   (   R#   R\   R^   RY   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_3d_fallback_black_tophat®   s    $c          C   sÏ   t  j d t  j ƒ }  d |  d d … d d … f <d |  d d … d d … f <d |  d <t j |  ƒ } t j |  ƒ } t j d d
 ƒ } t j |  d | ƒ} t j	 |  d | ƒ} t
 | | ƒ t
 | | ƒ d  S(   Ni	   i€   i   iþÿÿÿiÄ   i   iýÿÿÿiÿ   i   i   R^   (   i	   i	   (   i   i   (   R+   RT   R7   R   R   R   RV   RW   t   grey_openingt   grey_closingR   (   R#   RX   t   closedR   t   ndimage_openedt   ndimage_closed(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_2d_ndimage_equivalence½   s    
gš™™™™™á?g
×£p=
ç?g333333ã?gHáz®Gá?gáz®GáÚ?gÍÌÌÌÌÌä?g)\Âõ(Ü?g{®Gázì?g¸…ëQ¸î?gR¸…ëQØ?gHáz®Gé?gö(\Âõà?g=
×£p=â?gÃõ(\Âí?gìQ¸…ë±?g
×£p=
·?g{®Gáz”?gÂõ(\ê?gö(\Âõè?g×£p=
×ë?g\Âõ(\ï?gš™™™™™é?gq=
×£pÝ?g¸…ëQ¸¾?c           C   st   t  j j t j t ƒ t ƒ t  j j t j t ƒ t ƒ t  j j t j	 t ƒ t
 ƒ t  j j t j t ƒ t ƒ d  S(   N(   R+   R
   t   assert_allcloseR   R   t   imt   erodedR   t   dilatedR   RX   R   Rd   (    (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt
   test_floatî   s    c          C   s·   t  d g ƒ 2 t t t t t t t g ƒ \ }  } } } } Wd  QXt j	 j
 t j |  ƒ | ƒ t j	 j
 t j |  ƒ | ƒ t j	 j
 t j |  ƒ | ƒ t j	 j
 t j |  ƒ | ƒ d  S(   Ns   Possible precision loss(   R	   t   mapR   Ri   Rj   Rk   RX   Rd   R+   R
   Rh   R   R   R   R   R   (   t   im16t   eroded16t	   dilated16t   opened16t   closed16(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_uint16õ   s    3c       
   C   s•  t  j d d d g d d d g d d d g g t  j ƒ }  t  j d	 t  j ƒ } | d  d  d … d  d  d … f } t  j d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g t  j ƒ } t  j d d d d d g d d d d d g d d d d d g d d d d d g d d d d d g g t  j ƒ } t j |  d | ƒt | | ƒ t j |  d | ƒt j | | ƒ d  S(
   Ni   i   i   i   i   i   i    t   out(   i   i   (	   R+   RP   R7   RT   R   R   R   R   R
   (   R#   t   out_array_bigt	   out_arrayt   expected_dilationt   expected_erosion(    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_discontiguous_out_arrayÿ   s&    "!!c          C   s_   t  j d d d d d g ƒ }  t  j d d d d d g ƒ } t j |  ƒ } t j | | ƒ d  S(   Ni   i   i   (   R+   RP   R   R   R
   R   (   R#   R0   Rj   (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   test_1d_erosion  s    (3   R-   t   numpyR+   t   scipyR    RV   t   skimageR   R   R   R   R   R   t   skimage.morphologyR   R   t   skimage._shared._warningsR	   t   skimage._sharedR
   t   skimage._shared.testingR   R   R   R   R   R4   R   R   R   R   R   R   t   grey_functionsRS   RZ   t   grey_3d_fallback_functionsR]   R`   Ra   Rg   RP   Ri   Rj   Rk   RX   Rd   Rl   Rs   Ry   Rz   (    (    (    sA   lib/python2.7/site-packages/skimage/morphology/tests/test_grey.pyt   <module>   sb   "%5						
	