ó
 ‰\c           @   sÚ   d  d l  m Z d  d l m Z m Z d  d l Z d  d l m Z d  d l	 m
 Z
 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 „  Z d „  Z d S(   iÿÿÿÿ(   t   testing(   t   assert_array_equalt   assert_allcloseN(   t   camera(   t   random_noiset   img_as_floatc          C   s>   d }  t  ƒ  } t | d |  ƒ} t | t | d |  ƒƒ d  S(   Ni*   t   seed(   R   R   R   (   R   t   camt   test(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_set_seed	   s    	c          C   s­   d }  t  t ƒ  ƒ } t | d |  d d d d ƒ} | | k } t | | t j | j ƒ  ƒ ƒ t | j ƒ  ƒ | j d | j d } d	 | k  ož d k n s© t	 ‚ d  S(
   Ni*   R   t   modet   saltt   amountg333333Ã?i    i   g)\Âõ(¼?(
   R   R   R   R   t   npt   onest   sumt   floatt   shapet   AssertionError(   R   R   t	   cam_noisyt   saltmaskt
   proportion(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt	   test_salt   s     (c          C   sV   t  j j d d ƒ }  t |  d d d d ƒ} t | d d d g d d d g g ƒ d  S(   Ni   i   R
   R   R   i   (   R   t   randomt   randR   R   (   t   imaget   noisy(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_salt_p1   s    c          C   sX   t  j j d d ƒ }  t |  d d d d d d ƒ} t  j | d k ƒ d	 k sT t ‚ d
 S(   sB   Ensure images where size of a given dimension is 1 work correctly.i   i   R
   R   R   gš™™™™™¹?R   i*   i   N(   R   R   R   R   R   R   (   R   R   (    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_singleton_dim$   s    c          C   s?  d }  t  t ƒ  ƒ } | d d } t | d |  d d d d ƒ} | | k } t | | t j | j ƒ  ƒ ƒ t | j ƒ  ƒ | j d	 | j d
 } d | k  o¬ d k n s· t	 ‚ | d k j ƒ  } t | d |  d d d d ƒ} t | d k j ƒ  | ƒ | j d	 | j d
 } d | k  o0d k n s;t	 ‚ d  S(   Ni*   g       @g      ð?R   R
   t   pepperR   g333333Ã?i    i   g)\Âõ(¼?iÿÿÿÿ(
   R   R   R   R   R   t   zerosR   R   R   R   (   R   R   t   data_signedR   t
   peppermaskR   t
   orig_zerost   cam_noisy_signed(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_pepper+   s     ("	c       
   C   sE  d }  t  t ƒ  ƒ } t | d |  d d d d d d ƒ} t j | | k | d	 k ƒ } t j | | k | d
 k ƒ } t | | t j | j ƒ  ƒ ƒ t | | t j | j ƒ  ƒ ƒ t	 | j ƒ  | j ƒ  ƒ | j
 d | j
 d } d | k  oþ d k n s	t ‚ d | j ƒ  t	 | j ƒ  ƒ k  o6d k  n sAt ‚ d  S(   Ni*   R   R
   s   s&pR   g333333Ã?t   salt_vs_pepperg      Ð?g      ð?g        i    i   g)\Âõ(¼?g
×£p=
Ç?g…ëQ¸Õ?(   R   R   R   R   t   logical_andR   R   R   R   R   R   R   (   R   R   R   R   R    R   (    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_salt_and_pepperD   s    	  /"c          C   sÏ   d }  t  j d ƒ d } t | d |  d d ƒ} d | j ƒ  k  oN d k  n sY t ‚ t | d |  d	 d
 d d ƒ} d | j ƒ  d k  o˜ d k  n s£ t ‚ d | j ƒ  k  oÀ d k  n sË t ‚ d  S(   Ni*   i€   g      à?R   t   varg{®Gáz„?gü©ñÒMb€?gú~j¼t“ˆ?t   meang333333Ó?g¸…ëQ¸Ž?gìQ¸…ëÑ?g{®GázÔ?g;ßO—n’?(   i€   i€   (   R   R   R   R'   R   R(   (   R   t   datat   data_gaussian(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_gaussianY   s    (,c          C   s'  d }  t  j d ƒ d } t  j d ƒ d } d | d  d … d d  … f <d | d d  … d  d … f <d | d d  … d d  … f <t | d	 d
 d |  d | d t ƒ} d | d  d … d  d … f j ƒ  k  o× d k  n sâ t ‚ d | d  d … d d  … f j ƒ  k  od k  n s t ‚ d | d d  … d  d … f j ƒ  k  oSd k  n s^t ‚ d | d d  … d d  … f j ƒ  k  o‘d k  n sœt ‚ t  j | ƒ } t j t	 ƒ ! t | d	 d
 d |  d | ƒWd  QX| d 7} d | d <t j t	 ƒ ! t | d	 d
 d |  d | ƒWd  QXd  S(   Ni*   i€   g      à?gü©ñÒMbP?gš™™™™™¹?i@   g      Ð?gÍÌÌÌÌÌÜ?R
   t   localvarR   t
   local_varst   clipg        gü©ñÒMb`?gR¸…ëQ¸?gáz®Gáº?g\Âõ(\Ï?gR¸…ëQÐ?g{®GázÜ?g…ëQ¸Ý?iÿÿÿÿi    (   i€   i€   (   i€   i€   (   i    i    (
   R   R   R   t   FalseR'   R   t
   zeros_likeR    t   raisest
   ValueError(   R   R)   R-   R*   t   bad_local_vars(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_localvard   s*    >>>>

c       
   C   s–   d }  t  j d ƒ d } t  j j d |  ƒ t  j j d d d ƒ } t  j | | | d d ƒ } t | d	 d
 d |  d d d d ƒ} t | | ƒ d  S(   Ni*   i€   gš™™™™™¹?R   g{®Gáz”?g      à?i    i   R
   t   speckleR(   R'   (   i€   i€   g
cÿQÂ?(   i€   i€   (   R   R   R   R   t   normalR.   R   R   (   R   R)   t   noiset   expectedt   data_speckle(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_speckle   s    	c          C   s¥   d }  t  ƒ  } t | d d d |  ƒ} t | d d d |  d t ƒ} t j j d |  ƒ t j j t | ƒ d ƒ d } t | t j	 | d d	 ƒ ƒ t | | ƒ d  S(
   Ni*   R
   t   poissonR   R.   i   g      p@g        g      ð?(
   R   R   R/   R   R   R   R;   R   R   R.   (   R   R)   R   t
   cam_noisy2R8   (    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_poisson‹   s    	 c          C   sG  d }  t  ƒ  } t | ƒ d d } t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d k rƒ | j ƒ  d k s‰ t ‚ | j ƒ  d k r­ | j ƒ  d	 k s³ t ‚ t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d
 k r| j ƒ  d k st ‚ | j ƒ  d k r=| j ƒ  d	 k sCt ‚ d  S(   Ni*   g       @g      ð?R
   R;   R   R.   g        g      ð¿gffffffò?gÍÌÌÌÌÌô?(   R   R   R   t   Truet   maxt   minR   R/   (   R   R)   R   t   cam_poissont   cam_poisson2(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_clip_poisson—   s    		**	*c          C   sG  d }  t  ƒ  } t | ƒ d d } t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d k rƒ | j ƒ  d k s‰ t ‚ | j ƒ  d k r­ | j ƒ  d	 k s³ t ‚ t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d
 k r| j ƒ  d k  st ‚ | j ƒ  d k r=| j ƒ  d k  sCt ‚ d  S(   Ni*   g       @g      ð?R
   t   gaussianR   R.   g        g      ð¿g…ëQ¸…ó?g
×£p=
×¿g/Ý$ó?g1¬Zdõ¿(   R   R   R   R>   R?   R@   R   R/   (   R   R)   R   t	   cam_gausst
   cam_gauss2(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_clip_gaussian«   s    		**	*c          C   sG  d }  t  ƒ  } t | ƒ d d } t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d k rƒ | j ƒ  d k s‰ t ‚ | j ƒ  d k r­ | j ƒ  d	 k s³ t ‚ t | d d d |  d t ƒ} t | d d d |  d t ƒ} | j ƒ  d
 k r| j ƒ  d k st ‚ | j ƒ  d
 k r=| j ƒ  d k  sCt ‚ d  S(   Ni*   g       @g      ð?R
   R5   R   R.   g        g      ð¿g/Ý$ó?gL7‰A`åô¿(   R   R   R   R>   R?   R@   R   R/   (   R   R)   R   t   cam_specklet   cam_speckle2(    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_clip_speckle¿   s    		**	*c          C   s6   t  j d ƒ }  t j t ƒ  t |  d ƒ Wd  QXd  S(   Ni@   t   perlin(   i@   i@   (   R   R   R    R1   t   KeyErrorR   (   R)   (    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   test_bad_modeÓ   s    (   t   skimage._sharedR    t   skimage._shared.testingR   R   t   numpyR   t   skimage.dataR   t   skimage.utilR   R   R	   R   R   R   R#   R&   R+   R4   R:   R=   RC   RG   RJ   RM   (    (    (    sC   lib/python2.7/site-packages/skimage/util/tests/test_random_noise.pyt   <module>   s$   													