
    0-PhJ                     T   d dl Z d dlZ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*dej+        f         g dz  Z, ej-        dej.                  Z/de/ddddf<   e/&                                dz  Z0 ej1        dej2                  Z3de3ddddddf<   de3d<   e3&                                Z4dd Z5dd"Z6dd#Z7d$ Z8d% Z9d& Z:d' Z;d( Z<d) Z=d* Z>d+ Z?ej@        A                    d,e%dfe%dfe%dfe%d-fe3dfe3dfe3d.fg          d/             ZBd0 ZCd1 ZDd2 ZEd3 ZFd4 ZGd5 ZHd6 ZId7 ZJej@        A                    d8g d9g d:g d;g          d<             ZKej@        A                    d8d=d>g          d?             ZLej@        A                    d8ejM        ejN        ejN         g          d@             ZOej@        A                    d8dgddggd!f          dA             ZPej@        A                    d8dBdCgddgddgg          dD             ZQej@        A                    d8dEgg dFg          dG             ZRdH ZSdI ZTdJ ZUdK ZVej@        A                    d8g dL          dM             ZWej@        A                    d8g dN          dO             ZXdP ZYdQ ZZdR Z[dS Z\dT Z]dU Z^dV Z_dW Z`dX ZadY ZbdZ Zcd[ Zdd\ Zed] Zfd^ Zgd_ Zhd` Zida Zjdb Zkdc Zldd Zmde Zndf Zodg Zpdh Zqdi Zrdj Zsdk Ztdl Zudm Zvdn Zwdo Zxdp Zydq Zzdr Z{ds Z|dt Z}du Z~dv Zdw Zdx Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej@        A                    de          d             Zd Zd Zd Zd Zd Zd Zd ZdS )    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           	            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     f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/measure/tests/test_regionprops.py<lambda>z%get_moment_function.<locals>.<lambda>J   s"    q!tad{S011     shaper2   meshgridlinspace)r8   spacingrowscolsr6   r7   s   `   @@r9   get_moment_functionrC   C   s    JD$;
Atgaj($???
Atgaj($???  DAq
 2111111r;   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 r0   r1   )r4   r5   rr6   r7   Zr8   s      r9   r:   z'get_moment3D_function.<locals>.<lambda>U   s+    26!Q$A+1"4s":;; r;   r<   )r8   r@   slicesrA   rB   r6   r7   rH   s   `    @@@r9   get_moment3D_functionrJ   M   s    FD$k
Av
*FUCCC
Atgaj($???
Atgaj($???	  GAq! <;;;;;;;r;   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 r0   r1   )r4   r5   r6   r7   cXcYr8   s     r9   r:   z-get_central_moment_function.<locals>.<lambda>d   s+    B1}B1}<sBCC r;   )r=   r2   r>   r?   rC   )	r8   r@   rA   rB   Mpqr6   r7   rN   rO   s	   `    @@@@r9   get_central_moment_functionrQ   X   s    JD$;
Atgaj($???
Atgaj($???  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     r9   test_all_propsr\   g   s    !12215F  	tgfeDk.J.JKKK zz||t###GFD$9$9765QU;;W;WXXX 	 	 	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 rS   )	r   	SAMPLE_3DINTENSITY_SAMPLE_3Dr   r   rV   rW   NotImplementedErrorrX   rY   s     r9   test_all_props_3dra   x   s    $788;F 
 
		tgfeDk.J.JKKK zz||t###GFD$9$9765QU;;W;WXXX#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   rL   )r   rT   
num_pixels)re   s    r9   test_num_pixelsrf      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   r2   zerosintuintpytestraisesrX   floatfloat64bool r;   r9   
test_dtyperr      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 )Nrh   r    )r   r   r   )r   r   r   r(   rD   )r   r   r   r   )r   r2   ri   rj   rl   rm   rX   rq   r;   r9   	test_ndimrt      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                  R   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 S )N   r   r   r   皙?rL      ry   r    r      i  ư>r   rT   feret_diameter_maxr2   absri   uint8sqrt)comparator_resulttest_resultcomparator_result_spacingtest_result_spacingr8   r~   s         r9   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/D'E'EEFFMMMMMMr;   c            
         d} t          t                    d         j        }t          j        || z
            dk     sJ d}t          j        dt          j                  }d|ddddf<   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 )Nrv   r   r   rd   rx   r    r   rz   rL   r{   r|   r}   )r   r   r@   r8   r~   s        r9   test_feret_diameter_max_spacingr      s   f%%a(;K6+ 1122Q6666G
(828
,
,
,CC"ad
O$S':::1=P 	gbGAJ'!*$<=!C1:?gaj71:&=>1DE 	
 	
 	 	 	 	 	 	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 )Nrx   r    r   r   rz   r   r   i  r|   r   rL      r{   )r2   ri   r   dstackr   r~   r   r   )r8   img_3dr~   r@   s       r9   test_feret_diameter_max_3dr      s5   
(828
,
,
,CC"ad
OYvz""F$V,,Q/B
 	!BG,P$Q$QQRR
	 	 	 	 G$VW===a@S 	gv&1,1:(Q./1:'A-. 	
 	
 	 	 	 	 	gv&1,1:(Q./1:'A-. 	
 	
 	 	 	 	 	gv&1,1:(Q./1:'A-. 	
 	
 	 	 	 	 	 	r;   zsample,spacingr   r   )r   r   r   c                     t          | |          d         j        }t          j        | |rt          j        |          ndz            }||k    sJ d S )NrL   r   r   )r   arear2   r3   prod)sampler@   r   desireds       r9   	test_arear      sW     vw///27DfV7Arww///BCCG7??????r;   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   rL   r   r   )r   r   r      r   r   )      ?r   r#   )r   rT   bboxr   r=   copyr^   )r   
SAMPLE_mods     r9   	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 S )Nr"   constantmoder   )r2   padrT   r   	area_bboxr   size)padded	bbox_areas     r9   test_area_bboxr   $  sE    VFAJ///FF##A&0Ii55555r;   c                      d} t          j        t          dd          }t          ||           d         j        }t          |t          j        t          j        |           z             d S )N)r   r   r"   r   r   rL   r   )r2   r   rT   r   r   r   r   r   )r@   r   r   s      r9   test_area_bbox_spacingr   *  s^    GVFAJ///FFG444Q7AIirww7G7G)GHHHHHr;   c                  d   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 S )Nr   r   r   g    @{@r   r   g
r(   g@UUUUUrd   g@8_r   r   gpq@r   gKh/A@r   r   ga2rL   r   r   r   )r   rT   moments_centralr   rQ   )mu
centralMpqs     r9   test_moments_centralr   1  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33r;   c                  8   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 )Ng?g?rL   r   r   r   r   r   r(   r   rd   r   r   r   )rQ   rT   r   r   r   )r@   r   r   s      r9   test_moments_central_spacingr   H  s   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 S )Nr   )g@g98"@r(   rL   r   )r   rT   centroidr   rC   )r   rP   rO   rN   s       r9   test_centroidr   W  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11r;   c                      d} t          t          |           } |dd           |dd          z  } |dd           |dd          z  }t          t          |           d         j        }t	          |||f           d S )Nr   rL   r   r   )rC   rT   r   r   r   r@   rP   rO   rN   r   s        r9   test_centroid_spacingr   d  s    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                  X   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 S )Nr   )gI?:?r   rD   rL   r   )r   r^   r   r   rJ   )r   MpqrcZrO   rN   s        r9   test_centroid_3dr   o  s    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55r;   r@   ) @皙@ffffff@)r%   r%   r%   )r   r   r   c                 <   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 )!Test the _normalize_spacing code.rL   r   r   N)rJ   r^   r   r   r   )r@   r   r   rO   rN   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666q9BHhR55555r;   )r   y              ?y      ?        c                     t          j        t          d          5  t          t          |           d         j         ddd           dS # 1 swxY w Y   dS )r   z3Element of spacing isn't float or integer type, gotmatchrL   r   N)rl   rm   rX   r   rT   r   rL   s    r9   $test_spacing_parameter_complex_inputr     s     
N
 
 
 9 9 	FG,,,Q/889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9   "AAAc                     t          j        t                    5  t          t          |           d         j         ddd           dS # 1 swxY w Y   dS )r   rL   r   Nrl   rm   
ValueErrorr   rT   r   rL   s    r9   test_spacing_parameter_nan_infr     s     
z	"	" 9 9FG,,,Q/889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9s   "A		AAc                     t          j        t          d          5  t          t          |           d         j         d d d            d S # 1 swxY w Y   d S )Nz%spacing isn't a scalar nor a sequencer   rL   r   r   rL   s    r9   test_spacing_mismtaching_shaper     s    	z)P	Q	Q	Q 9 9FG,,,Q/889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9r   r   r   c                    t          t          |           } |dd           |dd          z  } |dd           |dd          z  }t          t          t          |           d         j        }t          |||f           dS )r   rL   r   r   intensity_imager@   N)rC   rU   r   rT   centroid_weightedr   r   s        r9   test_spacing_parameter_2dr     s     .
@
@
@C	QSSAYY	B	QSSAYY	B63CWUUU	  2r(+++++r;   	bad input)r   r   r   c                     t          j        t                    5  t          t          t
          |           d         j         ddd           dS # 1 swxY w Y   dS )r   r   r   N)rl   rm   r   r   rT   rU   r   rL   s    r9   #test_spacing_parameter_2d_bad_inputr     s     
z	"	"  F,<gNNN	


                 s   (AAAc                  T    t          t                    d         j        } | dk    sJ d S )Nr   }   )r   rT   area_convexr   s    r9   test_area_convexr     s(    vq!-D3;;;;;;r;   c                      d} t          t          |           d         j        }|dt          j        |           z  k    sJ d S )Nr   r   rL   r   r   )r   rT   r   r2   r   )r@   r   s     r9   test_area_convex_spacingr     sG    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   rT   image_convexr2   arrayr   )r8   refs     r9   test_image_convexr     s    
f

a
 
-C
(BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB	
 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 )
Nrh   r    r   r   r   r   r   )r   333333?rL   )r2   ri   int8r   r   coordsr   )r   r   prop_coordss      r9   test_coordinatesr     s    Xhbg...FX1v1v1v.//F)*F6!!!Q$<1%&f%%a(/K{F+++fj999!<CK{F+++++r;   )Nr   r   r(   )r   r   c                 F   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        }| |}n|t          j        |           z  }t          ||           d S )	Nrh   r    r   r   r   r   r   rL   r2   ri   r   r   r   coords_scaledr   r@   r   r   r   desired_coordss        r9   test_coordinates_scaledr     s    
 Xhbg...FX1v1v1v.//F)*F6!!!Q$<1%&fg666q9GK"(7"3"33{N33333r;   )Nr   r   )皙?r   r   c                 \   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        }| |}n|t          j        |           z  }t          ||           d S )
Nr&   r    rD   )r   r   r   )r   r   r   r   r   r   rL   r   r   s        r9   test_coordinates_scaled_3dr     s    
 Xirw///FXyyy)))YYY788F78F6!!!Q$<1vaaad|34fg666q9GK"(7"3"33{N33333r;   c                      t          j        t          dd          } t          j        \  }}t	          |           d         j        }t          dd|z             t          dd|z             f}t          ||           d S )N)r   r   )r"   r   r   r   r   r   r"   r2   r   rT   r=   r   slicer   )r   nrowncolresultexpecteds        r9   
test_slicer   
  su    VF,:>>>FJD$  #)FaT""E!QX$6$67H"""""r;   c                  8   t          j        t          dd          } t          j        \  }}t	          |           d         j        }t          dd|z             t          dd|z             f}d}t	          | |          d         j        }t          ||           d S )	Nr   r   r   r   r   r"   )r   r   rL   r   )r   r   r   r   r   r@   s         r9   test_slice_spacingr     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  rL   )r"   r"   r    r   r   r   r   r   )r   rT   eccentricityr   r2   ri   rj   )epsr8   s     r9   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   rL   r%   r   )r   rT   equivalent_diameter_arear   r2   pir3   r   )diameterr@   equivalent_areas      r9   test_equivalent_diameter_arear  ,  s    6""1%>H-000G67333A6OHex#~!33O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(   )r   g?rL   r   r#   r   r   r   r   )d   r  r  (   <   -   7   )r   rT   r   r   r^   r2   ri   )r@   enr   SAMPLE_3D_2s       r9   test_euler_numberr  7  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   rL   )r   rT   extentr   )r  s    r9   test_extentr  X  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۾rd   rL   )	r   rT   
moments_hur2   r   r   r   rm   r`   )hur   s     r9   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   rT   imager   r^   r8   s    r9   
test_imager&  s  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   rT   labelr   r^   r(  s    r9   
test_labelr*  {  sR    "(Eua   	""1%+Eua     r;   c                      t          t                    d         j        } | t          j        t                    k    sJ d S rS   )r   rT   area_filledr2   r3   r   s    r9   test_area_filledr-    s6    vq!-D26&>>!!!!!!r;   c                      t                                           } d| d<   t          |           d         j        }|t	          j        t                     k    sJ d S )Nr   r  )rT   r   r   r,  r2   r3   )r   r   s     r9   test_area_filled_zeror/    sM    JJuz""1%1D26&>>!!!!!!r;   c                     t                                           } d| d<   d}t          t           |          d         j        }|t	          j        t                     t	          j        |          z  k    sJ t          | |          d         j        }|t	          j        t                     t	          j        |          z  k    sJ d S )Nr   r  )r   r   rL   )rT   r   r   r,  r2   r3   r   )r   r@   r   s      r9   test_area_filled_spacingr1    s    JJuGvw///2>D26&>>BGG$4$444444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   rL   )r   rT   image_filledr   r%  s    r9   test_image_filledr4    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  rL   r   ellipse)ry      r    r   r#   r   r  rotationr   r(   rw   r   decimal)r   rT   axis_major_lengthr   skimage.drawr7  r2   ri   r   deg2radaxis_minor_lengthr   lengthtarget_lengthr7  r8   rrcclength_wo_spacings          r9   test_axis_major_lengthrG    s]     #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===a@R =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r   r   r   )r   rT   rU   intensity_maxr   	intensitys    r9   test_intensity_maxrM    3    F4DEEEaHVI	1%%%%%r;   c                  r    t          t          t                    d         j        } t	          | d           d S )NrI  r   gqq?)r   rT   rU   intensity_meanr   rK  s    r9   test_intensity_meanrQ    s4    F4DEEEaHWI	#344444r;   c                  r    t          t          t                    d         j        } t	          | d           d S )NrI  r   r   )r   rT   rU   intensity_minr   rK  s    r9   test_intensity_minrT    rN  r;   c                  r    t          t          t                    d         j        } t	          | d           d S )NrI  r   g|f?)r   rT   rU   intensity_stdr   rK  s    r9   test_intensity_stdrW    s4    F4DEEEaHVI	#677777r;   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  rL   r  r6  )r      r    r"   r'   r      r9  r   r(   r   rw   rd   r;  )r   rT   r@  r   r>  r7  r2   ri   r   r?  r   rA  s          r9   test_axis_minor_lengthr[    sU     #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===a@R =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 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@rd   g     A@r   g     P@rL   r   r   r   )r   rT   momentsr   rC   )mrP   s     r9   test_momentsrb    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+++++r;   c                     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 )N)r   333333?rL   r   r]  r^  r   r   r   r   r   r_  r(   r   r   rd   r   )r   rT   r`  rC   r   )r@   ra  rP   s      r9   test_moments_spacingre     se   GFG,,,Q/7A
fg
6
6
6C$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++$Q+++++r;   c                  L   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   e/
?r   cZr(   ,lC@r   ^ ^H?r   /O懵?rd   ⪹Rgr   rT   moments_normalizedr   )nus    r9   test_moments_normalizedrp    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88r;   c                  T   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  rL   r   r   rg  r   rh  r(   ri  r   rj  r   rk  rd   rl  rm  )r@   ro  s     r9   test_moments_normalized_spacingrr    s    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  rL   r   r    r   r   r   g      ?)r   rT   orientationr   r2   eyerj   mathr  arccosr   flipudfliplr)orienttarget_orientdiagorient_diags       r9   test_orientationr~  *  sx     #/F'M...0003?F... 6"C   Dd##A&2KTWq[111dF333A6BKRYsRWZ5H5H/H%I%IJJJbioo..q1=KdgX\222bioov>>>qAMKbibgj6I6I0I&J&J%JKKKbioo..q1=KdgX\222bioov>>>qAMKbibgj6I6I0I&J&J%JKKKbi	$8899!<HKTWq[111bi	$88&III!LXKRYsRWZ5H5H/H%I%IJJJJJr;   c                  ~   t          j        g dg dg dg dg          } t          j        g dg dg dg dg          }t          j        g d	g d
g dg dg          }t          j        | ||f          }t          |          }d |D             }t           j                            ||d         dd           t          |d         d           t          |d         d           t          |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 )*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   c                     g | ]	}|j         
S rq   )rt  ).0r[   s     r9   
<listcomp>z/test_orientation_continuity.<locals>.<listcomp>P  s    777D$777r;   r   r   g{Gz?rtolatolge{g-DT!r   g4,1g뿩g	@r   r   rL   r]  r^  r   r   r   r_  r(   r   r
  r   rd   r  r   r   r   r   r   r   r  )r2   r   hstackr   r   r   r   rT   rU   moments_weighted_centralrQ   )	arr1arr2arr3r$  propsorientationsr@   wmur   s	            r9   test_orientation_continuityr  G  sW   8\\\<<<|||LMMD8\\\<<<|||LMMD8\\\<<<|||LMMDItT4())EE77777LJ|\!_14PPPQ)<===Q)<===Q)<=== G
f.>
P
P
P	  --=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                    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  rL   r   doubler$   )neighborhoodgXg	jG@rd   )r   rT   r   r   astyper   rm   r`   )per
target_pers     r9   test_perimeterr  n  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  rL   r   r  )
directionsgP@rd   )r   rT   r   r   r  r   rm   r`   )r  target_per_crofs     r9   test_perimeter_croftonr  |  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r  c                      t          t                    d         j        } d}t          | |           t          t          d          d         j        } t          | |           d S )Nr   g;On?)r   r   rL   )r   rT   solidityr   )r  target_soliditys     r9   test_solidityr    s\    6""1%.HO/2226622215>H/22222r;   c                  |   t           } t          t          | d                   d         }t          t          | dddf                   d         }t          t          |           d         }t          j                            |j        t          j        |j                             t          j                            |j        t          j        |j                  dddf                    t          j	        |j                  t          j
        fk    sJ t          j	        |j                  t          j
        dfk    sJ t          j	        |j                  t          j
        | j	        d         fk    sJ t          t          | d	          }t          |          t          j        |j                  k    sJ dS )
zBTest for https://github.com/scikit-image/scikit-image/issues/6860.).r   rI  r   .r   Nr   )r   )r   
properties)#INTENSITY_FLOAT_SAMPLE_MULTICHANNELr   rT   r2   r   r   r   squeezer   r=   ndimr   lenr   )r   rp0rp1rpmtables        r9   )test_multichannel_centroid_weighted_tabler    s   9O
fof.E
F
F
Fq
IC
foc1Q3h.G
H
H
H
KC
fo
>
>
>q
ACJ""rz#*?@@   J""rx(=>>qqq!tD   8C)**v{n<<<<8C)**v{A.>>>>>8C)**v{O<QRT<U.VVVVV<R  E u::!677777777r;   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 S )NrI  r   )     R@g($=gp8"@g)g0   Ngc"UgiC*Nڠ@g]}ᘎ)g|}@g(kbgz*@gqo)g}gF%uݓg~2	@g"0V0r(   rL   r]  r   r^  r   r   r   r   r_  r   r
  r   rd   r  r  r   r  r   r  )	r   rT   rU   r  r2   r   r   rQ   r   )r  r   r   s      r9   test_moments_weighted_centralr    s   
f.>
?
?
?	  (RRRTTTRRRSSS		
 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44r;   c            	         t          j        g dg dg dg dg dg dg          } d}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             t          | | |          d         j        }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           t          | | |          d         j        }t          ||t          j        |          z             d S )N)r   r   r   r   r   r   )r   r   r   r   r   r   )      @r  rI  r   )g8 u)@g1<S"@r(   rL   r   r  r   r   )g?gffffff?)	r2   r   r   rT   rU   r   r   rC   r   )sample_for_spacingtarget_centroid_wspacingr   target_centroidrP   rO   rN   r@   s           r9   test_centroid_weightedr    s   	
	 	  *63CDDD	  7O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U	  2r(+++!bh&?&?"?@@@,>  		  !bh/G&H&H"HIIIG
.
@
@
@C	QSSAYY	B	QSSAYY	B63CWUUU	  2r(+++,>  		  'BH5M,N,N"NOOOOOr;   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 )NrI  r   )ga'R?gg	?y?g"
-?g!mT?gODګ>gpcgʝ~ܾrd   rL   )
r   rT   rU   moments_weighted_hur2   r   r   r   rm   r`   )whur   s     r9   test_moments_weighted_hur    s    
f.>
?
?
?
B
VC
(	
 	
 	

 
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 S )NrI  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(   rL   r]  r   r^  r   r   r   r   r_  r   r
  r   rd   r  r  r   r  r   r  	r   rT   rU   moments_weightedr2   r   r   rC   r   )wmr   rP   s      r9   test_moments_weightedr    sd   	V-=	>	>	>q	A	RB
(DDDDDDDD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                  4   t          t          t                    d         j        } t	          j        g dg dg dg dg          }t          | |           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 )NrI  r   r  r  r  r  r  r   rL   r]  r^  r   r   r   r   r   r_  r(   r   r
  r   rd   r  r  r   r  r   r  r'   r;  r  )r  r   r@   r  rP   s        r9   test_moments_weighted_spacingr  5  s   	V-=	>	>	>q	A	RB
(DDDDDDDDDDDD		
 C b#&&& G
f.>
P
P
P	  .
@
@
@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 S )
NrI  r   !%su?Smvlc6r?,>AkS*]?NCyicd?\}$bg7"h ;i\q?A׸R)r   rT   rU   moments_weighted_normalizedr2   r   nanr   )wnur   s     r9    test_moments_weighted_normalizedr  Y  s    
f.>
?
?
?	!  (VRV\=9V]L-@FFFGGG		
 C c3'''''r;   c                     d} 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         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   r   r  r  r  r  r  r  r  r   r   r(   r   r
  r   r  rd   r  r  r  r  r  r   r  r  r  r   r  r  )r   rT   rU   r  r2   r   r  r   )r@   r  s     r9   (test_moments_weighted_normalized_spacingr  h  s   G
f.>
P
P
P	!  HVRV\=9V]L-@FFFGGG		
   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   rT   r2   r   r   r   )r  r  props_offsets      r9   test_offset_featuresr    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   )r2   emptyrj   r   r  r(  apss     r9   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   )r2   ri   rj   r   r  r  s     r9   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 rS   )image_intensity)r  s   r9   get_intensity_imagez)test_invalid.<locals>.get_intensity_image  s    
1r;   )r   rT   rl   rm   AttributeError)r  r  s    @r9   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   )r2   r   rl   rm   r   r   rT   )wrong_intensity_samples    r9   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)r2   ri   rj   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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 rq   rq   r  r4   rZ   s     r9   
<dictcomp>z*test_iterate_all_props.<locals>.<dictcomp>      	'	'	'1!VAY	'	'	'r;   rI  c                 "    i | ]}||         S rq   rq   r  s     r9   r  z*test_iterate_all_props.<locals>.<dictcomp>  r  r;   )r   rT   rU   r  )p0p1rZ   s     @r9   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)	rT   r   r   r3  _label_imager   _cache_activer2   any)r   rZ   f0f1s       r9   
test_cacher
    s    J$$Q'F		B F		B r2 !F		B6"(r;   c                      t                                           } t          | d          d         }|j        }|j        t                      k    sJ d S )NF)cacher   )rT   r   r   r3  _cachedict)r   rZ   _s      r9   test_disabled_cache_is_emptyr    sM    J5111!4FA =DFF""""""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 )fooNrq   rq   r;   r9   r  z&test_docstrings_and_props.<locals>.foo  s      r;   r   c                 <    g | ]}|                     d           |S )r  
startswith)r  ra  s     r9   r  z-test_docstrings_and_props.<locals>.<listcomp>  s)    ===11<<+<+<=Q===r;   r  	iteration
r   )	rp   __doc__r   rT   r   dirr  r   split)r  has_docstringsrZ   docsr  nr_docs_parsednr_propsdss           r9   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   rv   )r(  zbbox-0zbbox-1zbbox-2zbbox-3r(  r   r   +r  	separatorrc   )r(  r   bbox+0bbox+1bbox+2bbox+3)r   rT   r   r2   r   )r  outs     r9   test_props_to_dictr-    s   &!!G

!
!C1#(A3--(A3--(B4..(B4..      &!!G
-FRU
V
V
VC1#"(A3--(A3--(B4..(B4..       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   rT   r2   r   r,  s    r9   test_regionprops_tabler0    s   
F
#
#C1#(A3--(A3--(B4..(B4..      F/HTW
X
X
XC1#"(A3--(A3--(B4..(B4..       r;   c                      t          t          d          } |                                 D ]}|                    d          sJ d S )N)local_centroidr  r2  )r   rT   keysr  )r,  keys     r9   1test_regionprops_table_deprecated_vector_propertyr6  $  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   r3  r   )r   rT   listr4  r/  s    r9   1test_regionprops_table_deprecated_scalar_propertyr9  +  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 )Nr3  -r   r   )r   rT   INTENSITY_FLOAT_SAMPLEr   r   r4  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_originalrN  0  ss   &"899G!&:?3D3D  I "')) 
G 
Ge(( 		G 		GFAsTB{2 G$."8"8ERZ<O<O"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   r2   ri   rj   r  r/  s    r9   !test_regionprops_table_no_regionsrP  C  s    

s###0IUX  C s88q====s7|!!!!s6{q    s8}""""s8}""""s8}""""s8}""""""r;   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,rI  r   z dtype  )r   rT   rU   r   r   objecttyper2   ravel
issubdtypefloatingrn   integerrj   )msgrZ   colrG   ts        r9   test_column_dtypes_correctr\  P  sd   
(C1ABBB1EF E E3K.  c?f,,,,!Q  =BK(( 	Ec?e+++-W-WA-W-W-W-WjQTo-W-W++++]1bj)) 	Ec?c)))c+U+U!+U+Uc+U+UJsO+U+U))))DSDDDDSDD:c?DDDDDE Er;   c                     t          j        d          } |                     t                    }|d         }t	          d |          }dfd|D             }t          t          j                              }||k    sJ d S )Nznumpydoc.docscrapeNotesc                 ,    |                      d          S )Nz**r  )lines    r9   r:   z9test_all_documented_items_in_col_dtypes.<locals>.<lambda>h  s    )>)> r;   z$\*\*(?P<property_name>[a-z_]+)\*\*.*c                 `    h | ]*}t          j        |                              d           +S )property_name)researchgroup)r  property_linepatterns     r9   	<setcomp>z:test_all_documented_items_in_col_dtypes.<locals>.<setcomp>j  sC        		'=))//@@  r;   )rl   importorskipFunctionDocr   filtersetr   r4  )numpydoc_docscrape	docstringnotes_linesproperty_linesproperty_namescolumn_keysrg  s         @r9   'test_all_documented_items_in_col_dtypesrs  d  s    ,-ABB"..{;;IG$K>>LLN5G   +  N jo''((K.((((((r;   c                 *    t          j        |           S )z"a short test for an extra propertyr1   
regionmasks    r9   
pixelcountrw  r  s    6*r;   c                 6    t          j        ||                    S r0   )r2   median)rv  r  s     r9   intensity_medianrz  w  s    9_Z0111r;   c                 $    dg| j         d         z  S )z=Extra property whose output shape is dependent on mask shape.r   )r=   ru  s    r9   	bbox_listr|  {  s    3!!$$$r;   c                     dS r  rq   )rv  r  superfluouss      r9   too_many_argsr        1r;   c                      dS r  rq   rq   r;   r9   too_few_argsr    r  r;   c                      t          t          t          f          d         } | j        t          j        t          dk              k    sJ d S )Nextra_propertiesr   r   )r   rT   rw  r2   r3   rZ   s    r9   test_extra_propertiesr    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   rT   rU   rz  r2   ry  r  s    r9   test_extra_properties_intensityr    sZ     0DTCV  	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   rT   rl   rm   r  rV   rF  value)r  rZ   eexpected_errors       r9   test_intensity_image_requiredr    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   )rl   rm   r  r   rT   rz  rZ   r  s     r9   +test_extra_properties_no_intensity_providedr    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  )rl   rm   r  r   rT   r  r  r  s     r9   test_extra_properties_nr_argsr    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   rT   rU   rz  rw  r2   ry  r3   r  s    r9   test_extra_properties_mixedr    s    (*J7   		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          t
          f          } t          | d         t          j        ddg                     t          | d         t          j        ddg                     | d	         j
        t          j        k    sJ | d	         d
         dgdz  k    sJ | d	         d         dgdz  k    sJ d S )Nr)  )r   r  r  rz  r%   r  rw  r   r   r|  r   r   )r   SAMPLE_MULTIPLEINTENSITY_SAMPLE_MULTIPLErz  rw  r|  r   r2   r   r   r!   r@  r/  s    r9   test_extra_properties_tabler    s    
1*J	B	  C c"45rxc
7K7KLLLs<("(B7*;*;<<<{!RZ////{A1#(****{A1#'))))))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  rz  g-q=r  )r   	astronautr   r  rn   r2   maxr   rz  r8  r   r4  r=   r   r   asarray)	astroastro_greenlabelssegment_idxrZ   region_multir[   r4   p_multis	            r9   test_multichannelr    sC   NSSqS##A#X&E-K%,,u%%1555F&..A%K@P?QRRRF vu@P?QRRRL UZ\\""&8%99 	T 	T4Lt$8A;;"(7++++q'**** Arz'226:USSSSS	T 	T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.
    )ry   r   r  ))rZ  rv   )rZ  rY  )r  ry   r   )	pad_widthr   )r   rd  r  r   )r:  dimensionalityr   c                     g | ]}d |z  S )r   rq   )r  hs     r9   r  z2test_3d_ellipsoid_axis_lengths.<locals>.<listcomp>  s    ;;;q1u;;;r;   T)reverseg{Gz?gHz>r   N)r	   	ellipsoidr  rj   r2   r   r
   EuclideanTransformndiaffine_transformparamsr   inertia_tensor_eigvalsr   sortedzipr   r=  r@  )	half_lengthsr  RrJ  evsaxis_lengthsexpected_lengthsax_len_expectedax_lens	            r9   test_3d_ellipsoid_axis_lengthsr    sV     L%,,S11A 	q:::LLLA 	$oooaPPPA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;   c                     t          j        dt                    } d| d d ddf<   t          |           }t	          |          dk    sJ t          j        |d                   }t          j        |          }|d         |k    sJ d S )Nrh   r    r   r   r"   )r2   ri   rj   r   r  pickledumpsloads)label_imager  pickled	unpickleds       r9   test_pickling_region_propertiesr    s     (83///KK1Q3+&&Gw<<1 l71:&&GW%%I1:""""""r;   )r(   )rD   )rv  r  rc  numpyr2   rl   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   rT   r   rU   r  ro   r<  newaxisr  ru  int32r  r  ri   r   r^   r_   rC   rJ   rQ   r\   ra   rf   rr   rt   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*  r-  r/  r1  r4  rG  rM  rQ  rT  rW  r[  rb  re  rp  rr  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r!  r-  r0  r6  r9  rN  rP  r\  rs  rw  rz  r|  r  r  r  r  r  r  r  r  r  r  r  r  rq   r;   r9   <module>r     s     				                         * ) ) ) ) ) ) ) ) ) # # # # # #                            & % % % % %	>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 
 ;;==  AbD )..0077
CCdJ &<S"*_&M Q Q Q ' # "&28,,,!QqS +0022S8 BHYbh///		!A#qsAaC- 	' nn&& 2 2 2 2< < < <D D D D  "    4 4 4: : :N N N"  ./ / /d 					D	A	I   8 8 8(6 6 6I I I4 4 4.4 4 4
2 
2 
22 2 26 6 6 __oooyyy1 	6 	6	 	6 f 9 9	 9 VRVbfW 9 9	 9 aSAq6(I$>??9 9 @?9
 c3Z#saV$DEE	, 	, FE	, ])))*  	   
* * *! ! !&, , , """ 	4 	4	 	4  	4 	4	 	4# # ## # #      J J J  B% % %: : :(6 6 6! ! !" " "
" " "	5 	5 	5$ $ $: : :.& & &
5 5 5
& & &
8 8 8
: : :., , ,8, , ,"	9 	9 	9
9 
9 
9K K K:$5 $5 $5N? ? ?G G G3 3 38 8 8. 5  5  5F2P 2P 2PjC C C&. . .@!9 !9 !9H( ( (2 2 2>D D D      4 4 4D D D     "# # #( ( (,  .  *0 0 0- - -
G G G&
# 
# 
#E E E() ) )  
2 2 2% % %
    4 4 4
O O O )+CDD* * ED*$ $ $! ! !4 4 4* * *T T T4? ? ?B# # # # #r;   