ó
 ‰\c           @   ss  d  d l  Z d  d l m Z d  d l m Z d  d l m Z d  d l m	 Z	 d „  Z
 e	 j e d ƒ d d	 ƒd
 „  ƒ Z e	 j e d ƒ d d	 ƒd „  ƒ Z e	 j e d ƒ d d	 ƒd „  ƒ Z e	 j e d ƒ d d	 ƒd „  ƒ Z d „  Z d „  Z e e d „ Z e	 j e d ƒ d d	 ƒd „  ƒ Z e	 j e d ƒ d d	 ƒd „  ƒ Z d „  Z d „  Z d „  Z d S(   iÿÿÿÿN(   t   graph(   t   is_installed(   t   segmentation(   t   testingc         C   sY   i t  j d 6} |  | j | | ƒ d } |  | j | | ƒ d } i t | | ƒ d 6S(   Nt   weight(   t   npt   inft   gett   max(   t   gt   srct   dstt   nt   defaultt   w1t   w2(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   max_edge   s    t   networkxt   reasons   networkx not installedc          C   s  t  j j ƒ  }  x. t d ƒ D]  } |  j | i | g d 6ƒ q W|  j d d i d d 6ƒ |  j d d i d d 6ƒ |  j d d	 i d
 d 6ƒ |  j d	 d i d d 6ƒ |  j d d i d d 6ƒ |  j d	 d i d d 6ƒ |  j ƒ  } |  j d d ƒ |  j d d d d k st	 ‚ |  j d d	 d d
 k s:t	 ‚ | j d d d t
 ƒ| j d d d d k sqt	 ‚ | j d d	 d d k s’t	 ‚ |  j d d ƒ |  j d d	 ƒ |  j d	 d d t ƒ} t |  j | d ƒ t t d ƒ ƒ k sùt	 ‚ t |  j ƒ  ƒ g  k st	 ‚ d  S(   Ni   t   labelsi    i   i
   R   i   i   i   i   i(   i2   i   i<   t   weight_funct   in_place(   R    t   ragt   RAGt   ranget   add_nodet   add_edget   copyt   merge_nodest   adjt   AssertionErrorR   t   Falset   sortedt   nodet   listt   edges(   R	   t   it   gcR   (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_rag_merge   s*    !!!!/c          C   s€  t  j d d d ƒ}  d |  d  d … d  d … f <d |  d  d … d d  … f <d |  d d  … d  d … f <d |  d d  … d d  … f <t  j d d d ƒ} d
 | d  d … d  d … f <d	 | d  d … d d  … f <d | d d  … d  d … f <d | d d  … d d  … f <t j |  | ƒ } t j | | d d t ƒ} | j ƒ  d	 k sOt ‚ t j | | d ƒ } | j ƒ  d	 k s|t ‚ d  S(   Nid   i   t   dtypet   uint8iÿ   i2   iþ   i   i   i    i
   R   (   id   id   i   (   iÿ   iÿ   iÿ   (   iþ   iþ   iþ   (   i   i   i   (   i   i   i   (   id   id   (   R   t   zerosR    t   rag_mean_colort   cut_thresholdR   R   R   (   t   imgR   R   t
   new_labels(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_threshold_cut3   s    c          C   s°  t  j d d d ƒ}  d |  d  d … d  d … f <d |  d  d … d d  … f <d |  d d  … d  d … f <d |  d d  … d d  … f <t  j d d d ƒ} d
 | d  d … d  d … f <d	 | d  d … d d  … f <d | d d  … d  d … f <d | d d  … d d  … f <t j |  | d d ƒ} t j | | d t ƒ} t j | ƒ \ } } } | j ƒ  d	 k sjt	 ‚ t j | | ƒ } t j | ƒ \ } } } | j ƒ  d	 k s¬t	 ‚ d  S(   Nid   i   R'   R(   iÿ   i2   iþ   i   i   i    t   modet
   similarityR   (   id   id   i   (   iÿ   iÿ   iÿ   (   iþ   iþ   iþ   (   i   i   i   (   i   i   i   (   id   id   (
   R   R)   R    R*   t   cut_normalizedR   R   t   relabel_sequentialR   R   (   R,   R   R   R-   t   _(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_cut_normalizedM   s"    c       	   C   s’   t  j d
 d d ƒ}  t  j d d d ƒ} d | d  d … d  d  … f <d | d d  … d  d  … f <t j t ƒ  t j |  | d d	 ƒ Wd  QXd  S(   Ni
   i   R'   R(   i    i   i   i   s   non existant mode(   i
   i
   i   (   i
   i
   (   R   R)   R   t   raisest
   ValueErrorR    R*   (   R,   R   (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_rag_errori   s    c         C   s=   |  j  | d |  j  | d } t j j | ƒ } i | d 6S(   Ns
   mean colorR   (   R!   R   t   linalgt   norm(   R    R
   R   R   t   diff(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   _weight_mean_coloru   s     c         C   ss   |  j  | d c |  j  | d 7<|  j  | d c |  j  | d 7<|  j  | d |  j  | d |  j  | d <d  S(   Ns   total colors   pixel counts
   mean color(   R!   (   R    R
   R   (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   _pre_merge_mean_color{   s    ""c         C   s   t  j |  | | | | t t ƒ S(   N(   R    t   merge_hierarchicalR<   R;   (   R   R   t   thresht   rag_copyt   in_place_merge(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   merge_hierarchical_mean_color‚   s    c          C   sG  t  j d d d ƒ}  t  j d d d ƒ} d |  d  d  … d  d  … d  d  … f <d | d  d  … d  d  … f <d |  d d	 … d d	 … d  d  … f <d
 | d d	 … d d	 … f <d |  d	 d  … d d	 … d  d  … f <d | d	 d  … d d	 … f <t j |  | ƒ } | j ƒ  } d } t | | | ƒ } t  j | d  d  … d  d	 … f | d k ƒ sXt ‚ t  j | d  d  … d	 d  … f | d k ƒ st ‚ t | | | d t ƒ} t  j | d  d  … d  d	 … f | d k ƒ sÚt ‚ t  j | d  d  … d	 d  … f | d k ƒ st ‚ t j	 | | | ƒ } t  j | | d k ƒ sCt ‚ d  S(   Ni   i   R'   R(   i   i   i
   i    i   i   i   iÿÿÿÿR@   (   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   RA   t   allR   t   TrueR+   (   R,   R   R	   t   g2R>   t   result(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_rag_hierarchical‰   s(    %%%55	55c          C   sÆ   t  j d d d ƒ}  t  j d d d ƒ} d | d d … d d … f <d | d d … d d … f <t j |  | d	 d
 ƒ} t j | | d t ƒ} t j | ƒ \ } } } | j ƒ  d k sÂ t	 ‚ d S(   sB    Test to catch an error thrown when subgraph has all equal edges. id   i   R'   R(   i   Ni2   i   R/   R0   R   i    (   id   id   i   (   id   id   (
   R   R)   R    R*   R1   R   R   R2   R   R   (   R,   R   R   R-   R3   (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_ncut_stable_subgraph©   s    c          C   sË   t  j d d g d d g g d t  j ƒ}  t j |  ƒ } | j d d ƒ rp | j d d ƒ rp | j d d ƒ sv t ‚ t j |  d d ƒ} | j d d ƒ rÁ | j d d ƒ rÁ | j d d ƒ sÇ t ‚ d  S(   Ni   i   i   i   R'   t   connectivity(   R   t   arrayR(   R    R   t   has_edgeR   (   R   R	   t   h(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_generic_rag_2d»   s
    *=c          C   s  t  j d d t  j ƒj d
 ƒ }  t j |  ƒ } | j d d ƒ rg | j d d ƒ rg | j d d ƒ sm t ‚ t j |  d d ƒ} | j d d ƒ r¹ | j d d ƒ r¹ | j d d ƒ s¿ t ‚ t j |  d d ƒ} | j d d ƒ r
| j d d ƒ r
| j d d	 ƒ st ‚ d  S(   Ni   R'   i   i    i   i   RH   i   i   (   i   i   i   (   R   t   arangeR(   t   reshapeR    R   RJ   R   (   R   R	   RK   t   k(    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_generic_rag_3dÃ   s    !==c          C   sœ  t  j d d d ƒ}  t  j |  d t ƒ} d | d d  d  … f <d | d  d  … d f <d |  d  d … d  d … f <d |  d  d … d d  … f <d	 |  d d  … d  d … f <d
 |  d d  … d d  … f <t j |  | d d ƒ} t | j ƒ  ƒ t d d d	 d
 g ƒ k st ‚ t | j	 ƒ  ƒ t d d d d g ƒ k s>t ‚ | d d	 d d k s\t ‚ | d d
 d d k szt ‚ | d d	 d d k s˜t ‚ d  S(   Ni   R'   R(   g      à?i   g      ð?i   i   i   i   RH   R   g      Ð?g      Ö?t   count(   i   i   (   i   i   (   i   i   (   i   i   (   i   i   (
   R   R)   t
   zeros_liket   floatR    t   rag_boundaryt   sett   nodesR   R#   (   R   t   edge_mapR	   (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   test_rag_boundaryÍ   s    00(   t   numpyR   t   skimage.futureR    t$   skimage._shared.version_requirementsR   t   skimageR   t   skimage._sharedR   R   t   skipifR&   R.   R4   R7   R;   R<   RC   R   RA   RF   RG   RL   RP   RX   (    (    (    sB   lib/python2.7/site-packages/skimage/future/graph/tests/test_rag.pyt   <module>   s0   	#				
