
    9iMV                     d   S SK rS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
JrJrJrJr  S SKJrJrJrJr  S SKJr  S SKJr  S rS	 rS
 rS rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'S r(S r)\" \=(       a    \	(       + SS9S 5       r*S r+S r,S r-S  r.S! r/S" r0S# r1S$ r2S% r3S& r4S' r5g)(    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                      [        5       n SU l        [        R                  " SS5      nU R	                  U5      n[        XR                  U5      5        g )N))r   r   )   r   
   )r   paramsnparange	predict_yr   	predict_xmodelxys      ^/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/measure/tests/test_fit.pytest_line_model_predictr       s?    ME#EL
		#rAA??1-.    c                     [         R                  " [        5         [        5       R	                  [
        R                  " S5      5        S S S 5        [         R                  " [        5         [        5       R                  [
        R                  " S5      5        S S S 5        [         R                  " [        5         [        5       R	                  [
        R                  " S5      [
        R                  " S5      5        S S S 5        [         R                  " [        5         [        5       R                  [
        R                  " S5      5        S S S 5        [         R                  " [        5         [        5       R                  [
        R                  " S5      [
        R                  " S5      5        S S S 5        [        5       R                  [
        R                  " S5      5      (       a   e[        5       R                  [
        R                  " S5      5      (       a   e[         R                  " [        5         [        5       R                  [
        R                  " S5      5        S S S 5        g ! , (       d  f       GN2= f! , (       d  f       GN= f! , (       d  f       GN= f! , (       d  f       GNc= f! , (       d  f       GN= f! , (       d  f       g = f)Nr   )r      )r      )r   raises
ValueErrorr   r   r   zerosr   estimateempty	residuals r!   r    test_line_model_nd_invalid_inputr,      s   	
	#, 
$ 

	#, 
$ 

	#RXXa[9 
$ 

	#, 
$ 

	#RXXa[9 
$ }%%bhhv&67777}%%bhhv&67777	
	# 01 
$	#% 
$	# 
$	# 
$	# 
$	# 
$	# 
$	#sI   .I4+.J;AJ .J*0AJ<=.K4
J
J
J'*
J9<
K
Kc                     [        5       n [        R                  " SS/5      [        R                  " SS/5      4U l        [        R                  " SS5      nU R                  U5      n[        XR                  U5      5        g )Nr   g?g?r   r   )r   r   arrayr   r   r   r   r   r   s      r   test_line_model_nd_predictr/   3   s^    MEHHaV$bhhSz&:;EL
		#rAA??1-.r!   c            	         [        5       n [        R                  " / SQSS9[        R                  " / SQSS9[        R                  " S5      -  4U l        U R                  S   S[        R
                  " SS	5      S
[        R                  4   -  U R                  S   -  -   n[        R                  R                  S5      nXR                  UR                  S9-   n[        5       nUR                  U5        [        [        R                  R                  [        R                  " U R                  S   UR                  S   5      5      SS5        UR                  S   U R                  S   -
  n[        R                  R                  U5      S:  a"  U[        R                  R                  U5      -  n[        [        R                  R                  [        R                  " U R                  S   U5      5      SS5        g )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   ;   sy   ]F
'*
'*RWWQZ7FM 	a2		$ 4S"**_ EEVWHXXX 

 ))


%C::5;;://D It 
		rxxa 0)2B2B12EFGA 	fmmA..A	yy~~a1	RYY^^A		rxxa0@!'DEq!Lr!   c            
         [        5       n [        R                  " / SQ5      [        R                  " / SQ5      4U l        [	        [        U R                  [        R                  " / SQ/5      5      5      S5        [	        [        U R                  [        R                  " / SQ/5      5      5      S5        [	        [        U R                  [        R                  " / SQ/5      5      5      S5        [        R                  " / SQ/5      n[        R                  " / SQ5      [        R                  " / SQ5      4n[	        [        U R                  XS95      S5        g )	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   _   s    MEHHY'))<=ELU__RXXyk%:;<a@U__RXXyk%:;<a@U__RXXzl%;<=rB88ZL!Dhhy!288I#67FU__T_9:B?r!   c                      [         R                  " [        5         [        5       R	                  [
        R                  " S5      5        S S S 5        g ! , (       d  f       g = fN)   r#   )r   r%   r&   r   r(   r   r)   r+   r!   r   test_circle_model_invalid_inputrS   k   s3    	
	#rxx/0 
$	#	#   .A
A c                     [        5       n SnSSU4U l        [        R                  " SS[        R                  -  [        R                  S-  5      n[        R
                  " S5      n[        X0R                  U5      5        g )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   s_    ME	Aq!9EL
		!QY	*A	4	5B,,Q/0r!   c                     [        5       n SU l        [        R                  " SS[        R                  -  S5      nU R                  U5      n[        R                  R                  S5      nX#R                  UR                  S9-   n[        5       nUR                  U5        [        U R                  UR                  S5        g )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
Aq255y$'Aa E ))


%C::5;;://D It y'7'7;r!   c                      [         R                  " SS/SS/SS/SS//[         R                  S9n U S-  n [        5       nUR	                  U 5        [        UR                  / SQ5        g )Nr   r   r3     )rg   rg   r   )r   r.   int32r   r(   r   r   )r]   r   s     r   test_circle_model_int_overflowri      sY    	Aq6Aq6B7QG4BHH	EB#IBME	NN2m4r!   c            
         [        5       n SU l        [        [        U R	                  [
        R                  " SS//5      5      5      S5        [        [        U R	                  [
        R                  " SS//5      5      5      [
        R                  " S5      S-
  5        [        [        U R	                  [
        R                  " SS//5      5      5      S5        g )N)r   r   rR   rR   r      H   r   )r   r   r   rN   r*   r   r.   r:   r   s    r   test_circle_model_residualsrn      s    MEELEOOBHHq!fX,>?@!DEOOBHHq!fX,>?@"''(BSVWBWXEOOBHHr1gY,?@A1Er!   c            	      `   [        5       n S/n[        U5         U R                  [        R                  " SS/SS//5      5        S S S 5        [        U5         U R                  [        R                  " SS/SS/SS//5      5        S S S 5        Sn[
        R                  " [        US9 nU R                  [        R                  " S	5      5      (       a   e S S S 5        [        W5        [        U5      S:X  d   eg ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       NM= f)
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    MEOPO	?	+rxx!Q!Q 012 
, 
?	+rxx!Q!Q!Q 89: 
,	,  
nO	<	>>"''&/22222 
=i y>Q 
,	+ 
,	+ 
=	<s#   ,C=/D*-D=
D
D
D-c                  n   [         R                  " / SQ[         R                  S9n [         R                  " / SQ[         R                  S9n[        5       R	                  XS9n[        5       nUR                  UR                  [         R                  5      5      (       d   e[        XR                  5        g )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    XX5RZZHFXX	
 jjF" =##F#:DME>>$++bjj12222-r!   c                      [         R                  " [        5         [        5       R	                  [
        R                  " S5      5        S S S 5        g ! , (       d  f       g = frQ   )r   r%   r&   r   r(   r   r)   r+   r!   r    test_ellipse_model_invalid_inputr      s3    	
	# 01 
$	#	#rT   c                      [        5       n SU l        [        R                  " SS[        R                  -  [        R                  S-  5      n[        R
                  " S5      n[        X R                  U5      5        g )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      sT    NE#EL
		!QY	*A	6	7B,,Q/0r!   c                  j   [        SSS5       GH!  n [        R                  " U 5      n[        5       nSSSSU4Ul        [        R
                  " SS[        R                  -  S5      nUR                  U5      n[        R                  R                  S	5      nXER                  UR                  S
9-   n[        5       nUR                  U5        [        UR                  S S UR                  S S S5        UR                  U5      n[        U[        R                   " UR                  5      5        GM$     g )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"jjRR-KK1ruu9c*!!!$ ii##D)zzu{{z33 !N	4  	FMM"1-y/?/?/CQG!!%(#rwwsyy12' #r!   c                     [         R                  " SSS5       GH.  n [         R                  " U 5      n[         R                  " U5      n[         R                  " U5      n[         R
                  " X#* /X2//5      n[         R                  " SS[         R                  -  S5      nSnSn[         R
                  " U[         R                  " U5      -  U[         R                  " U5      -  /5      nXH-  n[        5       n	U	R                  UR                  5        U	R                  u    pp[        X5        [        X5        [        X5        GM1     g)	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      s     1gq)

5!FF5MFF5MHHq"gv&' KK1ruu9b)1rvvay=!bffQi-89 %vxx(.;.B.B+1wK/G'G'+ *r!   c                     [         R                  " / SS/PSS/PSS/PSS/PS	S
/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PS S!/PS"S/PS#S$/PS%S&/PS'S!/PS'S&/PS(S&/PS)S*/PS+S/PS,S/PS-S/PS.S//PS0S/PS0S/PS1S2/PS1S3/PS4S5/PS4S6/PS7S8/PS9S/PS:S;/PS<S=/PS>S?/PS@S
/PSASB/PSCSD/PSESF/PSGSH/PSISJ/PSISK/PSLSM/PSLSN/PSOSP/PSQSR/PSSST/PSUSV/PSUSM/PSWSX/PSWSY/PSZSM/PS[S\/PSZSH/PSZS]/PS[S/PS^S_/PS`Sa/PSbSc/PSdSe/PSdSf/PSbSg/PSbS/PSdS/PS`Sh/PSiS]/PSjSk/PSlSm/PSlS/PSnSo/PSpSq/PSrSs/PStSu/PSnSJ/PSrS/PSvS
/PSwSq/PSxSH/PSySz/PSwS{/PS|S}/PSxS~/PSS/PSS/PSSK/PSS5/PSSs/PSS$/PSS/PSS/PSS/PSS/PSS/PSSe/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSSc/PSS/PSS/PSS/PSS/PSS/PSSs/PSSg/PSS/PSS/PSSe/PSS/PSS/PSS/PSS/PSSX/PSSN/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/PSS/P[         R                  S9n [        5       nUR	                  U 5        [        UR                  S S [         R                  " SS5      5        [        [         R                  " S5      [         R                  " UR                  S S 5      5        g )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  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     sH	   88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 hhWLD^ NE	NN4 ell2A&4(89 bhhqk266%,,r*:#;<r!   c                  n   [         R                  " / SQ[         R                  S9n [         R                  " / SQ[         R                  S9n[        5       R	                  XS9n[        5       nUR                  UR                  [         R                  5      5      (       d   e[        XR                  5        g )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    XX/rzzBFXX	
 jjF" >$$V$;DNE>>$++bjj1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            	      "   [        5       n Sn[        R                  " [        US9 nU R	                  [
        R                  " S5      5      (       a   e S S S 5        [        W5        [        U5      S:X  d   eSn[        R                  " [        US9 nU R	                  [
        R                  " SS/SS	/S
S//5      5      (       a   e S S S 5        [        U5        [        U5      S:X  d   eg ! , (       d  f       N= f! , (       d  f       N<= f)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     NE	-  
nO	<	>>"''&/22222 
=i y>QKO	nO	<	>>"((RHr2hR+I"JKKKKK 
=i y>Q 
=	< 
=	<s   -C/6D /
C= 
Dc            
         [        5       n SU l        [        [        U R	                  [
        R                  " SS//5      5      5      S5        [        [        U R	                  [
        R                  " SS//5      5      5      S5        [        [        U R	                  [
        R                  " SS//5      5      5      S5        g )N)r   r   r   rR   r   r   r   rR   )r   r   r   rN   r*   r   r.   rm   s    r   test_ellipse_model_residualsr     s    NE#ELEOOBHHr1gY,?@A1EEOOBHHq!fX,>?@!DEOOBHHq"gY,?@A1Er!   c                     [        5       n SU l        [        R                  " SS[        R                  -  S5      nU R                  U5      nSnSX#S   S S 24'   SX#S   S S 24'   S	X#S   S S 24'   [        U[         S
SSS9u  pE[        U[         S
SSS9  [        U R                  UR                  5        U H
  nXe;  a  M
   e   g )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
Aq255y$'Aa E H(E1+q.%E1+q.'E1+q.  {Aqa@I
5+q!+ y'7'78%%% r!   c                     [         R                  R                  S5      n SU R                  S5      -  n[        SSSS9nU" U5      nSnS	X4S
   '   SX4S   '   SX4S   '   [	        X4[        SSU S9u  pV[        UR                  UR                  5        [         R                  " [         R                  " US:H  5      S
   U:H  5      (       d   eg )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PF
+C H%C"CC  
OQLI y'7'7866"**W-.q1X=>>>>r!   c            
          S n [        S/5         [        [        R                  " S5      [        S[        R
                  U SS9u  pS S S 5        [        WS 5        [        WS 5        g ! , (       d  f       N'= f)Nc                 &    U R                   S   S:  $ )Nr   r$   )r?   )rF   s    r   is_data_valid0test_ransac_is_data_valid.<locals>.is_data_valid  s    zz!}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     sd    ! 
./	0HHWFF'
 
1 $ 
1	0   7A((
A6c            
          S n [        S/5         [        [        R                  " S5      [        S[        R
                  U SS9u  pS S S 5        [        WS 5        [        WS 5        g ! , (       d  f       N'= f)Nc                     g)NFr+   )r   rF   s     r   is_model_valid2test_ransac_is_model_valid.<locals>.is_model_valid)  s    r!   r   r   r$   r   )r   rE   r   )r   r   r   s      r   test_ransac_is_model_validr   (  sd     
./	0HHWFF)
 
1 $ 
1	0r   c                     [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S	5        [        [        S
SSS5      S5        [        [        S
SSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        S
SSS5      S5        [        [        S
SSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        [        [        SSSS5      S5        g )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;$S#q!4a8 $Ra6:$Ra3R8$Ra6:$Ra3R8$Ra6:$Ra3R8$Ra6;$Ra3S9 $Ra6:$Ra3R8$Ra6:$Ra3R8$Ra6;$Ra3S9$Ra6=$Ra3T: $QQ2A6$QQ2LAr!   c                     [        [        SSSS5      S5        [        R                  " [        R                  5      R
                  n [        R                  " [        R                  " U 5      [        R                  " SU -
  5      -  5      nUS:  d   e[        [        SSSS5      U5        [        [        SSSS5      S5        [        [        SSSS5      S5        g)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3Q7hhrzz"&&GggbffWoq7{(;;<GQ;;$QT15w? $QR7;$QT591=r!   c            	         [         R                  " [        5         [        [        R
                  " S5      S SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S SSSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S SSSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S SSS	S9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S SSS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S S
SS9  S S S 5        [         R                  " [        5         [        [        R
                  " S5      S SSS9  S S S 5        g ! , (       d  f       GN= f! , (       d  f       GNs= f! , (       d  f       GNA= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)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  s   	
	#rxx $A$O 
$ 

	#HHWtqUW	
 
$
 

	#HHW 	
 
$ 

	#HHW !	
 
$ 

	#rxx $A!L 
$ 

	#rxx $B1M 
$ 

	#rxx $B1M 
$	#A 
$	# 
$	#
 
$	# 
$	# 
$	# 
$	# 
$	#sS   !G"G,""G>&"H*!H"-!H30!I
G),
G;>
H
H"
H03
I
Ic            	           " S S5      n [         R                  " S5      n[        S/5         [        XSSSS9  S S S 5        g ! , (       d  f       g = f)	Nc                   $    \ rS rSrSrS rS rSrg)1test_ransac_sample_duplicates.<locals>.DummyModelr   z$Dummy model to check for duplicates.c                 l    [        [        R                  " U5      R                  UR                  5        g)NT)r	   r   uniquer9   selfrF   s     r   r(   :test_ransac_sample_duplicates.<locals>.DummyModel.estimate  s!    4--tyy9r!   c                 Z    [         R                  " [        U5      [         R                  S9$ )Nr3   )r   rw   rx   r   r   s     r   r*   ;test_ransac_sample_duplicates.<locals>.DummyModel.residuals  s    773t9BJJ77r!   r+   N)__name__
__module____qualname____firstlineno____doc__r(   r*   __static_attributes__r+   r!   r   
DummyModelr     s    2	
	8r!   r  rp   r   r#   g        r   r   )r   r   r   r   )r  rF   s     r   test_ransac_sample_duplicatesr    sB    	8 	8 99Q<D	./	0tQ3SUV 
1	0	0s   A
Ac            	          [         R                  R                  SS5      n [        S/5         [	        U [
        SSSS9u  pS S S 5        Wb   eWb   eg ! , (       d  f       N= f)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    sc    99>>!QD	@A	B# 
 
C ??== 
C	Bs   A
A"c                  .   S[         4S jn [        R                  R                  S5      n[        R                  " / SQ/ SQS5      UR                  SS5      -   S-
  n[        S	/5         [        U[        S
SSSU S9  SSS5        g! , (       d  f       g= f)zExample from GH issue #5572returnc           	          [        [        R                  " [        R                  " U R                  S   / SQ5      5      5      nUS[        R
                  -  :*  $ )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   8test_ransac_non_valid_best_model.<locals>.is_model_valid  s<    299RVVELLOY?@A255())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;;y+t4sxxa7HH3ND	:;	<")	
 
=	<	<s   )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   K J 3 -/2./!MH	@1
1<&5F&.62
13.(6X=v.8 $W	C(F&.?, " "&BR> #NLW&
r!   