
    0-PhMV                     b   d dl 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 d dlmZmZmZmZ d dl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 Z$d Z%d Z&d Z'd Z(d Z) eeoe	 d          d             Z*d Z+d Z,d Z-d  Z.d! Z/d" Z0d# Z1d$ Z2d% Z3d& Z4d' Z5dS )(    N)testing)expected_warnings)arch32is_wasmassert_almost_equalassert_array_lessassert_equalxfailassert_stacklevel)CircleModelEllipseModelLineModelNDransac)_dynamic_max_trials)AffineTransformc                      t                      } d| _        t          j        dd          }|                     |          }t          ||                     |                     d S )N))r   r   )   r   
   )r   paramsnparange	predict_yr   	predict_xmodelxys      ^/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/measure/tests/test_fit.pytest_line_model_predictr       sV    MME#EL
	#rAA5??1--.....    c                     t          j        t                    5  t                                          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t                                          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t                                          t          j        d          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t                                          t          j        d                     d d d            n# 1 swxY w Y   t          j        t                    5  t                                          t          j        d          t          j        d                     d d d            n# 1 swxY w Y   t                                          t          j	        d                    rJ t                                          t          j	        d                    rJ t          j        t                    5  t                      
                    t          j	        d                     d d d            d S # 1 swxY w Y   d S )Nr   )r      )r      )r   raises
ValueErrorr   r   r   zerosr   estimateempty	residuals r!   r    test_line_model_nd_invalid_inputr,      s   	
	#	# - -,,,- - - - - - - - - - - - - - - 

	#	# - -,,,- - - - - - - - - - - - - - - 

	#	# : :RXa[[999: : : : : : : : : : : : : : : 

	#	# - -,,,- - - - - - - - - - - - - - - 

	#	# : :RXa[[999: : : : : : : : : : : : : : : }}%%bhv&6&677777}}%%bhv&6&677777	
	#	# 2 2 0 01112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2sm   4AA!A>4B>>CC"AD55D9<D94FF F=AHHH4KK#&K#c                     t                      } t          j        ddg          t          j        ddg          f| _        t          j        dd          }|                     |          }t          ||                     |                     d S )Nr   g?g?r   r   )r   r   arrayr   r   r   r   r   r   s      r   test_line_model_nd_predictr/   3   sw    MMEHaV$$bhSz&:&:;EL
	#rAA5??1--.....r!   c            	         t                      } t          j        g dd          t          j        g dd          t          j        d          z  f| _        | j        d         dt          j        dd	          d
t          j        f         z  | j        d         z  z   }t          j                            d          }||	                    |j
                  z   }t                      }|                    |           t          t          j                            t          j        | j        d         |j        d                             dd           |j        d         | j        d         z
  }t          j                            |          dk    r"|t          j                            |          z  }t          t          j                            t          j        | j        d         |                    dd           d S )Nr   r   r   floatdtype)r   r   r   r#   r   r   d   .r     size)r   r   r.   sqrtr   r   newaxisrandomdefault_rngnormalshaper(   r   linalgnormcross)model0data0rngdata	model_estas         r   test_line_model_nd_estimaterI   ;   s   ]]F
'***
'***RWQZZ7FM 	a2	$ 4 4S"*_ EEVWHXXX 

 )


%
%C3::5;:///D It 
	rxa 0)2B12EFFGGA   	fmA..A	y~~a1	RY^^A	rxa0@!'D'DEEq!LLLLLr!   c            
         t                      } t          j        g d          t          j        g d          f| _        t	          t          |                     t          j        g dg                              d           t	          t          |                     t          j        g dg                              d           t	          t          |                     t          j        g dg                              d           t          j        g dg          }t          j        g d          t          j        g d          f}t	          t          |                     ||                    d           d S )	Nr1   r   r   r   r   )r   r   r   r   )r$   r   r   r      )r   r   r.   r   r	   absr*   )r   rF   r   s      r   test_line_model_nd_residualsrO   _   s8   MMEHYYY''))))<)<=ELU__RXyyyk%:%:;;<<a@@@U__RXyyyk%:%:;;<<a@@@U__RXzzzl%;%;<<==rBBB8ZZZL!!Dhyyy!!28III#6#67FU__T&_99::B?????r!   c                      t          j        t                    5  t                                          t          j        d                     d d d            d S # 1 swxY w Y   d S N)   r#   )r   r%   r&   r   r(   r   r)   r+   r!   r   test_circle_model_invalid_inputrS   k   s    	
	#	# 1 1rx//0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1   4AA"Ac                     t                      } d}dd|f| _        t          j        ddt          j        z  t          j        dz            }t          j        d          }t          ||                     |                     d S )NrR   r   r$   )rR   r   )r   rR   r   )r   rX   )r   r   r   r   pir.   r   
predict_xy)r   rtxys       r   test_circle_model_predictr^   p   sp    MME	Aq!9EL
	!QY	**A	4	5	5BE,,Q//00000r!   c                     t                      } d| _        t          j        ddt          j        z  d          }|                     |          }t          j                            d          }||                    |j	                  z   }t                      }|
                    |           t          | j        |j        d           d S )Nr      r#   r   r$     r7   r8   )r   r   r   linspacerY   rZ   r<   r=   r>   r?   r(   r   )rC   r\   rD   rE   rF   rG   s         r   test_circle_model_estimaterd   z   s    ]]FFM
Aq25y$''Aa  E )


%
%C3::5;:///D It y'7;;;;;r!   c                      t          j        ddgddgddgddggt           j                  } | dz  } t                      }|                    |            t          |j        g d           d S )Nr   r   r3     )rg   rg   r   )r   r.   int32r   r(   r   r   )r]   r   s     r   test_circle_model_int_overflowri      sq    	Aq6Aq6B7QG4BH	E	E	EB#IBMME	NN2mmm44444r!   c            
         t                      } d| _        t          t          |                     t          j        ddgg                              d           t          t          |                     t          j        ddgg                              t          j        d          dz
             t          t          |                     t          j        ddgg                              d           d S )N)r   r   rR   rR   r      H   r   )r   r   r   rN   r*   r   r.   r:   r   s    r   test_circle_model_residualsrn      s    MMEELEOOBHq!fX,>,>??@@!DDDEOOBHq!fX,>,>??@@"'(BSBSVWBWXXXEOOBHr1gY,?,?@@AA1EEEEEr!   c            	         t                      } dg}t          |          5  |                     t          j        ddgddgg                     d d d            n# 1 swxY w Y   t          |          5  |                     t          j        ddgddgddgg                     d d d            n# 1 swxY w Y   d}t          j        t          |          5 }|                     t          j        d	                    rJ 	 d d d            n# 1 swxY w Y   t          |           t          |          dk    sJ d S )
Nz6Input does not contain enough significant data points.r   r$   r#      r   zUStandard deviation of data is too small to estimate circle with meaningful precision.matchrk   r$   )r   r   r(   r   r.   pytestwarnsRuntimeWarningonesr   lenr   warning_message	_warningss      r   #test_circle_model_insufficient_datar|      s   MMEOPO	?	+	+ 3 3rx!Q!Q 0112223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
?	+	+ ; ;rx!Q!Q!Q 899:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ;	,  
nO	<	<	< 3	>>"'&//2222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3i   y>>Qs5   .AA"A51B22B69B6*DDDc                     t          j        g dt           j                  } t          j        g dt           j                  }t                                          ||           }t                      }|                    |                    t           j                            sJ t          | |j                   d S )N)gu`D-g?jS-gJ%H+r3   g1Zd?g?5^I?g|?5^?gm?g|?5^@g/$@gX9v	@gn@g\(\@g?5^I@g^I+@guV@rL   )	r   r.   float64r   rZ   r(   astyper   r   r   anglesrF   r   s       r   0test_circle_model_estimate_from_small_scale_datar      s    X555RZHHHFX	
 	
 	
 j  F" ==##F6#::DMME>>$++bj1122222-----r!   c                      t          j        t                    5  t                                          t          j        d                     d d d            d S # 1 swxY w Y   d S rQ   )r   r%   r&   r   r(   r   r)   r+   r!   r    test_ellipse_model_invalid_inputr      s    	
	#	# 2 2 0 01112 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2rT   c                      t                      } d| _        t          j        ddt          j        z  t          j        dz            }t          j        d          }t          ||                     |                     d S )N)r   r   rR   r   r   r   r$   )rV   )r   r   rW   )r   r   )r   r   r   r   rY   r.   r   rZ   )r   r\   r]   s      r   test_ellipse_model_predictr      se    NNE#EL
	!QY	**A	6	7	7BE,,Q//00000r!   c                     t          ddd          D ]0} t          j        |           }t                      }dddd|f|_        t          j        ddt          j        z  d          }|                    |          }t          j        	                    d	          }||
                    |j        
          z   }t                      }|                    |           t          |j        d d         |j        d d         d           |                    |          }t          |t          j        |j                             2d S )Nr         r         r$   r6   r7   r8   )ranger   deg2radr   r   rc   rY   rZ   r<   r=   r>   r?   r(   r   r*   r   rw   )	angleradrC   r\   rD   rE   rF   rG   ress	            r   test_ellipse_model_estimater      s*   q#r"" 3 3jRR-K1ru9c**!!!$$ i##D))szzu{z333 !NN	4    	FM"1"-y/?/CQGGG!!%((#rwsy112222'3 3r!   c                     t          j        ddd          D ]+} t          j        |           }t          j        |          }t          j        |          }t          j        || g||gg          }t          j        ddt           j        z  d          }d}d}t          j        |t          j        |          z  |t          j        |          z  g          }||z  }t                      }	|		                    |j
                   |	j        \  }
}
}}}t          ||           t          ||           t          ||           -dS )	z(The fit should be modified so that a > br      r   r$   r   r6   2   N)r   r   r   cossinr.   rc   rY   r   r(   Tr   r   )r   thetacsRr\   rH   bpointsellipse_model_a_primeb_primetheta_primes                 r    test_ellipse_parameter_stabilityr      s3    1gq)) ( (
5!!F5MMF5MMHq1"g1v&'' K1ru9b))1rvayy=!bfQii-899V %vx(((.;.B+1gwK///GQ'''GQ''''+( (r!   c                     t          j        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d.d/gd0dgd0dgd1d2gd1d3gd4d5gd4d6gd7d8gd9dgd:d;gd<d=gd>d?gd@d
gdAdBgdCdDgdEdFgdGdHgdIdJgdIdKgdLdMgdLdNgdOdPgdQdRgdSdTgdUdVgdUdMgdWdXgdWdYgdZdMgd[d\gdZdHgdZd]gd[dgd^d_gd`dagdbdcgdddegdddfgdbdggdbdgdddgd`dhgdid]gdjdkgdldmgdldgdndogdpdqgdrdsgdtdugdndJgdrdgdvd
gdwdqgdxdHgdydzgdwd{gd|d}gdxd~gddgddgddKgdd5gddsgdd$gddgddgddgddgddgddegddgddgddgddgddgddgddgddgddgddgddcgddgddgddgddgddgddsgddggddgddgddegddgddgddgddgddXgddNgddgddgddgddgddgddgddgddgddgt           j                  } t                      }|                    |            t          |j        d d         t          j        dd                     t          t          j        d          t          j	        |j        d 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  r3   rp   rb   )
r   r.   rh   r   r(   r   r   fullr'   rN   )rF   r   s     r   %test_ellipse_model_estimate_from_datar     sl	   8I	
#JI	
#JI	
 #JI	
 #J	I	

 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
 #JI	
  #J!I	
" #J#I	
$ #J%I	
& #J'I	
( #J)I	
* #J+I	
, #J-I	
. #J/I	
0 #J1I	
2 #J3I	
4 #J5I	
6 #J7I	
8 #J9I	
: #J;I	
< #J=I	
> #J?I	
@ #JAI	
B #JCI	
D #JEI	
F #JGI	
H #JII	
J #JKI	
L #JMI	
N #JOI	
P #JQI	
R #JSI	
T #JUI	
V #JWI	
X #JYI	
Z #J[I	
\ #J]I	
^ #J_I	
` #JaI	
b #JcI	
d #JeI	
f #JgI	
h #JiI	
j #JkI	
l #JmI	
n #JoI	
p #JqI	
r #JsI	
t #JuI	
v #JwI	
x #JyI	
z #J{I	
| #J}I	
~ #JI	
@ #JAI	
B #JCI	
D #JEI	
F #JGI	
H #JII	
J #JKI	
L #JMI	
N #JOI	
P #JQI	
R #JSI	
T #JUI	
V #JWI	
X #JYI	
Z #J[I	
\ #J]I	
^ #J_I	
` #JaI	
b #JcI	
d #JeI	
f #JgI	
h #JiI	
j #JkI	
l #JmI	
n #JoI	
p #JqI	
r #JsI	
t #JuI	
v #JwI	
x #JyI	
z #J{I	
| #J}I	
~ #JI	
@ #JAI	
B #JCI	
D #JEI	
F #JGI	
H #JII	
J #JKI	
L #JMI	
N #JOI	
P #JQI	
R #JSI	
T #JUI	
V #JWI	
X #JYI	
Z $K[I	
\ #J]I	
^ #J_I	
` #JaI	
b #JcI	
d #JeI	
f #JgI	
h #JiI	
j #JkI	
l #JmI	
n #JoI	
p #JqI	
r #JsI	
t #JuI	
v #JwI	
x #JyI	
z #J{I	
| #J}I	
~ #JI	
@ #JAI	
B #JCI	
D #JEI	
F #JGI	
H #JII	
J #JKI	
L #JMI	
N #JOI	
P #JQI	
T hWL L LD^ NNE	NN4 el2A2&4(8(8999 bhqkk26%,rr*:#;#;<<<<<r!   c                     t          j        g dt           j                  } t          j        g dt           j                  }t                                          ||           }t                      }|                    |                    t           j                            sJ t          | |j                   d S )N)g    .Ag    >A      ?g?r   r3   r~   rL   )	r   r.   r   r   rZ   r(   r   r   r   r   s       r   1test_ellipse_model_estimate_from_far_shifted_datar     s    X///rzBBBFX	
 	
 	
 j  F" >>$$VF$;;DNNE>>$++bj1122222-----r!   zKnown 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/2670)	conditionreasonc            	      @   t                      } d}t          j        t          |          5 }|                     t          j        d                    rJ 	 d d d            n# 1 swxY w Y   t          |           t          |          dk    sJ d}t          j        t          |          5 }|                     t          j	        ddgdd	gd
dgg                    rJ 	 d d d            n# 1 swxY w Y   t          |           t          |          dk    sJ d S )NzVStandard deviation of data is too small to estimate ellipse with meaningful precision.rq   rs   r   z3Need at least 5 data points to estimate an ellipse.r   P   3   Q   4   )
r   rt   ru   rv   r(   r   rw   r   rx   r.   ry   s      r   #test_ellipse_model_estimate_failersr     s    NNE	-  
nO	<	<	< 3	>>"'&//2222223 3 3 3 3 3 3 3 3 3 3 3 3 3 3i   y>>QKO	nO	<	<	< L	>>"(RHr2hR+I"J"JKKKKKKL L L L L L L L L L L L L L Li   y>>Qs#   *A##A'*A'/3C//C36C3c            
         t                      } d| _        t          t          |                     t          j        ddgg                              d           t          t          |                     t          j        ddgg                              d           t          t          |                     t          j        ddgg                              d           d S )N)r   r   r   rR   r   r   r   rR   )r   r   r   rN   r*   r   r.   rm   s    r   test_ellipse_model_residualsr     s    NNE#ELEOOBHr1gY,?,?@@AA1EEEEOOBHq!fX,>,>??@@!DDDEOOBHq"gY,?,?@@AA1EEEEEr!   c                     t                      } d| _        t          j        ddt          j        z  d          }|                     |          }d}d||d         d d f<   d||d         d d f<   d	||d         d d f<   t          |t           d
dd          \  }}t          |t           d
dd           t          | j        |j                   |D ]}||vsJ 	d S )Nr`   r   r$   rb   )r   rM      )rb   rb   )ir   r   )r5   r   r#   rR   rE   )r   r   r   rc   rY   rZ   r   r   )rC   r\   rD   outliersrG   inliersoutliers          r   test_ransac_shaper     s   ]]FFM
Aq25y$''Aa  E H(E(1+qqq.%E(1+qqq.'E(1+qqq.  {Aqa@@@Iw
5+q!++++ y'7888 & &g%%%%%& &r!   c                     t           j                            d          } d|                     d          z  }t          ddd          } ||          }d}d	||d
         <   d||d         <   d||d         <   t	          ||ft          dd|           \  }}t          |j        |j                   t          j        t          j        |dk              d
         |k              sJ d S )Ni̼ r6   )r   r$   )r   333333?r   )r   r   )scalerotationtranslation)r   rR   r   )'  r   r   )r5   r6   )r   r   r$   r   r   F)	r   r<   r=   r   r   r   r   allnonzero)rE   srcrC   dstr   rG   r   s          r   test_ransac_geometricr     s    
)


)
)C 

7##
#C:xPPPF
&++C H%C"CC  c
OQLLLIw y'78886"*W-..q1X=>>>>>>>r!   c            	         d } t          dg          5  t          t          j        d          t          dt          j        | d          \  }}d d d            n# 1 swxY w Y   t          |d            t          |d            d S )Nc                 $    | j         d         dk    S )Nr   r$   )r?   )rF   s    r   is_data_validz0test_ransac_is_data_valid.<locals>.is_data_valid  s    z!}q  r!   No inliers foundr   r$   r$   r   )r   rE   r   r   r   r)   r   infr	   )r   r   r   s      r   test_ransac_is_data_validr     s    ! ! ! 
./	0	0 
 
HWF'
 
 
w
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 $   :AA!Ac            	         d } t          dg          5  t          t          j        d          t          dt          j        | d          \  }}d d d            n# 1 swxY w Y   t          |d            t          |d            d S )Nc                     dS )NFr+   )r   rF   s     r   is_model_validz2test_ransac_is_model_valid.<locals>.is_model_valid)  s    ur!   r   r   r$   r   )r   rE   r   )r   r   r   s      r   test_ransac_is_model_validr   (  s       
./	0	0 
 
HWF)
 
 
w
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 $r   c                     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          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           d S )Nr6   r$   gGz?r   _      Z   r#      F      6   r      ~      rR   "   	   A   N   i`  i  i#  r   l   aWO)r	   r   r+   r!   r   test_ransac_dynamic_max_trialsr   9  s|    $S#q$77;;;$S#q!44a888 $Ra66:::$Ra33R888$Ra66:::$Ra33R888$Ra66:::$Ra33R888$Ra66;;;$Ra33S999 $Ra66:::$Ra33R888$Ra66:::$Ra33R888$Ra66;;;$Ra33S999$Ra66===$Ra33T::: $QQ22A666$QQ22LAAAAAr!   c                     t          t          dddd          d           t          j        t          j                  j        } t          j        t          j        |           t          j        d| z
            z            }|dk    sJ t          t          dddd          |           t          t          dddd          d           t          t          dddd          d           dS )zLTest that the function behaves well when `nom` or `denom` become almost 1.0.r   r6   r   r   rb   gWw'&l7N)r	   r   r   finfor   epsceillog)EPSILONdesireds     r   'test_ransac_dynamic_max_trials_clippingr   b  s     $QR33Q777hrz""&GgbfWooq7{(;(;;<<GQ;;;;$QT155w??? $QR77;;;$QT5991=====r!   c                     t          j        t                    5  t          t	          j        d          d dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d ddd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d ddd	           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d d
d           d d d            n# 1 swxY w Y   t          j        t                    5  t          t	          j        d          d dd           d d d            d S # 1 swxY w Y   d S )Nr   r$   g      )min_samplesresidual_thresholdr   rf   r   r   
max_trials)r   r   stop_probabilityg)\(?   )r   r%   r&   r   r   r'   r+   r!   r   test_ransac_invalid_inputr   r  s8   	
	#	# P Prx  $A$OOOOP P P P P P P P P P P P P P P 

	#	# 
 
HWtqUW	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

	#	# 
 
HW 	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

	#	# 
 
HW !	
 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

	#	# M Mrx  $A!LLLLM M M M M M M M M M M M M M M 

	#	# N Nrx  $B1MMMMN N N N N N N N N N N N N N N 

	#	# N Nrx  $B1MMMMN N N N N N N N N N N N N N N N N Ns}   &AAA0'B##B'*B''C::C>C>'EEE5&F''F+.F+&G==HH!&IIIc                       G d d          } t          j        d          }t          dg          5  t          || ddd           d d d            d S # 1 swxY w Y   d S )	Nc                       e Zd ZdZd Zd ZdS )1test_ransac_sample_duplicates.<locals>.DummyModelz$Dummy model to check for duplicates.c                 ^    t          t          j        |          j        |j                   dS )NT)r	   r   uniquer9   selfrF   s     r   r(   z:test_ransac_sample_duplicates.<locals>.DummyModel.estimate  s$    4-ty9994r!   c                 \    t          j        t          |          t           j                  S )Nr3   )r   rw   rx   r   r   s     r   r*   z;test_ransac_sample_duplicates.<locals>.DummyModel.residuals  s    73t99BJ7777r!   N)__name__
__module____qualname____doc__r(   r*   r+   r!   r   
DummyModelr     s8        22	 	 	
	8 	8 	8 	8 	8r!   r   rp   r   r#   g        r   r   )r   r   r   r   )r   rF   s     r   test_ransac_sample_duplicatesr    s    	8 	8 	8 	8 	8 	8 	8 	8 9Q<<D	./	0	0 W WtZQ3SUVVVVW W W W W W W W W W W W W W W W W Ws   AAAc                      t           j                            dd          } t          dg          5  t	          | t
          ddd          \  }}d d d            n# 1 swxY w Y   |J |J d S )NrR   r$   z"No inliers found. Model not fittedr#   r   i> )model_classr   r   rE   )r   r<   randr   r   r   )rF   r   r   s      r   !test_ransac_with_no_final_inliersr    s    9>>!QD	@A	B	B 
 
# 
 
 
w
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 ???=====s   AA!Ac            
      J   dt           fd} t          j                            d          }t          j        g dg dd          |                    dd          z   dz
  }t          d	g          5  t          |t          d
ddd|            ddd           dS # 1 swxY w Y   dS )zExample from GH issue #5572returnc           	          t          t          j        t          j        | j        d         g d                              }|dt          j        z  k    S )z?Allow models with a maximum of 10 degree tilt from the verticalr   rK   gqq?)rN   r   arccosdotr   rY   )r   random_datatilts      r   r   z8test_ransac_non_valid_best_model.<locals>.is_model_valid  sA    29RVELOYYY??@@AA25())r!   r   r1   )r   r   r   rb   r#   r   zEstimated model is not validr$   r   r   r   )r   r   r   rE   r   N)	boolr   r<   RandomStaterc   r  r   r   r   )r   rE   rF   s      r    test_ransac_non_valid_best_modelr    s	   *t * * * *
 )


"
"C;yyy+++t44sxxa7H7HH3ND	:;	<	< 	
 	
")	
 	
 	
 	
	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
s   /BBB)6numpyr   rt   skimage._sharedr   skimage._shared._warningsr   skimage._shared.testingr   r   r   r   r	   r
   r   skimage.measurer   r   r   r   skimage.measure.fitr   skimage.transformr   r    r,   r/   rI   rO   rS   r^   rd   ri   rn   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r+   r!   r   <module>r     s        # # # # # # 7 7 7 7 7 7                  K J J J J J J J J J J J 3 3 3 3 3 3 - - - - - -/ / /2 2 2./ / /!M !M !MH	@ 	@ 	@1 1 1
1 1 1< < <&5 5 5F F F  &. . .62 2 2
1 1 13 3 3.( ( (6X= X= X=v. . .8 $W	C    (F F F& & &.? ? ?,     "     "&B &B &BR> > > #N #N #NLW W W&  
 
 
 
 
r!   