o
    jXF                     @   s  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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	d
 Zdd Zdd Zej !dee"ejgej !dee"ejgdd Z#dd Z$dd Z%dd Z&dd Z'dd Z(eg dg dg dg d g dg d!g d"g d!geZ)d#d$ Z*d%d& Z+d'd( Z,d)d* Z-d+d, Z.d-d. Z/d/d0 Z0d1d2 Z1d3d4 Z2G d5d6 d6Z3dS )7    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                  C   s8   t g dg dg dgt} ttdd}t||  d S )N)r   r   r   r   r   r      min_sizenparrayboolr   
test_imager   expectedobserved r   c/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/morphology/tests/test_misc.pytest_one_connectivity    s   r   c                  C   s:   t g dg dg dgt} ttddd}t||  d S )Nr   r         )r   connectivityr   r   r   r   r   test_two_connectivity&   s   r   c                  C   *   t  } t| d| d}t|| u dd d S )Nr   r   outTz.remove_small_objects in_place argument failed.)r   copyr   r	   imager   r   r   r   test_in_place,   
   
r&   in_dtype	out_dtypec                 C   sv   t j| dd}tjt |d}|tkrdg}ng }t| t|d|d}W d    n1 s.w   Y  ||u s9J d S )NT)r#   dtypezOnly one label was providedr   r!   )r   astyper   
empty_liker   r
   r   )r(   r)   r%   expected_outZexp_warnr"   r   r   r   test_out4   s   
r/   c                  C   sf   t jg dg dg dg dgtd} t jg dg dg dg dgtd}t| dd}t|| d S N)r   r   r   r   r   )r   r   r   r   r   )r   r      r1   r1   r*   )r   r   r   r   r   r1   r   )r   r   intr   r   Zlabeled_imager   r   r   r   r   test_labeled_imageF   s   r4   c                  C   sj   t jg dg dg dg dgt jd} t jg dg dg dg dgt jd}t| dd}t|| d S r0   )r   r   uint8r   r   r3   r   r   r   test_uint_imageQ   s   r6   c                  C   sZ   t g dg dg dgt} tdg t| dd W d    d S 1 s&w   Y  d S )Nr   r   use a boolean array?r   r   )r   r   r2   r
   r   )r%   r   r   r   test_single_label_warning^   s   "r8   c                  C   F   t jdd} tt t|  W d    d S 1 sw   Y  d S N   )r   randomrandr   raises	TypeErrorr   Z
float_testr   r   r   test_float_inputd      
"rA   c                  C   sJ   t jjdddd} tt t|  W d    d S 1 sw   Y  d S )N)r;   r;   size)r   r<   randintr   r>   
ValueErrorr   )Znegative_intr   r   r   test_negative_inputj   s   
"rI   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   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                  C   sV   t 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 )NrJ   rK   rN   r1   area_thresholdr   r   r   r   test_holes_imager   r   r   r   r   test_one_connectivity_holes   s   
rS   c                  C   sX   t g dg dg dg dg dg dg dg dgt} ttddd}t||  d S )	NrJ   rK   rL   rM   rN   r1   r   )rP   r   rQ   r   r   r   r   test_two_connectivity_holes   s   
rT   c                  C   r    )Nr1   rP   r"   Tz,remove_small_holes in_place argument failed.)rR   r#   r   r	   r$   r   r   r   test_in_place_holes   r'   rV   c                  C   s0   t  } t| }t| d|d}||u sJ d S )Nr1   rU   )rR   r#   r   r-   r   )r%   r.   r"   r   r   r   test_out_remove_small_holes   s   
rW   c                  C   sT   t  } tj| td}tt t| d|d W d    d S 1 s#w   Y  d S )Nr*   r1   rU   )	rR   r#   r   r-   r2   r   r>   r?   r   )r%   r.   r   r   r   test_non_bool_out   s
   "rX   c               
   C   s   t jg dg dg dg dg dg dg dg dgtd} t jg dg dg dg dg dg dg dg dgtd}td	g t| d
d}W d    n1 sTw   Y  t|| d S NrJ   rK   rL   rM   
r   r   r   r   r   r   r   r   r   r   
r   r   r   r   r   r   r   r   r   r   r*   rN   zreturned as a boolean arrayr1   rO   )r   r   r2   r   r
   r   r   labeled_holes_imager   r   r   r   r   test_labeled_image_holes   s8   

r^   c               
   C   s   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}td	g t| d
d}W d    n1 sUw   Y  t|| d S rY   )r   r   r5   r   r
   r   r   r\   r   r   r   test_uint_image_holes   s8   

r_   c               
   C   s   t jg dg dg dg dg dg dg dg dgtd} tdg t| d	d
 W d    n1 s5w   Y  t| td	d
 d S )NrJ   rK   rL   rM   rZ   r[   r*   r7   r1   rO   )r   r   r2   r
   r   r,   r   )r]   r   r   r   test_label_warning_holes   s    
r`   c                  C   r9   r:   )r   r<   r=   r   r>   r?   r   r@   r   r   r   test_float_input_holes  rB   ra   c                   @   sp  e Zd Zejdg dejdedd Zejdeejdddgd	d
 Zejdg ddd Z	ejdg dejddde
jgdd Zejdddgejdedd Zdd Zdd Zejdddgdd Zejdd d!gd"d# Zd$d% Zejd&d'gd(d) Zd*d+ Zd,d- Zd.d/ Zejd0d1d2d3ddggdgd4d5 Zd6S )7Test_remove_near_objectsmin_distance)g @r;   g=
ףp>@1   r+   c                 C   s   t t|}tj|d d |d}d|d|d| d| d g< tjj||d\}}| }d||< t||}|j	|j	ks?J t
|| d S )Nr1   r   r*   r   r   )output)r2   r   floorZzerosspndimager   r#   r   r+   r   )selfrc   r+   dlabels_desiredresultr   r   r   test_min_distance_1d  s   
z-Test_remove_near_objects.test_min_distance_1dorderCFc              
   C   s   t jg dg dg dg dg dg dg dg dg||d	}t d
}t jg dg dg dg dg dg dg dg dg|d}t|d|d}|jd sRJ t|| d S )N)   r   r   r   r   r   r   r   r   	   rt   )rs   rs   rs   r   r   r   r   r   r   rt   rt   )r   r   r   r   r   r   r   r   rt   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r1   r   r   r   r;   r   r   r   r   )r   r   r   r   r   r;   r   r   r   r   r   )r   r   r   r   r   r;   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r+   rp   
   )r   r   r   r   r   r   r   r   r   r   r   r*   r1   priorityZC_CONTIGUOUS)r   r   aranger   flagsr   )ri   r+   rp   r   rw   rm   rn   r   r   r   test_handcrafted_2d#  s:   


z,Test_remove_near_objects.test_handcrafted_2dndim)r   r   r1      r;   c                 C   s`   d| }t j|t jd}d|d< tj|\}}| }d|dd df< t|d}t|| d S )N)r;   r*   r   ).r}   .r   )	r   onesr5   rg   rh   r   r#   r   r   )ri   r{   shapeark   rl   rm   rn   r   r   r   test_large_objects_ndF  s   
z.Test_remove_near_objects.test_large_objects_nddistance)r;   2   d   p_normr   r   c           
      C   s   t jd}|jdd}t|}t|}t|||d}tjt j	t 
|t jd }|j|||d}	|	 dks<J |j||d |d}	|	 dksNJ d S )	Ni3$f)  r   rE   r   r*   )Zmax_distancepr   r   )r   r<   Zdefault_rngr   r   r   rg   ZspatialZcKDTreer   ZnonzeroZfloat64Z	transposeZsparse_distance_matrixZcount_nonzero)
ri   r   r   rngr%   maximaobjectsZspaced_objectsZkdtreeZ	distancesr   r   r   test_randomR  s    
z$Test_remove_near_objects.test_randomvaluer   c                 C   s0   t jd|d}|| t|d}t|| d S )N)ru   ru   r*   r1   )r   emptyfillr   r   )ri   r   r+   rk   rn   r   r   r   test_constantl  s   

z&Test_remove_near_objects.test_constantc                 C   s&   t jdtd}t|d}t|| d S )N)r1   r1   r   r*   r1   )r   r   r2   r   r	   )ri   rk   rn   r   r   r   
test_emptyu  s   
z#Test_remove_near_objects.test_emptyc                 C   s   t g d}t|d}t g d}t|| t g d}t|d|d}t g d}t|| t g d}t|d|d}t g d}t|| d S )N)r   r   r|   r   r1   )r   r   r   r   )r   r   r   r   r   rv   )r   r   r|   r   )r   r   r   r   rD   )r   r   r   r   )ri   rk   rn   rm   rw   r   r   r   test_priorityz  s   


z&Test_remove_near_objects.test_priorityc                 C   s   t jg dg dg|d}t jg dg dg|d}|j|d}t|d t|| t|d|d |j| d s;J t|| d S )Nr   r   r   )rp   )r   r   r   r   )r"   Z_CONTIGUOUS)r   r   r#   r   r   ry   )ri   rp   Zlabels_originalrm   rk   r   r   r   r/     s   

z!Test_remove_near_objects.test_outigc                 C   sL   t g d}tjtdd t|| W d    d S 1 sw   Y  d S )Nr   zmust be >= 0match)r   r   pytestr>   rH   r   )ri   rc   rk   r   r   r   test_negative_min_distance  s   "z3Test_remove_near_objects.test_negative_min_distancec                 C   s   t ddgddgg}t ddgddgg}t|d}t|| t|t d}t|| t|ddd}t|| t|ddd}t|| t|dt jd}t|| t|dt jd}t|| d S )	Nr   r   r   gffffff?gffffff?)rc   r   r   g?)r   r   r   r   sqrtinf)ri   rk   Zremovedrn   r   r   r   test_p_norm  s$   





z$Test_remove_near_objects.test_p_normr   r   c                 C   s*  t tg ddtdd t tg ddtdd d}tjt|d t tg ddtdd W d    n1 sAw   Y  tjt|d t tg ddtdd W d    n1 sgw   Y  tjt|d t tg ddtdd W d    d S 1 sw   Y  d S )	N)r   r   r   r1   r   rv   r   z=shape of `priority` must be \(np\.amax\(label_image\) \+ 1,\)r   )r   r   r   )r   r   r   r~   r   r>   rH   )ri   r   	error_msgr   r   r   test_priority_shape  s      "z,Test_remove_near_objects.test_priority_shapec                 C   sj   t g dg dg dg dg}tjtdd t|dt dd	 W d    d S 1 s.w   Y  d S )
N)r   r   rD   r   r   r   )r   r   r1   r   r   r   r   r   r   r   r   r   r1   r1   r1   r1   r1   r1   z.*object with negative IDr   r   r|   rv   )r   r   r   r>   rH   r   r~   )ri   rk   r   r   r   test_negative_label_ids  s   "z0Test_remove_near_objects.test_negative_label_idsc                 C   sf   t g dg dg dg dg}t g dg dg dg dg}t|dt dd}t|| d S )Nr   r   )r   r   r   r   r   r   r   r|   rv   )r   r   r   rx   r   )ri   rk   rm   rn   r   r   r   test_objects_with_inside  s    z1Test_remove_near_objects.test_objects_with_insidec                 C   s   t jg dg dg dg dgtd}t|ddd}t jg dg dg dg dgtd}t j|| t|dd	d}t jg d
g dg dg dgtd}t j|| d S )Nr   r   r   r   r   r   r   r   r1   r   r   r|   r*   r1   )r   r1   spacingr   )r   gUUUUUU?)r   r   r   r   )r   r   r   r|   )r   r   r2   r   r   r   )ri   rk   rn   r   r   r   r   test_spacing  s   z%Test_remove_near_objects.test_spacingr   )rD   rD   r   )r   r   r   c                 C   sl   t jg dg dg dg dgtd}d}tjt|d t|d|d W d    d S 1 s/w   Y  d S )	Nr   r   r   r*   z=.*must contain exactly one positive factor for each dimensionr   r1   r   )r   r   r2   r   r>   rH   r   )ri   r   rk   regexr   r   r   test_spacing_raises  s   "z,Test_remove_near_objects.test_spacing_raisesN)__name__
__module____qualname__r   markparametrizesupported_dtypesro   rz   r   r   r   r   r   r   r   r/   r   r   r   r   r   r   r   r   r   r   r   rb     sB    !



rb   )4numpyr   r   Zscipyrg   Zskimage.morphologyr   r   r   r   r   Zskimage._sharedr   Zskimage._shared.testingr   r	   Zskimage._shared._warningsr
   r   r   r   r5   Zuint16Zuint32Zint8Zint16Zint32Zint64r   r   r   r&   r   r   r2   r/   r4   r6   r8   rA   rI   rR   rS   rT   rV   rW   rX   r^   r_   r`   ra   rb   r   r   r   r   <module>   sb    
  