
\c           @   sn  d  d l  Z d  d l m Z m Z m Z m Z d  d l m Z d  d l	 m
 Z
 d  d l m Z d  d l m Z m Z m Z 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   Z! e d e d d  d    Z" d   Z# d   Z$ d   Z% d   Z& d   Z' d   Z( d    Z) d S(!   iN(   t   LineModelNDt   CircleModelt   EllipseModelt   ransac(   t   AffineTransform(   t   _dynamic_max_trials(   t   testing(   t   assert_equalt   assert_almost_equalt   assert_array_lesst   xfailt   arch32c           C   s3   t  j t   t   j t j d   Wd  QXd  S(   Ni   i   (   i   i   (   R   t   raisest
   ValueErrorR    t   estimatet   npt   empty(    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_line_model_invalid_input   s    c          C   sS   t    }  d d f |  _ t j d d  } |  j |  } t | |  j |   d  S(   Ni    i   ii
   (   i    i    (   i   i   (   R    t   paramsR   t   aranget	   predict_yR   t	   predict_x(   t   modelt   xt   y(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_line_model_predict   s
    	c          C   s  t  j t   t   j t j d   Wd  QXt  j t   t   j t j d   Wd  QXt  j t  * t   j t j d  t j d   Wd  QXt  j t   t   j t j d   Wd  QXt  j t  * t   j t j d  t j d   Wd  QXt  j t   t   j	 t j
 d   Wd  QXt  j t   t   j t j
 d   Wd  QXt j
 d  }  t  j t   t   j	 |   Wd  QXd  S(   Ni   i   i   (   i   i   (   i   i   (   i   i   (   R   R   t   AssertionErrorR    R   R   t   zerosR   R   R   R   t	   residuals(   t   data(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt    test_line_model_nd_invalid_input   s"    ++c          C   sq   t    }  t j d d g  t j d d g  f |  _ t j d d  } |  j |  } t | |  j |   d  S(   Ni    g?g?ii
   (   R    R   t   arrayR   R   R   R   R   (   R   R   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_line_model_nd_predict3   s
    	-c          C   s  t    }  t j d d d g d d t j d d d g d d t j d  f |  _ |  j d d t j d d  d	 t j f |  j d } t j j d
  } | | j	 d | j
  } t    } | j |  t t j j t j |  j d | j d   d d  | j d |  j d } t j j |  d k rN| t j j |  :} n  t t j j t j |  j d |   d d  d  S(   Ni    t   dtypet   floati   i   i
   iid   .i  t   size(   R    R   R   t   sqrtR   R   t   newaxist   randomt   RandomStatet   normalt   shapeR   R   t   linalgt   normt   cross(   t   model0t   data0t   random_stateR   t	   model_estt   a(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_line_model_nd_estimate;   s    	1
/	c          C   s@  t    }  t j d d d g  t j d d d g  f |  _ t t |  j t j d d d g g    d  t t |  j t j d d d g g    d  t t |  j t j d d d g g    d  t j d d d g g  } t j d d d g  t j d d d g  f } t t |  j | d |  d  d  S(   Ni    i   i
   i   R   i   (   R    R   R   R   R   t   absR   (   R   R   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_line_model_nd_residuals[   s    	31110c          C   s9   t  j d  }  t j t   t   j |   Wd  QXd  S(   Ni   i   (   i   i   (   R   R   R   R   R   R    R   (   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt"   test_line_modelND_under_determinedg   s    c           C   s3   t  j t   t   j t j d   Wd  QXd  S(   Ni   i   (   i   i   (   R   R   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_circle_model_invalid_inputm   s    c          C   sy   t    }  d } d d | f |  _ t j d d t j t j d  } t j d d d d f  } t | |  j |   d  S(	   Ni   i    i   i(   i   i    (   i    i   (   ii    (   i    i(   R   R   R   R   t   piR   R   t
   predict_xy(   R   t   rt   tt   xy(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_circle_model_predictr   s    	#c          C   s   t    }  d	 |  _ t j d d t j d  } |  j |  } t j j d  } | | j d | j	  } t    } | j
 |  t |  j | j d  d  S(
   Ni
   i   i   i    i   i  i  R#   (   i
   i   i   (   R   R   R   t   linspaceR7   R8   R&   R'   R(   R)   R   R   (   R-   R:   R.   R/   R   R0   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_circle_model_estimate|   s    			c          C   s   t    }  d |  _ t t |  j t j d d g g    d  t t |  j t j d d g g    t j d d  d  t t |  j t j d d g g    d  d  S(   Ni    i   i   i   i
   (   i    i    i   i$   (   R   R   R   R3   R   R   R   R$   (   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_circle_model_residuals   s    		.'c           C   s3   t  j t   t   j t j d   Wd  QXd  S(   Ni   i   (   i   i   (   R   R   R   R   R   R   R   (    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt    test_ellipse_model_invalid_input   s    c          C   sj   t    }  d |  _ t j d d t j t j d  } t j d d	 d
 d f  } t | |  j |   d  S(   Ni    i   i
   i   ii(   i    i    i   i
   i    (   i   i    (   i    i
   (   ii    (   i    i(   R   R   R   R   R7   R   R   R8   (   R   R:   R;   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ellipse_model_predict   s
    		#c    	      C   s  x t  d d d  D] }  t j |   } t   } d d d d | f | _ t j d d t j d  } | j |  } t j j	 d	  } | | j
 d
 | j  } t   } | j |  t | j d  | j d  d  | j |  } t | t j | j   q Wd  S(   Ni    i   i   i
   i   i   i   id   i  R#   (   t   rangeR   t   deg2radR   R   R=   R7   R8   R&   R'   R(   R)   R   R   R   R	   t   ones(	   t   anglet   radR-   R:   R.   R/   R   R0   t   res(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ellipse_model_estimate   s    		c          C   s  t  j d d g d d g d d g d d g d	 d
 g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d  d! g d" d g d# d$ g d% d& g d' d! g d' d& g d( d& g d) d* g d+ d g d, d g d- d g d. d/ g d0 d g d0 d g d1 d2 g d1 d3 g d4 d5 g d4 d6 g d7 d8 g d9 d g d: d; g d< d= g d> d? g d@ d
 g dA dB g dC dD g dE dF g dG dH g dI dJ g dI dK g dL dM g dL dN g dO dP g dQ dR g dS dT g dU dV g dU dM g dW dX g dW dY g dZ dM g d[ d\ g dZ dH g dZ d] g d[ d g d^ d_ g d` da g db dc g dd de g dd df g db dg g db d g dd d g d` dh g di d] g dj dk g dl dm g dl d g dn do g dp dq g dr ds g dt du g dn dJ g dr d g dv d
 g dw dq g dx dH g dy dz g dw d{ g d| d} g dx d~ g d d g d d g d dK g d d5 g d ds g d d$ g d d g d d g d d g d d g d d g d de g d d g d d g d d g d d g d d g d d g d d g d d g d d g d d g d dc g d d g d d g d d g d d g d d g d ds g d dg g d d g d d g d de g d d g d d g d d g d d g d dX g d dN g d d g d d g d d g d d g d d g d d g d d g d d g d d g g  }  t   } | j |   t t  j | j d   t  j d g d   d  S(   Ni  iV  i	  ik  i  i_  i  iY  i  i  i  i  i1  i  iD  i  iO  i  iP  iY  i  ib  i  ic  i  il  i  im  i  iw  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  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  i  iW  i  iL  iu  i  iM  ii  i  is  i!  ij  i  i`  i)  ia  i*  i9  iC  i3  i5  i:  i  i=  i
  i<  i/  i>  i$  i?  i  i  i  i  iF  iC  i  iG  i%  iJ  i  iH  i8  iI  i  iE  i  iK  iR  iQ  iN  i{  i  iT  i  i  i[  i  i\  i  i]  i^  i  ie  i"  i  ig  i  ii  io  i  ip  i  iq  i  iy  i  i  i  i  iz  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  i  i+  i  i  i  i  i  io  i   g     @@(   R   R   R   R   R	   R3   R   (   R   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt%   test_ellipse_model_estimate_from_data   s6    6666666666666666666666-	t	   conditiont   reasons   Known test failure on 32-bit platforms. See links for details: https://github.com/scikit-image/scikit-image/issues/3091 https://github.com/scikit-image/scikit-image/issues/2670c          C   sf   t    }  |  j t j d   s( t  |  j t j d d g d d g d d g g   sb t  d  S(	   Ni   i   i2   iP   i3   iQ   i4   (   i   i   (   R   R   R   RD   R   R   (   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt#   test_ellipse_model_estimate_failers   s    	c          C   s   t    }  d |  _ t t |  j t j d d g g    d  t t |  j t j d d g g    d  t t |  j t j d d g g    d  d  S(   Ni    i
   i   (   i    i    i
   i   i    (   R   R   R   R3   R   R   R   (   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ellipse_model_residuals   s
    		..c          C   s   t    }  d |  _ t j d d t j d  } |  j |  } d } d | | d d  d   f <d | | d d  d   f <d | | d d  d   f <t | t  d d d d \ } } t |  j | j  x  | D] } | | k s t  q Wd  S(   Ni
   i   i   i    i   i  i   i   ii2   i   iii   R/   (   i
   i   i   (   i
   i   i   (   i  i  (   ii2   (   ii(	   R   R   R   R=   R7   R8   R   R   R   (   R-   R:   R.   t   outliersR0   t   inlierst   outlier(    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_shape   s    		c          C   s   t  j j d  }  d |  j d  } t d d d d d	 d  } | |  } d } d | | d <d | | d <d | | d <t | | f t d d d |  \ } } t | j | j  t  j t  j	 | t
 k  d | k  s t  d  S(   Ni   id   i2   i   t   scaleg      ?g333333?t   rotationt   translationi
   i   i    i   i'  iR/   (   i2   i   (   g      ?g333333?(   i
   i   (   i    i   i   (   i'  i'  (   iid   (   i2   i2   (   R   R&   R'   t   random_sampleR   R   R   R   t   allt   nonzerot   FalseR   (   R/   t   srcR-   t   dstRN   R0   RO   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_geometric  s    	c       	   C   sZ   d   }  t  t j d  t d t j d |  d d \ } } t | d   t | d   d  S(   Nc         S   s   |  j  d d k S(   Ni    i   (   R)   (   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   is_data_valid$  s    i
   i   R\   R/   i   (   i
   i   (   R   R   R   R    t   infR   t   None(   R\   R   RO   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_is_data_valid#  s
    	c       	   C   sZ   d   }  t  t j d  t d t j d |  d d \ } } t | d   t | d   d  S(   Nc         S   s   t  S(   N(   RX   (   R   R   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   is_model_valid-  s    i
   i   R`   R/   i   (   i
   i   (   R   R   R   R    R]   R   R^   (   R`   R   RO   (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_is_model_valid,  s
    	c           C   s;  t  t d d d d  d  t  t d d d d  d  t  t d d d d  d  t  t d d d d  d	  t  t d
 d d d  d  t  t d d d d  d  t  t d d d d  d  t  t d d d d  d  t  t d
 d d d  d  t  t d d d d  d  t  t d d d d  t j  d  S(   Nid   i   gGz?i   i_   iZ   i   iF   i   i2   i   i   i   i	   iN   i  i    (   R   R   R   R]   (    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_dynamic_max_trials5  s    c           C   s   t  j t  - t t j d
  d  d d d d d d Wd  QXt  j t  - t t j d  d  d d d d d d Wd  QXt  j t  - t t j d  d  d d d d d d	 Wd  QXd  S(   Ni
   i   t   min_samplest   residual_thresholdi    t
   max_trialsit   stop_probabilityg)\(?(   i
   i   (   i
   i   (   i
   i   (   R   R   R   R   R   R   R^   (    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   test_ransac_invalid_inputU  s    (*   t   numpyR   t   skimage.measureR    R   R   R   t   skimage.transformR   t   skimage.measure.fitR   t   skimage._sharedR   t   skimage._shared.testingR   R   R	   R
   R   R   R   R   R    R2   R4   R5   R6   R<   R>   R?   R@   RA   RH   RI   RL   RM   RQ   R[   R_   Ra   Rb   Rg   (    (    (    s=   lib/python2.7/site-packages/skimage/measure/tests/test_fit.pyt   <module>   s:   "(					 				
								"									 