
    _hXF                        d dl Zd dlZd dlZd dlmZmZmZm	Z	m
Z
 d dlmZ d dlmZmZ d dlmZ  ej$                  g dg dg dge      Zej*                  ej,                  ej.                  ej0                  ej2                  ej4                  ej6                  gZd	 Zd
 Zd Zej@                  jC                  dee"ej4                  g      ej@                  jC                  dee"ej4                  g      d               Z#d Z$d Z%d Z&d Z'd Z( ej$                  g dg dg dg dg dg dg dg dge      Z)d Z*d Z+d Z,d Z-d Z.d Z/d  Z0d! Z1d" Z2 G d# d$      Z3y)%    N)remove_small_objectsremove_small_holesremove_objects_by_distancelocal_maximalabel)testing)assert_array_equalassert_equal)expected_warningsr   r   r      r   r   r   r   r   r   )r   r   r   r   r   c                      t        j                  g dg dg dgt              } t        t        d      }t        ||        y )N)r   r   r   r   r   r      min_sizenparrayboolr   
test_imager	   expectedobserveds     \/var/www/html/engine/venv/lib/python3.12/site-packages/skimage/morphology/tests/test_misc.pytest_one_connectivityr       s/    xx/?KTRH#J;Hx*    c                      t        j                  g dg dg dgt              } t        t        dd      }t        ||        y )Nr   r         )r   connectivityr   r   s     r   test_two_connectivityr"   &   s1    xx/?KTRH#JKHx*r   c                  f    t         j                         } t        | d|       }t        || u dd       y )Nr   r   outTz.remove_small_objects in_place argument failed.)r   copyr   r
   imager   s     r   test_in_placer)   ,   s1    OOE#EA5AHE4!Qr   in_dtype	out_dtypec                     t         j                  | d      }t        j                  t         |      }|t        k7  rdg}ng }t        |      5  t        |d|      }d d d        |u sJ y # 1 sw Y   xY w)NT)r&   dtypezOnly one label was providedr   r$   )r   astyper   
empty_liker   r   r   )r*   r+   r(   expected_outexp_warnr%   s         r   test_outr3   4   s}     hT2E==9=LD12	8	$ H"51,GH ,H Hs   A++A4c                      t        j                  g dg dg dg dgt              } t        j                  g dg dg dg dgt              }t        | d      }t	        ||       y N)r    r    r    r   r   )r    r   r   r   r   )r   r      r6   r6   r-   )r    r    r    r   r   r6   r   )r   r   intr   r	   labeled_imager   r   s      r   test_labeled_imager:   F   sV    HH	/?OLTWM xx	/?OLTWH $MA>Hx*r   c                      t        j                  g dg dg dg dgt         j                        } t        j                  g dg dg dg dgt         j                        }t        | d      }t	        ||       y r5   )r   r   uint8r   r	   r8   s      r   test_uint_imager=   Q   s^    HH	/?OLhhM xx	/?OLhhH $MA>Hx*r   c                      t        j                  g dg dg dgt              } t        dg      5  t	        | d       d d d        y # 1 sw Y   y xY w)Nr   r   use a boolean array?r   r   )r   r   r7   r   r   )r(   s    r   test_single_label_warningr@   ^   sD    HHoH#NE	23	4 0UQ/0 0 0s   AAc                      t         j                  j                  dd      } t        j                  t
              5  t        |        d d d        y # 1 sw Y   y xY wN   )r   randomrandr   raises	TypeErrorr   
float_tests    r   test_float_inputrJ   d   s?    1%J			" )Z() ) )   AAc                      t         j                  j                  ddd      } t        j                  t
              5  t        |        d d d        y # 1 sw Y   y xY w)N)rC   rC   size)r   rD   randintr   rF   
ValueErrorr   )negative_ints    r   test_negative_inputrT   j   sF    99$$R&$9L	
	# +\*+ + +s   AA
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   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                      t        j                  g dg dg dg dg dg dg dg dgt              } t        t        d      }t        ||        y )NrU   rV   rY   r6   area_thresholdr   r   r   r   test_holes_imager	   r   s     r   test_one_connectivity_holesr_      sK    xx********		
 	H ""21EHx*r   c                      t        j                  g dg dg dg dg dg dg dg dgt              } t        t        dd      }t        ||        y )	NrU   rV   rW   rX   rY   r6   r    )r\   r!   r]   r   s     r   test_two_connectivity_holesra      sN    xx********		
 	H ""21STUHx*r   c                  f    t         j                         } t        | d|       }t        || u dd       y )Nr6   r\   r%   Tz,remove_small_holes in_place argument failed.)r^   r&   r   r
   r'   s     r   test_in_place_holesrd      s3    !!#E!%uEHE4!Or   c                  ~    t         j                         } t        j                  |       }t	        | d|      }||u sJ y )Nr6   rc   )r^   r&   r   r0   r   )r(   r1   r%   s      r   test_out_remove_small_holesrf      s:    !!#E=='L
U1,
GC,r   c                      t         j                         } t        j                  | t              }t        j                  t              5  t        | d|       d d d        y # 1 sw Y   y xY w)Nr-   r6   rc   )	r^   r&   r   r0   r7   r   rF   rG   r   )r(   r1   s     r   test_non_bool_outrh      sQ    !!#E==c2L			" F5EF F Fs   	A!!A*c                  D   t        j                  g dg dg dg dg dg dg dg dgt              } t        j                  g dg dg dg dg dg dg dg dgt              }t	        d	g      5  t        | d
      }d d d        t        |       y # 1 sw Y   xY wNrU   rV   rW   rX   
r   r   r   r   r   r   r   r    r    r    
r   r   r   r   r   r   r   r    r   r    r-   rY   zreturned as a boolean arrayr6   r[   )r   r   r7   r   r   r   r	   labeled_holes_imager   r   s      r   test_labeled_image_holesro      s    ((********		
  xx********		
 H 
9:	; M%&9!LMx*M Ms   3BBc                  X   t        j                  g dg dg dg dg dg dg dg dgt         j                        } t        j                  g dg dg dg dg dg dg dg dgt              }t	        d	g      5  t        | d
      }d d d        t        |       y # 1 sw Y   xY wrj   )r   r   r<   r   r   r   r	   rm   s      r   test_uint_image_holesrq      s    ((********		
 hh xx********		
 H 
9:	; M%&9!LMx*M Ms   =B  B)c                     t        j                  g dg dg dg dg dg dg dg dgt              } t        dg      5  t	        | d	
       d d d        t	        | j                  t              d	
       y # 1 sw Y   *xY w)NrU   rV   rW   rX   rk   rl   r-   r?   r6   r[   )r   r   r7   r   r   r/   r   )rn   s    r   test_label_warning_holesrs      s{    ((********		
  
23	4 B.qAB*11$7JB Bs    A77B c                      t         j                  j                  dd      } t        j                  t
              5  t        |        d d d        y # 1 sw Y   y xY wrB   )r   rD   rE   r   rF   rG   r   rH   s    r   test_float_input_holesru     s?    1%J			" ':&' ' 'rK   c                      e Zd Zej                  j                  dg d      ej                  j                  de      d               Zej                  j                  de      ej                  j                  dddg      d               Zej                  j                  d	g d
      d        Z	ej                  j                  dg d      ej                  j                  ddde
j                  g      d               Zej                  j                  dddg      ej                  j                  de      d               Zd Zd Zej                  j                  dddg      d        Zej                  j                  dddg      d        Zd Zej                  j                  ddg      d        Zd Zd  Zd! Zej                  j                  d"d#d$d%ddggdg      d&        Zy')(Test_remove_near_objectsmin_distance)g @rC   g=
ףp>@1   r.   c                 v   t        t        j                  |            }t        j                  |dz  dz   |      }d|d|d|z  d|z  dz   g<   t        j
                  j                  ||      \  }}|j                         }d||<   t        ||      }|j                  |j                  k(  sJ t        ||       y )Nr6   r    r-   r   r   )output)r7   r   floorzerosspndimager   r&   r   r.   r	   )selfrx   r.   dlabels_desiredresults           r   test_min_distance_1dz-Test_remove_near_objects.test_min_distance_1d  s     &'!a%!)51+,1a!eQUQY'(JJ$$VE$:	++-
+FLA||w}},,,67+r   orderCFc                 B   t        j                  g dg dg dg dg dg dg dg dg||	      }t        j                  d
      }t        j                  g dg dg dg dg dg dg dg dg|      }t        |d|      }|j                  d   sJ t        ||       y )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   r6   r   r   r   rC   r   r   r   r   )r    r   r   r   r   rC   r   r   r   r   r   )r   r   r   r   r   rC   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r.   r   
   )r    r   r   r   r   r   r   r   r   r   r   r-   r6   priorityC_CONTIGUOUS)r   r   aranger   flagsr	   )r   r.   r   r   r   r   r   s          r   test_handcrafted_2dz,Test_remove_near_objects.test_handcrafted_2d#  s     11111111	 
 99R=((11111111	 
 ,E1xH||N+++67+r   ndim)r   r    r6      rC   c                    d|z  }t        j                  |t         j                        }d|d<   t        j                  j                  |      \  }}|j                         }d|dd df<   t        |d      }t        ||       y )N)rC   r-   r   ).r   .r    )	r   onesr<   r~   r   r   r&   r   r	   )r   r   shapear   r   r   r   s           r   test_large_objects_ndz.Test_remove_near_objects.test_large_objects_ndF  sq    tGGE*'
JJ$$Q'	++-S+FA667+r   distance)rC   2   d   p_normr   r    c                    t         j                  j                  d      }|j                  d      }t        |      }t	        |      }t        |||      }t        j                  j                  t        j                  t        j                  |      t         j                        j                               }|j                  |||      }	|	j                         dk(  sJ |j                  ||dz   |      }	|	j                         dkD  sJ y )	Ni3$f)  r   rO   r   r-   )max_distancepr   r   )r   rD   default_rngr   r   r   r~   spatialcKDTreer   nonzerofloat64	transposesparse_distance_matrixcount_nonzero)
r   r   r   rngr(   maximaobjectsspaced_objectskdtree	distancess
             r   test_randomz$Test_remove_near_objects.test_randomR  s     ii##J/



+e$-3GXfU##HHRZZ/rzzBLLN

 11V 2 
	 &&(A--- 11A 2 
	 &&(1,,,r   valuer   c                     t        j                  d|      }|j                  |       t        |d      }t	        ||       y )N)r   r   r-   r6   )r   emptyfillr   r	   )r   r   r.   r   r   s        r   test_constantz&Test_remove_near_objects.test_constantl  s6     (%0E+FA666*r   c                 j    t        j                  dt              }t        |d      }t	        ||       y )N)r6   r6   r   r-   r6   )r   r   r7   r   r
   )r   r   r   s      r   
test_emptyz#Test_remove_near_objects.test_emptyu  s(    )3/+FA6VV$r   c                    t        j                  g d      }t        |d      }t        j                  g d      }t        ||       t        j                  g d      }t        |d|      }t        j                  g d      }t        ||       t        j                  g d      }t        |d|      }t        j                  g d      }t        ||       y )N)r   r   r   r   r6   )r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   rN   )r   r   r   r	   )r   r   r   r   r   s        r   test_priorityz&Test_remove_near_objects.test_priorityz  s    ,' ,FA6((<(67+ 88O,+FAI((<(67+ 88,-+FAI((<(67+r   c                 (   t        j                  g dg dg|      }t        j                  g dg dg|      }|j                  |      }t        |d       t	        ||       t        |d|       |j
                  | d   sJ t	        ||       y )Nr   r   r    )r   )r   r   r    r    )r%   _CONTIGUOUS)r   r   r&   r   r	   r   )r   r   labels_originalr   r   s        r   r3   z!Test_remove_near_objects.test_out  s    ((Iy#9G((Iy1? !%%E%2"61-6?3 	#61&9||ug[122267+r   igc                     t        j                  g d      }t        j                  t        d      5  t        ||       d d d        y # 1 sw Y   y xY w)Nr   zmust be >= 0match)r   r   pytestrF   rR   r   )r   rx   r   s      r   test_negative_min_distancez3Test_remove_near_objects.test_negative_min_distance  s=    )$]]:^< 	=&v|<	= 	= 	=s   A		Ac                    t        j                  ddgddgg      }t        j                  ddgddgg      }t        |d      }t        ||       t        |t        j                  d            }t        ||       t        |dd      }t        ||       t        |dd      }t        ||       t        |dt         j
                        }t        ||       t        |dt         j
                        }t        ||       y )	Nr    r   r   gffffff?gffffff?)rx   r   r   g?)r   r   r   r	   sqrtinf)r   r   removedr   s       r   test_p_normz$Test_remove_near_objects.test_p_norm  s    Aq6Aq6*+((QFQF+, ,FC866*+FBGGAJ?67+ ,

 	66*+FAa@67+ ,FCG66*+FAbffE67+r   r   r   c                 D   t        t        j                  g d      dt        j                  d             t        t        j                  g d      dt        j                  d             d}t	        j
                  t        |      5  t        t        j                  g d      dt        j                  d             d d d        t	        j
                  t        |      5  t        t        j                  g d      dt        j                  d             d d d        t	        j
                  t        |      5  t        t        j                  g d      dt        j                  d             d d d        y # 1 sw Y   xY w# 1 sw Y   pxY w# 1 sw Y   y xY w)	N)r   r   r   r6   r   r   r   z=shape of `priority` must be \(np\.amax\(label_image\) \+ 1,\)r   )r   r   r   )r   r   r   r   r   rF   rR   )r   r   	error_msgs      r   test_priority_shapez,Test_remove_near_objects.test_priority_shape  s    	#288I#6BGGDMR"288I#6BGGDMRT	]]:Y7 	W&rxx	':APTV	W]]:Y7 	W&rxx	':APTV	W]]:Y7 	W&rxx	':APTV	W 	W		W 	W	W 	W	W 	Ws$   
7E>$7F
>7F>F
FFc                     t        j                  g dg dg dg dg      }t        j                  t        d      5  t        |dt        j                  d      	       d d d        y # 1 sw Y   y xY w)
N)r   r   rN   r    r    r    )r   r   r6   r    r    r    r   r   r   r    r    r    r6   r6   r6   r6   r6   r6   z.*object with negative IDr   r   r   r   )r   r   r   rF   rR   r   r   )r   r   s     r   test_negative_label_idsz0Test_remove_near_objects.test_negative_label_ids  s_    #"""	
 ]]:-HI 	G&vq2771:F	G 	G 	Gs   "A((A1c                     t        j                  g dg dg dg dg      }t        j                  g dg dg dg dg      }t        |dt        j                  d            }t	        ||       y )Nr   r   )r   r   r   r   r   r   r   r   r   )r   r   r   r   r	   )r   r   r   r   s       r   test_objects_with_insidez1Test_remove_near_objects.test_objects_with_inside  sd    """"	
 ((""""	
 ,FA		!M67+r   c                    t        j                  g dg dg dg dgt              }t        |dd      }t        j                  g dg dg dg dgt              }t         j                  j                  ||       t        |dd	      }t        j                  g d
g dg dg dgt              }t         j                  j                  ||       y )Nr   r   r   r    r   r   r   r   r6   r   r   r   r-   r6   )r   r6   spacingr   )r   gUUUUUU?)r   r   r   r    )r   r   r   r   )r   r   r7   r   r   r	   )r   r   r   r   s       r   test_spacingz%Test_remove_near_objects.test_spacing  s    <|DC

 ,FAvF88<|DC
 	

%%fh7 ,FAzJ88<|DC
 	

%%fh7r   r   )rN   rN   r   )r   r   r   c                     t        j                  g dg dg dg dgt              }d}t        j                  t
        |      5  t        |d|       d d d        y # 1 sw Y   y xY w)	Nr   r   r   r-   z=.*must contain exactly one positive factor for each dimensionr   r6   r   )r   r   r7   r   rF   rR   r   )r   r   r   regexs       r   test_spacing_raisesz,Test_remove_near_objects.test_spacing_raises  sY    <|DC
 P]]:U3 	C&vq'B	C 	C 	Cs   AA&N)__name__
__module____qualname__r   markparametrizesupported_dtypesr   r   r   r   r   r   r   r   r   r3   r   r   r   r   r   r   r    r   r   rw   rw     s   [[^-@A[[W&67, 8 B, [[W&67[[WsCj1, 2 8,B [[V_5	, 6	, [[Z6[[X1bff~6- 7 7-0 [[Wq!f-[[W&67+ 8 .+%
,( [[WsCj1, 2, [[^c4[9= :=
,4 [[	

W
W
G,(8& [[Y4aVHa(PQC RCr   rw   )4numpyr   r   scipyr~   skimage.morphologyr   r   r   r   r   skimage._sharedr   skimage._shared.testingr	   r
   skimage._shared._warningsr   r   r   r   r<   uint16uint32int8int16int32int64r   r   r"   r)   r   r   r7   r3   r:   r=   r@   rJ   rT   r^   r_   ra   rd   rf   rh   ro   rq   rs   ru   rw   r   r   r   <module>r      si       $ D 7 RXXI4P
 HHIIIIGGHHHHHH ++ dC%:;tS"((&;< = < +
+0)+ 288&&&&&&&&	 	 +$+$F+@+@K&'vC vCr   