ó
 ‰\c           @   s˜   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 l	 m
 Z
 e j j d ƒ d f  d „  ƒ  YZ d	 e j f d
 „  ƒ  YZ d S(   iÿÿÿÿN(   t   assert_array_almost_equal(   t   assert_equal(   t   ndimage(   t   peaki   t   TestPeakLocalMaxc           B   sû   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 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 „  Z RS(   c         C   s•   t  j d ƒ } t j | d d d t ƒ} t | ƒ t  j k sE t ‚ | sR t ‚ t j | d d d t ƒ} | j	 t  j
 ƒ | k j ƒ  s‘ t ‚ d  S(   Ni   t   min_distancei   t   indices(   i   i   (   t   npt   zerosR   t   peak_local_maxt   Truet   typet   ndarrayt   AssertionErrort   Falset   astypet   boolt   all(   t   selft   trivialt   peak_indicest   peaks(    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_trivial_case   s    c         C   s²   d d	 d
 d g } d t  j j d d ƒ } x$ | D] \ } } d | | | f <q2 Wt j | d d ƒ} t | ƒ t | ƒ k s… t ‚ x& | D] } t | ƒ | k sŒ t ‚ qŒ Wd  S(   Ni   i   gš™™™™™é?i   i   R   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   t   randomt   randR   R	   t   lenR   t   tuple(   R   t   peak_locationst   imaget   rt   ct   peaks_detectedt   loc(    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_noisy_peaks   s    c         C   ss   t  j d
 d t  j ƒ} d | d <d | d <t j | d d d d	 ƒ} t | ƒ d k s_ t ‚ t | d g ƒ d  S(   Ni   t   dtypei
   i   i   i   R   t   threshold_relg      à?(   i   i   (   i   i   (   i   i   (   i   i   (   R   R   t   uint8R   R	   R   R   R    (   R   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_relative_threshold"   s    

c         C   ss   t  j d	 d t  j ƒ} d | d
 <d | d <t j | d d d d ƒ} t | ƒ d k s_ t ‚ t | d g ƒ d  S(   Ni   R"   i
   i   i   i   R   t   threshold_abs(   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R$   R   R	   R   R   R    (   R   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_absolute_threshold*   s    

c         C   sM   d t  j d d t  j ƒ} t j | d d ƒ} t | ƒ d k sI t ‚ d  S(   Ni€   i   R"   R   i   i    (   i   i   (   R   t   onesR$   R   R	   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_constant_image2   s    c         C   se   t  j d d t  j ƒ} d | d d … d d … f <t j | d d ƒ} t | ƒ d k sa t ‚ d  S(	   Ni   R"   i
   i   i   R   i   (   i   i   (   R   R   R$   R   R	   R   R   (   R   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_flat_peak7   s    c         C   sß   t  j d d t  j ƒ} d | d <d | d <t j | d d ƒ} | j ƒ  d d g d d g g k sk t ‚ t  j d ƒ } d | d d f <t j | d d ƒ} | j ƒ  d d
 g d d g d d g d d g g k sÛ t ‚ d  S(   Ni   R"   i   i   i
   i   R   i   i   i   (   i   i   (   i   i   (   i   i   (   i   i
   (   i   i   i   i   (   i   i   i   i   (   R   R   R$   R   R	   t   tolistR   (   R   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_sorted_peaks=   s    

*c         C   sY  t  j d d t  j ƒ} d | d <d | d <d | d <d	 | d <d | d <t t j | d
 d d d ƒƒ d k sw t ‚ t j | d
 d d d d d ƒ} t | ƒ d k s° t ‚ d | k sÂ t ‚ d | k sÔ t ‚ t j | d
 d d d d d ƒ} t | ƒ d k st ‚ d | k st ‚ d | k s1t ‚ d | k sCt ‚ d | k sUt ‚ d  S(   Ni   R"   i
   i   i   i   i   i   i   R   R&   i    t	   num_peaksi   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R$   R   R   R	   R   (   R   R   t   peaks_limited(    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_num_peaksI   s&    




-c      
   C   sâ   t  j d d t  j ƒ} t  j d d t  j ƒd } d | d <d | d <d | d <d
 | d <d | d <t j | d d d d d | ƒ} t | ƒ d	 k sŸ t ‚ t j | d d d d d | d d ƒ} t | ƒ d k sÞ t ‚ d  S(   Ni   R"   i   i
   i   i   i   i   i   i   R   R&   i    t   labelsR-   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R   R$   R   R	   R   R   (   R   R   R0   R.   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_num_peaks_and_labels^   s    




!c         C   sS  t  j j d ƒ t  j j d d ƒ } t  j d d … d d … f \ } } d | d k | d k d	 } t j | d
 | d d d d d t d t  j d d	 ƒ} t	 | ƒ d k s¶ t
 ‚ t j | d
 | d d d d d t d t  j d d ƒ} t	 | ƒ d k st
 ‚ t j | d
 | d d d d d t d d	 d d	 ƒ} t	 | ƒ d	 k sOt
 ‚ d  S(   Ni   t   sizei   i   i    i   i
   i   i   R0   R   R#   R   R-   t   num_peaks_per_labeli   i   (   i   i   (   R   R   t   seedt   uniformt   mgridR   R	   R
   t   infR   R   (   R   R   t   it   jR0   t   result(    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt'   test_num_peaks_tot_vs_labels_4quadrantsn   s,    %					c         C   sk   t  j d	 ƒ } t  j d ƒ | d d d  d  d … f <t j | d d d d ƒ} t | ƒ d k sg t ‚ d  S(
   Ni
   id   i   i   R   i   R-   i   (   i
   i
   id   (   R   R   t   arangeR   R	   R   R   (   R   R   R.   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_num_peaks3D‡   s    %c         C   s  t  j j d d ƒ } t  j d d … d d … f \ } } d | d k | d k d } d	 | | d
 k <t  j d d
 … d d
 … f \ } } | | | | d k } t  j | j t ƒ } xx d d f D]j \ } } x[ d d f D]M \ }	 }
 t j | | | … |	 |
 … f d | ƒ| | | … |	 |
 … f <qà WqÇ W| | k } t	 j
 | d | d d d d d | d t d t ƒ} | | k j ƒ  sŒt ‚ d  S(   NR2   i(   i<   i    i   i   i   i   i   i   iýÿÿÿi	   t	   footprintR0   R   R#   R   t   exclude_border(   i(   i<   (   i    i   (   i   i(   (   i    i   (   i   i<   (   R   R   R5   R6   R   t   shapet   floatt   ndit   maximum_filterR   R	   R   R   R   (   R   R   R8   R9   R0   R>   t   expectedt   imint   imaxt   jmint   jmaxR:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_reorder_labels   s     %%Cc         C   sì  t  j j d d ƒ } t  j d d … d d … f \ } } d | d k | d k d } t  j d	 d
 … d	 d
 … f \ } } | | | | d k } t  j | j t ƒ } xx d d f D]j \ } } x[ d d f D]M \ }	 }
 t j | | | … |	 |
 … f d | ƒ| | | … |	 |
 … f <qÐ Wq· Wt  j	 t  j
 | | k ƒ ƒ } | t  j | t | j ƒ ƒ d  d  d … } t j | d | d d d d d | d t d t ƒ} | t  j | t | j ƒ ƒ d  d  d … } | | k j ƒ  sèt ‚ d  S(   NR2   i(   i<   i    i   i   i   i   iýÿÿÿi   i	   R>   iÿÿÿÿR0   R   R#   R   R?   (   i(   i<   (   i    i   (   i   i(   (   i    i   (   i   i<   (   R   R   R5   R6   R   R@   RA   RB   RC   t	   transposet   nonzerot   argsortR   t   TR   R	   R
   R   R   R   (   R   R   R8   R9   R0   R>   RD   RE   RF   RG   RH   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_indices_with_labels¡   s"    %%C--c         C   s\   t  j d ƒ } d | d <t j | d d d t ƒ} | | j t  j ƒ k j ƒ  sX t ‚ d  S(   Ni   i   i   R   R   (   i   i   i   (   i   i   i   (	   R   R   R   R	   R   R   R   R   R   (   R   t   nd_imageR   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_ndarray_indices_false´   s    
c      
   C   s  t  j d
 ƒ } d | d d d g d d d g d d d g f <d | d <d | d <t  j | d t  j ƒ} t | d <| d k } t j | d d d d d	 t ƒ} t | | ƒ t t j | d d d d d	 t ƒt j | d d d t d	 t ƒƒ t t j | d d d d d	 t ƒt j | d d d t d	 t ƒƒ t t j | d d d d d	 t ƒ| ƒ t t j | d t d	 t ƒ| ƒ d  S(   Ni   i   i    i   i   R"   R   R?   R   (   i   i   i   (   i   i    i    (   i   i   i   (   i   i   i   (	   R   R   t
   zeros_likeR   R
   R   R	   R   R   (   R   RO   RD   t   expectedNoBorderR:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_ndarray_exclude_borderº   s8    .


c         C   sz   t  j d ƒ } t  j d t ƒ } t j | d | d t  j d t ƒ d d d d	 d
 t d t ƒ} t  j | ƒ sv t	 ‚ d  S(   Ni
   i   R0   R>   i   R   i   R#   i    R   R?   (   i
   i   (   i
   i   (   i   i   (
   R   R   t   intR   R	   R(   R   R   R   R   (   R   R   R0   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt
   test_emptyÞ   s    c         C   s™   t  j d ƒ } t  j d t ƒ } d | d <d | d <t j | d | d t  j d t ƒ d d d	 d
 d t d t ƒ} t  j | | d k k ƒ s• t	 ‚ d  S(   Ni
   i   i   i   R0   R>   i   R   R#   i    R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_one_pointç   s    

c         C   s±   t  j d ƒ } t  j d t ƒ } d | d d d … f <d | d d d … f <t j | d | d t  j d t ƒ d	 d d
 d d t d t ƒ} t  j | | d k k ƒ s­ t	 ‚ d  S(   Ni
   i   i   i   i   R0   R>   i   R   R#   i    R   R?   (   i
   i   (   i
   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_adjacent_and_sameò   s    c         C   sý   t  j d ƒ } t  j d t ƒ } d | d <d | d <d | d d d … f <| d k } t j | d | d t  j d t ƒ d
 d d d d t d t ƒ} t  j | | k ƒ s± t	 ‚ t j | d | d
 d d d d t d t ƒ} t  j | | k ƒ sù t	 ‚ d  S(   Ni
   i   i   i   g      à?i   R0   R>   i   R   R#   i    R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   RD   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_adjacent_and_differentý   s    

c         C   s¯   t  j d ƒ } t  j d t ƒ } d | d <d | d <d | | d k <| d k } t j | d | d	 t  j d t ƒ d d d d d t d t ƒ} t  j | | k ƒ s« t	 ‚ d  S(   Ni
   i   i   i   g      à?i   i    R0   R>   i   R   R#   R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   RD   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_not_adjacent_and_different  s    

c         C   s³   t  j d ƒ } t  j d t ƒ } d | d <d | d <d | d <d | d <| d k } t j | d	 | d
 t  j d t ƒ d d d d d t d t ƒ} t  j | | k ƒ s¯ t	 ‚ d  S(   Ni
   i   i   i   g      à?i   i   i    R0   R>   i   R   R#   R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   RD   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_two_objects  s    



c         C   s³   t  j d ƒ } t  j d t ƒ } d | d <d | d <d | d <d | d <| d k } t j | d	 | d
 t  j d t ƒ d d d d d t d t ƒ} t  j | | k ƒ s¯ t	 ‚ d  S(   Ni
   i   i   i   g      à?i   i   i    R0   R>   i   R   R#   R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (
   R   R   RT   R   R	   R(   R   R   R   R   (   R   R   R0   RD   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_adjacent_different_objects)  s    



c         C   sƒ  t  j j d d ƒ } t  j d d … d d … f \ } } d | d k | d k d } t  j d	 d
 … d	 d
 … f \ } } | | | | d k } t  j | j t ƒ } xx d d f D]j \ } } x[ d d f D]M \ }	 }
 t j | | | … |	 |
 … f d | ƒ| | | … |	 |
 … f <qÐ Wq· W| | k } t	 j
 | d | d | d d d d d t d t ƒ} t  j | | k ƒ st ‚ d  S(   NR2   i   i   i    i   i
   i   i   iýÿÿÿi   i	   R>   R0   R   R#   R   R?   (   i   i   (   i    i
   (   i
   i   (   i    i   (   i   i   (   R   R   R5   R6   R   R@   RA   RB   RC   R   R	   R   R   R   (   R   R   R8   R9   R0   R>   RD   RE   RF   RG   RH   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_four_quadrants7  s    %%Cc         C   sÁ   t  j j d d ƒ } t  j d g g ƒ } t j | d t  j d ƒ d | d d d d	 d
 d d t d t ƒ} t  j | ƒ s t	 ‚ t j | d | d
 d d t d t ƒ} t  j | ƒ s½ t	 ‚ d S(   sz   regression test of img-1194, footprint = [1]
        Test peak.peak_local_max when every point is a local maximum
        R2   i
   i   i   R0   R>   R   R#   i    R&   iÿÿÿÿR   R?   N(   i
   i   (   i
   i   (
   R   R   R5   t   arrayR   R	   R(   R   R   R   (   R   R   R>   R:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt	   test_diskH  s    	c      	   C   s  t  j d ƒ } d | d <d | d <t t j | d d d d ƒd d d g g ƒ t t j | d d	 d d ƒd d d g g ƒ t t j | d d d d d
 t ƒj ƒ  ƒ d d d g d d d g g k sÐ t ‚ t t j | d d d d ƒj ƒ  ƒ d d d g d d d g g k st ‚ d  S(   Ni   i   i   i   R   i
   R#   i    i   R?   (   i   i   i   (   i   i   i   (   i   i   i   (	   R   R   R   R   R	   t   sortedR   R+   R   (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_3DX  s    

'c      	   C   s1  t  j d ƒ } d | d <d | d <t t j | d d d d ƒd d d d g g ƒ t t j | d d	 d d ƒd d d d g g ƒ t t j | d d d d d
 t ƒj ƒ  ƒ d d d d g d d d d g g k sÜ t ‚ t t j | d d d d ƒj ƒ  ƒ d d d d g d d d d g g k s-t ‚ d  S(   Ni   i   i   i   R   i
   R#   i    i   R?   (   i   i   i   i   (   i   i   i   i   (   i   i   i   i   (	   R   R   R   R   R	   R_   R   R+   R   (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_4Dg  s    

-c         C   sŸ   t  j d ƒ } d | d <t t j | ƒ ƒ d k s: t ‚ d | d <t t j | ƒ d d g g ƒ d | d	 <t t j | d d ƒƒ | j d k s› t ‚ d  S(
   Ni   i   i   i    R   (   i   i   (   i   i   (   i   i   (   i   i   (   R   R(   R   R   R	   R   R   R2   (   R   R   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_threshold_rel_defaultw  s    
!

(   t   __name__t
   __module__R   R!   R%   R'   R)   R*   R,   R/   R1   R;   R=   RI   RN   RP   RS   RU   RV   RW   RX   RY   RZ   R[   R\   R^   R`   Ra   Rb   (    (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyR      s6   															$												t   TestProminentPeaksc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c         C   s!  t  j d
 ƒ } d \ } } } d \ } } } d \ } }	 }
 | | | | f <| | | | f <|
 | |	 | f <t j | ƒ } t | d ƒ d	 k s— t ‚ xƒ t | d | d | d ƒ D]c \ } } } |  j | | | |
 f k ƒ |  j | | | | f k ƒ |  j | | | |	 f k ƒ q¶ Wd  S(   Ni   i   i   i   i   i   i   i    i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R   R   R   t   _prominent_peaksR   R   t   zipt
   assertTrue(   R   R   t   x0t   y0t   i0t   x1t   y1t   i1t   x2t   y2t   i2t   outR8   t   xt   y(    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_isolated_peaks„  s    .c         C   s¹  t  j d ƒ } d \ } } } d \ } } } d \ } }	 }
 | | | | f <| | | | f <|
 | |	 | f <t j | d d  ƒ} t | d	 ƒ d
 k s t ‚ xg t | d	 | d | d ƒ D]G \ } } } |  j | | | |
 f k ƒ |  j | | | | f k ƒ q¼ Wt j | d d ƒ} t | d	 ƒ d k s8t ‚ xz t | d	 | d | d ƒ D]Z \ } } } |  j | | |
 f k ƒ |  j | | | f k ƒ |  j | | |	 f k ƒ qWWd  S(   Ni   i   i   i
   i   i   i   t	   thresholdi    i   i   i	   (   i   i   (   i   i   i
   (   i   i   i   (   i   i   i
   (	   R   R   R   Rf   t   NoneR   R   Rg   Rh   (   R   R   Ri   Rj   Rk   Rl   Rm   Rn   Ro   Rp   Rq   Rr   R8   Rs   Rt   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_threshold“  s$    . .c         C   sâ   t  j d ƒ } d \ } } } d \ } } } d \ } }	 }
 | | | | f <| | | | f <|
 | |	 | f <t j | d d d d ƒ} t | d	 t  j | f ƒ ƒ t | d t  j | f ƒ ƒ t | d
 t  j | f ƒ ƒ d  S(   Ni   i   i   i   i   t   min_xdistancei   t   min_ydistancei    i   (   i   i   (   i   i   i   (   i   i   i   (   i   i   i   (   R   R   R   Rf   R   R]   (   R   R   Ri   Rj   Rk   Rl   Rm   Rn   Ro   Rp   Rq   Rr   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_peaks_in_contact§  s    	c         C   sŸ   t  j d ƒ } t  j d t ƒ } d | d <d | d <| j ƒ  } t j | d | d t  j d t ƒ d d d	 d
 d t d t ƒ} t  j	 | | k ƒ s› t
 ‚ d  S(   Ni
   i   i   i   R0   R>   i   R   R#   i    R   R?   (   i
   i   (   i
   i   (   i   i   (   i   i   (   i   i   (   R   R   RT   t   copyR   R	   R(   R   R   R   R   (   R   R   R0   t   labelsinR:   (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   test_input_labels_unmodifiedµ  s    

(   Rc   Rd   Ru   Rx   R{   R~   (    (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyRe   ƒ  s   			(   t   numpyR   t   unittestt   skimage._shared.testingR    R   t   scipyR   RB   t   skimage.featureR   R   R4   R   t   TestCaseRe   (    (    (    s>   lib/python2.7/site-packages/skimage/feature/tests/test_peak.pyt   <module>   s   ÿ y