U
    ƒ±Ëh$  ã                   @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dlm	Z	 dd„ Z
dd„ Zd	d
„ Zdd„ Zej ddddddg¡ej dejejg¡dd„ ƒƒZdd„ Zej dejejejejejejejejejejejg¡dd„ ƒZdd„ Zdd„ Zdd„ Z dd „ Z!d!d"„ Z"dS )#é    N)Úassert_array_almost_equal)Ú_supported_float_type)Úreconstructionc                   C   s    t tt d¡t d¡ƒdƒ dS )z0Test reconstruction with image and mask of zeros)é   é   r   N)r   r   ÚnpÚzeros© r	   r	   úP/tmp/pip-unpacked-wheel-gtraehzf/skimage/morphology/tests/test_reconstruction.pyÚ
test_zeros
   s     ÿr   c                   C   s    t tt d¡t d¡ƒdƒ dS )z9Test reconstruction where the image and mask are the same)r   r   é   N)r   r   r   Úonesr	   r	   r	   r
   Útest_image_equals_mask   s     ÿr   c                  C   s,   t  d¡} t  d¡d }tt| |ƒdƒ dS )zATest reconstruction where the image is uniform and less than mask©r   r   é   r   N©r   r   r   r   ©ÚimageÚmaskr	   r	   r
   Útest_image_less_than_mask   s    
r   c                  C   s4   t  d¡} d| d< t  d¡d }tt| |ƒdƒ dS )z'Test reconstruction with one peak pixelr   r   )r   r   é   Nr   r   r	   r	   r
   Útest_one_image_peak   s    
r   ÚminsizeéÈ   i N  i@œ  i€8 Údtypec                 C   s$  t jdddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	g|d}t jdddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	g|d}t jdddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	dddddddddg	g|d}| dk	röt t | |j ¡¡}t | |j|  ¡}t  |||f¡}t  |||f¡}t  |||f¡}t||ƒ}|jt	|jƒkst
‚t||ƒ dS )z=Test reconstruction with two peak pixels isolated by the maskr   r   r   ©r   é   N)r   ÚarrayÚmathÚceilÚsqrtÚsizeZtiler   r   r   ÚAssertionErrorr   )r   r   r   r   ÚexpectedZnrowZncolÚoutr	   r	   r
   Útest_two_image_peaks'   sH    ûûûûûû

r%   c                  C   s$   t t d¡t d¡ƒ} t| dƒ dS )zDTest reconstruction with an image of all zeros and a mask that's not)é
   r&   r   N)r   r   r   r   r   )Úresultr	   r	   r
   Útest_zero_image_one_maskK   s    r(   c                 C   s–   t jddddddddddg
| d}t jddddddddddg
| d}t||d	d
}|jt|jƒksft‚t jddddddddddg
| d}t||ƒ dS )z@Test reconstruction by erosion, which should fill holes in mask.r   é   r   r   é   r   r   r   Úerosion©ÚmethodN)r   r   r   r   r   r"   r   )r   Úseedr   r'   r#   r	   r	   r
   Útest_fill_holeQ   s    """r/   c               	   C   sh   t  d¡} t  d¡}t t¡ t| d |dd W 5 Q R X t t¡ t| d |dd W 5 Q R X d S )Nr   r   Údilationr,   g      à?r+   ©r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r.   r   r	   r	   r
   Útest_invalid_seed^   s    


ÿ
ÿr6   c               	   C   s€   t  d¡} t  d¡}t t¡ t| |t  d¡d W 5 Q R X t t¡ t| |t  d¡d W 5 Q R X t| |t  d¡d d S )Nr   )r   r   )Ú	footprint)r   r   ©r   r   r1   r5   r	   r	   r
   Útest_invalid_footprinti   s    

ÿÿr9   c                  C   sd   t  ddddddddddg
¡} t  ddddddddddg
¡}t t¡ t| |dd	 W 5 Q R X d S )
Nr   r)   r   r*   r   r   r   Zfoor,   )r   r   r2   r3   r4   r   r5   r	   r	   r
   Útest_invalid_methodu   s    r:   c                  C   s(  t  ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddgg¡} t  ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddgg¡}t t¡( t| |dt  d¡t  ddg¡d W 5 Q R X d	S )
z:Test reconstruction with invalid not None offset parameterr   r   r   r   r0   r8   r   ©r-   r7   ÚoffsetN)r   r   r2   r3   r4   r   r   r   r	   r	   r
   Útest_invalid_offset_not_none|   s&    ûû ÿr=   c                  C   s„   t  ddddddddddg
¡} t  ddddddddddg
¡}t  ddddddddddg
¡}tt| |dt  d¡t  dg¡d	|ƒ d
S )z/Test reconstruction with valid offset parameterr   r   r*   r   r   r   r)   r0   r;   N)r   r   r   r   r   )r.   r   r#   r	   r	   r
   Útest_offset_not_none   s     
ÿþr>   )#r   Znumpyr   r2   Znumpy.testingr   Zskimage._shared.utilsr   Z"skimage.morphology.grayreconstructr   r   r   r   r   ÚmarkZparametrizeZuint8Zfloat32r%   r(   Zint8Zint16Zuint16Zint32Zuint32Zint64Zuint64Zfloat16Zfloat64r/   r6   r9   r:   r=   r>   r	   r	   r	   r
   Ú<module>   s8   
"     þ

