
    1-PhXF                     j   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j        ej        ej        ej        gZd	 Zd
 Zd Zej         !                    dee"ej        g          ej         !                    dee"ej        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$          Z3dS )%    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          ||            d S )N)r   r   r   r   r   r      min_sizenparrayboolr   
test_imager	   expectedobserveds     b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/morphology/tests/test_misc.pytest_one_connectivityr       sN    x///???KTRRH#J;;;Hx*****    c                      t          j        g dg dg dgt                    } t          t          dd          }t          ||            d S )Nr   r         )r   connectivityr   r   s     r   test_two_connectivityr"   &   sP    x///???KTRRH#JKKKHx*****r   c                      t                                           } t          | d|           }t          || u dd           d S )Nr   r   outTz.remove_small_objects in_place argument failed.)r   copyr   r
   imager   s     r   test_in_placer)   ,   sN    OOE#EA5AAAHE4!Q    r   in_dtype	out_dtypec                    t                               | d          }t          j        t           |          }|t          k    rdg}ng }t          |          5  t          |d|          }d d d            n# 1 swxY w Y   ||u sJ d S )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22E=9===LD12	8	$	$ H H"51,GGGH H H H H H H H H H H H H H H ,s   A77A;>A;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	          ||           d S 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   s    H	///???OOOLTW  M x	///???OOO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	          ||           d S r5   )r   r   uint8r   r	   r8   s      r   test_uint_imager=   Q   s    H	///???OOOLh  M x	///???OOOLh  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            d S # 1 swxY w Y   d S )Nr   r   use a boolean array?r   r   )r   r   r7   r   r   )r(   s    r   test_single_label_warningr@   ^   s    HoooH#NNE	23	4	4 0 0UQ////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   AAAc                      t           j                            dd          } t          j        t
                    5  t          |            d d d            d S # 1 swxY w Y   d S N   )r   randomrandr   raises	TypeErrorr   
float_tests    r   test_float_inputrJ   d   s    1%%J			"	" ) )Z((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )   AAAc                      t           j                            ddd          } t          j        t
                    5  t          |            d d d            d S # 1 swxY w Y   d S )N)rC   rC   size)r   rD   randintr   rF   
ValueErrorr   )negative_ints    r   test_negative_inputrT   j   s    9$$R&$99L	
	#	# + +\***+ + + + + + + + + + + + + + + + + +s   A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          ||            d S )NrU   rV   rY   r6   area_thresholdr   r   r   r   test_holes_imager	   r   s     r   test_one_connectivity_holesr_      s    x************************		
 	 H ""21EE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          ||            d S )	NrU   rV   rW   rX   rY   r6   r    )r\   r!   r]   r   s     r   test_two_connectivity_holesra      s    x************************		
 	 H ""21STUUUHx*****r   c                      t                                           } t          | d|           }t          || u dd           d S )Nr6   r\   r%   Tz,remove_small_holes in_place argument failed.)r^   r&   r   r
   r'   s     r   test_in_place_holesrd      sP    !!##E!%uEEEHE4!O    r   c                      t                                           } t          j        |           }t	          | d|          }||u sJ d S )Nr6   rc   )r^   r&   r   r0   r   )r(   r1   r%   s      r   test_out_remove_small_holesrf      sM    !!##E=''L
U1,
G
G
GC,r   c                      t                                           } t          j        | t                    }t          j        t                    5  t          | d|           d d d            d S # 1 swxY w Y   d S )Nr-   r6   rc   )	r^   r&   r   r0   r7   r   rF   rG   r   )r(   r1   s     r   test_non_bool_outrh      s    !!##E=c222L			"	" F F5EEEEF F F F F F F F F F F F F F F F F Fs   A..A25A2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            n# 1 swxY w Y   t          ||           d S 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      sx   (************************		
    x************************		
   H 
9:	;	; M M%&9!LLLM M M M M M M M M M M M M M Mx*****s   7BBBc                  n   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            n# 1 swxY w Y   t          ||           d S rj   )r   r   r<   r   r   r   r	   rm   s      r   test_uint_image_holesrq      sz   (************************		
 h   x************************		
   H 
9:	;	; M M%&9!LLLM M M M M M M M M M M M M M Mx*****s   <BB!Bc                  0   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            n# 1 swxY w Y   t	          |                     t                    d	
           d S )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	4 B B.qAAAAB B B B B B B B B B B B B B B*11$77JJJJJJs   A""A&)A&c                      t           j                            dd          } t          j        t
                    5  t          |            d d d            d S # 1 swxY w Y   d S 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                            dg d          ej                            de          d                         Zej                            de          ej                            dddg          d                         Zej                            d	g d
          d             Z	ej                            dg d          ej                            ddde
j        g          d                         Zej                            dddg          ej                            de          d                         Zd Zd Zej                            dddg          d             Zej                            dddg          d             Zd Zej                            ddg          d             Zd Zd  Zd! Zej                            d"d#d$d%ddggdg          d&             Zd'S )(Test_remove_near_objectsmin_distance)g @rC   g=
ףp>@1   r.   c                    t          t          j        |                    }t          j        |dz  dz   |          }d|d|d|z  d|z  dz   g<   t          j                            ||          \  }}|                                }d||<   t          ||          }|j	        |j	        k    sJ t          ||           d S )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11+,1a!eQUQY'(J$$VE$::	++--
+FLAA|w},,,,67+++++r   orderCFc                 J   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          ||           d S )N)   r   r   r   r   r   r   r   r   	   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   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1111111111111111	 
 
 
 9R==(111111111111111111111111	 
 
 
 ,E1xHHH|N++++67+++++r   ndim)r   r    r6      rC   c                    d|z  }t          j        |t           j                  }d|d<   t          j                            |          \  }}|                                }d|dd df<   t          |d          }t          ||           d S )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  s    tGE***'
J$$Q''	++--S+FA6667+++++r   distance)rC   2   d   p_normr   r    c                 `   t           j                            d          }|                    d          }t          |          }t	          |          }t          |||          }t          j                            t          j	        t          j
        |          t           j                                                            }|                    |||          }	|	                                dk    sJ |                    ||dz   |          }	|	                                dk    sJ d S )	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'    i##J//



++e$$--3GXfUUU##HRZ//rzBBBLLNN
 

 11V 2 
 
	 &&((A---- 11A 2 
 
	 &&((1,,,,,,r   valuer   c                     t          j        d|          }|                    |           t          |d          }t	          ||           d S )N)r   r   r-   r6   )r   emptyfillr   r	   )r   r   r.   r   r   s        r   test_constantz&Test_remove_near_objects.test_constantl  sO     (%000E+FA6666*****r   c                 |    t          j        dt                    }t          |d          }t	          ||           d S )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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          ||           d S )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6(<<<((67+++ 8OOO,,+FAIII(<<<((67+++ 8,,,--+FAIII(<<<((67+++++r   c                 J   t          j        g dg dg|          }t          j        g dg dg|          }|                    |          }t          |d           t	          ||           t          |d|           |j        | d         sJ t	          ||           d S )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    (IIIyyy#9GGG(IIIyyy1??? !%%E%22"61---6?333 	#61&9999|u111222267+++++r   igc                     t          j        g d          }t          j        t          d          5  t          ||           d d d            d S # 1 swxY w Y   d S )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Ac                 J   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          ||           d S )	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866***+FBGAJJ??67+++ ,
 
 

 	66***+FAa@@@67+++ ,FCGGG66***+FAbfEEE67+++++r   r   r   c                 n   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            n# 1 swxY w Y   t	          j        t          |          5  t          t          j        g d          dt          j        d                     d d d            n# 1 swxY w Y   t	          j        t          |          5  t          t          j        g d          dt          j        d                     d d d            d S # 1 swxY w Y   d S )	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  sf    	#28III#6#6BGDMMRRRR"28III#6#6BGDMMRRRRT	]:Y777 	W 	W&rx			':':APTVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W]:Y777 	W 	W&rx			':':APTVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W]:Y777 	W 	W&rx			':':APTVVVV	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	W 	Ws6   9CCC99D>>EE$9F**F.1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            d S # 1 swxY w Y   d S )
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II 	G 	G&vq271::FFFF	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   %A..A25A2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	          ||           d S )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  s    """"""""""""	
 
 (""""""""""""	
 
 ,FA	!MM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                            ||           t          |dd	          }t          j        g d
g dg dg dgt                    }t           j                            ||           d S )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FF8\\<<<|||DC
 
 
 	
%%fh777 ,FAzJJJ8\\<<<|||DC
 
 
 	
%%fh7777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            d S # 1 swxY w Y   d S )	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  s    \\<<<|||DC
 
 
 P]:U333 	C 	C&vq'BBBB	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   A%%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A[W&677, , 87 BA, [W&677[WsCj11, , 21 87,B [V___55	, 	, 65	, [Z66[X1bf~66- - 76 76-0 [Wq!f--[W&677+ + 87 .-+% % %
, , ,( [WsCj11, , 21, [^c4[99= = :9=
, , ,4 [	
 
W 
W 
W
G 
G 
G, , ,(8 8 8& [Y4aVHa(PQQC C RQC C 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      s                         $ # # # # # D D D D D D D D 7 7 7 7 7 7 RXI4PP
 HIIGHHH + + ++ + +   dC%:;;tS"(&;<<  =< <; + + +
+ 
+ 
+0 0 0) ) )+ + + 28&&&&&&&&&&&&&&&&&&&&&&&&	 	  + + +$+ + +$    F F F+ + +@+ + +@K K K&' ' 'vC vC vC vC vC vC vC vC vC vCr   