
    9i                         S SK r S SKJr  S SKrS SKJr  S SKJrJr  S SK	J
r
  S rS r\ R                  R                  SS	S
/5      S 5       rS rS rS rS rS r SS jrS rS rS rS rS rS rg)    N)assert_array_equal)graph)segmentationdata)testingc                     S[         R                  * 0nX   R                  X5      S   nX   R                  X$5      S   nS[        XV5      0$ )Nweight)npinfgetmax)gsrcdstndefaultw1w2s          \/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/skimage/graph/tests/test_rag.pymax_edger   	   sK    "&&!G	
#		)B	
#		)Bc"k""    c                     [         R                  " 5       n [        S5       H  nU R                  USU/05        M     U R	                  SSSS05        U R	                  SSSS05        U R	                  SS	SS
05        U R	                  S	SSS05        U R	                  SSSS05        U R	                  S	SSS05        U R                  5       nU R                  SS5        U R                  S   S   S   S:X  d   eU R                  S   S	   S   S
:X  d   eUR                  SS[        S9  UR                  S   S   S   S:X  d   eUR                  S   S	   S   S:X  d   eU R                  SS5        U R                  SS	5        U R                  S	SSS9n[        U R                  U   S   5      [        [        S5      5      :X  d   e[        U R                  5       5      / :X  d   eg )N   labelsr      r	   
               (   2      <   )weight_funcFin_place)r   RAGrangeadd_nodeadd_edgecopymerge_nodesadjr   sortednodeslistedges)r   igcr   s       r   test_rag_merger5      s   		A1X	

1x!o&  JJq!h^$JJq!h^$JJq!h^$JJq!h^$JJq!h^$JJq!h^$	
B MM!Q558A;x B&&&558A;x B&&& NN1aXN.66!9Q<!R'''66!9Q<!R'''MM!QMM!Q	aU+A!''!*X&'4a>999	?b   r   r'   TFc                    [         R                  " 5       nUR                  SSSS9  UR                  SSSS9  UR                  SSSS9  UR                  SSS	S9  UR                  SSS
S9  UR                  5        H  nU/UR                  U   S'   M     UR	                  5       nU SL a  SOSnUR                  SSU S9  UR                  U   S   S   S:X  d   eUR                  U   S   S   S:X  d   eUR                  SS[        U S9  UR                  U   S   S   S:X  d   eUR                  U   S   S   S	:X  d   eg )Nr   r   r   )r	   r   r   r#   r    r!   r"   r   Tr   r&   r	   )r%   r'   )r   r(   r+   r0   r,   r-   r.   r   )r'   r   r   r4   	merged_ids        r   test_rag_merge_gh5360r8   2   sR    			AJJq!BJJJq!BJJJq!BJJJq!BJJJq!BJWWY !s
8 	
B %1IMM!QM*55Ax(B...55Ax(B...NN1aXNA66)Q)R///66)Q)R///r   c                     [         R                  " SSS9n SU S S2S S24'   SU S S2SS 24'   SU SS 2S S24'   SU SS 2SS 24'   [         R                  " S	SS9nS
US S2S S24'   SUS S2SS 24'   SUSS 2S S24'   SUSS 2SS 24'   [        R                  " X5      n[        R                  " XSSS9nUR                  5       S:X  d   e[        R                  " XS5      nUR                  5       S:X  d   eg )Nd   r;   r   uint8dtype   r@   r@   r"      rB   rB   r   r   r   r   r   r   r;   r;   r   r   r   r   r   Fr&   )r
   zerosr   rag_mean_colorcut_thresholdr   )imgr   rag
new_labelss       r   test_threshold_cutrL   O   s   
((=
0C!CSbSM!CRSMCSbSMCRSMXXj0FF3B38F3B38F238F238


s
+C$$V"uEJ>>q   $$V"5J>>q   r   c                  H   [         R                  " SSS9n SU S S2S S24'   SU S S2SS 24'   SU SS 2S S24'   SU SS 2SS 24'   [         R                  " S	SS9nS
US S2S S24'   SUS S2SS 24'   SUSS 2S S24'   SUSS 2SS 24'   [        R                  " XSS9n[        R                  " XSS9n[
        R                  " U5      u  n  nUR                  5       S:X  d   e[        R                  " X5      n[
        R                  " U5      u  n  nUR                  5       S:X  d   eg )Nr:   r<   r=   r?   r"   rA   rC   rD   rE   r   r   r   r   
similaritymodeFr&   r
   rF   r   rG   cut_normalizedr   relabel_sequentialr   rI   r   rJ   rK   _s        r   test_cut_normalizedrV   f   sJ   
((=
0C!CSbSM!CRSMCSbSMCRSMXXj0FF3B38F3B38F238F238


s
>C%%fEBJ#66zBJ1>>q   %%f2J#66zBJ1>>q   r   c                     [         R                  " SSS9n [         R                  " SSS9nSUS S2S S 24'   SUSS 2S S 24'   [        R                  " [        5         [
        R                  " XSS	5        S S S 5        g ! , (       d  f       g = f)
N)r   r   r   r<   r=   )r   r   r   r   r   r   znon existent mode)r
   rF   r   raises
ValueErrorr   rG   )rI   r   s     r   test_rag_errorrZ      sm    
((;g
.CXXhg.FF2A2q5MF12q5M	
	#S!-@A 
$	#	#s   A==
Bc                     U R                   U   S   U R                   U   S   -
  n[        R                  R                  U5      nSU0$ )N
mean colorr	   )r0   r
   linalgnorm)r   r   r   r   diffs        r   _weight_mean_colorr`      sD    ;;sL)EKKN<,HHD99>>$Ddr   c                    U R                   U   S==   U R                   U   S   -  ss'   U R                   U   S==   U R                   U   S   -  ss'   U R                   U   S   U R                   U   S   -  U R                   U   S'   g )Nztotal colorzpixel countr\   )r0   )r   r   r   s      r   _pre_merge_mean_colorrb      s    	KK]#u{{3'7'FF#	KK]#u{{3'7'FF#C'%++c*:=*II 
KK\"r   c           	      J    [         R                  " U UUUU[        [        5      $ )N)r   merge_hierarchicalrb   r`   )r   rJ   threshrag_copyin_place_merges        r   merge_hierarchical_mean_colorrh      s,     ## r   c                  >   [         R                  " SSS9n [         R                  " SSS9nSU S S 2S S 2S S 24'   SUS S 2S S 24'   SU SS	2SS	2S S 24'   S
USS	2SS	24'   SU S	S 2SS	2S S 24'   SUS	S 2SS	24'   [        R                  " X5      nUR	                  5       nSn[        XU5      n[         R                  " US S 2S S	24   US   :H  5      (       d   e[         R                  " US S 2S	S 24   US   :H  5      (       d   e[        XUSS9n[         R                  " US S 2S S	24   US   :H  5      (       d   e[         R                  " US S 2S	S 24   US   :H  5      (       d   e[        R                  " XU5      n[         R                  " XUS   :H  5      (       d   eg )N)   rj   r   r<   r=   )rj   rj      r   )r   r   r   r   r#   r   )r   r   r   r   r   )r   r   )rl   T)rg   )r
   rF   r   rG   r,   rh   allrH   )rI   r   r   g2re   results         r   test_rag_hierarchicalrp      s   
((9G
,CXXfG,FC1aLF1a4L!C!QqS!F1Q3!8 CAaC
OF12qs7OS)A	
BF*6f=F66&BQB-6$</000066&AB-6&>12222*6vdSF66&BQB-6$</000066&AB-6&>12222  F3F66&4L())))r   c                  8   [         R                  " SSS9n [         R                  " SSS9nSUSS2SS24'   SUSS2SS24'   [        R                  " XS	S
9n[        R                  " XSS9n[
        R                  " U5      u  n  nUR                  5       S:X  d   eg)z@Test to catch an error thrown when subgraph has all equal edges.r:   r<   r=   rE   r   Nr"   r   rN   rO   Fr&   r   rQ   rT   s        r   test_ncut_stable_subgraphrr      s     ((=
0CXXj0FF3B38F3B38


s
>C%%fEBJ#66zBJ1>>q   r   c            	         [         R                  " 5       n [        R                  " U SSSS9n[        R
                  " XSS9nS/S-  n[        [        U5      5       H  n[        R                  " XS	S
SS9X4'   M     [        R                  " XS	S
SS9  [        [        U5      S-
  5       H  n[        X4   X4S-      5        M     g)z^ensure cut_normalized returns the same output for the same input,
when specifying random seed
r    i  r   )compactness
n_segmentsstart_labelrN   rO   Nr#   FgMbP?i  )r'   re   rngr   )
r   coffeer   slicr   rG   r)   lenrR   r   )rI   labels1r   resultsr3   s        r   test_reproducibilityr}      s     ++-CQRSGS=AfqjG3w< ))t

 ! 
eDdK3w<!#$7:w1u~6 %r   c                     [         R                  " SS/SS//[         R                  S9n [        R                  " U 5      nUR                  SS5      (       a.  UR                  SS5      (       a  UR                  SS5      (       a   e[        R                  " U SS9nUR                  SS5      (       a.  UR                  SS5      (       a  UR                  SS5      (       d   eg )Nr   r   r   r#   r=   connectivity)r
   arrayr<   r   r(   has_edge)r   r   hs      r   test_generic_rag_2dr      s    XX1v1v&bhh7F		&A::a

1a 0 0Aq9I9III		&q)A::a

1a 0 0QZZ15E5EEE5Er   c                     [         R                  " S[         R                  S9R                  S5      n [        R
                  " U 5      nUR                  SS5      (       a.  UR                  SS5      (       a  UR                  SS5      (       a   e[        R
                  " U SS9nUR                  SS5      (       a.  UR                  SS5      (       a  UR                  SS	5      (       a   e[        R
                  " U SS9nUR                  SS5      (       a.  UR                  SS5      (       a  UR                  SS
5      (       d   eg )Nrj   r=   rC   r   r   r   r   r      r   )r
   aranger<   reshaper   r(   r   )r   r   r   ks       r   test_generic_rag_3dr      s    YYq)11)<F		&A::a

1a 0 0Aq9I9III		&q)A::a

1a 0 0Aq9I9III		&q)A::a

1a 0 0QZZ15E5EEE5Er   c                     [         R                  " SSS9n [         R                  " U [        S9nSUSS S 24'   SUS S 2S4'   SU S S2S S24'   SU S S2SS 24'   S	U SS 2S S24'   S
U SS 2SS 24'   [        R
                  " XSS9n[        UR                  5       5      1 Sk:X  d   e[        UR                  5       5      1 Sk:X  d   eUS   S	   S   S:X  d   eUS   S
   S   S:X  d   eUS   S	   S   S:X  d   eg )N)   r   r<   r=   g      ?rj   g      ?r   r   r   r#   r   >   r   r   r   r#   >   r   r   r   r   r   r#   r   r#   r	   g      ?g      ?countr   )	r
   rF   
zeros_likefloatr   rag_boundarysetr0   r2   )r   edge_mapr   s      r   test_rag_boundaryr      s   XXhg.F}}V51HHQTNHQTNF2A2rr6NF2A2qr6NF12rr6NF12qr6N6!<Aqwwy>\)))qwwy>====Q478$$$Q478'''Q477r!!!r   )TF)pytestnumpy.testingr   numpyr
   skimager   r   r   skimage._sharedr   r   r5   markparametrizer8   rL   rV   rZ   r`   rb   rh   rp   rr   r}   r   r   r    r   r   <module>r      s     ,   & ##!D 	5M0	02!.!2B 8=*:! 7$FF"r   