
    9iJ                     H   S SK r S SKrS SKrS SKrS SKrS SKJr  S SK	J
r
JrJrJrJr  S SKJrJrJr  S SKJr  S SKJrJrJrJrJrJrJrJrJrJrJ r J!r!  S SK"J#r#  \RH                  " / SQ/ SQ/ S	Q/ S	Q/ S
Q/ SQ/ SQ/ SQ/ SQ/ SQ/
5      r%\%RM                  5       r'S\'SSS24'   \'RM                  5       RQ                  \RR                  5      S-  r*\*S\RV                  4   / SQ-  r,\RZ                  " S\R\                  S9r/S\/SS2SS24'   \/RM                  5       S-  r0\Rb                  " S\Rd                  S9r3S\3SS2SS2SS24'   S\3S'   \3RM                  5       r4SS  jr5SS" jr6SS# jr7S$ r8S% r9S& r:S' r;S( r<S) r=S* r>S+ r?\R                  R                  S,\%S4\%S4\%S4\%S-4\3S4\3S4\3S.4/5      S/ 5       rBS0 rCS1 rDS2 rES3 rFS4 rGS5 rHS6 rIS7 rJ\R                  R                  S8/ S9Q/ S:Q/ S;Q/5      S< 5       rK\R                  R                  S8S=S>/5      S? 5       rL\R                  R                  S8\R                  \R                  \R                  * /5      S@ 5       rO\R                  R                  S8S/SS//S!45      SA 5       rP\R                  R                  S8SBSC/SS/SS//5      SD 5       rQ\R                  R                  S8SE// SFQ/5      SG 5       rRSH rSSI rTSJ rUSK rV\R                  R                  S8/ SLQ5      SM 5       rW\R                  R                  S8/ SNQ5      SO 5       rXSP rYSQ rZSR r[SS r\ST r]SU r^SV r_SW r`SX raSY rbSZ rcS[ rdS\ reS] rfS^ rgS_ rhS` riSa rjSb rkSc rlSd rmSe rnSf roSg rpSh rqSi rrSj rsSk rtSl ruSm rvSn rwSo rxSp rySq rzSr r{Ss r|St r}Su r~Sv rSw rSx rSy rSz rS{ rS| rS} rS~ rS rS rS rS rS rS rS rS rS rS rS rS rS rS r\R                  R                  S\5      S 5       rS rS rS rS rS rS rS rg)    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equal)datadraw	transform)testing)
COL_DTYPESOBJECT_COLUMNSPROPS#_inertia_eigvals_to_axes_lengths_3D_parse_docs_props_to_dict_require_intensity_imageeuler_number	perimeterperimeter_croftonregionpropsregionprops_table)slic)r   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r   	      g      $@.r   r      
   dtyper                   @   r'   r'   )r   r   r   r   r   c           
         ^ ^^ T R                   u  p#[        R                  " [        R                  " SX!S   -  USS9[        R                  " SX1S   -  USS9SS9u  mmUUU 4S j$ )Nr   Fendpointr   ijindexingc                 H   > [         R                  " TU -  TU-  -  T-  5      $ Nnpsum)pqXYimgs     f/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/measure/tests/test_regionprops.py<lambda>%get_moment_function.<locals>.<lambda>J   s    q!tad{S01    shaper2   meshgridlinspace)r8   spacingrowscolsr6   r7   s   `   @@r9   get_moment_functionrD   C   s]    JD;;
Ataj($?
Ataj($?DAq
 21r<   r   r   r   c                   ^ ^^^ T R                   u  p#n[        R                  " [        R                  " SX!S   -  USS9[        R                  " SX1S   -  USS9[        R                  " SXAS   -  USS9SS9u  mmmUUUU 4S j$ )	Nr   Fr*   r   r   r,   r-   c                 T   > [         R                  " TU -  TU-  -  TU-  -  T-  5      $ r0   r1   )r4   r5   rr6   r7   Zr8   s      r9   r:   'get_moment3D_function.<locals>.<lambda>U   s(    266!Q$A+1"4s":;r<   r=   )r8   rA   slicesrB   rC   r6   r7   rI   s   `    @@@r9   get_moment3D_functionrL   M   s{    F$kk
Av
*FUC
Ataj($?
Ataj($?	GAq! <;r<   c           
      6  ^ ^^^^ T R                   u  p#[        R                  " [        R                  " SX!S   -  USS9[        R                  " SX1S   -  USS9SS9u  mm[	        T US9nU" SS5      U" SS5      -  mU" SS5      U" SS5      -  mUUUUU 4S j$ )	Nr   Fr*   r   r,   r-   rA   c                 T   > [         R                  " TT-
  U -  TT-
  U-  -  T-  5      $ r0   r1   )r4   r5   r6   r7   cXcYr8   s     r9   r:   -get_central_moment_function.<locals>.<lambda>d   s(    B1}B1}<sBCr<   )r>   r2   r?   r@   rD   )	r8   rA   rB   rC   Mpqr6   r7   rP   rQ   s	   `    @@@@r9   get_central_moment_functionrT   X   s    JD;;
Ataj($?
Ataj($?DAq c7
3C	QSAY	B	QSAY	BCCCr<   c            	      &   [        [        [        5      S   n [         H_  n [	        X   [        U [        U   5      5        UR                  5       U:X  a(  [	        [        X5      [        U [        U   5      5        M_  Ma     g ! [         a     Mq  f = fNr   )r   SAMPLEINTENSITY_SAMPLEr   r   getattrlower	TypeErrorregionprops     r9   test_all_propsr_   g   s~    !1215F	gfeDk.JK zz|t##GF$9765QU;;WX $   		s   AB
BBc            	      2   [        [        [        5      S   n [         H_  n [	        X   [        U [        U   5      5        UR                  5       U:X  a(  [	        [        X5      [        U [        U   5      5        M_  Ma     g ! [        [        4 a     Mw  f = frV   )	r   	SAMPLE_3DINTENSITY_SAMPLE_3Dr   r   rY   rZ   NotImplementedErrorr[   r\   s     r9   test_all_props_3drd   x   s    $78;F		gfeDk.JK zz|t##GF$9765QU;;WX $  $Y/ 		s   ABBBc                      [        [        5      S   R                  n U S:X  d   e[        [        SS9S   R                  n U S:X  d   eg )Nr   H   r   r   rN   )r   rW   
num_pixels)rh   s    r9   test_num_pixelsri      sJ    V$Q'22JVV4Q7BBJr<   c                     [        [        R                  " S[        S95        [        [        R                  " S[        R                  S95        [
        R                  " [        5         [        [        R                  " S[        S95        S S S 5        [
        R                  " [        5         [        [        R                  " S[        R                  S95        S S S 5        [
        R                  " [        5         [        [        R                  " S[        S95        S S S 5        g ! , (       d  f       N= f! , (       d  f       Ne= f! , (       d  f       g = f)Nr   r   r    )r   r2   zerosintuintpytestraisesr[   floatfloat64bool r<   r9   
test_dtyperu      s    -.12	y	!BHHXU34 
"	y	!BHHXRZZ89 
"	y	!BHHXT23 
"	!	 
"	!	!	!	!	!s$   )#D).-D:=#E)
D7:
E
Ec                     [        [        R                  " S[        S95        [        [        R                  " S[        S95        [        [        R                  " S[        S95        [        [        R                  " S[        S95        [        [        R                  " S[        S95        [        R
                  " [        5         [        [        R                  " S[        S95        S S S 5        g ! , (       d  f       g = f)Nrk   r    )r   r   r   )r   r   r   r(   rE   )r   r   r   r   )r   r2   rl   rm   ro   rp   r[   rt   r<   r9   	test_ndimrw      s    -.C01S12s+,#./	y	!BHH_C89 
"	!	!s   #C11
C?c                  T   Sn [        [        5      S   R                  n[        R                  " X-
  5      S:  d   eSn[        [        SS/S9S   R                  n[        R                  " X2-
  5      S:  d   e[        R
                  " S[        R                  S9nSUS	S
2S	S
24'   [        U5      S   R                  n[        R                  " US[        R                  " S	5      -  -
  5      S:  d   e[        R                  " U[        R                  " S5      -
  5      S:  d   eg )N   r   r   r   皙?rN      r|   r    r      i  ư>r   rW   feret_diameter_maxr2   absrl   uint8sqrt)comparator_resulttest_resultcomparator_result_spacingtest_result_spacingr8   r   s         r9   test_feret_diameter_maxr      s   f%a(;;K66+12Q666 "%fq#h?BUU66%ABQFFF
((8288
,CC"ad
O$S)!,??66$rBGGAJ67!;;;66$rww/D'EEFMMMr<   c            
         Sn [        [        5      S   R                  n[        R                  " X-
  5      S:  d   eSn[        R
                  " S[        R                  S9nSUSS2SS24'   [        X2S	9S   R                  n[        R                  " U[        R                  " US   S
-  US   US   :*  -
  S-  US   S
-  US   US   :  -
  S-  -   5      -
  5      S:  d   eg )Nry   r   r   rg   r{   r    r   r}   rN   r~   r   r   )r   r   rA   r8   r   s        r9   test_feret_diameter_max_spacingr      s    f%a(;;K66+12Q666G
((8288
,CC"ad
O$S:1=PP 	ggbGAJ'!*$<=!C1:?gaj71:&=>1DE	
 			r<   c                  R   [         R                  " S[         R                  S9n SU SS2SS24'   [         R                  " U 4S-  5      n[	        U5      S   R
                  n[         R                  " U[         R                  " S5      -
  5      S	:  d   eS
n[	        XS9S   R
                  n[         R                  " U[         R                  " US   S-  S-  US   S-  S-  -   US   S-  S-  -   5      -
  5      S	:  d   e[         R                  " U[         R                  " US   S-  S-  US   S-  S-  -   US   S-  S-  -   5      -
  5      S	:  d   e[         R                  " U[         R                  " US   S-  S-  US   S-  S-  -   US   S-  S-  -   5      -
  5      S	:  d   eg )Nr{   r    r   r   r}   r   r   i  r   r   rN      r~   )r2   rl   r   dstackr   r   r   r   )r8   img_3dr   rA   s       r9   test_feret_diameter_max_3dr      s   
((8288
,CC"ad
OYYvz"F$V,Q/BB
 	!BGG,P$QQR
		 G$V=a@SS 	ggv&1,1:(Q./1:'A-.	
 	
	 	ggv&1,1:(Q./1:'A-.	
 	
	 	ggv&1,1:(Q./1:'A-.	
 	
	r<   zsample,spacingr   r   )r   r   r   c                     [        XS9S   R                  n[        R                  " X(       a  [        R                  " U5      OS-  5      nX#:X  d   eg )NrN   r   r   )r   arear2   r3   prod)samplerA   r   desireds       r9   	test_arear      sC     v/277DffV7rwww/BCG??r<   c                  D   [        [        5      S   R                  n [        U SS[        R                  S   [        R                  S   45        [        [        SS9S   R                  n [        U SS[        R                  S   [        R                  S   45        [        R                  5       nSUS S 2S4'   [        U5      S   R                  n [        U SS[        R                  S   [        R                  S   S-
  45        [        USS9S   R                  n [        U SS[        R                  S   [        R                  S   S-
  45        [        [        5      S   R                  n [        U S5        [        [        SS9S   R                  n [        U S5        g )	Nr   r   r   rN   r   r   )r   r   r      r   r   )      ?r   r#   )r   rW   bboxr   r>   copyra   )r   
SAMPLE_mods     r9   	test_bboxr     sK   vq!&&DdQ6<<?FLLO$LMvv.q166DdQ6<<?FLLO$LMJJq"uz"1%**DdQ6<<?FLLOa<O$PQz6215::DdQ6<<?FLLOa<O$PQy!!$))Dd$67y+6q9>>Dd$67r<   c                      [         R                  " [        SSS9n [        U 5      S   R                  n[        U[        R                  5        g )Nr"   constantmoder   )r2   padrW   r   	area_bboxr   size)padded	bbox_areas     r9   test_area_bboxr   $  s7    VVFAJ/FF#A&00Ii5r<   c                      Sn [         R                  " [        SSS9n[        XS9S   R                  n[        U[        R                  [         R                  " U 5      -  5        g )N)r   r   r"   r   r   rN   r   )r2   r   rW   r   r   r   r   r   )rA   r   r   s      r9   test_area_bbox_spacingr   *  sJ    GVVFAJ/FF4Q7AAIirwww7G)GHr<   c                  ^   [        [        5      S   R                  n [        U S   S5        [        U S   S5        [        U S   S5        [        U S   S	5        [        U S
   S5        [        U S   S5        [        U S   S5        [	        [        SS9n[        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S
   5        [        U" SS5      U S   5        [        U" SS5      U S   5        g )Nr   r   r   g    @{@r   r   g
r(   g@UUUUUrg   g@8_r   r   gpq@r   gKh/A@r   r   ga2rN   r   r   r   )r   rW   moments_centralr   rT   )mu
centralMpqs     r9   test_moments_centralr   1  s!   	V	Q		/	/B4"454"344"454"454"454"344"45 -VVDJ
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3r<   c                     Sn [        [        U S9n[        [        U S9S   R                  n[	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" S	S	5      5        [	        US
   U" SS	5      5        [	        US   U" SS5      5        [	        US   U" S	S5      5        [	        US   U" SS5      5        g )Ng?g?rN   r   r   r   r   r   r(   r   rg   r   r   r   )rT   rW   r   r   r   )rA   r   r   s      r9   test_moments_central_spacingr   H  s    G,VWEJ	VW	-a	0	@	@B4*Q"234*Q"234*Q"234*Q"234*Q"234*Q"234*Q"23r<   c                      [        [        5      S   R                  n [        U S5        [	        [        SS9nU" SS5      U" SS5      -  nU" SS5      U" SS5      -  n[        X#4U 5        g )Nr   )g@g98"@r(   rN   r   )r   rW   centroidr   rD   )r   rS   rQ   rP   s       r9   test_centroidr   W  sh    6"1%..Hh(MN ff
5C	QSAY	B	QSAY	Brh1r<   c                      Sn [        [        U S9nU" SS5      U" SS5      -  nU" SS5      U" SS5      -  n[        [        U S9S   R                  n[	        XBU45        g )Nr   rN   r   r   )rD   rW   r   r   r   rA   rS   rQ   rP   r   s        r9   test_centroid_spacingr   d  sb    G
fg
6C	QSAY	B	QSAY	B673A6??HhR1r<   c                  
   [        [        5      S   R                  n [        U S5        [	        [        SS9nU" SSS5      U" SSS5      -  nU" SSS5      U" SSS5      -  nU" SSS5      U" SSS5      -  n[        X#U4U 5        g )Nr   )gI?:?r   rE   rN   r   )r   ra   r   r   rL   )r   MpqrcZrQ   rP   s        r9   test_centroid_3dr   o  s    9%a(11Hh(LM !I>D	aAaA	&B	aAaA	&B	aAaA	&BrrlH5r<   rA   ) @皙@ffffff@)r%   r%   r%   )r   r   r   c                     [        [        U S9nU" SSS5      U" SSS5      -  nU" SSS5      U" SSS5      -  nU" SSS5      U" SSS5      -  n[        [        U S9S   R                  n[	        XRX445        g)!Test the _normalize_spacing code.rN   r   r   N)rL   ra   r   r   r   )rA   r   r   rQ   rP   r   s         r9   test_spacing_parameter_3dr   }  s     !G<D	aAaA	&B	aAaA	&B	aAaA	&B9g6q9BBHhR5r<   )r   y              ?y      ?        c                     [         R                  " [        SS9   [        [        U S9S   R
                    SSS5        g! , (       d  f       g= f)r   z3Element of spacing isn't float or integer type, gotmatchrN   r   N)ro   rp   r[   r   rW   r   rN   s    r9   $test_spacing_parameter_complex_inputr     s=     
N
 	FG,Q/88
 
 
	   ?
Ac                     [         R                  " [        5         [        [        U S9S   R
                    SSS5        g! , (       d  f       g= f)r   rN   r   Nro   rp   
ValueErrorr   rW   r   rN   s    r9   test_spacing_parameter_nan_infr     s1     
z	"FG,Q/88 
#	"	"s   A  
Ac                     [         R                  " [        SS9   [        [        U S9S   R
                    S S S 5        g ! , (       d  f       g = f)Nz%spacing isn't a scalar nor a sequencer   rN   r   r   rN   s    r9   test_spacing_mismtaching_shaper     s3    	z)P	QFG,Q/88 
R	Q	Qr   r   r   c                     [        [        U S9nU" SS5      U" SS5      -  nU" SS5      U" SS5      -  n[        [        [        U S9S   R                  n[        XCU45        g)r   rN   r   r   intensity_imagerA   N)rD   rX   r   rW   centroid_weightedr   r   s        r9   test_spacing_parameter_2dr     sk     .
@C	QSAY	B	QSAY	B63CWU	  r(+r<   	bad input)r   r   r   c                     [         R                  " [        5         [        [        [
        U S9S   R                    SSS5        g! , (       d  f       g= f)r   r   r   N)ro   rp   r   r   rW   rX   r   rN   s    r9   #test_spacing_parameter_2d_bad_inputr     s7     
z	"F,<gN	


 
#	"	"s   !A
Ac                  L    [        [        5      S   R                  n U S:X  d   eg )Nr   }   )r   rW   area_convexr   s    r9   test_area_convexr     s#    vq!--D3;;r<   c                  |    Sn [        [        U S9S   R                  nUS[        R                  " U 5      -  :X  d   eg )Nr   r   rN   r   r   )r   rW   r   r2   r   )rA   r   s     r9   test_area_convex_spacingr     s:    Gvw/2>>D3)))))r<   c                      [        [        5      S   R                  n [        R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ S	Q/ S	Q/ S
Q/
5      n[        X5        g )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   rW   image_convexr2   arrayr   )r8   refs     r9   test_image_convexr     sR    
f
a
 
-
-C
((BBBBBBBBBB	
C s r<   c                  :   [         R                  " S[         R                  S9n [         R                  " SS/SS/SS//5      nSXS S 2S4   US S 2S4   4'   [	        U 5      S   R
                  n[        X!5        [	        U SS	9S   R
                  n[        X!5        g )
Nrk   r    r   r   r   r   r   )r   333333?rN   )r2   rl   int8r   r   coordsr   )r   r   prop_coordss      r9   test_coordinatesr     s    XXhbgg.FXX1v1v1v./F)*F!Q$<1%&f%a(//K{+fj9!<CCK{+r<   )Nr   r   r(   )r   r   c                 0   [         R                  " S[         R                  S9n[         R                  " SS/SS/SS//5      nSXS S 2S4   US S 2S4   4'   [	        XS9S   R
                  nU c  UnOU[         R                  " U 5      -  n[        X45        g )	Nrk   r    r   r   r   r   r   rN   r2   rl   r   r   r   coords_scaledr   rA   r   r   r   desired_coordss        r9   test_coordinates_scaledr     s    
 XXhbgg.FXX1v1v1v./F)*F!Q$<1%&f6q9GGK"((7"33{3r<   )Nr   r   )皙?r   r   c                 @   [         R                  " S[         R                  S9n[         R                  " / SQ/ SQ/ SQ/5      nSXS S 2S4   US S 2S4   US S 2S4   4'   [	        XS	9S   R
                  nU c  UnOU[         R                  " U 5      -  n[        X45        g )
Nr&   r    rE   )r   r   r   )r   r   r   r   r   r   rN   r   r   s        r9   test_coordinates_scaled_3dr     s    
 XXirww/FXXy)Y78F78F!Q$<1vad|34f6q9GGK"((7"33{3r<   c                      [         R                  " [        SSS9n [        R                  u  p[	        U 5      S   R
                  n[        SSU-   5      [        SSU-   5      4n[        X45        g )N)r   r   )r"   r   r   r   r   r   r"   r2   r   rW   r>   r   slicer   )r   nrowncolresultexpecteds        r9   
test_slicer  
  s]    VVF,:>FJD #))FaT"E!QX$67H"r<   c                     [         R                  " [        SSS9n [        R                  u  p[	        U 5      S   R
                  n[        SSU-   5      [        SSU-   5      4nSn[	        XS9S   R
                  n[        X45        g )	Nr   r   r   r   r   r"   )r   r   rN   r   )r   r   r   r   r   rA   s         r9   test_slice_spacingr    sw    VVF,:>FJD #))FaT"E!QX$67HG1!4::F"r<   c                  l   [        [        5      S   R                  n [        U S5        [        [        SS9S   R                  n [        U S5        [        R
                  " S[        S9nSUS'   [        U5      S   R                  n [        U S5        [        US	S9S   R                  n [        U S5        g )
Nr   gPq~q?      ?r  rN   )r"   r"   r    r   r   r   r   r   )r   rW   eccentricityr   r2   rl   rm   )epsr8   s     r9   test_eccentricityr    s    
f
a
 
-
-C^,
fj
1!
4
A
AC^,
((6
%CCI
c
1

*
*CQ
c6
*1
-
:
:CQr<   c                  *   [        [        5      S   R                  n [        U S5        Sn[        [        US9S   R                  n [        R
                  U S-  S-  -  n[        U[        R                  5       [        R                  " U5      -  5        g )Nr   g3&#@r   r   rN   r%   r   )r   rW   equivalent_diameter_arear   r2   pir3   r   )diameterrA   equivalent_areas      r9   test_equivalent_diameter_arear  ,  sr    6"1%>>H-0G673A6OOHeex#~!33O8H)HIr<   c                  6   S H  n [        [        U S9S   R                  nUS:X  d   e[        R                  5       nSUS'   [        X S9S   R                  nUS:X  d   e[        [        S5      nUS:X  d   e[        US5      nUS:X  a  M   e   [        [        S5      nUS:X  d   e[        [        S5      nUS:X  d   e[
        R                  " S	5      nSUS
S2S
S2S
S24'   [        US5      nUS:X  d   eSUSS2SS2SS24'   [        US5      nUS:X  d   eg )N)r(   )r   g?rN   r   r#   r   r   r   r   )d   r  r  (   <   -   7   )r   rW   r   r   ra   r2   rl   )rA   enr   SAMPLE_3D_2s       r9   test_euler_numberr  7  s9   '1!4AAQww[[]

55a8EERxx&!$Qww*a(Qww ( 
i	#B7N7	i	#B7N7 ((?+K'(K2r"ube#$	k1	%B7N7'(K2r"ube#$	k1	%B7N7r<   c                      [        [        5      S   R                  n [        U S5        [        [        SS9S   R                  n [        U S5        g )Nr   皙?)r"   r   rN   )r   rW   extentr   )r   s    r9   test_extentr!  X  sB     #**F$215<<F$r<   c                      [        [        5      S   R                  n [        R                  " / SQ5      n[        X5        [        R                  " [        5         [        [        SS9S   R                    S S S 5        g ! , (       d  f       g = f)Nr   )g?z~?gu/,?g'?gHU-T?g^L>gw-g?b1۾rg   rN   )	r   rW   
moments_hur2   r   r   r   rp   rc   )hur   s     r9   test_moments_hur%  _  sb    	V	Q		*	*B
((	

C b&	+	,FF+A.99 
-	,	,s   A??
Bc                      [        [        5      S   R                  n [        U [        5        [        [        5      S   R                  n [        U [        SS2SS2SS24   5        g )Nr   r   r   r   )r   rW   imager   ra   r8   s    r9   
test_imager)  s  sW    
f
a
 
&
&CsF#
i
 
#
)
)CsIac1Q3!m45r<   c                      [        [        5      S   R                  n [        U S5        [        [        5      S   R                  n [        U S5        g )Nr   r   )r   rW   labelr   ra   r+  s    r9   
test_labelr-  {  s@    "((Eua 	"1%++Eua r<   c                  |    [        [        5      S   R                  n U [        R                  " [        5      :X  d   eg rV   )r   rW   area_filledr2   r3   r   s    r9   test_area_filledr0    s-    vq!--D266&>!!!r<   c                      [         R                  5       n SU S'   [        U 5      S   R                  nU[        R
                  " [         5      :X  d   eg )Nr   r  )rW   r   r   r/  r2   r3   )r   r   s     r9   test_area_filled_zeror2    sB    JJuz"1%11D266&>!!!r<   c                  x   [         R                  5       n SU S'   Sn[        [         US9S   R                  nU[        R
                  " [         5      [        R                  " U5      -  :X  d   e[        XS9S   R                  nU[        R
                  " [         5      [        R                  " U5      -  :X  d   eg )Nr   r  )r   r   rN   )rW   r   r   r/  r2   r3   r   )r   rA   r   s      r9   test_area_filled_spacingr4    s    JJuGvw/2>>D266&>BGGG$44444z3A6BBD266&>BGGG$44444r<   c                      [        [        5      S   R                  n [        U [        5        [        [        SS9S   R                  n [        U [        5        g )Nr   r   rN   )r   rW   image_filledr   r(  s    r9   test_image_filledr7    sB    
f
a
 
-
-CsF#
ff
-a
0
=
=CsF#r<   c            	      ,   [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        U SU-  5        SSKJn  [        R                  " S[        R                  S9nU" S	S	S
S[        R                  " S5      S9u  pESX4U4'   [        USS9S   R                  n[        US S S2   SS9S   R                  n[        Xa-
  5      S:  d   e[        US S 2S S S24   SS9S   R                  n [        XSS9  g )Nr   g8D0@r  rN   r   ellipse)r|      r    r   r#   r   r  rotationr   r(   rz   r   decimal)r   rW   axis_major_lengthr   skimage.drawr:  r2   rl   r   deg2radaxis_minor_lengthr   lengthtarget_lengthr:  r8   rrcclength_wo_spacings          r9   test_axis_major_lengthrJ    s    #55F "M.03EEFM 12$
((8288
,CRQBJJrN;FBCBKV4Q7IIM#C!Hf=a@RR 01C777Q!Vf5a8JJFq9r<   c                  Z    [        [        [        S9S   R                  n [	        U S5        g )Nr   r   r   )r   rW   rX   intensity_maxr   	intensitys    r9   test_intensity_maxrP    $    F4DEaHVVI	1%r<   c                  Z    [        [        [        S9S   R                  n [	        U S5        g )NrL  r   gqq?)r   rW   rX   intensity_meanr   rN  s    r9   test_intensity_meanrT    s%    F4DEaHWWI	#34r<   c                  Z    [        [        [        S9S   R                  n [	        U S5        g )NrL  r   r   )r   rW   rX   intensity_minr   rN  s    r9   test_intensity_minrW    rQ  r<   c                  Z    [        [        [        S9S   R                  n [	        U S5        g )NrL  r   g|f?)r   rW   rX   intensity_stdr   rN  s    r9   test_intensity_stdrZ    s%    F4DEaHVVI	#67r<   c            	      $   [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        U SU-  5        SSKJn  [        R                  " S[        R                  S9nU" S	S
SS	[        R                  " S5      S9u  pESX4U4'   [        USS9S   R                  n[        US S S2   SS9S   R                  n[        Xa-
  5      S:  d   e[        US S S2   SS9S   R                  n [        XSS9  g )Nr   g7z#@r  rN   r  r9  )r      r    r"   r'   r      r<  r   r(   r   rz   rg   r>  )r   rW   rC  r   rA  r:  r2   rl   r   rB  r   rD  s          r9   test_axis_minor_lengthr^    s    #55F #M.4Q7IIFm 34$
((8288
,CQ1a"**R.9FBCBKV4Q7IIM#C!Hf=a@RR 01C777SqS6215GGFq9r<   c                  <   [        [        5      S   R                  n [        U S   S5        [        U S   S5        [        U S   S5        [        U S   S	5        [        U S
   S5        [        U S   S5        [        U S   S5        [        U S   S5        [        U S   S5        [        U S   S5        [	        [        SS9n[        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S
   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        [        U" SS5      U S   5        g )Nr   r   r   g      R@r   r   g     @@r   g     @r   g    @V@r   r   g     y@r(   g     l@r   g    @m@r   g     x@rg   g     A@r   g     P@rN   r   r   r   )r   rW   momentsr   rD   )mrS   s     r9   test_momentsre    sy   FA&&A$&$'$($)$'$($)$($)$) ff
5CAq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+r<   c                     Sn [        [        U S9S   R                  n[        [        U S9n[	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" SS5      5        [	        US	   U" SS
5      5        [	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" SS5      5        [	        US   U" S
S5      5        g )N)r   333333?rN   r   r`  ra  r   r   r   r   r   rb  r(   r   r   rg   r   )r   rW   rc  rD   r   )rA   rd  rS   s      r9   test_moments_spacingrh     s    GFG,Q/77A
fg
6C$Q+$Q+$Q+$Q+$Q+$Q+$Q+$Q+$Q+$Q+r<   c                      [        [        5      S   R                  n [        U S   S5        [        U S   S5        [        U S   S5        [        U S   S	5        [        U S
   S5        [        U S   S5        g )Nr   r   e/
?r   cZr(   ,lC@r   ^ ^H?r   /O懵?rg   ⪹Rgr   rW   moments_normalizedr   )nus    r9   test_moments_normalizedrs    ss    	V	Q		2	2B 4"564"784"784"674"564"78r<   c                      Sn [        [        U S9S   R                  n[        US   S5        [        US   S5        [        US   S	5        [        US
   S5        [        US   S5        [        US   S5        g )Nr  rN   r   r   rj  r   rk  r(   rl  r   rm  r   rn  rg   ro  rp  )rA   rr  s     r9   test_moments_normalized_spacingru    sz    G	VW	-a	0	C	CB 4"564"784"784"674"564"78r<   c            	      4   [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        X5        [        R
                  " S[        S9n[        U5      S   R                  n[        U[        R                  S-  5        [        USS9S   R                  n[        U[        R                  " S	[        R                  " S
5      -  5      5        [        [        R                  " U5      5      S   R                  n[        U[        R                  * S-  5        [        [        R                  " U5      SS9S   R                  n[        U[        R                  " S	[        R                  " S
5      -  5      * 5        [        [        R                  " U5      5      S   R                  n[        U[        R                  * S-  5        [        [        R                  " U5      SS9S   R                  n[        U[        R                  " S	[        R                  " S
5      -  5      * 5        [        [        R                  " [        R                  " U5      5      5      S   R                  n[        U[        R                  S-  5        [        [        R                  " [        R                  " U5      5      SS9S   R                  n[        U[        R                  " S	[        R                  " S
5      -  5      5        g )Nr   g/9vr  rN   r   r    r   r   r   g      ?)r   rW   orientationr   r2   eyerm   mathr  arccosr   flipudfliplr)orienttarget_orientdiagorient_diags       r9   test_orientationr  *  s    #//F'M.03??F. 66"C Dd#A&22KTWWq[1dF3A6BBKRYYsRWWZ5H/H%IJbiio.q1==KdggX\2biiov>qAMMKbiibggj6I0I&J%JKbiio.q1==KdggX\2biiov>qAMMKbiibggj6I0I&J%JKbii		$89!<HHKTWWq[1bii		$8&I!LXXKRYYsRWWZ5H/H%IJr<   c                     [         R                  " / SQ/ SQ/ SQ/ SQ/5      n [         R                  " / SQ/ SQ/ SQ/ SQ/5      n[         R                  " / S	Q/ S
Q/ SQ/ SQ/5      n[         R                  " XU45      n[        U5      nU Vs/ s H  oUR                  PM     nn[         R
                  R                  XfS   SSS9  [        US   S5        [        US   S5        [        US   S5        Sn[        [        [        US9S   R                  n[        [        US9n	[        US   U	" SS5      5        [        US   U	" SS5      5        [        US   U	" SS5      5        [        US   U	" SS5      5        [        US   U	" SS5      5        [        US   U	" SS5      5        [        US   U	" SS5      5        [        US    U	" SS5      5        [        US!   U	" SS5      5        [        US"   U	" SS5      5        [        US#   U	" SS5      5        [        US$   U	" SS5      5        [        US%   U	" SS5      5        [        US&   U	" SS5      5        [        US'   U	" SS5      5        [        US(   U	" SS5      5        g s  snf ))N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   g{Gz?rtolatolge{g-DT!r   g4,1g뿩g	@r   r   rN   r`  ra  r   r   r   rb  r(   r   r  r   rg   r  r   r   r   r   r   r   r  )r2   r   hstackr   rw  r   r   r   rW   rX   moments_weighted_centralrT   )
arr1arr2arr3r'  propsr^   orientationsrA   wmur   s
             r9   test_orientation_continuityr  G  sQ   88\<|LMD88\<|LMD88\<|LMDIIt4()EE167$$L7JJ|!_14PQ)<=Q)<=Q)<= G
f.>
P	  --=wOJD	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#347 8s   Jc                     [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        U SU-  5        [        [        R	                  S5      SS9n [        U S	5        [
        R                  " [        5         [        [        S
S9S   R                  n S S S 5        g ! , (       d  f       g = f)Nr   g֟K@r  rN   r   doubler$   )neighborhoodgXg	jG@rg   )r   rW   r   r   astyper   rp   rc   )per
target_pers     r9   test_perimeterr  n  s    
f
a
 
*
*CJ(
ff
-a
0
:
:CQ^,
FMM(+!
<C]+	+	,&&1!4>> 
-	,	,   B<<
C
c                     [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        U SU-  5        [        [        R	                  S5      SS9n [        U S5        [
        R                  " [        5         [        [        S	S9S   R                  n S S S 5        g ! , (       d  f       g = f)
Nr   gχ?N@r  rN   r   r  )
directionsgP@rg   )r   rW   r   r   r  r   rp   rc   )r  target_per_crofs     r9   test_perimeter_croftonr  |  s    
f
a
 
2
2C#O-
ff
-a
0
B
BCQ01
FMM(3
BC]+	+	,&&1!4FF 
-	,	,r  c                      [        [        5      S   R                  n Sn[        X5        [        [        SS9S   R                  n [        X5        g )Nr   g;On?)r   r   rN   )r   rW   solidityr   )r  target_soliditys     r9   test_solidityr    sC    6"1%..HO266215>>H2r<   c                     [         n [        [        U S   S9S   n[        [        U SSS24   S9S   n[        [        U S9S   n[        R                  R                  UR                  [        R                  " UR                  5      5        [        R                  R                  UR                  [        R                  " UR                  5      SS2S4   5        [        R                  " UR                  5      [        R                  4:X  d   e[        R                  " UR                  5      [        R                  S4:X  d   e[        R                  " UR                  5      [        R                  U R                  S   4:X  d   e[        [        U SS	9n[        U5      [        R                  " UR                  5      :X  d   eg)
zBTest for https://github.com/scikit-image/scikit-image/issues/6860.).r   rL  r   .r   Nr   )r   )r   
properties)#INTENSITY_FLOAT_SAMPLE_MULTICHANNELr   rW   r2   r   r   r   squeezer   r>   ndimr   lenr   )r   rp0rp1rpmtables        r9   )test_multichannel_centroid_weighted_tabler    sa   9O
fof.E
Fq
IC
foc1Q3h.G
H
KC
fo
>q
ACJJ""rzz#*?*?@ JJ""rxx(=(=>q!tD 88C))*v{{n<<<88C))*v{{A.>>>>88C))*v{{O<Q<QRT<U.VVVV<RE u:!6!67777r<   c                  x   [        [        [        S9S   R                  n [        R
                  " / SQ/ SQ/ SQ/ SQ/5      n[        X5        [        [        SS9n[        U" SS5      US	   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" S
S5      US   5        [        U" S
S
5      US   5        [        U" S
S5      US   5        [        U" S
S5      US   5        [        U" SS5      US   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        g )NrL  r   )     R@g($=gp8"@g)g0   Ngc"UgiC*Nڠ@g]}ᘎ)g|}@g(kbgz*@gqo)g}gF%uݓg~2	@g"0V0r(   rN   r`  r   ra  r   r   r   r   rb  r   r  r   rg   r  r  r   r  r   r  )	r   rW   rX   r  r2   r   r   rT   r   )r  r   r   s      r9   test_moments_weighted_centralr    s   
f.>
?	  ((RTRS		
C c' --=vNJ
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4r<   c            	         [         R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      n Sn[        [        [        S9S   R
                  nSn[        X#5        [        [        SS9nU" SS	5      U" SS5      -  nU" S	S5      U" SS5      -  n[        Xe4U5        S
n[        [        US9nU" SS	5      U" SS5      -  nU" S	S5      U" SS5      -  n[        [        [        US9S   R
                  n[        X&U45        [        US[         R                  " U5      -  5        [        X US9S   R
                  n[        US[         R                  " U5      -  5        Sn[        [        US9nU" SS	5      U" SS5      -  nU" S	S5      U" SS5      -  n[        [        [        US9S   R
                  n[        X&U45        [        X US9S   R
                  n[        X'[         R                  " U5      -  5        g )N)r   r   r   r   r   r   )r   r   r   r   r   r   )      @r  rL  r   )g8 u)@g1<S"@r(   rN   r   r  r   r   )g?gffffff?)	r2   r   r   rW   rX   r   r   rD   r   )sample_for_spacingtarget_centroid_wspacingr   target_centroidrS   rQ   rP   rA   s           r9   test_centroid_weightedr    s
   	
	  *63CD	  7Oh8 .
?C	QSAY	B	QSAY	B(+ G
.
@C	QSAY	B	QSAY	B63CWU	  r(+!bhh&?"?@			  !bhh/G&H"HIG
.
@C	QSAY	B	QSAY	B63CWU	  r(+			  BHH5M,N"NOr<   c                  &   [        [        [        S9S   R                  n [        R
                  " / SQ5      n[        X5        [        R                  " [        5         [        [        SS9S   R                    S S S 5        g ! , (       d  f       g = f)NrL  r   )ga'R?gg	?y?g"
-?g!mT?gODګ>gpcgʝ~ܾrg   rN   )
r   rW   rX   moments_weighted_hur2   r   r   r   rp   rc   )whur   s     r9   test_moments_weighted_hur    se    
f.>
?
B
V
VC
((	

C c'	+	,FF+A.BB 
-	,	,s   B
Bc                  x   [        [        [        S9S   R                  n [        R
                  " / SQ/ SQ/ SQ/ SQ/5      n[        X5        [        [        SS9n[        U" SS5      US	   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" S
S5      US   5        [        U" S
S
5      US   5        [        U" S
S5      US   5        [        U" S
S5      US   5        [        U" SS5      US   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        [        U" SS
5      US   5        [        U" SS5      US   5        [        U" SS5      US   5        g )NrL  r   r  g     ؅@g     @g    P@g     y@g     @g    @g    .y!Ag     |@g    E@g    Ag   MAg    P@g    \Ag    ?Ag   p1zAr(   rN   r`  r   ra  r   r   r   r   rb  r   r  r   rg   r  r  r   r  r   r  	r   rW   rX   moments_weightedr2   r   r   rD   r   )wmr   rS   s      r9   test_moments_weightedr    s   	V-=	>q	A	R	RB
((DDDD		
C b& .
?CAq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-r<   c                     [        [        [        S9S   R                  n [        R
                  " / SQ/ SQ/ SQ/ SQ/5      n[        X5        Sn[        [        [        US9S   R                  n[        [        US	9n[        US
   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      5        [        US   U" SS5      SS9  g )NrL  r   r  r  r  r  r  r   rN   r`  ra  r   r   r   r   r   rb  r(   r   r  r   rg   r  r  r   r  r   r  r'   r>  r  )r  r   rA   r  rS   s        r9   test_moments_weighted_spacingr  5  s   	V-=	>q	A	R	RB
((DDDD		
C b& G
f.>
P	  .
@CD	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9a8r<   c                      [        [        [        S9S   R                  n [        R
                  " [        R                  [        R                  SS/[        R                  SSS// SQ/ S	Q/5      n[        X5        g )
NrL  r   !%su?Smvlc6r?,>AkS*]?NCyicd?\}$bg7"h ;i\q?A׸R)r   rW   rX   moments_weighted_normalizedr2   r   nanr   )wnur   s     r9    test_moments_weighted_normalizedr  Y  si    
f.>
?	!!  ((VVRVV\=9VV]L-@FG		
C c'r<   c                  n   Sn [        [        [        U S9S   R                  n[        R
                  " [        R                  [        R                  SS/[        R                  SSS// S	Q/ S
Q/5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        [        US   S5        g )Nr  r   r   r  r  r  r  r  r  r  r   r   r(   r   r  r   r  rg   r  r  r  r  r  r   r  r  r  r   r  r  )r   rW   rX   r  r2   r   r  r   )rA   r  s     r9   (test_moments_weighted_normalized_spacingr  h  s   G
f.>
P	!!  HHVVRVV\=9VV]L-@FG		
 D	<0D	=1D	=1D	<0D	=1D	<0D	=1D	<0D	=1D	=1D	=1D	<0D	=1r<   c                      [        [        5      S   n [        R                  " SS/5      n[        [        US9S   n[	        U R
                  UR
                  U-
  5        g )Nr   i   i   )offset)r   rW   r2   r   r   r   )r  r  props_offsets      r9   test_offset_featuresr    sM    "EXXtTl#Fvf5a8LENNL$9$9F$BCr<   c                      [         R                  " S[        S9n SU S S 2S S 24'   [        U 5      n[	        U5      S:X  d   eUS   R
                  S:X  d   eg )Nr  r    r   r   r   )r2   emptyrm   r   r  r+  apss     r9   test_label_sequencer    sN    
s#AAadG	QBr7a<<a5;;!r<   c                  n    [         R                  " S[        S9n [        U 5      n[	        U5      S:X  d   eg )Nr  r    r   )r2   rl   rm   r   r  r  s     r9   test_pure_backgroundr    s+    
s#A	QBr7a<<r<   c                     ^ [        [        5      mU4S jn [        R                  " [        5         U " 5         S S S 5        g ! , (       d  f       g = f)Nc                  $   > T S   R                     g rV   )image_intensity)r  s   r9   get_intensity_image)test_invalid.<locals>.get_intensity_image  s    
1r<   )r   rW   ro   rp   AttributeError)r  r  s    @r9   test_invalidr    s2    	V	B 
~	& 
'	&	&s   A
Ac                      [         R                  " S/S//5      n [        R                  " [        5         [        [        U 5        S S S 5        g ! , (       d  f       g = fNr   )r2   r   ro   rp   r   r   rW   )wrong_intensity_samples    r9   test_invalid_sizer    s<    XXsQCj1	z	"F23 
#	"	"s   A
Ac                      [         R                  " S[        S9n SU SS2SS24'   SU SS2SS24'   [        U 5      nUS   n[        U 5      nUS   nUS   n[	        X#:H  S	S
5        [	        X$:g  S	S5        g )N)r  r  r    r   r      r   2   c   TzSame regionprops are not equalzDifferent regionprops are equal)r2   rl   rm   r   r   )arrregionsr1r2r3s        r9   test_equalsr    s    
((:S
)CC"ad
OC2r"u#G	B#G	B	B4!AB4!BCr<   c                      [        [        5      S   n U  Vs0 s H  oX   _M	     nn[        [        [        S9S   n U  Vs0 s H  oX   _M	     nn[        U5      [        U5      :  d   eg s  snf s  snf )Nr   rL  )r   rW   rX   r  )r]   r4   p0p1s       r9   test_iterate_all_propsr    ss     #F &	'1VY,B	'1AB1EF &	'1VY,B	'r7SW 
( 
(s   A+ A0c                     [         R                  5       n [        U 5      S   nUR                  nSUR                  S S& UR                  n[        X#5        SUl        UR                  n[        R                  " X#:g  5      (       d   eg )Nr   r   r   F)	rW   r   r   r6  _label_imager   _cache_activer2   any)r   r]   f0f1s       r9   
test_cacher    sz    J$Q'F			B F			B r !F			B66"(r<   c                      [         R                  5       n [        U SS9S   nUR                  nUR                  [        5       :X  d   eg )NF)cacher   )rW   r   r   r6  _cachedict)r   r]   _s      r9   test_disabled_cache_is_emptyr    s?    J51!4FA ==DF"""r<   c                     S n [        U R                  5      n[        [        5      S   n[	        5       n[        U5       Vs/ s H  oDR                  S5      (       a  M  UPM     nn[        U5      n[        U5      nU(       a9  [        Xg5        US   nSU;  d   e[        UR                  S5      5      S:  d   eg [        US5        g s  snf )Nc                      g)fooNrt   rt   r<   r9   r  &test_docstrings_and_props.<locals>.foo  s    r<   r   r  r  	iteration
r   )
rs   __doc__r   rW   r   dir
startswithr  r   split)	r  has_docstringsr]   docsrd  r  nr_docs_parsednr_propsdss	            r9   test_docstrings_and_propsr    s     #++&N #F=DF=1<<+<QE=YN5zH^./0"$$$288D>"Q&&&^Q' >s   C
C
c            	      t   [        [        5      n [        U 5      nU[        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      S.:X  d   e[        [        5      n [        U SSS9nU[        R                  " S/5      [        R                  " S	/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      S
.:X  d   eg Nr   r   r   ry   )r+  zbbox-0zbbox-1zbbox-2zbbox-3r+  r   r   +r  	separatorrf   )r+  r   bbox+0bbox+1bbox+2bbox+3)r   rW   r   r2   r   )r  outs     r9   test_props_to_dictr(    s    &!G

!C1#((A3-((A3-((B4.((B4.    &!G
-FRU
VC1#"((A3-((A3-((B4.((B4.   r<   c            	      H   [        [        5      n U [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      S.:X  d   e[        [        SSS9n U [        R                  " S/5      [        R                  " S	/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      [        R                  " S/5      S
.:X  d   eg r  )r   rW   r2   r   r'  s    r9   test_regionprops_tabler+    s    
F
#C1#((A3-((A3-((B4.((B4.    F/HTW
XC1#"((A3-((A3-((B4.((B4.   r<   c                  ~    [        [        SS9n U R                  5        H  nUR                  S5      (       a  M   e   g )N)local_centroidr  r-  )r   rW   keysr  )r'  keys     r9   1test_regionprops_table_deprecated_vector_propertyr1  $  s5    
F/B
CCxxz~~.//// r<   c                  `    [        [        SS9n [        U R                  5       5      S/:X  d   eg )N)r   r.  r   )r   rW   listr/  r*  s    r9   1test_regionprops_table_deprecated_scalar_propertyr4  +  s)    
F~
>C
},,,r<   c            
         [        [        [        5      n [        [        [        [        R
                  " 5       S9n[        R                  " 5        GH	  u  p#[        U 5       H  u  pEXR   n[        R                  " U5      (       d  U[        ;   d  U[        R                  L a  [        XaU   U   5        MT  [        U[        R                  5      (       a  UR                  O[!        U5      4n[        R"                  " U5       HO  nSR%                  ['        [(        U4U-   5      5      n	[!        U5      S:  a  UOUS   n
[+        Xj   X   U   5        MQ     M     GM     g )Nr.  -r   r   )r   rW   INTENSITY_FLOAT_SAMPLEr   r   r/  items	enumerater2   isscalarr   object_r   
isinstancendarrayr>   r  ndindexjoinmapstrr   )r  	out_tabler^   r!   iregrpr>   indmodified_proplocs              r9   (test_regionprops_table_equal_to_originalrI  0  s    &"89G!&:??3DI "'')(FAB{{2$."8ERZZ<O"2q'9:$.r2::$>$>SWJ::e,C$'HHStgm-D$EM!$SA#3q6C )*B1*EF - ) *r<   c                  Z   [        [        R                  " S[        S9SSS9n [	        U 5      S:X  d   e[	        U S   5      S:X  d   e[	        U S	   5      S:X  d   e[	        U S
   5      S:X  d   e[	        U S   5      S:X  d   e[	        U S   5      S:X  d   e[	        U S   5      S:X  d   eg )Nr  r    r  r   r!  r'   r+  r   r   r#  r$  r%  r&  )r   r2   rl   rm   r  r*  s    r9   !test_regionprops_table_no_regionsrK  C  s    

s#0IUXC s8q==s7|!!!s6{q   s8}"""s8}"""s8}"""s8}"""r<   c            
      ^   Sn [        [        [        S9S   n[         GH  nX   nU[        ;   a  [        U   [
        :X  d   eM'  [        [        R                  " U5      S   5      n[        R                  " U[        R                  5      (       a,  [        U   [        :X  d   U SU SU  S[        U    35       eM  [        R                  " U[        R                  5      (       a,  [        U   [        :X  d   U SU SU  S[        U    35       eM   U SU SU  S[        U    35       e   g )Nzmismatch with expected type,rL  r   z dtype  )r   rW   rX   r   r   objecttyper2   ravel
issubdtypefloatingrq   integerrm   )msgr]   colrH   ts        r9   test_column_dtypes_correctrW  P  s   
(C1AB1EFzK. c?f,,,!Q ==BKK((c?e+WuGA3auAjQToEV-WW+]]1bjj))c?c)UcU'!AcU!JsOCT+UU)DSE1SE:c?2CDD5 r<   c                  @   [         R                  " S5      n U R                  [        5      nUS   n[	        S U5      nSnU Vs1 s H(  n[
        R                  " XE5      R                  S5      iM*     nn[        [        R                  " 5       5      nXv:X  d   eg s  snf )Nznumpydoc.docscrapeNotesc                 $    U R                  S5      $ )Nz**)r  )lines    r9   r:   9test_all_documented_items_in_col_dtypes.<locals>.<lambda>h  s    )>r<   z$\*\*(?P<property_name>[a-z_]+)\*\*.*property_name)ro   importorskipFunctionDocr   filterresearchgroupsetr   r/  )numpydoc_docscrape	docstringnotes_linesproperty_linespatternproperty_lineproperty_namescolumn_keyss           r9   'test_all_documented_items_in_col_dtypesrm  d  s    ,,-AB"..{;IG$K>LN5G ,+M 			')//@+   joo'(K(((s   /Bc                 .    [         R                  " U 5      $ )z"a short test for an extra propertyr1   
regionmasks    r9   
pixelcountrq  r  s    66*r<   c                 2    [         R                  " X   5      $ r0   )r2   median)rp  r  s     r9   intensity_medianrt  w  s    99_011r<   c                 (    S/U R                   S   -  $ )z=Extra property whose output shape is dependent on mask shape.r   )r>   ro  s    r9   	bbox_listrv  {  s    3!!!$$$r<   c                     gr  rt   )rp  r  superfluouss      r9   too_many_argsry        r<   c                      gr  rt   rt   r<   r9   too_few_argsr|    rz  r<   c                      [        [        [        4S9S   n U R                  [        R                  " [        S:H  5      :X  d   eg )Nextra_propertiesr   r   )r   rW   rq  r2   r3   r]   s    r9   test_extra_propertiesr    s6    :-@CFv{ 3333r<   c                      [        [        [        [        4S9S   n U R                  [        R
                  " [        [        S:H     5      :X  d   eg N)r   r  r   r   )r   rW   rX   rt  r2   rs  r  s    r9   test_extra_properties_intensityr    sI     0DTCV	F ""bii0@10M&NNNNr<   intensity_propc                     [        [        5      S   n[        R                  " [        5       n[        X5        S S S 5        SU  S3nU[        WR                  5      :X  d   eg ! , (       d  f       N0= f)Nr   zAttribute 'z<' unavailable when `intensity_image` has not been specified.)r   rW   ro   rp   r  rY   rA  value)r  r]   eexpected_errors       r9   test_intensity_image_requiredr    sf     #F	~	&!' 
' n% & 	  S\))) 
'	&s   A##
A1c                      [         R                  " [        5         [        [        [
        4S9S   n U R
                  nS S S 5        g ! , (       d  f       g = fNr~  r   )ro   rp   r  r   rW   rt  r]   r  s     r9   +test_extra_properties_no_intensity_providedr    s:    	~	&V7G6IJ1M## 
'	&	&s   #A
Ac                  \   [         R                  " [        5         [        [        [
        4S9S   n U R
                  nS S S 5        [         R                  " [        5         [        [        [        4S9S   n U R                  nS S S 5        g ! , (       d  f       NT= f! , (       d  f       g = fr  )ro   rp   r  r   rW   r|  ry  r  s     r9   test_extra_properties_nr_argsr    sx    	~	&V|oFqI 
' 
~	&V}6FGJ   
'	& 
'	& 
'	&s   #B #B
B
B+c                     [        [        [        [        [        4S9S   n U R                  [
        R                  " [        [        S:H     5      :X  d   eU R                  [
        R                  " [        S:H  5      :X  d   eg r  )r   rW   rX   rt  rq  r2   rs  r3   r  s    r9   test_extra_properties_mixedr    sn    (*J7 		F
 ""bii0@10M&NNNNv{ 3333r<   c                  l   [        [        [        S[        [        [
        4S9n [        U S   [        R                  " SS/5      5        [        U S   [        R                  " SS/5      5        U S	   R                  [        R                  :X  d   eU S	   S
   S/S-  :X  d   eU S	   S   S/S-  :X  d   eg )Nr,  )r   r  r  rt  r%   r  rq  r   r   rv  r   r   )r   SAMPLE_MULTIPLEINTENSITY_SAMPLE_MULTIPLErt  rq  rv  r   r2   r   r   r!   r;  r*  s    r9   test_extra_properties_tabler    s    
1*J	B	C c"45rxxc
7KLs<("((B7*;<{!!RZZ///{A1#(***{A1#')))r<   c                      [         R                  " 5       SSS2SSS24   n U S   n[        U R                  [        5      SS9n[
        R                  " U5      S-  n[        X![        /S9U   n[        X [        /S9U   n[        [        R                  " 5       5      S/-    Hi  nXF   nXV   n[
        R                  " U5      [
        R                  " U5      :X  a  [        Xx5        MF  [        U[
        R                  " U5      S   S	S	S
9  Mk     g)z2Test that computing multichannel properties works.Nr   ).r   r   )start_labelr   r~  rt  g-q=r  )r   	astronautr   r  rq   r2   maxr   rt  r3  r   r/  r>   r   r   asarray)	astroastro_greenlabelssegment_idxr]   region_multir^   r4   p_multis	            r9   test_multichannelr    s    NNSqS#A#X&E-K%,,u%15F&&.A%K@P?QRF v@P?QRL UZZ\"&8%99L$88A;"((7++q* Arzz'26:US :r<   c                  Z   Sn [         R                  " U 6 R                  [        5      n[        R
                  " U/ SQSS9n[        R                  " / SQSS9n[        R                  " XR                  5      n[        U5      S   nUR                  n[        U5      n[        U  Vs/ s H  nS	U-  PM
     snS
S9n[        Xu5       H  u  p[!        X-
  5      SU-  :  a  M   e   [!        UR"                  US   -
  5      S:  d   e[!        UR$                  US   -
  5      S:  d   egs  snf )zmVerify that estimated axis lengths are correct.

Uses an ellipsoid at an arbitrary position and orientation.
)r|   r   r  ))r]  ry   )r]  r\  )r  r|   r   )	pad_widthr   )r   rg  r  r   )r=  dimensionalityr   r   T)reverseg{Gz?gHz>r   N)r	   	ellipsoidr  rm   r2   r   r
   EuclideanTransformndiaffine_transformparamsr   inertia_tensor_eigvalsr   sortedzipr   r@  rC  )
half_lengthsr  RrE  evsaxis_lengthshexpected_lengthsax_len_expectedax_lens
             r9   test_3d_ellipsoid_axis_lengthsr    s!     L%,,S1A 	q:LA 	$$oaPAQ)A 
Q	B 
#
#C6s;Ll;lq1ul;TJ#&'7#F6+,to/EEEE $G
 r##l1o56===r##l2&667$>>> <s   &D(c                      [         R                  " S[        S9n SU S S 2SS24'   [        U 5      n[	        U5      S:X  d   e[
        R                  " US   5      n[
        R                  " U5      nUS   U:X  d   eg )Nrk   r    r   r   r"   )r2   rl   rm   r   r  pickledumpsloads)label_imager  pickled	unpickleds       r9   test_pickling_region_propertiesr    sv     ((83/KK1Q3+&Gw<1 ll71:&GW%I1:"""r<   )r(   )rE   )ry  r  ra  numpyr2   ro   scipy.ndimagendimager  numpy.testingr   r   r   r   r   skimager   r	   r
   skimage._sharedr   skimage.measure._regionpropsr   r   r   r   r   r   r   r   r   r   r   r   skimage.segmentationr   r   rW   r   rX   r  rr   r7  newaxisr  rx  int32r  r  rl   r   ra   rb   rD   rL   rT   r_   rd   ri   ru   rw   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r  infr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r%  r)  r-  r0  r2  r4  r7  rJ  rP  rT  rW  rZ  r^  re  rh  rs  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r(  r+  r1  r4  rI  rK  rW  rm  rq  rt  rv  ry  r|  r  r  r  r  r  r  r  r  r  r  rt   r<   r9   <module>r     sQ     	     * ) #    &	>>>>>>>>>>
 ;;=  AbD )..077

CdJ &<S"**_&M Q ' # &&288,!QqS +002S8 HHYbhh/		!A#qsAaC- 	' nn& 2<D"4:N"./d 					D	A	I8(6I4.4
226 oy1	6		6 f9	9 VVRVVbffW9	9 aSAq6(I$>?9 @9
 c3Z#saV$DE	, F	, ])*	
*!&, "	4		4 	4		4##  JB%:(6!"
"	5$:.&
5
&
8
:.,8,"	9
9K:$5N?G38. 5F2PjC&.@!9H(2>D4D "#(,.*0-
G&
#E()
2%
4
O )+CD* E*$!4*T4?B#r<   