
    hhJ                     N   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jH                  g dg dg d	g d	g d
g dg dg dg dg dg
      Z%e%jM                         Z'de'dddf<   e'jM                         jQ                  ejR                        dz  Z*e*dejV                  f   g dz  Z, ejZ                  dej\                        Z/de/ddddf<   e/jM                         dz  Z0 ejb                  dejd                        Z3de3ddddddf<   de3d<   e3jM                         Z4dd Z5dd"Z6dd#Z7d$ Z8d% Z9d& Z:d' Z;d( Z<d) Z=d* Z>d+ Z?ej                  j                  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                  j                  d8g d9g d:g d;g      d<        ZKej                  j                  d8d=d>g      d?        ZLej                  j                  d8ej                  ej                  ej                   g      d@        ZOej                  j                  d8dgddggd!f      dA        ZPej                  j                  d8dBdCgddgddgg      dD        ZQej                  j                  d8dEgg dFg      dG        ZRdH ZSdI ZTdJ ZUdK ZVej                  j                  d8g dL      dM        ZWej                  j                  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                  j                  de      d        Zd Zd Zd Zd Zd Zd Zd Zy)    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                 F    t        j                  | z  |z  z  z        S Nnpsum)pqXYimgs     d/var/www/html/dev/engine/venv/lib/python3.12/site-packages/skimage/measure/tests/test_regionprops.py<lambda>z%get_moment_function.<locals>.<lambda>J   s!    q!tad{S01     shaper2   meshgridlinspace)r8   spacingrowscolsr6   r7   s   `   @@r9   get_moment_functionrC   C   sc    JD$;;
Atgaj($?
Atgaj($?DAq
 2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                 R    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*    266!Q$A+1"4s":; r;   r<   )r8   r@   slicesrA   rB   r6   r7   rH   s   `    @@@r9   get_moment3D_functionrJ   M   s    FD$kk
Av
*FUC
Atgaj($?
Atgaj($?	GAq! <;r;   c           	      L     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                 R    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 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
3C	QSAY	B	QSAY	BCCr;   c            	         t        t        t              d   } t        D ]]  }	 t	        | |   t        | t        |                |j                         |k(  r't	        t        | |      t        | t        |                _ y # t        $ r Y lw xY wNr   )r   SAMPLEINTENSITY_SAMPLEr   r   getattrlower	TypeErrorregionprops     r9   test_all_propsr\   g   s    !1215F 	tgfeDk.JK zz|t##GFD$9765QU;;WX  		s   AA??	B
Bc            	      (   t        t        t              d   } t        D ]]  }	 t	        | |   t        | t        |                |j                         |k(  r't	        t        | |      t        | t        |                _ y # t        t        f$ r Y rw xY wrS   )	r   	SAMPLE_3DINTENSITY_SAMPLE_3Dr   r   rV   rW   NotImplementedErrorrX   rY   s     r9   test_all_props_3dra   x   s    $78;F 
		tgfeDk.JK zz|t##GFD$9765QU;;WX
 $Y/ 		s   AA??BBc                      t        t              d   j                  } | dk(  sJ t        t        d      d   j                  } | dk(  sJ y )Nr   H   r   r   rL   )r   rT   
num_pixels)re   s    r9   test_num_pixelsrf      sJ    V$Q'22JVV4Q7B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        t        j                  t              5  t        t        j                  dt        j                               d d d        t        j                  t              5  t        t        j                  dt                     d d d        y # 1 sw Y   xY w# 1 sw Y   \xY w# 1 sw Y   y xY w)Nr   r   r    )r   r2   zerosintuintpytestraisesrX   floatfloat64bool r;   r9   
test_dtyperr      s    -.12	y	! 5BHHXU345	y	! :BHHXRZZ89:	y	! 4BHHXT234 4	5 5: :4 4s$   ,%D02/D<%E0D9<EEc                     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        y # 1 sw Y   y xY w)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1S12s+,#./	y	! :BHH_C89: : :s   %C<<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 y )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66+ 112Q666 "%fq#h?BUU66%(AABQFFF
((8288
,CC"ad
O$S)!,??66$rBGGAJ67!;;;66$rww/D'EEFMMMr;   c            
         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 y )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66+ 112Q666G
((8288
,CC"ad
O$S':1=PP 	ggbGAJ'!*$<=!C1:?gaj71:&=>1DE	
 			r;   c                  D   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	kD  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	kD  sJ y )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      s   
((8288
,CC"ad
OYYvz"F$V,Q/BB
 	!BGG,P$QQR
		 G$VW=a@SS 	ggv&1,1:(Q./1:'A-.	
 	
	 	ggv&1,1:(Q./1:'A-.	
 	
	 	ggv&1,1:(Q./1:'A-.	
 	
	r;   zsample,spacingr   r   )r   r   r   c                     t        | |      d   j                  }t        j                  | |rt        j                  |      ndz        }||k(  sJ y )NrL   r   r   )r   arear2   r3   prod)sampler@   r   desireds       r9   	test_arear      sG     vw/277DffV7rwww/BCG7??r;   c                  V   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        j                         }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       y )	Nr   r   r   rL   r   r   )r   r   r      r   r   )      ?r   r#   )r   rT   bboxr   r=   copyr^   )r   
SAMPLE_mods     r9   	test_bboxr     sK   vq!&&DdQ6<<?FLLO$LMvv.q166DdQ6<<?FLLO$LMJJq"uz"1%**DdQ6<<?FLLOa<O$PQz6215::DdQ6<<?FLLOa<O$PQy!!$))Dd$67y+6q9>>Dd$67r;   c                      t        j                  t        dd      } t        |       d   j                  }t        |t        j                         y )Nr"   constantmoder   )r2   padrT   r   	area_bboxr   size)padded	bbox_areas     r9   test_area_bboxr   $  s7    VVFAJ/FF#A&00Ii5r;   c                      d} t        j                  t        dd      }t        ||       d   j                  }t        |t        j                  t        j                  |       z         y )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   *  sL    GVVFAJ/FFG4Q7AAIirwww7G)G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          y )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4"344"454"454"454"344"45 -VVDJ
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3
1a("T(3r;   c                     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             y )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EJ	VW	-a	0	@	@B4*Q"234*Q"234*Q"234*Q"234*Q"234*Q"234*Q"23r;   c                      t        t              d   j                  } t        | d       t	        t        d      } |dd       |dd      z  } |dd       |dd      z  }t        ||f|        y )Nr   )g@g98"@r(   rL   r   )r   rT   centroidr   rC   )r   rP   rO   rN   s       r9   test_centroidr   W  sj    6"1%..Hh(MN ff
5C	QSAY	B	QSAY	Br2h1r;   c                      d} t        t        |       } |dd       |dd      z  } |dd       |dd      z  }t        t        |       d   j                  }t	        |||f       y )Nr   rL   r   r   )rC   rT   r   r   r   r@   rP   rO   rN   r   s        r9   test_centroid_spacingr   d  sd    G
fg
6C	QSAY	B	QSAY	B673A6??HhR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|        y )Nr   )gI?:?r   rD   rL   r   )r   r^   r   r   rJ   )r   MpqrcZrO   rN   s        r9   test_centroid_3dr   o  s    9%a(11Hh(LM !I>D	aAaA	&B	aAaA	&B	aAaA	&Br2rlH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       y)!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6q9BBHhR5r;   )r   y              ?y      ?        c                     t        j                  t        d      5  t        t        |       d   j
                   ddd       y# 1 sw Y   yxY w)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     sB     
N
 9 	FG,Q/889 9 9   AAc                     t        j                  t              5  t        t        |       d   j
                   ddd       y# 1 sw Y   yxY w)r   rL   r   Nrl   rm   
ValueErrorr   rT   r   rL   s    r9   test_spacing_parameter_nan_infr     s:     
z	" 9FG,Q/889 9 9s   AAc                     t        j                  t        d      5  t        t        |       d   j
                   d d d        y # 1 sw Y   y xY w)Nz%spacing isn't a scalar nor a sequencer   rL   r   r   rL   s    r9   test_spacing_mismtaching_shaper     s;    	z)P	Q 9FG,Q/88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       y)r   rL   r   r   intensity_imager@   N)rC   rU   r   rT   centroid_weightedr   r   s        r9   test_spacing_parameter_2dr     sm     .
@C	QSAY	B	QSAY	B63CWU	  2r(+r;   	bad input)r   r   r   c                     t        j                  t              5  t        t        t
        |       d   j                   ddd       y# 1 sw Y   yxY w)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	


  s   $AAc                  J    t        t              d   j                  } | dk(  sJ y )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 y )Nr   r   rL   r   r   )r   rT   r   r2   r   )r@   r   s     r9   test_area_convex_spacingr     s:    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        | |       y )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     sT    
f
a
 
-
-C
((BBBBBBBBBB	
C sC r;   c                  H   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        ||       y )
Nrh   r    r   r   r   r   r   )r   333333?rL   )r2   ri   int8r   r   coordsr   )r   r   prop_coordss      r9   test_coordinatesr     s    XXhbgg.FXX1v1v1v./F)*F6!Q$<1%&f%a(//K{F+fj9!<CCK{F+r;   )Nr   r   r(   )r   r   c                 :   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        ||       y )	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    
 XXhbgg.FXX1v1v1v./F)*F6!Q$<1%&fg6q9GGK"((7"33{N3r;   )Nr   r   )皙?r   r   c                 J   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        ||       y )
Nr&   r    rD   )r   r   r   )r   r   r   r   r   r   rL   r   r   s        r9   test_coordinates_scaled_3dr     s    
 XXirww/FXXy)Y78F78F6!Q$<1vad|34fg6q9GGK"((7"33{N3r;   c                      t        j                  t        dd      } t        j                  \  }}t	        |       d   j
                  }t        dd|z         t        dd|z         f}t        ||       y )N)r   r   )r"   r   r   r   r   r   r"   r2   r   rT   r=   r   slicer   )r   nrowncolresultexpecteds        r9   
test_slicer   
  sa    VVF,:>FJD$ #))FaT"E!QX$67H"r;   c                     t        j                  t        dd      } t        j                  \  }}t	        |       d   j
                  }t        dd|z         t        dd|z         f}d}t	        | |      d   j
                  }t        ||       y )	Nr   r   r   r   r   r"   )r   r   rL   r   )r   r   r   r   r   r@   s         r9   test_slice_spacingr     s}    VVF,:>FJD$ #))FaT"E!QX$67HG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       y )
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!
4
A
AC^,
((6
%CCI
c
1

*
*CQ
c6
*1
-
:
:CQr;   c                  .   t        t              d   j                  } t        | d       d}t        t        |      d   j                  } t        j
                  | dz  dz  z  }t        |t        j                         t	        j                  |      z         y )Nr   g3&#@r   r   rL   r%   r   )r   rT   equivalent_diameter_arear   r2   pir3   r   )diameterr@   equivalent_areas      r9   test_equivalent_diameter_arear  ,  sr    6"1%>>H-0G673A6OOHeex#~!33O8H)HIr;   c                  .   dD ]  } t        t        |       d   j                  }|dk(  sJ t        j                         }d|d<   t        ||       d   j                  }|dk(  sJ t        t        d      }|dk(  sJ t        |d      }|dk(  r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 y )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  s@   ' 1!4AAQww[[]

5W5a8EERxx&!$Qww*a(Qww 
i	#B7N7	i	#B7N7 ((?+K'(K2r"ube#$	k1	%B7N7'(K2r"ube#$	k1	%B7N7r;   c                      t        t              d   j                  } t        | d       t        t        d      d   j                  } t        | d       y )Nr   皙?)r"   r   rL   )r   rT   extentr   )r  s    r9   test_extentr  X  sB     #**F$215<<F$r;   c                     t        t              d   j                  } t        j                  g d      }t        | |       t        j                  t              5  t        t        d      d   j                   d d d        y # 1 sw Y   y xY w)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"  _  sm    	V	Q		*	*B
((	

C b#&	+	, :FF+A.99: : :s   BB
c                      t        t              d   j                  } t        | t               t        t              d   j                  } t        | t        ddddddf          y )Nr   r   r   r   )r   rT   imager   r^   r8   s    r9   
test_imager&  s  sW    
f
a
 
&
&CsF#
i
 
#
)
)CsIac1Q3!m45r;   c                      t        t              d   j                  } t        | d       t        t              d   j                  } t        | d       y )Nr   r   )r   rT   labelr   r^   r(  s    r9   
test_labelr*  {  s@    "((Eua 	"1%++Eua r;   c                  x    t        t              d   j                  } | t        j                  t              k(  sJ y rS   )r   rT   area_filledr2   r3   r   s    r9   test_area_filledr-    s-    vq!--D266&>!!!r;   c                      t         j                         } d| d<   t        |       d   j                  }|t	        j
                  t               k(  sJ y )Nr   r  )rT   r   r   r,  r2   r3   )r   r   s     r9   test_area_filled_zeror/    sB    JJuz"1%11D266&>!!!r;   c                  z   t         j                         } 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 y )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266&>BGGG$44444z73A6BBD266&>BGGG$44444r;   c                      t        t              d   j                  } t        | t               t        t        d      d   j                  } t        | t               y )Nr   r   rL   )r   rT   image_filledr   r%  s    r9   test_image_filledr4    sB    
f
a
 
-
-CsF#
ff
-a
0
=
=CsF#r;   c            	      Z   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kD  sJ t        |d d d d df   d      d   j                  } t        | |d       y )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    #55F "M.03EEFM 12$
((8288
,CRQBJJrN;FBCBKV4Q7IIM#C!Hf=a@RR =01C777Q!Vf5a8JJFq9r;   c                  `    t        t        t              d   j                  } t	        | d       y )Nr   r   r   )r   rT   rU   intensity_maxr   	intensitys    r9   test_intensity_maxrM    $    F4DEaHVVI	1%r;   c                  `    t        t        t              d   j                  } t	        | d       y )NrI  r   gqq?)r   rT   rU   intensity_meanr   rK  s    r9   test_intensity_meanrQ    s%    F4DEaHWWI	#34r;   c                  `    t        t        t              d   j                  } t	        | d       y )NrI  r   r   )r   rT   rU   intensity_minr   rK  s    r9   test_intensity_minrT    rN  r;   c                  `    t        t        t              d   j                  } t	        | d       y )NrI  r   g|f?)r   rT   rU   intensity_stdr   rK  s    r9   test_intensity_stdrW    s%    F4DEaHVVI	#67r;   c            	      R   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kD  sJ t        |d d d   d      d   j                  } t        | |d       y )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[    s    #55F #M.4Q7IIFm 34$
((8288
,CQ1a"**R.9FBCBKV4Q7IIM#C!Hf=a@RR =01C777SqS6215GGFq9r;   c                  B   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          y )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    sy   FA&&A$&$'$($)$'$($)$($)$) ff
5CAq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+Aq	1T7+r;   c                     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             y )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     s    GFG,Q/77A
fg
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       y )Nr   r   e/
?r   cZr(   ,lC@r   ^ ^H?r   /O懵?rd   ⪹Rgr   rT   moments_normalizedr   )nus    r9   test_moments_normalizedrp    ss    	V	Q		2	2B 4"564"784"784"674"564"78r;   c                      d} t        t        |       d   j                  }t        |d   d       t        |d   d       t        |d   d	       t        |d
   d       t        |d   d       t        |d   d       y )Nr  rL   r   r   rg  r   rh  r(   ri  r   rj  r   rk  rd   rl  rm  )r@   ro  s     r9   test_moments_normalized_spacingrr    sz    G	VW	-a	0	C	CB 4"564"784"784"674"564"78r;   c            	      :   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               y )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~  *  s!    #//F'M.03??F. 66"C Dd#A&22KTWWq[1dF3A6BBKRYYsRWWZ5H/H%IJbiio.q1==KdggX\2biiov>qAMMKbiibggj6I0I&J%JKbiio.q1==KdggX\2biiov>qAMMKbiibggj6I0I&J%JKbii		$89!<HHKTWWq[1bii		$8&I!LXXKRYYsRWWZ5H/H%IJr;   c                     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 cg c]  }|j                   }}t         j
                  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             y c c}w ))N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   g{Gz?rtolatolge{g-DT!r   g4,1g뿩g	@r   r   rL   r]  r^  r   r   r   r_  r(   r   r
  r   rd   r  r   r   r   r   r   r   r  )r2   r   hstackr   rt  r   r   r   rT   rU   moments_weighted_centralrQ   )
arr1arr2arr3r$  propsr[   orientationsr@   wmur   s
             r9   test_orientation_continuityr  G  sV   88\<|LMD88\<|LMD88\<|LMDIItT4()EE167D$$7L7JJ|\!_14PQ)<=Q)<=Q)<= G
f.>
P	  --=wOJD	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#34D	:a#347 8s   J
c                     t        t              d   j                  } d}t        | |       t        t        d      d   j                  } t        | d|z         t        t        j	                  d      d      } t        | d	       t        j                  t              5  t        t        d
      d   j                  } d d d        y # 1 sw Y   y xY w)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!4>>? ? ?   CCc                     t        t              d   j                  } d}t        | |       t        t        d      d   j                  } t        | d|z         t        t        j	                  d      d      } t        | d       t        j                  t              5  t        t        d	      d   j                  } d d d        y # 1 sw Y   y xY w)
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
 
2
2C#O_-
ff
-a
0
B
BCQ01
FMM(3
BC]+	+	, G&&1!4FFG G Gr  c                      t        t              d   j                  } d}t        | |       t        t        d      d   j                  } t        | |       y )Nr   g;On?)r   r   rL   )r   rT   solidityr   )r  target_soliditys     r9   test_solidityr    sG    6"1%..HO/266215>>H/2r;   c                     t         } t        t        | d         d   }t        t        | dddf         d   }t        t        |       d   }t        j                  j                  |j                  t        j                  |j                               t        j                  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 y)
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    sa   9O
fof.E
Fq
IC
foc1Q3h.G
H
KC
fo
>q
ACJJ""rzz#*?*?@ JJ""rxx(=(=>q!tD 88C))*v{{n<<<88C))*v{{A.>>>>88C))*v{{O<Q<QRT<U.VVVV<RE u:!6!67777r;   c                     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          y )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TRS		
C c3' --=vNJ
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4
1a(#d)4r;   c            	          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         y )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	  7Oh8 .
?C	QSAY	B	QSAY	BR(+ G
.
@C	QSAY	B	QSAY	B63CWU	  2r(+!bhh&?"?@,>			  !bhh/G&H"HIG
.
@C	QSAY	B	QSAY	B63CWU	  2r(+,>			  'BHH5M,N"NOr;   c                  &   t        t        t              d   j                  } t	        j
                  g d      }t        | |       t        j                  t              5  t        t        d      d   j                   d d d        y # 1 sw Y   y xY w)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    st    
f.>
?
B
V
VC
((	

C c3'	+	, CFF+A.BBC C Cs   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          y )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    s   	V-=	>q	A	R	RB
((DDDD		
C b#& .
?CAq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-Aq	3t9-r;   c                     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       y )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	R	RB
((DDDD		
C b#& G
f.>
P	  .
@CD	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9-D	3q!9a8r;   c                      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        | |       y )
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  sk    
f.>
?	!!  ((VVRVV\=9VV]L-@FG		
C c3'r;   c                  r   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       y )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	!!  HHVVRVV\=9VV]L-@FG		
 D	<0D	=1D	=1D	<0D	=1D	<0D	=1D	<0D	=1D	=1D	=1D	<0D	=1r;   c                      t        t              d   } t        j                  ddg      }t        t        |      d   }t	        | j
                  |j
                  |z
         y )Nr   i   i   )offset)r   rT   r2   r   r   r   )r  r  props_offsets      r9   test_offset_featuresr    sM    "EXXtTl#Fvf5a8LENNL$9$9F$BCr;   c                      t        j                  dt              } d| d d d d f<   t        |       }t	        |      dk(  sJ |d   j
                  dk(  sJ y )Nr  r    r   r   r   )r2   emptyrj   r   r  r(  apss     r9   test_label_sequencer    sN    
s#AAadG	QBr7a<<a5;;!r;   c                  p    t        j                  dt              } t        |       }t	        |      dk(  sJ y )Nr  r    r   )r2   ri   rj   r   r  r  s     r9   test_pure_backgroundr    s+    
s#A	QBr7a<<r;   c                      t        t              fd} t        j                  t              5   |         d d d        y # 1 sw Y   y xY w)Nc                  $     d   j                    y 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	c                      t        j                  dgdgg      } t        j                  t              5  t        t        |        d d d        y # 1 sw Y   y xY wNr   )r2   r   rl   rm   r   r   rT   )wrong_intensity_samples    r9   test_invalid_sizer    sE    XXsQCj1	z	" 4F234 4 4s   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	        ||k7  d	d       y )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r4!BCr;   c                      t        t              d   } | D ci c]  }|| |   
 }}t        t        t              d   } | D ci c]  }|| |   
 }}t        |      t        |      k  sJ y c c}w c c}w )Nr   rI  )r   rT   rU   r  )rZ   r4   p0p1s       r9   test_iterate_all_propsr    sy     #F &	'1!VAY,	'B	'1AB1EF &	'1!VAY,	'B	'r7SW 
( 
(s   A+A0c                     t         j                         } t        |       d   }|j                  }d|j                  d d |j                  }t        ||       d|_        |j                  }t        j                  ||k7        sJ y )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66"(r;   c                      t         j                         } t        | d      d   }|j                  }|j                  t               k(  sJ y )NF)cacher   )rT   r   r   r3  _cachedict)r   rZ   _s      r9   test_disabled_cache_is_emptyr    s?    J51!4FA ==DF"""r;   c                     d } t        | j                        }t        t              d   }t	               }t        |      D cg c]  }|j                  d      r| }}t        |      }t        |      }|r7t        ||       |d   }d|vsJ t        |j                  d            dkD  sJ y t        |d       y c c}w )Nc                       y)fooNrq   rq   r;   r9   r  z&test_docstrings_and_props.<locals>.foo  s    r;   r   r  r  	iteration
r   )
rp   __doc__r   rT   r   dir
startswithr  r   split)	r  has_docstringsrZ   docsra  r  nr_docs_parsednr_propsdss	            r9   test_docstrings_and_propsr    s     #++&N #F=DF=11<<+<Q=E=YN5zH^X./0"$$$288D>"Q&&&^Q' >s   B;B;c            	      `   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 y 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
VC1#"((A3-((A3-((B4.((B4.   r;   c            	      4   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 y r  )r   rT   r2   r   r"  s    r9   test_regionprops_tabler&    s    
F
#C1#((A3-((A3-((B4.((B4.    F/HTW
XC1#"((A3-((A3-((B4.((B4.   r;   c                  v    t        t        d      } | j                         D ]  }|j                  d      rJ  y )N)local_centroidr  r(  )r   rT   keysr  )r"  keys     r9   1test_regionprops_table_deprecated_vector_propertyr,  $  s7    
F/B
CCxxz 0~~.///0r;   c                  d    t        t        d      } t        | j                               dgk(  sJ y )N)r   r)  r   )r   rT   listr*  r%  s    r9   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        |||   |          Mt        |t        j                        r|j                  nt!        |      f}t        j"                  |      D ]O  }dj%                  t'        t(        |f|z               }	t!        |      dkD  r|n|d   }
t+        ||
   ||	   |          Q   y )Nr)  -r   r   )r   rT   INTENSITY_FLOAT_SAMPLEr   r   r*  items	enumerater2   isscalarr   object_r   
isinstancendarrayr=   r  ndindexjoinmapstrr   )r  	out_tabler[   r!   iregrpr=   indmodified_proplocs              r9   (test_regionprops_table_equal_to_originalrD  0  s   &"89G!&:??3DI "'') 
Ge( 		GFAsTB{{2$."8ERZZ<O"2yq'9:$.r2::$>SWJ::e, GC$'HHStgm-D$EM!$SA#3q6C C)M*B1*EFG		G
Gr;   c                  V   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 y )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_regionsrF  C  s    

s#0IUXC s8q==s7|!!!s6{q   s8}"""s8}"""s8}"""s8}"""r;   c            
      8   d} t        t        t              d   }t        D ]  }||   }|t        v rt        |   t
        k(  sJ #t        t        j                  |      d         }t        j                  |t        j                        r*t        |   t        k(  ryJ | d| d|  dt        |           t        j                  |t        j                        r*t        |   t        k(  rJ | d| d|  dt        |           J | d| d|  dt        |            y )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_correctrR  P  s   
(C1AB1EF E3K. c?f,,,!Q ==BKK(c?e+WuGA3auAjQToEV-WW+]]1bjj)c?c)UcU'!AcU!JsOCT+UU)DSE1SE:c?2CDD5Er;   c                  6   t        j                  d      } | j                  t              }|d   }t	        d |      }d}|D ch c]'  }t        j                  ||      j                  d      ) }}t        t        j                               }||k(  sJ y c c}w )Nznumpydoc.docscrapeNotesc                 $    | j                  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_]+)\*\*.*property_name)rl   importorskipFunctionDocr   filterresearchgroupsetr   r*  )numpydoc_docscrape	docstringnotes_linesproperty_linespatternproperty_lineproperty_namescolumn_keyss           r9   'test_all_documented_items_in_col_dtypesrg  d  s    ,,-AB"..{;IG$K>LN5G , 			'=)//@N  joo'(K.(((s   ,Bc                 ,    t        j                  |       S )z"a short test for an extra propertyr1   
regionmasks    r9   
pixelcountrk  r  s    66*r;   c                 2    t        j                  ||          S r0   )r2   median)rj  r  s     r9   intensity_medianrn  w  s    99_Z011r;   c                 (    dg| j                   d   z  S )z=Extra property whose output shape is dependent on mask shape.r   )r=   ri  s    r9   	bbox_listrp  {  s    3!!!$$$r;   c                      yr  rq   )rj  r  superfluouss      r9   too_many_argsrs        r;   c                       yr  rq   rq   r;   r9   too_few_argsrv    rt  r;   c                      t        t        t        f      d   } | j                  t        j                  t        dk(        k(  sJ y )Nextra_propertiesr   r   )r   rT   rk  r2   r3   rZ   s    r9   test_extra_propertiesr{    s6    :-@CFv{ 3333r;   c                      t        t        t        t        f      d   } | j                  t	        j
                  t        t        dk(           k(  sJ y N)r   ry  r   r   )r   rT   rU   rn  r2   rm  rz  s    r9   test_extra_properties_intensityr~    sI     0DTCV	F ""bii0@10M&NNNNr;   intensity_propc                     t        t              d   }t        j                  t              5 }t        ||        d d d        d|  d}|t        j                        k(  sJ y # 1 sw Y   *xY w)Nr   zAttribute 'z<' unavailable when `intensity_image` has not been specified.)r   rT   rl   rm   r  rV   r<  value)r  rZ   eexpected_errors       r9   test_intensity_image_requiredr    so     #F	~	& (!'( n% & 	  S\)))( (s   A""A+c                      t        j                  t              5  t        t        t
        f      d   } | j
                  }d d d        y # 1 sw Y   y xY wNrx  r   )rl   rm   r  r   rT   rn  rZ   r  s     r9   +test_extra_properties_no_intensity_providedr    sC    	~	& $V7G6IJ1M##$ $ $s   &A		Ac                  P   t        j                  t              5  t        t        t
        f      d   } | j
                  }d d d        t        j                  t              5  t        t        t        f      d   } | j                  }d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY wr  )rl   rm   r  r   rT   rv  rs  r  s     r9   test_extra_properties_nr_argsr    s    	~	&  V|oFqI  
~	& !V}6FGJ  ! !   ! !s   &B!&BB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 y r}  )r   rT   rU   rn  rk  r2   rm  r3   rz  s    r9   test_extra_properties_mixedr    sn    (*J7 		F
 ""bii0@10M&NNNNv{ 3333r;   c                  h   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 y )Nr)  )r   r  ry  rn  r%   r  rk  r   r   rp  r   r   )r   SAMPLE_MULTIPLEINTENSITY_SAMPLE_MULTIPLErn  rk  rp  r   r2   r   r   r!   r6  r%  s    r9   test_extra_properties_tabler    s    
1*J	B	C c"45rxxc
7KLs<("((B7*;<{!!RZZ///{A1#(***{A1#')))r;   c                  .   t        j                         ddddddf   } | d   }t        | j                  t              d      }t        j                  |      dz  }t        ||t        g      |   }t        || t        g      |   }t        t        j                               dgz   D ]i  }||   }||   }t        j                  |      t        j                  |      k(  rt        ||       Et        |t        j                  |      d   d	d	
       k y)z2Test that computing multichannel properties works.Nr   ).r   r   )start_labelr   rx  rn  g-q=r  )r   	astronautr   r  rn   r2   maxr   rn  r.  r   r*  r=   r   r   asarray)	astroastro_greenlabelssegment_idxrZ   region_multir[   r4   p_multis	            r9   test_multichannelr    s    NNSqS#A#X&E-K%,,u%15F&&.A%K@P?QRF vu@P?QRL UZZ\"&8%99 	T4Lt$88A;"((7++q'* Arzz'26:US	Tr;   c                  \   d} t        j                  |  j                  t              }t	        j
                  |g dd      }t        j                  g dd      }t        j                  ||j                        }t        |      d   }|j                  }t        |      }t        | D cg c]  }d	|z  	 c}d
      }t        ||      D ]  \  }}	t!        |	|z
        d|z  k  rJ  t!        |j"                  |d   z
        dk  sJ t!        |j$                  |d   z
        dk  sJ yc c}w )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   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  Rr@  evsaxis_lengthshexpected_lengthsax_len_expectedax_lens
             r9   test_3d_ellipsoid_axis_lengthsr    s+     L%,,S1A 	q:LA 	$$oaPAQ)A 
Q	B 
#
#C6s;Ll;q1u;TJ#&'7#F F6O+,to/EEEEF
 r##l1o56===r##l2&667$>>> <s   )D)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 y )Nrh   r    r   r   r"   )r2   ri   rj   r   r  pickledumpsloads)label_imager  pickled	unpickleds       r9   test_pickling_region_propertiesr    sv     ((83/KK1Q3+&Gw<1 ll71:&GW%I1:"""r;   )r(   )rD   )rv  r  r[  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   r2  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#  r&  r,  r/  rD  rF  rR  rg  rk  rn  rp  rs  rv  r{  r~  r  r  r  r  r  r  r  r  rq   r;   r9   <module>r     sW     	     * ) #    &	>>>>>>>>>>
 ;;=  AbD )..077

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