a
    
dnH                     @   s  d dl Zd dlmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ dZd=dd	Zd>d
dZedejejejgdd Zedejejejgdd Zedejejejgdd Zedejejejgdd Zdd Zdd Zdd Zdd Zedejejgdd Zdd  Zed!g d"edejejgd#d$ Zedejejgd%d& Zd'd( Z eed)d*d+d, Z!d-d. Z"d/d0 Z#d1d2 Z$d3d4 Z%d5d6 Z&d7d8 Z'd9d: Z(d;d< Z)dS )?    N)testing)expected_warnings)xfailarch32)random_walker)resizez
pyamg|\A\Zc                 C   sT  |d u r| }t jd t | |fdt j| |  }t| d }d|| d | | d | |d | |d | f< dt jd| d d| d  || d | d | d | d |d | d |d | d f< d|| d | |d |d  |d |d  f< t |}d|| d |d f< d|| d |d  |d |d  f< ||fS 	Ni  皙?         r         )nprandomseedzerosrandnint
zeros_like)lxlydatasmall_lseeds r   v/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/skimage/segmentation/tests/test_random_walker.pymake_2d_syntheticdata   s$       0
$r   c                 C   s  |d u r| }|d u r| }t jd t | ||fdt j| ||  }t| d }d|| d | | d | |d | |d | |d | |d | f< d|| d | d | d | d |d | d |d | d |d | d |d | d f< t d|d g}d|| d | |d | |d | |d | |d | f< t |}d|| d |d |d f< d|| d |d  |d |d  |d |d  f< ||fS r   )r   r   r   r   r   r   maxr   )r   r   lzr   r   Z	hole_sizer   r   r   r   make_3d_syntheticdata   s>    $ 
r    dtypec                 C   sD  d}d}| t jkrdnd}t||\}}|j| dd}t|||dd}|dd	d
df dk sfJ |j|jksvJ t|||ddd}|ddd	d
df |ddd	d
df k sJ |j|jksJ d|d< t|||ddd}|ddd	d
df |ddd	d
df k sJ t|dks.J |j|jks@J d S )NF   d   Z      Fcopybfbetamode-   (   <   r   Tr*   r+   return_full_probr   r      )7   P   )r   float64r   astyper   allshapelen)r!   r   r   r*   r   labels	labels_bfZfull_prob_bfr   r   r   
test_2d_bf9   s(     r;   c                 C   s  d}d}t ||\}}|j| dd}tdg  t||ddd}W d    n1 sT0    Y  |d	d
ddf dk s~J |j|jksJ tdg" t||dddd}W d    n1 s0    Y  |dd	d
ddf |dd	d
ddf k sJ |j|jksJ d S )Nr"   r#   Fr&   	"cg" moder$   cgr)   r%   r,   r-   r.   r   Tr/   r   r   )r   r5   r   r   r6   r7   r!   r   r   r   r9   Z	labels_cg	full_probr   r   r   
test_2d_cgS   s     . 
$r@   c                 C   s  d}d}t ||\}}|j| dd}dt g}t|  t||ddd}W d    n1 s^0    Y  |d	d
ddf dk sJ |j|jksJ t|" t||dddd}W d    n1 s0    Y  |dd	d
ddf |dd	d
ddf k sJ |j|jksJ d S )Nr"   r#   Fr&   zscipy.sparse.sparsetools|r$   cg_mgr)   r%   r,   r-   r.   r   Tr/   r   r   )r   r5   PYAMG_MISSING_WARNINGr   r   r6   r7   )r!   r   r   r   r9   Zanticipated_warningslabels_cg_mgr?   r   r   r   test_2d_cg_mge   s"    
. 

$rD   c                 C   s   d}d}t ||\}}|j| dd}t||ddd}|dd	d
df dk sTJ |j|jksdJ t||dddd}|ddd	d
df |ddd	d
df k sJ |j|jksJ d S )Nr"   r#   Fr&   r$   Zcg_jr)   r%   r,   r-   r.   r   Tr/   r   r   )r   r5   r   r6   r7   r>   r   r   r   test_2d_cg_jx   s     4rE   c                  C   s   d} d}t | |\}}d||   | |   }|tj}ttg  t||ddd}W d    n1 sr0    Y  |ddd	d
f dk	 sJ |j
|j
ksJ d S )Nr"   r#      r$   rA   r)   r%   r,   r-   r.   r   )r   minr   r5   r   uint8r   rB   r   r6   r7   )r   r   r   r9   rC   r   r   r   
test_types   s     . rI   c                  C   sf   d} d}t | |\}}d||dk< t||ddd}|dd	d
df dk sRJ |j|jksbJ d S )Nr"   r#   r   r   r$   r(   r)   r%   r,   r-   r.   )r   r   r6   r7   )r   r   r   r9   r:   r   r   r   test_reorder_labels   s     rJ   c                  C   s   d} d}t | |\}}d|ddddf< d|ddd	d
f< t||dd}|| |fddddf dk svJ |j|jksJ d S )Nr"   r#   
      .   2   !   &   r$   r*   r%   r,   r-   r.   r   )r   r   reshaper6   r7   )r   r   r   r9   r   r   r   test_2d_inactive   s    *rU   c                  C   st   t g dg dg dg} t g dg dg dg}t g dg dg dg}t| |d	d
}t j|| d S )N)i2  i1  i1  )iS2  iq4  i#/  )i.  i.  i0  )r   rK   r   )r   rK   r   )r   r   rK   )r   rK   r   )r   r   rK   rL   rS   )r   Zasarrayr   r   assert_array_equal)r   markersZexpected_labelsr9   r   r   r   test_2d_laplacian_size   s    


rX   c                 C   s   d}|||  }}}t |||\}}|j| dd}tdg t||dd}W d    n1 s`0    Y  ||jddddddf d	k sJ |j|jksJ d S )
N   Fr&   r<   r=   r+         r   )r    r5   r   r   rT   r7   r6   )r!   nr   r   r   r   r9   r   r   r   test_3d   s    ,.r^   c                  C   s   d} | | |   }}}t |||\}}d|ddddddf< tdg t||dd	}W d    n1 sl0    Y  ||jd
dd
dd
df dk sJ |j|jksJ d S )NrY   rK   r
   r%         z"cg" mode|CObject typer=   rZ   r[   r\   r   )r    r   r   rT   r7   r6   )r]   r   r   r   r   r9   r   r   r   test_3d_inactive   s    ,.ra   channel_axis)r   r   rK   c                 C   s(  d\}}t ||\}}|j| dd}|dtjf jddd}t|d|}tdd	g  t||d
|d}W d    n1 s|0    Y  t||d}|d j|jksJ tdg" t|d |d
d W d    n1 s0    Y  |	|jddddf dk
 sJ |d j|jks$J d S )N)r"   r#   Fr&   .r   rK   Zaxisr<    The probability range is outsider=   r+   rb   .r   rZ   r%   r,   r-   r.   )r   r5   r   newaxisrepeatZmoveaxisr   r   r7   rT   r6   )r!   rb   r   r   r   r9   multi_labelsr   r   r   test_multispectral_2d   s"    $0*rj   c           	      C   sN  d}|||  }}}t |||\}}|j| dd}|dtjf jddd}tdg  t||d	dd
}W d    n1 sz0    Y  |d j|jksJ tdg" t|d |d	d}W d    n1 s0    Y  ||jddddddf dk	 sJ ||jddddddf dk	 s4J |d j|jksJJ d S )NrY   Fr&   .r   rK   rc   r<   r=   re   rf   rZ   r[   r\   )
r    r5   r   rg   rh   r   r   r7   rT   r6   )	r!   r]   r   r   r   r   r9   ri   Zsingle_labelsr   r   r   test_multispectral_3d   s    .000rk   c                  C   s>  d} | | |   }}}t |||\}}t| | | d f}t|D ]2\}}t|| | d fddd||d d d d f< q@t|d }	t|}
d|
|d |d |d f< d|
|d |	d  |d |	d  |d |	d	  f< td
g  t||
ddd}
W d    n1 s0    Y  |
ddddddf dk	 s:J d S )NrY   r   constantFr+   Zanti_aliasingr
   r   r   r   r<   r=   )      ?rn   g      ?r+   spacingr[   r\      	   )
r    r   r   	enumerater   r   r   r   r   r6   )r]   r   r   r   r   _
data_anisoiyzr   labels_anisor   r   r   test_spacing_0   s,    
&ry   zKnown test failure on 32-bit platforms. See links for details: https://github.com/scikit-image/scikit-image/issues/3091 https://github.com/scikit-image/scikit-image/issues/3092)	conditionreasonc                  C   sb  d} | | |   }}}t |||\}}t| | d | f}t|D ]2\}}t|| d | fddd||d d d d f< q@t|d }	t|}
d|
|d |d |d f< d|
|d |	d  ||	d  |d |	d  f< td	g  t||
d
dd}
W d    n1 s0    Y  |
ddddddf dk	 s6J t| | d | f}t
|jd D ]B}t|d d dd d f | d | fddd||d d d d f< qXt|d }	t|}d||d |d |d f< d|||	d  |d |	d  |d |	d  f< td	g  t||d
dd}W d    n1 s,0    Y  |ddddddf dk	 s^J d S )NrY   r   rl   Frm   r
   r   r   r<   r=   )rn          @rn   ro   r[   r\   r_   "   )r|   rn   rn   )r    r   r   rs   r   r   r   r   r   r6   ranger7   )r]   r   r   r   r   rt   ru   rv   rw   r   rx   Zlabels_aniso2r   r   r   test_spacing_1  sT    

&( 
&r   c                  C   s  t d} t d}tdg t| |}W d    n1 s>0    Y  t j|| d|d d d df< t j|dkdt jf |dkdt jf fdd}tdg t| |d	d
}W d    n1 s0    Y  t j|| t dd} t 	g d}t 	g d}t 
||fD ]\}}d	| | |< qt jdt jd}	|D ]\}}d|	| |< q@d|	| dk< tdg t| |	}
W d    n1 s0    Y  t |
|	dk dksJ t |
|	dk dksJ tdg t| |	d	d
}W d    n1 s0    Y  d S )NrL   rL   zReturning provided labelsr1   r
   r   .r   rc   Tr0   F))   rq   r   r   rq   rq   )rq   r   ))r1   r   )r   r   )r   r   )r1   r   )r   r   )r   r1   r1   r1   r!   rK   r   z!All unlabeled pixels are isolated)r   onesr   r   r   rV   Zconcatenaterg   fullarrayZvstackr   Zint8r6   )imgr9   Zpass_throughexpectedtestZobject_AZobject_BxyrW   Zoutput_labelsr   r   r   test_trivial_casesK  s:    

(,*r   c                  C   sZ   t jd t ddt jjdd  } t jdt jd}d|d< d|d	< t| |d
d d S )N*   r   g?sizer   r   r   r   r   r   )rn   r|   rp   )r   r   r   r   normalr   rH   r   r   r9   r   r   r   test_length2_spacingq  s    r   c                  C   s  t d} t d}tt t| | W d    n1 s>0    Y  tt t| |dd W d    n1 sv0    Y  t jd t jj	dd} t d
| j}tt t| | W d    n1 s0    Y  tt t| |dd W d    n1 s0    Y  t jj	dd} t d}d	|d
< d|d< tt t| |dd W d    n1 sr0    Y  t jj	dd} t d}tt t| |dd W d    n1 s0    Y  d S )NrL   rK   )rb   r   )r1   r1   r1   r1   r1   r      r   r   r   r
   r   )r   r   badrZ   )r   r   Zaranger   raises
ValueErrorr   r   r   r   rT   r7   r   r   r   r   r   test_bad_inputs|  s.    

(,(.
.
r   c                  C   s   t jd t jd} t | j }d|d< d|dd dd f< d|d< d|d< td	g t| |}W d    n1 s|0    Y  |d dksJ td	g t| |d
d}W d    n1 s0    Y  |d dksJ |d dksJ d S )Nr   r   r   r   r   r1   r   r   r   r   r   rd   Tr   r   r   r   r   r   r   r   r   r   r   r7   r   r   amaskresr   r   r   test_isolated_seeds  s    (,r   c                  C   s   t jd t jd} t | j }d|d< d|dd dd f< d|d< d|d< td	g t| |}W d    n1 s|0    Y  |d dksJ td	g t| |d
d}W d    n1 s0    Y  |d dksJ |d dksJ d S )Nr   r   r   r1   r   r   r   r   rd   Tr   r   r   r   r   r   r   r   test_isolated_area  s    (,r   c                  C   s"  t jd t jd} t | j }d|d< d|dd dd f< d|d< d|d< td	g t| |d
d}W d    n1 s0    Y  t| |d
dd}|d dksJ |d dksJ t| |d
dd}|d dksJ |d dksJ t| |d
dd}|d dksJ |d dksJ d S )Nr   r   r   r   r1   r   r   r   rd   Tr   rL   )r0   r*   r   r   r	   )r0   Zprob_tolg&.>)r0   Ztolr   r   r   r   r   test_prob_tol  s$    ,r   c                  C   sN   ddl m}  | j}zdd l}|d us(J W n tyH   |d u sDJ Y n0 d S )Nr   )random_walker_segmentation)skimage.segmentationr   UmfpackContextZscikits.umfpackImportError)r   r   Zscikitsr   r   r   test_umfpack_import  s    r   c                  C   s   t jd} t jdtd}tjtdd t| | W d    n1 sH0    Y  d|d< tjtdd t| | W d    n1 s0    Y  d|d< t| | d S )	N)r
   r
   r   zNo seeds provided)matchrK   r   r   r   )r   r   r   r   r   r   r   r   )imager9   r   r   r   test_empty_labels  s    ((r   )N)NN)*numpyr   Zskimage._sharedr   Zskimage._shared._warningsr   Zskimage._shared.testingr   r   r   r   Zskimage.transformr   rB   r   r    Zparametrizefloat16float32r4   r;   r@   rD   rE   rI   rJ   rU   rX   r^   ra   rj   rk   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sR   









4&!