
    ^Mh                        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mZmZ d dlZd dlmZ d dlmZ ddlmZ d dlmZ ej        j        Zeej                            d           ed	d
dg          gZe j        dk    o
ej        dk     Z ed	d           G d d                      Z G d d          Zd Z d Z!ej        j"        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$          d%             Z/ ed	d$          d&             Z0d' Z1d( Z2 ed
d)*          d+             Z3d, Z4 ed
d-*           G d. d/                      Z5d0 Z6d1 Z7d2 Z8d3 Z9d4 Z:d5 Z;d6 Z<d7 Z=d8 Z>d9 Z?d: Z@d; ZAd< ZBd= ZCd> ZDd? ZEd@ ZFdA ZGdB ZHdC ZIdD ZJdE ZKdF ZLdG ZMdH ZNdI ZOdJ ZPdK ZQdL ZRdM ZSdN ZTdO ZUdP ZVdQ ZWdR ZXdS ZYdT ZZdU Z[dV Z\dW Z]dX Z^dY Z_dZ Z`d[ Zad\ Zbd] Zcd^ Zdd_ Zed` Zfda Zgdb Zhdc Zidd Zjde Zkdf Zldg Zmdh Zndi Zodj Zpdk Zqdl Zrdm Zsdn Ztdo Zudp Zvdq Zwdr Zxds Zydt Zzdu Z{dv Z|dw Z}dx Z~dy Zdz Zd{ Z ed	d|          d}             Zd~ Z ed
d*           G d d                      Z ed	          ej                            dej        ej        g          d                         ZdS )    N)suppress_warnings)is_jaxis_torcharray_namespacexp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equal)raises   )types)array_api_compatibleskip_xp_backendsT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	            e/var/www/html/test/jupyter/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'   r1   s	            r9   test_bzTest_measurements_stats.test_b5   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	: 	:r;   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'   
r2   r3   r4   r"   r#   r5   r6   r7   centersr8   s
             r9   test_a_centeredz'Test_measurements_stats.test_a_centeredE      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
%;%;<<<<		= 		=r;   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   TrA   r$   r   r%   r&   rC   r'   rD   s
             r9   test_b_centeredz'Test_measurements_stats.test_b_centeredT   rG   r;   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   )        rK         "@rL   rK   rL   r   TrA   r$   r   r%   r&   rC   r'   rD   s
             r9   test_nonint_labelsz*Test_measurements_stats.test_nonint_labelsc   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
%;%;<<<<		= 		=r;   N)	__name__
__module____qualname____doc__r:   r?   rF   rI   rM    r;   r9   r   r       si         
: : :: : : = = == = == = = = =r;   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   r=   r>   )rK   rK         @rV   rK   rV   r!   T)r"   r#   find_maxr   )r"   r#   find_minr   )r"   r#   rX   find_min_positions   i)r"   r#   rW   find_max_positions)r+   r,   _selectlenr   r$   kind)r2   r3   r4   casesr"   r#   results          r9   
test_basicz#Test_measurements_select.test_basicv   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	/ 	/r;   N)rN   rO   rP   rQ   rb   rR   r;   r9   rT   rT   s   s)        OO /  /  /  /  /r;   rT   c                 ~    |                      g           }t          j        |          \  }}|dk    sJ |dk    sJ d S Nr   )onesr+   labelr3   dataoutns       r9   test_label01rk      sB    772;;D]4  FC!8888666666r;   c                 ~    |                      g           }t          j        |          \  }}|dk    sJ |dk    sJ d S )Nr   )zerosr+   rf   rg   s       r9   test_label02rn      sB    88B<<D]4  FC!8888666666r;   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S rd   re   r+   rf   r	   r0   rg   s       r9   test_label03rq      sS    77A3<<D]4  FCc2::qc??333666666r;   c                     |                      dg          }t          j        |          \  }}t          ||                     dg                     |dk    sJ d S )Nr   r   )rm   r+   rf   r	   r0   rg   s       r9   test_label04rs      sS    88QC==D]4  FCc2::qc??333666666r;   c                     |                      dg          }t          j        |          \  }}t          ||                     g d                     |dk    sJ d S )N   )r   r   r   r   r   r   rp   rg   s       r9   test_label05rv      sW    77A3<<D]4  FCc2::ooo#>#>???666666r;   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   rZ   rZ   r0   r+   rf   r	   rg   s       r9   test_label06rz      sa    ::((())D]4  FCc2::.@.@.@#A#ABBB666666r;   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   ry   rg   s       r9   test_label07r}      s    ::))))))))))))))))))+ , ,D ]4  FCc2::%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%9$: $: ; ; ; 666666r;   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   rZ   rZ   r   r   r   r   r   r   r   r    r    r   r    ry   rg   s       r9   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 666666r;   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 )Nr   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   rZ   rZ   r   rZ   r0   r+   generate_binary_structurerf   r	   r3   rh   structri   rj   s        r9   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 666666r;   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 )Nr|   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   s        r9   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 666666r;   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 )Nr   r   r   r   r   r$   r   r   r   r   r    r   getattrr0   r+   rf   r	   r3   typer$   rh   ri   rj   expecteds          r9   test_label11r   	  s     D!!zz------------------/
 7<  = = t$$Q&&&&&&&&&&&&&&&&&&( ::h''!#x000Avvvvv# r;   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 )Nr   r   r   r   r   r   outputr   r   r   r   r    r   )r3   r   r$   rh   rj   r   s         r9   test_label11_inplacer     s     D!!zz------------------/
 7<  = = M$t,,,&&&&&&&&&&&&&&&&&&( ::h''!$111Avvvvv# r;   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          r9   test_label12r   4  s      D!!zz---------------	/ 7<	  = =
 t$$Q&&&&&&&&&&&&&&&	(
 ::h''!#x000Avvvvv r;   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          r9   test_label13r   G  s      D!!zz<<<<<<<<<<<<> !&	  ' '
 t$$Q5555555555557 ::h''!#x000Avvvvv r;   zoutput=dtype is numpy-specificc                 0   |                      dg          }t          D ]w}t          | |          }|                     dg|          }t	          j        ||          }t          ||                      |j        |j                             |dk    sJ xd S )Nru   r   r   r   )	re   r   r   rm   r+   rf   r	   shaper$   r3   rh   tr$   r   rj   s         r9   test_label_output_typedr   Y  s    77A3<<D  A1#U++M$v...!&"$''&,fl'"K"K	M 	M 	MAvvvvv r;   c                    |                      dg          }t          D ]g}t          | |          }t          j        ||          \  }}t          ||                      |j        |j                             |j        |k    sJ hd S )Nru   r   r   )re   r   r   r+   rf   r	   r   r$   r   s         r9   test_label_output_dtyper   e  s    77A3<<D ! !AM$u555	!&"$''&,fl'"K"K	M 	M 	M|q     ! !r;   c                 .   t          |           rt          j        d           |                     dg          }t          D ]S}t          | |          }|                     dg|          }t          t          t          ft          j        ||           Td S )NzJAX does not raiseru   
   r   r   )r   pytestxfailre   r   r   rm   assert_raises
ValueError	TypeErrorr+   rf   )r3   rh   r   r$   r   s        r9   test_label_output_wrong_sizer   p  s    bzz +)***77A3<<D : :A2$e,,z9-mT&	: 	: 	: 	: 	:	: :r;   c           
      .   t          j        t          j                            t          j                            t                    dd                    }t          j        t          j                            t          j                            t                    dd                    }t          j        t          j                            t          j                            t                    dd                    }|                    d          }|                    d          }|                    d          }|                     |          }|                     |          }|                     |          }d}t          |j
        d                   D ]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 )Nrh   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txt)   r   )r   rZ   rZ   r   Fcheck_dtyper   )r(   loadtxtospathjoindirname__file__r*   r0   ranger   r   r+   rf   )	r3   rh   strelsresultsrr[   djss	            r9   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	 r;   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)r^   r   r+   r   r0   rf   find_objects)
imgthreshsizemaskrankr   laco_r3   s
            r9   SEztest_ticket_742.<locals>.SE  sj    V|4:24>>F##t%' 'B $$r;   r[   )rZ     r   )r   r    )r(   r$   intprandomrandprodr*   r0   )r3   r   r   as   `   r9   test_ticket_742r     s    % % % % % % 
xBHSMM))INN275>>**22599JJqMM
1 *)r;   c                 
   t          j        d          }d|ddddf<   d|ddddf<   d|d<   d|d<   d|d<   |                     |          }t          j        ||                     d	                    d         dk    sJ dS )
z/Github issue #3025 - improper merging of labels)<   i@  r   N  i  )$   r   )#   i  )r   i  )rZ   rZ   )r(   rm   r0   r+   rf   re   )r3   r   s     r9   test_gh_issue_3025r     s    
AAaaa#gJAaaagJAgJAgJAgJ


1A=BGGFOO,,Q/1444444r;   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   rC   )
r(   r   r   r0   r+   rf   r$   int32r/   r   )r2   r3   
test_arrayrf   no_featuress        r9   test_label_default_dtypez(TestFindObjects.test_label_default_dtype  st    Y^^B++
ZZ
++
$]:+;<<{{rx22222U#####r;   c                 x    |                     g |j                  }t          j        |          }|dgk    sJ d S )Nr   rR   )re   r/   r+   r   r2   r3   rh   ri   s       r9   test_find_objects01z#TestFindObjects.test_find_objects01  s<    wwrw**"4((rd{{{{{{r;   c                 v    |                     g |j                  }t          j        |          }|g k    sJ d S )Nr   rm   r/   r+   r   r   s       r9   test_find_objects02z#TestFindObjects.test_find_objects02  s:    xx"(x++"4((byyyyyyr;   c                     |                     dg|j                  }t          j        |          }|t	          ddd           fgk    sJ d S )Nr   r   r   re   r/   r+   r   slicer   s       r9   test_find_objects03z#TestFindObjects.test_find_objects03  T    wws"(w++"4((aD))+,,,,,,,r;   c                 x    |                     dg|j                  }t          j        |          }|g k    sJ d S )Nr   r   r   r   s       r9   test_find_objects04z#TestFindObjects.test_find_objects04  s<    xx28x,,"4((byyyyyyr;   c                     |                     dg|j                  }t          j        |          }|t	          ddd           fgk    sJ d S )Nru   r   r   r   r   s       r9   test_find_objects05z#TestFindObjects.test_find_objects05  r   r;   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 )Nrx   r   r   r   r    ru   r   r0   r+   r   r   r   s       r9   test_find_objects06z#TestFindObjects.test_find_objects06  s    zz,,,--"4((aD))+aD))+aD))+- - - - - - -r;   c           	          |                     g dg dg dg dg dg dg          }t          j        |          }|g k    sJ d S )Nr|   )r0   r+   r   r   s       r9   test_find_objects07z#TestFindObjects.test_find_objects07  ss    zz------------------/ 0 0 "4((byyyyyyr;   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 )Nr   r   r   r   r   r   r   rZ   r   ru   r   r   r   s       r9   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r;   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 )Nr   r   r   r|   r   r   r   rZ   r   ru   r   r   r   s       r9   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r;   N)rN   rO   rP   r   r   r   r   r   r   r   r   r   r   rR   r;   r9   r   r     s        $ $ $    - - -  - - -- - -  C C CC C C C Cr;   r   c           	         |                      g dg dg dg dg dg dg          }t          j        |d          }g d}t          |                                          |k    sJ t          |           rd	d
ini }i }|D ]} | j        ||k    fi |||<   t          j        |d          }|                                |                                k    sJ |                                D ]b}t          ||                   t          ||                   k    sJ t          ||         ||                   D ]\  }}	t          ||	           cdS )z Test dictionary keys and entriesr   r   r   r|   r   r   )ignore_value)r   r   r    as_tupleTN)
r0   r+   value_indiceslistkeysr   nonzeror^   zipr   )
r3   rh   vi	true_keysnnz_kwdtruevikkeyvtrue_vs
             r9   test_value_indices01r    s   ::))))))))))))))))))+ , ,D 
	t!	4	4	4B		I		??i''''$,RLL8z4  bGF 5 5BJtqy44G44q				t!	4	4	4B7799%%%%wwyy ' '2c7||s6#;//////RWfSk22 	' 	'IAvAv&&&&	'' 'r;   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)ru   r    r   z(Parameter 'arr' must be an integer array)matchN)rm   float32r   r   r+   r   )r3   rh   msgs      r9   test_value_indices02r  &  s    88F"*8--D
4C	z	-	-	- $ $d###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   AAAc                 ~   dD ]8}|                      ddgz  ddgz  z   ddgz  z   | j                  }|                     ||          }t          |           rddini }t	          |          j        } ||          }t          j        |          }t          |	                                          t          |          k    sJ d	 |D             D ]h} | j
        ||k    fi |}t          ||                   t          |          k    sJ t          ||         |          D ]\  }	}
t          |	|
           i:d
S )z2Test different input array shapes, from 1-D to 4-D))r   )   r   )rZ   rZ   r    )rZ   rZ   r   r      r   r   rZ   r   r   Tc                 ,    g | ]}t          |          S rR   )int).0r4   s     r9   
<listcomp>z(test_value_indices03.<locals>.<listcomp>:  s    +++Q#a&&+++r;   N)r0   r   r*   r   r   unique_valuesr+   r   r  r  r  r^   r  r   )r3   r   r   r  r  trueKeysr  r	  trueNdxviktrue_viks              r9   test_value_indices03r  .  sg   : / /JJA3r1#vb!f,RXJ>>JJq%  (0<:t$$"'**8 =##"1%%BGGII$x..0000++(+++ 	/ 	/A bja33733Gr!u::W----!$RUG!4!4 / /XX..../	// /r;   c                     t           D ]E}t          | |          }|                     g |          }t          j        |          }|dk    sJ Fd S )Nr   r   )r   r   r0   r+   sumr3   r   r$   inputr   s        r9   
test_sum01r$  A  s]      D!!

2U
++U##{{{{{	 r;   c                     t           D ]G}t          | |          }|                     ddg|          }t          j        |          }|dk    sJ Hd S )Nr   r    r   )r   r   rm   r+   r!  r"  s        r9   
test_sum02r&  I  sa      D!!!Qu--U##{{{{{	 r;   c                     t           D ]b}t          | |          }|                     g |          }t          j        |          }t          ||                     d          d           cd S )Nr   r%   Fcheck_0d)r   r   re   r+   r!  r
   r0   r"  s        r9   
test_sum03r*  Q  st     E ED!!%((U##FBJJsOOeDDDDD	E Er;   c                     t           D ]d}t          | |          }|                     ddg|          }t          j        |          }t          ||                     d          d           ed S )Nr   r   r         @Fr(  r   r   r0   r+   r!  r
   r"  s        r9   
test_sum04r.  Y  sx     E ED!!

Aq6
//U##FBJJsOOeDDDDD	E Er;   c                     t           D ]h}t          | |          }|                     ddgddgg|          }t          j        |          }t          ||                     d          d           id S )	Nr   r   rZ   r    r   g      $@Fr(  r-  r"  s        r9   
test_sum05r0  a  s     F FD!!

QFQF+5
99U##FBJJt$4$4uEEEEE	F Fr;   c                    t          j        g t                    }|                     |          }t          D ]G}t	          | |          }|                     g |          }t          j        ||          }|dk    sJ Hd S )Nr   r"   r   r(   r0   boolr   r   r+   r!  r3   r"   r   r$   r#  r   s         r9   
test_sum06r6  i  s    Z$'''FZZF  D!!

2U
++U6222{{{{{	 r;   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   r2  )	r(   re   r4  r0   r   r   rm   r+   r!  r5  s         r9   
test_sum07r8  s  s    WaV4(((FZZF  D!!!Qu--U6222{{{{{	 r;   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   r2  r3  r5  s         r9   
test_sum08r:  }  s    ZAd+++FZZF  D!!

Aq6
//U6222{{{{{	 r;   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   rZ   r    r2        @Fr(  )r(   r0   r4  r   r   r+   r!  r
   r5  s         r9   
test_sum09r=    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r;   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   rZ   r    r2         @Fr(  )r(   r0   r4  r+   r!  r
   r3   r"   r#  r   s       r9   
test_sum10rB    s    ZAd+++FJAA't444EZZFJJuE[v...F

3%@@@@@@r;   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   rZ   r    r!         @Fr(  )r0   int8r   r   r+   r!  r
   r5  s         r9   
test_sum11rF    s    ZZAbgZ..F E ED!!

QFQF+5
99U6#$& & &FBJJsOOeDDDDDE Er;   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   rZ   r       r   r!   )r<  rK   g      @)r0   rE  r   r   r+   r!  r	   r5  s         r9   
test_sum12rK    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r;   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 rH  )	r0   rE  r   r   r+   r!  
sum_labelsallr	   )r3   r"   r   r$   r#  
output_sumoutput_labelss          r9   test_sum_labelsrQ    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r;   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 r?  )r(   r0   r4  r   r   r+   meanr
   r5  s         r9   test_mean01rT    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r;   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   rZ   r    r2  r%   Fr(  )r(   r0   r4  r+   rS  r
   rA  s       r9   test_mean02rW    s    ZAd+++FJAA't444EZZFJJuE\%///F

3%@@@@@@r;   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   rZ   r    r   r!   r,  Fr(  )r0   r   r   r+   rS  r
   r5  s         r9   test_mean03rY    s    ZZAF E ED!!

QFQF+5
99eF$%' ' 'FBJJsOOeDDDDDE Er;   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rN  rZ   rI  r!   r   r<        @)	r0   rE  r(   errstater   r   r+   rS  isnanr5  s         r9   test_mean04r`    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 rV  )r(   r0   r4  r   r   r+   minimumr
   r5  s         r9   test_minimum01rc        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r;   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    r2  r%   Fr(  )r(   r0   r4  r+   rb  r
   rA  s       r9   test_minimum02rg    s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r;   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   rZ   r    r   r!   r@  Fr(  )r0   r   r   r+   rb  r
   r5  s         r9   test_minimum03ri    s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er;   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   rZ   r    r   r   rZ   rJ  r!   )r@  r<  rK   )r0   r   r   r+   rb  r	   r5  s         r9   test_minimum04rl        ZZ!Q!Q())F G GD!!

QFQF+5
99v')zz)))'<'<> > >!&"**___*E*EFFFFG Gr;   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   rZ   r    r2  r,  Fr(  )r(   r0   r4  r   r   r+   maximumr
   r5  s         r9   test_maximum01rp    rd  r;   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 rf  )r(   r0   r4  r+   ro  r
   rA  s       r9   test_maximum02rr    s    ZAd+++FJAA't444EZZFJJuE_U6222F

3%@@@@@@r;   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   rZ   r    r   r!   r<  Fr(  )r0   r   r   r+   ro  r
   r5  s         r9   test_maximum03rt  $  s    ZZAF E ED!!

QFQF+5
99v'(* * *FBJJsOOeDDDDDE Er;   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   rZ   r    r   rk  r!   )r,  r<  rK   )r0   r   r   r+   ro  r	   r5  s         r9   test_maximum04rv  .  rm  r;   c                 h    |                      g d          }t          j        |          dk    sJ d S )N)r   r   )r0   r+   ro  )r3   r4   s     r9   test_maximum05rz  8  s8    


<<<  A?1######r;   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   ru   rZ   r   r    r   r   r   r   r>   rZ   r   r   r   r   r   r   r   r   r   r   rZ   rZ   r   r   )r   r   rZ   r!   )r]  r<  rD  )r0   r+   medianr	   r3   r   r"   r   s       r9   test_median01r  >  s    


LLL LL LL LL" 	# 	#A ZZ%%%' ( (F ^AfBJJyyy4I4IJJJFfbjj&A&ABBBBBr;   c                     |                      g dg dg dg dg          }t          j        |          }t          ||                      d          d           d S )Nr|  r}  r~  r  r%   Fr(  r0   r+   r  r
   r3   r   r   s      r9   test_median02r  K  sk    


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

3%@@@@@@r;   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 )Nr|  r}  r~  r  r  r  r  r2  r,  Fr(  r  r  s       r9   test_median03r  T  s    


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

3%@@@@@@r;   c                 .   t          j        ddgt                    }|                     |          }t          j        ||                     d          |                     dg                    }t          ||                     dg                     d S )Nr   r   r   r!   r%   )r(   r0   r4  r+   r  re   r	   r  s      r9   test_median_gh12836_boolr  a  sy    

Aq6&&&A


1A^Abggdmm2::qc??KKKFfbjj#&7&788888r;   c                    |                      ddg| j                  }t          j        ||                     d          |                      dg                    }t          ||                      dg                     d S )NA   F   r   r  r   r!   g     P@)r0   rE  r+   r  re   r	   r  s      r9   test_median_no_int_overflowr  i  sm    


B827
++A^Abggdmm2::qc??KKKFfbjj$&8&899999r;   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 Nr[  r\  r   zMean of empty slice)r(   r^  r   r   r0   r   filterRuntimeWarningr+   variancer_  r3   r   r$   r#  supr   s         r9   test_variance01r  p  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   rK   Fr(  r   r   r0   r+   r  r
   r"  s        r9   test_variance02r  {  sw     E ED!!

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

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

4 0 05AAAAAAr;   c                    |                      g d          }t          D ]f}t          | |          }|                      g d|          }t          j        ||d          }t          ||                      d          d           gd S N)r   r   rZ   )r   rZ   rJ  r   r   r%   Fr(  )r0   r   r   r+   r  r
   r5  s         r9   test_variance05r    s    ZZ			""F E ED!!

999E
22!%33FBJJsOOeDDDDDE Er;   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   rZ   rZ   r    r[  r\  )r   rZ   rJ  r   rJ  r   )r   rZ   r    )r%   r%   rK   )r0   r(   r^  r   r   r+   r  r	   r5  s         r9   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(   r^  r   r   r0   r   r  r  r+   standard_deviationr_  r  s         r9   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   r0   r+   r  r
   r"  s        r9   test_standard_deviation02r    sw     E ED!!

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

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

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

999E
22+E61==FBJJsOOeDDDDD	E Er;   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  )r0   r(   r^  r   r   r+   r  r	   r5  s         r9   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   r[  r\  uint8z8value cannot be converted to type uint8 without overflowgl `yr   r   )r0   r(   r^  r   r   r   r   r   r+   r  r	   r5  s         r9   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   rZ   r    r2  r   r   )r(   r0   r4  r   r   r+   minimum_positionr5  s         r9   test_minimum_position01r    s    ZAd+++FZZF    D!!

QFQF+5
99)%???	   r;   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S Nru   r    r   ru   rZ   r   r   r   r   ru   r   r   r   r   r   )r   r   r0   r+   r  r"  s        r9   test_minimum_position02r            D!!

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

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

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

LLL(LL(LL*16  8 8 )%*,**aV*<*<> >ayF""""ayF"""""# #r;   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   rZ   r    r2  r   r   )r(   r0   r4  r   r   r+   maximum_positionr5  s         r9   test_maximum_position01r  3  s    ZAd+++FZZF    D!!

QFQF+5
99)%179 9 9   r;   c                     t           D ]N}t          | |          }|                     g dg dg dg|          }t          j        |          }|dk    sJ Od S )Nr  rZ   r   rJ  r   r  r   r  )r   r   r0   r+   r  r"  s        r9   test_maximum_position02r  >  r  r;   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(   r0   r4  r+   r  r  s      r9   test_maximum_position03r  H  r  r;   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   r0   r   r   r+   r  r5  s         r9   test_maximum_position04r  Q  r  r;   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  r5  s         r9   test_maximum_position05r  \  r  r;   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  r5  s         r9   test_maximum_position06r  g  r  r;   c           	      |   t          |           rt          j        d           |                     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 )Nzoutput[1] is wrong on pytorch)r%   r]  rK         @r  r  r  r   r%   r  r   r  r   )r   rZ   )r   r   r   r0   r   r   r+   r  r5  s         r9   test_maximum_position07r  t  s    || 64555ZZ,,,--F # #D!!

LLL(LL(LL*16  8 8 )%*,**c3Z*@*@B BayF""""ayF"""""# #r;   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   rZ   r    r2  )r(   r0   r4  r   r   r+   extremarb  ro  r  r  
r3   r"   r   r$   r#  output1output2output3output4output5s
             r9   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>>>>>>
? 
?r;   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   rZ   r    r   r!   )	r0   r   r   r+   r  rb  ro  r  r  r  s
             r9   test_extrema02r    s   ZZAF ? ?D!!

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

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

QFQF+5
99'..!!!!!	" "r;   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         r9   test_center_of_mass03r    r  r;   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         r9   test_center_of_mass04r    r  r;   c                     d}t           D ]K}t          | |          }|                     ddgddgg|          }t          j        |          }||k    sJ Ld S )NrC   rC   r   r   r  r	  s         r9   test_center_of_mass05r    r  r;   c                     d}t          j        ddgddggt                    }|                     |          }t          j        |          }||k    sJ d S )Nr  r   r   rZ   r   )r(   r0   r4  r+   r  r3   r   r#  r   s       r9   test_center_of_mass06r    s`    HJAA't444EJJuE#E**FXr;   c                     |                      ddg          }d}t          j         ddgddggt                    }|                      |          }t          j        ||          }||k    sJ d S )Nr   r   rC   rK   r   rZ   r   r0   r(   r4  r+   r  r3   r"   r   r#  r   s        r9   test_center_of_mass07r    sw    ZZAFHJAA't444EJJuE#E622FXr;   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   rC   r%   ru   rZ   r   r  r  s        r9   test_center_of_mass08r     sy    ZZAFHJAA't444EJJuE#E6155FXr;   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   )r0   float64r(   r4  r+   r  r   r  s        r9   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(<(<=====r;   c                     |                      d          }|                     d          }t          j        |ddd          }t	          ||           d S )Nr   r   )re   aranger+   	histogramr	   r  s       r9   test_histogram01r'  *  sL    wwr{{HIIbMMEuaR00Ffh/////r;   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   rZ   r    rZ   rZ   rZ   rZ   r   r    ru   r   r0   r+   r&  r	   r  s        r9   test_histogram02r*  1  sw    ZZ00011Fzz///**HJJ///00EuaAvq99Ffh/////r;   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   rZ   r   )r   r   rZ   r    rZ   ru   rZ   rZ   r   r    ru   r  r   r)  )r3   r"   	expected1	expected2r#  r   s         r9   test_histogram03r.  9  s    ZZ00011F

???++I

???++IJJ///00EuaAvv>>FfQi333fQi33333r;   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)ru   r   r   r   r   )rJ  r>   r   r   r   )r   r   r   rZ   ru   )r   r   r   r   r   )r   r   r   r   r   r   r   r!   rV   r<  r   r]  r%   ru   rZ   Fr   r>   )r0   r+   rS  r   r"  r  r  r	   sqrtr  rb  ro  )	r3   r   lblrS  varstdmedminmaxs	            r9   test_stat_funcs_2dr7  F  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++??????r;   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   r0   r  rE  r+   watershed_iftr	   r2   r3   rh   markersrC  ri   r   s          r9   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(';';<<<<<r;   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 )
Nr<  r=  r>  r   r?  r@  rD  )r   r   r   r   r   r   r   rE  rF  r2   r3   rh   rI  ri   r   s         r9   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(';';<<<<<r;   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 )
Nr<  r=  r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   rD  )r   r   r   r   rZ   r   r   r   r   r   rZ   rZ   rZ   r   rF  rL  s         r9   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(';';<<<<<r;   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 )Nr<  r=  rO  r   rP  rQ  rA  rB  rD  rR  rF  rH  s          r9   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(';';<<<<<r;   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 )Nr<  r=  rO  r   )r   r   rZ   r   r   r   r   rQ  rA  rB  rD  )r   rZ   rZ   r   r   r   r   rF  rH  s          r9   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(';';<<<<<r;   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 )Nr>  r=  r<  r   r?  r@  rA  rB  rE  rD  rF  rH  s          r9   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(';';<<<<<r;   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   r>  r=  r<  .r?  r@  rA  )rC  r   rE  rD  )r(   rm   r  	transposer0   rE  int16Tr+   rG  r	   )r2   r3   r   rh   rI  ri   rC  r   s           r9   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(';';<<<<<r;   r   r8  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   )r0   r  rE  r+   rG  r	   rL  s         r9   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(';';<<<<<r;   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   )r0   iinfor  r6  rE  r+   rG  r   rL  s         r9   test_watershed_ift09z%TestWatershedIft.test_watershed_ift095  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Er;   N)rN   rO   rP   rJ  rM  rS  rU  rW  rY  r   r^  ra  rd  rR   r;   r9   r:  r:  ]  s        = = =>= = =8= = =2= = =<= = =:= = =2 d+KLLL= = ML=@ f%?@@@	= 	= A@	= f%?AAA	F 	F BA	F 	F 	Fr;   r:  )r   dtc                    t           j                            d          }d}|                    d|d                              |           }t          j        |          }t          |                                          |k    sJ d S )N{   rJ  r   )r   r  )lowhighr   r   )	r(   r   default_rngintegersastyper+   r   r^   r  )re  r3   rngmax_valimageval_idxs         r9   test_gh_19423rq  B  s}     )


$
$CGLLQW8L<<CC"CMME#E**Gw||~~'))))))r;   )r   os.pathnumpyr(   numpy.testingr   scipy._lib._array_apir   r   r   r   r   r	   r
   r   r   r   scipy.ndimager+    r   scipy.conftestr   markr   usefixtures
pytestmarkname__version__r.   r   rT   rk   rn   thread_unsaferq   rs   rv   rz   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r$  r&  r*  r.  r0  r6  r8  r:  r=  rB  rF  rK  rQ  rT  rW  rY  r`  rc  rg  ri  rl  rp  rr  rt  rv  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r   r#  r'  r*  r.  r7  r:  parametrizeintcuintcrq  rR   r;   r9   <module>r     s	   				      + + + + + +                   * * * * * *             / / / / / /;/ "FK$;$;<N$O$O&+9NPPPR
 W_=#)=  $'IJJJO= O= O= O= O= O= O= KJO=d#/ #/ #/ #/ #/ #/ #/ #/L               $  "  &    * $'IJJJ  KJ*  &  $ $'GHHH  IH $'GHHH! ! IH!
: 
: 
:  , &M    $	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' ' '4$ $ $/ / /&    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  * * *r;   