o
    h                     @   s   d dl Zd dl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d Zdd	 Zejd
g dejdg ddd Zejd
g dejdg ddd Zdd Zejd
g dejdg ddd Zdd ZdS )    N)assert_almost_equalassert_array_equal)distance)expected_warnings)hausdorff_distancehausdorff_pairc                  C   sT  t jdtd} t jdtd}t| |dksJ t| |dddks"J tdg tt| |ddg W d    n1 s<w   Y  t|| dksJJ t|| dddksUJ tdg tt|| ddg W d    n1 sow   Y  t| |dks}J t| |dddksJ tdg tt| |ddg W d    d S 1 sw   Y  d S )	N)r      dtype)   r   g        modifiedmethodz"One or both of the images is empty )npzerosboolr   r   r   r   )empty	non_emptyr   r   a/var/www/html/scripts/venv/lib/python3.10/site-packages/skimage/metrics/tests/test_set_metrics.pytest_hausdorff_empty
   s"   "r   c                  C   s   d} d}d}t j|td}t j|td}d|| < d||< t tdd t| |D }t| g|g}tt 	t j
|dd	t 	t j
|d
d	}tt||| tt||| |f tt||dd| d S )Nr   r      r         r	   Tc                 s        | ]\}}|| d  V  qdS r   Nr   .0cacbr   r   r   	<genexpr>)       z(test_hausdorff_simple.<locals>.<genexpr>r   axisr   r   r   r   r   r   sqrtsumzipr   cdistmaxmeanminr   r   r   r   points_apoints_bshapecoords_acoords_bdistddist_modifiedr   r   r   test_hausdorff_simple!   s(   *r8   r0   ))r   r   r   )r      )r9   r   r1   c                 C      d}t j|td}t j|td}d|| < d||< t tdd t| |D }t| g|g}tt 	t j
|ddt 	t j
|dd}tt||| tt||| |f tt||d	d
| d S )N)   r;   r	   Tc                 s   r   r   r   r   r   r   r   r#   A   r$   z/test_hausdorff_region_single.<locals>.<genexpr>r   r%   r   r   r   r'   r/   r   r   r   test_hausdorff_region_single8      *r<   ))r;   r9   )r9   r;   )r   r9   )r9   r   ))r   r9   )r   r   )r   r9   )r9   r   c                 C   r:   )N)r   r   r	   Tc                 s   r   r   r   r   r   r   r   r#   T   r$   z9test_hausdorff_region_different_points.<locals>.<genexpr>r   r%   r   r   r   r'   r/   r   r   r   &test_hausdorff_region_different_pointsK   r=   r>   c                     s2  d} ddd g d}g d} fdd|D } fdd|D }ddd	d
fdd|D }fdd|D }t j| td}t j| td}t||D ]
\}	}
d||	|
f< qSt||D ]
\}	}
d||	|
f< qctt||d t||}t |d st |d sJ tt||ddd d S )N)<   r?      
   )r   r   r   )r   r   rB   r   c                       g | ]} |  qS r   r   r    x)r	x_diamondr   r   
<listcomp>j       z test_gallery.<locals>.<listcomp>c                    rC   r   r   r    y)rF   	y_diamondr   r   rH   k   rI         c                       g | ]} |  qS r   r   rD   )x_kitex_rr   r   rH   t   rI   c                    rO   r   r   rJ   )y_kitey_rr   r   rH   u   rI   r	   Tg      $@))r@   rN   )r@   rA   ))r@   (   )r@   2   r   r   g      @)	r   r   r   r*   r   r   r   equalall)r2   plt_xplt_yset_axset_ayset_bxset_byr3   r4   rE   rK   	hd_pointsr   )rF   rG   rP   rQ   rL   rR   rS   r   test_gallery^   s6   
r_   ))r   r   r   )r   r   r   )r   r   r   ))r   r   r   )r   r   r   )r   r   r   c                 C   r:   )N)r   r   r   r	   Tc                 s   r   r   r   r   r   r   r   r#      r$   z+test_3d_hausdorff_region.<locals>.<genexpr>r   r%   r   r   r   r'   r/   r   r   r   test_3d_hausdorff_region   r=   r`   c                  C   sl   d} d}d}t j|td}t j|td}d|| < d||< tt||| |f t| |}t|t|| d S )Nr   r   r   r	   T)	r   r   r   r   r   r   	euclideanr   r   )r0   r1   r2   r3   r4   euclidean_distancer   r   r   test_hausdorff_metrics_match   s   rc   )numpyr   pytestnumpy.testingr   r   scipy.spatialr   skimage._shared._warningsr   skimage.metricsr   r   r   r8   markparametrizer<   r>   r_   r`   rc   r   r   r   r   <module>   s&    6