
    1-Ph:H                        d dl mZ d dlZd dlZd dlmZ d dlmZm	Z	m
Z
 d dlmZmZ d dlmZ  e            d             Zd Zd	 Zd
 Zd'dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'ej(        )                    d g d!          d"             Z*d# Z+d$ Z,ej(        )                    d%ej-         ej-        g          d&             Z.dS )(    )productN)assert_equal)datafiltersimg_as_float)run_in_parallelexpected_warnings)slicc                     t           j                            d          } t          j        d          }d|d dd ddf<   d|dd d ddf<   d|dd dd df<   |d|                     |j                  z  z  }d||dk    <   d||dk     <   t          |ddd	d
          }t          t          t          j	        |                    d           t          |j        |j        d d                    t          |d dd df         d           t          |dd d df         d           t          |d ddd f         d           t          |dd dd f         d           d S )Nr               
      {Gz?size   F)
n_segmentssigmaenforce_connectivitystart_labelr   
nprandomdefault_rngzerosnormalshaper
   r   lenuniquerngimgsegs      d/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/segmentation/tests/test_slic.pytest_color_2dr*      s   
)


"
"C
(;

CCSbS!CSbS!CRSS!4#**#)*,,,,CCaLCaL
sqST
U
U
UC RYs^^$$a(((CIcrcN+++SbS#2#X"""RSS#2#X"""SbS"##X"""RSS"##X"""""    c                     t           j                            d          } t          j        d          }d|d dd dddf<   d|d ddd ddf<   d|dd d dddf<   d|dd dd ddf<   |d	|                     |j        
          z  z  }t          j        |dd|          }t          |ddd          }t          t          t          j
        |                    d           t          |j        |j        d d                    t          |d dd df         d           t          |dd d df         d           t          |d ddd f         d           t          |dd dd f         d           d S )Nr   r   r      r   r   r   r      r.   r   r   outF)r   r   r   r   r   r   r   r   r    r!   r"   clipr
   r   r#   r$   r%   s      r)   test_multichannel_2dr4   !   s   
)


"
"C
(;

CCSbS!A#CRSS!A#CSbS!A#CRSS!A#4#**#)*,,,,C
'#q!
%
%
%C
squ!
L
L
LC RYs^^$$a(((CIcrcN+++SbS#2#X"""RSS#2#X"""SbS"##X"""RSS"##X"""""r+   c            	         t           j                            d          } t          j        d          }d|d dd df<   d|dd d df<   d|dd dd f<   |d|                     |j                  z  z  }d	||d	k    <   d||dk     <   t          |dd
d	d dd          }t          t          t          j	        |                    d
           t          |j        |j                   t          |d dd df         d           t          |dd d df         d           t          |d ddd f         d	           t          |dd dd f         d           d S )Nr   r   r   Q?r   q=
ףp?      ?F%uk?r   r   r   Fr   r   compactnesschannel_axisconvert2labr   r   r   r   r%   s      r)   test_gray_2dr?   5   s   
)


"
"C
(8

CCSbSMCSbSMCRSSM6CJJCIJ....CCaLCaL
  C RYs^^$$a(((CI&&&SbS#2#X"""RSS#2#X"""SbS"##X"""RSS"##X"""""r+   c                      t          j        d          } d| d dd df<   t          j        t          d          5  t          |            d d d            n# 1 swxY w Y   t          | d            d S )Nr6   r7   r   z&channel_axis=-1 indicates multichannel)matchr=   )r   r    pytestraises
ValueErrorr
   r'   s    r)    test_gray2d_default_channel_axisrG   P   s    
(8

CCSbSM	z)Q	R	R	R  S			              4      s   AAA皙?c                 Z    | j         }t          j        | |k              }||z  |k     sJ d S )N)r   r   sum)seg1seg2allowed_mismatch_ratior   ndiffs        r)   _check_segment_labelsrO   X   s8    9DF44<  EDL2222222r+   c                     t          j                    d dd df         } d|                     t          j                  z  }t          |           }||                                z  }|dz   }t          |           }t          |          }t          |          }t          |          }t          |          }	t          j        	                    ||           t          j        	                    ||           t          j        	                    ||	           |                                }
|                                }t          |
|z
            |
z  dk     sJ d S )N      i  g      ?)r   catastyper   uint16r   maxr
   testingassert_array_equalabs)	img_uint8
img_uint16img_float32img_float32_normimg_float32_offsetrK   rL   seg3seg4seg5n_seg1n_seg4s               r)   ,test_slic_consistency_across_image_magnituderd   ^   s4    

4C4#:&Iy''	222Jy))K"[__%6%66$t+	??D
DD !!D"##DJ!!$---J!!$---J!!$---
 XXZZFXXZZFv&(3......r+   c                     t           j                            d          } t          j        d          }g }|j        d d         D ]:}|dz  }|                    t          d |          t          |d           f           ;t          t          |           }t          t          ddgfdz             }t          ||          D ]
\  }}|||<   |d| 
                    |j                  z  z  }d||dk    <   d||dk     <   t          |dd	d
          }t          t          t          j        |                    d	           t          |t          d	                    D ]\  }}t          ||         |           d S )Nr   r   r      r   r   r   r   r   r   r   r.   )r   r   r   )r   r   r   r    r"   appendslicelistr   zipr!   r
   r   r#   r$   range)	r&   r'   slicesdim_sizemidpointcolorsscr(   s	            r)   test_color_3drs   z   s   
)


"
"C
(?
#
#CFIcrcN F Fq=uT8,,eHd.C.CDEEEE'6"##F'aVIM+,,FFF##  1A4#**#)*,,,,CCaLCaL
s!q
9
9
9CRYs^^$$a(((FE!HH%%    1SVQ   r+   c            	         t           j                            d          } t          j        d          }g }|j        D ]:}|dz  }|                    t          d |          t          |d           f           ;t          t          |           }t          j	        ddd          }t          ||          D ]
\  }}|||<   |d|                     |j                  z  z  }d||dk    <   d||dk     <   t          |dd	dd d
d          }t          t          t          j        |                    d	           t          |t!          d	                    D ]\  }}	t          ||         |	           d S )Nr   r   r   rg   r   gzo ?g$I$I?MbP?r   r   r.   Fr;   )r   r   r   r    r"   rh   ri   rj   r   arangerk   r!   r
   r   r#   r$   rl   )
r&   r'   rm   rn   ro   shadesrq   shr(   rr   s
             r)   test_gray_3drz      s   
)


"
"C
(<
 
 CFI F Fq=uT8,,eHd.C.CDEEEE'6"##FYq(G,,FVV$$  2A53::39:----CCaLCaL
  C RYs^^$$a(((FE!HH%%    1SVQ   r+   c                     t           j                            d          } t          j        g dg dgt                    }|d|                     |j                  z  z  }t          j        g dg dgt                    }t          dg          5  t          |dg dd d	          }d d d            n# 1 swxY w Y   t          ||           d S )
Nr   r   r   r   r   r   r   r   r   r   r   r   r   rH   r   z5Input image is 2D: sigma number of elements must be 2r   )r   2   r   )r   r   r=   r   )r   r   r   arrayfloatr!   r"   intr	   r
   r   )r&   r'   result_sigma	seg_sigmas       r)   test_list_sigmar      s'   
)


"
"C
(&&&(:(:(:;U
C
CC3++++C8///1C1C1CDcJJL		CD
 
 
 
 AZZZdPQ
 
 
	
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 L)))))s   B44B8;B8c            	         t           j                            d          } t          j        g dg dgt                    }t          j        g dg dgt
                    }t          j        g dg dgt
                    }|d|                     |j        	          z  z  }t          |d
dd dd          }t          |d
dddgdd d          }t          ||           t          ||           d S )Nr   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   rH   r   r   r9   )r   r   r=   r<   r     r   )r   r   spacingr<   r=   r   )
r   r   r   r   r   r   r!   r"   r
   r   )r&   r'   result_non_spacedresult_spacedseg_non_spaced
seg_spaceds         r)   test_spacingr      s   
)


"
"C
(OOO___5u
=
=C///???!CSIIHooo?EEM3++++C3TU  N a  J !2333]+++++r+   c                      t          j        g dg dgt                    dz   } t          j        t
                    5  t          | ddd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   Tr   )r=   r>   r   )r   r   r   rC   rD   rE   r
   rF   s    r)   test_invalid_lab_conversionr      s    
(OOO___5u
=
=
AC	z	"	" D DSrtCCCCD D D D D D D D D D D D D D D D D Ds   AA"%A"c            
         t          j        g dg dg dgt                    } t          | dddddd 	          }t          | dddddd 	          }t          | ddddd
dd           }t          j        g dg dg dgt                    }t          j        g dg dg dgt                    }t	          ||           t	          ||           t	          ||           d S )Nr}   r   r   r   r   r   r   r   r   r   r   r   r   r   -C6?TFr   )r<   r   r>   r   r=   皙?)r<   r   r>   max_size_factorr   r=   )r   r   r   r
   r   )r'   segments_connectedsegments_disconnectedsegments_connected_low_maxresult_connectedresult_disconnecteds         r)   test_enforce_connectivityr      s[   
(&&&(:(:(:<N<N<NOQV
W
WC	!   !	"   "&	!	" 	" 	" x			///1C1C1CDe  (			///1C1C1CDe  #%5666&(;<<<+-=>>>>>r+   c                     t           j                            d          } t          j        d          }d|d dd ddf<   d|dd d ddf<   d|dd dd df<   |d|                     |j                  z  z  }d||dk    <   d||dk     <   t          |ddd	d
          }t          t          t          j	        |                    d           t          |j        |j        d d                    t          |d dd df         d           t          |dd d df         d           t          |d ddd f         d           t          |dd dd f         d           d S )Nr   r   r   r   r   r   r   r   T)r   r   	slic_zeror   r   r   r   r%   s      r)   test_slic_zeror     s   
)


"
"C
(;

CCSbS!CSbS!CRSS!4#**#)*,,,,CCaLCaL
sqTq
I
I
IC RYs^^$$a(((CIcrcN+++SbS#2#X"""RSS#2#X"""SbS"##X"""RSS"##X"""""r+   c            	         t           j                            d          } t          j        d          }d|d dd df<   d|dd d df<   d|dd dd f<   |d|                     |j                  z  z  }d	||d	k    <   d||dk     <   t          |dd
d	d dd          }t          j        |                                t          j	        |j
                  k              sJ d S )Nr   r6   r7   r   r8   r9   r:   r   r   r   Fr;   )r   r   r   r    r!   r"   r
   allravelrw   r   r%   s      r)   test_more_segments_than_pixelsr     s    
)


"
"C
(8

CCSbSMCSbSMCRSSM6CJJCIJ....CCaLCaL
  C 6#))++38!4!445555555r+   c                     t           j                            d          } t          j        d          }d|ddddf<   t          j        d          }d|d dd ddf<   d|dd d ddf<   d|dd dd df<   |d|                     |j        	          z  z  }t          j        |dd|
           t          |ddd|          }t          t          t          j
        |                    d           t          |j        |j        d d                    t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |d dd d f         d           t          |dd d d f         d           t          |d d d df         d           t          |d d dd f         d           d S )Nr   r6   r   r   r   r   r   r   r0   r   F)r   r   r   mask   r   r   r2   r&   mskr'   r(   s       r)   test_color_2d_maskr   0  s)   
)


"
"C
(8

CC"ad
O
(;

CCSbS!CSbS!CRSS!4#**#)*,,,,CGCA3
sqC
P
P
PC RYs^^$$a(((CIcrcN+++QrT1R4Z!$$$RUAbD[!1%%%QrT2b5[!1%%%RUBrE\"A&&&RaRUQRSS!!!Va   QQQUQQQQVa     r+   c                     t           j                            d          } t          j        d          }d|ddddf<   t          j        d          }d|d dd dddf<   d|d ddd ddf<   d|dd d ddd	f<   d|dd dd d	d
f<   |d|                     |j                  z  z  }t          j        |dd|           t          |dd|          }t          t          t          j
        |                    d           t          |j        |j        d d                    t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |d dd d f         d           t          |dd d d f         d           t          |d d d df         d           t          |d d dd f         d           d S )Nr   )r   r   r   r   r   r-   r   r   r/   r.   r   r   r0   F)r   r   r   r   r   r   r2   r   s       r)   test_multichannel_2d_maskr   K  sO   
)


"
"C
(8

CC"ad
O
(;

CCSbS!A#CRSS!A#CSbS!A#CRSS!A#4#**#)*,,,,CGCA3
squ3
G
G
GC RYs^^$$a(((CIcrcN+++QrT1R4Z!$$$QrT2b5[!1%%%RUAbD[!1%%%RUBrE\"A&&&RaRUQRSS!!!Va   QQQUQQQQVa     r+   c            	         t           j                            d          } t          j        d          }d|ddddf<   t          j        d          }d|d dd df<   d|dd d df<   d	|dd dd f<   |d
|                     |j                  z  z  }t          j        |dd|           t          |dddd d|          }t          t          t          j
        |                    d           t          |j        |j                   t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |d dd d f         d           t          |dd d d f         d           t          |d d d df         d           t          |d d dd f         d           d S )Nr   r6   r   r   r   r7   r   r8   r9   r:   r   r0   r   Fr   r   r<   r=   r>   r   r   r   r2   r   s       r)   test_gray_2d_maskr   g  s)   
)


"
"C
(8

CC"ad
O
(8

CCSbSMCSbSMCRSSM6CJJCIJ....CGCA3
  C RYs^^$$a(((CI&&&QrT1R4Z!$$$QrT2b5[!1%%%RUAbD[!1%%%RUBrE\"A&&&RaRUQRSS!!!Va   QQQUQQQQVa     r+   c                     t           j                            d          } t          j        d          }d|d d ddf<   t          j        g dg dgt
                    }|d|                     |j                  z  z  }t          j        g d	g d	gt                    }t          |d
ddgd |          }t          ||           d S )Nr   )r   r/   r   r   r|   r}   rH   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   s        r)   test_list_sigma_maskr     s    
)


"
"C
(6

CC1R4L
(&&&(:(:(:;U
C
CC3++++C8///1C1C1CDcJJLSQr1gDsSSSIL)))))r+   c            	         t           j                            d          } t          j        d          }d|d d ddf<   t          j        g dg dgt
                    }t          j        g dg dgt                    }t          j        g d	g d
gt                    }|d|                     |j                  z  z  }t          |ddd d|          }t          |ddddgdd |          }t          ||           t          ||           d S )Nr   )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   rH   r   r   r9   )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   s          r)   test_spacing_maskr     s.   
)


"
"C
(6

CC1R4L
(OOO___5u
=
=C///???!CSIIHooo?EEM3++++C3S  N Q  J !2333]+++++r+   c            
         t          j        d          } d| d d ddf<   t          j        g dg dg dgt                    }t	          |ddd	d
| d           }t	          |ddd
d
| d           }t	          |ddd	d
d| d           }t          j        g dg dg dgt                    }t          j        g dg dg dgt                    }t          ||           t          ||           t          ||           d S )N)r   r/   r   r   r}   r   r   r   r   TF)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   s          r)   test_enforce_connectivity_maskr     s   
(6

CC1R4L
(&&&(:(:(:<N<N<NOQV
W
WC	!   !	"   "&	!	" 	" 	" x			///1C1C1CDe  (			///1C1C1CDe  #%5666&(;<<<+-=>>>>>r+   c                     t           j                            d          } t          j        d          }d|ddddf<   t          j        d          }d|d dd ddf<   d|dd d ddf<   d|dd dd df<   |d|                     |j        	          z  z  }t          j        |dd|
           t          |ddd|          }t          t          t          j
        |                    d           t          |j        |j        d d                    t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |ddddf         d           t          |d dd d f         d           t          |dd d d f         d           t          |d d d df         d           t          |d d dd f         d           d S )Nr   r6   r   r   r   r   r   r   r   r0   r   T)r   r   r   r   r   r   r   r2   r   s       r)   test_slic_zero_maskr     s)   
)


"
"C
(8

CC"ad
O
(;

CCSbS!CSbS!CRSS!4#**#)*,,,,CGCA3
sqT
D
D
DC RYs^^$$a(((CIcrcN+++QrT1R4Z!$$$QrT2b5[!1%%%RUAbD[!1%%%RUBrE\"A&&&RaRUQRSS!!!Va   QQQUQQQQVa     r+   c            	      J   t           j                            d          } t          j        d          }d|ddddf<   t          j        d          }d|d dd df<   d|dd d df<   d	|dd dd f<   |d
|                     |j                  z  z  }t          j        |dd|           t          |dddd d|          }t          j        |ddddf         j	                  dz   }t          j
        |ddddf                                         |k              sJ d S )Nr   r6   r   r   r   r7   r   r8   r9   r:   r   r0   r   Fr   )r   r   r   r    r!   r"   r3   r
   rw   r   r   r   )r&   r   r'   r(   expecteds        r)   #test_more_segments_than_pixels_maskr     sP   
)


"
"C
(8

CC"ad
O
(8

CCSbSMCSbSMCRSSM6CJJCIJ....CGCA3
  C yQrT1R4Z-..2H6#adAbDj/''))X56666666r+   c                  Z   t          j        d          } d| ddddddf<   t           j                            d          }t          j        d          }g }| j        D ]:}|dz  }|                    t          d |          t          |d           f           ;t          t          |           }t          t          ddgfdz             }t          ||          D ]
\  }}|||<   |d|
                    |j        	          z  z  }t          j        |dd|
           t          |dd|           }	t          t          t          j        |	                    d           t          |t!          dd                    D ]*\  }}t          |	|         ddddddf         |           +d S )Nru   r   r   r   r   rf   r   r   r   r0   r.   )r   r   r   	   )r   r    r   r   r"   rh   ri   rj   r   rk   r!   r3   r
   r   r#   r$   rl   )
r   r&   r'   rm   rn   ro   rp   rq   rr   r(   s
             r)   test_color_3d_maskr     s   
(<
 
 CC"adAbD
)


"
"C
(?
#
#CFI F Fq=uT8,,eHd.C.CDEEEE'6"##F'aVIM+,,FFF##  1A4#**#)*,,,,CGCA3
s!
4
4
4C RYs^^$$a(((FE!QKK(( 2 21SVAbD!B$",-q11112 2r+   c                  R   t          j        d          } d| ddddddf<   t           j                            d          }t          j        d          }g }|j        D ]:}|dz  }|                    t          d |          t          |d           f           ;t          t          |           }t          j	        ddd          }t          ||          D ]
\  }}|||<   |d|                    |j                  z  z  }t          j        |dd|	           t          |ddd d
|           }	t          t          t          j        |	                    d           t          |t#          dd                    D ]*\  }}
t          |	|         ddddddf         |
           +d S )Nru   r   r   r   r   r.   rv   r   r0   F)r   r   r=   r>   r   r   )r   r    r   r   r"   rh   ri   rj   r   linspacerk   r!   r3   r
   r   r#   r$   rl   )r   r&   r'   rm   rn   ro   rx   rq   ry   r(   rr   s              r)   test_gray_3d_maskr   *  s   
(<
 
 CC"adAbD
)


"
"C
(<
 
 CFI F Fq=uT8,,eHd.C.CDEEEE'6"##F[Aq!!FVV$$  2A53::39:----CGCA3
15s  C
 RYs^^$$a(((FE!QKK(( 2 21SVAbD!B$",-q11112 2r+   dtype)float16float32float64uint8r   c                     t           j                            dd                              |           }t	          |dd            d S )N   r   )r   r=   )r   r   randrT   r
   )r   r'   s     r)   test_dtype_supportr   D  sB    
)..R
 
 
'
'
.
.C 	!$//////r+   c            	         t           j                            d          } |                     d          dk    }t	          j        |d          }d}t          ||dddd	d
          }|                                |k    sJ dS )a  Tests the fix for a bug producing a label < start_label (gh-6240).

    For the v0.19.1 release, the `img` and `slic` call as below result in two
    non-contiguous regions with value 0 despite `start_label=1`. We verify that
    the minimum label is now `start_label` as expected.
    r   )r.      r   r   )r   Nr/   r   Tr   )r   r=   r   r<   r   max_num_iter)r   r   r   standard_normalr   gaussianr
   min)r&   r'   r   superps       r)   test_start_label_fixr   L  s     )


"
"C


g
&
&
*C

3a
(
(
(CK!  F ::<<;&&&&&&r+   c                  ,   t          j        dt                    } t           j        | d<   t	          j        t                    5  t          | d            d d d            n# 1 swxY w Y   t          j        |            }t          | |d            d S N)r   r   )r   )r   r   rB   )r   r=   )	r   r    r   nanrC   rD   rE   r
   isnan)r'   r   s     r)   'test_raises_ValueError_if_input_has_NaNr   f  s    
(6
'
'
'CCI	z	"	" % %St$$$$% % % % % % % % % % % % % % % HSMM>D4d++++++s   A""A&)A&infc                    t          j        dt                    }| |d<   t          j        t
                    5  t          |d            d d d            n# 1 swxY w Y   t          j        |          }t          ||d            d S r   )r   r    r   rC   rD   rE   r
   isfinite)r   r'   r   s      r)   'test_raises_ValueError_if_input_has_infr   p  s    
(6
'
'
'CCI	z	"	" % %St$$$$% % % % % % % % % % % % % % % ;sD4d++++++s   AAA)rH   )/	itertoolsr   numpyr   rC   numpy.testingr   skimager   r   r   skimage._shared.testingr   r	   skimage.segmentationr
   r*   r4   r?   rG   rO   rd   rs   rz   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r    r+   r)   <module>r      s              & & & & & & / / / / / / / / / / F F F F F F F F % % % % % % # # #(# # #(# # #6! ! !3 3 3 3/ / /8     *     :* * *, , ,,D D D-? -? -?`# # #*6 6 6*! ! !6! ! !8! ! !D* * *, , ,0/? /? /?d! ! !67 7 702 2 222 2 24 "S"S"STT0 0 UT0' ' '4, , , "&"& 122, , 32, , ,r+   