
    |h                        d dl Zd dlmZmZ d dlmZ d dlmZ d dl	Z	e	j                  j                  deej                  ej                  g      d        Zd Zd Zd	 Zd
 Zd Zd Zd Ze	j                  j                  dej.                  ej0                  ej2                  eej4                  ej6                  ej8                  ej:                  ej                  ej<                  f
      e	j                  j                  dd      d               Zd Z d Z!e	j                  j                  dd      e	j                  j                  dd      d               Z"e	j                  j                  dd      e	j                  j                  dd      e	j                  j                  dd      d                      Z#d Z$d Z%d Z&d Z'y)    N)join_segmentationsrelabel_sequential)testingassert_array_equaldtypec                    t        j                  g dg dg dg|       }t        j                  g dg dg dg|       }t        ||      }t        j                  g dg dg d	g      }t        ||       t        ||d
      \  }}}t        ||   |       t        ||   |       t        j                  g dg dg      }t	        j
                  t              5  t        ||       d d d        y # 1 sw Y   y xY w)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   T)return_mapping)r   r   r   r
   )nparrayr   r   r   raises
ValueError)r   s1s2jj_refm1m2s3s           c/var/www/html/test/engine/venv/lib/python3.12/site-packages/skimage/segmentation/tests/test_join.pytest_join_segmentationsr   	   s    	<|<E	JB	<|<E	JB 	2r"AHHlL,?@Eq%  #2r$?IAr2r!ub!r!ub! 
<.	/B	
	# #2r"# # #s   C11C:c                 @    t        ||    |       t        ||   |        y Nr   )arar_relabfwinvs       r   _check_mapsr$   !   s    r"vx(s8}b)    c                  v   t        j                  g d      } t        |       \  }}}t        | |||       t        j                  g d      }t	        ||       t        j
                  dt              }d|d<   d|d<   d|d<   d	|d
<   d|d<   t	        ||       t        j                  g d      }t	        ||       y )Nr
   r
   r   r      c   *   )r
   r
   r   r   r   r   r   d   r
   r   r   r   r(   r   r*   r)   )r   r
   r   r(   r*   r)   r   r   r   r$   r   zerosintr    r!   r"   r#   ar_relab_reffw_refinv_refs          r   test_relabel_sequential_offset1r3   &   s    	)	*B*2.Hb#Hb#&8812Lx.XXc3FF1IF1IF1IF2JF2Jr6"hh+,GsG$r%   c                  z   t        j                  g d      } t        | d      \  }}}t        | |||       t        j                  g d      }t	        ||       t        j
                  dt              }d|d<   d|d<   d|d	<   d	|d
<   d|d<   t	        ||       t        j                  g d      }t	        ||       y )Nr'   r   offset)r   r      r7      	   r(   r+   r
   r7   r8   r(   r*   r9   r)   
r   r   r   r   r   r
   r   r(   r*   r)   r,   r/   s          r   test_relabel_sequential_offset5r;   7   s    	)	*B*2a8Hb#Hb#&8812Lx.XXc3FF1IF1IF1IF2JF2Jr6"hh78GsG$r%   c                  z   t        j                  g d      } t        | d      \  }}}t        | |||       t        j                  g d      }t	        ||       t        j
                  dt              }d|d<   d|d<   d|d	<   d	|d
<   d|d<   t	        ||       t        j                  g d      }t	        ||       y )Nr
   r
   r   r   r(   r)   r*   r   r   r5   r   r   r7   r7   r8   r9   r(   r   r+   r
   r7   r8   r(   r*   r9   r)   r:   r,   r/   s          r   %test_relabel_sequential_offset5_with0r?   H   s    	,	-B*2a8Hb#Hb#&8845Lx.XXc3FF1IF1IF1IF2JF2Jr6"hh78GsG$r%   c                     t        j                  g dt         j                        } t        | d      \  }}}t	        | j                  t              |||       t        j                  g d      }t        ||       t        j                  dt              }d|d<   d|d<   d	|d
<   d
|d<   d|d<   t        ||       t        j                  g d      }t        ||       y )Nr=   r   r   r5   r>   r+   r
   r7   r8   r(   r*   r9   r)   r:   )	r   r   uint8r   r$   astyper.   r   r-   r/   s          r   test_relabel_sequential_dtyperC   Y   s    	,BHH	=B*2a8Hb#		#"c28845Lx.XXc3FF1IF1IF1IF2JF2Jr6"hh78GsG$r%   c                     t        j                  t         j                        j                  } t        j                  g dt         j                        }t        ||       \  }}}t        j                  d| | dz   | dz   | dz   gt         j                        }t        ||       |j                  |j                  k(  sJ y )N)r   r
   r)   r*   r*   r   r5   r   r   r
   )	r   iinfoint32maxr   r   uint32r   r   )imaxlabelsoutputr"   r#   	references         r   'test_relabel_sequential_signed_overflowrM   j   s    88BHH!!DXX(9F(=OFB!T4!8TAXtax@		RIvy)<<9??***r%   c                     t        j                  t         j                        j                  } t        j                  dd| ddgt         j                        }t        ||       \  }}}t        j                  |      | dz   k(  sJ y )Nr   r
   r*   r   r5   r   )r   rE   int64rG   r   r   )rI   rJ   rK   r"   r#   s        r   test_very_large_labelsrP   s   se    88BHH!!DXXq!T2r*"((;F(=OFB66&>TAX%%%r%   data_already_sequential)FTc                     | rt        j                  g d      }nt        j                  g d      }t        fdt        |      D              sJ y )Nr
   r   r   r   r   r   r   r=   c              3   <   K   | ]  }|j                   k(    y wr   r   ).0ar   s     r   	<genexpr>z>test_relabel_sequential_int_dtype_stability.<locals>.<genexpr>   s     @Aqww%@s   )r   r   allr   )rQ   r   r    s    ` r   +test_relabel_sequential_int_dtype_stabilityrY   z   sD    " XX(6XX0>@);B)?@@@@r%   c                  t   t        j                  g dt         j                        } d}t        | |      \  }}}t	        | |||       t        d ||fD              sJ |j                  | j                  k(  sJ t        j                  | dkD  | j                  t              |z   dz
  d      }t        ||       y )NrS   r      r5   c              3   V   K   | ]!  }|j                   t        j                  k(   # y wr   )r   r   uint16)rU   rV   s     r   rW   z=test_relabel_sequential_int_dtype_overflow.<locals>.<genexpr>   s     <qww"))#<s   ')r   r
   )r   r   rA   r   r$   rX   r   whererB   r.   r   )r    r6   r!   r"   r#   r0   s         r   *test_relabel_sequential_int_dtype_overflowr_      s    	$BHH	5BF*2f=Hb#Hb#&<h^<<<<99   88BFBIIcNV$;a$?CLx.r%   c                      t        j                  g d      } t        j                  t              5  t        |        d d d        y # 1 sw Y   y xY w)N)r
   r
   r   r(   r)   r*   r   r   r   pytestr   r   r   )r    s    r   'test_relabel_sequential_negative_valuesrd      s:    	-	.B	z	" 2  s   AAr6   )r   c                     | rt        j                  g d      }nt        j                  g d      }t        j                  t              5  t        ||       d d d        y # 1 sw Y   y xY w)NrS   r=   r5   rb   )rQ   r6   r    s      r   *test_relabel_sequential_nonpositive_offsetrg      sP     XX()XX01	z	" .2f-. . .s   A""A+)r
   r   with0input_starts_at_offsetc                 0   |rt        j                  g d      }nt        j                  g d      }|r||dkD  xx   | dz
  z  cc<   t        ||       \  }}}t        ||||       |r|}n t        j                  |dkD  || z   dz
  d      }t        ||       y )NrS   )r
   r   r   r   r   r   r
   r5   )r   r   r   r$   r^   r   )r6   rh   ri   r    r!   r"   r#   r0   s           r   *test_relabel_sequential_already_sequentialrk      s     XX()XXo&
26
fqj 
*2f=Hb#Hb#&xxQVa;x.r%   c                      t        j                  g dt              } t        j                  t
              5  t        |       }d d d        y # 1 sw Y   y xY w)N)r   r   r   r
   r
   r(   r   )r   r   floatr   r   	TypeErrorr   )rJ   _s     r   test_incorrect_input_dtyperp      s>    XX(6F			" 'v&' ' 's   AAc                      t        j                  g dt         j                        } t        |       \  }}}t	        j
                  | ||              t	        j
                  |  ||             y )Nr=   r   )r   r   intpr   r   r   r    	relabeledr"   r#   s       r   test_arraymap_callru      sP    	,BGG	<B+B/Ir3y"R&1r3y>2r%   c                  `   t        j                  g dt         j                        } t        |       \  }}}t	        |      dk(  sJ t	        |      t	        t        j                  |            k(  sJ t	        |      dk(  sJ t	        |      t	        t        j                  |            k(  sJ y )Nr=   r   r+   r7   )r   r   rr   r   lenrs   s       r   test_arraymap_lenrx      s    	,BGG	<B+B/Ir3r7c>>r7c"((2,''''s8q==s8s288C=))))r%   c                      t        j                  g dt         j                        } t        |       \  }}}d|d<   |d   dk(  sJ y )Nr=   r   r7   H   )r   r   rr   r   rs   s       r   test_arraymap_setr{      sA    	,BGG	<B+B/Ir3BrFb6Q;;r%   )(numpyr   skimage.segmentationr   r   skimage._sharedr   skimage._shared.testingr   rc   markparametrizer.   r]   uintr   r$   r3   r;   r?   rC   rM   rP   byteshortintclonglongubyteushortuintc	ulonglongrY   r_   rd   rg   rk   rp   ru   rx   r{    r%   r   <module>r      s    G # 6  3		277";<# =#.*
%"%"%"%"+& 





		


 2MBA C A/ 7+2MB. C ,. 6*-01=A/ B 1 +/ '3*r%   