
    tKgh                        d dl Zd dlZd dlmZmZmZmZm	Z	m
Z
mZ d dlZd dlmZ d dlmZ ddlmZ  G d d      Z G d d	      Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.d$ Z/d% Z0d& Z1d' Z2d( Z3d) Z4d* Z5d+ Z6d, Z7d- Z8d. Z9d/ Z:d0 Z;d1 Z<d2 Z=d3 Z>d4 Z?d5 Z@d6 ZAd7 ZBd8 ZCd9 ZDd: ZEd; ZFd< ZGd= ZHd> ZId? ZJd@ ZKdA ZLdB ZMdC ZNdD ZOdE ZPdF ZQdG ZRdH ZSdI ZTdJ ZUdK ZVdL ZWdM ZXdN ZYdO ZZdP Z[dQ Z\dR Z]dS Z^dT Z_dU Z`dV ZadW ZbdX ZcdY ZddZ Zed[ Zfd\ Zgd] Zhd^ Zid_ Zjd` Zkda Zldb Zmdc Zndd Zode Zpdf Zqdg Zrdh Zsdi Ztdj Zudk Zvdl Zwdm Zxdn Zydo Zzdp Z{dq Z|dr Z}ds Z~dt Zdu Z G dv dw      Zej                  j                  dxej                  ej
                  g      dy        Zy)z    N)assert_assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equalsuppress_warnings)raises   )typesc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)Test_measurements_statszDndimage._measurements._stats() is a utility used by other functions.c                 <   g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        |ddg       t        |dd	g        y )
Nr   r         r   r   r   r   r   r   )   )r   r   labelsindexr         ?       @nparrayreshapendimage_measurements_statsr   selfxr   r   shpcountssumss          i/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/ndimage/tests/test_measurements.pytest_azTest_measurements_stats.test_a   s    A!C##C(AXXf%--c2F"0077& 8 /LFDv1v.tc3Z0 "    c                 <   g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        |ddg       t        |dd	g        y )
Nr   r   r   	   r-   r   r-   r   r   r   r   r   r   r"   s          r(   test_bzTest_measurements_stats.test_b%   s     A!C##C(AXXf%--c2F"0077& 8 /LFDv1v.tc3Z0 "r*   c                 \   g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        |ddg       t        |d	d
g       t        |dd
g        y )Nr   r   r   r   r   Tr   r   centeredr   r   r         ?r   r#   r$   r   r   r%   r&   r'   centerss           r(   test_a_centeredz'Test_measurements_stats.test_a_centered3       A!C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD'v1v.tc3Z0wc
3 "r*   c                 \   g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        |ddg       t        |d	d
g       t        |dd
g        y )Nr   r,   r   r-   r   Tr0   r   r   r   r2   r   r3   s           r(   test_b_centeredz'Test_measurements_stats.test_b_centered@   r6   r*   c                 \   g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        |ddg       t        |d	d
g       t        |dd
g        y )Nr   )        r:         "@r;   r:   r;   r   Tr0   r   r   r   r2   r   r3   s           r(   test_nonint_labelsz*Test_measurements_stats.test_nonint_labelsM   s    %c
!C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD'v1v.tc3Z0wc
3 "r*   N)	__name__
__module____qualname____doc__r)   r.   r5   r8   r<    r*   r(   r   r      s    N
11444r*   r   c                       e Zd ZdZd Zy)Test_measurements_selectzEndimage._measurements._select() is a utility used by other functions.c                    g d}g dddgfg dddgfg ddd	gfg}|D ]  \  }}t         j                  j                  |||
      }t        t	        |      dk(         t         j                  j                  |||d      }t        t	        |      dk(         t        |d   ddg       t         j                  j                  |||d      }t        t	        |      dk(         t        |d   ddg       t         j                  j                  |||dd      }t        t	        |      dk(         t        |d   ddg       t        |d   ddg       t        |d   j                  j                  d       t         j                  j                  |||dd      }t        t	        |      dk(         t        |d   ddg       t        |d   ddg       t        |d   j                  j                  d        y )N)r   r   r   r   r   r   r   r,   r-   )r:   r:         @rE   r:   rE   r   T)r   r   find_maxr   )r   r   find_minr   )r   r   rG   find_min_positions   i)r   r   rF   find_max_positions)	r   r    _selectr   lenr   r   dtypekind)r#   r$   casesr   r   results         r(   
test_basicz#Test_measurements_select.test_basic^   s   Aq6"Aq6"!C:.

 #MFE**22& 3 /FCK1$%**22& 3 >FCK1$%vay1a&1**22& 3 >FCK1$%vay1a&1**22&#' 3 )F CK1$%vay1a&1vay1a&1--s3**22&#' 3 )F CK1$%vay1a&1vay1a&1--s33 #r*   N)r=   r>   r?   r@   rR   rA   r*   r(   rC   rC   [   s
    O 4r*   rC   c                      t        j                  g       } t        j                  |       \  }}t	        |d       t        |d       y Nr   r   onesr   labelr   r   dataoutns      r(   test_label01r\      s5    772;D]]4 FCc1%Ar*   c                      t        j                  g       } t        j                  |       \  }}t	        |d       t        |d       y )Nr   r   zerosr   rW   r   r   rX   s      r(   test_label02r`      s5    88B<D]]4 FCc1%Ar*   c                      t        j                  dg      } t        j                  |       \  }}t	        |dg       t        |d       y rT   rU   rX   s      r(   test_label03rb      s9    77A3<D]]4 FCcA3'Ar*   c                      t        j                  dg      } t        j                  |       \  }}t	        |dg       t        |d       y Nr   r   r^   rX   s      r(   test_label04re      s9    88QC=D]]4 FCcA3'Ar*   c                      t        j                  dg      } t        j                  |       \  }}t	        |g d       t        |d       y )N   )r   r   r   r   r   r   rU   rX   s      r(   test_label05rh      s7    77A3<D]]4 FCc?3Ar*   c                      t        j                  g d      } t        j                  |       \  }}t	        |g d       t        |d       y )N)r   r   r   r   r   r   r   r   r   r   r   rI   rI   r   r   r   rW   r   r   rX   s      r(   test_label06rl      s8    88&'D]]4 FCc#56Ar*   c            
          t        j                  g dg dg dg dg dg dg      } t        j                  |       \  }}t	        |g dg dg dg dg dg dg       t        |d       y )Nr   r   r   r   r   r   r   rk   rX   s      r(   test_label07ro      h    88'''''') *D ]]4 FCc$6$6$6$6$6$6$8 9 Ar*   c            
          t        j                  g dg dg dg dg dg dg      } t        j                  |       \  }}t	        |g dg dg dg dg dg d	g       t        |d
       y 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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   rI   r   r   r   r   r   r   r   r   r   r   r   rk   rX   s      r(   test_label08r|      rp   r*   c            
         t        j                  g dg dg dg dg dg dg      } t        j                  dd      }t        j                  | |      \  }}t        |g dg dg dg d	g d	g d
g       t        |d       y )Nrs   rt   ru   rv   rw   r   rx   ry   )r   r   r   r   r   r   )r   r   r   rI   rI   r   rI   r   r   r   generate_binary_structurerW   r   r   rY   structrZ   r[   s       r(   test_label09r      s|    88'''''') *D ..q!4F]]4(FCc$6$6$6$6$6$6$8 9 Ar*   c                      t        j                  g dg dg dg dg      } t        j                  dd      }t        j                  | |      \  }}t        |g dg dg dg dg       t        |d       y )Nrn   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r~   r   s       r(   test_label10r      sp    88'''') *D ..q!4F]]4(FCc$6$6$6$6$8 9 Ar*   c            
          t         D ]n  } t        j                  g dg dg dg dg dg dg|       }t        j                  |      \  }}g dg dg dg dg dg d	g}t        ||       t        |d
       p y rr   r   r   r   r   rW   r   r   typerY   rZ   r[   expecteds        r(   test_label11r      sy    xx++++++-
 /34 t$Q&&&&&&( 	"#x0Q r*   c            
          t         D ]m  } t        j                  g dg dg dg dg dg dg|       }t        j                  ||      }g dg dg dg d	g d	g d
g}t        ||       t        |d       o y )Nrs   rt   ru   rv   rw   outputrx   ry   rz   r{   r   r   )r   rY   r[   r   s       r(   test_label11_inplacer      sw    xx++++++-
 /34 MM$t,&&&&&&( 	"$1Q r*   c            	          t         D ]h  } t        j                  g dg dg dg dg dg|       }t        j                  |      \  }}g dg dg dg dg dg}t        ||       t        |d       j y )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   rw   r   r   r   s        r(   test_label12r     ss    xx+++++	- /3	4
 t$Q&&&&&	(
 	"#x0Q r*   c                      t         D ]b  } t        j                  g dg dg dg dg|       }t        j                  |      \  }}g dg dg dg dg}t        ||       t        |d       d y )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   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   s        r(   test_label13r   $  sm    xx::::< 	
 t$Q55557 	"#x0Q r*   c                      t        j                  dg      } t        D ]I  }t        j                  dg|      }t	        j
                  | |      }t        |d       t        |d       K y )Nrg   rN   r   r   )r   rV   r   r_   r   rW   r   r   rY   tr   r[   s       r(   test_label_output_typedr   4  sQ    77A3<D1#Q'MM$v.!&!,Q	 r*   c                      t        j                  dg      } t        D ]9  }t        j                  | |      \  }}t        |d       |j                  |k(  r9J  y )Nrg   r   r   )r   rV   r   r   rW   r   rN   r   s       r(   test_label_output_dtyper   =  sK    77A3<DMM$q1	!&!,||q    r*   c                      t        j                  dg      } t        D ]@  }t        j                  dg|      }t	        t
        t        ft        j                  | |       B y )Nrg   
   r   )	r   rV   r   r_   assert_raisesRuntimeError
ValueErrorr   rW   )rY   r   r   s      r(   test_label_output_wrong_sizer   E  sG    77A3<D2$"|Z0mmT&	: r*   c            
      t   t        j                  t        j                  j	                  t        j                  j                  t              dd            } t        j                  t        j                  j	                  t        j                  j                  t              dd            }t        j                  t        j                  j	                  t        j                  j                  t              dd            }| j                  d      } |j                  d      }|j                  d      }d}t        | j                  d         D ]i  }| |d d d d f   }t        |j                  d         D ]@  }||d d d d f   }t        t        j                  ||      d   ||d d d d f          |dz  }B k y )	NrY   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   r   )r   rI   rI   r   r   )r   loadtxtospathjoindirname__file__r   rangeshaper   r   rW   )rY   strelsresultsrrJ   djss           r(   test_label_structuring_elementsr   M  sG   ::bggll277??$-/ 0DZZ
!6+=? @Fjj
!6+>@ AG<<
#D^^J'Fooj)G	A4::a=!AqMv||A'Aq!QwAq!,Q/Aq1ABFA ( "r*   c                     dd} t        j                  t         j                        t        j                  d      k7  rLd}t         j                  j	                  t        j
                  |            j                  |      } | |       y y )Nc                     | |kD  }t        |j                        }t        j                  |t        j                  ||            \  }}t        j
                  |      }y )N)rM   r   r   rW   r   find_objects)imgthreshsizemaskranklaco_s           r(   SEztest_ticket_742.<locals>.SEa  sM    V|4::t&@@tLNB  $r*   rJ   )rI     r   )gffffff?r   )r   rN   intprandomrandprodr   )r   r   as      r(   test_ticket_742r   `  s\    % 
xxBHHSM)IINN2775>*2259
1	 *r*   c                      t        j                  d      } d| ddddf<   d| ddddf<   d| d<   d| d<   d| d<   t        j                  | t        j                  d	            d   dk(  sJ y)
z/Github issue #3025 - improper merging of labels)<   i@  r   N  i  )$   r   )#   i  )r   i  )rI   rI   )r   r_   r   rW   rV   )r   s    r(   test_gh_issue_3025r   o  sq    
AAa#gJAagJAgJAgJAgJ==BGGFO,Q/1444r*   c                     t         j                  j                  dd      } t        j                  | dkD        \  }}t        |j                  t         j                  t         j                  fv        t        j                  |       y )Nr   r2   )
r   r   r   r   rW   r   rN   int32int64r   )
test_arrayrW   no_featuress      r(   test_label_default_dtyper   z  sZ    B'J zC'78E;EKKBHHbhh//0r*   c                      t        j                  g t              } t        j                  |       }t        |dgk(         y )Nr   rA   )r   rV   intr   r   r   rY   rZ   s     r(   test_find_objects01r     s0    772S!D


t
$CCB4Kr*   c                      t        j                  g t              } t        j                  |       }t        |g k(         y )Nr   )r   r_   r   r   r   r   r   s     r(   test_find_objects02r     s.    88Bc"D


t
$CC2Ir*   c                      t        j                  dgt              } t        j                  |       }t        |t        ddd       fg       y )Nr   r   r   r   rV   r   r   r   r   slicer   s     r(   test_find_objects03r     =    77A3c"D


t
$CaD)+,-r*   c                  ~    t        j                  dgt              } t        j                  |       }t        |g        y )Nr   r   )r   r_   r   r   r   r   r   s     r(   test_find_objects04r     s.    88QCs#D


t
$Cbr*   c                      t        j                  dgt              } t        j                  |       }t        |t        ddd       fg       y )Nrg   r   r   r   r   s     r(   test_find_objects05r     r   r*   c            
          t        j                  g d      } t        j                  |       }t	        |t        ddd       ft        ddd       ft        ddd       fg       y )Nrj   r   r   r   r   rg   r   r   r   r   r   r   r   r   s     r(   test_find_objects06r     s\    88&'D


t
$CaD)+aD)+aD)+- .r*   c            	          t        j                  g dg dg dg dg dg dg      } t        j                  |       }t	        |g        y )Nrn   )r   r   r   r   r   r   s     r(   test_find_objects07r     sC    88'''''') *D 

t
$Cbr*   c                  \   t        j                  g dg dg dg dg dg dg      } t        j                  |       }t	        |t        ddd       t        ddd       ft        ddd       t        d	d
d       ft        dd
d       t        dd	d       ft        d
dd       t        dd
d       fg       y )Nrs   rx   ry   rz   r{   r   r   rI   r   rg   r   r   r   s     r(   test_find_objects08r     s    88'''''') *D 

t
$CaD)5At+<=aD)5At+<=aD)5At+<=aD)5At+<=? @r*   c                  ,   t        j                  g dg dg dg dg dg dg      } t        j                  |       }t	        |t        ddd       t        ddd       ft        ddd       t        d	d
d       fd t        d
dd       t        dd
d       fg       y )Nrs   rx   ry   rn   r{   r   r   rI   r   rg   r   r   r   s     r(   test_find_objects09r     s    88'''''') *D 

t
$CaD)5At+<=aD)5At+<=aD)5At+<=? @r*   c            	      \   t        j                  g dg dg dg dg dg dg      } t        j                  | d      }g d}t	        t        |j                               |       i }|D ]  }t        j                  | |k(        ||<    t        j                  | d      }t	        ||       y	)
z Test dictionary keys and entriesrs   rx   ry   rn   r{   r   )ignore_value)r   r   r   N)r   r   r   value_indicesr   listkeyswhere)rY   vi	true_keystrueviks        r(   test_value_indices01r     s    88'''''') *D 
		t!	4BIbggi),FHHTQY'q	  
		t!	4BVr*   c                      t        j                  dt         j                        } d}t        t        |      5  t        j                  |        ddd       y# 1 sw Y   yxY w)zTest input checking)rg   r   r   z(Parameter 'arr' must be an integer array)matchN)r   r_   float32r   r   r   r   )rY   msgs     r(   test_value_indices02r     s?    88F"**-D
4C	z	-d# 
.	-	-s   AA!c                     dD ]  } t        j                  ddgz  ddgz  z   ddgz  z   t         j                        j                  |       }t        j                  |      }t        j                  |      }t        t        |j                               t        |             |D ])  }t        j                  ||k(        }t        ||   |       +  y)z2Test different input array shapes, from 1-D to 4-D))r   )   r   )rI   rI   r   )rI   rI   r   r      r   r   rI   r   N)r   r   r   r   uniquer   r   r   r   r   r   )r   r   trueKeysr   r   trueNdxs         r(   test_value_indices03r     s    :HHb!fRVmBsF*288<DDUK99Q<""1%T"'')_d8n5AhhqAv&GA(  ;r*   c                      t         D ]9  } t        j                  g |       }t        j                  |      }t        |d       ; y )Nr:   )r   r   r   r   sumr   r   inputr   s      r(   
test_sum01r    s4    T"U#VS! r*   c                      t         D ];  } t        j                  ddg|       }t        j                  |      }t        |d       = y )Nr   r   r:   )r   r   r_   r   r  r   r  s      r(   
test_sum02r    s8    !Q&U#VS! r*   c                      t         D ]9  } t        j                  g |       }t        j                  |      }t        |d       ; y )Nr   )r   r   rV   r   r  r   r  s      r(   
test_sum03r    s4    D!U#FC( r*   c                      t         D ];  } t        j                  ddg|       }t        j                  |      }t        |d       = y )Nr   r         @r   r   r   r   r  r   r  s      r(   
test_sum04r    s8    !Q&U#FC( r*   c                      t         D ]?  } t        j                  ddgddgg|       }t        j                  |      }t        |d       A y )Nr   r   rI   r   g      $@r  r  s      r(   
test_sum05r    sA    1a&1a&)40U#FD) r*   c                      t        j                  g t              } t        D ];  }t        j                  g |      }t	        j
                  ||       }t        |d       = y )Nr   r:   r   r   boolr   r   r  r   r   r   r  r   s       r(   
test_sum06r    sF    XXb$FT"U62VS! r*   c                      t        j                  ddgt              } t        D ]=  }t        j                  ddg|      }t        j                  ||       }t        |d       ? y )Nr   r   r  r:   )r   rV   r  r   r_   r   r  r   r  s       r(   
test_sum07r  "  sN    WWaVT"F!Q&U62VS! r*   c                      t        j                  ddgt              } t        D ]=  }t        j                  ddg|      }t	        j
                  ||       }t        |d       ? y )Nr   r   r   r  r   r  r  s       r(   
test_sum08r  *  sN    XXq!fd#F!Q&U62VS! r*   c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y )Nr   r   r   rI   r   r        @)r   r   r  r   r   r  r   r  s       r(   
test_sum09r  2  sW    XXq!fd#F1a&1a&)40U62FC( r*   c                      t        j                  ddgt              } t        j                  ddgddggt              }t        j                  ||       }t        |d       y Nr   r   r   rI   r   r         @)r   r   r  r   r  r   r   r  r   s      r(   
test_sum10r   :  sM    XXq!fd#FHHq!fq!f%t,E[[v.F$r*   c                      t        j                  ddgt         j                        } t        D ]B  }t        j                  ddgddgg|      }t	        j
                  || d      }t        |d       D y )Nr   r   rI   r   r         @)r   r   int8r   r   r  r   r  s       r(   
test_sum11r$  A  s`    XXq!fbgg&F1a&1a&)40U6#$&FC(	 r*   c                      t        j                  ddgddggt         j                        } t        D ]F  }t        j                  ddgddgg|      }t	        j
                  || g d      }t        |g d       H y Nr   r   r   rI   r      r   r   )r  r:   g      @)r   r   r#  r   r   r  r   r  s       r(   
test_sum12r)  J  sf    XX1v1v&0F1a&1a&)40U6C!&/: r*   c                  T   t        j                  ddgddggt         j                        } t        D ]u  }t        j                  ddgddgg|      }t	        j
                  || g d      }t	        j                  || g d      }||k(  j                         sJ t        |g d       w y r&  )	r   r   r#  r   r   r  
sum_labelsallr   )r   r   r  
output_sumoutput_labelss        r(   test_sum_labelsr/  R  s    XX1v1v&0F1a&1a&)40[[vYG
**&	3 m+00222!-A r*   c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y r  )r   r   r  r   r   meanr   r  s       r(   test_mean01r2  ^  sW    XXq!fd#F1a&1a&)40eF3FC( r*   c                      t        j                  ddgt              } t        j                  ddgddggt              }t        j                  ||       }t        |d       y Nr   r   r   rI   r   r  r   )r   r   r  r   r1  r   r  s      r(   test_mean02r5  f  sM    XXq!fd#FHHq!fq!f%t,E\\%/F$r*   c                      t        j                  ddg      } t        D ]B  }t        j                  ddgddgg|      }t        j                  || d      }t        |d       D y )Nr   r   rI   r   r   r
  )r   r   r   r   r1  r   r  s       r(   test_mean03r7  m  sZ    XXq!fF1a&1a&)40eF$%'FC(	 r*   c                     t        j                  ddgddggt         j                        } t        j                  d      5  t        D ]l  }t        j                  ddgddgg|      }t        j                  || g d      }t        |d	dg   d
dg       t        t        j                  |d                n 	 d d d        y # 1 sw Y   y xY w)Nr   r   r   ignorer,  rI   r'  r   r   r        @)
r   r   r#  errstater   r   r1  r   r   isnanr  s       r(   test_mean04r>  v  s    XX1v1v&0F		"DHHq!fq!f-t4E\\%(13F%faVnsCjABHHVAY'(  
#	"	"s   A6CC
c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y r4  )r   r   r  r   r   minimumr   r  s       r(   test_minimum01rA    W    XXq!fd#F1a&1a&)40v6FC( r*   c                      t        j                  ddgt              } t        j                  ddgddggt              }t        j                  ||       }t        |d       y Nr   r   r   r   r  r   )r   r   r  r   r@  r   r  s      r(   test_minimum02rE    M    XXq!fd#FHHq!fq!f%t,E__U62F$r*   c                      t        j                  ddg      } t        D ]B  }t        j                  ddgddgg|      }t        j                  || d      }t        |d       D y )Nr   r   rI   r   r   r  )r   r   r   r   r@  r   r  s       r(   test_minimum03rH    Z    XXq!fF1a&1a&)40v'(*FC(	 r*   c                      t        j                  ddgddgg      } t        D ]F  }t        j                  ddgddgg|      }t        j                  || g d      }t        |g d       H y )Nr   r   rI   r   r   rI   r(  r   )r  r  r:   )r   r   r   r   r@  r   r  s       r(   test_minimum04rL    c    XX1v1v&'F1a&1a&)40v'02!&/:	 r*   c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y )Nr   r   r   rI   r   r  r
  )r   r   r  r   r   maximumr   r  s       r(   test_maximum01rP    rB  r*   c                      t        j                  ddgt              } t        j                  ddgddggt              }t        j                  ||       }t        |d       y rD  )r   r   r  r   rO  r   r  s      r(   test_maximum02rR    rF  r*   c                      t        j                  ddg      } t        D ]B  }t        j                  ddgddgg|      }t        j                  || d      }t        |d       D y )Nr   r   rI   r   r   r  )r   r   r   r   rO  r   r  s       r(   test_maximum03rT    rI  r*   c                      t        j                  ddgddgg      } t        D ]F  }t        j                  ddgddgg|      }t        j                  || g d      }t        |g d       H y )Nr   r   rI   r   rK  r   )r
  r  r:   )r   r   r   r   rO  r   r  s       r(   test_maximum04rV    rM  r*   c                  p    t        j                  g d      } t        t        j                  |       d       y )N)r   r   )r   r   r   r   rO  )r$   s    r(   test_maximum05rZ    s#    
A#R(r*   c                      t        j                  g dg dg dg dg      } t        j                  g dg dg dg dg      }t        j                  | |g d	      }t	        |g d
       y )Nr   r   r   r   rg   rI   r   r   r   r   r   r   r-   rI   r   r   r   r   r   r   r   r   r   r   rI   rI   r   r   )r   r   rI   r   )r;  r  r"  )r   r   r   medianr   r   r   r   s      r(   test_median01re    s^    
,  	!A XX|###% &F ^^AfI>Ffo6r*   c                      t        j                  g dg dg dg dg      } t        j                  |       }t	        |d       y )Nr\  r]  r^  r_  r   r   r   r   rc  r   r   r   s     r(   test_median02ri    s:    
,  	!A ^^AF$r*   c                      t        j                  g dg dg dg dg      } t        j                  g dg dg dg dg      }t        j                  | |      }t	        |d	       y )
Nr\  r]  r^  r_  r`  ra  rb  r  r
  rg  rd  s      r(   test_median03rk    s\    
,  	!A XX|###% &F ^^Af-F$r*   c                      t        j                  ddgt              } t        j                  | t        j
                  d      dg      }t        |dg       y )Nr   r   r   r   r   )r   asarrayr  r   rc  rV   r   rh  s     r(   test_median_gh12836_boolro    s>    


Aq6&A^^AbggdmA3?Ffse,r*   c                      t        j                  ddgt         j                        } t        j                  | t        j
                  d      dg      }t        |dg       y )NA   F   r   rm  r   r   g     P@)r   rn  r#  r   rc  rV   r   rh  s     r(   test_median_no_int_overflowrs    sB    


B8277+A^^AbggdmA3?Fftf-r*   c                  n   t        j                  d      5  t        D ]t  } t        j                  g |       }t	               5 }|j                  t        d       t        j                  |      }d d d        t        t        j                               v 	 d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY wNr9  r:  zMean of empty slice)r   r<  r   r   r	   filterRuntimeWarningr   variancer   r=  r   r  supr   s       r(   test_variance01r{    s    		"DHHR&E"$

>+@A ))%0 % BHHV$%  
#	" %$ 
#	"#   *B+,B-(B+B($B++B4c                      t         D ]:  } t        j                  dg|       }t        j                  |      }t        |d       < y Nr   r:   r   r   r   r   rx  r   r  s      r(   test_variance02r    s8    !d#!!%(FC( r*   c                      t         D ];  } t        j                  ddg|       }t        j                  |      }t        |d       = y Nr   rI   r   r  r  s      r(   test_variance03r    s:    !Q&!!%(FC( r*   c                  ~    t        j                  ddgt              } t        j                  |       }t        |d       y )Nr   r   g      ?)r   r   r  r   rx  r   r  r   s     r(   test_variance04r    s0    HHaVT"Ee$F%r*   c                      g d} t         D ]=  }t        j                  g d|      }t        j                  || d      }t        |d       ? y N)r   r   rI   )r   rI   r(  r   r   r  r  s       r(   test_variance05r    s?    FD)!!%3FC( r*   c                      g d} t        j                  d      5  t        D ]A  }t        j                  g d|      }t	        j
                  || g d      }t        |g d       C 	 d d d        y # 1 sw Y   y xY wN)r   r   rI   rI   r   r9  r:  )r   rI   r(  r   r(  )r   rI   r   )r   r   r:   )r   r<  r   r   r   rx  r   r  s       r(   test_variance06r     sX    F		"DHH-t4E%%eVY?F%fo>  
#	"	"   AA00A9c                  n   t        j                  d      5  t        D ]t  } t        j                  g |       }t	               5 }|j                  t        d       t        j                  |      }d d d        t        t        j                               v 	 d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY wru  )r   r<  r   r   r	   rv  rw  r   standard_deviationr   r=  ry  s       r(   test_standard_deviation01r  )  s    		"DHHR&E"$

>+@A 33E: % BHHV$%  
#	" %$ 
#	"r|  c                      t         D ]:  } t        j                  dg|       }t        j                  |      }t        |d       < y r~  r   r   r   r   r  r   r  s      r(   test_standard_deviation02r  3  s8    !d#++E2FC( r*   c                      t         D ]N  } t        j                  ddg|       }t        j                  |      }t        |t        j                  d             P y r  )r   r   r   r   r  r   sqrtr  s      r(   test_standard_deviation03r  :  sB    !Q&++E2FBGGCL1 r*   c                  ~    t        j                  ddgt              } t        j                  |       }t        |d       y )Nr   r   r2   )r   r   r  r   r  r   r  s     r(   test_standard_deviation04r  A  s0    HHaVT"E''.F$r*   c                      g d} t         D ]=  }t        j                  g d|      }t        j                  || d      }t        |d       ? y r  r  r  s       r(   test_standard_deviation05r  G  s?    FD)++E61=FC( r*   c                      g d} t        j                  d      5  t        D ]A  }t        j                  g d|      }t	        j
                  || g d      }t        |g d       C 	 d d d        y # 1 sw Y   y xY wr  r   r<  r   r   r   r  r   r  s       r(   test_standard_deviation06r  O  sX    F		"DHH-t4E//vyIF%fo>  
#	"	"r  c                      dg} t        j                  d      5  t        D ]>  }t        j                  dg|      }t	        j
                  || dg      }t        |dg       @ 	 d d d        y # 1 sw Y   y xY w)Nr   r9  r:  gl `yr   r  r  s       r(   test_standard_deviation07r  X  s_    SF		"DHHk]D1E//vsCF%fqc2  
#	"	"s   AA,,A5c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y )Nr   r   r   rI   r   r  r   r   )r   r   r  r   r   minimum_positionr   r  s       r(   test_minimum_position01r  a  sY    XXq!fd#F1a&1a&)40))%?VV$ r*   c                      t         D ]B  } t        j                  g dg dg dg|       }t        j                  |      }t        |d       D y Nrg   r   r   rg   rI   r   r   r   r   rg   r   r   r   r   r   r   r   r   r  r   r  s      r(   test_minimum_position02r  i  F    ,&&()-/ ))%0VV$ r*   c                      t        j                  g dg dg dgt              } t        j                  |       }t        |d       y r  r   r   r  r   r  r   r  s     r(   test_minimum_position03r  r  <    HHl""$%)+E %%e,F r*   c                      t        j                  g dg dg dgt              } t        j                  |       }t        |d       y )Nr  )rI   r   r   r   r  r  r  r  s     r(   test_minimum_position04r  z  r  r*   c                      g d} t         D ]C  }t        j                  g dg dg dg|      }t        j                  ||       }t        |d       E y )Nr   r   r   r   r  r  )r   rg   r   rI   )r   r   r  r  s       r(   test_minimum_position05r    M    F,&&()-/ ))%8VV$ r*   c                      g d} t         D ]D  }t        j                  g dg dg dg|      }t        j                  || d      }t        |d       F y )Nr   r   rI   r   r  r  r  r   r   r   r  r  s       r(   test_minimum_position06r    O    F,&&()-/ ))%;VV$ r*   c                      g d} t         D ]X  }t        j                  g dg dg dg|      }t        j                  || ddg      }t        |d   d       t        |d	   d
       Z y )Nr  r  r  r  r   rI   r   r  r   r  r  r  s       r(   test_minimum_position07r    h    F,&&()-/ ))%+,a&2VAY'VAY' r*   c                      t        j                  ddgt              } t        D ]A  }t        j                  ddgddgg|      }t	        j
                  ||       }t        |d       C y )Nr   r   r   rI   r   r  )r   r   )r   r   r  r   r   maximum_positionr   r  s       r(   test_maximum_position01r    s\    XXq!fd#F1a&1a&)40))%179VV$	 r*   c                      t         D ]B  } t        j                  g dg dg dg|       }t        j                  |      }t        |d       D y )Nr  rI   r   r(  r   r  r  r   r   r   r   r  r   r  s      r(   test_maximum_position02r    r  r*   c                      t        j                  g dg dg dgt              } t        j                  |       }t        |d       y )Nr  r  r  r  )r   r   r  r   r  r   r  s     r(   test_maximum_position03r    r  r*   c                      g d} t         D ]C  }t        j                  g dg dg dg|      }t        j                  ||       }t        |d       E y )Nr  r  r  r  r   r   r  r  s       r(   test_maximum_position04r    r  r*   c                      g d} t         D ]D  }t        j                  g dg dg dg|      }t        j                  || d      }t        |d       F y )Nr  r  r  r  r   r  r  r  s       r(   test_maximum_position05r    r  r*   c                      g d} t         D ]X  }t        j                  g dg dg dg|      }t        j                  || ddg      }t        |d   d       t        |d   d	       Z y )
Nr  r  r  r  r   r   r   r  r  r  r  s       r(   test_maximum_position06r    r  r*   c                      t        j                  g d      } t        D ]X  }t        j                  g dg dg dg|      }t        j                  || ddg      }t        |d   d       t        |d	   d
       Z y )N)r   r;  r:         @r  r  r  r   r  r   r  r   )r   rI   )r   r   r   r   r  r   r  s       r(   test_maximum_position07r    sr    XX*+F,&&()-/ ))%+.*6VAY'VAY' r*   c                     t        j                  ddgt              } t        D ]  }t        j                  ddgddgg|      }t	        j
                  ||       }t	        j                  ||       }t	        j                  ||       }t	        j                  ||       }t	        j                  ||       }t        |||||f        y )Nr   r   r   rI   r   r  )r   r   r  r   r   extremar@  rO  r  r  r   r   r   r  output1output2output3output4output5s           r(   test_extrema01r    s    XXq!fd#F1a&1a&)40//%7//%7//%7**528:**528:Ww'BC r*   c                     t        j                  ddg      } t        D ]  }t        j                  ddgddgg|      }t        j                  || d      }t        j
                  || d      }t        j                  || d      }t        j                  || d      }t        j                  || d      }t        |||||f        y )Nr   r   rI   r   r   )
r   r   r   r   r  r@  rO  r  r  r   r  s           r(   test_extrema02r    s    XXq!fF1a&1a&)40//%()+//%()+//%()+**528C**528CWw'BC r*   c                     t        j                  ddgddgg      } t        D ]  }t        j                  ddgddgg|      }t        j                  || g d      }t        j
                  || g d      }t        j                  || g d      }t        j                  || g d      }t        j                  || g d      }t        |d   |       t        |d   |       t        |d   |       t        |d   |        y )Nr   r   rI   r   rK  r   r   )
r   r   r   r   r  r@  rO  r  r  r   r  s           r(   test_extrema03r    s    XX1v1v&'F1a&1a&)40//%(13//%(13//%(13**528	K**528	K!'!*g6!'!*g6!'!*g6!'!*g6 r*   c                     g d} t         D ]  }t        j                  g dg dg dg|      }t        j                  || ddg      }t        j
                  || ddg      }t        j                  || ddg      }t        j                  || ddg      }t        j                  || ddg      }t        |d   |       t        |d   |       t        |d   |       t        |d   |        y )	Nr  r  r  r  r   r   r   rI   )
r   r   r   r   r  r@  rO  r  r  r   r  s           r(   test_extrema04r    s    F,&&()-/ //%!Q8//%!Q8//%!Q8**5&,-q63**5&,-q63!'!*g6!'!*g6!'!*g6!'!*g6 r*   c                      ddg} t         D ]?  }t        j                  ddgddgg|      }t        j                  |      }t        ||        A y )Nr:   r   r   r   r   r   r   center_of_massr   r   r   r  r   s       r(   test_center_of_mass01r  /  L    SzH1a&1a&)40''.!&(3 r*   c                      ddg} t         D ]?  }t        j                  ddgddgg|      }t        j                  |      }t        ||        A y rd   r  r  s       r(   test_center_of_mass02r  7  L    1vH1a&1a&)40''.!&(3 r*   c                      ddg} t         D ]?  }t        j                  ddgddgg|      }t        j                  |      }t        ||        A y Nr   r   r  r  s       r(   test_center_of_mass03r  ?  r  r*   c                      ddg} t         D ]?  }t        j                  ddgddgg|      }t        j                  |      }t        ||        A y rd   r  r  s       r(   test_center_of_mass04r  G  r  r*   c                      ddg} t         D ]?  }t        j                  ddgddgg|      }t        j                  |      }t        ||        A y )Nr2   r   r  r  s       r(   test_center_of_mass05r  O  r  r*   c                      ddg} t        j                  ddgddggt              }t        j                  |      }t        ||        y )Nr2   r   r   rI   r   r   r  r   r  r   r   r  r   s      r(   test_center_of_mass06r  W  sB    SzHHHq!fq!f%t,E##E*Ffh/r*   c                      ddg} ddg}t        j                  ddgddggt              }t        j                  ||       }t        ||       y )Nr   r   r2   r:   r   rI   r  r   r   r  r   s       r(   test_center_of_mass07r  ^  sM    VFSzHHHq!fq!f%t,E##E62Ffh/r*   c                      ddg} ddg}t        j                  ddgddggt              }t        j                  || d      }t        ||       y )Nr   r   r2   r   rg   rI   r  r  s       r(   test_center_of_mass08r  f  sO    VFSzHHHq!fq!f%t,E##E615Ffh/r*   c                      ddg} ddg}t        j                  ddgddggt              }t        j                  || ddg      }t        ||       y )Nr   r   )r2   r:   )r2   r   r  r  s       r(   test_center_of_mass09r  n  sT    VFJ'HHHq!fq!f%t,E##E6Aq6:Ffh/r*   c                      t        j                  d      } t        j                  d      }t        j                  |ddd      }t        ||        y )Nr   r   )r   rV   aranger   	histogramr   r  s      r(   test_histogram01r  v  s<    wwr{HIIbMEuaR0Ffh/r*   c                      g d} g d}t        j                  g d      }t        j                  |ddd| d      }t	        ||       y )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rI   r   rI   rI   rI   rI   r   r   rg   r   r   r   r   r  r   r  s       r(   test_histogram02r  }  s?    %FHHH-.EuaAvq9Ffh/r*   c                      g d} g d}g d}t        j                  g d      }t        j                  |ddd| d      }t	        |d   |       t	        |d	   |       y )
N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   rI   r   )r   r   rI   r   rI   rg   rI   rI   r   r   rg   r  r   r  )r   	expected1	expected2r  r   s        r(   test_histogram03r    sV    %FIIHH-.EuaAvv>FfQi3fQi3r*   c                     t        j                  g dg dg dg      } t        j                  g dg dg dg      }t        j                  | |ddg      }t	        |d	d
g       t        j
                  | |ddg      }t	        |ddg       t        j                  | |ddg      }t        |t        j                  ddg             t        j                  | |ddg      }t	        |d	d
g       t        j                  | |ddg      }t	        |ddg       t        j                  | |ddg      }t	        |ddg       y )N)rg   r   r   r   r   )r(  r-   r   r   r   )r   r   r   rI   rg   )r   r   r   r   r   )r   r   r   r   r   r   r   r   rE   r  r;  r   rg   rI   r-   )r   r   r   r1  r   rx  r  r   r  rc  r@  rO  )r   lblr1  varstdmedminmaxs           r(   test_stat_funcs_2dr    s   
/?ODEA
((O_oF
GC<<#aV4Dtc3Z(


1SA
7CsS#J'

$
$Qs1a&
ACc277C:#67
..3q!f
5CsS#J'
//!C1v
6CsQF#
//!C1v
6CsQF#r*   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestWatershedIftc                    t        j                  g dg dg dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dg dg dgt         j                        }t	        j
                  ||g dg dg dg      }g dg d	g d	g d	g d	g d	g dg dg}t        ||       y )
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   r   r   r   r   r   r   r   r   r   r   r   	structurer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   uint8r#  r   watershed_iftr   r#   rY   markersrZ   r   s        r(   test_watershed_ift01z%TestWatershedIft.test_watershed_ift01  s    xx........0 24; ((211111113 57GG= ##D'i>G>G>I J 1+++++002 	"#x0r*   c                 l   t        j                  g dg dg dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dg dg dgt         j                        }t	        j
                  ||      }g dg dg dg dg dg dg dg dg}t        ||       y )	Nr  r  r  r  r  r  )r   r   r   r   r   r   r   r  r  r  s        r(   test_watershed_ift02z%TestWatershedIft.test_watershed_ift02  s    xx........0 24; ((211111113 57GG= ##D'20-+++-002 	"#x0r*   c           
      Z   t        j                  g dg dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dg dgt         j                        }t	        j
                  ||      }g dg dg dg dg dg dg dg}t        ||       y )	Nr  r  r   r   r   r   r   r   r   r   r   r   r   rI   r   r   r   r   r   r   r   r   r   r  )r   r   r   r   rI   r   r   r   r   r   rI   rI   rI   r   r  r  s        r(   test_watershed_ift03z%TestWatershedIft.test_watershed_ift03  s    xx.......0 24; ((11111124 68WW> ##D'20.+++.02 	"#x0r*   c           
      p   t        j                  g dg dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dg dgt         j                        }t	        j
                  ||g dg dg dg      }g dg d	g d	g d	g d	g d	g dg}t        ||       y )
Nr  r  r%  r&  r'  r  r  r  r(  r  r  s        r(   test_watershed_ift04z%TestWatershedIft.test_watershed_ift04      xx.......0 24; ((11111124 77$ ##D'/8/8/8/:; 1+++++02 	"#x0r*   c           
      p   t        j                  g dg dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dg dgt         j                        }t	        j
                  ||g dg dg dg      }g dg d	g d	g d	g d	g d	g dg}t        ||       y )
Nr  r  r%  )r   r   rI   r   r   r   r   r'  r  r  r  )r   rI   rI   r   r   r   r   r  r  s        r(   test_watershed_ift05z%TestWatershedIft.test_watershed_ift05  r,  r*   c           	      ^   t        j                  g dg dg dg dg dg dgt         j                        }t        j                  g dg dg dg dg dg dgt         j                        }t	        j
                  ||g dg dg dg      }g dg dg dg dg d	g d	g}t        ||       y )
Nr  r  r  r  r  r  r  r  r  r  r  s        r(   test_watershed_ift06z%TestWatershedIft.test_watershed_ift066  s    xx......0
 24; ((2111113
 57GG= ##D'/8/8/8/:; ,+++002 	"#x0r*   c           	      >   d}t        j                  |t         j                        }|j                         }t        j                  g dg dg dg dg dg dgt         j                        |d<   t        j                  g dg dg dg dg dg dgt         j
                        }t        j                  |t         j                        }|j                         }t        j                  ||g d	g d	g d	g|
       g dg dg dg dg dg dg}t        ||       y )N)r   r   r   r  r  r  .r  r  r  )r  r   r  r  )
r   r_   r  	transposer   r#  int16r   r  r   )r#   r   rY   r   rZ   r   s         r(   test_watershed_ift07z%TestWatershedIft.test_watershed_ift07O  s    xxRXX.~~HH3333335
 79hh@S	 ((2111113
 57GG= hhuBHH-mmodG)2)2)2)4 &)		*
 ,+++002 	"#x0r*   c                     t        j                  ddgddggt         j                        }t        j                  ddgddggt         j                        }t	        j
                  ||      }ddgddgg}t        ||       y )N   r   r   )r   r   uint16r#  r   r  r   r  s        r(   test_watershed_ift08z%TestWatershedIft.test_watershed_ift08n  s    xx#qQ!"$))-((QFF$%'WW.##D'2FF!#x0r*   c                 V   t        j                  t        j                  t         j                        j                  dgddggt         j                        }t        j                  ddgddggt         j
                        }t        j                  ||      }ddgddgg}t        ||       y r  )	r   r   iinfor7  r  r#  r   r  r   r  s        r(   test_watershed_ift09z%TestWatershedIft.test_watershed_ift09y  s    xx"((299-1115Q!"$))-((QFF$%'WW.##D'2FFX&r*   N)r=   r>   r?   r!  r#  r)  r+  r.  r0  r4  r8  r;  rA   r*   r(   r  r    s/    1<18121:1:121>	1	'r*   r  dtc                     t         j                  j                  d      }d}|j                  d|d      j	                  |       }t        j                  |      }t        |j                               |k(  sJ y )N{   r(  r   )r   r   )lowhighr   r   )	r   r   default_rngintegersastyper   r   rM   r   )r<  rngmax_valimageval_idxs        r(   test_gh_19423rH    sf    
))


$CGLLQW8L<CC"CME##E*Gw||~')))r*   )os.pathr   numpyr   numpy.testingr   r   r   r   r   r   r	   pytestr
   r   scipy.ndimager    r   r   rC   r\   r`   rb   re   rh   rl   ro   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r   r$  r)  r/  r2  r5  r7  r>  rA  rE  rH  rL  rP  rR  rT  rV  rZ  re  ri  rk  ro  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  markparametrizeintcuintcrH  rA   r*   r(   <module>rS     s        *  B4 B4J#4 #4L""$&&" !:&5 ...@@($	)""))*""")%);	B)%)))%);)%);)
7%
%-.&))&)?&)2%)?3%%!!%%	(%%!%%	(
(DD"7(7&444440000004$.[' ['| 23* 4*r*   