ó
 \c           @   se   d  Z  d d l Z d d l Z d d l m Z d d l m Z d d l	 m
 Z
 d d d     YZ d S(	   s^   
Tests for Morphological structuring elements
(skimage.morphology.selem)

Author: Damian Eads
iĸĸĸĸN(   t   data_dir(   t   selem(   t   assert_equalt	   TestSElemc           B   st   e  Z d    Z d   Z d   Z d   Z d   Z d   Z d   Z d   Z	 d   Z
 d	   Z d
   Z d   Z RS(   c         C   sU   xN t  d d  D]= } t j |  } t j | | f d d } t | |  q Wd S(   s    Test square structuring elementsi    i   t   dtypet   uint8N(   t   rangeR   t   squaret   npt   onesR   (   t   selft   kt   actual_maskt   expected_mask(    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_square_selem   s    c         C   sr   xk t  d d  D]Z } xQ t  d d  D]@ } t j | |  } t j | | f d d } t | |  q& Wq Wd S(   s#   Test rectangle structuring elementsi    i   R   R   N(   R   R   t	   rectangleR   R	   R   (   R
   t   it   jR   R   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_rectangle_selem   s
    c         C   sX   xQ t  d d  D]@ } t j |  } t j | | | f d d } t | |  q Wd S(   s   Test cube structuring elementsi    i   R   R   N(   R   R   t   cubeR   R	   R   (   R
   R   R   R   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_cube_selem"   s    c         C   s   t  j t j j t |   } d } xl t |  D]^ } | | } | |  } | j d k rx | d  d   t  j f } n  t	 | |  | d } q1 Wd  S(   Ni    i   (   i   (
   R   t   loadt   ost   patht   joinR    t   sortedt   shapet   newaxisR   (   R
   t   fnt   funct   matlab_masksR   t   arrnameR   R   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   strel_worker)   s    
c   	      C   s  t  j t j j t |   } d } xč t |  D]Ú } | | } | |  } | j d k rx | d  d   t  j f } n  t	 | j d d  } t
 | | | d  d   d  d   f  t
 | | d  d   | d  d   f  t
 | | d  d   d  d   | f  | d } q1 Wd  S(   Ni    i   i   (   i   (   R   R   R   R   R   R    R   R   R   t   intR   (	   R
   R   R   R   R   R   R   R   t   c(    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   strel_worker_3d4   s    
&&&c         C   s   |  j  d t j  d S(   s   Test disk structuring elementss   disk-matlab-output.npzN(   R    R   t   disk(   R
   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_diskE   s    c         C   s   |  j  d t j  d S(   s!   Test diamond structuring elementss   diamond-matlab-output.npzN(   R    R   t   diamond(   R
   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_diamondI   s    c         C   s   |  j  d t j  d S(   s   Test ball structuring elementss   disk-matlab-output.npzN(   R#   R   t   ball(   R
   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_ballM   s    c         C   s   |  j  d t j  d S(   s$   Test octahedron structuring elementss   diamond-matlab-output.npzN(   R#   R   t
   octahedron(   R
   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_octahedronQ   s    c         C   s"  t  j d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g g d t  j } t j d d  } t  j d d d g d d d g d d d g g d t  j } t j d d  } t | |  t | |  d S(   s!   Test octagon structuring elementsi    i   R   i   i   N(   R   t   arrayR   R   t   octagonR   (   R
   t   expected_mask1t   actual_mask1t   expected_mask2t   actual_mask2(    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_octagonU   s$    *$$$$$$$$$6c         C   sĘ  t  j d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g d d d d d d d d d d d g g d t  j } t j d d  } t  j d d d g d d d g d d d g g d t  j } t j d d  } t | |  t | |  t | t j d d  j  t | t j d d  j  d S(   s!   Test ellipse structuring elementsi    i   R   i   i   N(   R   R,   R   R   t   ellipseR   t   T(   R
   R.   R/   R0   R1   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_ellipsej   s     *$$$$$6c         C   sē  t  j d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g d d d d d d d d d d d d d g g d t  j } t j d  } t  j d d d g d d d g d d d g g d t  j } t j d  } t | |  t | |  d S(   s   Test star structuring elementsi    i   R   i   N(   R   R,   R   R   t   starR   (   R
   R.   R/   R0   R1   (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   test_selem_star}   s*    0***********0(   t   __name__t
   __module__R   R   R   R    R#   R%   R'   R)   R+   R2   R5   R7   (    (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyR      s   											(    (   t   __doc__t   os.pathR   t   numpyR   t   skimageR    t   skimage.morphologyR   t   skimage._shared.testingR   R   (    (    (    sB   lib/python2.7/site-packages/skimage/morphology/tests/test_selem.pyt   <module>   s   