o
    :ήc\%                     @   sp   d dl Zd dlmZ d dlm  mZ d dlm	Z	 d dl
mZ d ZG dd dZG dd dZG d	d
 d
ZdS )    N)label)testing)assert_array_equalc                   @   sT   e Z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 )TestConnectedComponentsc                 C   s   t g dg dg dg dg| _t g dg dg dg dg| _| jd	 | _d
| jd< | j | _d| j| jdk< | j| jdk  d	8  < d S )N)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
   )nparrayxlabelslabels_nobgcopylabels_bg_9self r   G/tmp/pip-target-vg8gfxp4/lib/python/skimage/measure/tests/test_ccomp.pysetup   s"   
zTestConnectedComponents.setupc                 C   sT   t t| j| j | jd dksJ t t| jdd| j t t| jdd| j d S )N)r   r   r   c   
backgroundr	   )r   r   r   r   r   r   r   r   r   r   
test_basic'   s   z"TestConnectedComponents.test_basicc                 C   \   t jddd t}t|}| }t|D ]}|||k }t ||d ks+J qd S N      r
   r   	r   randomrandastypeintr   maxrangeallr   r   r   nivaluesr   r   r   test_random2      z#TestConnectedComponents.test_randomc                 C   s.   t g dg dg dg}tt|| d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	test_diag;   s
   
z!TestConnectedComponents.test_diagc                 C   sZ   t jddgddggtd}tt|ddddgddgg tt|ddddgddgg d S )Nr   r   )dtypeconnectivityr   )r   r   r)   r   r   r7   r   r   r   test_4_vs_8A   s   
z#TestConnectedComponents.test_4_vs_8c                 C   sd   t g dg dg dg}tt|g dg dg dg tt|ddg dg dg dg d S )Nr5   )r   r   r
   r   r   r   )r   r   r   r   r   r6   r7   r   r   r   test_backgroundL   s   
z'TestConnectedComponents.test_backgroundc                 C   sH   t g dg dg dg}t|dd}t|g dg dg dg d S )Nr   r   r   r
   r
   r
   r   r   r3   r   r   r   )r   r   r   r   )r   r   resr   r   r   test_background_two_regionsZ   s   
z3TestConnectedComponents.test_background_two_regionsc                 C   sF   t g dg dg dg}tt|dddg dg dg dg d S )Nr=   r4   r   r   r;   r   r6   r7   r   r   r   !test_background_one_region_centere   s   
z9TestConnectedComponents.test_background_one_region_centerc                 C   N   t g dg dg dg}tt|ddd d tt|ddd	d d
 d S N)r   r   r   r?   r@   T)
return_numr   r   r   )r   rH   r   r6   r7   r   r   r   test_return_nump   s   
z'TestConnectedComponents.test_return_numN)__name__
__module____qualname__r   r    r1   r8   r<   r>   rC   rE   rI   r   r   r   r   r      s    	r   c                   @   sl   e Z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 )TestConnectedComponents3dc                 C   s  t dt| _t g dg dg dg dg| jd< t g dg dg d	g d
g| jd< t g dg dg dg dg| jd< t dt| _t g dg dg dg dg| jd< t g dg dg dg dg| jd< t g dg dg dg dg| jd< d S )N)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   )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   r   )r   r   r   r   r   )r   r   r   r   r   )r   r
   r   r   r   )r   zerosr)   r   r   r   r   r   r   r   r   {   s@   





zTestConnectedComponents3d.setupc                 C   s0   t | j}t|| j | jd dksJ dd S )N)r   r   r   r   zData was modified!)r   r   r   r   )r   r   r   r   r   r       s
   
z$TestConnectedComponents3d.test_basicc                 C   r!   r"   r%   r-   r   r   r   r1      r2   z%TestConnectedComponents3d.test_randomc                 C   s6   t dt}d|d< d|d< d|d< tt|| d S )Nr   r   r   r   )r   r   r   r   r   r   )r   r   r   )r   rN   r)   r   r   r7   r   r   r   r8      s
   z#TestConnectedComponents3d.test_diagc                 C   T   t dt}d|d< d|d< | }d|d< tt|dd| tt|dd| d S NrA   r   )r   r   r   r5   r   r:   r   r   rN   r)   r   r   r   )r   r   label4r   r   r   r<         z%TestConnectedComponents3d.test_4_vs_8c                 C   rQ   rR   rS   )r   r   label1r   r   r   test_connectivity_1_vs_2   rU   z2TestConnectedComponents3d.test_connectivity_1_vs_2c                 C   s  t dt}t g dg dg dg|d< t g dg dg dg|d< | }t g dg dg dg|d< t g dg d	g dg|d< | }t dttgdttgtttgg|d< t tttgtdd
gtttgg|d< tt|| tt|dd| d S )Nr   r   r   r5   r=   r   )r   r   r
   r   )r   r   r   rA   )r   r   r   r   r   r   )r   rN   r)   r   r   BGr   r   )r   r   lnblbr   r   r   r>      s:   









z)TestConnectedComponents3d.test_backgroundc                 C   s   t dt}t g dg dg dg|d< t g dg dg dg|d< | }t ttdgttdgg d	g|d< t ddtgd
ttgtttgg|d< t|dd}t|| d S )NrX   r?   r@   r   )r   r   r   )r
   r   r   r=   r   rA   r   r   )r   rN   r)   r   r   rY   r   r   )r   r   r[   rB   r   r   r   rC      s(   





z5TestConnectedComponents3d.test_background_two_regionsc                 C   sB   t dt}d|d< t |t }d|d< tt|ddd| d S )NrO   r   rP   r   rD   )r   rN   r)   	ones_likerY   r   r   )r   r   r[   r   r   r   rE      s
   z;TestConnectedComponents3d.test_background_one_region_centerc                 C   rF   rG   r6   r7   r   r   r   rI      s   
z)TestConnectedComponents3d.test_return_numc                 C   sv   t d}t|}t d}|fd|f|dfd|df|ddfdd|ff}|D ]}||}t|}t||  q&d S )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   )r   r   lenreshaper   r   flatten)r   r   xlenyreshapesr^   x2labelledr   r   r   test_1D  s   


z!TestConnectedComponents3d.test_1Dc                 C   sB   t d}tt t| W d    d S 1 sw   Y  d S )N)r   r   r   r   )r   onesr   raisesNotImplementedErrorr   r7   r   r   r   test_nd  s   

"z!TestConnectedComponents3d.test_ndN)rJ   rK   rL   r   r    r1   r8   r<   rW   r>   rC   rE   rI   re   ri   r   r   r   r   rM   z   s    "				rM   c                   @   s   e Zd Zdd ZdS )TestSupportc           
      C   s|   d}|D ]7}t |}t|dk}t j|}t|\}}|j}t|D ]
}|| dks/J q%t||}	t	||	 qd S )N))r   r   r   )r   r   r
   )r   r   r   )r   r   )r   r   )
r   r   sumr&   ccompreshape_arrayshaper+   undo_reshape_arrayr   )
r   	shapes_inrn   numonesinpfixedswapsshape2r/   backr   r   r   test_reshape  s   
zTestSupport.test_reshapeN)rJ   rK   rL   rw   r   r   r   r   rj     s    rj   )numpyr   skimage.measurer   skimage.measure._ccompmeasure_ccomprl   skimage._sharedr   skimage._shared.testingr   rY   r   rM   rj   r   r   r   r   <module>   s    n 