ó
 ‰\c           @   s(  d  d l  m Z d  d l Z d  d l m Z d  d l m Z d  d l	 m
 Z
 m Z m Z m Z m Z m Z m Z m Z m Z d  d l m Z d  d l m Z m Z m Z d  d l m 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& d S(   iÿÿÿÿ(   t   divisionN(   t   ndimage(   t   draw(	   t   momentst   moments_centralt   moments_coordst   moments_coords_centralt   moments_normalizedt
   moments_hut   centroidt   inertia_tensort   inertia_tensor_eigvals(   t   testing(   t   assert_equalt   assert_almost_equalt   assert_allclose(   t   expected_warningsc          C   s“   t  j d
 d t  j ƒ}  d |  d <d |  d <d |  d <d |  d <t |  ƒ } t | d d ƒ t | d | d d	 ƒ t | d | d d	 ƒ d  S(   Ni   t   dtypei   i   i   g      à?i    i   g      -@(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i    i    (   i   i    (   i    i    (   i    i   (   i    i    (   t   npt   zerost   doubleR   R   R   (   t   imaget   m(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments   s    



c          C   sÎ   t  j d d t  j ƒ}  d |  d <d |  d <d |  d <d |  d <t |  d ƒ } t |  ƒ } t | | ƒ t  j d d t  j ƒ} d | d <d | d <d | d <d | d <t | d d f ƒ } t | | ƒ d  S(   Ni   R   i   i   i   g      à?g      -@i   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   g      -@g      -@(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   g     €0@g     €0@(   R   R   R   R   R   (   R   t   mut   mu_calc_centroidt   image2t   mu2(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_central   s    







c       
   C   sä   t  j d d t  j ƒ}  t  j j d ƒ |  d d … d d … f <t |  d ƒ d d g d d g f } | \ } } t d g ƒ / t |  | | ƒ } t |  d	 | d
 | ƒ} Wd  QXt |  | ƒ } t | j | ƒ t | j | ƒ d  S(   Ni   R   i
   i   iûÿÿÿi   i    s   deprecated 2D-onlyt   crt   cc(   i   i   (   i
   i
   (	   R   R   R   t   randomR   R   R   R   t   T(   R   t   centerR   R   t   mu0t   mu1t   mu_ref(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_central_deprecated3   s    (%c          C   s­   t  j d d t  j ƒ}  d |  d d … d d … f <t |  ƒ } t  j g  t d d ƒ D]( } t d d ƒ D] } | | g ^ qi qV d t  j ƒ} t | ƒ } t | | ƒ d  S(   Ni   R   i   i   i   (   i   i   (   R   R   R   R   t   arrayt   rangeR   R   (   R   t   mu_imaget   rt   ct   coordst	   mu_coords(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_coords@   s    4c          C   s{  t  j d d t  j ƒ}  d |  d d … d d … f <t |  d	 ƒ } t  j g  t d d ƒ D]( } t d d ƒ D] } | | g ^ ql qY d t  j ƒ} t | d
 ƒ } t | | ƒ t | ƒ } t | | ƒ t  j d d t  j ƒ}  d |  d d … d d … f <t |  d ƒ } t  j g  t d d ƒ D]( } t d d ƒ D] } | | g ^ q4q!d t  j ƒ} t | d ƒ } t | | ƒ d  S(   Ni   R   i   i   i   g      -@i   (   i   i   (   g      -@g      -@(   g      -@g      -@(   i   i   (   g      -@g      -@(   g      -@g      -@(   R   R   R   R   R&   R'   R   R   (   R   R(   R)   R*   R+   R,   t   mu_coords_calc_centroid(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_central_coordsK   s     44c          C   sµ   t  j d
 d t  j ƒ}  d |  d d … d d … f <t |  d ƒ } t | ƒ } t  j d d t  j ƒ} d | d d … d d … f <t | d ƒ } t | ƒ } t | | d	 d ƒd  S(   Ni   R   i   i   i   g      -@i   g      '@t   decimal(   i   i   (   g      -@g      -@(   i   i   (   g      '@g      '@(   R   R   R   R   R   R   (   R   R   t   nuR   R   t   nu2(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_normalizedd   s    c          C   sˆ   t  j d d d ƒ }  t |  ƒ } t | ƒ } | d | d k sG t ‚ t | d | d ƒ t j |  ƒ } t | ƒ } t | | ƒ d  S(	   Ni   i
   i    i   (   i    i    i   (   i    i   i    (   i    i   i    (   i   i    i    (	   R   t	   ellipsoidR   R   t   AssertionErrorR   R   t   whereR   (   R   R(   R1   R+   R,   (    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_normalized_3dr   s    c        	   C   s\   t  j t ƒ  t t j d ƒ d ƒ Wd  QXt  j t ƒ  t t j d ƒ d ƒ Wd  QXd  S(   Ni   i   (   i   i   (   i   i   (   R   t   raisest
   ValueErrorR   R   R   (    (    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_normalized_invalid~   s    c          C   sÐ   t  j d d t  j ƒ}  d |  d d … d d … f <t |  d ƒ } t | ƒ } t | ƒ } t  j d d t  j ƒ} d | d	 d	 d … f <| j } t | d ƒ } t | ƒ } t | ƒ } t | | d d ƒd  S(   Ni   R   i   i   i   i   g      +@g      -@i   g      '@R0   (   i   i   (   g      +@g      -@(   i   i   (   g      '@i   (   R   R   R   R   R   R   R    R   (   R   R   R1   t   huR   R   R2   t   hu2(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_moments_hu…   s    	c          C   sa   t  j d
 d t  j ƒ}  d |  d d d … f <d |  d d d … f <t |  ƒ } t | d ƒ d  S(   Ni   R   i   i   i   i   i   g     €,@g      -@(   i   i   gUUUUUUÕ?(   g     €,@g      -@(   R   R   R   R	   R   (   R   t   image_centroid(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_centroid–   s
    c          C   s°   t  j d ƒ }  d |  d d … d d … f <t |  ƒ } | d | d k sQ t ‚ t  j j | d d ƒ t |  d | ƒ\ } } t  j j t  j | | ƒ d	 d
 d d d ƒd  S(   Ni(   i   i   i   i   i#   i    R    i   t   rtolg{®Gáz„?t   atolgš™™™™™©?(   i(   i(   (   i    i    (   i   i   (   i    i   (   R   R   R
   R5   R   R   R   t   sqrt(   R   R    t   v0t   v1(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_inertia_tensor_2dž   s    c          C   sÎ  t  j d d d ƒ }  t |  ƒ } t j j | ƒ \ } } | d  d  … t j | ƒ f } t j | d d d g ƒ s• t j | d d d g ƒ s• t ‚ t	 j
 |  j t ƒ d d d d d ƒ} t | ƒ } t j j | ƒ \ } } | d  d  … t j | ƒ f }	 t j t j t j }
 } } t j | |
 d	 ƒ | |
 d	 ƒ d g | |
 d	 ƒ | |
 d	 ƒ d g d d d g g ƒ } | j | ƒ } t j |	 | d
 d d d ƒsÊt j |	 | d
 d d d ƒsÊt ‚ d  S(   Ni
   i   i   i   i    i   t   axest   orderi   RA   gü©ñÒMbP?R@   g{®Gáz„?(   i    i   (   R   R4   R
   R   t   linalgt   eigt   argmint   allcloseR5   t   ndit   rotatet   astypet   floatt   pit   cost   sinR&   t   dot(   R   t   T0t   eig0t   V0RC   t   imrott   Trt   eigrt   Vrt   vrRP   RQ   RR   t   Rt   expected_vr(    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   test_inertia_tensor_3d¨   s     ='' ('   t
   __future__R    t   numpyR   t   scipyR   RL   t   skimageR   t   skimage.measureR   R   R   R   R   R   R	   R
   R   t   skimage._sharedR   t   skimage._shared.testingR   R   R   t   skimage._shared._warningsR   R   R   R%   R-   R/   R3   R7   R:   R=   R?   RE   R^   (    (    (    sA   lib/python2.7/site-packages/skimage/measure/tests/test_moments.pyt   <module>   s&   @											
