U
    ?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
ddddgejdddddgdd Zejd
ddddgejdddddgdd Zdd Zejd
ddd gejdd!d"d#gd$d% Zd&d' ZdS )(    N)assert_almost_equalassert_array_equal)distance)expected_warnings)hausdorff_distancehausdorff_pairc               	   C   s  t jdtd} t jdtd}t| |dks.tt| |dddksDttdg tt| |ddg W 5 Q R X t|| dkstt|| dddksttdg tt|| ddg W 5 Q R X t| |dkstt| |dddksttdg tt| |ddg W 5 Q R X d S )	N)r      Zdtype)   r   g        modifiedmethodz"One or both of the images is empty )npzerosboolr   AssertionErrorr   r   r   )emptyZ	non_emptyr   r   X/var/www/html/venv/lib/python3.8/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   s   | ]\}}|| d  V  qdS r   Nr   .0cacbr   r   r   	<genexpr>)   s     z(test_hausdorff_simple.<locals>.<genexpr>r   Zaxisr   r   r   r   r   r   sqrtsumzipr   ZcdistmaxZmeanminr   r   r   r   points_apoints_bshapecoords_acoords_bdistdZdist_modifiedr   r   r   test_hausdorff_simple!   s(    *r1   r*   )r   r   r   )r      )r2   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)   r3   r	   Tc                 s   s   | ]\}}|| d  V  qdS r   r   r   r   r   r   r!   A   s     z/test_hausdorff_region_single.<locals>.<genexpr>r   r"   r   r   r   r#   r)   r   r   r   test_hausdorff_region_single8   s    * r4   )r3   r2   )r2   r3   )r
   r2   )r2   r
   )r   r2   )r   r   )r   r2   )r2   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   s     z9test_hausdorff_region_different_points.<locals>.<genexpr>r   r"   r   r   r   r#   r)   r   r   r   &test_hausdorff_region_different_pointsK   s    * r5   c                     s>  d} ddd ddddg}ddddg} 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&t	tt||ddd d S )N)<   r6      
   r   r   c                    s   g | ]} |  qS r   r   r   x)r	x_diamondr   r   
<listcomp>j   s     z test_gallery.<locals>.<listcomp>c                    s   g | ]} |  qS r   r   r   y)r<   	y_diamondr   r   r>   k   s           c                    s   g | ]} |  qS r   r   r:   )x_kitex_rr   r   r>   t   s     c                    s   g | ]} |  qS r   r   r?   )y_kitey_rr   r   r>   u   s     r	   Tg      $@))r7   rC   )r7   r8   ))r7   (   )r7   2   r   r   g      @)
r   r   r   r&   r   r   r   equalallr   )r,   Zplt_xZplt_yZset_axZset_ayZset_bxZset_byr-   r.   r;   r@   Z	hd_pointsr   )r<   r=   rD   rE   rA   rF   rG   r   test_gallery^   s6    
rL   )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!      s     z+test_3d_hausdorff_region.<locals>.<genexpr>r   r"   r   r   r   r#   r)   r   r   r   test_3d_hausdorff_region   s    * rM   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    rN   )numpyr   ZpytestZnumpy.testingr   r   Zscipy.spatialr   Zskimage._shared._warningsr   Zskimage.metricsr   r   r   r1   markZparametrizer4   r5   rL   rM   rN   r   r   r   r   <module>   s$   6