
    a6d                        d dl Z d dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZ d dlmZmZmZ d dlmZ d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dl m!Z!  ej"        g dg dg d	g d	g d
g dg dg dg dg dg
          Z#e#$                                Z%de%dddf<   e%$                                &                    ej'                  dz  Z( ej)        dej*                  Z+de+ddddf<   e+$                                dz  Z, ej-        dej.                  Z/de/ddddddf<   de/d<   e/$                                Z0dldZ1dmd Z2dld!Z3d" Z4d# Z5d$ Z6d% Z7d& Z8d' Z9d( Z:d) Z;d* Z<d+ Z=d, Z>d- Z?d. Z@d/ ZAd0 ZBd1 ZCd2 ZDd3 ZEd4 ZFd5 ZGd6 ZHd7 ZId8 ZJd9 ZKd: ZLd; ZMd< ZNd= ZOd> ZPd? ZQd@ ZRdA ZSdB ZTdC ZUdD ZVdE ZWdF ZXdG ZYdH ZZdI Z[dJ Z\dK Z]dL Z^dM Z_dN Z`dO ZadP ZbdQ ZcdR ZddS ZedT ZfdU ZgdV ZhdW ZidX ZjdY ZkdZ Zld[ Zmd\ Znd] Zod^ Zpd_ Zqd` Zrda Zsdb Ztdc Zuejv        w                    dde          de             Zxdf Zydg Zzdh Z{di Z|dj Z}dk Z~dS )n    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      $@
   dtype                   @   r&   r&   )r    r   r   r   r   c           	            j         \  }}t          j        t          j        d||d         z  |d          t          j        d||d         z  |d          d          \   fdS )Nr   Fendpointr   ijindexingc                 D    t          j        | z  |z  z  z            S Nnpsum)pqXYimgs     Flib/python3.11/site-packages/skimage/measure/tests/test_regionprops.py<lambda>z%get_moment_function.<locals>.<lambda>3   s"    qAvQ455     shaper1   meshgridlinspace)r7   spacingrowscolsr5   r6   s   `   @@r8   get_moment_functionrB   /   s    JD$;r{1dWQZ&7NNN{1dWQZ&7NNNY]_ _ _DAq5555555r:   r   r   r   c           
      "     j         \  }}}t          j        t          j        d||d         z  |d          t          j        d||d         z  |d          t          j        d||d         z  |d          d          \   fdS )	Nr   Fr)   r   r   r+   r,   c                 P    t          j        | z  |z  z  |z  z  z            S r/   r0   )r3   r4   rr5   r6   Zr7   s      r8   r9   z'get_moment3D_function.<locals>.<lambda>;   s+    26!q&16/AF":S"@AA r:   r;   )r7   r?   slicesr@   rA   r5   r6   rG   s   `    @@@r8   get_moment3D_functionrI   6   s    FD$k"+a'!*)<fuUUU+a
):D5QQQ+a
):D5QQQ\`b b bGAq! BAAAAAAAr:   c           	      h     j         \  }}t          j        t          j        d||d         z  |d          t          j        d||d         z  |d          d          \  t	           |          } |dd           |dd          z   |dd           |dd          z   fdS )	Nr   Fr)   r   r+   r,   r?   c                 P    t          j        z
  | z  z
  |z  z  z            S r/   r0   )r3   r4   r5   r6   cXcYr7   s     r8   r9   z-get_central_moment_function.<locals>.<lambda>G   s+    B1}B1}<sBCC r:   )r<   r1   r=   r>   rB   )	r7   r?   r@   rA   Mpqr5   r6   rM   rN   s	   `    @@@@r8   get_central_moment_functionrP   >   s    JD$;r{1dWQZ&7NNN{1dWQZ&7NNNY]_ _ _DAq c7
3
3
3C	QSSAYY	B	QSSAYY	BCCCCCCCCCr:   c            	      x   t          t          t                    d         } t          D ]}	 t	          | |         t          | t          |                              |                                |k    r7t	          t          | |          t          | t          |                              # t          $ r Y w xY wd S Nr   )r   SAMPLEINTENSITY_SAMPLEr   r   getattrlower	TypeErrorregionprops     r8   test_all_propsr[   J   s    !12215F  	tgfeDk.J.JKKK zz||t###GFD$9$9$+FE$K$@$@B B B  	 	 	D	 s   A>B**
B76B7c            	         t          t          t                    d         } t          D ]}	 t	          | |         t          | t          |                              |                                |k    r7t	          t          | |          t          | t          |                              # t          t          f$ r Y w xY wd S rR   )	r   	SAMPLE_3DINTENSITY_SAMPLE_3Dr   r   rU   rV   NotImplementedErrorrW   rX   s     r8   test_all_props_3dr`   \   s    $788;F  
	tgfeDk.J.JKKK zz||t###GFD$9$9$+FE$K$@$@B B B $Y/ 	 	 	D	 s   A>B**B>=B>c                      t          t                    d         j        } | dk    sJ t          t          d          d         j        } | dk    sJ d S )Nr   H   r   r   rK   )r   rS   
num_pixels)rd   s    r8   test_num_pixelsre   l   sY    V$$Q'2JVV444Q7BJr:   c                     t          t          j        dt                               t          t          j        dt          j                             t          j        t                    5  t          t          j        dt                               d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j        dt          j	                             d d d            n# 1 swxY w Y   t          j        t                    5  t          t          j        dt                               d d d            d S # 1 swxY w Y   d S )Nr   r   r   )r   r1   zerosintuintpytestraisesrW   floatfloat64bool r:   r8   
test_dtyperq   t   s   ---...111222	y	!	! 5 5BHXU3334445 5 5 5 5 5 5 5 5 5 5 5 5 5 5	y	!	! : :BHXRZ888999: : : : : : : : : : : : : : :	y	!	! 4 4BHXT2223334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s6   /)B$$B(+B(.DD	D&)EE #E c                  J   t          t          j        dt                               t          t          j        dt                               t          t          j        dt                               t          t          j        dt                               t          t          j        dt                               t	          j        t                    5  t          t          j        dt                               d d d            d S # 1 swxY w Y   d S )Nrg   r   )r   r   r   )r   r   r   r'   rC   )r   r   r   r   )r   r1   rh   ri   rk   rl   rW   rp   r:   r8   	test_ndimrs      s$   ---...C000111S111222s+++,,,#...///	y	!	! : :BH_C888999: : : : : : : : : : : : : : : : : :s   ")DDDc            
      n   d} t          t                    d         j        }t          j        || z
            dk     sJ d}t          t          ddg          d         j        }t          j        ||z
            dk     sJ t          j        dt          j                  }d|d	d
d	d
f<   t          |          d         j        }t          j        |dt          j        d	          z  z
            dk     sJ t          j        |t          j        d          z
            dk     sJ d}t          ||          d         j        }t          j        |t          j        |d         dz  |d         |d         k    z
  d	z  |d         dz  |d         |d         k     z
  d	z  z             z
            dk     sJ d S )N   r   r   r   皙?rK      rx   r   r      i  ư>rc   )r   rS   feret_diameter_maxr1   absrh   uint8sqrt)comparator_resulttest_resultcomparator_result_spacingtest_result_spacingr7   r|   r?   s          r8   test_feret_diameter_maxr      s   f%%a(;K6+ 1122Q6666 "%fq#h???BU6%(AABBQFFFF
(828
,
,
,CC"ad
O$S))!,?6$rBGAJJ677!;;;;6$rw/F'G'GGHH4OOOOG$S':::1=P6$rw	bGAJ'!*4	5!;	bGAJ3	4:	;(< (< < = =?CD D D D D Dr:   c                  p   t          j        dt           j                  } d| ddddf<   t          j        | fdz            }t	          |          d         j        }t          j        |t          j        d          z
            d	k     sJ d
}t	          ||          d         j        }t          j        |t          j        |d         dz  dz  |d         dz  dz  z   |d         dz  dz  z             z
            d	k     sJ t          j        |t          j        |d         dz  dz  |d         dz  dz  z   |d         dz  dz  z             z
            d	k    sJ t          j        |t          j        |d         dz  dz  |d         dz  dz  z   |d         dz  dz  z             z
            d	k    sJ d S )Nrw   r   r   r   ry   r    r   i  r{   )r   r   r    rK      rz   )r1   rh   r~   dstackr   r|   r}   r   )r7   img_3dr|   r?   s       r8   test_feret_diameter_max_3dr      s&   
(828
,
,
,CC"ad
OYvz""F$V,,Q/B 6$rw/U'V'VVWWZ^^^^^G$VW===a@S6$rw	v	1$	v	1$	%	u	!#	$(% (% % & & )-- - - - 6$rw	v	1$	v	1$	%	u	!#	$(% (% % & & )-- - - - 6$rw	v	1$	v	1$	%	u	!#	$(% (% % & & )-- - - - - -r:   c                  Z   t          t                    d         j        } | t          j        t                    k    sJ d}t          t          |          d         j        } | t          j        t          t          j        |          z            k    sJ t          t                    d         j        } | t          j        t                    k    sJ d}t          t          |          d         j        } | t          j        t          t          j        |          z            k    sJ d S )Nr   r   r   rK   )r   r   r    )r   rS   arear1   r2   prodr]   r   r?   s     r8   	test_arear      s    vq!&D26&>>!!!!Gvw///27D26&277#3#33444444y!!!$)D26)$$$$$$Gy'22215:D26)bgg&6&6677777777r:   c                     t          t                    d         j        } t          | ddt          j        d         t          j        d         f           t          t          d          d         j        } t          | ddt          j        d         t          j        d         f           t                                          }d|d d df<   t          |          d         j        } t          | ddt          j        d         t          j        d         dz
  f           t          |d          d         j        } t          | ddt          j        d         t          j        d         dz
  f           t          t                    d         j        } t          | d           t          t          d          d         j        } t          | d           d S )	Nr   r   r   rK   r    r   )r   r   r      r    r    )      ?r   r"   )r   rS   bboxr   r<   copyr]   )r   
SAMPLE_mods     r8   	test_bboxr      st   vq!&DdQ6<?FLO$LMMMvv...q16DdQ6<?FLO$LMMMJJqqq"uz""1%*DdQ6<?FLOa<O$PQQQz622215:DdQ6<?FLOa<O$PQQQy!!!$)Dd$6777y+666q9>Dd$677777r:   c                  @   t          j        t          dd          } t          |           d         j        }t          |t          j                   d}t          | |          d         j        }t          |t          j        t          j        |          z             d S )Nr!   constantmoder   )r   r    rK   )r1   padrS   r   	area_bboxr   sizer   )padded	bbox_arear?   s      r8   test_area_bboxr      s    VFAJ///FF##A&0Ii555GFG444Q7AIirww7G7G)GHHHHHr:   c                     t          t                    d         j        } t          | d         d           t          | d         d           t          | d         d           t          | d         d	           t          | d
         d           t          | d         d           t          | d         d           t	          t          d          }t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d
                    t           |dd          | d                    t           |dd          | d                    d}t	          t          |          }t          t          |          d         j        } t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d
          |dd                     t          | d          |dd                     t          | d          |dd                     d S )Nr   r   r   g    @{@r    r   g
r'   g@UUUUUrc   g@8_r   r   gpq@r   gKh/A@r   r    ga2rK   r   r    r   g?皙?)r   rS   moments_centralr   rP   )mu
centralMpqr?   s      r8   test_moments_centralr      s   	V		Q		/B4"45554"34444"45554"45554"45554"34444"4555 -VVDDDJ

1a(("T(333

1a(("T(333

1a(("T(333

1a(("T(333

1a(("T(333

1a(("T(333

1a(("T(333 G,VWEEEJ	VW	-	-	-a	0	@B4**Q"2"23334**Q"2"23334**Q"2"23334**Q"2"23334**Q"2"23334**Q"2"23334**Q"2"233333r:   c                     t          t                    d         j        } t          | d           t	          t          d          } |dd           |dd          z  } |dd           |dd          z  }t          ||f|            d}t	          t          |          } |dd           |dd          z  } |dd           |dd          z  }t          t          |          d         j        } t          | ||f           d S )Nr   )g@g98"@r'   rK   r   r   )r   rS   centroidr   rB   )r   rO   rN   rM   r?   s        r8   test_centroidr   	  s   6""1%.Hh(MNNN ff
5
5
5C	QSSAYY	B	QSSAYY	Br2h111G
fg
6
6
6C	QSSAYY	B	QSSAYY	B67333A6?HhR11111r:   c                     t          t                    d         j        } t          | d           t	          t          d          } |ddd           |ddd          z  } |ddd           |ddd          z  } |ddd           |ddd          z  }t          |||f|            d}t	          t          |          } |ddd           |ddd          z  } |ddd           |ddd          z  } |ddd           |ddd          z  }t          t          |          d         j        } t          | |||f           d S )Nr   )gI?:?r   rC   rK   r   )r   r   r   )r   r]   r   r   rI   )r   MpqrcZrN   rM   r?   s         r8   test_centroid_3dr     sm   9%%a(1Hh(LMMM !I>>>D	aAaA	&B	aAaA	&B	aAaA	&Br2rlH555 G G<<<D	aAaA	&B	aAaA	&B	aAaA	&B9g666q9BHhR55555r:   c                      t          t                    d         j        } | dk    sJ d}t          t          |          d         j        } | dt          j        |          z  k    sJ d S )Nr   }   r   r   rK   )r   rS   area_convexr1   r   r   s     r8   test_area_convexr   5  si    vq!-D3;;;;Gvw///2>D3)))))))))r:   c                      t          t                    d         j        } t          j        g dg dg dg dg dg dg dg d	g d	g d
g
          }t          | |           d S )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   rS   image_convexr1   arrayr   )r7   refs     r8   test_image_convexr   >  s    
f

a
 
-C
(	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?		A C sC     r:   c                  b   t          j        dt           j                  } t          j        ddgddgddgg          }d| |d d df         |d d df         f<   t	          |           d         j        }t          ||           t	          | d	          d         j        }t          ||           d S )
Nrg   r   r    r   r   r   r   )r   333333?rK   )r1   rh   int8r   r   coordsr   )sampler   prop_coordss      r8   test_coordinatesr   O  s    Xhbg...FX1v1v1v.//F)*F6!!!Q$<1%&f%%a(/K{F+++fj999!<CK{F+++++r:   c                  b   t          j        dt           j                  } t          j        ddgddgddgg          }d| |d d df         |d d df         f<   d}t	          | |	          d         j        }t          ||t          j        |          z             d
}t	          | |	          d         j        }t          ||t          j        |          z             t          j        dt           j                  } t          j        g dg dg dg          }d| |d d df         |d d df         |d d df         f<   t	          |           d         j        }t          ||           d}t	          | |	          d         j        }t          ||t          j        |          z             d S )Nrg   r   r    r   r   r   r   r'   rK   )r   r   r%   rC   )r   r   r   )r   r    r   )皙?r    gffffff@)r1   rh   r   r   r   coords_scaledr   )r   r   r?   r   s       r8   test_coordinates_scaledr   Y  s   Xhbg...FX1v1v1v.//F)*F6!!!Q$<1%&Gfg666q9GK{FRXg->->$>???Gfg666q9GK{FRXg->->$>???Xirw///FXyyy)))YYY788F78F6!!!Q$<1vaaad|34f%%a(6K{F+++Gfg666q9GK{FRXg->->$>?????r:   c                  X   t          j        t          dd          } t          j        \  }}t	          |           d         j        }t          dd|z             t          dd|z             f}t          ||           d}t	          | |          d         j        }t          ||           d S )	N))r   r   )r!   r   r   r   r   r   r!   )r   r   rK   )r1   r   rS   r<   r   slicer   )r   nrowncolresultexpectedr?   s         r8   
test_slicer   q  s    VF,:>>>FJD$  #)FaT""E!QX$6$67H"""G111!4:F"""""r:   c                     t          t                    d         j        } t          | d           t          t          d          d         j        } t          | d           t	          j        dt                    }d|d<   t          |          d         j        } t          | d           t          |d	          d         j        } t          | d           d S )
Nr   gPq~q?      ?r   rK   )r!   r!   r   r   r   r   r    r    )r   rS   eccentricityr   r1   rh   ri   )epsr7   s     r8   test_eccentricityr   }  s    
f

a
 
-C^,,,
fj
1
1
1!
4
AC^,,,
(6
%
%
%CCI
c

1

*CQ
c6
*
*
*1
-
:CQr:   c                  L   t          t                    d         j        } t          | d           d}t          t          |          d         j        } t          j        | dz  dz  z  }t          |t                                          t	          j        |          z             d S )Nr   g3&#@r   r    rK   r$   r   )r   rS   equivalent_diameter_arear   r1   pir2   r   )diameterr?   equivalent_areas      r8   test_equivalent_diameter_arear     s    6""1%>H-000G67333A6OHex"}22O8H8H)HIIIIIr:   c                     dD ]} t          t          |           d         j        }|dk    sJ t                                          }d|d<   t          ||           d         j        }|dk    sJ t          t          d          }|dk    sJ t          |d          }|dk    sJ t          t          d          }|dk    sJ t          t          d          }|dk    sJ t          j        d	          }d|d
dd
dd
df<   t          |d          }|dk    sJ d|ddddddf<   t          |d          }|dk    sJ d S )N)r'   )g @g?rK   r   r"   r   r   r   r    )d   r   r   (   <   -   7   )r   rS   r   r   r]   r1   rh   )r?   enr   SAMPLE_3D_2s       r8   test_euler_numberr     so   '  111!4AQwwww[[]]

5W555a8ERxxxx&!$$Qwwww*a((Qwwwww	i	#	#B7777	i	#	#B7777 (?++K'(K2r"ube#$	k1	%	%B7777'(K2r"ube#$	k1	%	%B777777r:   c                      t          t                    d         j        } t          | d           t          t          d          d         j        } t          | d           d S )Nr   皙?)r!   r   rK   )r   rS   extentr   )r   s    r8   test_extentr     sW      #*F$$$22215<F$$$$$r:   c                  6   t          t                    d         j        } t          j        g d          }t          | |           t          j        t                    5  t          t          d          d         j         d d d            d S # 1 swxY w Y   d S )Nr   )g?z~?gu/,?g'?gHU-T?g^L>gw-g?b1۾rc   rK   )	r   rS   
moments_hur1   r   r   r   rl   r_   )hur   s     r8   test_moments_hur     s    	V		Q		*B
(     C b#&&&	+	,	, : :FF+++A.99: : : : : : : : : : : : : : : : : :s   "BBBc                      t          t                    d         j        } t          | t                     t          t                    d         j        } t          | t          ddddddf                    d S )Nr   r   r   r    )r   rS   imager   r]   r7   s    r8   
test_imager     si    
f

a
 
&CsF###
i
 
 
#
)CsIac1Q3!m455555r:   c                      t          t                    d         j        } t          | d           t          t                    d         j        } t          | d           d S )Nr   r   )r   rS   labelr   r]   r   s    r8   
test_labelr     sR    "(Eua   	""1%+Eua     r:   c                  ~   t          t                    d         j        } | t          j        t                    k    sJ d}t          t          |          d         j        } | t          j        t                    t          j        |          z  k    sJ t                                          }d|d<   t          |          d         j        } | t          j        t                    k    sJ t          ||          d         j        } | t          j        t                    t          j        |          z  k    sJ d S )Nr   )r   r   rK   r   )r   rS   area_filledr1   r2   r   r   )r   r?   r   s      r8   test_area_filledr     s   vq!-D26&>>!!!!Gvw///2>D26&>>BGG$4$444444JJuz""1%1D26&>>!!!!z7333A6BD26&>>BGG$4$44444444r:   c                      t          t                    d         j        } t          | t                     t          t          d          d         j        } t          | t                     d S )Nr   r   rK   )r   rS   image_filledr   r   s    r8   test_image_filledr    sW    
f

a
 
-CsF###
ff
-
-
-a
0
=CsF#####r:   c            	         t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | d|z             ddlm} t          j        dt          j                  } |d	d	d
dt          j	        d                    \  }}d|||f<   t          |d          d         j        }t          |d d d         d          d         j
        }t          ||z
            dk    sJ t          |d d d d df         d          d         j        } t          | |d           d S )Nr   g8D0@r   rK   r   ellipse)rx      r   r   r"   r   r   rotationr   r'   rv   r   decimal)r   rS   axis_major_lengthr   skimage.drawr  r1   rh   r~   deg2radaxis_minor_lengthr}   lengthtarget_lengthr  r7   rrcclength_wo_spacings          r8   test_axis_major_lengthr    sb     #5F "M...0003EFM 1222$$$$$$
(828
,
,
,CWRQBJrNN;;;FBCBKV444Q7IM#C!Hf===	  =011C7777QQQ!Vf555a8JFq999999r:   c                  r    t          t          t                    d         j        } t	          | d           d S )Nintensity_imager   r   )r   rS   rT   intensity_maxr   	intensitys    r8   test_intensity_maxr    ?    F4D   !!. 	1%%%%%r:   c                  r    t          t          t                    d         j        } t	          | d           d S )Nr  r   gqq?)r   rS   rT   intensity_meanr   r  s    r8   test_intensity_meanr    s@    F4D   !!/ 	#344444r:   c                  r    t          t          t                    d         j        } t	          | d           d S )Nr  r   r   )r   rS   rT   intensity_minr   r  s    r8   test_intensity_minr"    r  r:   c            	         t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | d|z             ddlm} t          j        dt          j                  } |d	d
dd	t          j	        d                    \  }}d|||f<   t          |d          d         j        }t          |d d d         d          d         j        }t          ||z
            dk    sJ t          |d d d         d          d         j        } t          | |d           d S )Nr   g7z#@r   rK   r   r  )r      r   r!   r&   r       r  r   r'   r   rv   rc   r  )r   rS   r  r   r  r  r1   rh   r~   r  r}   r  s          r8   test_axis_minor_lengthr&  #  sZ     #5F #M...444Q7IFm 3444$$$$$$
(828
,
,
,CWQ1a"*R..999FBCBKV444Q7IM#C!Hf===	  =011C7777SSqS622215GFq999999r:   c                     t          t                    d         j        } t          | d         d           t          | d         d           t          | d         d           t          | d         d	           t          | d
         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t	          t          d          }t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d
                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    t           |dd          | d                    d}t          t          |          d         j        } t	          t          |          }t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d
          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     d S )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@rc   g     A@r   g     P@rK   r   r   r    )r   333333?)r   rS   momentsr   rB   )mrO   r?   s      r8   test_momentsr.  :  s   FA&A$&&&$'''$((($)))$'''$((($)))$((($)))$))) ff
5
5
5CAq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++Aq		1T7+++ GFG,,,Q/7A
fg
6
6
6C$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++++r:   c                     t          t                    d         j        } t          | d         d           t          | d         d           t          | d         d           t          | d         d	           t          | d
         d           t          | d         d           d}t          t          |          d         j        } t          | d         d           t          | d         d           t          | d         d           t          | d         d	           t          | d
         d           t          | d         d           d S )Nr   r   ge/
?r   gcZr'   g,lC@r   g^ ^H?r   g/O懵?rc   g⪹Rgr   rK   )r   rS   moments_normalizedr   )nur?   s     r8   test_moments_normalizedr2  e  s<   	V		Q		2B 4"56664"78884"78884"67774"56664"7888G	VW	-	-	-a	0	CB 4"56664"78884"78884"67774"56664"788888r:   c            	      x   t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | |           t	          j        dt                    }t          |          d         j        }t          |t          j         dz             t          |d          d         j        }t          |t	          j	        d	t	          j
        d
          z                       t          t	          j        |                    d         j        }t          |t          j        dz             t          t	          j        |          d          d         j        }t          |t	          j	        d	t	          j
        d
          z                        t          t	          j        |                    d         j        }t          |t          j        dz             t          t	          j        |          d          d         j        }t          |t	          j	        d	t	          j
        d
          z                        t          t	          j        t	          j        |                              d         j        }t          |t          j         dz             t          t	          j        t	          j        |                    d          d         j        }t          |t	          j	        d	t	          j
        d
          z                       d S )Nr   g/9vr   rK   r   r   r   r   r   g      ?)r   rS   orientationr   r1   eyeri   mathr   arccosr   flipudfliplr)orienttarget_orientdiagorient_diags       r8   test_orientationr>  |  sx     #/F'M...0003?F... 6"C   Dd##A&2KdgX\222dF333A6BKRYsRW\5J5J/J%K%KLLLbioo..q1=KTWq[111bioov>>>qAMKbibgl6K6K0K&L&L%LMMMbioo..q1=KTWq[111bioov>>>qAMKbibgl6K6K0K&L&L%LMMMbi	$8899!<HKdgX\222bi	$88&III!LXKRYsRW\5J5J/J%K%KLLLLLr:   c                     t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | d|z             t          t                              d          d          } t          | d	           t          j        t                    5  t          t          d
          d         j        } d d d            d S # 1 swxY w Y   d S )Nr   g֟K@r   rK   r   doubler#   )neighborhoodgXg	jG@rc   )r   rS   r   r   astyper   rl   r_   )per
target_pers     r8   test_perimeterrE    s   
f

a
 
*CJZ(((
ff
-
-
-a
0
:CQ^,,,
FMM(++!
<
<
<C]+++	+	,	, ? ?&&111!4>? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?   8"C''C+.C+c                     t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | d|z             t          t                              d          d          } t          | d           t          j        t                    5  t          t          d	          d         j        } d d d            d S # 1 swxY w Y   d S )
Nr   gχ?N@r   rK   r   r@  )
directionsgP@rc   )r   rS   r   r   rB  r   rl   r_   )rC  target_per_crofs     r8   test_perimeter_croftonrJ    s,   
f

a
 
2C#O_---
ff
-
-
-a
0
BCQ0111
FMM(33
B
B
BC]+++	+	,	, G G&&111!4FG G G G G G G G G G G G G G G G G GrF  c                      t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | |           d S )Nr   g;On?)r    r   rK   )r   rS   solidityr   )rL  target_soliditys     r8   test_solidityrN    s\    6""1%.HO/2226622215>H/22222r:   c                  	   t          t          t                    d         j        } t	          j        g dg dg dg dg          }t	          j        d           t          | |           t          t          d	
          }t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d	                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    d}t          t          t          |          d         j        } t          t          |
          }t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d	          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     t          | d          |dd                     d S )Nr  r   )     R@g($=gp8"@g)g0   Ngc"UgiC*Nڠ@g]}ᘎ)g|}@g(kbgz*@gqo)g}gF%uݓg~2	@g"0V0r   )	precisionr'   rK   r(  r   r)  r   r   r    r   r*  r   r   r   rc   r   r   r    r   r    r   r   r   g	@r   r  r?   )
r   rS   rT   moments_weighted_centralr1   r   set_printoptionsr   rP   r   )wmur   r   r?   s       r8   test_moments_weighted_centralrY    s    
f.>   3 
(
 
 

 
 

 
 

 
 
	 C "%%%%c3''' --=vNNNJ

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444

1a((#d)444 G
f.>%' ' ''(**B ,-=wOOOJD	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#3444D	::a#3#344444r:   c                     t          t          t                    d         j        } d}t	          | |           t          t          d          } |dd           |dd          z  } |dd           |dd          z  }t          ||f|            d}t          t          |          } |dd           |dd          z  } |dd           |dd          z  }t          t          t          |          d         j        } t          | ||f           t          | d	t          j        |          z             d
}t          t          |          } |dd           |dd          z  } |dd           |dd          z  }t          t          t          |          d         j        } t          | ||f           d S )Nr  r   )g8 u)@g1<S"@r'   rK   r   r   rU  r   )g?gffffff?)	r   rS   rT   centroid_weightedr   rB   r   r1   r   )r   target_centroidrO   rN   rM   r?   s         r8   test_centroid_weightedr]    s   63C     1 6Oh888 .
?
?
?C	QSSAYY	B	QSSAYY	BR(+++ G
.
@
@
@C	QSSAYY	B	QSSAYY	B63CWUUUVWXjH2r(+++!bh&?&?"?@@@G
.
@
@
@C	QSSAYY	B	QSSAYY	B63CWUUUVWXjH2r(+++++r:   c                  D   t          t          t                    d         j        } t	          j        g d          }t          | |           t          j        t                    5  t          t          d          d         j         d d d            d S # 1 swxY w Y   d S )Nr  r   )ga'R?gg	?y?g"
-?g!mT?gODګ>gpcgʝ~ܾrc   rK   )
r   rS   rT   moments_weighted_hur1   r   r   r   rl   r_   )whur   s     r8   test_moments_weighted_hura    s    
f.>   . 
(     C c3'''	+	,	, C CFF+++A.BBC C C C C C C C C C C C C C C C C Cs   &"BBBc                  `	   t          t          t                    d         j        } t	          j        g dg dg dg dg          }t          | |           t          t          d          }t           |dd          |d	                    t           |dd
          |d                    t           |dd          |d                    t           |dd          |d                    t           |d
d          |d                    t           |d
d
          |d                    t           |d
d          |d                    t           |d
d          |d                    t           |dd          |d                    t           |dd
          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd          |d                    t           |dd
          |d                    t           |dd          |d                    t           |dd          |d                    d}t          t          t          |          d         j        }t          t          |          }t          |d	          |dd                     t          |d          |dd
                     t          |d          |dd                     t          |d          |dd                     t          |d          |d
d                     t          |d          |d
d
                     t          |d          |d
d                     t          |d          |d
d                     t          |d          |dd                     t          |d          |dd
                     t          |d          |dd                     t          |d          |dd                     t          |d          |dd                     t          |d          |dd
                     t          |d          |dd                     t          |d          |dd          d           d S )Nr  r   )rP  g     ؅@g     @g    P@)g     y@g     @g    @g    .y!A)g     |@g    E@g    Ag   MA)g    P@g    \Ag    ?Ag   p1zAr'   rK   r(  r   r)  r   r   r    r   r*  r   r   r   rc   r   rR  r   rS  r   r   rT  rU  r&   r  )	r   rS   rT   moments_weightedr1   r   r   rB   r   )wmr   rO   r?   rX  s        r8   test_moments_weightedre  '  s   	V-= 
 
 

* 
(	E	E	E	E	E	E	E	E	E	E	E	E	G 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--- G
f.>%' ' ''(**: 
.
@
@
@CD	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99---D	33q!99a888888r:   c                     t          t          t                    d         j        } t	          j        t          j        t          j        ddgt          j        dddgg dg d	g          }t          | |           d
}t          t          t          |          d         j        } t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d         d           t          | d
         d           d S ) Nr  r   g!%su?gSmgvlgc6r?g,>Ak)S*]?NCyicd?\}$bg)7"h ;i\q?A׸Rr   rU  r   r   r'   r   r   r   rg  rc   rh  r   ri  rR  rj  r   rk  rS  rl  r   rm  rn  )	r   rS   rT   moments_weighted_normalizedr1   r   nanr   r   )wnur   r?   s      r8    test_moments_weighted_normalizedrr  \  s   
f.>   6 
(
&"&,	6
&-}	=	C	C	C	D	D	D	F C c3'''G
f.>
P
P
PQR
S
oC D	<000D	=111D	=111D	<000D	=111D	<000D	=111D	<000D	=111D	=111D	=111D	<000D	=11111r:   c                      t          t                    d         } t          j        ddg          }t          t          |          d         }t	          | j        |j        |z
             d S )Nr   i   i   )offset)r   rS   r1   r   r   r   )propsrt  props_offsets      r8   test_offset_featuresrw  z  s^    "EXtTl##Fvf555a8LENL$9F$BCCCCCr:   c                      t          j        dt                    } d| d d d d f<   t          |           }t	          |          dk    sJ |d         j        dk    sJ d S )Nr   r   r   r   r   )r1   emptyri   r   lenr   apss     r8   test_label_sequencer~    sf    
s###AAaaadG	QBr77a<<<<a5;!r:   c                      t          j        dt                    } t          |           }t	          |          dk    sJ d S )Nr   r   r   )r1   rh   ri   r   rz  r{  s     r8   test_pure_backgroundr    s8    
s###A	QBr77a<<<<<<r:   c                      t          t                    fd} t          j        t                    5   |              d d d            d S # 1 swxY w Y   d S )Nc                  "     d         j          d S rR   )image_intensity)r}  s   r8   get_intensity_imagez)test_invalid.<locals>.get_intensity_image  s    
1r:   )r   rS   rk   rl   AttributeError)r  r}  s    @r8   test_invalidr    s    	V		B     
~	&	&                   s   AAAc                      t          j        dgdgg          } t          j        t                    5  t          t          |            d d d            d S # 1 swxY w Y   d S Nr   )r1   r   rk   rl   
ValueErrorr   rS   )wrong_intensity_samples    r8   test_invalid_sizer    s    XsQCj11	z	"	" 4 4F23334 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4s   AAAc                  (   t          j        dt                    } d| ddddf<   d| ddddf<   t          |           }|d         }t          |           }|d         }|d         }t	          ||k    d	d
           t	          ||k    d	d           d S )N)r   r   r   r   r      r   2   c   TzSame regionprops are not equalzDifferent regionprops are equal)r1   rh   ri   r   r   )arrregionsr1r2r3s        r8   test_equalsr    s    
(:S
)
)
)CC"ad
OC2r"u#G	B#G	B	Br4!ABBBr4!BCCCCCr:   c                      t          t                    d         fdD             } t          t          t                    d         fdD             }t          |           t          |          k     sJ d S )Nr   c                 "    i | ]}||         S rp   rp   .0r3   rY   s     r8   
<dictcomp>z*test_iterate_all_props.<locals>.<dictcomp>      	'	'	'1!VAY	'	'	'r:   r  c                 "    i | ]}||         S rp   rp   r  s     r8   r  z*test_iterate_all_props.<locals>.<dictcomp>  r  r:   )r   rS   rT   rz  )p0p1rY   s     @r8   test_iterate_all_propsr    s      #F	'	'	'	'	'	'	'B1ABBB1EF	'	'	'	'	'	'	'Br77SWWr:   c                     t                                           } t          |           d         }|j        }d|j        d d<   |j        }t          ||           d|_        |j        }t          j        ||k              sJ d S )Nr   r   r   F)	rS   r   r   r   _label_imager   _cache_activer1   any)r   rY   f0f1s       r8   
test_cacher    s    J$$Q'F		B F		B r2 !F		B6"(r:   c                     d } t          | j                  }t          t                    d         }t	                      }d t          |          D             }t          |          }t          |          }|rHt          ||           |d         }d|vsJ t          |                    d                    dk    sJ d S t          |d           d S )Nc                      dS )fooNrp   rp   r:   r8   r  z&test_docstrings_and_props.<locals>.foo  s      r:   r   c                 <    g | ]}|                     d           |S )_)
startswith)r  r-  s     r8   
<listcomp>z-test_docstrings_and_props.<locals>.<listcomp>  s)    ===11<<+<+<=Q===r:   ro  	iteration
r    )	ro   __doc__r   rS   r   dirrz  r   split)r  has_docstringsrY   docsru  nr_docs_parsednr_propsdss           r8   test_docstrings_and_propsr    s       #+&&N  #F==D==F===EYYN5zzH (^X.../0"$$$$288D>>""Q&&&&&&^Q'''''r:   c            	      t   t          t                    } t          |           }|t          j        dg          t          j        dg          t          j        dg          t          j        dg          t          j        dg          dk    sJ t          t                    } t          | dd          }|t          j        dg          t          j        d	g          t          j        dg          t          j        dg          t          j        dg          t          j        dg          d
k    sJ d S Nr   r   r   ru   )r   zbbox-0zbbox-1zbbox-2zbbox-3r   r   r   +
properties	separatorrb   )r   r   bbox+0bbox+1bbox+2bbox+3)r   rS   r   r1   r   )r  outs     r8   test_props_to_dictr    s)   &!!G

!
!CBHaSMMXqc]]bhsmmXrd^^rx~~G G G G G G &!!G
-F#&( ( (CBHaSMM28RD>>Xqc]]bhsmmXrd^^rx~~G G G G G G G Gr:   c            	      8   t          t                    } | t          j        dg          t          j        dg          t          j        dg          t          j        dg          t          j        dg          dk    sJ t          t          dd          } | t          j        dg          t          j        d	g          t          j        dg          t          j        dg          t          j        dg          t          j        dg          d
k    sJ d S r  )r   rS   r1   r   r  s    r8   test_regionprops_tabler    s   
F
#
#CBHaSMMXqc]]bhsmmXrd^^rx~~G G G G G G F/H&)+ + +CBHaSMM28RD>>Xqc]]bhsmmXrd^^rx~~G G G G G G G Gr:   c                      t          t          d          } |                                 D ]}|                    d          sJ d S )N)local_centroidr  r  )r   rS   keysr  )r  keys     r8   1test_regionprops_table_deprecated_vector_propertyr    sR    
F/B
C
C
CCxxzz 0 0~~.//////0 0r:   c                      t          t          d          } t          |                                           dgk    sJ d S )N)r   r  r   )r   rS   listr  r  s    r8   1test_regionprops_table_deprecated_scalar_propertyr    s=    
F~
>
>
>C

},,,,,,r:   c            
         t          t          t                    } t          t          t          t	          j                              }t	          j                    D ] \  }}t          |           D ]	\  }}||         }t          j	        |          s|t          v s|t          j        u rt          |||         |                    Vt          |t          j                  r|j        nt!          |          f}t          j        |          D ]m}d                    t'          t(          |f|z                       }	t!          |          dk    r|n|d         }
t+          ||
         ||	         |                    n"d S )Nr  -r   r   )r   rS   INTENSITY_FLOAT_SAMPLEr   r   r  items	enumerater1   isscalarr   object_r   
isinstancendarrayr<   rz  ndindexjoinmapstrr   )r  	out_tablerZ   r   iregrpr<   indmodified_proplocs              r8   (test_regionprops_table_equal_to_originalr  	  sx   &"899G!&*@-7_->->@ @ @I "')) G Ge(( 	G 	GFAsTB{2 	GN**RZ''"2yq'9::::$.r2:$>$>NSWWJ:e,, G GC$'HHStgm-D-D$E$EM!$SA##3q6C C)M*B1*EFFFFG	GG Gr:   c                     t          t          j        dt                    dd          } t	          |           dk    sJ t	          | d                   dk    sJ t	          | d	                   dk    sJ t	          | d
                   dk    sJ t	          | d                   dk    sJ t	          | d                   dk    sJ t	          | d                   dk    sJ d S )Nr   r   r  r  r  r&   r   r   r   r  r  r  r  )r   r1   rh   ri   rz  r  s    r8   !test_regionprops_table_no_regionsr    s    
BHV3777'@&)+ + +C s88q====s7|!!!!s6{q    s8}""""s8}""""s8}""""s8}""""""r:   c                      t          t          j                                                  t                    t          t          j                              k    sJ d S r/   )setr   r  unionr   r   valuesrp   r:   r8   test_column_dtypes_completer  *  sE    z  !!''773u|~~;N;NNNNNNNr:   c            
         d} t          t          t                    d         }t          D ]}||         }|t          v rt          |         t
          k    sJ -t          t          j        |          d                   }t          j	        |t          j
                  r7t          |         t          k    s J | d| d|  dt          |                      t          j	        |t          j                  r8t          |         t          k    s J | d| d|  dt          |                      J | d| d|  dt          |                      d S )Nzmismatch with expected type,r  r   z dtype  )r   rS   rT   r   r   objecttyper1   ravel
issubdtypefloatingrm   integerri   )msgrY   colrF   ts        r8   test_column_dtypes_correctr  .  sn   
(C1ABBB1EF  3K.  c?f,,,,!Q  =BK(( 	c?e+++::q::3::C:: ,+++ ]1bj)) 	c?c)))::q::3::C:: *)))::q::3::C::  % r:   c                 *    t          j        |           S )z"a short test for an extra propertyr0   )
regionmasks    r8   
pixelcountr  H  s    6*r:   c                 6    t          j        ||                    S r/   )r1   median)r  r  s     r8   intensity_medianr  M  s    9_Z0111r:   c                     dS r  rp   )r  r  superfluouss      r8   too_many_argsr  Q      1r:   c                      dS r  rp   rp   r:   r8   too_few_argsr  U  r  r:   c                      t          t          t          f          d         } | j        t          j        t          dk              k    sJ d S )Nextra_propertiesr   r   )r   rS   r  r1   r2   rY   s    r8   test_extra_propertiesr
  Y  sC    :-@@@CFv{ 3 3333333r:   c                      t          t          t          t          f          d         } | j        t	          j        t          t          dk                       k    sJ d S N)r  r  r   r   )r   rS   rT   r  r1   r  r	  s    r8   test_extra_properties_intensityr  ^  sY    1A+;*=  F "bi0@10M&N&NNNNNNNr:   intensity_propc                     t          t                    d         }t          j        t                    5 }t          ||            d d d            n# 1 swxY w Y   d|  d}|t          |j                  k    sJ d S )Nr   zAttribute 'z<' unavailable when `intensity_image` has not been specified.)r   rS   rk   rl   r  rU   r  value)r  rY   eexpected_errors       r8   test_intensity_image_requiredr  e  s      #F	~	&	& (!'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (	n 	 	 	  S\\))))))s   AAAc                      t          j        t                    5  t          t          t
          f          d         } | j        }d d d            d S # 1 swxY w Y   d S Nr  r   )rk   rl   r  r   rS   r  rY   r  s     r8   +test_extra_properties_no_intensity_providedr  q  s    	~	&	& $ $V7G6IJJJ1M#$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   *AAAc                  p   t          j        t                    5  t          t          t
          f          d         } | j        }d d d            n# 1 swxY w Y   t          j        t                    5  t          t          t          f          d         } | j        }d d d            d S # 1 swxY w Y   d S r  )rk   rl   r  r   rS   r  r  r  s     r8   test_extra_properties_nr_argsr  w  s    	~	&	&    V|oFFFqI                              
~	&	& ! !V}6FGGGJ ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s#   *AAA4*B++B/2B/c                     t          t          t          t          t          f          d         } | j        t          j        t          t          dk                       k    sJ | j        t          j        t          dk              k    sJ d S r  )r   rS   rT   r  r  r1   r  r2   r	  s    r8   test_extra_properties_mixedr    s}    1A+;Z*H  F "bi0@10M&N&NNNNNv{ 3 3333333r:   c                      t          t          t          dt          t          f          } t          | d         t          j        ddg                     t          | d         t          j        ddg                     d S )	Nr   )r  r  r  r  r$   g      @r  r   r   )	r   SAMPLE_MULTIPLEINTENSITY_SAMPLE_MULTIPLEr  r  r   r1   r   r   r  s    r8   test_extra_properties_tabler    su    
O,E'1.>
-K  C
 c"45rxR7I7IJJJs<("(B7*;*;<<<<<r:   c                     t          j                    ddddddf         } | d         }t          |                     t                    d          }t          j        |          dz  }t          ||t          g          |         }t          || t          g          |         }t          t          j                              dgz   D ]x}||         }||         }t          j        |          t          j        |          k    rt          ||           Mt          |t          j        |          d         d	d	
           ydS )z2Test that computing multichannel properties works.Nr   ).r   r   )start_labelr   r  r  g-q=)rtolatol)r   	astronautr   rB  rm   r1   maxr   r  r  r   r  r<   r   r   asarray)	astroastro_greenlabelssegment_idxrY   region_multirZ   r3   p_multis	            r8   test_multichannelr-    s\   NSSqS##A#X&E-K%,,u%%1555F&..A%K$+;*<   '(F v$1A0B! ! ! "-.L
 UZ\\""&8%99 
( 
(4Lt$8A;;"(7++++q'**** Arz'226:!&( ( ( ( (
( 
(r:   c                  f   d} t          j        |                      t                    }t	          j        |g dd          }t          j        g dd          }t          j	        ||j
                  }t          |          d         }|j        }t          |          }t          d	 | D             d
          }t          ||          D ] \  }}t!          ||z
            d|z  k     sJ !t!          |j        |d         z
            dk     sJ t!          |j        |d         z
            dk     sJ dS )zuVerify that estimated axis lengths are correct.

    Uses an ellipsoid at an arbitrary position and orientation.
    )rx   r   r  ))r%  ru   )r%  r$  )r   rx   r   )	pad_widthr   )r   r+  r   r    )r  dimensionalityr   c                     g | ]}d |z  S )r   rp   )r  hs     r8   r  z2test_3d_ellipsoid_axis_lengths.<locals>.<listcomp>  s    ;;;q1u;;;r:   T)reverseg{Gz?gHz>r   N)r	   	ellipsoidrB  ri   r1   r   r
   EuclideanTransformndiaffine_transformparamsr   inertia_tensor_eigvalsr   sortedzipr}   r
  r  )	half_lengthsr  Rr  evsaxis_lengthsexpected_lengthsax_len_expectedax_lens	            r8   test_3d_ellipsoid_axis_lengthsrC    s]     L%,,S11A 	q:::LLLA 	$ooo45	7 	7 	7AQ))A 
Q	B 
#C6s;;L;;l;;;TJJJ#&'7#F#F F F6O+,,to/EEEEEE r#l1o566====r#l2&6677$>>>>>>r:   )r'   )rC   )r6  numpyr1   rk   scipy.ndimagendimager6  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   rS   r   rT   rB  rn   r  r5  int32r  r  rh   r~   r]   r^   rB   rI   rP   r[   r`   re   rq   rs   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r"  r&  r.  r2  r>  rE  rJ  rN  rY  r]  ra  re  rr  rw  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  markparametrizer  r  r  r  r  r-  rC  rp   r:   r8   <module>rO     s              ) ) ) ) ) ) ) ) ) ) ) ) ) ) * ) ) ) ) ) ) ) ) ) # # # # # #= = = = = = = = = = = = = = = = = = = = = = = = = = = = & % % % % %	;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	=
 
 ;;==  AbD )..0077
CCdJ "&28,,,!QqS +0022S8 BHYbh///		!A#qsAaC- 	' nn&& 6 6 6 6B B B B	D 	D 	D 	D  $     4 4 4: : :D D D.- - -4
8 
8 
88 8 8(I I I!4 !4 !4H2 2 2,6 6 6,* * *! ! !", , ,@ @ @0	# 	# 	#      J J J  B% % %: : :$6 6 6! ! !5 5 5"$ $ $: : :.& & &5 5 5& & &: : :.(, (, (,V9 9 9.M M M:? ? ?G G G3 3 375 75 75t, , ,:C C C$29 29 29j2 2 2<D D D      4 4 4D D D     "( ( (,G G G
G 
G 
G0 0 0- - -
G G G(
# 
# 
#O O O  4  
2 2 2    4 4 4
O O O )+CDD* * ED*$ $ $! ! !4 4 4= = =( ( (:? ? ? ? ?r:   