
    Yh2                        d dl Z d dlZ d dlZd dlmZ d dl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ddd	g
          g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d Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z% edd          d             Z&d  Z'd! Z( eddgd"#          d$             Z) eddgd"#          d%             Z* edd&          d'             Z+d( Z, edd)*          d+             Z-d, Z. edd-*           G d. d/                      Z/d0 Z0d1 Z1d2 Z2d3 Z3d4 Z4d5 Z5d6 Z6d7 Z7d8 Z8d9 Z9d: Z:d; Z;d< Z<d= Z=d> Z>d? Z?d@ Z@dA ZAdB ZBdC ZCdD ZDdE ZEdF ZFdG ZGdH ZHdI ZIdJ ZJdK ZKdL ZLdM ZMdN ZNdO ZOdP ZPdQ ZQdR ZRdS ZSdT ZTdU ZUdV ZVdW ZWdX ZXdY ZYdZ ZZd[ Z[d\ Z\d] Z]d^ Z^d_ Z_d` Z`da Zadb Zbdc Zcdd Zdde Zedf Zfdg Zgdh Zhdi Zidj Zjdk Zkdl Zldm Zmdn Zndo Zodp Zpdq Zqdr Zrds Zsdt Ztdu Zudv Zvdw Zwdx Zxdy Zydz Zzd{ Z{ edd|          d}             Z|d~ Z} edd*           G d d                      Z~ ed          ej                            dej        ej        g          d                         ZdS )    N)suppress_warnings)is_torchxp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equal)raises   )typesTcupyz	jax.numpy)cpu_only
exceptionsnt2z 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	            w/var/www/tools.fuzzalab.pt/emblema-extractor/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   	   r:   r   r:   r   r   r    r   r!   r"   r#   r-   s	            r5   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	: 	:r7   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/   r0   r   r   r1   r2   r3   centersr4   s
             r5   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
%;%;<<<<		= 		=r7   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   r9   r   r:   r   Tr=   r    r   r!   r"   r?   r#   r@   s
             r5   test_b_centeredz'Test_measurements_stats.test_b_centeredP   rC   r7   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   )        rG         "@rH   rG   rH   r   Tr=   r    r   r!   r"   r?   r#   r@   s
             r5   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
%;%;<<<<		= 		=r7   N)	__name__
__module____qualname____doc__r6   r;   rB   rE   rI    r7   r5   r   r      si         
: : :: : : = = == = == = = = =r7   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
   r9   r:   )rG   rG         @rR   rG   rR   r   T)r   r   find_maxr   )r   r   find_minr   )r   r   rT   find_min_positions   i)r   r   rS   find_max_positions)r'   r(   _selectlenr   r    kind)r.   r/   r0   casesr   r   results          r5   
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	/ 	/r7   N)rJ   rK   rL   rM   r^   rN   r7   r5   rP   rP   o   s)        OO /  /  /  /  /r7   rP   c                 ~    |                      d          }t          j        |          \  }}|dk    sJ |dk    sJ d S )NrN   r
   )onesr'   labelr/   dataoutns       r5   test_label01rf      sB    772;;D]4  FC!8888666666r7   c                 ~    |                      d          }t          j        |          \  }}|dk    sJ |dk    sJ d S )NrN   r   )zerosr'   ra   rb   s       r5   test_label02ri      sB    88B<<D]4  FC!8888666666r7   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S )Nr
   r`   r'   ra   r   r,   rb   s       r5   test_label03rl      sS    77A3<<D]4  FCc2::qc??333666666r7   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S )Nr
   r   )rh   r'   ra   r   r,   rb   s       r5   test_label04rn      sS    88QC==D]4  FCc2::qc??333666666r7   c                     |                      dg          }t          j        |          \  }}t          ||                     g d                     |dk    sJ d S )N   )r
   r
   r
   r
   r
   r
   rk   rb   s       r5   test_label05rq      sW    77A3<<D]4  FCc2::ooo#>#>???666666r7   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   rV   rV   r,   r'   ra   r   rb   s       r5   test_label06ru      sa    ::((())D]4  FCc2::.@.@.@#A#ABBB666666r7   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   rt   rb   s       r5   test_label07rx      s    ::))))))))))))))))))+ , ,D ]4  FCc2::%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%9$: $: ; ; ; 666666r7   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   rV   rV   r   r   r   r   r   r   r   r   r   r   r   rt   rb   s       r5   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 666666r7   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 )Nrz   r{   r|   r}   r~   r   r   r   )r   r   r   r   r   r   )r   r   r   rV   rV   r   rV   r,   r'   generate_binary_structurera   r   r/   rc   structrd   re   s        r5   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 666666r7   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 )Nrw   )r   r
   r
   r   r
   r   )r   r
   r
   r
   r
   r   r   r
   r   r   s        r5   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 666666r7   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 )Nrz   r{   r|   r}   r~   r    r   r   r   r   r   r   getattrr,   r'   ra   r   r/   typer    rc   rd   re   expecteds          r5   test_label11r     s     D!!zz------------------/
 7<  = = t$$Q&&&&&&&&&&&&&&&&&&( ::h''!#x000Avvvvv# r7   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 )Nrz   r{   r|   r}   r~   r   outputr   r   r   r   r   r   )r/   r   r    rc   re   r   s         r5   test_label11_inplacer     s     D!!zz------------------/
 7<  = = M$t,,,&&&&&&&&&&&&&&&&&&( ::h''!$111Avvvvv# r7   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          r5   test_label12r   0  s      D!!zz---------------	/ 7<	  = =
 t$$Q&&&&&&&&&&&&&&&	(
 ::h''!#x000Avvvvv r7   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          r5   test_label13r   C  s      D!!zz<<<<<<<<<<<<> !&	  ' '
 t$$Q5555555555557 ::h''!#x000Avvvvv r7   zoutput=dtype is numpy-specific)r   r   r   c                 0   |                      dg          }t          D ]w}t          | |          }|                     dg|          }t	          j        ||          }t          ||                      |j        |j                             |dk    sJ xd S )Nrp   r   r   r
   )	r`   r   r   rh   r'   ra   r   shaper    r/   rc   tr    r   re   s         r5   test_label_output_typedr   U  s     77A3<<D  A1#U++M$v...!&"$''&,fl'"K"K	M 	M 	MAvvvvv r7   c                    |                      dg          }t          D ]g}t          | |          }t          j        ||          \  }}t          ||                      |j        |j                             |j        |k    sJ hd S )Nrp   r   r   )r`   r   r   r'   ra   r   r   r    r   s         r5   test_label_output_dtyper   b  s     77A3<<D ! !AM$u555	!&"$''&,fl'"K"K	M 	M 	M|q     ! !r7   z!in-place output is numpy-specificc                     |                      dg          }t          D ]L}t          | |          }|                     dg|          }t	          t
          t          j        ||           Md S )Nrp   
   r   r   )r`   r   r   rh   assert_raises
ValueErrorr'   ra   )r/   rc   r   r    r   s        r5   test_label_output_wrong_sizer   n  sp    77A3<<D F FA2$e,,j'-fEEEEEF Fr7   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 )Nrc   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   r   )r   rV   rV   r   Fcheck_dtyper
   )r$   loadtxtospathjoindirname__file__r&   r,   ranger   r   r'   ra   )	r/   rc   strelsresultsrrW   djss	            r5   test_label_structuring_elementsr   w  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	 r7   z2`cupyx.scipy.ndimage` does not have `find_objects`r   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)rZ   r   r'   r   r,   ra   find_objects)
imgthreshsizemaskrankr   laco_r/   s
            r5   SEztest_ticket_742.<locals>.SE  sj    V|4:24>>F##t%' 'B $$r7   rW   )rV     r   )r   r   )r$   r    intprandomrandprodr&   r,   )r/   r   r   as   `   r5   test_ticket_742r     s    % % % % % % 
xBHSMM))INN275>>**22599JJqMM
1 *)r7   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  )rV   rV   )r$   rh   r,   r'   ra   r`   )r/   r   s     r5   test_gh_issue_3025r     s    
AAaaa#gJAaaagJAgJAgJAgJ


1A=BGGFOO,,Q/1444444r7   z-cupyx.scipy.ndimage does not have find_objectc                   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'   ra   r    int32r+   r   )r.   r/   
test_arrayra   no_featuress        r5   test_label_default_dtypez(TestFindObjects.test_label_default_dtype  st    Y^^B++
ZZ
++
$]:+;<<{{rx22222U#####r7   c                 x    |                     g |j                  }t          j        |          }|dgk    sJ d S )Nr   rN   )r`   r+   r'   r   r.   r/   rc   rd   s       r5   test_find_objects01z#TestFindObjects.test_find_objects01  s<    wwrw**"4((rd{{{{{{r7   c                 v    |                     g |j                  }t          j        |          }|g k    sJ d S )Nr   rh   r+   r'   r   r   s       r5   test_find_objects02z#TestFindObjects.test_find_objects02  s:    xx"(x++"4((byyyyyyr7   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       r5   test_find_objects03z#TestFindObjects.test_find_objects03  T    wws"(w++"4((aD))+,,,,,,,r7   c                 x    |                     dg|j                  }t          j        |          }|g k    sJ d S )Nr
   r   r   r   s       r5   test_find_objects04z#TestFindObjects.test_find_objects04  s<    xx28x,,"4((byyyyyyr7   c                     |                     dg|j                  }t          j        |          }|t	          ddd           fgk    sJ d S )Nrp   r   r   r   r   s       r5   test_find_objects05z#TestFindObjects.test_find_objects05  r   r7   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 )Nrs   r   r
   r   r   rp   r   r,   r'   r   r   r   s       r5   test_find_objects06z#TestFindObjects.test_find_objects06  s    zz,,,--"4((aD))+aD))+aD))+- - - - - - -r7   c           	          |                     g dg dg dg dg dg dg          }t          j        |          }|g k    sJ d S )Nrw   )r,   r'   r   r   s       r5   test_find_objects07z#TestFindObjects.test_find_objects07  ss    zz------------------/ 0 0 "4((byyyyyyr7   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 )Nrz   r   r   r   r   r   r
   rV   r   rp   r   r   r   s       r5   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r7   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 )Nrz   r   r   rw   r   r   r
   rV   r   rp   r   r   r   s       r5   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r7   N)rJ   rK   rL   r   r   r   r   r   r   r   r   r   r   rN   r7   r5   r   r     s        $ $ $    - - -  - - -- - -  C C CC C C C Cr7   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 entriesrz   r   r   rw   r   r   )ignore_value)r
   r   r   c                 D    i | ]}|                     |k              S rN   )nonzero).0krc   r/   s     r5   
<dictcomp>z(test_value_indices01.<locals>.<dictcomp>  s+    :::1aDAI&&:::r7   N)r,   r'   value_indiceslistkeysrZ   zipr   )r/   vi	true_keystruevikeyvtrue_vrc   s   `      @r5   test_value_indices01r    sh   ::))))))))))))))))))+ , ,D 
	t!	4	4	4B		I		??i'''':::::	:::F		t!	4	4	4B7799%%%%wwyy ' '2c7||s6#;//////RWfSk22 	' 	'IAvAv&&&&	'' 'r7   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)rp   r   r   z(Parameter 'arr' must be an integer array)matchN)rh   float32r   r   r'   r   )r/   rc   msgs      r5   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   )rV   rV   r   )rV   rV   r   r      r
   r   rV   r   c                 ,    g | ]}t          |          S rN   )int)r   r0   s     r5   
<listcomp>z(test_value_indices03.<locals>.<listcomp>,  s    +++Q#a&&+++r7   N)r$   r,   r   r&   uniquer'   r   r   r   r   rZ   r   r   )	r/   r   r   trueKeysr   r   trueNdxviktrue_viks	            r5   test_value_indices03r  "  s?   : / /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..../	// /r7   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        r5   
test_sum01r  3  s]      D!!

2U
++U##{{{{{	 r7   c                     t           D ]G}t          | |          }|                     ddg|          }t          j        |          }|dk    sJ Hd S )Nr   r   r   )r   r   rh   r'   r  r  s        r5   
test_sum02r  ;  sa      D!!!Qu--U##{{{{{	 r7   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        r5   
test_sum03r"  C  st     E ED!!%((U##FBJJsOOeDDDDD	E Er7   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        r5   
test_sum04r&  K  sx     E ED!!

Aq6
//U##FBJJsOOeDDDDD	E Er7   c                     t           D ]h}t          | |          }|                     ddgddgg|          }t          j        |          }t          ||                     d          d           id S )	Nr
   r   rV   r   r   g      $@Fr   r%  r  s        r5   
test_sum05r(  S  s     F FD!!

QFQF+5
99U##FBJJt$4$4uEEEEE	F Fr7   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         r5   
test_sum06r.  [  s    Z$'''FZZF  D!!

2U
++U6222{{{{{	 r7   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   rh   r'   r  r-  s         r5   
test_sum07r0  e  s    WaV4(((FZZF  D!!!Qu--U6222{{{{{	 r7   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         r5   
test_sum08r2  o  s    ZAd+++FZZF  D!!

Aq6
//U6222{{{{{	 r7   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   rV   r   r*        @Fr   )r$   r,   r,  r   r   r'   r  r   r-  s         r5   
test_sum09r5  y  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r7   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   rV   r   r*         @Fr   )r$   r,   r,  r'   r  r   r/   r   r  r   s       r5   
test_sum10r:    s    ZAd+++FJAA't444EZZFJJuE[v...F

3%@@@@@@r7   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   rV   r   r         @Fr   )r,   int8r   r   r'   r  r   r-  s         r5   
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r7   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   rV   r      r   r   )r4  rG   g      @)r,   r=  r   r   r'   r  r   r-  s         r5   
test_sum12rC    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r7   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          r5   test_sum_labelsrI    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r7   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 r7  )r$   r,   r,  r   r   r'   meanr   r-  s         r5   test_mean01rL    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r7   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   rV   r   r*  r!   Fr   )r$   r,   r,  r'   rK  r   r9  s       r5   test_mean02rO    s    ZAd+++FJAA't444EZZFJJuE\%///F

3%@@@@@@r7   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   rV   r   r   r   r$  Fr   )r,   r   r   r'   rK  r   r-  s         r5   test_mean03rQ    s    ZZAF E ED!!

QFQF+5
99eF$%' ' 'FBJJsOOeDDDDDE Er7   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rF  rV   rA  r   r   r4        @)	r,   r=  r$   errstater   r   r'   rK  isnanr-  s         r5   test_mean04rX    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 rN  )r$   r,   r,  r   r   r'   minimumr   r-  s         r5   test_minimum01r[        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r7   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'   rZ  r   r9  s       r5   test_minimum02r_    s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r7   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   rV   r   r   r   r8  Fr   )r,   r   r   r'   rZ  r   r-  s         r5   test_minimum03ra    s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er7   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   rV   r   r   r   rV   rB  r   )r8  r4  rG   )r,   r   r   r'   rZ  r   r-  s         r5   test_minimum04rd        ZZ!Q!Q())F G GD!!

QFQF+5
99v')zz)))'<'<> > >!&"**___*E*EFFFFG Gr7   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   rV   r   r*  r$  Fr   )r$   r,   r,  r   r   r'   maximumr   r-  s         r5   test_maximum01rh    r\  r7   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'   rg  r   r9  s       r5   test_maximum02rj    s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r7   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   rV   r   r   r   r4  Fr   )r,   r   r   r'   rg  r   r-  s         r5   test_maximum03rl    s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er7   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   rV   r   r   rc  r   )r$  r4  rG   )r,   r   r   r'   rg  r   r-  s         r5   test_maximum04rn     re  r7   c                 h    |                      g d          }t          j        |          dk    sJ d S )N)r   r   )r,   r'   rg  )r/   r0   s     r5   test_maximum05rr  *  s8    


<<<  A?1######r7   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
   rp   rV   r   r   r   r   r   r   r:   rV   r   r   r
   r
   r   r   r   r   r   r   rV   rV   r   r   )r
   r   rV   r   )rU  r4  r<  )r,   r'   medianr   r/   r   r   r   s       r5   test_median01r}  0  s    


LLL LL LL LL" 	# 	#A ZZ%%%' ( (F ^AfBJJyyy4I4IJJJFfbjj&A&ABBBBBr7   c                     |                      g dg dg dg dg          }t          j        |          }t          ||                      d          d           d S )Nrt  ru  rv  rw  r!   Fr   r,   r'   r{  r   r/   r   r   s      r5   test_median02r  =  sk    


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

3%@@@@@@r7   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 )Nrt  ru  rv  rw  rx  ry  rz  r*  r$  Fr   r  r|  s       r5   test_median03r  F  s    


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

3%@@@@@@r7   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'   r{  r`   r   r  s      r5   test_median_gh12836_boolr  S  sy    

Aq6&&&A


1A^Abggdmm2::qc??KKKFfbjj#&7&788888r7   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'   r{  r`   r   r  s      r5   test_median_no_int_overflowr  [  sm    


B827
++A^Abggdmm2::qc??KKKFfbjj$&8&899999r7   c                    t          j        d          5  t          D ]}t          | |          }|                     g |          }t                      5 }|                    t          d           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 NrS  rT  r   zMean of empty slice)r$   rV  r   r   r,   r   filterRuntimeWarningr'   variancerW  r/   r   r    r  supr   s         r5   test_variance01r  b  sQ   		"	"	" $ $ 	$ 	$DB%%EJJrJ//E"$$ 1

>+@AAA )%001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 88F######	$$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $5   ?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   rG   Fr   r   r   r,   r'   r  r   r  s        r5   test_variance02r  m  sw     E ED!!

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

Aq6
//!%((FBJJsOOeDDDDD	E Er7   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      r5   test_variance04r  }  sb    J1vT***EJJuEe$$F

4 0 05AAAAAAr7   c                    |                      g d          }t          D ]f}t          | |          }|                      g d|          }t          j        ||d          }t          ||                      d          d           gd S N)r   r   rV   )r
   rV   rB  r   r   r!   Fr   )r,   r   r   r'   r  r   r-  s         r5   test_variance05r    s    ZZ			""F E ED!!

999E
22!%33FBJJsOOeDDDDDE Er7   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   rV   rV   r   rS  rT  )r
   rV   rB  r   rB  r   )r   rV   r   )r!   r!   rG   )r,   r$   rV  r   r   r'   r  r   r-  s         r5   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                      5 }|                    t          d           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$   rV  r   r   r,   r   r  r  r'   standard_deviationrW  r  s         r5   test_standard_deviation01r    sQ   		"	"	" $ $ 	$ 	$DB%%EJJrJ//E"$$ ;

>+@AAA 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        r5   test_standard_deviation02r    sw     E ED!!

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

Aq6
//+E22FBJJsOOeDDDDD	E Er7   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      r5   test_standard_deviation04r    s`    J1vT***EJJuE'..F

3%@@@@@@r7   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         r5   test_standard_deviation05r    s    ZZ			""F E ED!!

999E
22+E61==FBJJsOOeDDDDD	E Er7   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$   rV  r   r   r'   r  r   r-  s         r5   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
   rS  rT  uint8z8value cannot be converted to type uint8 without overflowgl `yr   r   )r,   r$   rV  r   r   pytestxfailr   r'   r  r   r-  s         r5   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   rV   r   r*  r   r   )r$   r,   r,  r   r   r'   minimum_positionr-  s         r5   test_minimum_position01r    s    ZAd+++FZZF    D!!

QFQF+5
99)%???	   r7   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S Nrp   r   r   rp   rV   r   r   r   r
   rp   r
   r
   r   r
   r   )r   r   r,   r'   r  r  s        r5   test_minimum_position02r            D!!

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

LLL(LL(LL*16  8 8 )%88   r7   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   rV   r   r  r  r  r   r   r   r
   r  r-  s         r5   test_minimum_position06r        ZZ%%F    D!!

LLL(LL(LL*16  8 8 )%;;   r7   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   rV   r   r  r
   r  r  r-  s         r5   test_minimum_position07r        ZZ%%F # #D!!

LLL(LL(LL*16  8 8 )%*,**aV*<*<> >ayF""""ayF"""""# #r7   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   rV   r   r*  r
   r   )r$   r,   r,  r   r   r'   maximum_positionr-  s         r5   test_maximum_position01r  %  s    ZAd+++FZZF    D!!

QFQF+5
99)%179 9 9   r7   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S )Nr  rV   r   rB  r   r  r   r  )r   r   r,   r'   r  r  s        r5   test_maximum_position02r  0  r  r7   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      r5   test_maximum_position03r  :  r  r7   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         r5   test_maximum_position04r  C  r  r7   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         r5   test_maximum_position05r  N  r  r7   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         r5   test_maximum_position06r  Y  r  r7   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!   rU  rG         @r  r  r  r   r!   r  r   r  r
   )r   rV   r  r-  s         r5   test_maximum_position07r  f  s    ZZ,,,--F # #D!!

LLL(LL(LL*16  8 8 )%*,**c3Z*@*@B BayF""""ayF"""""# #r7   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   rV   r   r*  )r$   r,   r,  r   r   r'   extremarZ  rg  r  r  
r/   r   r   r    r  output1output2output3output4output5s
             r5   test_extrema01r  t  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>>>>>>
? 
?r7   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   rV   r   r   r   )	r,   r   r   r'   r  rZ  rg  r  r  r  s
             r5   test_extrema02r    s   ZZAF ? ?D!!

QFQF+5
99/%()+ + +/%()+ + +/%()+ + +*528C C C*528C C C7GWg>>>>>>? ?r7   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   rV   uint16uint32uint64/https://github.com/pytorch/pytorch/issues/58734r   r   rc  r   r   r,   r   r   r  r  r   r'   r  rZ  rg  r  r  r   r  s
             r5   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$$$$$/% %r7   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   rV   r  r  s
             r5   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$$$$$%% %r7   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )N)rG   rG   r
   r   r   r   r   r,   r'   center_of_massr/   r   r   r    r  r   s         r5   test_center_of_mass01r    u    H " "D!!

QFQF+5
99'..!!!!!	" "r7   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         r5   test_center_of_mass02r    u    H " "D!!

QFQF+5
99'..!!!!!	" "r7   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         r5   test_center_of_mass03r
    r  r7   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         r5   test_center_of_mass04r    r  r7   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         r5   test_center_of_mass05r    r  r7   c                     d}t          j        ddgddggt                    }|                     |          }t          j        |          }||k    sJ d S )Nr  r
   r   rV   r   )r$   r,   r,  r'   r  r/   r   r  r   s       r5   test_center_of_mass06r    s`    HJAA't444EJJuE#E**FXr7   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?   rG   r   rV   r   r,   r$   r,  r'   r  r/   r   r   r  r   s        r5   test_center_of_mass07r    sw    ZZAFHJAA't444EJJuE#E622FXr7   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!   rp   rV   r   r  r  s        r5   test_center_of_mass08r    sy    ZZAFHJAA't444EJJuE#E6155FXr7   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        r5   test_center_of_mass09r    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(<(<=====r7   c                     |                      d          }|                     d          }t          j        |ddd          }t	          ||           d S )Nr   r   )r`   aranger'   	histogramr   r  s       r5   test_histogram01r!    sL    wwr{{HIIbMMEuaR00Ffh/////r7   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
   rV   r   rV   rV   rV   rV   r   r   rp   r
   r,   r'   r   r   r  s        r5   test_histogram02r$     sw    ZZ00011Fzz///**HJJ///00EuaAvq99Ffh/////r7   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   rV   r   )r
   r
   rV   r   rV   rp   rV   rV   r   r   rp   r  r
   r#  )r/   r   	expected1	expected2r  r   s         r5   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3r7   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)rp   r   r   r   r   )rB  r:   r   r   r   )r   r   r   rV   rp   )r
   r
   r   r   r   )r   r   r   r   r   r
   r   r   rR   r4  r   rU  r!   rp   rV   Fr   r:   )r,   r'   rK  r   r  r  r  r   sqrtr{  rZ  rg  )	r/   r   lblrK  varstdmedminmaxs	            r5   test_stat_funcs_2dr1  5  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++??????r7   no watershed_ift on CuPyc                       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/   rc   markersr=  rd   r   s          r5   test_watershed_ift01z%TestWatershedIft.test_watershed_ift01O  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(';';<<<<<r7   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 )
Nr6  r7  r8  r   r9  r:  r>  )r   r   r
   r
   r
   r   r   r?  r@  r.   r/   rc   rC  rd   r   s         r5   test_watershed_ift02z%TestWatershedIft.test_watershed_ift02n  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(';';<<<<<r7   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 )
Nr6  r7  r   r
   r   r
   r   r
   r   r   r   r   r   r   rV   r   r   r   r   r   r   r   r   r   r>  )r   r   r   r   rV   r   r   r   r   r   rV   rV   rV   r   r@  rF  s         r5   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(';';<<<<<r7   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 )Nr6  r7  rI  r   rJ  rK  r;  r<  r>  rL  r@  rB  s          r5   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(';';<<<<<r7   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 )Nr6  r7  rI  r   )r   r   rV   r   r   r   r   rK  r;  r<  r>  )r   rV   rV   r   r   r   r   r@  rB  s          r5   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(';';<<<<<r7   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 )Nr8  r7  r6  r   r9  r:  r;  r<  r?  r>  r@  rB  s          r5   test_watershed_ift06z%TestWatershedIft.test_watershed_ift06  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(';';<<<<<r7   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   r8  r7  r6  .r9  r:  r;  )r=  r   r?  r>  )r$   rh   r  	transposer,   r=  int16Tr'   rA  r   )r.   r/   r   rc   rC  rd   r=  r   s           r5   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(';';<<<<<r7   r   r2  r   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'   rA  r   rF  s         r5   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(';';<<<<<r7   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  r0  r=  r'   rA  r   rF  s         r5   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Er7   N)rJ   rK   rL   rD  rG  rM  rO  rQ  rS  skip_xp_backendsrX  r[  r^  rN   r7   r5   r4  r4  L  s        = = =>= = =8= = =2= = =<= = =:= = =2 d+KLLL= = ML=@ f%?@@@	= 	= A@	= f%?@@@	F 	F A@	F 	F 	Fr7   r4  )r   dtc                    t           j                            d          }d}|                    d|d                              |           }t          j        |          }t          |                                          |k    sJ d S )N{   rB  r   )r   r  )lowhighr   r   )	r$   r   default_rngintegersastyper'   r   rZ   r   )r`  r/   rngmax_valimageval_idxs         r5   test_gh_19423rl  1  s}     )


$
$CGLLQW8L<<CC"CMME#E**Gw||~~'))))))r7   )r   os.pathnumpyr$   numpy.testingr   scipy._lib._array_apir   r   r   r   r   r  r	   r   scipy.ndimager'    r   markr_  
pytestmarkname__version__r*   r   rP   rf   ri   rl   rn   rq   ru   rx   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r&  r(  r.  r0  r2  r5  r:  r>  rC  rI  rL  rO  rQ  rX  r[  r_  ra  rd  rh  rj  rl  rn  rr  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r!  r$  r(  r1  r4  parametrizeintcuintcrl  rN   r7   r5   <module>rz     s	   				      + + + + + +               * * * * * *            ;/ &+9NOOOP
W_=#)=  $'IJJJO= O= O= O= O= O= O= KJO=d $'IJJJ#/ #/ #/ #/ #/ #/ #/ KJ#/L              $  "  &    * $'IJJJ  KJ*  &  $ $F89; ; ; ; ; $F89; ; ;! !; ;! $'JKKKF F LKF  , &!UVVV  WV$	5 	5 	5 &!PQQQTC TC TC TC TC TC TC RQTCn' ' ',$ $ $/ / /"    E E EE E EF F F      E E EA A AE E EG G G
N 
N 
NE E EA A AE E E' ' 'E E EA A AE E EG G GE E EA A AE E EG G G$ $ $
C 
C 
CA A A
A 
A 
A9 9 9: : :$ $ $E E EE E EB B BE E EK K K$ $ $E E EE E EA A AE E E	K 	K 	K
? 
? 
?                        
# 
# 
#                      
# 
# 
## # #? ? ? ? ? ?$% % %8% % %." " "" " "" " "" " "" " "      > > >0 0 00 0 0 $777	4 	4 87	4@ @ @. &!;<<<aF aF aF aF aF aF aF =<aFH $233* * 43  * * *r7   