a
    ¤Â=bó  ã                   @   s¬   d 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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d„ Zd d!„ ZdS )"a!  
These tests are originally part of CellProfiler, code licensed under both GPL and BSD licenses.

Website: http://www.cellprofiler.org
Copyright (c) 2003-2009 Massachusetts Institute of Technology
Copyright (c) 2009-2011 Broad Institute
All rights reserved.
Original author: Lee Kamentsky
é    N)Úassert_array_almost_equal)Úexpected_warnings©Ú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
   úKlib/python3.9/site-packages/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   c               	   C   sž   t  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¡}t  g d¢g d¢g d¢g d¢g d¢g d¢g¡}tt| |ƒ|ƒ dS )	z=Test reconstruction with two peak pixels isolated by the mask©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   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   N)r   Úarrayr   r   )r   r   Úexpectedr
   r
   r   Útest_two_image_peaks-   s,    
û
û
û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_maskF   s    r$   c                  C   sB   t  g d¢¡} t  g d¢¡}t| |dd}t|t  g d¢¡ƒ dS )z@Test reconstruction by erosion, which should fill holes in mask.©
r   é   r&   r&   r&   r&   r&   r&   r&   r   ©
r   r   é   r   r   r   r   r   r   r   Úerosion©Úmethod)
r   r   r(   r   r   r   r   r   r   r   N)r   r   r   r   )Úseedr   r#   r
   r
   r   Útest_fill_holeL   s    r-   c                  C   s   t  d¡} t  d¡}t t¡" t| d |dd W d   ƒ n1 sF0    Y  t t¡" t| d |dd W d   ƒ n1 s‚0    Y  d S )Nr   r   Údilationr*   g      à?r)   ©r   r   ÚpytestÚraisesÚ
ValueErrorr   ©r,   r   r
   r
   r   Útest_invalid_seedT   s    


ÿ$
ÿr4   c                  C   s¨   t  d¡} t  d¡}t t¡$ t| |t  d¡d W d   ƒ n1 sH0    Y  t t¡$ t| |t  d¡d W d   ƒ n1 s†0    Y  t| |t  d¡d d S )Nr   )r   r   )Ú	footprint)r   r   ©r   r   r/   r3   r
   r
   r   Útest_invalid_footprint_   s    

ÿ$ÿ$r7   c                  C   sX   t  g d¢¡} t  g d¢¡}t t¡ t| |dd W d   ƒ n1 sJ0    Y  d S )Nr%   r'   Zfoor*   )r   r   r0   r1   r2   r   r3   r
   r
   r   Útest_invalid_methodk   s    r8   c               
   C   s¬   t  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¡}t t¡2 t| |dt  d¡t  dd	g¡d
 W d  ƒ n1 sž0    Y  dS )z:Test reconstruction with invalid not None offset parameterr   r   r   r   r   r.   r6   r   r   ©r+   r5   ÚoffsetN)r   r   r0   r1   r2   r   r   r   r
   r
   r   Útest_invalid_offset_not_noner   s$    
û
ûÿr;   c               	   C   sT   t  g d¢¡} t  g d¢¡}t  g d¢¡}tt| |dt  d¡t  dg¡d|ƒ dS )	z/Test reconstruction with valid offset parameterr'   ©
r   r&   r(   r&   r&   r&   r&   r   r   r   )
r   r   r(   r(   r(   r(   r(   r   r   r   r.   r   r   r9   N)r   r   r   r   r   )r,   r   r    r
   r
   r   Útest_offset_not_none†   s    ÿþr=   c                  C   sB   d} t | d gƒ ddlm} W d   ƒ n1 s40    Y  d S )Nz@Importing from skimage.morphology.greyreconstruct is deprecated.z|\A\Zr   r   )r   Z"skimage.morphology.greyreconstructr   )Úmsgr   r
   r
   r   Útest_deprecated_import‘   s    r?   c                  C   s`   t  g d¢¡} t  g d¢¡}tdgƒ& t| |dt  d¡d W d   ƒ n1 sR0    Y  d S )Nr'   r<   z%`selem` is a deprecated argument namer.   r   )r+   Zselem)r   r   r   r   r   r3   r
   r
   r   Útest_selem_kwarg_deprecation—   s    r@   )Ú__doc__Znumpyr   r0   Znumpy.testingr   Zskimage._shared._warningsr   Z"skimage.morphology.grayreconstructr   r   r   r   r   r!   r$   r-   r4   r7   r8   r;   r=   r?   r@   r
   r
   r
   r   Ú<module>   s&   	