
    e!h                     l   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.                  j0                  Zeej.                  j3                  d       ed	d
dg      gZe j6                  dk(  xr ej8                  dk  Z ed	d       G d d             Z G d d      Zd Z d Z!ej.                  jD                  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.                  j                  dej                  ej                  g      d               Zy)    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                   .    e Zd ZdZd Zd Zd Zd Zd Zy)Test_measurements_statszndimage._measurements._stats() is a utility used by other functions.

        Since internal ndimage/_measurements.py code is NumPy-only,
        so is this this test class.
    c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        rdt         j                  ini }t        |t        j                  ddgfi |       t        |t        j                  d	d
g              y )Nr   r         r   r   r   r   r   r   )   )r   r   labelsindexdtyper         ?       @
nparrayreshapendimage_measurements_statsIS_WINDOWS_AND_NP1int64r   asarray	selfxpxr"   r#   shpcountssums	dtype_args	            m/var/www/html/diagnosisapp-backend/venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_measurements.pytest_azTest_measurements_stats.test_a'   s    A! 	:C##C(AXXf%--c2F"0077& 8 /LFD 0B"((+rIFBJJ1v$C$CDD"**c3Z"89	:    c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||      \  }}t        rdt         j                  ini }t        |t        j                  ddgfi |       t        |t        j                  d	d
g              y )Nr   r   r   	   r>   r   r>   r   r!   r$   r   r%   r&   r'   r1   s	            r9   test_bzTest_measurements_stats.test_b5   s     A! 	:C##C(AXXf%--c2F"0077& 8 /LFD 0B"((+rIFBJJ1v$C$CDD"**c3Z"89	:r;   c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   r   r   r   r   Tr"   r#   centeredr$   r   r%   r&         ?r'   
r2   r3   r4   r"   r#   r5   r6   r7   centersr8   s
             r9   test_a_centeredz'Test_measurements_stats.test_a_centeredE       A! 		=C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD' 0B"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;<		=r;   c           	         g d}g d}ddg}dD ]  }t        j                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   r=   r   r>   r   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                  |      j                  |      }t        j                  |      j                  |      }t        j                  j                  |||d      \  }}}t        rdt         j                  ini }	t        |t        j                  d	d	gfi |	       t        |t        j                  d
dg             t        |t        j                  ddg              y )Nr   )        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    %c
! 		=C##C(AXXf%--c2F$+$9$9$@$@& %A %>!FD' 0B"((+rIFBJJ1v$C$CDD"**c3Z"89GRZZc
%;<		=r;   N)	__name__
__module____qualname____doc__r:   r?   rF   rI   rM    r;   r9   r   r       s     
:: ===r;   r   c                       e Zd ZdZd Zy)Test_measurements_selectzEndimage._measurements._select() is a utility used by other functions.c                    g d}g dddgfg dddgfg ddd	gfg}|D ]  \  }}t         j                  j                  |||
      }t        |      dk(  sJ t         j                  j                  |||d      }t        |      dk(  sJ t	        |d   ddg       t         j                  j                  |||d      }t        |      dk(  sJ t	        |d   ddg       t         j                  j                  |||dd      }t        |      dk(  sJ t	        |d   ddg       t	        |d   ddg       |d   j
                  j                  dk(  sJ t         j                  j                  |||dd      }t        |      dk(  sJ t	        |d   ddg       t	        |d   ddg       |d   j
                  j                  dk(  rJ  y )N)r   r   r   r   r   r   r   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   s   Aq6"Aq6"!C:.

 # 	/MFE**22& 3 /Fv;!###**22& 3 >Fv;!###F1I1v.**22& 3 >Fv;!###F1I1v.**22&#' 3 )F v;!###F1I1v.F1I1v.!9??''3...**22&#' 3 )F v;!###F1I1v.F1I1v.!9??''3...3	/r;   N)rN   rO   rP   rQ   rb   rR   r;   r9   rT   rT   s   s
    O /r;   rT   c                 r    | j                  g       }t        j                  |      \  }}|dk(  sJ |dk(  sJ y Nr   )onesr+   labelr3   dataoutns       r9   test_label01rk      s7    772;D]]4 FC!8O86M6r;   c                 r    | j                  g       }t        j                  |      \  }}|dk(  sJ |dk(  sJ y )Nr   )zerosr+   rf   rg   s       r9   test_label02rn      s7    88B<D]]4 FC!8O86M6r;   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  dg             |dk(  sJ y rd   re   r+   rf   r	   r0   rg   s       r9   test_label03rq      sB    77A3<D]]4 FCc2::qc?36M6r;   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  dg             |dk(  sJ y )Nr   r   )rm   r+   rf   r	   r0   rg   s       r9   test_label04rs      sB    88QC=D]]4 FCc2::qc?36M6r;   c                     | j                  dg      }t        j                  |      \  }}t        || j	                  g d             |dk(  sJ y )N   )r   r   r   r   r   r   rp   rg   s       r9   test_label05rv      sA    77A3<D]]4 FCc2::o#>?6M6r;   c                     | j                  g d      }t        j                  |      \  }}t        || j                  g d             |dk(  sJ y )N)r   r   r   r   r   r   r   r   r   r   r   rZ   rZ   r0   r+   rf   r	   rg   s       r9   test_label06rz      sB    ::()D]]4 FCc2::.@#AB6M6r;   c                     | j                  g dg dg dg dg dg dg      }t        j                  |      \  }}t        || j                  g dg dg dg dg dg dg             |dk(  sJ y )Nr   r   r   r   r   r   r   ry   rg   s       r9   test_label07r}      st    ::))))))+ ,D ]]4 FCc2::%7%7%7%7%7%7%9$: ; 6M6r;   c                     | j                  g dg dg dg dg dg dg      }t        j                  |      \  }}t        || j                  g dg dg dg dg dg d	g             |d
k(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rZ   rZ   r   r   r   r   r   r   r   r    r    r   r    ry   rg   s       r9   test_label08r      sw    ::))))))+ ,D ]]4 FCc2::/A/A/A/A/A/A/C $D E 6M6r;   c                 2   | j                  g dg dg dg dg dg dg      }t        j                  dd      }| j                  |      }t        j                  ||      \  }}t	        || j                  g dg dg dg d	g d	g d
g             |dk(  sJ y )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!4FZZF]]4(FCc2::/A/A/A/A/A/A/C $D E 6M6r;   c           
         | j                  g dg dg dg dg      }t        j                  dd      }| j                  |      }t        j                  ||      \  }}t	        || j                  g dg dg dg dg             |dk(  sJ y )Nr|   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   s        r9   test_label10r      s    ::))))+ ,D ..q!4FZZF]]4(FCc2::/A/A/A/A/C $D E 6M6r;   c           
         t         D ]  }t        | |      }| j                  g dg dg dg dg dg dg|      }t        j                  |      \  }}g dg dg dg d	g d	g d
g}| j                  |      }t        ||       |dk(  rJ  y )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Avv#r;   z inplace output is numpy-specificc           
         t         D ]  }t        | |      }| j                  g dg dg dg dg dg dg|      }t        j                  ||      }g dg dg d	g d
g d
g dg}| j                  |      }t        ||       |dk(  rJ  y )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<  = MM$t,&&&&&&( ::h'!$1Avv#r;   c           	         t         D ]}  }t        | |      }| j                  g dg dg dg dg dg|      }t        j                  |      \  }}g dg dg dg dg dg}| j                  |      }t        ||       |dk(  r}J  y )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   s          r9   test_label12r   4  s     D!zz-----	/ 7<	  =
 t$Q&&&&&	(
 ::h'!#x0Avvr;   c                    t         D ]w  }t        | |      }| j                  g dg dg dg dg|      }t        j                  |      \  }}g dg dg dg dg}| j                  |      }t        ||       |dk(  rwJ  y )N)r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s          r9   test_label13r   G  s     D!zz<<<<> !&	  '
 t$Q55557 ::h'!#x0Avvr;   zoutput=dtype is numpy-specificc                    | j                  dg      }t        D ]q  }t        | |      }| j                  dg|      }t	        j
                  ||      }t        || j                  |j                  |j                               |dk(  rqJ  y )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+MM$v.!&"$''&,,fll'"K	MAvvr;   c                    | j                  dg      }t        D ]j  }t        | |      }t        j                  ||      \  }}t        || j                  |j                  |j                               |j                  |k(  rjJ  y )Nru   r   r   )re   r   r   r+   rf   r	   r   r$   r   s         r9   test_label_output_dtyper   e  st    77A3<D !AMM$u5	!&"$''&,,fll'"K	M||q   !r;   c                    t        |       rt        j                  d       | j                  dg      }t        D ]I  }t        | |      }| j                  dg|      }t        t        t        ft        j                  ||       K y )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  sm    bz)*77A3<D :A2$e,z9-mmT&	:	:r;   c           
         t        j                  t        j                  j	                  t        j                  j                  t              dd            }t        j                  t        j                  j	                  t        j                  j                  t              dd            }t        j                  t        j                  j	                  t        j                  j                  t              dd            }|j                  d      }|j                  d      }|j                  d      }| j                  |      }| j                  |      }| j                  |      }d}t        |j                  d         D ]k  }||d d d d f   }t        |j                  d         D ]B  }||d d d d f   }t        t        j                  ||      d   ||d d d d f   d	       |d
z  }D m y )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~   ::bggll277??$-/ 0DZZ
!6+=? @Fjj
!6+>@ AG<<
#D^^J'Fooj)G::dDZZFjj!G	A4::a=! AqMv||A' 	Aq!QwAGMM!Q/2GAq!G4DRWXFA	r;   z2`cupyx.scipy.ndimage` does not have `find_objects`r   c                 >    d fd	}t        j                  t         j                        t        j                  d      k7  r]d}t         j                  j	                  t        j
                  |            j                  |      } j                  |      } ||       y y )Nc                     | |kD  }t        |j                        }t        j                  ||      }	j	                  |      }t        j
                  ||      \  }}t        j                  |      }y )N)r^   r   r+   r   r0   rf   find_objects)
imgthreshsizemaskrankr   laco_r3   s
            r9   SEztest_ticket_742.<locals>.SE  s`    V|4::224>F#t%'B  $r;   r[   )rZ     r   )gffffff?r    )r(   r$   intprandomrandprodr*   r0   )r3   r   r   as   `   r9   test_ticket_742r     sj    % 
xxBHHSM)IINN2775>*2259JJqM
1 *r;   c                     t        j                  d      }d|ddddf<   d|ddddf<   d|d<   d|d<   d|d<   | j                  |      }t        j                  || j                  d	            d   dk(  sJ y)
z/Github issue #3025 - improper merging of labels)<   i@  r   N  i  )$   r   )#   i  )r   i  )rZ   rZ   )r(   rm   r0   r+   rf   re   )r3   r   s     r9   test_gh_issue_3025r     s~    
AAa#gJAagJAgJAgJAgJ


1A==BGGFO,Q/1444r;   z-cupyx.scipy.ndimage does not have find_objectc                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestFindObjectsc                    t         j                  j                  dd      }|j                  |      }t	        j
                  |dkD        \  }}|j                  |j                  |j                  fv sJ t	        j                  |       y )Nr   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  si    YY^^B+
ZZ
+
$]]:+;<{{{rxx2222U#r;   c                 x    |j                  g |j                        }t        j                  |      }|dgk(  sJ y )Nr   rR   )re   r/   r+   r   r2   r3   rh   ri   s       r9   test_find_objects01z#TestFindObjects.test_find_objects01  s6    wwrw*""4(rd{{r;   c                 v    |j                  g |j                        }t        j                  |      }|g k(  sJ y )Nr   rm   r/   r+   r   r   s       r9   test_find_objects02z#TestFindObjects.test_find_objects02  s4    xx"((x+""4(byyr;   c                     |j                  dg|j                        }t        j                  |      }|t	        ddd       fgk(  sJ y )Nr   r   r   re   r/   r+   r   slicer   s       r9   test_find_objects03z#TestFindObjects.test_find_objects03  G    wws"((w+""4(aD)+,,,,r;   c                 x    |j                  dg|j                        }t        j                  |      }|g k(  sJ y )Nr   r   r   r   s       r9   test_find_objects04z#TestFindObjects.test_find_objects04  s6    xx288x,""4(byyr;   c                     |j                  dg|j                        }t        j                  |      }|t	        ddd       fgk(  sJ y )Nru   r   r   r   r   s       r9   test_find_objects05z#TestFindObjects.test_find_objects05  r   r;   c                     |j                  g d      }t        j                  |      }|t        ddd       ft        ddd       ft        ddd       fgk(  sJ y )Nrx   r   r   r   r    ru   r   r0   r+   r   r   r   s       r9   test_find_objects06z#TestFindObjects.test_find_objects06  sd    zz,-""4(aD)+aD)+aD)+- - 	- -r;   c           	          |j                  g dg dg dg dg dg dg      }t        j                  |      }|g k(  sJ y )Nr|   )r0   r+   r   r   s       r9   test_find_objects07z#TestFindObjects.test_find_objects07  sE    zz------/ 0 ""4(byyr;   c           
      J   |j                  g dg dg dg dg dg dg      }t        j                  |      }|t        ddd       t        ddd       ft        ddd       t        d	d
d       ft        dd
d       t        dd	d       ft        d
dd       t        dd
d       fgk(  sJ y )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 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr;   c           
         |j                  g dg dg dg dg dg dg      }t        j                  |      }|t        ddd       t        ddd       ft        ddd       t        d	d
d       fd t        d
dd       t        dd
d       fgk(  sJ y )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 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr;   N)rN   rO   rP   r   r   r   r   r   r   r   r   r   r   rR   r;   r9   r   r     s6    $---CCr;   r   c           	      J   | j                  g dg dg dg dg dg dg      }t        j                  |d      }g d}t        |j	                               |k(  sJ t        |       rd	d
ini }i }|D ]  } | j                  ||k(  fi |||<    t        j                  |d      }|j	                         |j	                         k(  sJ |j	                         D ]G  }t        ||         t        ||         k(  sJ t        ||   ||         D ]  \  }}	t        ||	        I y)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!	4BI	?i'''$,RLz4 bGF 5BJJtqy4G4q	5 
		t!	4B779%%%wwy '2c7|s6#;////RWfSk2 	'IAvAv&	''r;   c                     | j                  d| j                        }d}t        t        |      5  t	        j
                  |       ddd       y# 1 sw Y   yxY w)zTest input checking)ru   r    r   z(Parameter 'arr' must be an integer array)matchN)rm   float32r   r   r+   r   )r3   rh   msgs      r9   test_value_indices02r  &  sJ    88F"**8-D
4C	z	- $d#$ $ $s   AAc                 \   dD ]!  }| j                  ddgz  ddgz  z   ddgz  z   | j                        }| j                  ||      }t        |       rddini }t	        |      j
                  } ||      }t        j                  |      }t        |j                               t        |      k(  sJ |D cg c]  }t        |       c}D ]W  } | j                  ||k(  fi |}	t        ||         t        |	      k(  sJ t        ||   |	      D ]  \  }
}t        |
|        Y $ y	c c}w )
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   TN)r0   r   r*   r   r   unique_valuesr+   r   r   r  intr  r^   r  r   )r3   r   r   r  r  trueKeysr  r4   r  trueNdxviktrue_viks               r9   test_value_indices03r  .  s(   : /JJA3r1#vb!f,RXXJ>JJq% (0:t$"'*88 #""1%BGGI$x.000"*+Q#a&+ 	/A bjja373Gr!u:W---!$RUG!4 /XX./	// ,s   6D)c                     t         D ]=  }t        | |      }| j                  g |      }t        j                  |      }|dk(  r=J  y )Nr   r   )r   r   r0   r+   sumr3   r   r$   inputr   s        r9   
test_sum01r   A  sI     D!

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

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

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

2U
+U62{{	r;   c                     t        j                  ddgt              }| j                  |      }t        D ]A  }t        | |      }| j                  ddg|      }t        j                  ||      }|dk(  rAJ  y )Nr   r    r   r.  )	r(   re   r0  r0   r   r   rm   r+   r  r1  s         r9   
test_sum07r4  s  sq    WWaV4(FZZF D!!Qu-U62{{	r;   c                     t        j                  ddgt              }| j                  |      }t        D ]A  }t	        | |      }| j                  ddg|      }t        j                  ||      }|dk(  rAJ  y )Nr   r   r   r   r.  r/  r1  s         r9   
test_sum08r6  }  sq    ZZAd+FZZF D!

Aq6
/U62{{	r;   c                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y )Nr   r   r   r   rZ   r    r.        @Fr$  )r(   r0   r0  r   r   r+   r  r
   r1  s         r9   
test_sum09r9    s    ZZAd+FZZF ED!

QFQF+5
9U62FBJJsOeD	Er;   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	
       y Nr   r   r   r   rZ   r    r.         @Fr$  )r(   r0   r0  r+   r  r
   r3   r"   r  r   s       r9   
test_sum10r>    ss    ZZAd+FJJAA't4EZZFJJuE[[v.F

3%@r;   c                    | j                  ddg| j                        }t        D ]\  }t        | |      }| j                  ddgddgg|      }t	        j
                  ||d      }t        || j                  d      d	       ^ y )
Nr   r   r   rZ   r    r!         @Fr$  )r0   int8r   r   r+   r  r
   r1  s         r9   
test_sum11rB    s    ZZAbggZ.F ED!

QFQF+5
9U6#$&FBJJsOeDEr;   c           	      6   | j                  ddgddgg| j                        }t        D ]m  }t        | |      }| j                  ddgddgg|      }t	        j
                  ||| j                  g d            }t        || j                  g d             o y 	Nr   r   r    r   rZ   r       r   r!   )r8  rK   g      @)r0   rA  r   r   r+   r  r	   r1  s         r9   
test_sum12rG    s    ZZ!Q!Q(Z8F GD!

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

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

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

QFQF+5
9eF3FBJJsOeD	Er;   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	
       y Nr   r   r   r   rZ   r    r.  r%   Fr$  )r(   r0   r0  r+   rO  r
   r=  s       r9   test_mean02rS    ss    ZZAd+FJJAA't4EZZFJJuE\\%/F

3%@r;   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr   r   rZ   r    r   r!   r(  Fr$  )r0   r   r   r+   rO  r
   r1  s         r9   test_mean03rU    sy    ZZAF ED!

QFQF+5
9eF$%'FBJJsOeDEr;   c           
         | j                  ddgddgg| j                        }t        j                  d      5  t        D ]z  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d      	      }|d
   dk(  sJ |d   dk(  sJ | j                  |d         rzJ  	 d d d        y # 1 sw Y   y xY w)Nr   r   r    r   ignorerJ  rZ   rE  r!   r   r8        @)	r0   rA  r(   errstater   r   r+   rO  isnanr1  s         r9   test_mean04r\    s    ZZ!Q!Q(Z8F		" 
' 		'DB%EJJAA/uJ=E\\%(*

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

QFQF+5
9v6FBJJsOeD	Er;   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	       y 
Nr   r   r   r   r    r.  r%   Fr$  )r(   r0   r0  r+   r^  r
   r=  s       r9   test_minimum02rc    ss    ZZAd+FJJAA't4EZZFJJuE__U62F

3%@r;   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr   r   rZ   r    r   r!   r<  Fr$  )r0   r   r   r+   r^  r
   r1  s         r9   test_minimum03re    sy    ZZAF ED!

QFQF+5
9v'(*FBJJsOeDEr;   c           	         | j                  ddgddgg      }t        D ]m  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d            }t        || j                  g d             o y )	Nr   r   rZ   r    r   r   rZ   rF  r!   )r<  r8  rK   )r0   r   r   r+   r^  r	   r1  s         r9   test_minimum04rh        ZZ!Q!Q()F GD!

QFQF+5
9v')zz)'<>!&"**_*EFGr;   c                 (   t        j                  ddgt              }| j                  |      }t        D ][  }t	        | |      }| j                  ddgddgg|      }t        j                  ||      }t        || j                  d      d	
       ] y )Nr   r   r   r   rZ   r    r.  r(  Fr$  )r(   r0   r0  r   r   r+   maximumr
   r1  s         r9   test_maximum01rl    r`  r;   c                 ,   t        j                  ddgt              }t        j                  ddgddggt              }| j                  |      }| j                  |      }t        j                  ||      }t        || j                  d      d	       y rb  )r(   r0   r0  r+   rk  r
   r=  s       r9   test_maximum02rn    ss    ZZAd+FJJAA't4EZZFJJuE__U62F

3%@r;   c                     | j                  ddg      }t        D ]\  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        || j                  d      d	       ^ y )
Nr   r   rZ   r    r   r!   r8  Fr$  )r0   r   r   r+   rk  r
   r1  s         r9   test_maximum03rp  $  sy    ZZAF ED!

QFQF+5
9v'(*FBJJsOeDEr;   c           	         | j                  ddgddgg      }t        D ]m  }t        | |      }| j                  ddgddgg|      }t        j                  ||| j                  g d            }t        || j                  g d             o y )	Nr   r   rZ   r    r   rg  r!   )r(  r8  rK   )r0   r   r   r+   rk  r	   r1  s         r9   test_maximum04rr  .  ri  r;   c                 ^    | j                  g d      }t        j                  |      dk(  sJ y )N)r   r   )r0   r+   rk  )r3   r4   s     r9   test_maximum05rv  8  s'    


< A??1###r;   c                    | j                  g dg dg dg dg      }| j                  g dg dg dg dg      }t        j                  ||| j                  g d      	      }t        || j                  g d
             y )Nr   r   r   r   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!   )rY  r8  r@  )r0   r+   medianr	   r3   r   r"   r   s       r9   test_median01r  >  sp    


L   " 	#A ZZ%%%' (F ^^AfBJJy4IJFfbjj&ABr;   c                     | j                  g dg dg dg dg      }t        j                  |      }t        || j                  d      d       y )Nrx  ry  rz  r{  r%   Fr$  r0   r+   r  r
   r3   r   r   s      r9   test_median02r  K  sD    


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

3%@r;   c                     | j                  g dg dg dg dg      }| j                  g dg dg dg dg      }t        j                  ||      }t        || j                  d	      d
       y )Nrx  ry  rz  r{  r|  r}  r~  r.  r(  Fr$  r  r  s       r9   test_median03r  T  sf    


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

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


Aq6&A


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


B8277
+A^^Abggdm2::qc?KFfbjj$&89r;   c                 j   t        j                  d      5  t        D ]r  }t        | |      }| j	                  g |      }t               5 }|j                  t        d       t        j                  |      }d d d        | j                        rrJ  	 d d d        y # 1 sw Y   (xY w# 1 sw Y   y xY wNrW  rX  r   zMean of empty slice)r(   rZ  r   r   r0   r   filterRuntimeWarningr+   variancer[  r3   r   r$   r  supr   s         r9   test_variance01r  p  s    		" $ 	$DB%EJJrJ/E"$ 1

>+@A ))%01 88F###	$$ $1 1	$ $)   3B)
,B6B)B)B&"B))B2c                     t         D ]T  }t        | |      }| j                  dg|      }t        j                  |      }t        || j                  d      d       V y Nr   r   rK   Fr$  r   r   r0   r+   r  r
   r  s        r9   test_variance02r  {  sW     ED!

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

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

4 05Ar;   c                     | j                  g d      }t        D ]W  }t        | |      }| j                  g d|      }t        j                  ||d      }t        || j                  d      d       Y y N)r   r   rZ   )r   rZ   rF  r   r   r%   Fr$  )r0   r   r   r+   r  r
   r1  s         r9   test_variance05r    sg    ZZ	"F ED!

9E
2!!%3FBJJsOeDEr;   c           
      d   | j                  g d      }t        j                  d      5  t        D ]h  }t	        | |      }| j                  g d|      }t        j                  ||| j                  g d            }t        || j                  g d             j 	 d d d        y # 1 sw Y   y xY wN)r   r   rZ   rZ   r    rW  rX  )r   rZ   rF  r   rF  r   )r   rZ   r    )r%   r%   rK   )r0   r(   rZ  r   r   r+   r  r	   r1  s         r9   test_variance06r    s    ZZ(F		" K 	KDB%EJJ/uJ=E%%eVRZZ	5JKF%fbjj.IJ		KK K K   A2B&&B/c                 j   t        j                  d      5  t        D ]r  }t        | |      }| j	                  g |      }t               5 }|j                  t        d       t        j                  |      }d d d        | j                        rrJ  	 d d d        y # 1 sw Y   (xY w# 1 sw Y   y xY wr  )r(   rZ  r   r   r0   r   r  r  r+   standard_deviationr[  r  s         r9   test_standard_deviation01r    s    		" $ 	$DB%EJJrJ/E"$ ;

>+@A 33E:; 88F###	$$ $; ;	$ $r  c                     t         D ]T  }t        | |      }| j                  dg|      }t        j                  |      }t        || j                  d      d       V y r  r   r   r0   r+   r  r
   r  s        r9   test_standard_deviation02r    sW     ED!

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

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

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

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

QFQF+5
9))%?	 r;   c                     t         D ]F  }t        | |      }| j                  g dg dg dg|      }t        j                  |      }|dk(  rFJ  y 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!

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

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

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

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

QFQF+5
9))%179 r;   c                     t         D ]F  }t        | |      }| j                  g dg dg dg|      }t        j                  |      }|dk(  rFJ  y )Nr  rZ   r   rF  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              }| j                  |      }t        j                  |      }|dk(  sJ y )Nr  r  r  r   r  )r(   r0   r0  r+   r  r  s      r9   test_maximum_position03r  H  r  r;   c                     | j                  g d      }t        D ]G  }t        | |      }| j                  g dg dg dg|      }t        j                  ||      }|dk(  rGJ  y )Nr  r  r  r  r   r   r   r0   r   r   r+   r  r1  s         r9   test_maximum_position04r  Q  r  r;   c                     | j                  g d      }t        D ]H  }t        | |      }| j                  g dg dg dg|      }t        j                  ||d      }|dk(  rHJ  y )Nr  r  r  r  r   r   r  r  r1  s         r9   test_maximum_position05r  \  r  r;   c           	         | j                  g d      }t        D ]f  }t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  ddg            }|d   d	k(  sJ |d   d
k(  rfJ  y )Nr  r  r  r  r   r   r   r   r  r  r  r1  s         r9   test_maximum_position06r  g  r  r;   c           	      H   t        |       rt        j                  d       | j                  g d      }t        D ]f  }t        | |      }| j                  g dg dg dg|      }t        j                  ||| j                  ddg            }|d	   d
k(  sJ |d   dk(  rfJ  y )Nzoutput[1] is wrong on pytorch)r%   rY  rK         @r  r  r  r   r%   r  r   r  r   )r   rZ   )r   r   r   r0   r   r   r+   r  r1  s         r9   test_maximum_position07r  t  s    |45ZZ,-F #D!

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

QFQF+5
9//%7//%7//%7**528:**528:7GWg>>>>
?r;   c                    | j                  ddg      }t        D ]  }t        | |      }| j                  ddgddgg|      }t        j                  ||d      }t        j
                  ||d      }t        j                  ||d      }t        j                  ||d      }t        j                  ||d      }	|||||	fk(  rJ  y )Nr   r   rZ   r    r   r!   )	r0   r   r   r+   r  r^  rk  r  r  r  s
             r9   test_extrema02r    s    ZZAF ?D!

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

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

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

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

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

L((*16  8 //%QF1CD//%QF1CD//%QF1CD**5&+-::q!f+=?**5&+-::q!f+=?!'!*g6!'!*g6qzW$$$qzW$$$%%r;   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )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    _    H "D!

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

QFQF+5
9''.!!!	"r;   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr  r   r   r   r  r  s         r9   test_center_of_mass03r    r
  r;   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )Nr  r   r   r   r  r  s         r9   test_center_of_mass04r    r
  r;   c                     d}t         D ]C  }t        | |      }| j                  ddgddgg|      }t        j                  |      }||k(  rCJ  y )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              }| j                  |      }t        j                  |      }||k(  sJ y )Nr  r   r   rZ   r   )r(   r0   r0  r+   r  r3   r   r  r   s       r9   test_center_of_mass06r    sP    HJJAA't4EJJuE##E*FXr;   c                     | j                  ddg      }d}t        j                   ddgddggt              }| j                  |      }t        j                  ||      }||k(  sJ y )Nr   r   rC   rK   r   rZ   r   r0   r(   r0  r+   r  r3   r"   r   r  r   s        r9   test_center_of_mass07r    sd    ZZAFHJJAA't4EJJuE##E62FXr;   c                     | j                  ddg      }d}t        j                   ddgddggt              }| j                  |      }t        j                  ||d      }||k(  sJ y )Nr   r   rC   r%   ru   rZ   r   r  r  s        r9   test_center_of_mass08r    sf    ZZAFHJJAA't4EJJuE##E615FXr;   c                 l   | j                  d      }| j                  ddg| j                        }t        j                   ddgddggt              }| j                  |      }t	        j
                  ||| j                  ddg            }t        | j                  |      | j                  |             y )Nr  r  r  r   r   r   )r0   float64r(   r0  r+   r  r   r  s        r9   test_center_of_mass09r  !  s    ZZFzz:z2"**zEHJJAA't4EJJuE##E62::q!f3EFFBJJv&

8(<=r;   c                     | j                  d      }| j                  d      }t        j                  |ddd      }t	        ||       y )Nr   r   )re   aranger+   	histogramr	   r  s       r9   test_histogram01r#  *  s<    wwr{HIIbMEuaR0Ffh/r;   c                     | j                  g d      }| j                  g d      }| j                  g d      }t        j                  |ddd|d      }t        ||       y )N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rZ   r    rZ   rZ   rZ   rZ   r   r    ru   r   r0   r+   r"  r	   r  s        r9   test_histogram02r&  1  sR    ZZ01Fzz/*HJJ/0EuaAvq9Ffh/r;   zobject arraysc                    | j                  g d      }| j                  g d      }| j                  g d      }| j                  g d      }t        j                  |ddd|d      }t        |d   |       t        |d	   |       y )
N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   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  sr    ZZ01F

?+I

?+IJJ/0EuaAvv>FfQi3fQi3r;   c           	      :   | j                  g dg dg dg      }| j                  g dg dg dg      }t        j                  ||| j                  ddg            }t        || j                  d	d
g| j                               t        j
                  ||| j                  ddg            }t        || j                  ddg| j                               t        j                  ||| j                  ddg            }t        || j                  | j                  ddg| j                                     t        j                  ||| j                  ddg            }t        || j                  d	d
g| j                               t        j                  ||| j                  ddg            }t        || j                  ddg      d       t        j                  ||| j                  ddg            }t        || j                  ddg      d       y )N)ru   r   r   r   r   )rF  r>   r   r   r   )r   r   r   rZ   ru   )r   r   r   r   r   )r   r   r   r   r   r   r   r!   rV   r8  r   rY  r%   ru   rZ   Fr   r>   )r0   r+   rO  r   r  r  r  r	   sqrtr  r^  rk  )	r3   r   lblrO  varstdmedminmaxs	            r9   test_stat_funcs_2dr3  F  s   


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

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

:+S#TU
..3bjj!Q.@
ACCS#JbjjAB
//!Crzz1a&/A
BCCQF+?
//!Crzz1a&/A
BCCQF+?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y)TestWatershedIftc                    |j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g d	g}t        ||j                  |             y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   	structurer   r   r   r   r   r   r   r   r   r   r   r   r   r   r0   r  rA  r+   watershed_iftr	   r2   r3   rh   markersr?  ri   r   s          r9   test_watershed_ift01z%TestWatershedIft.test_watershed_ift01`  s    zz000000002 :<  C **433333335 =?GG  E **i'') *	 ##D'YG0+++++002 	"#rzz(';<r;   c                 n   |j                  g dg dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg dg|j                        }t        j                  ||      }g dg dg d	g d	g d	g dg dg dg}t        ||j                  |             y )
Nr8  r9  r:  r   r;  r<  r@  )r   r   r   r   r   r   r   rA  rB  r2   r3   rh   rE  ri   r   s         r9   test_watershed_ift02z%TestWatershedIft.test_watershed_ift02  s    zz000000002 :<  C **433333335 =?GG  E ##D'20-+++-002 	"#rzz(';<r;   c           
      \   |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }t        j                  ||      }g dg dg d	g d	g d	g dg dg}t        ||j                  |             y )
Nr8  r9  r   r   r   r   r   r   r   r   r   r   r   r   rZ   r   r   r   r   r   r   r   r   r   r@  )r   r   r   r   rZ   r   r   r   r   r   rZ   rZ   rZ   r   rB  rH  s         r9   test_watershed_ift03z%TestWatershedIft.test_watershed_ift03  s    zz00000002 :<  C **33333346 >@WW  F ##D'20.+++.02 	"#rzz(';<r;   c           
         |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g}t        ||j                  |             y )Nr8  r9  rK  r   rL  rM  r=  r>  r@  rN  rB  rD  s          r9   test_watershed_ift04z%TestWatershedIft.test_watershed_ift04  s    zz00000002 :<  C **33333346 $&77  , **i'') *	 ##D'YG0+++++02 	"#rzz(';<r;   c           
         |j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d
g d
g d
g d
g d
g d	g}t        ||j                  |             y )Nr8  r9  rK  r   )r   r   rZ   r   r   r   r   rM  r=  r>  r@  )r   rZ   rZ   r   r   r   r   rB  rD  s          r9   test_watershed_ift05z%TestWatershedIft.test_watershed_ift05  s    zz00000002 :<  C **33333346 $&77  , JJ	 ) ) + ,	 ##D'YG0+++++02 	"#rzz(';<r;   c           	         |j                  g dg dg dg dg dg dg|j                        }|j                  g dg dg dg dg dg dg|j                        }|j                  g dg dg dg      }t        j                  |||      }g d	g d	g d	g d	g d
g d
g}t        ||j                  |             y )Nr:  r9  r8  r   r;  r<  r=  r>  rA  r@  rB  rD  s          r9   test_watershed_ift06z%TestWatershedIft.test_watershed_ift06  s    zz0000002
 :<  C **4333335
 =?GG  E **i'') *	 ##D'YG++++002 	"#rzz(';<r;   Tzinplace ops are numpy-specificr   c           	      |   d}t        j                  |t         j                        }|j                         }t        j                  g dg dg dg dg dg dgt         j                        |d<   |j	                  |      }|j	                  g dg dg dg dg dg dg|j
                        }|j                  ||j                        }|j                  }|j	                  g d	g d	g d	g      }t        j                  ||||
       g dg dg dg dg dg dg}t        ||j	                  |             y )N)r   r   r   r:  r9  r8  .r;  r<  r=  )r?  r   rA  r@  )r(   rm   r  	transposer0   rA  int16Tr+   rC  r	   )r2   r3   r   rh   rE  ri   r?  r   s           r9   test_watershed_ift07z%TestWatershedIft.test_watershed_ift07  s"   xxRXX.~~JJ 5 5 5 5 5 5 7
 ?AhhHS	 zz$**4333335
 =?GG  E hhuBHHh-ee**i'') *	 	dGy%(	*++++002 	"#rzz(';<r;   r   r4  r   c                    |j                  ddgddgg|j                        }|j                  ddgddgg|j                        }t        j                  ||      }ddgddgg}t        ||j                  |             y )N   r   r   r   )r0   r  rA  r+   rC  r	   rH  s         r9   test_watershed_ift08z%TestWatershedIft.test_watershed_ift08)  s     zzC8q6#*,))  5**q!f !f&-/WW  6##D'2FF!#rzz(';<r;   c                 L   |j                  |j                  |j                        j                  dgddgg|j                        }|j                  ddgddgg|j                        }t        j                  ||      }ddgddgg}t        ||j                  |      d       y )Nr   r   r   Fr   )r0   iinfor  r2  rA  r+   rC  r   rH  s         r9   test_watershed_ift09z%TestWatershedIft.test_watershed_ift095  s     zzBHHRYY/33Q7q6#*,))  5**q!f !f&-/WW  6##D'2FFRZZ1uEr;   N)rN   rO   rP   rF  rI  rO  rQ  rS  rU  r   rZ  r]  r`  rR   r;   r9   r6  r6  ]  sz    =>=8=2=<=:=2 d+KL= M=@ f%?@	= A	= f%?A	F B	Fr;   r6  )r   dtc                     t         j                  j                  d      }d}|j                  d|d      j	                  |       }t        j                  |      }t        |j                               |k(  sJ y )N{   rF  r   )r   r  )lowhighr   r   )	r(   r   default_rngintegersastyper+   r   r^   r  )ra  r3   rngmax_valimageval_idxs         r9   test_gh_19423rm  B  sh     ))


$CGLLQW8L<CC"C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*  r,  r2  r4  r6  r9  r>  rB  rG  rM  rP  rS  rU  r\  r_  rc  re  rh  rl  rn  rp  rr  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r#  r&  r*  r3  r6  parametrizeintcuintcrm  rR   r;   r9   <module>r~     s   	   +    *   /;;// "FKK$;$;<N$O&+9NPR
 WW_=#)=  $'IJO= O= KO=d#/ #/L  $"&* $'IJ K*&$ $'GH I $'GH! I!
:, &M$	5 &!PQTC TC RTCn'4$/&EEFEAEG
NEAE'EAEGEAEG$
CA
A9:$EEBEK$EEAE	K
?    
#    
##"? ?$%8%.""""">00 $7	4 8	4@. &!;<aF aF =aFH $23* 4  *r;   