o
    h                     @   sL  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	dd Z
dd Zd	d
 Zdd Zdd Zdd Zdd Zdd Ze	jdejejejeejejejejejejf
e	jdddd Zdd Zdd Z e	jdde	jddd d! Z!e	jdd"e	jd#de	jd$dd%d& Z"d'd( Z#d)d* Z$d+d, Z%d-d. Z&dS )/    N)join_segmentationsrelabel_sequential)testingassert_array_equalc                  C   s   t g dg dg dg} t g dg dg dg}t| |}t g dg dg dg}t|| t| |d	d
\}}}t|| |  t|| | t g dg dg}tt t| | W d    d S 1 smw   Y  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	   T)return_mapping)r   r   r   r   )nparrayr   r   r   raises
ValueError)s1s2jj_refm1m2s3 r   _/var/www/html/scripts/venv/lib/python3.10/site-packages/skimage/segmentation/tests/test_join.pytest_join_segmentations	   s*   




"r   c                 C   s    t ||  | t || |  d S Nr   )arar_relabfwinvr   r   r   _check_maps&   s   r    c                  C   s   t g d} t| \}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d< d	|d
< d|d< t|| t g d}t|| d S )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_refr   r   r   test_relabel_sequential_offset1+   s   

r-   c                  C      t g d} t| dd\}}}t| ||| t g d}t|| t dt}d|d< d|d< d|d	< d	|d
< d|d< t|| t g d}t|| d S )Nr!   r
   offset)r
   r
      r1      	   r"   r%   r   r1   r2   r"   r$   r3   r#   
r   r   r   r   r   r   r
   r"   r$   r#   r&   r)   r   r   r   test_relabel_sequential_offset5<      

r5   c                  C   r.   )Nr   r   r
   r
   r"   r#   r$   r   r
   r/   r
   r
   r1   r1   r2   r3   r"   r   r%   r   r1   r2   r"   r$   r3   r#   r4   r&   r)   r   r   r   %test_relabel_sequential_offset5_with0M   r6   r9   c                  C   s   t jg dt jd} t| dd\}}}t| t||| t g d}t|| t dt}d|d< d|d< d	|d
< d
|d< d|d< t|| t g d}t|| d S )Nr7   dtyper
   r/   r8   r%   r   r1   r2   r"   r$   r3   r#   r4   )	r   r   uint8r   r    astyper(   r   r'   r)   r   r   r   test_relabel_sequential_dtype^   s   

r>   c                  C   sx   t t jj} t jg dt jd}t|| d\}}}t jd| | d | d | d gt jd}t|| |j|jks:J d S )N)r   r   r#   r$   r$   r:   r/   r   r   r   )	r   iinfoint32maxr   r   uint32r   r;   )imaxlabelsoutputr   r   	referencer   r   r   'test_relabel_sequential_signed_overflowo   s   
rG   c                  C   sT   t t jj} t jdd| ddgt jd}t|| d\}}}t || d ks(J d S )Nr   r   r$   r:   r/   r   )r   r?   int64rA   r   r   )rC   rD   rE   r   r   r   r   r   test_very_large_labelsy   s   rI   r;   data_already_sequential)FTc                    sL   | rt jg d d}n	t jg d d}t fddt|D s$J d S )Nr   r	   r   r   r
   r   r:   r7   c                 3   s    | ]}|j  kV  qd S r   r:   .0ar:   r   r   	<genexpr>   s    z>test_relabel_sequential_int_dtype_stability.<locals>.<genexpr>)r   r   allr   )rJ   r;   r   r   r:   r   +test_relabel_sequential_int_dtype_stability   s   "rQ   c                  C   s   t jg dt jd} d}t| |d\}}}t| ||| tdd ||fD s)J |j| jks1J t | dk| t	| d d}t
|| d S )	NrK   r:      r/   c                 s   s    | ]	}|j tjkV  qd S r   )r;   r   uint16rL   r   r   r   rO      s    z=test_relabel_sequential_int_dtype_overflow.<locals>.<genexpr>r   r   )r   r   r<   r   r    rP   r;   wherer=   r(   r   )r   r0   r   r   r   r*   r   r   r   *test_relabel_sequential_int_dtype_overflow   s    rU   c                  C   sF   t g d} tt t|  W d    d S 1 sw   Y  d S )N)r   r   r
   r"   r#   r$   r   r   r   pytestr   r   r   )r   r   r   r   'test_relabel_sequential_negative_values   s   
"rY   r0   )r   c                 C   s^   | r
t g d}nt g d}tt t||d W d    d S 1 s(w   Y  d S )NrK   r7   r/   rW   )rJ   r0   r   r   r   r   *test_relabel_sequential_nonpositive_offset   s   "r[   )r   r
   with0input_starts_at_offsetc                 C   s   |r
t g d}nt g d}|r||dk  | d 7  < t|| d\}}}t|||| |r4|}nt |dk||  d d}t|| d S )NrK   )r   r	   r   r
   r   r   r   r/   )r   r   r   r    rT   r   )r0   r\   r]   r   r   r   r   r*   r   r   r   *test_relabel_sequential_already_sequential   s   r^   c                  C   sJ   t jg dtd} tt t| }W d    d S 1 sw   Y  d S )N)r   r   r   r   r   r"   r:   )r   r   floatr   r   	TypeErrorr   )rD   _r   r   r   test_incorrect_input_dtype   s   
"rb   c                  C   sF   t jg dt jd} t| \}}}t|||  t| || d S )Nr7   r:   )r   r   intpr   r   r   r   	relabeledr   r   r   r   r   test_arraymap_call   s   rf   c                  C   sz   t jg dt jd} t| \}}}t|dksJ t|tt |ks&J t|dks.J t|tt |ks;J d S )Nr7   r:   r%   r1   )r   r   rc   r   lenrd   r   r   r   test_arraymap_len   s   rh   c                  C   s>   t jg dt jd} t| \}}}d|d< |d dksJ d S )Nr7   r:   r1   H   )r   r   rc   r   rd   r   r   r   test_arraymap_set   s   rj   )'numpyr   skimage.segmentationr   r   skimage._sharedr   skimage._shared.testingr   rX   r   r    r-   r5   r9   r>   rG   rI   markparametrizebyteshortintcr(   longlongubyteushortuintcuint	ulonglongrQ   rU   rY   r[   r^   rb   rf   rh   rj   r   r   r   r   <module>   s@    
	
	