
    9i                     b   S SK Jr  S SKJr  S SKrS SKJr  S SKJ	r	  S SK
Jr  S SKJr  \R                  " / SQ5      r\R                  " / S	Q5      r\R                  " / S
Q5      r\R                  " / SQ5      r\R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      r\R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      r\R                  " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/
5      r\R                  " / SQ/ S Q/ S!Q/ S"Q/ S#Q/5      r\R                  " / S$Q/ S%Q/ S&Q/ S'Q/ S'Q/5      r\R                  " / S(Q/ S)Q/ S(Q/ S(Q// S(Q/ S*Q/ S(Q/ S(Q// S(Q/ S)Q/ S(Q/ S+Q// S(Q/ S(Q/ S(Q/ S+Q//5      r\R                  " / S,Q/ S,Q/ S,Q/ S-Q// S,Q/ S,Q/ S,Q/ S.Q// S,Q/ S,Q/ S/Q/ S0Q// S1Q/ S1Q/ S/Q/ S0Q//5      r\R                  " / S)Q/ S1Q/ S)Q/ S(Q// S*Q/ S,Q/ S*Q/ S(Q// S)Q/ S1Q/ S-Q/ S.Q// S(Q/ S(Q/ S+Q/ S.Q//5      r\R                  " / S2Q/ S3Q/ S)Q/5      r\R8                  " S4\\S5S64\\S5S64\\S7S64\\S5S64\\S8S64\\S9S64\\S6/ S:Q4/5      S; 5       r\R8                  " S<S9S5/5      \R8                  " S=\" S>5      5      S? 5       5       rS@ r g)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                 2    [        XU5      n[        XA5        g )N)r   r   )input_arrayexpected_outputexpand_distancespacingexpandeds        m/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/segmentation/tests/test_expand_labels.pytest_expand_labelsr   ~   s     [7CHx1    ndimdistance   c                    [         R                  " SSU S9n[        R                  " U5      n[	        X1S9nUS:g  n[        X5   XE   5        XC-
  R                  [        5      n[        R                  " U) 5      nXv   nUR                  S:  a  [        R                  " X:*  5      (       d   eXtR                  [        5      )    n	U	R                  S:  a   [        R                  " X:  5      (       d   egg)a  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
KC]]3FV7HaKMv,h.EF"+33D9--}n=L%9"vv(45555 ,ood.C-C D %%)vv/:;;;; *r   c                      [        [        S5      n [        [        R                  S5      n[        R                  " XR                  :H  5      (       a   eg)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      sF     6:H&'@'B'BAFvvh"6"66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88GHhhRS  XXFG
!QR 88)))))))))) hh))))))))))   ))))))))))   XX)))))
 )))))  88	|\<@	|\<@	|\<@	|\<@	 hh	|\<@	|\<@	|\<@	|\<@	  ((	|\<@	|\<@	|\<@	|\<@	  HHlL,%OP  	<	&1-	&1-	(#q1	*Aq1	*Aq1	&1-	*Ay922
 	VaV$Zq*< + %<08r   