
    1-Ph                     <   d dl mZ d dlmZ d dlZd dlmZ d dlm	Z	 d dl
mZ d dlmZ  ej        g d          Z ej        g d	          Z ej        g d
          Z ej        g d          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg dg dg dg dg dg dg dg dg dg
          Z ej        g dg d g d!g d"g d#g          Z ej        g d$g d%g d&g d'g d'g          Z ej        g d(g d)g d(g d(gg d(g d*g d(g d(gg d(g d)g d(g d+gg d(g d(g d(g d+gg          Z ej        g d,g d,g d,g d-gg d,g d,g d,g d.gg d,g d,g d/g d0gg d1g d1g d/g d0gg          Z ej        g d)g d1g d)g d(gg d*g d,g d*g d(gg d)g d1g d-g d.gg d(g d(g d+g d.gg          Z ej        g d2g d3g d)g          Z ej        d4eed5d6feed5d6feed7d6feed5d6feed8d6feed9d6feed6g d:fg          d;             Z ej        d<d9d5g           ej        d= ed>                    d?                         Zd@ Z dS )A    )ndimage)dataN)measure)expand_labels)testing)assert_array_equal)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   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
   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
   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   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   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   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   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
   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   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   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
   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   )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   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   z6input_array, expected_output, expand_distance, spacingr   r
   g      ?r	   r   )r   r
   r
   c                 H    t          | ||          }t          ||           d S )N)r   r   )input_arrayexpected_outputexpand_distancespacingexpandeds        m/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/segmentation/tests/test_expand_labels.pytest_expand_labelsr   ~   s+     [/7CCHx11111    ndimdistance   c                    t          j        dd|           }t          j        |          }t	          ||          }|dk    }t          ||         ||                    ||z
                      t                    }t          j	        |           }||         }|j
        dk    rt          j        ||k              sJ ||                    t                              }	|	j
        dk    rt          j        |	|k              sJ dS dS )a2  Check some invariants with label expansion.

    - New labels array should exactly contain the original labels array.
    - Distance to old labels array within new labels should never exceed input
      distance.
    - Distance beyond the expanded labels should always exceed the input
      distance.
    @   g?)lengthblob_size_fractionn_dim)r   r   N)r   binary_blobsr   labelr   r   astypeboolndidistance_transform_edtsizenpall)
r   r   imglabelsr   original_maskexpanded_only_maskdistance_mapexpanded_distancesbeyond_expanded_distancess
             r   test_binary_blobsr/      s    
2$d
K
K
KC]3FVh777HaKMvm,h}.EFFF"V+33D99-}n==L%&89""v(H455555 ,hood.C.C-C D %))v/(:;;;;; *);;r   c                      t          t          d          } t          t          j        d          }t          j        | |j        k              rJ dS )a  Check edge case behavior to detect upstream changes

    For edge cases where a pixel has the same distance to several regions,
    lexicographical order seems to determine which region gets to expand
    into this pixel given the current upstream behaviour in
    scipy.ndimage.distance_map_edt.

    As a result, we expect different results when transposing the array.
    If this test fails, something has changed upstream.
    r
   N)r   SAMPLE_EDGECASE_BEHAVIOURTr&   r'   )r   expanded_transposes     r   test_edge_case_behaviourr4      sM     6::H&'@'BAFFvh"4"667777777r   )!scipyr   r#   skimager   numpyr&   r   #skimage.segmentation._expand_labelsr   skimage._sharedr   skimage._shared.testingr   arraySAMPLE1DSAMPLE1D_EXPANDED_3
EDGECASE1DEDGECASE1D_EXPANDED_3SAMPLE2DSAMPLE2D_EXPANDED_3SAMPLE2D_EXPANDED_1_5
EDGECASE2DEDGECASE2D_EXPANDED_4SAMPLE3DSAMPLE3D_EXPANDED_2SAMPLE3D_EXPAND_SPACINGr1   parametrizer   ranger/   r4    r   r   <module>rK      s                               = = = = = = # # # # # # 6 6 6 6 6 628GGGHHbhRRRSS  RXFFFGG
 !Q!Q!QRR 28))))))))))))))))))))))))))))))  bh))))))))))))))))))))))))))))))    !))))))))))))))))))))))))))))))    RX))))))))))))))) 
 !)))))))))))))))   28	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	  bh	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	   #"(	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	|||\\\<<<@	   %BHlllLLL,,,%OPP  <	&1-	&1-	(#q1	*Aq1	*Aq1	&1-	*Ayyy9 2 2 2
 VaV$$Zq**< < +* %$<08 8 8 8 8r   