
    bi                     r   d dl Z d dlZ d dlZd dlZd dl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 ej&                  j(                  Ze j*                  dk(  xr ej,                  dk  Z edd	
       G d d             Z edd	
       G d d             Z eej4                        d        Z eej4                        d        Z eej4                        d        Z eej4                        d        Z eej4                        d        Z eej4                        d        Z  eej4                        d        Z! eej4                        d        Z" eej4                        d        Z# eej4                        d        Z$ eej4                        d        Z% edd
       eej4                        d               Z& eej4                        d        Z' eej4                        d        Z( eddgd        eej4                        d!               Z) eddgd        eej4                        d"               Z* edd#
       eej4                        d$               Z+ eej4                        d%        Z, eej4                  ejZ                        d&        Z. eej4                        d'        Z/ eej4                  ejZ                         G d( d)             Z0 eejb                        d*        Z2 eejb                        d+        Z3 eejb                        d,        Z4 eejj                        d-        Z6 eejj                        d.        Z7 eejj                        d/        Z8 eejj                        d0        Z9 eejj                        d1        Z: eejj                        d2        Z; eejj                        d3        Z< eejj                        d4        Z= eejj                        d5        Z> eejj                        d6        Z? eejj                        d7        Z@ eejj                        d8        ZA eejj                        d9        ZB eej                        d:        ZD eej                        d;        ZE eej                        d<        ZF eej                        d=        ZG eej                        d>        ZI eej                        d?        ZJ eej                        d@        ZK eej                        dA        ZL eej                        dB        ZN eej                        dC        ZO eej                        dD        ZP eej                        dE        ZQ eej                        dF        ZR eej                        dG        ZT eej                        dH        ZU eej                        dI        ZV eej                        dJ        ZW eej                        dK        ZX eej                        dL        ZZ eej                        dM        Z[ eej                        dN        Z\ eej                        dO        Z] eej                        dP        Z^ eej                        dQ        Z_ eej                        dR        Za eej                        dS        Zb eej                        dT        Zc eej                        dU        Zd eej                        dV        Ze eej                        dW        Zf eej                        dX        Zg eej                        dY        Zi eej                        dZ        Zj eej                        d[        Zk eej                        d\        Zl eej                        d]        Zm eej                        d^        Zn eej                        d_        Zo eej                        d`        Zq eej                        da        Zr eej                        db        Zs eej                        dc        Zt eej                        dd        Zu eej                        de        Zv eej                        df        Zw eej                  ej                  ej                  ej                  ej                        dg        Zy eej                  ej                  ej                  ej                  ej                        dh        Zz eej                  ej                  ej                  ej                  ej                        di        Z{ eej                  ej                  ej                  ej                  ej                        dj        Z| eej                        dk        Z~ eej                        dl        Z eej                        dm        Z eej                        dn        Z eej                        do        Z eej                        dp        Z eej                        dq        Z eej                        dr        Z eej                        ds        Z eej                        dt        Z eej                        du        Z eddv
       eej                        dw               Z eej                  ej                  ej                  ej                  ej                  ej                        dx        Z eddyz       eej                         G d{ d|                    Z ed}      ej&                  j                  d~ej                  ej                   g       eejb                        d                      Zy)    N)is_torchxp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equalmake_xp_test_case)raises   )typesnt2Tz test internal numpy-only helpersnp_onlyreasonc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)Test_measurements_statszndimage._measurements._stats() is a utility used by other functions.

        Since internal ndimage/_measurements.py code is NumPy-only,
        so is this this test class.
    c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        rdt         j                  ini }t        |t        j                  ddgfi |       t        |t        j                  d	d
g              y )Nr   r
         r   r   r
   r
   r   r
   )   )r   r   labelsindexdtyper         ?       @
nparrayreshapendimage_measurements_statsIS_WINDOWS_AND_NP1int64r   asarray	selfxpxr   r   shpcountssums	dtype_args	            `/home/cdr/jupyterlab/.venv/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 0B"((+rIFBJJ1v$C$CDD"**c3Z"89	:    c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        rdt         j                  ini }t        |t        j                  ddgfi |       t        |t        j                  d	d
g              y )Nr   r   r   	   r7   r   r7   r   r   r   r   r   r   r    r*   s	            r2   test_bzTest_measurements_stats.test_b1   s     A! 	:C##C(AXXf%--c2F"0077& 8 /LFD 0B"((+rIFBJJ1v$C$CDD"**c3Z"89	:r4   c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   r   r   r
   r   Tr   r   centeredr   r   r   r         ?r    
r+   r,   r-   r   r   r.   r/   r0   centersr1   s
             r2   test_a_centeredz'Test_measurements_stats.test_a_centeredA       A! 		=C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD' 0B"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;<		=r4   c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   r6   r   r7   r   Tr:   r   r   r   r   r<   r    r=   s
             r2   test_b_centeredz'Test_measurements_stats.test_b_centeredP   r@   r4   c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   )        rD         "@rE   rD   rE   r   Tr:   r   r   r   r   r<   r    r=   s
             r2   test_nonint_labelsz*Test_measurements_stats.test_nonint_labels_   s    %c
! 		=C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD' 0B"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;<		=r4   N)	__name__
__module____qualname____doc__r3   r8   r?   rB   rF    r4   r2   r   r      s     
:: ===r4   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        |      dk(  sJ t         j                  j                  |||d      }t        |      dk(  sJ t	        |d   ddg       t         j                  j                  |||d      }t        |      dk(  sJ t	        |d   ddg       t         j                  j                  |||dd      }t        |      dk(  sJ t	        |d   ddg       t	        |d   ddg       |d   j
                  j                  dk(  sJ t         j                  j                  |||dd      }t        |      dk(  sJ t	        |d   ddg       t	        |d   ddg       |d   j
                  j                  dk(  rJ  y )N)r   r
   r   r   r   r   r
   r6   r7   )rD   rD         @rO   rD   rO   r   T)r   r   find_maxr   )r   r   find_minr   )r   r   rQ   find_min_positions   i)r   r   rP   find_max_positions)r$   r%   _selectlenr   r   kind)r+   r,   r-   casesr   r   results          r2   
test_basicz#Test_measurements_select.test_basics   s   Aq6"Aq6"!C:.

 # 	/MFE**22& 3 /Fv;!###**22& 3 >Fv;!###F1I1v.**22& 3 >Fv;!###F1I1v.**22&#' 3 )F v;!###F1I1v.F1I1v.!9??''3...**22&#' 3 )F v;!###F1I1v.F1I1v.!9??''3...3	/r4   N)rG   rH   rI   rJ   r[   rK   r4   r2   rM   rM   o   s
    O /r4   rM   c                 r    | j                  d      }t        j                  |      \  }}|dk(  sJ |dk(  sJ y )NrK   r
   )onesr$   labelr,   dataoutns       r2   test_label01rc      s7    772;D]]4 FC!8O86M6r4   c                 r    | j                  d      }t        j                  |      \  }}|dk(  sJ |dk(  sJ y )NrK   r   )zerosr$   r^   r_   s       r2   test_label02rf      s7    88B<D]]4 FC!8O86M6r4   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  dg             |dk(  sJ y )Nr
   r]   r$   r^   r   r)   r_   s       r2   test_label03ri      sB    77A3<D]]4 FCc2::qc?36M6r4   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  dg             |dk(  sJ y )Nr
   r   )re   r$   r^   r   r)   r_   s       r2   test_label04rk      sB    88QC=D]]4 FCc2::qc?36M6r4   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  g d             |dk(  sJ y )N   )r
   r
   r
   r
   r
   r
   rh   r_   s       r2   test_label05rn      sA    77A3<D]]4 FCc2::o#>?6M6r4   c                     | j                  g d      }t        j                  |      \  }}t        || j                  g d             |dk(  sJ y )N)r
   r   r
   r
   r   r
   r
   r   r   r   r   rS   rS   r)   r$   r^   r   r_   s       r2   test_label06rr      sB    ::()D]]4 FCc2::.@#AB6M6r4   c                     | 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             |dk(  sJ y )Nr   r   r   r   r   r   r   rq   r_   s       r2   test_label07ru      st    ::))))))+ ,D ]]4 FCc2::%7%7%7%7%7%7%9$: ; 6M6r4   c                     | 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             |d
k(  s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   r   r   r   r
   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   rS   rS   r   r   r   r   r   r   r   r   r   r   r   rq   r_   s       r2   test_label08r      sw    ::))))))+ ,D ]]4 FCc2::/A/A/A/A/A/A/C $D E 6M6r4   c                 2   | j                  g dg dg dg dg dg dg      }t        j                  dd      }| j                  |      }t        j                  ||      \  }}t	        || j                  g dg dg dg d	g d	g d
g             |dk(  sJ y )Nrw   rx   ry   rz   r{   r   r|   r}   )r   r   r   r   r   r   )r   r   r   rS   rS   r   rS   r)   r$   generate_binary_structurer^   r   r,   r`   structra   rb   s        r2   test_label09r      s    ::))))))+ ,D ..q!4FZZF]]4(FCc2::/A/A/A/A/A/A/C $D E 6M6r4   c           
         | j                  g dg dg dg dg      }t        j                  dd      }| j                  |      }t        j                  ||      \  }}t	        || j                  g dg dg dg dg             |dk(  sJ y )Nrt   )r   r
   r
   r   r
   r   )r   r
   r
   r
   r
   r   r   r
   r   r   s        r2   test_label10r      s    ::))))+ ,D ..q!4FZZF]]4(FCc2::/A/A/A/A/C $D E 6M6r4   c           
         t         D ]  }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}| j                  |      }t        ||       |dk(  rJ  y )Nrw   rx   ry   rz   r{   r   r|   r}   r~   r   r   r   getattrr)   r$   r^   r   r,   typer   r`   ra   rb   expecteds          r2   test_label11r     s     D!zz------/
 7<  = t$Q&&&&&&( ::h'!#x0Avv#r4   z inplace output is numpy-specificc           
         t         D ]  }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}| j                  |      }t        ||       |dk(  rJ  y )Nrw   rx   ry   rz   r{   r   outputr|   r}   r~   r   r   r   )r,   r   r   r`   rb   r   s         r2   test_label11_inplacer   %  s      D!zz------/
 7<  = MM$t,&&&&&&( ::h'!$1Avv#r4   c           	         t         D ]}  }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}| j                  |      }t        ||       |dk(  r}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
   r{   r   r
   r   r   s          r2   test_label12r   <  s     D!zz-----	/ 7<	  =
 t$Q&&&&&	(
 ::h'!#x0Avvr4   c                    t         D ]w  }t        | |      }| j                  g dg dg dg dg|      }t        j                  |      \  }}g dg dg dg dg}| j                  |      }t        ||       |dk(  rwJ  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   r   s          r2   test_label13r   P  s     D!zz<<<<> !&	  '
 t$Q55557 ::h'!#x0Avvr4   cupyzoutput=dtype is numpy-specific)r   
exceptionsr   c                    | j                  dg      }t        D ]q  }t        | |      }| j                  dg|      }t	        j
                  ||      }t        || j                  |j                  |j                               |dk(  rqJ  y )Nrm   r   r   r
   )	r]   r   r   re   r$   r^   r   shaper   r,   r`   tr   r   rb   s         r2   test_label_output_typedr   c  s     77A3<D A1#U+MM$v.!&"$''&,,fll'"K	MAvvr4   c                    | j                  dg      }t        D ]j  }t        | |      }t        j                  ||      \  }}t        || j                  |j                  |j                               |j                  |k(  rjJ  y )Nrm   r   r   )r]   r   r   r$   r^   r   r   r   r   s         r2   test_label_output_dtyper   q  sv     77A3<D !AMM$u5	!&"$''&,,fll'"K	M||q   !r4   z!in-place output is numpy-specificc                     | j                  dg      }t        D ]C  }t        | |      }| j                  dg|      }t	        t
        t        j                  ||       E y )Nrm   
   r   r   )r]   r   r   re   assert_raises
ValueErrorr$   r^   )r,   r`   r   r   r   s        r2   test_label_output_wrong_sizer   ~  sU     77A3<D FA2$e,j'--fEFr4   c           
         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      }| j                  |      }| j                  |      }| j                  |      }d}t        |j                  d         D ]k  }||d d d d f   }t        |j                  d         D ]B  }||d d d d f   }t        t        j                  ||      d   ||d d d d f   d	       |d
z  }D m y )Nr`   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   r   )r   rS   rS   r   Fcheck_dtyper
   )r!   loadtxtospathjoindirname__file__r#   r)   ranger   r   r$   r^   )	r,   r`   strelsresultsrrT   djss	            r2   test_label_structuring_elementsr     s~   ::bggll277??$-/ 0DZZ
!6+=? @Fjj
!6+>@ AG<<
#D^^J'Fooj)G::dDZZFjj!G	A4::a=! AqMv||A' 	Aq!QwAGMM!Q/2GAq!G4DRWXFA	r4   c                 >    d fd	}t        j                  t         j                        t        j                  d      k7  r]d}t         j                  j	                  t        j
                  |            j                  |      } j                  |      } ||       y y )Nc                     | |kD  }t        |j                        }t        j                  ||      }	j	                  |      }t        j
                  ||      \  }}t        j                  |      }y )N)rW   r   r$   r   r)   r^   find_objects)
imgthreshsizemaskrankr   laco_r,   s
            r2   SEztest_ticket_742.<locals>.SE  s`    V|4::224>F#t%'B  $r4   rT   )rS     r   )gffffff?r   )r!   r   intprandomrandprodr#   r)   )r,   r   r   as   `   r2   test_ticket_742r     sj    % 
xxBHHSM)IINN2775>*2259JJqM
1 *r4   c                     t        j                  d      }d|ddddf<   d|ddddf<   d|d<   d|d<   d|d<   | j                  |      }t        j                  || j                  d	            d   dk(  sJ y)
z/Github issue #3025 - improper merging of labels)<   i@  r
   N  i  )$   r   )#   i  )r   i  )rS   rS   )r!   re   r)   r$   r^   r]   )r,   r   s     r2   test_gh_issue_3025r     s     	AAa#gJAagJAgJAgJAgJ


1A==BGGFO,Q/1444r4   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestFindObjectsc                    t         j                  j                  dd      }|j                  |      }t	        j
                  |dkD        \  }}|j                  |j                  |j                  fv sJ t	        j                  |       y )Nr   r<   )
r!   r   r   r)   r$   r^   r   int32r(   r   )r+   r,   
test_arrayr^   no_featuress        r2   test_label_default_dtypez(TestFindObjects.test_label_default_dtype  si    YY^^B+
ZZ
+
$]]:+;<{{{rxx2222U#r4   c                 x    |j                  g |j                        }t        j                  |      }|dgk(  sJ y )Nr   rK   )r]   r(   r$   r   r+   r,   r`   ra   s       r2   test_find_objects01z#TestFindObjects.test_find_objects01  s6    wwrw*""4(rd{{r4   c                 v    |j                  g |j                        }t        j                  |      }|g k(  sJ y )Nr   re   r(   r$   r   r   s       r2   test_find_objects02z#TestFindObjects.test_find_objects02  s4    xx"((x+""4(byyr4   c                     |j                  dg|j                        }t        j                  |      }|t	        ddd       fgk(  sJ y )Nr
   r   r   r]   r(   r$   r   slicer   s       r2   test_find_objects03z#TestFindObjects.test_find_objects03  G    wws"((w+""4(aD)+,,,,r4   c                 x    |j                  dg|j                        }t        j                  |      }|g k(  sJ y )Nr
   r   r   r   s       r2   test_find_objects04z#TestFindObjects.test_find_objects04  s6    xx288x,""4(byyr4   c                     |j                  dg|j                        }t        j                  |      }|t	        ddd       fgk(  sJ y )Nrm   r   r   r   r   s       r2   test_find_objects05z#TestFindObjects.test_find_objects05  r   r4   c                     |j                  g d      }t        j                  |      }|t        ddd       ft        ddd       ft        ddd       fgk(  sJ y )Nrp   r   r
   r   r   rm   r   r)   r$   r   r   r   s       r2   test_find_objects06z#TestFindObjects.test_find_objects06  sd    zz,-""4(aD)+aD)+aD)+- - 	- -r4   c           	          |j                  g dg dg dg dg dg dg      }t        j                  |      }|g k(  sJ y )Nrt   )r)   r$   r   r   s       r2   test_find_objects07z#TestFindObjects.test_find_objects07  sE    zz------/ 0 ""4(byyr4   c           
      J   |j                  g dg dg dg dg dg dg      }t        j                  |      }|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k(  sJ y )Nrw   r|   r}   r~   r   r   r
   rS   r   rm   r   r   r   s       r2   test_find_objects08z#TestFindObjects.test_find_objects08  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr4   c           
         |j                  g dg dg dg dg dg dg      }t        j                  |      }|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k(  sJ y )Nrw   r|   r}   rt   r   r   r
   rS   r   rm   r   r   r   s       r2   test_find_objects09z#TestFindObjects.test_find_objects09
  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr4   N)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   rK   r4   r2   r   r     s6    $---CCr4   r   c           	      2   | j                  g dg dg dg dg dg dg      }t        j                  |d      }g d}t        |j	                               |k(  sJ |D ci c]  }|| j                  ||k(         }}t        j                  |d      }|j	                         |j	                         k(  sJ |j	                         D ]G  }t        ||         t        ||         k(  sJ t        ||   ||         D ]  \  }}t        ||        I y	c c}w )
z Test dictionary keys and entriesrw   r|   r}   rt   r   r   )ignore_value)r
   r   r   N)	r)   r$   value_indiceslistkeysnonzerorW   zipr   )	r,   r`   vi	true_keysktruevikeyvtrue_vs	            r2   test_value_indices01r     s    ::))))))+ ,D 
		t!	4BI	?i'''09:1aDAI&&:F:			t!	4B779%%%wwy '2c7|s6#;////RWfSk2 	'IAvAv&	''	 ;s   !Dc                     | j                  d| j                        }d}t        t        |      5  t	        j
                  |       ddd       y# 1 sw Y   yxY w)zTest input checking)rm   r   r   z(Parameter 'arr' must be an integer array)matchN)re   float32r   r   r$   r   )r,   r`   msgs      r2   test_value_indices02r  /  sL     88F"**8-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                        }t        j                  ||      }t        j                  |      }| j                  |      }t        j                  |      }t        |j                               t        |      k(  sJ |D cg c]  }t        |       c}D ]U  }| j                  ||k(        }t        ||         t        |      k(  sJ t        ||   |      D ]  \  }}	t        ||	        W & yc c}w )z2Test different input array shapes, from 1-D to 4-D))r   )   r   )rS   rS   r   )rS   rS   r   r      r
   r   rS   r   N)r!   r)   r   r#   uniquer$   r   r   r   intr   rW   r   r   )
r,   r   r   trueKeysr   r-   r   trueNdxviktrue_viks
             r2   test_value_indices03r  8  s    ; /JJA3r1#vb!f,RXX>JJq% 99Q<JJqM""1%BGGI$x.000"*+Q#a&+ 	/Ajja(Gr!u:W---!$RUG!4 /XX./	// ,s   :D+c                     t         D ]=  }t        | |      }| j                  g |      }t        j                  |      }|dk(  r=J  y )Nr   r   )r   r   r)   r$   sumr,   r   r   inputr   s        r2   
test_sum01r  J  sI     D!

2U
+U#{{	r4   c                     t         D ]?  }t        | |      }| j                  ddg|      }t        j                  |      }|dk(  r?J  y )Nr   r   r   )r   r   re   r$   r  r  s        r2   
test_sum02r  S  sM     D!!Qu-U#{{	r4   c                     t         D ]S  }t        | |      }| j                  g |      }t        j                  |      }t        || j                  d      d       U y )Nr   r   Fcheck_0d)r   r   r]   r$   r  r   r)   r  s        r2   
test_sum03r  \  sS     ED!%(U#FBJJsOeD	Er4   c                     t         D ]U  }t        | |      }| j                  ddg|      }t        j                  |      }t        || j                  d      d       W y )Nr
   r   r         @Fr  r   r   r)   r$   r  r   r  s        r2   
test_sum04r  e  sW     ED!

Aq6
/U#FBJJsOeD	Er4   c                     t         D ]Y  }t        | |      }| j                  ddgddgg|      }t        j                  |      }t        || j                  d      d       [ y )	Nr
   r   rS   r   r   g      $@Fr  r  r  s        r2   
test_sum05r   n  sa     FD!

QFQF+5
9U#FBJJt$4uE	Fr4   c                     t        j                  g t              }| j                  |      }t        D ]?  }t	        | |      }| j                  g |      }t        j                  ||      }|dk(  r?J  y )Nr   r   r   r!   r)   boolr   r   r$   r  r,   r   r   r   r  r   s         r2   
test_sum06r&  w  si    ZZ$'FZZF D!

2U
+U62{{	r4   c                     t        j                  ddgt              }| j                  |      }t        D ]A  }t        | |      }| j                  ddg|      }t        j                  ||      }|dk(  rAJ  y )Nr   r   r   r"  )	r!   r]   r$  r)   r   r   re   r$   r  r%  s         r2   
test_sum07r(    sq    WWaV4(FZZF D!!Qu-U62{{	r4   c                     t        j                  ddgt              }| j                  |      }t        D ]A  }t	        | |      }| j                  ddg|      }t        j                  ||      }|dk(  rAJ  y )Nr
   r   r   r   r"  r#  r%  s         r2   
test_sum08r*    sq    ZZAd+FZZF D!

Aq6
/U62{{	r4   c                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y )Nr
   r   r   r   rS   r   r"        @Fr  )r!   r)   r$  r   r   r$   r  r   r%  s         r2   
test_sum09r-    s    ZZAd+FZZF ED!

QFQF+5
9U62FBJJsOeD	Er4   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	
       y Nr
   r   r   r   rS   r   r"         @Fr  )r!   r)   r$  r$   r  r   r,   r   r  r   s       r2   
test_sum10r2    ss    ZZAd+FJJAA't4EZZFJJuE[[v.F

3%@r4   c                    | j                  ddg| j                        }t        D ]\  }t        | |      }| j                  ddgddgg|      }t	        j
                  ||d      }t        || j                  d      d	       ^ y )
Nr
   r   r   rS   r   r         @Fr  )r)   int8r   r   r$   r  r   r%  s         r2   
test_sum11r6    s    ZZAbggZ.F ED!

QFQF+5
9U6#$&FBJJsOeDEr4   c           	      6   | j                  ddgddgg| j                        }t        D ]m  }t        | |      }| j                  ddgddgg|      }t	        j
                  ||| j                  g d            }t        || j                  g d             o y 	Nr
   r   r   r   rS   r      r   r   )r,  rD   g      @)r)   r5  r   r   r$   r  r   r%  s         r2   
test_sum12r;    s    ZZ!Q!Q(Z8F GD!

QFQF+5
9U6I9NO!&"**_*EF	Gr4   c           	         | j                  ddgddgg| j                        }t        D ]  }t        | |      }| j                  ddgddgg|      }t	        j
                  ||| j                  g d            }t	        j                  ||| j                  g d            }| j                  ||k(        sJ t        || j                  g d              y r8  )	r)   r5  r   r   r$   r  
sum_labelsallr   )r,   r   r   r   r  
output_sumoutput_labelss          r2   test_sum_labelsrA    s    ZZ!Q!Q(Z8F ND!

QFQF+5
9[[vRZZ	=RS
**&

9(=? vvjM1222!-O1LMNr4   c                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y r/  )r!   r)   r$  r   r   r$   meanr   r%  s         r2   test_mean01rD    s    ZZAd+FZZF ED!

QFQF+5
9eF3FBJJsOeD	Er4   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	
       y Nr
   r   r   r   rS   r   r"  r   Fr  )r!   r)   r$  r$   rC  r   r1  s       r2   test_mean02rG    ss    ZZAd+FJJAA't4EZZFJJuE\\%/F

3%@r4   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr
   r   rS   r   r   r   r  Fr  )r)   r   r   r$   rC  r   r%  s         r2   test_mean03rI    sy    ZZAF ED!

QFQF+5
9eF$%'FBJJsOeDEr4   c           
         | j                  ddgddgg| j                        }t        j                  d      5  t        D ]z  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d      	      }|d
   dk(  sJ |d   dk(  sJ | j                  |d         rzJ  	 d d d        y # 1 sw Y   y xY w)Nr
   r   r   r   ignorer>  rS   r9  r   r   r,        @)	r)   r5  r!   errstater   r   r$   rC  isnanr%  s         r2   test_mean04rP    s    ZZ!Q!Q(Z8F		" 
' 		'DB%EJJAA/uJ=E\\%(*

9(=?F !9###!9###88F1I&&&		'
' 
' 
's   B C;CCc                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y rF  )r!   r)   r$  r   r   r$   minimumr   r%  s         r2   test_minimum01rS        ZZAd+FZZF ED!

QFQF+5
9v6FBJJsOeD	Er4   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	       y 
Nr
   r   r   r   r   r"  r   Fr  )r!   r)   r$  r$   rR  r   r1  s       r2   test_minimum02rW    ss    ZZAd+FJJAA't4EZZFJJuE__U62F

3%@r4   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr
   r   rS   r   r   r   r0  Fr  )r)   r   r   r$   rR  r   r%  s         r2   test_minimum03rY    sy    ZZAF ED!

QFQF+5
9v'(*FBJJsOeDEr4   c           	         | j                  ddgddgg      }t        D ]m  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d            }t        || j                  g d             o y )	Nr
   r   rS   r   r   r   rS   r:  r   )r0  r,  rD   )r)   r   r   r$   rR  r   r%  s         r2   test_minimum04r\  $      ZZ!Q!Q()F GD!

QFQF+5
9v')zz)'<>!&"**_*EFGr4   c                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y )Nr
   r   r   r   rS   r   r"  r  Fr  )r!   r)   r$  r   r   r$   maximumr   r%  s         r2   test_maximum01r`  /  rT  r4   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	       y rV  )r!   r)   r$  r$   r_  r   r1  s       r2   test_maximum02rb  :  ss    ZZAd+FJJAA't4EZZFJJuE__U62F

3%@r4   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr
   r   rS   r   r   r   r,  Fr  )r)   r   r   r$   r_  r   r%  s         r2   test_maximum03rd  D  sy    ZZAF ED!

QFQF+5
9v'(*FBJJsOeDEr4   c           	         | j                  ddgddgg      }t        D ]m  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d            }t        || j                  g d             o y )	Nr
   r   rS   r   r   r[  r   )r  r,  rD   )r)   r   r   r$   r_  r   r%  s         r2   test_maximum04rf  O  r]  r4   c                 ^    | j                  g d      }t        j                  |      dk(  sJ y )N)r   r   )r)   r$   r_  )r,   r-   s     r2   test_maximum05rj  Z  s)     	

< A??1###r4   c                    | j                  g dg dg dg dg      }| j                  g dg dg dg dg      }t        j                  ||| j                  g d      	      }t        || j                  g d
             y )Nr
   r   r   r
   rm   rS   r   r   r   r   r   r   r7   rS   r   r   r
   r
   r   r   r   r   r   r   rS   rS   r   r   )r
   r   rS   r   )rM  r,  r4  )r)   r$   medianr   r,   r   r   r   s       r2   test_median01ru  a  sp    


L   " 	#A ZZ%%%' (F ^^AfBJJy4IJFfbjj&ABr4   c                     | j                  g dg dg dg dg      }t        j                  |      }t        || j                  d      d       y )Nrl  rm  rn  ro  r   Fr  r)   r$   rs  r   r,   r   r   s      r2   test_median02ry  o  sD    


L   " 	#A ^^AF

3%@r4   c                     | j                  g dg dg dg dg      }| j                  g dg dg dg dg      }t        j                  ||      }t        || j                  d	      d
       y )Nrl  rm  rn  ro  rp  rq  rr  r"  r  Fr  rw  rt  s       r2   test_median03r{  y  sf    


L   " 	#A ZZ%%%' (F ^^Af-F

3%@r4   c                    t        j                  ddgt              }| j                  |      }t        j                  || j                  d      | j                  dg            }t        || j                  dg             y )Nr
   r   r   r   r   )r!   r)   r$  r$   rs  r]   r   rx  s      r2   test_median_gh12836_boolr~    s^     	

Aq6&A


1A^^Abggdm2::qc?KFfbjj#&78r4   c                     | j                  ddg| j                        }t        j                  || j	                  d      | j                  dg            }t        || j                  dg             y )NA   F   r   r}  r
   r   g     P@)r)   r5  r$   rs  r]   r   rx  s      r2   test_median_no_int_overflowr    sW     	

B8277
+A^^Abggdm2::qc?KFfbjj$&89r4   c                    t        j                  d      5  t        D ]  }t        | |      }| j	                  g |      }t        j                         5  t        j                  ddt               t        j                  |      }d d d        | j                        rJ  	 d d d        y # 1 sw Y   (xY w# 1 sw Y   y xY wNrK  rL  r   zMean of empty slice)r!   rN  r   r   r)   warningscatch_warningsfilterwarningsRuntimeWarningr$   variancerO  r  s        r2   test_variance01r    s    		" $ 	$DB%EJJrJ/E((* 1''2GX ))%01 88F###	$$ $1 1	$ $)   =B81B,B8B8,B51B88Cc                     t         D ]T  }t        | |      }| j                  dg|      }t        j                  |      }t        || j                  d      d       V y Nr
   r   rD   Fr  r   r   r)   r$   r  r   r  s        r2   test_variance02r    sW     ED!

A3e
,!!%(FBJJsOeD	Er4   c                     t         D ]U  }t        | |      }| j                  ddg|      }t        j                  |      }t        || j                  d      d       W y Nr
   rS   r   r   Fr  r  r  s        r2   test_variance03r    sY     ED!

Aq6
/!!%(FBJJsOeD	Er4   c                     t        j                  ddgt              }| j                  |      }t        j                  |      }t        || j                  d      d       y )Nr
   r   r   g      ?Fr  )r!   r)   r$  r$   r  r   r,   r  r   s      r2   test_variance04r    sI    JJ1vT*EJJuEe$F

4 05Ar4   c                     | j                  g d      }t        D ]W  }t        | |      }| j                  g d|      }t        j                  ||d      }t        || j                  d      d       Y y N)r   r   rS   )r
   rS   r:  r   r   r   Fr  )r)   r   r   r$   r  r   r%  s         r2   test_variance05r    sg    ZZ	"F ED!

9E
2!!%3FBJJsOeDEr4   c           
      d   | j                  g d      }t        j                  d      5  t        D ]h  }t	        | |      }| j                  g d|      }t        j                  ||| j                  g d            }t        || j                  g d             j 	 d d d        y # 1 sw Y   y xY wN)r   r   rS   rS   r   rK  rL  )r
   rS   r:  r   r:  r   )r   rS   r   )r   r   rD   )r)   r!   rN  r   r   r$   r  r   r%  s         r2   test_variance06r    s    ZZ(F		" K 	KDB%EJJ/uJ=E%%eVRZZ	5JKF%fbjj.IJ		KK K K   A2B&&B/c                    t        j                  d      5  t        D ]  }t        | |      }| j	                  g |      }t        j                         5  t        j                  ddt               t        j                  |      }d d d        | j                        rJ  	 d d d        y # 1 sw Y   (xY w# 1 sw Y   y xY wr  )r!   rN  r   r   r)   r  r  r  r  r$   standard_deviationrO  r  s        r2   test_standard_deviation01r    s    		" $ 	$DB%EJJrJ/E((* ;''2GX 33E:; 88F###	$$ $; ;	$ $r  c                     t         D ]T  }t        | |      }| j                  dg|      }t        j                  |      }t        || j                  d      d       V y r  r   r   r)   r$   r  r   r  s        r2   test_standard_deviation02r    sW     ED!

A3e
,++E2FBJJsOeD	Er4   c                     t         D ]U  }t        | |      }| j                  ddg|      }t        j                  |      }t        || j                  d      d       W y r  r  r  s        r2   test_standard_deviation03r    sY     ED!

Aq6
/++E2FBJJsOeD	Er4   c                     t        j                  ddgt              }| j                  |      }t        j                  |      }t        || j                  d      d       y )Nr
   r   r   r<   Fr  )r!   r)   r$  r$   r  r   r  s      r2   test_standard_deviation04r    sH    JJ1vT*EJJuE''.F

3%@r4   c                     | j                  g d      }t        D ]W  }t        | |      }| j                  g d|      }t        j                  ||d      }t        || j                  d      d       Y y r  )r)   r   r   r$   r  r   r%  s         r2   test_standard_deviation05r    sg    ZZ	"F ED!

9E
2++E61=FBJJsOeD	Er4   c           
      d   | j                  g d      }t        j                  d      5  t        D ]h  }t	        | |      }| j                  g d|      }t        j                  ||| j                  g d            }t        || j                  g d             j 	 d d d        y # 1 sw Y   y xY wr  )r)   r!   rN  r   r   r$   r  r   r%  s         r2   test_standard_deviation06r    s    ZZ(F		" K 	KDB%EJJ/uJ=E//vrzz)4F &fbjj.IJ	KK K Kr  c           	         | j                  dg      }t        j                  d      5  t        D ]  }t	        |       r|dk(  rt        j                  d       t        | |      }| j                  dg|      }t        j                  ||| j                  dg            }t        || j                  dg              	 d d d        y # 1 sw Y   y xY w)	Nr
   rK  rL  uint8z8value cannot be converted to type uint8 without overflowgl `yr   r   )r)   r!   rN  r   r   pytestxfailr   r$   r  r   r%  s         r2   test_standard_deviation07r    s    ZZ_F		" ? 	?D| 0 1B%EJJ}EJ:E//vrzz1#OF%fbjj!o>	?? ? ?s   BCCc                     t        j                  ddgt              }| j                  |      }t        D ]E  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }|dk(  rEJ  y )	Nr
   r   r   r   rS   r   r"  r   r   )r!   r)   r$  r   r   r$   minimum_positionr%  s         r2   test_minimum_position01r    s~    ZZAd+FZZF  D!

QFQF+5
9))%?	 r4   c                     t         D ]F  }t        | |      }| j                  g dg dg dg|      }t        j                  |      }|dk(  rFJ  y Nrm   r   r   rm   rS   r   r   r   r
   rm   r
   r
   r   r
   r   )r   r   r)   r$   r  r  s        r2   test_minimum_position02r  *  `      D!

L((*16  8 ))%0 r4   c                     t        j                  g dg dg dgt              }| j                  |      }t        j                  |      }|dk(  sJ y r  r!   r)   r$  r$   r  r  s      r2   test_minimum_position03r  5  N    JJ$$&-13E JJuE%%e,FVr4   c                     t        j                  g dg dg dgt              }| j                  |      }t        j                  |      }|dk(  sJ y )Nr  )rS   r   r
   r   r  r   r  r  r  s      r2   test_minimum_position04r  ?  r  r4   c                     | j                  g d      }t        D ]G  }t        | |      }| j                  g dg dg dg|      }t        j                  ||      }|dk(  rGJ  y )Nr
   r   r   r   r  r  )r
   rm   r   rS   r   )r   r   r)   r   r   r$   r  r%  s         r2   test_minimum_position05r  I  p    ZZ%F  D!

L((*16  8 ))%8 r4   c                     | j                  g d      }t        D ]H  }t        | |      }| j                  g dg dg dg|      }t        j                  ||d      }|dk(  rHJ  y )Nr
   r   rS   r   r  r  r  r   r   r   r
   r  r%  s         r2   test_minimum_position06r  U  r    ZZ%F  D!

L((*16  8 ))%; r4   c           	         | j                  g d      }t        D ]f  }t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  ddg            }|d   d	k(  sJ |d
   dk(  rfJ  y )Nr  r  r  r  r   r   rS   r   r  r
   r  r  r%  s         r2   test_minimum_position07r  a      ZZ%F #D!

L((*16  8 ))%*,**aV*<>ayF"""ayF"""#r4   c                     t        j                  ddgt              }| j                  |      }t        D ]E  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }|dk(  rEJ  y )	Nr
   r   r   r   rS   r   r"  r
   r   )r!   r)   r$  r   r   r$   maximum_positionr%  s         r2   test_maximum_position01r  o  s    ZZAd+FZZF  D!

QFQF+5
9))%179 r4   c                     t         D ]F  }t        | |      }| j                  g dg dg dg|      }t        j                  |      }|dk(  rFJ  y )Nr  rS   r   r:  r   r  r   r  )r   r   r)   r$   r  r  s        r2   test_maximum_position02r  {  r  r4   c                     t        j                  g dg dg dgt              }| j                  |      }t        j                  |      }|dk(  sJ y )Nr  r  r  r   r  )r!   r)   r$  r$   r  r  s      r2   test_maximum_position03r    r  r4   c                     | j                  g d      }t        D ]G  }t        | |      }| j                  g dg dg dg|      }t        j                  ||      }|dk(  rGJ  y )Nr  r  r  r  r   r
   r
   r)   r   r   r$   r  r%  s         r2   test_maximum_position04r    r  r4   c                     | j                  g d      }t        D ]H  }t        | |      }| j                  g dg dg dg|      }t        j                  ||d      }|dk(  rHJ  y )Nr  r  r  r  r   r
   r  r  r%  s         r2   test_maximum_position05r    r  r4   c           	         | j                  g d      }t        D ]f  }t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  ddg            }|d   d	k(  sJ |d   d
k(  rfJ  y )Nr  r  r  r  r   r
   r   r   r  r  r  r%  s         r2   test_maximum_position06r    r  r4   c           	         | j                  g d      }t        D ]f  }t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  ddg            }|d   d	k(  sJ |d
   dk(  rfJ  y )N)r   rM  rD         @r  r  r  r   r   r  r   r  r
   )r   rS   r  r%  s         r2   test_maximum_position07r    s     ZZ,-F #D!

L((*16  8 ))%*,**c3Z*@BayF"""ayF"""#r4   c                    t        j                  ddgt              }| j                  |      }t        D ]  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        j                  ||      }t        j                  ||      }	|||||	fk(  rJ  y )Nr
   r   r   r   rS   r   r"  )r!   r)   r$  r   r   r$   extremarR  r_  r  r  
r,   r   r   r   r  output1output2output3output4output5s
             r2   test_extrema01r    s     ZZAd+FZZF 
?D!

QFQF+5
9//%7//%7//%7**528:**528:7GWg>>>>
?r4   c                    | 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      }	|||||	fk(  rJ  y )Nr
   r   rS   r   r   r   )	r)   r   r   r$   r  rR  r_  r  r  r  s
             r2   test_extrema02r    s     ZZAF ?D!

QFQF+5
9//%()+//%()+//%()+**528C**528C7GWg>>>>?r4   c           	         | j                  ddgddgg      }t        D ]K  }t        |       r|dv rt        j                  d       t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d      	      }t        j                  ||| j                  g d      	      }t        j                  ||| j                  g d      	      }t        j                  ||| j                  g d      	      }t        j                  ||| j                  g d      	      }	t        |d
   |       t        |d   |       |d   |k(  sJ |d   |	k(  rLJ  y )Nr
   r   rS   uint16uint32uint64/https://github.com/pytorch/pytorch/issues/58734r   r   r[  r   r   r)   r   r   r  r  r   r$   r  rR  r_  r  r  r   r  s
             r2   test_extrema03r    s]    ZZ!Q!Q()F %B<D$BB\\KLD!

QFQF+5
9//%)/(*

9(=? //%)/(*

9(=? //%(*

9(=?**52813I1FH **52813I1FH 	"'!*g6!'!*g6qzW$$$qzW$$$/%r4   c           	         | j                  g d      }t        D ]I  }t        |       r|dv rt        j                  d       t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  dd	g            }t        j                  ||| j                  dd	g            }t        j                  ||| j                  dd	g            }t        j                  ||| j                  dd	g            }t        j                  ||| j                  dd	g            }	t        |d
   |       t        |d   |       |d	   |k(  sJ |d   |	k(  rJJ  y )Nr  r  r  r  r  r  r   r
   r   r   rS   r  r  s
             r2   test_extrema04r  	  sS    ZZ%F %B<D$BB\\KLD!

L((*16  8 //%QF1CD//%QF1CD//%QF1CD**5&+-::q!f+=?**5&+-::q!f+=?!'!*g6!'!*g6qzW$$$qzW$$$%%r4   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )N)rD   rD   r
   r   r   r   r   r)   r$   center_of_massr,   r   r   r   r  r   s         r2   test_center_of_mass01r  "  _    H "D!

QFQF+5
9''.!!!	"r4   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr  r   r
   r   r  r  s         r2   test_center_of_mass02r  ,  _    H "D!

QFQF+5
9''.!!!	"r4   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr  r   r
   r   r  r  s         r2   test_center_of_mass03r  6  r   r4   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr  r   r
   r   r  r  s         r2   test_center_of_mass04r  @  r   r4   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr<   r<   r
   r   r  r  s         r2   test_center_of_mass05r  J  r  r4   c                     d}t        j                  ddgddggt              }| j                  |      }t        j                  |      }||k(  sJ y )Nr  r
   r   rS   r   )r!   r)   r$  r$   r  r,   r   r  r   s       r2   test_center_of_mass06r
  T  sP    HJJAA't4EJJuE##E*FXr4   c                     | j                  ddg      }d}t        j                   ddgddggt              }| j                  |      }t        j                  ||      }||k(  sJ y )Nr
   r   r<   rD   r   rS   r   r)   r!   r$  r$   r  r,   r   r   r  r   s        r2   test_center_of_mass07r  ]  sd    ZZAFHJJAA't4EJJuE##E62FXr4   c                     | j                  ddg      }d}t        j                   ddgddggt              }| j                  |      }t        j                  ||d      }||k(  sJ y )Nr
   r   r<   r   rm   rS   r   r  r  s        r2   test_center_of_mass08r  g  sf    ZZAFHJJAA't4EJJuE##E615FXr4   c                 l   | j                  d      }| j                  ddg| j                        }t        j                   ddgddggt              }| j                  |      }t	        j
                  ||| j                  ddg            }t        | j                  |      | j                  |             y )Nr  r  r  r   r
   r   )r)   float64r!   r$  r$   r  r   r  s        r2   test_center_of_mass09r  q  s    ZZFzz:z2"**zEHJJAA't4EJJuE##E62::q!f3EFFBJJv&

8(<=r4   c                     | j                  d      }| j                  d      }t        j                  |ddd      }t	        ||       y )Nr   r   )r]   aranger$   	histogramr   r	  s       r2   test_histogram01r  {  s<    wwr{HIIbMEuaR0Ffh/r4   c                     | j                  g d      }| j                  g d      }| 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
   rS   r   rS   rS   rS   rS   r   r   rm   r
   r)   r$   r  r   r  s        r2   test_histogram02r    sR    ZZ01Fzz/*HJJ/0EuaAvq9Ffh/r4   zobject arraysc                    | j                  g d      }| j                  g d      }| j                  g d      }| 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   rS   r   )r
   r
   rS   r   rS   rm   rS   rS   r   r   rm   r  r
   r  )r,   r   	expected1	expected2r  r   s         r2   test_histogram03r     st     ZZ01F

?+I

?+IJJ/0EuaAvv>FfQi3fQi3r4   c           	      :   | j                  g dg dg dg      }| j                  g dg dg dg      }t        j                  ||| j                  ddg            }t        || j                  d	d
g| j                               t        j
                  ||| j                  ddg            }t        || j                  ddg| j                               t        j                  ||| j                  ddg            }t        || j                  | j                  ddg| j                                     t        j                  ||| j                  ddg            }t        || j                  d	d
g| j                               t        j                  ||| j                  ddg            }t        || j                  ddg      d       t        j                  ||| j                  ddg            }t        || j                  ddg      d       y )N)rm   r   r   r   r   )r:  r7   r   r   r   )r   r   r   rS   rm   )r
   r
   r   r   r   )r   r   r   r   r   r
   r   r   rO   r,  r   rM  r   rm   rS   Fr   r7   )r)   r$   rC  r   r  r  r  r   sqrtrs  rR  r_  )	r,   r   lblrC  varstdmedminmaxs	            r2   test_stat_funcs_2dr)    s    	

O_oFGA
**oH
IC<<#RZZA-?@DD"**c3Zrzz*BC


1S

Aq60B
CCCS#JbjjAB

$
$Qs"**aV:L
MCc2772::sCj

:+S#TU
..3bjj!Q.@
ACCS#JbjjAB
//!Crzz1a&/A
BCCQF+?
//!Crzz1a&/A
BCCQF+?r4   no watershed_ift on CuPyr   c                       e Zd Zd Zd Zd Zd Zd Zd Z e	dd	      d
        Z
 e	dd      d        Z e	dd      d        Zy)TestWatershedIftc                    |j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g d	g}t        ||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   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  r5  r$   watershed_iftr   r+   r,   r`   markersr6  ra   r   s          r2   test_watershed_ift01z%TestWatershedIft.test_watershed_ift01  s    zz000000002 :<  C **433333335 =?GG  E **i'') *	 ##D'YG0+++++002 	"#rzz(';<r4   c                 n   |j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg dg|j                        }t        j                  ||      }g dg dg d	g d	g d	g dg dg dg}t        ||j                  |             y )
Nr/  r0  r1  r   r2  r3  r7  )r   r   r
   r
   r
   r   r   r8  r9  r+   r,   r`   r<  ra   r   s         r2   test_watershed_ift02z%TestWatershedIft.test_watershed_ift02  s    zz000000002 :<  C **433333335 =?GG  E ##D'20-+++-002 	"#rzz(';<r4   c           
      \   |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }t        j                  ||      }g dg dg d	g d	g d	g dg dg}t        ||j                  |             y )
Nr/  r0  r   r
   r   r
   r   r
   r   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   r   r7  )r   r   r   r   rS   r   r   r   r   r   rS   rS   rS   r   r9  r?  s         r2   test_watershed_ift03z%TestWatershedIft.test_watershed_ift03  s    zz00000002 :<  C **33333346 >@WW  F ##D'20.+++.02 	"#rzz(';<r4   c           
         |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g}t        ||j                  |             y )Nr/  r0  rB  r   rC  rD  r4  r5  r7  rE  r9  r;  s          r2   test_watershed_ift04z%TestWatershedIft.test_watershed_ift04
  s    zz00000002 :<  C **33333346 $&77  , **i'') *	 ##D'YG0+++++02 	"#rzz(';<r4   c           
         |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g}t        ||j                  |             y )Nr/  r0  rB  r   )r   r   rS   r   r   r   r   rD  r4  r5  r7  )r   rS   rS   r   r   r   r   r9  r;  s          r2   test_watershed_ift05z%TestWatershedIft.test_watershed_ift05(  s    zz00000002 :<  C **33333346 $&77  , JJ	 ) ) + ,	 ##D'YG0+++++02 	"#rzz(';<r4   c           	         |j                  g dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d	g d	g d	g d
g d
g}t        ||j                  |             y )Nr1  r0  r/  r   r2  r3  r4  r5  r8  r7  r9  r;  s          r2   test_watershed_ift06z%TestWatershedIft.test_watershed_ift06E  s    zz0000002
 :<  C **4333335
 =?GG  E **i'') *	 ##D'YG++++002 	"#rzz(';<r4   Tzinplace ops are numpy-specificr   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<   |j	                  |      }|j	                  g dg dg dg dg dg dg|j
                        }|j                  ||j                        }|j                  }|j	                  g d	g d	g d	g      }t        j                  ||||
       g dg dg dg dg dg dg}t        ||j	                  |             y )N)r   r   r   r1  r0  r/  .r2  r3  r4  )r6  r   r8  r7  )r!   re   r  	transposer)   r5  int16Tr$   r:  r   )r+   r,   r   r`   r<  ra   r6  r   s           r2   test_watershed_ift07z%TestWatershedIft.test_watershed_ift07^  s"   xxRXX.~~JJ 5 5 5 5 5 5 7
 ?AhhHS	 zz$**4333335
 =?GG  E hhuBHHh-ee**i'') *	 	dGy%(	*++++002 	"#rzz(';<r4   r   r*  r+  c                    |j                  ddgddgg|j                        }|j                  ddgddgg|j                        }t        j                  ||      }ddgddgg}t        ||j                  |             y )N   r   r   r
   )r)   r  r5  r$   r:  r   r?  s         r2   test_watershed_ift08z%TestWatershedIft.test_watershed_ift08  s     zzC8q6#*,))  5**q!f !f&-/WW  6##D'2FF!#rzz(';<r4   c                 L   |j                  |j                  |j                        j                  dgddgg|j                        }|j                  ddgddgg|j                        }t        j                  ||      }ddgddgg}t        ||j                  |      d       y )Nr   r   r
   Fr   )r)   iinfor  r(  r5  r$   r:  r   r?  s         r2   test_watershed_ift09z%TestWatershedIft.test_watershed_ift09  s     zzBHHRYY/33Q7q6#*,))  5**q!f !f&-/WW  6##D'2FFRZZ1uEr4   N)rG   rH   rI   r=  r@  rF  rH  rJ  rL  skip_xp_backendsrQ  rT  rW  rK   r4   r2   r-  r-    sz    =>=8=2=<=:=2 d+KL= M=@ f%?@	= A	= f%?@	F A	Fr4   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   rW   r   )rY  r,   rngmax_valimageval_idxs         r2   test_gh_19423re    sh     ))


$CGLLQW8L<CC"CME##E*Gw||~')))r4   )r   os.pathr  numpyr!   scipy._lib._array_apir   r   r   r   r   r   r  r	   r   scipy.ndimager$    r   markrX  name__version__r'   r   rM   r^   rc   rf   ri   rk   rn   rr   ru   r   r   r   r   r   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  r6  r;  rA  rC  rD  rG  rI  rP  rR  rS  rW  rY  r\  r_  r`  rb  rd  rf  rj  rs  ru  ry  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r   r)  r:  r-  parametrizeintcuintcre  rK   r4   r2   <module>rq     s   	      *  ;;// WW_=#)=  $'IJO= O= KO=d $'IJ#/ #/ K#/L 7==! " 7==! " 7==! " 7==! " 7==! " 7==! " 7==! "$ 7==! "" 7==! "& 7==! " 7==! "* $'IJ7==! " K* 7==! "& 7==! "$ $F89;7==! "; $F89;7==!! ";! $'JK7==!F " LF 7==! ". 7=='"6"67 8$ 7==!	5 "	5 7=='"6"67TC TC 8TCn 7(()' *', 7(()$ *$ 7(()/ */" 7;;   7;;   7;;E  E 7;;E  E 7;;F  F 7;;   7;;   7;;   7;;E  E 7;;A  A 7;;E  E 7;;G  G 7;;
N  
N 7<< E !E 7<< A !A 7<< E !E 7<< ' !' 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#$ $$ 7>>"
C #
C 7>>"A #A 7>>"
A #
A 7>>"9 #9 7>>": #: 7##$$ %$ 7##$E %E 7##$E %E 7##$B %B 7##$E %E 7##$K %K 7--.$ /$ 7--.E /E 7--.E /E 7--.A /A 7--.E /E 7--.	K /	K 7--.
? /
? 7++,  -  7++,  -  7++, - 7++, - 7++,  -  7++,  -  7++,
# -
# 7++,  -  7++,  -  7++, - 7++,  -  7++,  -  7++,
# -
# 7++,# -# 7??GOOW__++W-E-EG?G?  7??GOOW__++W-E-EG?G?$ 7??GOOW__++W-E-EG%G%8 7??GOOW__++W-E-EG%G%. 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))* + 7))* + 7))* + 7))*> +> 7$$%0 &0 7$$%0 &0 $77$$%	4 & 8	4 7<<!1!173M3M>>7??GOOE@E@. &!;<7(()aF aF * =aFH $237(()* * 4  *r4   