
    Ugh                        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                            dxej        ej        g          dy             ZdS )z    N)assert_assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equalsuppress_warnings)raises   )typesc                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )Test_measurements_statszDndimage._measurements._stats() is a utility used by other functions.c                 V   g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          j                            |||          \  }}t          |ddg           t          |dd	g           d S )
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          d/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/ndimage/tests/test_measurements.pytest_azTest_measurements_stats.test_a   s    LLA! 	1 	1C##C((AXf%%--c22F"077& 8 / /LFDv1v...tc3Z0000	1 	1    c                 V   g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          j                            |||          \  }}t          |ddg           t          |dd	g           d S )
Nr   r   r   	   r-   r   r-   r   r   r   r   r   r   r"   s          r(   test_bzTest_measurements_stats.test_b%   s     LLA! 	1 	1C##C((AXf%%--c22F"077& 8 / /LFDv1v...tc3Z0000	1 	1r*   c                 ~   g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          j                            |||d          \  }}}t          |ddg           t          |d	d
g           t          |dd
g           d S )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       LLA! 	4 	4C##C((AXf%%--c22F$+$9$@$@& %A %> %>!FD'v1v...tc3Z000wc
3333	4 	4r*   c                 ~   g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          j                            |||d          \  }}}t          |ddg           t          |d	d
g           t          |dd
g           d S )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        |                              |          }t          j        |                              |          }t          j                            |||d          \  }}}t          |ddg           t          |d	d
g           t          |dd
g           d S )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    LL%%%c
! 	4 	4C##C((AXf%%--c22F$+$9$@$@& %A %> %>!FD'v1v...tc3Z000wc
3333	4 	4r*   N)	__name__
__module____qualname____doc__r)   r.   r5   r8   r<    r*   r(   r   r      se        NN
1 
1 
11 1 14 4 44 4 44 4 4 4 4r*   r   c                       e Zd ZdZd ZdS )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                            |||
          }t          t	          |          dk               t           j                            |||d          }t          t	          |          dk               t          |d         ddg           t           j                            |||d          }t          t	          |          dk               t          |d         ddg           t           j                            |||dd          }t          t	          |          dk               t          |d         ddg           t          |d         ddg           t          |d         j        j        d           t           j                            |||dd          }t          t	          |          dk               t          |d         ddg           t          |d         ddg           t          |d         j        j        d           (d S )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^   sk   LL\\Aq6"\\Aq6"!!!C:.

 # 	4 	4MFE*22& 3 / /FCKK1$%%%*22& 3 > >FCKK1$%%%vay1a&111*22& 3 > >FCKK1$%%%vay1a&111*22&#' 3 ) )F CKK1$%%%vay1a&111vay1a&111-s333*22&#' 3 ) )F CKK1$%%%vay1a&111vay1a&111-s33333	4 	4r*   N)r=   r>   r?   r@   rR   rA   r*   r(   rC   rC   [   s)        OO 4  4  4  4  4r*   rC   c                      t          j        g           } t          j        |           \  }}t	          |d           t          |d           d S Nr   r   onesr   labelr   r   dataoutns      r(   test_label01r\      sH    72;;D]4  FCc1%%%Ar*   c                      t          j        g           } t          j        |           \  }}t	          |d           t          |d           d S )Nr   r   zerosr   rW   r   r   rX   s      r(   test_label02r`      sH    8B<<D]4  FCc1%%%Ar*   c                      t          j        dg          } t          j        |           \  }}t	          |dg           t          |d           d S rT   rU   rX   s      r(   test_label03rb      sL    7A3<<D]4  FCcA3'''Ar*   c                      t          j        dg          } t          j        |           \  }}t	          |dg           t          |d           d S Nr   r   r^   rX   s      r(   test_label04re      sL    8QC==D]4  FCcA3'''Ar*   c                      t          j        dg          } t          j        |           \  }}t	          |g d           t          |d           d S )N   )r   r   r   r   r   r   rU   rX   s      r(   test_label05rh      sN    7A3<<D]4  FCc???333Ar*   c                      t          j        g d          } t          j        |           \  }}t	          |g d           t          |d           d S )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      sX    8&&&''D]4  FCc#5#5#566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           d S )Nr   r   r   r   r   r   r   rk   rX   s      r(   test_label07ro          8'''''''''''''''''') * *D ]4  FCc$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$8 9 9 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
           d S 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           d S )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    8'''''''''''''''''') * *D .q!44F]4((FCc$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$6$8 9 9 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           d S )Nrn   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r~   r   s       r(   test_label10r      s    8'''''''''''') * *D .q!44F]4((FCc$6$6$6$6$6$6$6$6$6$6$6$6$8 9 9 9 Ar*   c            
          t           D ]t} 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
           ud S rr   r   r   r   r   rW   r   r   typerY   rZ   r[   expecteds        r(   test_label11r      s      x++++++++++++++++++-
 /34 4 t$$Q&&&&&&&&&&&&&&&&&&( 	"#x000Q r*   c            
          t           D ]s} 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           td S )Nrs   rt   ru   rv   rw   outputrx   ry   rz   r{   r   r   )r   rY   r[   r   s       r(   test_label11_inplacer      s      x++++++++++++++++++-
 /34 4 M$t,,,&&&&&&&&&&&&&&&&&&( 	"$111Q r*   c            	          t           D ]n} 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           od S )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     s      x+++++++++++++++	- /3	4 4
 t$$Q&&&&&&&&&&&&&&&	(
 	"#x000Q r*   c                      t           D ]h} 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           id S )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   $  s      x::::::::::::< 	 
 t$$Q5555555555557 	"#x000Q r*   c                      t          j        dg          } t          D ]O}t          j        dg|          }t	          j        | |          }t          |d           t          |d           Pd S )Nrg   rN   r   r   )r   rV   r   r_   r   rW   r   r   rY   tr   r[   s       r(   test_label_output_typedr   4  sw    7A3<<D  1#Q'''M$v...!&!,,,Q	 r*   c                      t          j        dg          } t          D ]8}t          j        | |          \  }}t          |d           |j        |k    sJ 9d S )Nrg   r   r   )r   rV   r   r   rW   r   rN   r   s       r(   test_label_output_dtyper   =  sh    7A3<<D ! !M$q111	!&!,,,|q     ! !r*   c                      t          j        dg          } t          D ]A}t          j        dg|          }t	          t
          t          ft          j        | |           Bd S )Nrg   
   r   )	r   rV   r   r_   assert_raisesRuntimeError
ValueErrorr   rW   )rY   r   r   s      r(   test_label_output_wrong_sizer   E  si    7A3<<D : :2$""|Z0mT&	: 	: 	: 	: 	:: :r*   c            
         t          j        t          j                            t          j                            t                    dd                    } t          j        t          j                            t          j                            t                    dd                    }t          j        t          j                            t          j                            t                    dd                    }|                     d          } |                    d          }|                    d          }d}t          | j	        d                   D ]x}| |d d d d f         }t          |j	        d                   D ]L}||d d d d f         }t          t          j        ||          d         ||d d d d f                    |dz  }Myd S )	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  s   :bgll27??$ $-/ / 0 0DZ
!!6+=? ? @ @Fj
!!6+>@ @ A AG<<
##D^^J''Fooj))G	A4:a=!!  AAAqqqMv|A'' 	 	Aq!!!QQQwAq!,,Q/AAAqqq1ABBBFAA	 r*   c                     dd} t          j        t           j                  t          j        d          k    rSd}t           j                            t          j        |                                        |          } | |           d S d S )Nffffff?r   c                     | |k    }t          |j                  }t          j        |t          j        ||                    \  }}t          j        |          }d S )N)rM   r   r   rW   r   find_objects)imgthreshsizemaskranklaco_s           r(   SEztest_ticket_742.<locals>.SEa  sU    V|4:t&@tLLN NB $$r*   rJ   )rI     r   )r   r   )r   rN   intprandomrandprodr   )r   r   as      r(   test_ticket_742r   `  s~    % % % % 
xBHSMM))INN275>>**2259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 dS )
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  s    
AAaaa#gJAaaagJAgJAgJAgJ=BGFOO,,Q/1444444r*   c                      t           j                            dd          } t          j        | dk              \  }}t          |j        t           j        t           j        fv            t          j	        |           d S )Nr   r2   )
r   r   r   r   rW   r   rN   int32int64r   )
test_arrayrW   no_featuress      r(   test_label_default_dtyper   z  se    B''J zC'788E;EKBHbh//000r*   c                      t          j        g t                    } t          j        |           }t          |dgk               d S )Nr   rA   )r   rV   intr   r   r   rY   rZ   s     r(   test_find_objects01r     s@    72S!!!D

t
$
$CCB4Kr*   c                      t          j        g t                    } t          j        |           }t          |g k               d S )Nr   )r   r_   r   r   r   r   r   s     r(   test_find_objects02r     s>    8Bc"""D

t
$
$CC2Ir*   c                      t          j        dgt                    } t          j        |           }t          |t          ddd           fg           d S )Nr   r   r   r   rV   r   r   r   r   slicer   s     r(   test_find_objects03r     P    7A3c"""D

t
$
$CaD))+,-----r*   c                      t          j        dgt                    } t          j        |           }t          |g            d S )Nr   r   )r   r_   r   r   r   r   r   s     r(   test_find_objects04r     s>    8QCs###D

t
$
$Cbr*   c                      t          j        dgt                    } t          j        |           }t          |t          ddd           fg           d S )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           d S )Nrj   r   r   r   r   rg   r   r   r   r   r   r   r   r   s     r(   test_find_objects06r     s    8&&&''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            d S )Nrn   )r   r   r   r   r   r   s     r(   test_find_objects07r     sv    8'''''''''''''''''') * *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           d S )Nrs   rx   ry   rz   r{   r   r   rI   r   rg   r   r   r   s     r(   test_find_objects08r     s   8'''''''''''''''''') * *D 
t
$
$CaD))5At+<+<=aD))5At+<+<=aD))5At+<+<=aD))5At+<+<=? @ @ @ @ @r*   c                  b   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           d S )Nrs   rx   ry   rn   r{   r   r   rI   r   rg   r   r   r   s     r(   test_find_objects09r     s    8'''''''''''''''''') * *D 
t
$
$CaD))5At+<+<=aD))5At+<+<=aD))5At+<+<=? @ @ @ @ @r*   c            	      t   t          j        g dg dg dg dg dg dg          } t          j        | d          }g d}t	          t          |                                          |           i }|D ]}t          j        | |k              ||<   t          j        | d          }t	          ||           d	S )
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    8'''''''''''''''''') * *D 
	t!	4	4	4B		Ibggii),,,F ( (HTQY''q				t!	4	4	4BVr*   c                      t          j        dt           j                  } d}t          t          |          5  t          j        |            ddd           dS # 1 swxY w Y   dS )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    8F"*---D
4C	z	-	-	- $ $d###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AA"Ac                     dD ]} t          j        ddgz  ddgz  z   ddgz  z   t           j                                      |           }t          j        |          }t          j        |          }t          t          |	                                          t          |                     |D ]0}t          j
        ||k              }t          ||         |           1dS )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    : ) )Hb!fRVmBsF*28<<<DDUKK9Q<<"1%%T"''))__d8nn555 	) 	)AhqAv&&GA((((	)) )r*   c                      t           D ];} t          j        g |           }t          j        |          }t          |d           <d S )Nr:   )r   r   r   r   sumr   r   inputr   s      r(   
test_sum01r    sN     " "T""U##VS!!!!" "r*   c                      t           D ]=} t          j        ddg|           }t          j        |          }t          |d           >d S )Nr   r   r:   )r   r   r_   r   r  r   r  s      r(   
test_sum02r    sR     " "!Q&&U##VS!!!!" "r*   c                      t           D ];} t          j        g |           }t          j        |          }t          |d           <d S )Nr   )r   r   rV   r   r  r   r  s      r(   
test_sum03r	    sN     ) )D!!U##FC(((() )r*   c                      t           D ]=} t          j        ddg|           }t          j        |          }t          |d           >d S )Nr   r         @r   r   r   r   r  r   r  s      r(   
test_sum04r    sR     ) )!Q&&U##FC(((() )r*   c                      t           D ]A} t          j        ddgddgg|           }t          j        |          }t          |d           Bd S )Nr   r   rI   r   g      $@r  r  s      r(   
test_sum05r    s[     * *1a&1a&)400U##FD))))* *r*   c                      t          j        g t                    } t          D ]=}t          j        g |          }t	          j        ||           }t          |d           >d S )Nr   r:   r   r   boolr   r   r  r   r   r   r  r   s       r(   
test_sum06r    sd    Xb$F " "T""U6222VS!!!!" "r*   c                      t          j        ddgt                    } t          D ]?}t          j        ddg|          }t          j        ||           }t          |d           @d S )Nr   r   r  r:   )r   rV   r  r   r_   r   r  r   r  s       r(   
test_sum07r  "  sl    WaVT""F " "!Q&&U6222VS!!!!" "r*   c                      t          j        ddgt                    } t          D ]?}t          j        ddg|          }t	          j        ||           }t          |d           @d S )Nr   r   r   r  r   r  r  s       r(   
test_sum08r  *  sl    Xq!fd##F " "!Q&&U6222VS!!!!" "r*   c                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S )Nr   r   r   rI   r   r        @)r   r   r  r   r   r  r   r  s       r(   
test_sum09r  2  su    Xq!fd##F ) )1a&1a&)400U6222FC(((() )r*   c                      t          j        ddgt                    } t          j        ddgddggt                    }t          j        ||           }t          |d           d S Nr   r   r   rI   r   r         @)r   r   r  r   r  r   r   r  r   s      r(   
test_sum10r!  :  s_    Xq!fd##FHq!fq!f%t,,E[v...F$$$$$r*   c                      t          j        ddgt           j                  } t          D ]D}t          j        ddgddgg|          }t	          j        || d          }t          |d           Ed S )Nr   r   rI   r   r         @)r   r   int8r   r   r  r   r  s       r(   
test_sum11r%  A  s    Xq!fbg&&F ) )1a&1a&)400U6#$& & &FC((((	) )r*   c                      t          j        ddgddggt           j                  } t          D ]H}t          j        ddgddgg|          }t	          j        || g d          }t          |g d           Id S Nr   r   r   rI   r      r   r   )r  r:   g      @)r   r   r$  r   r   r  r   r  s       r(   
test_sum12r*  J  s    X1v1v&00F ; ;1a&1a&)400U6CCC!&///::::; ;r*   c                  V   t          j        ddgddggt           j                  } t          D ]{}t          j        ddgddgg|          }t	          j        || g d          }t	          j        || g d          }||k                                    sJ t          |g d           |d S r'  )	r   r   r$  r   r   r  
sum_labelsallr   )r   r   r  
output_sumoutput_labelss        r(   test_sum_labelsr0  R  s    X1v1v&00F B B1a&1a&)400[vYYYGGG
*&			3 3 3 m+0022222!-AAAAB Br*   c                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S r  )r   r   r  r   r   meanr   r  s       r(   test_mean01r3  ^  su    Xq!fd##F ) )1a&1a&)400eF333FC(((() )r*   c                      t          j        ddgt                    } t          j        ddgddggt                    }t          j        ||           }t          |d           d S Nr   r   r   rI   r   r  r   )r   r   r  r   r2  r   r   s      r(   test_mean02r6  f  s_    Xq!fd##FHq!fq!f%t,,E\%///F$$$$$r*   c                      t          j        ddg          } t          D ]D}t          j        ddgddgg|          }t          j        || d          }t          |d           Ed S )Nr   r   rI   r   r   r  )r   r   r   r   r2  r   r  s       r(   test_mean03r8  m  s|    Xq!fF ) )1a&1a&)400eF$%' ' 'FC((((	) )r*   c                     t          j        ddgddggt           j                  } t          j        d          5  t          D ]w}t          j        ddgddgg|          }t          j        || g d          }t          |d	dg         d
dg           t          t          j	        |d                              x	 d d d            d S # 1 swxY w Y   d S )Nr   r   r   ignorer-  rI   r(  r   r   r        @)
r   r   r$  errstater   r   r2  r   r   isnanr  s       r(   test_mean04r?  v  s'   X1v1v&00F		"	"	" ) ) 	) 	)DHq!fq!f-t44E\%(1		3 3 3F%faVnsCjAAABHVAY''((((	)) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   B C		CCc                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S r5  )r   r   r  r   r   minimumr   r  s       r(   test_minimum01rB    u    Xq!fd##F ) )1a&1a&)400v666FC(((() )r*   c                      t          j        ddgt                    } t          j        ddgddggt                    }t          j        ||           }t          |d           d S Nr   r   r   r   r  r   )r   r   r  r   rA  r   r   s      r(   test_minimum02rF    _    Xq!fd##FHq!fq!f%t,,E_U6222F$$$$$r*   c                      t          j        ddg          } t          D ]D}t          j        ddgddgg|          }t          j        || d          }t          |d           Ed S )Nr   r   rI   r   r   r  )r   r   r   r   rA  r   r  s       r(   test_minimum03rI    |    Xq!fF ) )1a&1a&)400v'(* * *FC((((	) )r*   c                      t          j        ddgddgg          } t          D ]H}t          j        ddgddgg|          }t          j        || g d          }t          |g d           Id S )Nr   r   rI   r   r   rI   r)  r   )r  r  r:   )r   r   r   r   rA  r   r  s       r(   test_minimum04rM        X1v1v&''F ; ;1a&1a&)400v'0yy2 2 2!&///::::	; ;r*   c                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S )Nr   r   r   rI   r   r  r  )r   r   r  r   r   maximumr   r  s       r(   test_maximum01rQ    rC  r*   c                      t          j        ddgt                    } t          j        ddgddggt                    }t          j        ||           }t          |d           d S rE  )r   r   r  r   rP  r   r   s      r(   test_maximum02rS    rG  r*   c                      t          j        ddg          } t          D ]D}t          j        ddgddgg|          }t          j        || d          }t          |d           Ed S )Nr   r   rI   r   r   r  )r   r   r   r   rP  r   r  s       r(   test_maximum03rU    rJ  r*   c                      t          j        ddgddgg          } t          D ]H}t          j        ddgddgg|          }t          j        || g d          }t          |g d           Id S )Nr   r   rI   r   rL  r   )r  r  r:   )r   r   r   r   rP  r   r  s       r(   test_maximum04rW    rN  r*   c                  v    t          j        g d          } t          t          j        |           d           d S )N)r   r   )r   r   r   r   rP  )r$   s    r(   test_maximum05r[    s5    
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
           d S )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_median01rf    s    
,,,,,,,,,  	! 	!A X|||#||#||#||% & &F ^AfIII>>>Ffooo66666r*   c                      t          j        g dg dg dg dg          } t          j        |           }t	          |d           d S )Nr]  r^  r_  r`  r   r   r   r   rd  r   r   r   s     r(   test_median02rj    sZ    
,,,,,,,,,  	! 	!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	           d S )
Nr]  r^  r_  r`  ra  rb  rc  r  r  rh  re  s      r(   test_median03rl    s    
,,,,,,,,,  	! 	!A X|||#||#||#||% & &F ^Af---F$$$$$r*   c                      t          j        ddgt                    } t          j        | t          j        d          dg          }t          |dg           d S )Nr   r   r   r   r   )r   asarrayr  r   rd  rV   r   ri  s     r(   test_median_gh12836_boolrp    sR    

Aq6&&&A^AbgdmmA3???Ffse,,,,,r*   c                      t          j        ddgt           j                  } t          j        | t          j        d          dg          }t          |dg           d S )NA   F   r   rn  r   r   g     P@)r   ro  r$  r   rd  rV   r   ri  s     r(   test_median_no_int_overflowrt    sT    

B827+++A^AbgdmmA3???Fftf-----r*   c                     t          j        d          5  t          D ]} t          j        g |           }t	                      5 }|                    t          d           t          j        |          }d d d            n# 1 swxY w Y   t          t          j
        |                     	 d d d            d S # 1 swxY w Y   d S Nr:  r;  zMean of empty slice)r   r=  r   r   r	   filterRuntimeWarningr   variancer   r>  r   r  supr   s       r(   test_variance01r|    s>   		"	"	" & & 	& 	&DHR&&E"$$ 1

>+@AAA )%001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 BHV$$%%%%	&& & & & & & & & & & & & & & & & & &5   -B:0A?3B:?BB:B%B::B>B>c                      t           D ]<} t          j        dg|           }t          j        |          }t          |d           =d S Nr   r:   r   r   r   r   ry  r   r  s      r(   test_variance02r    sQ     ) )!d##!%((FC(((() )r*   c                      t           D ]=} t          j        ddg|           }t          j        |          }t          |d           >d S Nr   rI   r   r  r  s      r(   test_variance03r    sS     ) )!Q&&!%((FC(((() )r*   c                      t          j        ddgt                    } t          j        |           }t          |d           d S )Nr   r   g      ?)r   r   r  r   ry  r   r  r   s     r(   test_variance04r    s=    HaVT""Ee$$F%%%%%r*   c                      g d} t           D ]?}t          j        g d|          }t          j        || d          }t          |d           @d S N)r   r   rI   )r   rI   r)  r   r   r  r  s       r(   test_variance05r    s`    YYF ) )D))!%33FC(((() )r*   c                     g d} t          j        d          5  t          D ]C}t          j        g d|          }t	          j        || g d          }t          |g d           D	 d d d            d S # 1 swxY w Y   d S N)r   r   rI   rI   r   r:  r;  )r   rI   r)  r   r)  )r   rI   r   )r   r   r:   )r   r=  r   r   r   ry  r   r  s       r(   test_variance06r     s    __F		"	"	" ? ? 	? 	?DH---t44E%eVYYY??F%fooo>>>>	?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?   AA44A8;A8c                     t          j        d          5  t          D ]} t          j        g |           }t	                      5 }|                    t          d           t          j        |          }d d d            n# 1 swxY w Y   t          t          j
        |                     	 d d d            d S # 1 swxY w Y   d S rv  )r   r=  r   r   r	   rw  rx  r   standard_deviationr   r>  rz  s       r(   test_standard_deviation01r  )  s>   		"	"	" & & 	& 	&DHR&&E"$$ ;

>+@AAA 3E::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; BHV$$%%%%	&& & & & & & & & & & & & & & & & & &r}  c                      t           D ]<} t          j        dg|           }t          j        |          }t          |d           =d S r  r   r   r   r   r  r   r  s      r(   test_standard_deviation02r  3  sQ     ) )!d##+E22FC(((() )r*   c                      t           D ]O} t          j        ddg|           }t          j        |          }t          |t          j        d                     Pd S r  )r   r   r   r   r  r   sqrtr  s      r(   test_standard_deviation03r  :  s[     2 2!Q&&+E22FBGCLL11112 2r*   c                      t          j        ddgt                    } t          j        |           }t          |d           d S )Nr   r   r2   )r   r   r  r   r  r   r  s     r(   test_standard_deviation04r  A  s=    HaVT""E'..F$$$$$r*   c                      g d} t           D ]?}t          j        g d|          }t          j        || d          }t          |d           @d S r  r  r  s       r(   test_standard_deviation05r  G  s`    YYF ) )D))+E61==FC(((() )r*   c                     g d} t          j        d          5  t          D ]C}t          j        g d|          }t	          j        || g d          }t          |g d           D	 d d d            d S # 1 swxY w Y   d S r  r   r=  r   r   r   r  r   r  s       r(   test_standard_deviation06r  O  s    __F		"	"	" ? ? 	? 	?DH---t44E/vyyyIIF%fooo>>>>	?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?r  c                      dg} t          j        d          5  t          D ]@}t          j        dg|          }t	          j        || dg          }t          |dg           A	 d d d            d S # 1 swxY w Y   d S )Nr   r:  r;  gl `yr   r  r  s       r(   test_standard_deviation07r  X  s    SF		"	"	" 3 3 	3 	3DHk]D11E/vsCCF%fqc2222	33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3s   A	A00A47A4c                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S )Nr   r   r   rI   r   r  r   r   )r   r   r  r   r   minimum_positionr   r  s       r(   test_minimum_position01r  a  sv    Xq!fd##F % %1a&1a&)400)%???VV$$$$% %r*   c                      t           D ]D} t          j        g dg dg dg|           }t          j        |          }t          |d           Ed S 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  m     % %,,,&,,&,,()-/ / )%00VV$$$$% %r*   c                      t          j        g dg dg dgt                    } t          j        |           }t          |d           d S r  r   r   r  r   r  r   r  s     r(   test_minimum_position03r  r  W    Hlll"ll"ll$%)+ +E %e,,F     r*   c                      t          j        g dg dg dgt                    } t          j        |           }t          |d           d S )Nr  )rI   r   r   r   r  r  r  r  s     r(   test_minimum_position04r  z  r  r*   c                      g d} t           D ]E}t          j        g dg dg dg|          }t          j        ||           }t          |d           Fd S )Nr   r   r   r   r  r  )r   rg   r   rI   )r   r   r  r  s       r(   test_minimum_position05r    x    \\F % %,,,&,,&,,()-/ / )%88VV$$$$% %r*   c                      g d} t           D ]F}t          j        g dg dg dg|          }t          j        || d          }t          |d           Gd S )Nr   r   rI   r   r  r  r  r   r   r   r  r  s       r(   test_minimum_position06r    z    \\F % %,,,&,,&,,()-/ / )%;;VV$$$$% %r*   c                      g d} t           D ]d}t          j        g dg dg dg|          }t          j        || ddg          }t          |d         d           t          |d	         d
           ed S )Nr  r  r  r  r   rI   r   r  r   r  r  r  s       r(   test_minimum_position07r        \\F ( (,,,&,,&,,()-/ / )%+,a&2 2VAY'''VAY''''( (r*   c                      t          j        ddgt                    } t          D ]C}t          j        ddgddgg|          }t	          j        ||           }t          |d           Dd S )Nr   r   r   rI   r   r  )r   r   )r   r   r  r   r   maximum_positionr   r  s       r(   test_maximum_position01r    s}    Xq!fd##F % %1a&1a&)400)%179 9 9VV$$$$	% %r*   c                      t           D ]D} t          j        g dg dg dg|           }t          j        |          }t          |d           Ed S )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           d S )Nr  r  r  r  )r   r   r  r   r  r   r  s     r(   test_maximum_position03r    r  r*   c                      g d} t           D ]E}t          j        g dg dg dg|          }t          j        ||           }t          |d           Fd S )Nr  r  r  r  r   r   r  r  s       r(   test_maximum_position04r    r  r*   c                      g d} t           D ]F}t          j        g dg dg dg|          }t          j        || d          }t          |d           Gd S )Nr  r  r  r  r   r  r  r  s       r(   test_maximum_position05r    r  r*   c                      g d} t           D ]d}t          j        g dg dg dg|          }t          j        || ddg          }t          |d         d           t          |d         d	           ed S )
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 ]d}t          j        g dg dg dg|          }t          j        || ddg          }t          |d         d           t          |d	         d
           ed S )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    s    X***++F ( (,,,&,,&,,()-/ / )%+.*6 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           d S )Nr   r   r   rI   r   r  )r   r   r  r   r   extremarA  rP  r  r  r   r   r   r  output1output2output3output4output5s           r(   test_extrema01r    s    Xq!fd##F 	D 	D1a&1a&)400/%777/%777/%777*528: : :*528: : :Ww'BCCCC	D 	D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           d S )Nr   r   rI   r   r   )
r   r   r   r   r  rA  rP  r  r  r   r  s           r(   test_extrema02r    s   Xq!fF D D1a&1a&)400/%()+ + +/%()+ + +/%()+ + +*528C C C*528C C CWw'BCCCCD D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         |           d S )Nr   r   rI   r   rL  r   r   )
r   r   r   r   r  rA  rP  r  r  r   r  s           r(   test_extrema03r    sU   X1v1v&''F 7 71a&1a&)400/%(1		3 3 3/%(1		3 3 3/%(1		3 3 3*528			K K K*528			K K K!'!*g666!'!*g666!'!*g666!'!*g66667 7r*   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         |           d S )	Nr  r  r  r  r   r   r   rI   )
r   r   r   r   r  rA  rP  r  r  r   r  s           r(   test_extrema04r    s%   \\F 7 7,,,&,,&,,()-/ / /%!Q88/%!Q88/%!Q88*5&,-q63 3*5&,-q63 3!'!*g666!'!*g666!'!*g666!'!*g66667 7r*   c                      ddg} t           D ]A}t          j        ddgddgg|          }t          j        |          }t          ||            Bd S )Nr:   r   r   r   r   r   r   center_of_massr   r   r   r  r   s       r(   test_center_of_mass01r  /  e    SzH 4 41a&1a&)400'..!&(33334 4r*   c                      ddg} t           D ]A}t          j        ddgddgg|          }t          j        |          }t          ||            Bd S rd   r  r  s       r(   test_center_of_mass02r  7  e    1vH 4 41a&1a&)400'..!&(33334 4r*   c                      ddg} t           D ]A}t          j        ddgddgg|          }t          j        |          }t          ||            Bd S Nr   r   r  r  s       r(   test_center_of_mass03r  ?  r  r*   c                      ddg} t           D ]A}t          j        ddgddgg|          }t          j        |          }t          ||            Bd S rd   r  r  s       r(   test_center_of_mass04r  G  r  r*   c                      ddg} t           D ]A}t          j        ddgddgg|          }t          j        |          }t          ||            Bd S )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          ||            d S )Nr2   r   r   rI   r   r   r  r   r  r   r   r  r   s      r(   test_center_of_mass06r  W  sO    SzHHq!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          ||           d S )Nr   r   r2   r:   r   rI   r  r   r   r  r   s       r(   test_center_of_mass07r  ^  sZ    VFSzHHq!fq!f%t,,E#E622Ffh/////r*   c                      ddg} ddg}t          j        ddgddggt                    }t          j        || d          }t          ||           d S )Nr   r   r2   r   rg   rI   r  r  s       r(   test_center_of_mass08r  f  s\    VFSzHHq!fq!f%t,,E#E615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          ||           d S )Nr   r   )r2   r:   )r2   r   r  r  s       r(   test_center_of_mass09r  n  sa    VFJ'HHq!fq!f%t,,E#E6Aq6::Ffh/////r*   c                      t          j        d          } t          j        d          }t          j        |ddd          }t          ||            d S )Nr   r   )r   rV   aranger   	histogramr   r  s      r(   test_histogram01r   v  sH    wr{{HIbMMEuaR00Ffh/////r*   c                      g d} g d}t          j        g d          }t          j        |ddd| d          }t	          ||           d S )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H---..EuaAvq99Ffh/////r*   c                      g d} g d}g d}t          j        g d          }t          j        |ddd| d          }t	          |d         |           t	          |d	         |           d S )
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    s}    %%%FIIH---..EuaAvv>>FfQi333fQi3333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           d S )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   r2  r   ry  r  r   r  rd  rA  rP  )r   lblr2  varstdmedminmaxs           r(   test_stat_funcs_2dr    sl   
///???OOODEEA
(OOO___oooF
G
GC<#aV444Dtc3Z(((

1SA
7
7
7CsS#J'''

$Qs1a&
A
A
ACc27C:#6#6777
.3q!f
5
5
5CsS#J'''
/!C1v
6
6
6CsQF###
/!C1v
6
6
6CsQF#####r*   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )TestWatershedIftc                 v   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          ||           d S )
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  sq   x........................0 24; ; (2221111111111111111111113 57G= = #D'iii>Gii>Gii>I J J J 100+++++++++++++++0000002 	"#x00000r*   c                 `   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          ||           d S )	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  sI   x........................0 24; ; (2221111111111111111111113 57G= = #D'22000---+++++++++---0000002 	"#x00000r*   c           
      N   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          ||           d S )	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.   x.....................0 24; ; (1111111111111111112224 68W> > #D'22000...+++++++++...0002 	"#x00000r*   c           
      d   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          ||           d S )
Nr  r  r&  r'  r(  r  r  r  r)  r  r   s        r(   test_watershed_ift04z%TestWatershedIft.test_watershed_ift04  S   x.....................0 24; ; (1111111111111111112224 7$ $ #D'/8yy/8yy/8yy/:; ; ; 100+++++++++++++++0002 	"#x00000r*   c           
      d   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          ||           d S )
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           	      R   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          ||           d S )
Nr  r  r  r  r  r  r  r  r  r  r   s        r(   test_watershed_ift06z%TestWatershedIft.test_watershed_ift066  s8   x..................0
 24; ; (2221111111111111113
 57G= = #D'/8yy/8yy/8yy/:; ; ; ,+++++++++++0000002 	"#x00000r*   c           	      .   d}t          j        |t           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                  }|                                }t          j        ||g d	g d	g d	g|
           g dg dg dg dg dg dg}t          ||           d S )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   xRX...~~H3333333333333333335
 79h@ @S	 (2221111111111111113
 57G= = huBH---mmoodG)2)2)2)4 &)		* 	* 	* 	*
 ,+++++++++++0000002 	"#x0000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          ||           d S )N   r   r   )r   r   uint16r$  r   r  r   r   s        r(   test_watershed_ift08z%TestWatershedIft.test_watershed_ift08n  s    x#qQ!"$)- -(QFF$%'W. .#D'22FF!#x00000r*   c                 6   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          ||           d S r  )	r   r   iinfor8  r  r$  r   r  r   r   s        r(   test_watershed_ift09z%TestWatershedIft.test_watershed_ift09y  s    x"(29--115Q!"$)- -(QFF$%'W. .#D'22FFX&&&&&r*   N)r=   r>   r?   r"  r$  r*  r,  r/  r1  r5  r9  r<  rA   r*   r(   r  r    s        1 1 1<1 1 181 1 121 1 1:1 1 1:1 1 121 1 1>	1 	1 	1	' 	' 	' 	' 	'r*   r  dtc                    t           j                            d          }d}|                    d|d                              |           }t          j        |          }t          |                                          |k    sJ d S )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_19423rI    s{    
)


$
$CGLLQW8L<<CC"CM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*  r0  r3  r6  r8  r?  rB  rF  rI  rM  rQ  rS  rU  rW  r[  rf  rj  rl  rp  rt  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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uintcrI  rA   r*   r(   <module>rT     s                          * * * * * *            B4 B4 B4 B4 B4 B4 B4 B4J#4 #4 #4 #4 #4 #4 #4 #4L              "  "  $    &  &  "     ! ! !: : :  &  5 5 5         . . .  . . .. . .  @ @ @@ @ @  ($ $ $	) 	) 	)" " "" " ") ) )) ) )* * *" " "" " "" " ") ) )% % %) ) ); ; ;	B 	B 	B) ) )% % %) ) )) ) )) ) )% % %) ) ); ; ;) ) )% % %) ) ); ; ;) ) )
7 
7 
7% % %
% 
% 
%- - -. . .& & &) ) )) ) )& & &) ) )? ? ?& & &) ) )2 2 2% % %) ) )? ? ?3 3 3% % %% % %! ! !! ! !% % %% % %	( 	( 	(% % %% % %! ! !% % %% % %	( 	( 	(
( 
( 
(D D DD D D"7 7 7(7 7 7&4 4 44 4 44 4 44 4 44 4 40 0 00 0 00 0 00 0 00 0 00 0 04 4 4$ $ $.[' [' [' [' [' [' [' ['| 233* * 43* * *r*   