
    k hcT              	          d dl Zd dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZ d dlmZ d)dZd*dZ ej"                  d	ej$                  ej&                  ej(                  g      ej*                  j-                  d
      d               Zej*                  j-                  d      ej*                  j-                  d
      ej*                  j-                  d       ej"                  d	ej$                  ej&                  ej(                  g      d                             Zej*                  j-                  d      ej*                  j-                  d
      ej*                  j-                  d       ej"                  d	ej$                  ej&                  ej(                  g      d                             Z ej"                  d	ej$                  ej&                  ej(                  g      ej*                  j-                  d
      d               Zej*                  j-                  d
      ej*                  j-                  d      d               Zej*                  j-                  d
      d        Zej*                  j-                  d
      d        Zej*                  j-                  d
      d        Z ej"                  d	ej&                  ej(                  g      d        Zd Z  ej"                  dg d       ej"                  d	ej&                  ej(                  g      d               Z! ej"                  d	ej&                  ej(                  g      d        Z"d Z# ee	xr e
 d      d        Z$d  Z%ej*                  j-                  d
      d!        Z&d" Z'd# Z(d$ Z)ej*                  j-                  d
      d%        Z*d& Z+ej*                  j-                  d
      d'        Z,ej*                  j-                  d
      d(        Z-y)+    N)testing)expected_warnings)xfailarch32is_wasm)random_walker)resizec                    || }t         j                  j                  d       t        j                  | |f      dt         j                  j	                  | |      z  z   }t        | dz        }d|| dz  |z
  | dz  |z   |dz  |z
  |dz  |z   f<   dt         j                  j	                  d|z  dz
  d|z  dz
        z  || dz  |z
  dz   | dz  |z   dz
  |dz  |z
  dz   |dz  |z   dz
  f<   d|| dz  |z
  |dz  |dz  z
  |dz  |dz  z   f<   t        j                  |      }d|| dz  |dz  f<   d|| dz  |dz  z   |dz  |dz  z
  f<   ||fS 	Ni  皙?         r         )nprandomseedzerosrandnint
zeros_like)lxlydatasmall_lseedss        /home/developers/rajanand/mypropertyqr-fmb-refixing-v2/venv/lib/python3.12/site-packages/skimage/segmentation/tests/test_random_walker.pymake_2d_syntheticdatar      s   	zIINN488RHbiioob"&= ==D"'lG 	
 	
a'B!Gg--rQw/@27WCT/TT 	biiooa'kAoq7{Q?? 	
a'Aa' 1A 55
a'Aa' 1A 55	7 PQDq7	B!Ggl2R1Ww!|5KK	KLMM$EE"'27
<=E"'GqL
 "'GqL"8
89;    c                    || }|| }t         j                  j                  d       t        j                  | ||f      dt         j                  j	                  | ||      z  z   }t        | dz        }d|| dz  |z
  | dz  |z   |dz  |z
  |dz  |z   |dz  |z
  |dz  |z   f<   d|| dz  |z
  dz   | dz  |z   dz
  |dz  |z
  dz   |dz  |z   dz
  |dz  |z
  dz   |dz  |z   dz
  f<   t        j                  d|dz  g      }d|| dz  |z
  |dz  |z
  |dz  |z   |dz  |z
  |dz  |z   f<   t        j                  |      }d|| dz  |dz  |dz  f<   d|| dz  |dz  z   |dz  |dz  z
  |dz  |dz  z
  f<   ||fS r   )r   r   r   r   r   r   maxr   )r   r   lzr   r   	hole_sizer   s          r   make_3d_syntheticdatar%      s    	z	zIINN488RRL!C"))//"b"*E$EED"'lG
 	
	 	
a'B!Gg--
a'B!Gg--
a'B!Gg--	/ 	
	 	
a'Aa' 1A 55
a'Aa' 1A 55
a'Aa' 1A 55	7 7a<()I
 	
	 	
a'
a)bAg	11
a)bAg	11	3
 MM$E'(E"'27B!G
#$TUE"'GqL
 "'GqL"8"'GqL:P
PQ;r    dtypezhignore:Changing the sparsity structure of a csr_matrix is expensive:scipy.sparse.SparseEfficiencyWarningc                    d}d}| t         j                  k(  rdnd}t        ||      \  }}|j                  | d      }t	        |||d      }|dd	d
df   dk(  j                         sJ |j                  |j                  k(  sJ t	        |||dd      }|ddd	d
df   |ddd	d
df   k\  j                         sJ |j                  |j                  k(  sJ d|d<   t	        |||dd      }|ddd	d
df   |ddd	d
df   k\  j                         sJ t        |      dk(  sJ |j                  |j                  k(  sJ y )NF   d   Z      Fcopybfbetamode-   (   <   r   Tr0   r1   return_full_probr   r      )7   P   )r   float64r   astyper   allshapelen)r&   r   r   r0   r   labels	labels_bffull_prob_bfs           r   
test_2d_bfrB   >   s   
 
B	B "**$2"D(R0LD&;;u5;)DdFDAIbeRUl#q(--///::%%% f4dTL BrE2b5)\!RUBrE/-JJOOQQQ::%%%F6N f4dTL BrE2b5)\!RUBrE/-JJOOQQQ|!!!::%%%r    z0ignore:"cg" mode may be slow:UserWarning:skimagezrignore:"cg_mg" not available, it requires pyamg to be installed. The "cg_j" mode will be used instead.:UserWarningc                    d}d}t        ||      \  }}|j                  | d      }t        ||dd      }|dd	d
df   dk(  j                         sJ |j                  |j                  k(  sJ t        ||ddd      }|ddd	d
df   |ddd	d
df   k\  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)   Fr,   r*   cgr/   r+   r2   r3   r4   r   Tr5   r   r   r   r;   r   r<   r=   r&   r   r   r   r?   	labels_cg	full_probs          r   
test_2d_cgrI   ]   s     
B	B(R0LD&;;u5;)DdF$?IbeRUl#q(--///::%%%dF$QUVIaB2o&)Ar"ubeO*DDIIKKK::%%%r    z-ignore:Implicit conversion of A to CSR::pyamgc                    d}d}t        ||      \  }}|j                  | d      }t        ||dd      }|dd	d
df   dk(  j                         sJ |j                  |j                  k(  sJ t        ||ddd      }|ddd	d
df   |ddd	d
df   k\  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)   Fr,   r*   cg_mgr/   r+   r2   r3   r4   r   Tr5   r   r   rE   )r&   r   r   r   r?   labels_cg_mgrH   s          r   test_2d_cg_mgrM   t   s     
B	B(R0LD&;;u5;)D vBWELB2&!+00222::%%%f2GdI aB2o&)Ar"ubeO*DDIIKKK::%%%r    c                    d}d}t        ||      \  }}|j                  | d      }t        ||dd      }|dd	d
df   dk(  j                         sJ |j                  |j                  k(  sJ t        ||ddd      }|ddd	d
df   |ddd	d
df   k\  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)   Fr,   r*   cg_jr/   r+   r2   r3   r4   r   Tr5   r   r   rE   rF   s          r   test_2d_cg_jrP      s    
 
B	B(R0LD&;;u5;)DdF&AIbeRUl#q(--///::%%%dF&SWXIaB2o&)Ar"ubeO*DDIIKKK::%%%r    c                  h   d} d}t        | |      \  }}d||j                         z
  z  |j                         |j                         z
  z  }|j                  t        j
                        }t        ||dd      }|ddd	d
f   dk(  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)      r*   rK   r/   r+   r2   r3   r4   r   )	r   minr"   r;   r   uint8r   r<   r=   )r   r   r   r?   rL   s        r   
test_typesrU      s     
B	B(R0LD&$#$dhhj)@AD;;rxx D vBWELB2&!+00222::%%%r    c                      d} d}t        | |      \  }}d||dk(  <   t        ||dd      }|dd	d
df   dk(  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)   r   r   r*   r.   r/   r+   r2   r3   r4   )r   r   r<   r=   )r   r   r   r?   r@   s        r   test_reorder_labelsrW      sz     
B	B(R0LD&F6Q;dF$?IbeRUl#q(--///::%%%r    c                     d} d}t        | |      \  }}d|ddddf<   d|ddd	d
f<   t        ||d      }|j                  | |f      ddddf   dk(  j                         sJ |j                  |j                  k(  sJ y )Nr(   r)   
      .   2   !   &   r*   r0   r+   r2   r3   r4   r   )r   r   reshaper<   r=   )r   r   r   r?   s       r   test_2d_inactiverc      s     
B	B(R0LD&F2b5"R%<F2b5"R%<4b1FNNB8$RUBrE\2a7<<>>>::%%%r    c                     t        j                  g dg dg dg      } t        j                  g dg dg dg      }t        j                  g dg dg dg      }t        | |d	
      }t         j                  j	                  ||       y )N)i2  i1  i1  )iS2  iq4  i#/  )i.  i.  i0  )r   rY   r   )r   rY   r   )r   r   rY   )r   rY   r   )r   r   rY   rZ   ra   )r   asarrayr   r   assert_array_equal)r   markersexpected_labelsr?   s       r   test_2d_laplacian_sizeri      sl     ::	 57LMD jj*j*=>Gjj*j*!EFO4r2FJJ!!&/:r    c                 b   d}|||}}}t        |||      \  }}|j                  | d      }t        dg      5  t        ||d      }d d d        |j	                  |j
                        ddddddf   d	k(  j                         sJ |j
                  |j
                  k(  sJ y # 1 sw Y   _xY w)
N   Fr,   @Changing the sparsity structure|"cg" mode|scipy.sparse.linalg.cgrD   r1         r   )r%   r;   r   r   rb   r=   r<   )r&   nr   r   r#   r   r?   s          r   test_3drq      s    
AAqBB(R4LD&;;u5;)D		KL
 8 tV$78 NN4::&r"ubeRU':;q@EEGGG::%%%8 8s   B%%B.c                  X   d} | | | }}}t        |||      \  }}d|ddddddf<   t        dg      5  t        ||d	      }d d d        |j                  |j                        d
dd
dd
df   dk(  j                         sJ |j                  |j                  k(  sJ y # 1 sw Y   _xY w)Nrk   rY   r   r+         zMChanging the sparsity structure|"cg" mode|CObject type|scipy.sparse.linalg.cgrD   rm   rn   ro   r   )r%   r   r   rb   r=   r<   )rp   r   r   r#   r   r?   s         r   test_3d_inactiveru      s    
AAqBB(R4LD&!#F1R4B2	[	

 8
 tV$78 NN4::&r"ubeRU':;q@EEGGG::%%%8 8s   B  B)channel_axis)r   r   rY   c                    d\  }}t        ||      \  }}|j                  | d      }|dt        j                  f   j	                  dd      }t        j
                  |d|      }t        dd	g      5  t        ||d
|      }d d d        t        j
                  ||d      }|d   j                  |j                  k(  sJ t        dg      5  t        |d   |d
       d d d        j                  |j                        ddddf   dk(  j                         sJ |d   j                  |j                  k(  sJ y # 1 sw Y   xY w# 1 sw Y   kxY w)N)r(   r)   Fr,   .r   rY   axisrl   z The probability range is outsiderD   r1   rv   .r   rm   r+   r2   r3   r4   )r   r;   r   newaxisrepeatmoveaxisr   r   r=   rb   r<   )r&   rv   r   r   r   r?   multi_labelss          r   test_multispectral_2dr      s[    FB(R0LD&;;u5;)DRZZ '''3D;;tR.D	N.	

 Y %T6<XY ;;t\2.D<---		KL
 7 	d6lF67   .r"ube|<AFFHHH<---Y Y7 7s   2D;E;EEc                    d}|||}}}t        |||      \  }}|j                  | d      }|dt        j                  f   j	                  dd      }t        dg      5  t        ||d	d
      }d d d        |d   j                  |j                  k(  sJ t        dg      5  t        |d   |d	      }d d d        j                  |j                        ddddddf   dk(  j                         sJ j                  |j                        ddddddf   dk(  j                         sJ |d   j                  |j                  k(  sJ y # 1 sw Y   xY w# 1 sw Y   xY w)Nrk   Fr,   .r   rY   rx   rl   rD   rz   r{   rm   rn   ro   )
r%   r;   r   r|   r}   r   r   r=   rb   r<   )	r&   rp   r   r   r#   r   r?   r   single_labelss	            r   test_multispectral_3dr     s   
AAqBB(R4LD&;;u5;)DRZZ '''3D		KL
 O %T62NO <---		KL
 G &d6lFFG   .r"ubeRU/BCqHMMOOO!!&,,/2r"ube0CDINNPPP<---O O
G Gs   E EEE"c                     d} | | | }}}t        |||      \  }}t        j                  | | | dz  f      }t        |      D ]#  \  }}t	        || | dz  fdd      ||d d d d f<   % t        |dz        }	t        j                  |      }
d|
|dz  |dz  |dz  f<   d|
|dz  |	dz  z   |dz  |	dz  z
  |dz  |	d	z  z
  f<   t        d
g      5  t        ||
dd      }
d d d        |
ddddddf   dk(  j                         sJ y # 1 sw Y   +xY w)Nrk   r   constantFr1   anti_aliasingr   r   r   r   rl   rD   )      ?r   g      ?r1   spacingrn   ro      	   )
r%   r   r   	enumerater	   r   r   r   r   r<   )rp   r   r   r#   r   _
data_anisoiyzr   labels_anisos              r   test_spacing_0r   '  sb   
AAqBB#BB/GD! 1aa.)J4 
2$AF*E

1a7
 "'lG==,L./Lq"'27*+ 	
 
a'Q,a'Q, 6a'Q,8NN
 
	KL
 
 %4

 B2qs*+q055777
 
s   DD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                  "   d} | | | }}}t        |||      \  }}t        j                  | | dz  | f      }t        |      D ]#  \  }}t	        || dz  | fdd      ||d d d d f<   % t        |dz        }	t        j                  |      }
d|
|dz  |dz  |dz  f<   d|
|dz  |	dz  z   ||	dz  z
  |dz  |	dz  z
  f<   t        d	g      5  t        ||
d
d      }
d d d        |
ddddddf   dk(  j                         sJ t        j                  | | dz  | f      }t        |j                  d         D ]*  }t	        |d d dd d f   | dz  | fdd      ||d d d d f<   , t        |dz        }	t        j                  |      }d||dz  |dz  |dz  f<   d|||	dz  z
  |dz  |	dz  z   |dz  |	dz  z
  f<   t        d	g      5  t        ||d
d      }d d d        |ddddddf   dk(  j                         sJ y # 1 sw Y   %xY w# 1 sw Y   8xY w)Nrk   r   r   Fr   r   r   r   rl   rD   )r          @r   r   rn   ro   rs   "   )r   r   r   )r%   r   r   r   r	   r   r   r   r   r<   ranger=   )rp   r   r   r#   r   r   r   r   r   r   r   labels_aniso2s               r   test_spacing_1r   G  s    	AAqBB#BB/GD! 1a!eQ-(J4 
2$Q
5

1a7
 "'lG==,L./Lq"'27*+VWLq7a<'gl):B!GgQRl<RRS 
	KL
 
 %4

 B2r"u,-277999 1a!eQ-(J4::a=! 
$AqMAE1:Je

1a7
 "'lGMM*-M/0M"'27B!G+,WXM"w!|#R1Ww!|%;R1WwRS|=SST 
	KL
 
 &D/

 "R%B2-.!388:::;
 
.
 
s   G8>H8HHc                     t        j                  d      } t        j                  d      }t        dg      5  t        | |      }d d d        t         j                  j                  |       d|d d d df<   t        j                  |dk(  dt         j                  f   |dk(  dt         j                  f   fd      }t        dg      5  t        | |d	
      }d d d        t         j                  j                  |       t        j                  dd      } t        j                  g d      }t        j                  g d      }t        j                  ||f      D ]  \  }}d	| |   |<    t        j                  dt         j                        }	|D ]  \  }}d|	|   |<    d|	| dk(  <   t        dg      5  t        | |	      }
d d d        t        j                  
|	dk(     dk(        sJ t        j                  |
|	dk(     dk(        sJ t        dg      5  t        | |	d	
      }d d d        y # 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrZ   rZ   zReturning provided labelsr7   r   r   .r   rx   Tr6   F))   r   r   r   r   r   )r   r   ))r7   r   )r   r   )r   r   )r7   r   )r   r   )r   r7   r7   r7   r&   rY   r   z!All unlabeled pixels are isolated)r   onesr   r   r   rf   concatenater|   fullarrayvstackr   int8r<   )imgr?   pass_throughexpectedtestobject_Aobject_Bxyrg   output_labelss              r   test_trivial_casesr     s?   
''(
CWWXF	78	9 2$S&12JJ!!,7 F1bqb5M~~
A+sBJJ	'&A+sBJJ)GHqH 
78	9 AS&4@AJJ!!$1 ''(E
"Cxx89HxxPQH		8X./ 1Aq	 hhxrww/G 1
1 GC1H	?@	A 4%c73466-1-233366-1-3444	?@	A BS'DAB B=2 2A A 4 4
B Bs/   H.H;5II.H8;IIIc                  .   t         j                  j                  d       t        j                  d      dt         j                  j	                  d      z  z   } t        j
                  dt         j                        }d|d<   d|d	<   t        | |d
       y )N*   r   g?sizer   r   r   r   r   r   )r   r   r   )r   r   r   r   normalr   rT   r   r   r?   s     r   test_length2_spacingr     sp     IINN2
''(
cBII$4$4($4$CC
CCXXhbhh/FF4LF4L#vz2r    c                     t        j                  d      } t        j                  d      }t        j                  t
              5  t        | |       d d d        t        j                  t
              5  t        | |d       d d d        t         j                  j                  d       t         j                  j                  d      } t        j                  d      j                  | j                        }t        j                  t
              5  t        | |       d d d        t        j                  t
              5  t        | |d       d d d        t         j                  j                  d      } t        j                  d      }d	|d
<   d|d<   t        j                  t
              5  t        | |d       d d d        t         j                  j                  d      } t        j                  d      }t        j                  t
              5  t        | |d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   )xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrZ   rY   )rv   r   )r7   r7   r7   r7   r7   r      r   r   r   r   r   )r   r   badrm   )r   r   aranger   raises
ValueErrorr   r   r   r   rb   r=   r   r   s     r   test_bad_inputsr     s   
''"+CYYr]F	
	# #c6"#	
	# 4c634 IINN2
))



0CYYt_$$SYY/F	
	# #c6"#	
	# 4c634 ))



)CXXhFF4LF4L	
	# 1c6401 ))



)CXXhF	
	# /c6./ /3# #4 4# #4 41 1/ /sH   H)2H6I=I,II))H36I III&)I2c                     t         j                  j                  d       t         j                  j                  d      } t        j                  | j                         }d|d<   d|dd dd f<   d|d<   d|d<   t        d	g      5  t        | |      }d d d        d   dk(  sJ t        d	g      5  t        | |d
      }d d d        |d   dk(  sJ |d   dk(  sJ y # 1 sw Y   KxY w# 1 sw Y   *xY w)Nr   r   r   r   r   r7   r   r   r   r   r   WChanging the sparsity structure|The probability range is outside|scipy.sparse.linalg.cgTr   r   r   r   r   r   r   r   r   r   r   r=   r   r   amaskress      r   test_isolated_seedsr     	   IINN1
		 AGGAGGDDJDQRLDJDJ 
e	

 %
 At$% t9>>	e	

 <
 Atd;< w<1w<1% %< <   C0C(C%(C1c                     t         j                  j                  d       t         j                  j                  d      } t        j                  | j                         }d|d<   d|dd dd f<   d|d<   d|d<   t        d	g      5  t        | |      }d d d        d   dk(  sJ t        d	g      5  t        | |d
      }d d d        |d   dk(  sJ |d   dk(  sJ y # 1 sw Y   KxY w# 1 sw Y   *xY w)Nr   r   r   r7   r   r   r   r   r   Tr   r   r   r   r   s      r   test_isolated_arear     r   r   c                  $   t         j                  j                  d       t         j                  j                  d      } t        j                  | j                         }d|d<   d|dd dd f<   d|d<   d|d<   t        d	g      5  t        | |d
      }d d d        t        | |d
d      }|d   dk(  sJ |d   dk(  sJ t        | |d
d      }|d   dk(  sJ |d   dk(  sJ t        | |d
d      }|d   dk(  sJ |d   dk(  sJ y # 1 sw Y   sxY w)Nr   r   r   r   r7   r   r   r   r   Tr   rZ   )r6   r0   r   r   r   )r6   prob_tolg&.>)r6   tolr   r   s      r   test_prob_tolr     s@    IINN1
		 AGGAGGDDJDQRLDJDJ	e	

 <
 Atd;< 4$R
@Cw<1w<1 4$
FCw<1w<1 4$D
ACw<1w<1)< <s   DDc                  `    ddl m}  | j                  }	 dd l}|J y # t        $ r |J Y y w xY w)Nr   )random_walker_segmentation)skimage.segmentationr   UmfpackContextscikits.umfpackImportError)r   r   scikitss      r   test_umfpack_importr   =  s?    ?/>>N&))) &%%%&s    --c                     t         j                  j                  d      } t        j                  dt              }t	        j
                  t        d      5  t        | |       d d d        d|d<   t	        j
                  t        d      5  t        | |       d d d        d|d<   t        | |       y # 1 sw Y   PxY w# 1 sw Y   'xY w)	N)r   r   r   zNo seeds provided)matchrY   r   r   r   )r   r   r   r   r   r   r   r   )imager?   s     r   test_empty_labelsr   J  s     IIV$EXXfC(F	
*=	> %eV$% F4L	
*=	> %eV$% F4L% % %% %s   B2B>2B;>Cc                  B   t        dd      \  } }| j                  t        j                  d      } t        j                  dt        j                        }t        | ||dd	
      }|ddddf   dk(  j                         sJ | j                  |j                  k(  sJ y )Nr(   r)   )r   r   Fr,   r   r   r*   rO   )r   r0   r1   r+   r2   r3   r4   )r   r;   r   float16r   r   r<   r=   )r   r?   r   rG   s       r   test_float16_upcastingr   ]  s     )B37LD&;;rzz;.Dggarzz*GdFG"6RIbeRUl#q(--///::%%%r    )N)NN).numpyr   pytestskimage._sharedr   skimage._shared._warningsr   skimage._shared.testingr   r   r   r   r   skimage.transformr	   r   r%   parametrizer   float32r:   markfilterwarningsrB   rI   rM   rP   rU   rW   rc   ri   rq   ru   r   r   r   r   r   r   r   r   r   r   r   r   r    r    r   <module>r      s     # 7 : : . $(> Wrzz2::rzzBCn& D&6 NOn x Wrzz2::rzzBC& D P& KLn x Wrzz2::rzzBC& D M&" Wrzz2::rzzBCn
& D
& n x&& n&& n&& n
;
; Wrzz2::67
& 8
&& ^Z0Wrzz2::67. 8 1.2 Wrzz2::67. 8.(8@ $W	C2;2;j$BN n33/B<< n  F
& n!!  n&&r    