
    1-Ph                         d dl Z d dlmZ d dlZd dlmZ d dlmZmZ d dl	m
Z
 d Zd Ze j                            dd	d
g          d             Zd Zd Zd Zd Zd Z	 ddZd Zd Zd Zd Zd Zd ZdS )    N)assert_array_equal)graph)segmentationdata)testingc                     dt           j         i}| |                             ||          d         }| |                             ||          d         }dt          ||          iS )Nweight)npinfgetmax)gsrcdstndefaultw1w2s          \/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/graph/tests/test_rag.pymax_edger   	   s[    "&!G	
1#w			)B	
1#w			)Bc"bkk""    c                     t          j                    } t          d          D ]}|                     |d|gi           |                     ddddi           |                     ddddi           |                     dd	dd
i           |                     d	dddi           |                     ddddi           |                     d	dddi           |                                 }|                     dd           | j        d         d         d         dk    sJ | j        d         d	         d         d
k    sJ |                    ddt                     |j        d         d         d         dk    sJ |j        d         d	         d         dk    sJ |                     dd           |                     dd	           |                     d	dd          }t          | j
        |         d                   t          t          d                    k    sJ t          |                                           g k    sJ d S )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1XX ' '	

1x!o&&&&JJq!h^$$$JJq!h^$$$JJq!h^$$$JJq!h^$$$JJq!h^$$$JJq!h^$$$	
B MM!Q58A;x B&&&&58A;x B&&&& NN1aXN...6!9Q<!R''''6!9Q<!R''''MM!QMM!Q	aU++A!'!*X&''4a>>9999		??b      r   r'   TFc                    t          j                    }|                    ddd           |                    ddd           |                    ddd           |                    ddd	           |                    ddd
           |                                D ]}|g|j        |         d<   |                                }| du rdnd}|                    dd|            |j        |         d         d         dk    sJ |j        |         d         d         dk    sJ |                    ddt          |            |j        |         d         d         dk    sJ |j        |         d         d         d	k    sJ d S )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   s    		AJJq!BJJJq!BJJJq!BJJJq!BJJJq!BJWWYY # # !s
8	
B %%1IMM!QM***5Ax(B....5Ax(B....NN1aXNAAA6)Q)R////6)Q)R//////r   c                     t          j        dd          } d| d dd df<   d| d ddd f<   d| dd d df<   d| dd dd f<   t          j        d	d          }d
|d dd df<   d|d ddd f<   d|dd d df<   d|dd dd f<   t          j        | |          }t          j        ||dd          }|                                dk    sJ t          j        ||d          }|                                dk    sJ d S )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   sQ   
(=
0
0
0C!CSbSM!CRSSMCSbSMCRSSMXj000FF3B38F3B38F2338F2338

sF
+
+C$VS"uEEEJ>>q    $VS"55J>>q      r   c                  \   t          j        dd          } d| d dd df<   d| d ddd f<   d| dd d df<   d| dd dd f<   t          j        d	d          }d
|d dd df<   d|d ddd f<   d|dd d df<   d|dd dd f<   t          j        | |d          }t          j        ||d          }t          j        |          \  }}}|                                dk    sJ t          j        ||          }t          j        |          \  }}}|                                dk    sJ d S )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   s   
(=
0
0
0C!CSbSM!CRSSMCSbSMCRSSMXj000FF3B38F3B38F2338F2338

sF
>
>
>C%fcEBBBJ#6zBBJ1>>q    %fc22J#6zBBJ1>>q      r   c                     t          j        dd          } t          j        dd          }d|d dd d f<   d|dd d d f<   t          j        t                    5  t          j        | |dd	           d d d            d S # 1 swxY w Y   d S )
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      s    
(;g
.
.
.CXhg...FF2A2qqq5MF122qqq5M	
	#	# B BS&!-@AAAB B B B B B B B B B B B B B B B B Bs   BBBc                     | j         |         d         | j         |         d         z
  }t          j                            |          }d|iS )N
mean colorr	   )r0   r
   linalgnorm)r   r   r   r   diffs        r   _weight_mean_colorr`      sA    ;sL)EKN<,HHD9>>$Ddr   c                     | j         |         dxx         | j         |         d         z  cc<   | j         |         dxx         | j         |         d         z  cc<   | j         |         d         | j         |         d         z  | j         |         d<   d S )Nztotal colorzpixel countr\   )r0   )r   r   r   s      r   _pre_merge_mean_colorrb      s    	K]###u{3'7'FF###	K]###u{3'7'FF###C'%+c*:=*II 
K\"""r   c           	      J    t          j        | ||||t          t                    S )N)r   merge_hierarchicalrb   r`   )r   rJ   threshrag_copyin_place_merges        r   merge_hierarchical_mean_colorrh      s.     #  r   c                  ^   t          j        dd          } t          j        dd          }d| d d d d d d f<   d|d d d d f<   d| dd	dd	d d f<   d
|dd	dd	f<   d| d	d dd	d d f<   d|d	d dd	f<   t          j        | |          }|                                }d}t          |||          }t          j        |d d d d	f         |d         k              sJ t          j        |d d d	d f         |d         k              sJ t          |||d          }t          j        |d d d d	f         |d         k              sJ t          j        |d d d	d f         |d         k              sJ t          j        |||          }t          j        ||d         k              sJ d S )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XfG,,,FC111aaaLF111aaa4L!C!QqS!!!F1Q3!8 CAaC
OF122qs7OS&))A	
BF*61f==F6&BQB-6$</000006&ABB-6&>122222*62vdSSSF6&BQB-6$</000006&ABB-6&>122222 F33F6&F4L()))))))r   c                  J   t          j        dd          } t          j        dd          }d|ddddf<   d|ddddf<   t          j        | |d	
          }t          j        ||d          }t          j        |          \  }}}|                                dk    sJ dS )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     (=
0
0
0CXj000FF3B38F3B38

sF
>
>
>C%fcEBBBJ#6zBBJ1>>q      r   c                     t          j                    } t          j        | ddd          }t	          j        | |d          }dgdz  }t          t          |                    D ]}t	          j        ||d	d
d          ||<   t	          j        ||d	d
d           t          t          |          dz
            D ]!}t          ||         ||dz                       "dS )zfensure 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SSSGS'===AfqjG3w<<   
 
)Qt
 
 


 
!eDdKKKK3w<<!#$$ 7 771:wq1u~66667 7r   c                     t          j        ddgddggt           j                  } t          j        |           }|                    dd          r,|                    dd          r|                    dd          rJ t          j        | d          }|                    dd          r,|                    dd          r|                    dd          sJ d S )Nr   r   r   r#   r=   connectivity)r
   arrayr<   r   r(   has_edge)r   r   hs      r   test_generic_rag_2dr      s    X1v1v&bh777F	&A::aI

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

1a 0 0EQZZ15E5EEEEEEr   c                     t          j        dt           j                                      d          } t	          j        |           }|                    dd          r,|                    dd          r|                    dd          rJ t	          j        | d          }|                    dd          r,|                    dd          r|                    dd	          rJ t	          j        | d          }|                    dd          r,|                    dd          r|                    dd
          sJ d S )Nrj   r=   rC   r   r   r   r   r      r   )r
   aranger<   reshaper   r(   r   )r   r   r   ks       r   test_generic_rag_3dr      s#   Yq)))11)<<F	&A::aI

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

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

1a 0 0EQZZ15E5EEEEEEr   c                  R   t          j        dd          } t          j        | t                    }d|dd d f<   d|d d df<   d| d dd df<   d| d ddd f<   d	| dd d df<   d
| dd dd f<   t	          j        | |d          }t          |                                          h dk    sJ t          |                                          h dk    sJ |d         d	         d         dk    sJ |d         d
         d         dk    sJ |d         d	         d         dk    sJ d S )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`   Xhg...F}V5111HHQTNHQQQTNF2A2rr6NF2A2qrr6NF122rr6NF122qrr6N68!<<<Aqwwyy>>\\\))))qwwyy>>=======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 0	 02! ! !.! ! !2B B B     8=   * * *:! ! ! 7 7 7$F F FF F F" " " " "r   