a
    
d                     @   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   sV  t jdtd} t jdtd}t| |dks.J t| |dddksDJ tdg$ tt| |ddg W d    n1 sx0    Y  t|| dksJ t|| dddksJ tdg$ tt|| ddg W d    n1 s0    Y  t| |dksJ t| |dddksJ tdg$ tt| |ddg W d    n1 sH0    Y  d S )	N)r      Zdtype)   r   g        modifiedmethodz"One or both of the images is empty )npzerosboolr   r   r   r   )emptyZ	non_emptyr   r   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/metrics/tests/test_set_metrics.pytest_hausdorff_empty
   s"    22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   s   | ]\}}|| d  V  qdS r   Nr   .0cacbr   r   r   	<genexpr>)       z(test_hausdorff_simple.<locals>.<genexpr>r   Zaxisr   r   r   r   r   r   sqrtsumzipr   Zcdistmaxmeanminr   r   r   r   points_apoints_bshapecoords_acoords_bdistdZdist_modifiedr   r   r   test_hausdorff_simple!   s(    *r2   r+   ))r   r   r   )r      )r3   r   r,   c                 C   s   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)   r4   r	   Tc                 s   s   | ]\}}|| d  V  qdS 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   s    *r5   ))r4   r3   )r3   r4   )r
   r3   )r3   r
   ))r   r3   )r   r   )r   r3   )r3   r   c                 C   s   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	   Tc                 s   s   | ]\}}|| d  V  qdS 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   s    *r6   c                     s6  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< qt||D ]\}	}
d||	|
f< qtt||d t||}t |d st |d sJ tt||ddd d S )N)<   r7      
   )r   r   r   )r   r   r:   r   c                    s   g | ]} |  qS r   r   r   x)r	x_diamondr   r   
<listcomp>j   r!   z test_gallery.<locals>.<listcomp>c                    s   g | ]} |  qS r   r   r   y)r=   	y_diamondr   r   r?   k   r!         c                    s   g | ]} |  qS r   r   r;   )x_kitex_rr   r   r?   t   r!   c                    s   g | ]} |  qS r   r   r@   )y_kitey_rr   r   r?   u   r!   r	   Tg      $@))r8   rD   )r8   r9   ))r8   (   )r8   2   r   r   g      @)	r   r   r   r&   r   r   r   equalall)r-   Zplt_xZplt_yZset_axZset_ayZset_bxZset_byr.   r/   r<   rA   Z	hd_pointsr   )r=   r>   rE   rF   rB   rG   rH   r   test_gallery^   s6    
rM   ))r   r   r   )r   r   r   )r   r   r   ))r   r   r   )r   r   r   )r   r   r   c                 C   s   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   s   | ]\}}|| d  V  qdS 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   s    *rN   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   Z	euclideanr   r   )r+   r,   r-   r.   r/   Zeuclidean_distancer   r   r   test_hausdorff_metrics_match   s    rO   )numpyr   ZpytestZnumpy.testingr   r   Zscipy.spatialr   Zskimage._shared._warningsr   Zskimage.metricsr   r   r   r2   markZparametrizer5   r6   rM   rN   rO   r   r   r   r   <module>   s$   6