o
    jP                     @   sv   d dl Zd dlmZmZmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZmZ dZdd	d
ZG dd deZdS )    N)max_treearea_closingarea_opening)max_tree_local_maximadiameter_opening)diameter_closing)invert)assert_array_equalTestCaseg-q=Fc                 K   sn  || |fi |}t || tjtjfD ]}| |}|||fi |}||}	t ||	 q| tj}
|
d }
|tj}|d }|rJ|d }n|}tjtjfD ])}|
|}|||fi |}||}	d|	 d|  }|dk }|tk s{J qR| tj	}|d }|tj	}|d }tj
tj	tjtjfD ]}||}|||fi |}||}t || qd S )Ng     o@      ?   )r	   npuint32uint64astypefloat64float32sumepsint16int8int32int64)imgparamexpectedfuncZparam_scalekeywordsoutdtZimg_castZexp_castZ
data_floatZexpected_floatZ
param_castZ	data_castZ	error_imgerrorZ
img_signedZ
exp_signedZimg_sZexp_s r!   g/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/skimage/morphology/tests/test_max_tree.py_full_type_test   s>   







r#   c                   @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestMaxtreec           	      C   sZ  t j}t jg dg dg dg dg|d}t jg dg dg dg d	gt jd}t jg d
t jd}t jt jt jt jfD ]}||}t|dd\}}t	|| t	|| q>t j
t jt jt jfD ]}||}|d }t|dd\}}t	|| t	|| qb|t}|d d }t jt jfD ]}||}t|dd\}}t	|| t	|| qdS )zTest for max tree)
      r&   	   )   r(   r'   r'   )r&   r(   r%   r%   )r'   r'   r%   r%   dtype)      r+   r+   )r,   r,      r-   )r+   r,   r-   r%   )r-   r-   r%   r%   )r,      r'   r+      r&   r-      r(         r   r%            r/   Zconnectivityr'   r&   g       @N)r   uint8arrayr   Zuint16r   r   r   r   r	   r   r   r   floatr   r   )	selfZimg_typer   ZP_expZS_expPSZimg_shiftedZ	img_floatr!   r!   r"   test_max_tree6   s<   







zTestMaxtree.test_max_treec                 C   sX  t jg dg dg dg d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 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 dg dg dg dgt jd}t|d|tdd t|d|tdd tt|dd\}}t|d|t||d dS )z/Test for Area Closing (2 thresholds, all types))   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   r>   )r>      r?   r>   r?   r>   r?   r?   r>   r>   r?   r>   )r>   r?   (   r>   r>   r>   r>   r>   r>   r>   r@   r>   )r>   r>   r>   r>   d   r>   rA   rA   r>   r>   r?   r>   )r?   r?   r?   r?   r?   r?   r?   r>   r?   r?      rB   )r?   rB   r?   r?   r?   rB   r?   r>   rB   rB   rB   r@   )r?   r?   r?   rA   r?   r?   r?   r>   rB   rB   rB   rB   )r?   r?   r?   rA   r?   r?   r?   r>   r?   r?   rB   rB   )r?   r?   r?   r?   r?   r@   r?   r>   r>   rA   rB   rB   )r?   r@   rB   rB   rB   r@   r?   rB   r?   r?   rB   rB   )r?   r?   r?   r?   r?   r?   r?   rB   rB   rB   rB   rB   r)   )r>   r?   r?   r>   r>   r>   r?   r?   r>   r>   r?   r>   )r>   r?   r?   r>   r>   r>   r>   r>   r>   r>   r?   r>   )r>   r>   r>   r>   r>   r>   rA   rA   r>   r>   r?   r>   )r?   rB   r?   r?   r?   rB   r?   r>   rB   rB   rB   rB   )r?   r?   r?   r?   r?   r@   r?   r>   r>   r?   rB   rB   )r?   r?   rB   rB   rB   r@   r?   rB   r?   r?   rB   rB   )r>   r?   r?   r>   r>   r>   r>   r>   r>   r>   r>   r>   )r?   r?   r?   r?   r?   r?   r?   r>   r>   r>   rB   rB   )r?   r?   r?   r?   r?   r?   r?   r>   rB   rB   rB   rB   )r?   r?   r?   r?   r?   r?   r?   r>   r>   r?   rB   rB   )r?   r?   rB   rB   rB   r?   r?   rB   r?   r?   rB   rB   r/   r6   r,   parentZtree_traverserN)r   r8   r7   r#   r   r   r   r:   r   Z
expected_2Z
expected_4r;   r<   r!   r!   r"   test_area_closing]   sh   zTestMaxtree.test_area_closingc                 C   sT  t jg dg dg dg d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 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 dg dg dg dgt jd}t|d|tdd t|d|tdd t|dd\}}t|d|t||d dS )z/Test for Area Opening (2 thresholds, all types))r5   r5   r5   r5   r5   r5   r5   r5   r5   r5   r5   r5   )r5   7   rG   r5   rG   r5   rG   rG   r5   r5   rG   r5   )r5   rG      r5   r5   r5   r5   r5   r5   r5   rH   r5   )r5   r5   r5   r5      r5   rI   rI   r5   r5   rG   r5   )rG   rG   rG   rG   rG   rG   rG   r5   rG   rG   r   r   )rG   r   rG   rG   rG   r   rG   r5   r   r   r   rH   )rG   rG   rG   rI   rG   rG   rG   r5   r   r   r   r   )rG   rG   rG   rI   rG   rG   rG   r5   rG   rG   r   r   )rG   rG   rG   rG   rG   rH   rG   r5   r5   rI   r   r   )rG   rH   r   r   r   rH   rG   r   rG   rG   r   r   )rG   rG   rG   rG   rG   rG   rG   r   r   r   r   r   r)   )r5   rG   rG   r5   r5   r5   rG   rG   r5   r5   rG   r5   )r5   rG   rG   r5   r5   r5   r5   r5   r5   r5   rG   r5   )r5   r5   r5   r5   r5   r5   rI   rI   r5   r5   rG   r5   )rG   r   rG   rG   rG   r   rG   r5   r   r   r   r   )rG   rG   rG   rG   rG   rH   rG   r5   r5   rG   r   r   )rG   rG   r   r   r   rH   rG   r   rG   rG   r   r   )r5   rG   rG   r5   r5   r5   r5   r5   r5   r5   r5   r5   )rG   rG   rG   rG   rG   rG   rG   r5   r5   r5   r   r   )rG   rG   rG   rG   rG   rG   rG   r5   r   r   r   r   )rG   rG   rG   rG   rG   rG   rG   r5   r5   rG   r   r   )rG   rG   r   r   r   rG   rG   r   rG   rG   r   r   r/   r6   r,   rC   N)r   r8   r7   r#   r   r   rE   r!   r!   r"   test_area_opening   sh   zTestMaxtree.test_area_openingc                 C   sX  t jg dg dg dg d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 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 dg dg dg dgt jd
}t|d|tdd t|d|tdd tt|dd\}}t|d|t||d dS )3Test for Diameter Opening (2 thresholds, all types))a   _   ]   \   [   Z   rQ   rQ   rP   rO   rN   rM   )rM   rN   rP   Y   X   rS   rS   rS   rS   rR   rP   rN   )rN   ?   rT   rT   rT   V   rU   rU   W   +   rW   rP   )rO   rR   rS   rU   U   rX   T   rX   rX   rW   rW   rR   )rP   rS   rV   rX   rY   rY   S   rY   rY   rX   rV   rS   )rQ   rS   rU   rX   rY   rZ   rZ   rZ   rY   rX   rU   rS   )rQ   rS   rU   rY   rZ   rZ   R   rZ   rZ   rY   rU   rS   )rO   rR      r\   rX   rX   rY   rX   rX   r-   r-   rR   )rN   rP   r\   r\   rV   rU   rU   rU   rV   rS   r-   rP   r)   )rQ   rS   rU   rY   rZ   rZ   rZ   rZ   rZ   rY   rU   rS   )rN   rT   rT   rT   rT   rU   rU   rU   rV   rY   rY   rP   )rO   rR   rS   rU   rX   rX   rY   rX   rX   rY   rY   rR   )rO   rR   rY   rY   rX   rX   rY   rX   rX   rY   rY   rR   )rN   rP   rY   rY   rV   rU   rU   rU   rV   rS   rY   rP   r/   r6   r,   rC   N)r   r8   r7   r#   r   r   r   r   r:   r   Zex2Zex4r;   r<   r!   r!   r"   test_diameter_closing   sh   z!TestMaxtree.test_diameter_closingc                 C   sB  t g dg dg dg dg dg dg dg dg dg dg d	g dg}t g dg dg dg dg dg dg d
g dg dg dg d	g dg}t g dg dg dg dg dg dg d
g dg dg dg dg dg}t|d|tdd t|d|tdd t|dd\}}t|d|t||d dS )rK   )r.   r(   r'   r3   r1   r1   r1   r1   r1   r3   r'   r(   )r(   r%   r3   r2   r4   r4   r5   r4   r4   r2   r3   r%   )r'   r@   r@   r@   r@      r_   r_   r_   <   r`   r3   )r3   r2   r5   r_         rb   rb   ra   r`   r`   r2   )r1   r4   r_   ra   rb      rc   rc   rb   ra   r_   r4   )r1   r4   r_   rb   rc   rc   rc   rc   rc   rb   r_   r4   )r1   r5   r_   rb   rc   rc      rc   rc   rb   r_   r5   )r3   r2   P   re   ra   rb   rb   rb   ra   rA   rA   r2   )r'   r3   re   re   r_   r_   r_   r_   r_   r5   rA   r3   )r1   r5   r_   rb   rc   rc   rc   rc   rc   rb   r_   r5   )r'   r@   r@   r@   r@   r_   r_   r_   r_   rb   rb   r3   )r3   r2   r5   r_   ra   rb   rb   rb   ra   rb   rb   r2   )r3   r2   rb   rb   ra   rb   rb   rb   ra   rb   rb   r2   )r'   r3   rb   rb   r_   r_   r_   r_   r_   r5   rb   r3   r/   r6   r,   rC   N)r   r8   r#   r   r   r]   r!   r!   r"   test_diameter_opening"  sb   z!TestMaxtree.test_diameter_openingc           	      C   sF  t jg dg d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 dg d
g
t jd	}t jt jt jt jfD ]J}||}t|dd}|dk}t|| |j	|j	kstJ t 
|dks}J t|\}}t|||d}t|| |j	|j	ksJ t 
|dksJ qVdS )z#local maxima for various data types)
r%   r3   r2   r4   r4   r5   r4   r4   r2   r3   )
r3   r2   r5   r_   r_   r_   r_   r_   r5   r2   )
r2   r5   r@   r@   rb   rb   rb   r`   r`   r5   )
r4   r_   r@   r@   rc   rc   rc   r`   r`   r_   )
r4   r_   rb   rc   rc   rc   rc   rc   rb   r_   )
r5   r_   rb   rc   rc   rd   rc   rc   rb   r_   )
r4   r_   re   re   rc   rc   rc   rA   rA   r_   )
r2   r5   re   re   rb   rb   rb   rA   rA   r5   r)   
r   r   r   r   r   r   r   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.   rC   N)r   r8   r7   r   r   r   r   r   r	   r*   maxr   )	r:   dataexpected_resultr*   Z	test_datar   out_binr;   r<   r!   r!   r"   test_local_maxima^  sR   


zTestMaxtree.test_local_maximac                 C   s   t jg dg d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 dg d
g
t jd	}t|dd}|dk}t|| t |dksdJ dS )zspecific tests for float type)
g?)\(?p=
ף?Q?rp   333333?rp   rp   ro   rn   )
rn   ro   rq   {Gz?rr   rr   rr   rr   rq   ro   )
ro   rq   皙?rs   
ףp=
?rt   rt   333333?ru   rq   )
rp   rr   rs   rs   RQ?rv   rv   ru   ru   rr   )
rp   rr   rt   rv   rv   rv   rv   rv   rt   rr   )
rq   gK?rt   rv   g&1?g?rv   rv   rt   rr   )
rp   rr   皙?rw   rv   rv   rv   g      @r   rr   )
ro   rq   rw   rw   rt   rt   rt   r   r   rq   r)   rg   rh   )
r   r+   r   r   r+   r   r   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   r0   N)r   r8   r   r7   r   r	   ri   )r:   rj   rk   r   rl   r!   r!   r"   test_extrema_float  s@   
zTestMaxtree.test_extrema_floatc                 C   s\  t jdt jd}t jdt jd}d|dddddf< d|d< d|dddddf< d|d< d|dd	ddf< d|dd	ddf< d|d
dd	dd	f< d|d< d|dddddf< |d
ddd	dd	f  d7  < d|d
dd	dd	f< d|dddddf< d|dd	dd	dd	f< d|d< d|d< t|}|d
k}t|| t |dksJ dS )z$tests the detection of maxima in 3D.)r&   r&   r&   r)   rA   r+   r-   r?   )r/   r/   r/   r.   r&   r   )r+   r0   r0   r/   r(   2   r0   rB   )r(   r(   r(   N)r   Zzerosr7   r   r   r	   ri   )r:   r   Zlocal_maximar   rl   r!   r!   r"   test_3d  s*   "
zTestMaxtree.test_3dN)__name__
__module____qualname__r=   rF   rJ   r^   rf   rm   rx   rz   r!   r!   r!   r"   r$   5   s    'CC?<0(r$   )F)numpyr   Zskimage.morphologyr   r   r   r   r   r   Zskimage.utilr   Zskimage._shared.testingr	   r
   r   r#   r$   r!   r!   r!   r"   <module>   s    
)