
    -ii                        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    o
ej        dk     Z edd	
           G d d                      Z edd	
           G d d                      Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z eej                  d             Z  eej                  d             Z! eej                  d             Z" eej                  d             Z# eej                  d             Z$ eej                  d             Z% edd
           eej                  d                         Z& eej                  d             Z' eej                  d             Z( eddgd            eej                  d!                         Z) eddgd            eej                  d"                         Z* edd#
           eej                  d$                         Z+ eej                  d%             Z, eej        ej-                  d&             Z. eej                  d'             Z/ eej        ej-                   G d( d)                      Z0 eej1                  d*             Z2 eej1                  d+             Z3 eej1                  d,             Z4 eej5                  d-             Z6 eej5                  d.             Z7 eej5                  d/             Z8 eej5                  d0             Z9 eej5                  d1             Z: eej5                  d2             Z; eej5                  d3             Z< eej5                  d4             Z= eej5                  d5             Z> eej5                  d6             Z? eej5                  d7             Z@ eej5                  d8             ZA eej5                  d9             ZB eejC                  d:             ZD eejC                  d;             ZE eejC                  d<             ZF eejC                  d=             ZG eejH                  d>             ZI eejH                  d?             ZJ eejH                  d@             ZK eejH                  dA             ZL eejM                  dB             ZN eejM                  dC             ZO eejM                  dD             ZP eejM                  dE             ZQ eejM                  dF             ZR eejS                  dG             ZT eejS                  dH             ZU eejS                  dI             ZV eejS                  dJ             ZW eejS                  dK             ZX eejY                  dL             ZZ eejY                  dM             Z[ eejY                  dN             Z\ eejY                  dO             Z] eejY                  dP             Z^ eejY                  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jh                  dY             Zi eejh                  dZ             Zj eejh                  d[             Zk eejh                  d\             Zl eejh                  d]             Zm eejh                  d^             Zn eejh                  d_             Zo eejp                  d`             Zq eejp                  da             Zr eejp                  db             Zs eejp                  dc             Zt eejp                  dd             Zu eejp                  de             Zv eejp                  df             Zw eejx        ejH        ejM        ejh        ejp                  dg             Zy eejx        ejH        ejM        ejh        ejp                  dh             Zz eejx        ejH        ejM        ejh        ejp                  di             Z{ eejx        ejH        ejM        ejh        ejp                  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jC        ejY        ej`        ejS        ejH        ejM                  dx             Z eddyz           eej                   G d{ d|                                  Z ed}          ej                            d~ej        ej        g           eej1                  d                                     ZdS )    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                   0    e Zd ZdZd Zd Zd Zd Zd ZdS )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        |                              |          }t          j        |                              |          }t          j                            |||          \  }}t          rdt           j        ini }t          |t          j	        ddgfi |           t          |t          j	        d	d
g                     d S )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	            k/var/www/html/bet.cuttalo.com/ml/venv/lib/python3.11/site-packages/scipy/ndimage/tests/test_measurements.pytest_azTest_measurements_stats.test_a#   s    LLA! 	: 	:C##C((AXf%%--c22F"077& 8 / /LFD 0BI"(++rIFBJ1v$C$C$C$CDDDD"*c3Z"8"89999	: 	:    c           	         g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          j                            |||          \  }}t          rdt           j        ini }t          |t          j	        ddgfi |           t          |t          j	        d	d
g                     d S )Nr   r   r   	   r7   r   r7   r   r   r   r   r   r   r    r*   s	            r2   test_bzTest_measurements_stats.test_b1   s     LLA! 	: 	:C##C((AXf%%--c22F"077& 8 / /LFD 0BI"(++rIFBJ1v$C$C$C$CDDDD"*c3Z"8"89999	: 	:r4   c           	         g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          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                     d S )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      LLA! 		= 		=C##C((AXf%%--c22F$+$9$@$@& %A %> %>!FD' 0BI"(++rIFBJ1v$C$C$C$CDDDD"*c3Z"8"8999GRZc
%;%;<<<<		= 		=r4   c           	         g d}g d}ddg}dD ]}t          j        |                              |          }t          j        |                              |          }t          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                     d S )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        |                              |          }t          j        |                              |          }t          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                     d S )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   LL%%%c
! 		= 		=C##C((AXf%%--c22F$+$9$@$@& %A %> %>!FD' 0BI"(++rIFBJ1v$C$C$C$CDDDD"*c3Z"8"8999GRZc
%;%;<<<<		= 		=r4   N)	__name__
__module____qualname____doc__r3   r8   r?   rB   rF    r4   r2   r   r      si         
: : :: : : = = == = == = = = =r4   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          |          dk    sJ t           j                            |||d          }t          |          dk    sJ t	          |d         ddg           t           j                            |||d          }t          |          dk    sJ t	          |d         ddg           t           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                            |||dd          }t          |          dk    sJ t	          |d         ddg           t	          |d         ddg           |d         j        j        dk    sJ d S )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   sc   LL\\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O /  /  /  /  /r4   rM   c                 ~    |                      d          }t          j        |          \  }}|dk    sJ |dk    sJ d S )NrK   r
   )onesr$   labelr,   dataoutns       r2   test_label01rc      sB    772;;D]4  FC!8888666666r4   c                 ~    |                      d          }t          j        |          \  }}|dk    sJ |dk    sJ d S )NrK   r   )zerosr$   r^   r_   s       r2   test_label02rf      sB    88B<<D]4  FC!8888666666r4   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S )Nr
   r]   r$   r^   r   r)   r_   s       r2   test_label03ri      sS    77A3<<D]4  FCc2::qc??333666666r4   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S )Nr
   r   )re   r$   r^   r   r)   r_   s       r2   test_label04rk      sS    88QC==D]4  FCc2::qc??333666666r4   c                     |                      dg          }t          j        |          \  }}t          ||                     g d                     |dk    sJ d S )N   )r
   r
   r
   r
   r
   r
   rh   r_   s       r2   test_label05rn      sW    77A3<<D]4  FCc2::ooo#>#>???666666r4   c                     |                      g d          }t          j        |          \  }}t          ||                      g d                     |dk    sJ d S )N)r
   r   r
   r
   r   r
   r
   r   r   r   r   rS   rS   r)   r$   r^   r   r_   s       r2   test_label06rr      sa    ::((())D]4  FCc2::.@.@.@#A#ABBB666666r4   c                     |                      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                     |dk    sJ d S )Nr   r   r   r   r   r   r   rq   r_   s       r2   test_label07ru      s    ::))))))))))))))))))+ , ,D ]4  FCc2::%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%9$: $: ; ; ; 666666r4   c                     |                      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                     |d
k    sJ 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   rS   rS   r   r   r   r   r   r   r   r   r   r   r   rq   r_   s       r2   test_label08r      s    ::))))))))))))))))))+ , ,D ]4  FCc2::/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/C $D $D E E E 666666r4   c                 R   |                      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                     |dk    sJ d S )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!44FZZF]4((FCc2::/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/A/C $D $D E E E 666666r4   c           
      :   |                      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k    sJ d S )Nrt   )r   r
   r
   r   r
   r   )r   r
   r
   r
   r
   r   r   r
   r   r   s        r2   test_label10r      s    ::))))))))))))+ , ,D .q!44FZZF]4((FCc2::/A/A/A/A/A/A/A/A/A/A/A/A/C $D $D E E E 666666r4   c           
      <   t           D ]}t          | |          }|                     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          ||           |dk    sJ d S )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00Avvvvv# r4   z inplace output is numpy-specificc           
      :   t           D ]}t          | |          }|                     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          ||           |dk    sJ d S )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<  = = M$t,,,&&&&&&&&&&&&&&&&&&( ::h''!$111Avvvvv# r4   c           	      0   t           D ]}t          | |          }|                     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          ||           |dk    sJ 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   s          r2   test_label12r   <  s      D!!zz---------------	/ 7<	  = =
 t$$Q&&&&&&&&&&&&&&&	(
 ::h''!#x000Avvvvv r4   c                 $   t           D ]}t          | |          }|                     g dg dg dg dg|          }t          j        |          \  }}g dg dg dg dg}|                     |          }t          ||           |dk    sJ 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
   r
   r
   r   r
   r   r   s          r2   test_label13r   P  s      D!!zz<<<<<<<<<<<<> !&	  ' '
 t$$Q5555555555557 ::h''!#x000Avvvvv r4   cupyzoutput=dtype is numpy-specific)r   
exceptionsr   c                 0   |                      dg          }t          D ]w}t          | |          }|                     dg|          }t	          j        ||          }t          ||                      |j        |j                             |dk    sJ xd S )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++M$v...!&"$''&,fl'"K"K	M 	M 	MAvvvvv r4   c                    |                      dg          }t          D ]g}t          | |          }t          j        ||          \  }}t          ||                      |j        |j                             |j        |k    sJ hd S )Nrm   r   r   )r]   r   r   r$   r^   r   r   r   r   s         r2   test_label_output_dtyper   q  s     77A3<<D ! !AM$u555	!&"$''&,fl'"K"K	M 	M 	M|q     ! !r4   z!in-place output is numpy-specificc                     |                      dg          }t          D ]L}t          | |          }|                     dg|          }t	          t
          t          j        ||           Md S )Nrm   
   r   r   )r]   r   r   re   assert_raises
ValueErrorr$   r^   )r,   r`   r   r   r   s        r2   test_label_output_wrong_sizer   ~  sr     77A3<<D F FA2$e,,j'-fEEEEEF Fr4   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 ]z}||d d d d f         }t          |j
        d                   D ]N}||d d d d f         }t          t          j        ||          d         ||d d d d f         d	           |d
z  }O{d S )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   :bgll27??$ $-/ / 0 0DZ
!!6+=? ? @ @Fj
!!6+>@ @ A AG<<
##D^^J''Fooj))G::dDZZFjj!!G	A4:a=!!  AAAqqqMv|A'' 	 	Aq!!!QQQwAGM!Q//2GAqqq!!!G4DRWXXXXFAA	 r4   c                 L    d fd	}t          j        t           j                  t          j        d          k    rhd}t           j                            t          j        |                                        |          }                     |          } ||           d S d S )Nffffff?r   c                     | |k    }t          |j                  }t          j        ||          }	                    |          }t          j        ||          \  }}t          j        |          }d S )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  sj    V|4:24>>F##t%' 'B $$r4   rT   )rS     r   )r   r   )r!   r   intprandomrandprodr#   r)   )r,   r   r   as   `   r2   test_ticket_742r     s    % % % % % % 
xBHSMM))INN275>>**22599JJqMM
1 *)r4   c                 
   t          j        d          }d|ddddf<   d|ddddf<   d|d<   d|d<   d|d<   |                     |          }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  )rS   rS   )r!   re   r)   r$   r^   r]   )r,   r   s     r2   test_gh_issue_3025r     s     	AAaaa#gJAaaagJAgJAgJAgJ


1A=BGGFOO,,Q/1444444r4   c                   J    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 ZdS )TestFindObjectsc                     t           j                            dd          }|                    |          }t	          j        |dk              \  }}|j        |j        |j        fv sJ t	          j	        |           d S )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  st    Y^^B++
ZZ
++
$]:+;<<{{rx22222U#####r4   c                 x    |                     g |j                  }t          j        |          }|dgk    sJ d S )Nr   rK   )r]   r(   r$   r   r+   r,   r`   ra   s       r2   test_find_objects01z#TestFindObjects.test_find_objects01  s<    wwrw**"4((rd{{{{{{r4   c                 v    |                     g |j                  }t          j        |          }|g k    sJ d S )Nr   re   r(   r$   r   r   s       r2   test_find_objects02z#TestFindObjects.test_find_objects02  s:    xx"(x++"4((byyyyyyr4   c                     |                     dg|j                  }t          j        |          }|t	          ddd           fgk    sJ d S )Nr
   r   r   r]   r(   r$   r   slicer   s       r2   test_find_objects03z#TestFindObjects.test_find_objects03  T    wws"(w++"4((aD))+,,,,,,,r4   c                 x    |                     dg|j                  }t          j        |          }|g k    sJ d S )Nr
   r   r   r   s       r2   test_find_objects04z#TestFindObjects.test_find_objects04  s<    xx28x,,"4((byyyyyyr4   c                     |                     dg|j                  }t          j        |          }|t	          ddd           fgk    sJ d S )Nrm   r   r   r   r   s       r2   test_find_objects05z#TestFindObjects.test_find_objects05  r   r4   c                     |                     g d          }t          j        |          }|t          ddd           ft          ddd           ft          ddd           fgk    sJ d S )Nrp   r   r
   r   r   rm   r   r)   r$   r   r   r   s       r2   test_find_objects06z#TestFindObjects.test_find_objects06  s    zz,,,--"4((aD))+aD))+aD))+- - - - - - -r4   c           	          |                     g dg dg dg dg dg dg          }t          j        |          }|g k    sJ d S )Nrt   )r)   r$   r   r   s       r2   test_find_objects07z#TestFindObjects.test_find_objects07  ss    zz------------------/ 0 0 "4((byyyyyyr4   c           
         |                     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 d S )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 0 "4((aD))5At+<+<=!!Q--uQ4/@/@A!!Q--uQ4/@/@A!!Q--uQ4/@/@AC C C C C C Cr4   c           
      T   |                     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 d S )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 0 "4((aD))5At+<+<=!!Q--uQ4/@/@A!!Q--uQ4/@/@AC C C C C C Cr4   N)rG   rH   rI   r   r   r   r   r   r   r   r   r   r   rK   r4   r2   r   r     s        $ $ $    - - -  - - -- - -  C C CC C C C Cr4   r   c           	      j                          g dg dg dg dg dg dg          t          j        d          }g d}t          |                                          |k    sJ  fd	|D             }t          j        d          }|                                |                                k    sJ |                                D ]b}t          ||                   t          ||                   k    sJ t          ||         ||                   D ]\  }}t          ||           cd
S )z Test dictionary keys and entriesrw   r|   r}   rt   r   r   )ignore_value)r
   r   r   c                 D    i | ]}|                     |k              S rK   )nonzero).0kr`   r,   s     r2   
<dictcomp>z(test_value_indices01.<locals>.<dictcomp>%  s+    :::1aDAI&&:::r4   N)r)   r$   value_indiceslistkeysrW   zipr   )r,   vi	true_keystruevikeyvtrue_vr`   s   `      @r2   test_value_indices01r    sj    ::))))))))))))))))))+ , ,D 
	t!	4	4	4B		I		??i'''':::::	:::F		t!	4	4	4B7799%%%%wwyy ' '2c7||s6#;//////RWfSk22 	' 	'IAvAv&&&&	'' 'r4   c                     |                      d| 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)rm   r   r   z(Parameter 'arr' must be an integer array)matchN)re   float32r   r   r$   r   )r,   r`   msgs      r2   test_value_indices02r	  /  s     88F"*8--D
4C	z	-	-	- $ $d###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AAAc                 |   dD ]7}t          j        ddgz  ddgz  z   ddgz  z   t           j                  }t          j        ||          }t          j        |          }|                     |          }t          j        |          }t          |                                          t          |          k    sJ d |D             D ]o}| 	                    ||k              }t          ||                   t          |          k    sJ t          ||         |          D ]\  }}t          ||           p9dS )	z2Test different input array shapes, from 1-D to 4-D))r   )   r   )rS   rS   r   )rS   rS   r   r      r
   r   rS   r   c                 ,    g | ]}t          |          S rK   )int)r   r-   s     r2   
<listcomp>z(test_value_indices03.<locals>.<listcomp>C  s    +++Q#a&&+++r4   N)r!   r)   r   r#   uniquer$   r   r   r   r   rW   r   r   )	r,   r   r   trueKeysr   r   trueNdxviktrue_viks	            r2   test_value_indices03r  8  sA    ; / /JA3r1#vb!f,RX>>>Jq%  9Q<<JJqMM"1%%BGGII$x..0000++(+++ 	/ 	/Ajja((Gr!u::W----!$RUG!4!4 / /XX..../	// /r4   c                     t           D ]E}t          | |          }|                     g |          }t          j        |          }|dk    sJ Fd S )Nr   r   )r   r   r)   r$   sumr,   r   r   inputr   s        r2   
test_sum01r  J  s]      D!!

2U
++U##{{{{{	 r4   c                     t           D ]G}t          | |          }|                     ddg|          }t          j        |          }|dk    sJ Hd S )Nr   r   r   )r   r   re   r$   r  r  s        r2   
test_sum02r  S  sa      D!!!Qu--U##{{{{{	 r4   c                     t           D ]b}t          | |          }|                     g |          }t          j        |          }t          ||                     d          d           cd S )Nr   r   Fcheck_0d)r   r   r]   r$   r  r   r)   r  s        r2   
test_sum03r   \  st     E ED!!%((U##FBJJsOOeDDDDD	E Er4   c                     t           D ]d}t          | |          }|                     ddg|          }t          j        |          }t          ||                     d          d           ed S )Nr
   r   r         @Fr  r   r   r)   r$   r  r   r  s        r2   
test_sum04r$  e  sx     E ED!!

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

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

2U
++U6222{{{{{	 r4   c                    t          j        ddgt                    }|                     |          }t          D ]I}t          | |          }|                     ddg|          }t          j        ||          }|dk    sJ Jd S )Nr   r   r   r(  )	r!   r]   r*  r)   r   r   re   r$   r  r+  s         r2   
test_sum07r.    s    WaV4(((FZZF  D!!!Qu--U6222{{{{{	 r4   c                    t          j        ddgt                    }|                     |          }t          D ]I}t	          | |          }|                     ddg|          }t          j        ||          }|dk    sJ Jd S )Nr
   r   r   r   r(  r)  r+  s         r2   
test_sum08r0    s    ZAd+++FZZF  D!!

Aq6
//U6222{{{{{	 r4   c                 N   t          j        ddgt                    }|                     |          }t          D ]j}t	          | |          }|                     ddgddgg|          }t          j        ||          }t          ||                     d          d	
           kd S )Nr
   r   r   r   rS   r   r(        @Fr  )r!   r)   r*  r   r   r$   r  r   r+  s         r2   
test_sum09r3    s    ZAd+++FZZF E ED!!

QFQF+5
99U6222FBJJsOOeDDDDD	E Er4   c                 L   t          j        ddgt                    }t          j        ddgddggt                    }|                     |          }|                     |          }t          j        ||          }t          ||                     d          d	
           d S Nr
   r   r   r   rS   r   r(         @Fr  )r!   r)   r*  r$   r  r   r,   r   r  r   s       r2   
test_sum10r8    s    ZAd+++FJAA't444EZZFJJuE[v...F

3%@@@@@@r4   c                 (   |                      ddg| j                  }t          D ]k}t          | |          }|                      ddgddgg|          }t	          j        ||d          }t          ||                      d          d	           ld S )
Nr
   r   r   rS   r   r         @Fr  )r)   int8r   r   r$   r  r   r+  s         r2   
test_sum11r<    s    ZZAbgZ..F E ED!!

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

QFQF+5
99U6III9N9NOOO!&"**___*E*EFFFF	G Gr4   c           	         |                      ddgddgg| j                  }t          D ]}t          | |          }|                      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   r   r  
output_sumoutput_labelss          r2   test_sum_labelsrG    s
   ZZ!Q!Q(Z88F N ND!!

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

999(=(=? ? ? vvjM122222!-OOO1L1LMMMMN Nr4   c                 N   t          j        ddgt                    }|                     |          }t          D ]j}t	          | |          }|                     ddgddgg|          }t          j        ||          }t          ||                     d          d	
           kd S r5  )r!   r)   r*  r   r   r$   meanr   r+  s         r2   test_mean01rJ    s    ZAd+++FZZF E ED!!

QFQF+5
99eF333FBJJsOOeDDDDD	E Er4   c                 L   t          j        ddgt                    }t          j        ddgddggt                    }|                     |          }|                     |          }t          j        ||          }t          ||                     d          d	
           d S Nr
   r   r   r   rS   r   r(  r   Fr  )r!   r)   r*  r$   rI  r   r7  s       r2   test_mean02rM    s    ZAd+++FJAA't444EZZFJJuE\%///F

3%@@@@@@r4   c                    |                      ddg          }t          D ]k}t          | |          }|                      ddgddgg|          }t          j        ||d          }t          ||                      d          d	           ld S )
Nr
   r   rS   r   r   r   r"  Fr  )r)   r   r   r$   rI  r   r+  s         r2   test_mean03rO    s    ZZAF E ED!!

QFQF+5
99eF$%' ' 'FBJJsOOeDDDDDE Er4   c           
         |                      ddgddgg| j                  }t          j        d          5  t          D ]}t          | |          }|                      ddgddgg|          }t          j        |||                      g d          	          }|d
         dk    sJ |d         dk    sJ |                     |d                   sJ 	 d d d            d S # 1 swxY w Y   d S )Nr
   r   r   r   ignorerD  rS   r?  r   r   r2        @)	r)   r;  r!   errstater   r   r$   rI  isnanr+  s         r2   test_mean04rV    sZ   ZZ!Q!Q(Z88F		"	"	" 
' 
' 		' 		'DB%%EJJAA/uJ==E\%(*

999(=(=? ? ?F !9####!9####88F1I&&&&&&		'
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
' 
's   BC##C'*C'c                 N   t          j        ddgt                    }|                     |          }t          D ]j}t	          | |          }|                     ddgddgg|          }t          j        ||          }t          ||                     d          d	
           kd S rL  )r!   r)   r*  r   r   r$   minimumr   r+  s         r2   test_minimum01rY        ZAd+++FZZF E ED!!

QFQF+5
99v666FBJJsOOeDDDDD	E Er4   c                 L   t          j        ddgt                    }t          j        ddgddggt                    }|                     |          }|                     |          }t          j        ||          }t          ||                     d          d	           d S 
Nr
   r   r   r   r   r(  r   Fr  )r!   r)   r*  r$   rX  r   r7  s       r2   test_minimum02r]    s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r4   c                    |                      ddg          }t          D ]k}t          | |          }|                      ddgddgg|          }t          j        ||d          }t          ||                      d          d	           ld S )
Nr
   r   rS   r   r   r   r6  Fr  )r)   r   r   r$   rX  r   r+  s         r2   test_minimum03r_    s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er4   c           	      L   |                      ddgddgg          }t          D ]}t          | |          }|                      ddgddgg|          }t          j        |||                      g d                    }t          ||                      g d                     d S )	Nr
   r   rS   r   r   r   rS   r@  r   )r6  r2  rD   )r)   r   r   r$   rX  r   r+  s         r2   test_minimum04rb  $      ZZ!Q!Q())F G GD!!

QFQF+5
99v')zz)))'<'<> > >!&"**___*E*EFFFFG Gr4   c                 N   t          j        ddgt                    }|                     |          }t          D ]j}t	          | |          }|                     ddgddgg|          }t          j        ||          }t          ||                     d          d	
           kd S )Nr
   r   r   r   rS   r   r(  r"  Fr  )r!   r)   r*  r   r   r$   maximumr   r+  s         r2   test_maximum01rf  /  rZ  r4   c                 L   t          j        ddgt                    }t          j        ddgddggt                    }|                     |          }|                     |          }t          j        ||          }t          ||                     d          d	           d S r\  )r!   r)   r*  r$   re  r   r7  s       r2   test_maximum02rh  :  s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r4   c                    |                      ddg          }t          D ]k}t          | |          }|                      ddgddgg|          }t          j        ||d          }t          ||                      d          d	           ld S )
Nr
   r   rS   r   r   r   r2  Fr  )r)   r   r   r$   re  r   r+  s         r2   test_maximum03rj  D  s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er4   c           	      L   |                      ddgddgg          }t          D ]}t          | |          }|                      ddgddgg|          }t          j        |||                      g d                    }t          ||                      g d                     d S )	Nr
   r   rS   r   r   ra  r   )r"  r2  rD   )r)   r   r   r$   re  r   r+  s         r2   test_maximum04rl  O  rc  r4   c                 h    |                      g d          }t          j        |          dk    sJ d S )N)r   r   )r)   r$   re  )r,   r-   s     r2   test_maximum05rp  Z  s:     	

<<<  A?1######r4   c                 ,   |                      g dg dg dg dg          }|                      g dg dg dg dg          }t          j        |||                      g d          	          }t          ||                      g d
                     d S )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   )rS  r2  r:  )r)   r$   medianr   r,   r   r   r   s       r2   test_median01r{  a  s    


LLL LL LL LL" 	# 	#A ZZ%%%' ( (F ^AfBJJyyy4I4IJJJFfbjj&A&ABBBBBr4   c                     |                      g dg dg dg dg          }t          j        |          }t          ||                      d          d           d S )Nrr  rs  rt  ru  r   Fr  r)   r$   ry  r   r,   r   r   s      r2   test_median02r  o  sk    


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

3%@@@@@@r4   c                     |                      g dg dg dg dg          }|                      g dg dg dg dg          }t          j        ||          }t          ||                      d	          d
           d S )Nrr  rs  rt  ru  rv  rw  rx  r(  r"  Fr  r}  rz  s       r2   test_median03r  y  s    


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

3%@@@@@@r4   c                 .   t          j        ddgt                    }|                     |          }t          j        ||                     d          |                     dg                    }t          ||                     dg                     d S )Nr
   r   r   r   r   )r!   r)   r*  r$   ry  r]   r   r~  s      r2   test_median_gh12836_boolr    s{     	
Aq6&&&A


1A^Abggdmm2::qc??KKKFfbjj#&7&788888r4   c                    |                      ddg| j                  }t          j        ||                     d          |                      dg                    }t          ||                      dg                     d S )NA   F   r   r  r
   r   g     P@)r)   r;  r$   ry  r]   r   r~  s      r2   test_median_no_int_overflowr    so     	

B827
++A^Abggdmm2::qc??KKKFfbjj$&8&899999r4   c                    t          j        d          5  t          D ]}t          | |          }|                     g |          }t          j                    5  t          j        ddt                     t          j
        |          }d d d            n# 1 swxY w Y   |                     |          sJ 	 d d d            d S # 1 swxY w Y   d S NrQ  rR  r   zMean of empty slice)r!   rT  r   r   r)   warningscatch_warningsfilterwarningsRuntimeWarningr$   variancerU  r  s        r2   test_variance01r    sX   		"	"	" $ $ 	$ 	$DB%%EJJrJ//E(** 1 1'2GXXX )%001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 88F######	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $6   AC0B
CBCBCCCc                     t           D ]c}t          | |          }|                     dg|          }t          j        |          }t          ||                     d          d           dd S Nr
   r   rD   Fr  r   r   r)   r$   r  r   r  s        r2   test_variance02r    sw     E ED!!

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

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

4 0 05AAAAAAr4   c                    |                      g d          }t          D ]f}t          | |          }|                      g d|          }t          j        ||d          }t          ||                      d          d           gd S N)r   r   rS   )r
   rS   r@  r   r   r   Fr  )r)   r   r   r$   r  r   r+  s         r2   test_variance05r    s    ZZ			""F E ED!!

999E
22!%33FBJJsOOeDDDDDE Er4   c           
         |                      g d          }t          j        d          5  t          D ]{}t	          | |          }|                      g d|          }t          j        |||                      g d                    }t          ||                      g d                     |	 d d d            d S # 1 swxY w Y   d S N)r   r   rS   rS   r   rQ  rR  )r
   rS   r@  r   r@  r   )r   rS   r   )r   r   rD   )r)   r!   rT  r   r   r$   r  r   r+  s         r2   test_variance06r    s+   ZZ((F		"	"	" K K 	K 	KDB%%EJJ///uJ==E%eVRZZ			5J5JKKF%fbjj.I.IJJJJ		KK K K K K K K K K K K K K K K K K K   BB??CCc                    t          j        d          5  t          D ]}t          | |          }|                     g |          }t          j                    5  t          j        ddt                     t          j
        |          }d d d            n# 1 swxY w Y   |                     |          sJ 	 d d d            d S # 1 swxY w Y   d S r  )r!   rT  r   r   r)   r  r  r  r  r$   standard_deviationrU  r  s        r2   test_standard_deviation01r    sX   		"	"	" $ $ 	$ 	$DB%%EJJrJ//E(** ; ;'2GXXX 3E::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 88F######	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $r  c                     t           D ]c}t          | |          }|                     dg|          }t          j        |          }t          ||                     d          d           dd S r  r   r   r)   r$   r  r   r  s        r2   test_standard_deviation02r    sw     E ED!!

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

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

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

999E
22+E61==FBJJsOOeDDDDD	E Er4   c           
         |                      g d          }t          j        d          5  t          D ]{}t	          | |          }|                      g d|          }t          j        |||                      g d                    }t          ||                      g d                     |	 d d d            d S # 1 swxY w Y   d S r  )r)   r!   rT  r   r   r$   r  r   r+  s         r2   test_standard_deviation06r    s2   ZZ((F		"	"	" K K 	K 	KDB%%EJJ///uJ==E/vrzz)))44 F &fbjj.I.IJJJJ	KK K K K K K K K K K K K K K K K K Kr  c           	         |                      dg          }t          j        d          5  t          D ]}t	          |           r|dk    rt          j        d           t          | |          }|                      dg|          }t          j	        |||                      dg                    }t          ||                      dg                     	 d d d            d S # 1 swxY w Y   d S )	Nr
   rQ  rR  uint8z8value cannot be converted to type uint8 without overflowgl `yr   r   )r)   r!   rT  r   r   pytestxfailr   r$   r  r   r+  s         r2   test_standard_deviation07r    s2   ZZ__F		"	"	" ? ? 	? 	?D|| 1 0 1 1 1B%%EJJ}EJ::E/vrzz1#OOF%fbjj!oo>>>>	?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   B*C$$C(+C(c                    t          j        ddgt                    }|                     |          }t          D ]M}t	          | |          }|                     ddgddgg|          }t          j        ||          }|dk    sJ Nd S )	Nr
   r   r   r   rS   r   r(  r   r   )r!   r)   r*  r   r   r$   minimum_positionr+  s         r2   test_minimum_position01r    s    ZAd+++FZZF    D!!

QFQF+5
99)%???	   r4   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S 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!!

LLL(LL(LL*16  8 8 )%00   r4   c                     t          j        g dg dg dgt                    }|                     |          }t          j        |          }|dk    sJ d S r  r!   r)   r*  r$   r  r  s      r2   test_minimum_position03r  5  n    J$$&-13 3 3E JJuE%e,,FVr4   c                     t          j        g dg dg dgt                    }|                     |          }t          j        |          }|dk    sJ d S )Nr  )rS   r   r
   r   r  r   r  r  r  s      r2   test_minimum_position04r  ?  r  r4   c                     |                      g d          }t          D ]O}t          | |          }|                      g dg dg dg|          }t          j        ||          }|dk    sJ Pd S )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      ZZ%%F    D!!

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

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

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

QFQF+5
99)%179 9 9   r4   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S )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                    }|                     |          }t          j        |          }|dk    sJ d S )Nr  r  r  r   r  )r!   r)   r*  r$   r  r  s      r2   test_maximum_position03r    r  r4   c                     |                      g d          }t          D ]O}t          | |          }|                      g dg dg dg|          }t          j        ||          }|dk    sJ Pd S )Nr  r  r  r  r   r
   r
   r)   r   r   r$   r  r+  s         r2   test_maximum_position04r    r  r4   c                     |                      g d          }t          D ]P}t          | |          }|                      g dg dg dg|          }t          j        ||d          }|dk    sJ Qd S )Nr  r  r  r  r   r
   r  r  r+  s         r2   test_maximum_position05r    r  r4   c           	      6   |                      g d          }t          D ]y}t          | |          }|                      g dg dg dg|          }t          j        |||                      ddg                    }|d         d	k    sJ |d         d
k    sJ zd S )Nr  r  r  r  r   r
   r   r   r  r  r  r+  s         r2   test_maximum_position06r    r  r4   c           	      6   |                      g d          }t          D ]y}t          | |          }|                      g dg dg dg|          }t          j        |||                      ddg                    }|d         d	k    sJ |d
         dk    sJ zd S )N)r   rS  rD         @r  r  r  r   r   r  r   r  r
   )r   rS   r  r+  s         r2   test_maximum_position07r    s     ZZ,,,--F # #D!!

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

QFQF+5
99/%777/%777/%777*528: : :*528: : :7GWg>>>>>>
? 
?r4   c                    |                      ddg          }t          D ]}t          | |          }|                      ddgddgg|          }t          j        ||d          }t          j        ||d          }t          j        ||d          }t          j        ||d          }t          j        ||d          }	|||||	fk    sJ d S )Nr
   r   rS   r   r   r   )	r)   r   r   r$   r  rX  re  r  r  r  s
             r2   test_extrema02r    s    ZZAF ? ?D!!

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

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

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

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

999(=(=? ? ?*52813III1F1FH H H *52813III1F1FH H H 	"'!*g666!'!*g666qzW$$$$qzW$$$$$/% %r4   c           	      8   |                      g d          }t          D ]y}t          |           r|dv rt          j        d           t          | |          }|                      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         |           |d	         |k    sJ |d         |	k    sJ {d S )Nr  r  r  r  r  r  r   r
   r   r   rS   r  r  s
             r2   test_extrema04r  	  s    ZZ%%F % %B<< 	MD$BBB\KLLLD!!

LLL(LL(LL*16  8 8 /%QF1C1CDD/%QF1C1CDD/%QF1C1CDD*5&+-::q!f+=+=? ?*5&+-::q!f+=+=? ?!'!*g666!'!*g666qzW$$$$qzW$$$$$%% %r4   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )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  "  u    H " "D!!

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

QFQF+5
99'..!!!!!	" "r4   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )Nr  r   r
   r   r  r  s         r2   test_center_of_mass03r  6  r  r4   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )Nr  r   r
   r   r  r  s         r2   test_center_of_mass04r
  @  r  r4   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )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                    }|                     |          }t          j        |          }||k    sJ d S )Nr  r
   r   rS   r   )r!   r)   r*  r$   r   r,   r   r  r   s       r2   test_center_of_mass06r  T  s`    HJAA't444EJJuE#E**FXr4   c                     |                      ddg          }d}t          j         ddgddggt                    }|                      |          }t          j        ||          }||k    sJ d S )Nr
   r   r<   rD   r   rS   r   r)   r!   r*  r$   r   r,   r   r   r  r   s        r2   test_center_of_mass07r  ]  sw    ZZAFHJAA't444EJJuE#E622FXr4   c                     |                      ddg          }d}t          j         ddgddggt                    }|                      |          }t          j        ||d          }||k    sJ d S )Nr
   r   r<   r   rm   rS   r   r  r  s        r2   test_center_of_mass08r  g  sy    ZZAFHJAA't444EJJuE#E6155FXr4   c                    |                      d          }|                      ddg| j                  }t          j         ddgddggt                    }|                      |          }t	          j        |||                      ddg                    }t          |                      |          |                      |                     d S )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EEHJAA't444EJJuE#E62::q!f3E3EFFFBJJv&&

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

???++I

???++IJJ///00EuaAvv>>FfQi333fQi33333r4   c           	         |                      g dg dg dg          }|                      g dg dg dg          }t          j        |||                      ddg                    }t          ||                      d	d
g| j                             t          j        |||                      ddg                    }t          ||                      ddg| j                             t          j        |||                      ddg                    }t          ||                     |                      ddg| j                                       t          j	        |||                      ddg                    }t          ||                      d	d
g| j                             t          j
        |||                      ddg                    }t          ||                      ddg          d           t          j        |||                      ddg                    }t          ||                      ddg          d           d S )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   r2  r   rS  r   rm   rS   Fr   r7   )r)   r$   rI  r   r  r  r  r   sqrtry  rX  re  )	r,   r   lblrI  varstdmedminmaxs	            r2   test_stat_funcs_2dr/    s&    	

OOO___oooFGGA
**oooH
I
IC<#RZZA-?-?@@@DD"**c3Zrz*BBCCC

1S

Aq60B0B
C
C
CCCS#JbjAABBB

$Qs"**aV:L:L
M
M
MCc2772::sCj
:+S+S#T#TUUU
.3bjj!Q.@.@
A
A
ACCS#JbjAABBB
/!Crzz1a&/A/A
B
B
BCCQF++????
/!Crzz1a&/A/A
B
B
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dS )TestWatershedIftc                    |                     g dg dg dg dg dg dg dg dg|j                  }|                     g dg dg dg dg dg dg dg dg|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          ||                     |                     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
   	structurer   r   r   r   r   r   r   r   r
   r
   r
   r
   r
   r   r)   r  r;  r$   watershed_iftr   r+   r,   r`   markersr<  ra   r   s          r2   test_watershed_ift01z%TestWatershedIft.test_watershed_ift01  s   zz0000000000000000000000002 :<  C C **4443333333333333333333335 =?G  E E **iii'ii'ii) * *	 #D'YGGG000+++++++++++++++0000002 	"#rzz(';';<<<<<r4   c                 z   |                     g dg dg dg dg dg dg dg dg|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          ||                     |                     d S )
Nr5  r6  r7  r   r8  r9  r=  )r   r   r
   r
   r
   r   r   r>  r?  r+   r,   r`   rB  ra   r   s         r2   test_watershed_ift02z%TestWatershedIft.test_watershed_ift02  sg   zz0000000000000000000000002 :<  C C **4443333333333333333333335 =?G  E E #D'22000---+++++++++---0000002 	"#rzz(';';<<<<<r4   c           
      h   |                     g dg dg dg dg dg dg dg|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          ||                     |                     d S )
Nr5  r6  r   r
   r   r
   r   r
   r   r   r   r   r   r   rS   r   r   r   r   r   r   r   r   r   r=  )r   r   r   r   rS   r   r   r   r   r   rS   rS   rS   r   r?  rE  s         r2   test_watershed_ift03z%TestWatershedIft.test_watershed_ift03  sM   zz0000000000000000000002 :<  C C **3333333333333333334446 >@W  F F #D'22000...+++++++++...0002 	"#rzz(';';<<<<<r4   c           
         |                     g dg dg dg dg dg dg dg|j                  }|                     g dg dg dg dg dg dg dg|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          ||                     |                     d S )Nr5  r6  rH  r   rI  rJ  r:  r;  r=  rK  r?  rA  s          r2   test_watershed_ift04z%TestWatershedIft.test_watershed_ift04
  s}   zz0000000000000000000002 :<  C C **3333333333333333334446 $&7  , , **iii'ii'ii) * *	 #D'YGGG000+++++++++++++++0002 	"#rzz(';';<<<<<r4   c           
         |                     g dg dg dg dg dg dg dg|j                  }|                     g dg dg dg dg dg dg dg|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          ||                     |                     d S )Nr5  r6  rH  r   )r   r   rS   r   r   r   r   rJ  r:  r;  r=  )r   rS   rS   r   r   r   r   r?  rA  s          r2   test_watershed_ift05z%TestWatershedIft.test_watershed_ift05(  s}   zz0000000000000000000002 :<  C C **3333333333333333334446 $&7  , , JJ			 )		 )		 + , ,	 #D'YGGG000+++++++++++++++0002 	"#rzz(';';<<<<<r4   c           	         |                     g dg dg dg dg dg dg|j                  }|                     g dg dg dg dg dg dg|j                  }|                     g dg dg dg          }t          j        |||          }g d	g d	g d	g d	g d
g d
g}t          ||                     |                     d S )Nr7  r6  r5  r   r8  r9  r:  r;  r>  r=  r?  rA  s          r2   test_watershed_ift06z%TestWatershedIft.test_watershed_ift06E  sd   zz0000000000000000002
 :<  C C **4443333333333333335
 =?G  E E **iii'ii'ii) * *	 #D'YGGG++++++++++++0000002 	"#rzz(';';<<<<<r4   Tzinplace ops are numpy-specificr   c           	         d}t          j        |t           j                  }|                                }t          j        g dg dg dg dg dg dgt           j                  |d<   |                    |          }|                    g dg dg dg dg dg dg|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          ||                    |                     d S )N)r   r   r   r7  r6  r5  .r8  r9  r:  )r<  r   r>  r=  )r!   re   r  	transposer)   r;  int16Tr$   r@  r   )r+   r,   r   r`   rB  ra   r<  r   s           r2   test_watershed_ift07z%TestWatershedIft.test_watershed_ift07^  s   xRX...~~J 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7
 ?AhH H HS	 zz$**4443333333333333335
 =?G  E E hhuBHh--e**iii'ii'ii) * *	 	dGy%(	* 	* 	* 	*++++++++++++0000002 	"#rzz(';';<<<<<r4   r   r0  r1  c                    |                     ddgddgg|j                  }|                     ddgddgg|j                  }t          j        ||          }ddgddgg}t          ||                     |                     d S )N   r   r   r
   )r)   r  r;  r$   r@  r   rE  s         r2   test_watershed_ift08z%TestWatershedIft.test_watershed_ift08  s     zzC8q6#*,)  5 5**q!f !f&-/W  6 6#D'22FF!#rzz(';';<<<<<r4   c                 L   |                     |                    |j                  j        dgddgg|j                  }|                     ddgddgg|j                  }t          j        ||          }ddgddgg}t          ||                     |          d           d S )Nr   r   r
   Fr   )r)   iinfor  r.  r;  r$   r@  r   rE  s         r2   test_watershed_ift09z%TestWatershedIft.test_watershed_ift09  s     zzBHHRY//3Q7q6#*,)  5 5**q!f !f&-/W  6 6#D'22FFRZZ11uEEEEEEr4   N)rG   rH   rI   rC  rF  rL  rN  rP  rR  skip_xp_backendsrW  rZ  r]  rK   r4   r2   r3  r3    s        = = =>= = =8= = =2= = =<= = =:= = =2 d+KLLL= = ML=@ f%?@@@	= 	= A@	= f%?@@@	F 	F A@	F 	F 	Fr4   r3  )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   rW   r   )r_  r,   rngmax_valimageval_idxs         r2   test_gh_19423rk    s}     )


$
$CGLLQW8L<<CC"CMME#E**Gw||~~'))))))r4   )r   os.pathr  numpyr!   scipy._lib._array_apir   r   r   r   r   r   r  r	   r   scipy.ndimager$    r   markr^  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.  r0  r3  r8  r<  rA  rG  rI  rJ  rM  rO  rV  rX  rY  r]  r_  rb  re  rf  rh  rj  rl  rp  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/  r@  r3  parametrizeintcuintcrk  rK   r4   r2   <module>rw     s4   				                       * * * * * *            ;/ W_=#)=  $'IJJJO= O= O= O= O= O= O= KJO=d $'IJJJ#/ #/ #/ #/ #/ #/ #/ KJ#/L 7=!!  "! 7=!!  "! 7=!!  "! 7=!!  "! 7=!!  "! 7=!!  "! 7=!!  "!$ 7=!!  "!" 7=!!  "!& 7=!!  "! 7=!!  "!* $'IJJJ7=!!  "! KJ* 7=!!  "!& 7=!!  "!$ $F89; ; ;7=!!  "!; ; $F89; ; ;7=!!! ! "!; ;! $'JKKK7=!!F F "! LKF 7=!!  "!. 7='"677  87$ 7=!!	5 	5 "!	5 7='"677TC TC TC TC TC TC TC 87TCn 7())' ' *)', 7())$ $ *)$ 7())/ / *)/" 7;    7;    7;E E  E 7;E E  E 7;F F  F 7;    7;    7;    7;E E  E 7;A A  A 7;E E  E 7;G G  G 7;
N 
N  
N 7<  E E ! E 7<  A A ! A 7<  E E ! E 7<  ' ' ! ' 7?##E E $#E 7?##A A $#A 7?##E E $#E 7?##G G $#G 7?##E E $#E 7?##A A $#A 7?##E E $#E 7?##G G $#G 7?##$ $ $#$ 7>""
C 
C #"
C 7>""A A #"A 7>""
A 
A #"
A 7>""9 9 #"9 7>"": : #": 7#$$$ $ %$$ 7#$$E E %$E 7#$$E E %$E 7#$$B B %$B 7#$$E E %$E 7#$$K K %$K 7-..$ $ /.$ 7-..E E /.E 7-..E E /.E 7-..A A /.A 7-..E E /.E 7-..	K 	K /.	K 7-..
? 
? /.
? 7+,,    -,  7+,,    -,  7+,,  -, 7+,,  -, 7+,,    -,  7+,,    -,  7+,,
# 
# -,
# 7+,,    -,  7+,,    -,  7+,,  -, 7+,,    -,  7+,,    -,  7+,,
# 
# -,
# 7+,,# # -,# 7?GOW_+W-EG G? ?G G?  7?GOW_+W-EG G? ?G G?$ 7?GOW_+W-EG G% %G G%8 7?GOW_+W-EG G% %G G%. 7)**" " +*" 7)**" " +*" 7)**" " +*" 7)**" " +*" 7)**" " +*" 7)**  +* 7)**  +* 7)**  +* 7)**> > +*> 7$%%0 0 &%0 7$%%0 0 &%0 $7777$%%	4 	4 &% 87	4 7<!173M>7?GOE E@ @E E@. &!;<<<7())aF aF aF aF aF aF aF *) =<aFH $2337())* * *) 43  * * *r4   