+
    nDj                         ^ RI t ^ RIt ^ RIt^ RIt^ RIHtHtHtH	t	H
t
Ht ^ RIt^ RIHt ^ RIHt ^RIHt ]P&                  P(                  t]! RRR7      ]P&                  P+                  RR	R
7       ! R R4      4       4       t]! RRR7      ]P&                  P+                  RR	R
7       ! R R4      4       4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t]! ]P0                  4      R 4       t ]! ]P0                  4      R 4       t!]! ]P0                  4      R 4       t"]! ]P0                  4      R 4       t#]! RRR7      ]! ]P0                  4      R 4       4       t$]! ]P0                  4      R 4       t%]! ]P0                  4      R 4       t&]! RR.RR 7      ]! ]P0                  4      R! 4       4       t']! RR.RR 7      ]! ]P0                  4      R" 4       4       t(]! RR#R7      ]! ]P0                  4      R$ 4       4       t)]! ]P0                  4      R% 4       t*]! ]P0                  ]PV                  4      R& 4       t,]! ]P0                  4      R' 4       t-]! ]P0                  ]PV                  4       ! R( R)4      4       t.]! ]P^                  4      R* 4       t0]! ]P^                  4      R+ 4       t1]! ]P^                  4      R, 4       t2]! ]Pf                  4      R- 4       t4]! ]Pf                  4      R. 4       t5]! ]Pf                  4      R/ 4       t6]! ]Pf                  4      R0 4       t7]! ]Pf                  4      R1 4       t8]! ]Pf                  4      R2 4       t9]! ]Pf                  4      R3 4       t:]! ]Pf                  4      R4 4       t;]! ]Pf                  4      R5 4       t<]! ]Pf                  4      R6 4       t=]! ]Pf                  4      R7 4       t>]! ]Pf                  4      R8 4       t?]! ]Pf                  ]P                  4      R9 4       tA]! ]P                  4      R: 4       tC]! ]P                  4      R; 4       tD]! ]P                  4      R< 4       tE]! ]P                  4      R= 4       tF]! ]P                  4      R> 4       tH]! ]P                  4      R? 4       tI]! ]P                  4      R@ 4       tJ]! ]P                  4      RA 4       tK]! ]P                  4      RB 4       tM]! ]P                  4      RC 4       tN]! ]P                  4      RD 4       tO]! ]P                  4      RE 4       tP]! ]P                  4      RF 4       tQ]! ]P                  4      RG 4       tS]! ]P                  4      RH 4       tT]! ]P                  4      RI 4       tU]! ]P                  4      RJ 4       tV]! ]P                  4      RK 4       tW]! ]P                  4      RL 4       tY]! ]P                  4      RM 4       tZ]! ]P                  4      RN 4       t[]! ]P                  4      RO 4       t\]! ]P                  4      RP 4       t]]! ]P                  4      RQ 4       t^]! ]P                  4      RR 4       t`]! ]P                  4      RS 4       ta]! ]P                  4      RT 4       tb]! ]P                  4      RU 4       tc]! ]P                  4      RV 4       td]! ]P                  4      RW 4       te]! ]P                  4      RX 4       tf]! ]P                  4      RY 4       th]! ]P                  4      RZ 4       ti]! ]P                  4      R[ 4       tj]! ]P                  4      R\ 4       tk]! ]P                  4      R] 4       tl]! ]P                  4      R^ 4       tm]! ]P                  4      R_ 4       tn]! ]P                  4      R` 4       tp]! ]P                  4      Ra 4       tq]! ]P                  4      Rb 4       tr]! ]P                  4      Rc 4       ts]! ]P                  4      Rd 4       tt]! ]P                  4      Re 4       tu]! ]P                  4      Rf 4       tv]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rg 4       tx]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rh 4       ty]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Ri 4       tz]! ]P                  ]P                  ]P                  ]P                  ]P                  4      Rj 4       t{]! ]P                  4      Rk 4       t}]! ]P                  4      Rl 4       t~]! ]P                  4      Rm 4       t]! ]P                  4      Rn 4       t]! ]P                  4      Ro 4       t]! ]P                  4      Rp 4       t]! ]P                  4      Rq 4       t]! ]P                  4      Rr 4       t]! ]P                  4      Rs 4       t]! ]EP                  4      Rt 4       t]! ]EP                  4      Ru 4       t]! RRvR7      ]! ]EP                  4      Rw 4       4       t]! ]P                  ]P                  ]P                  ]P                  ]P                  ]P                  4      Rx 4       t]! RRyR
7      ]! ]EP                  4       ! Rz R{4      4       4       t]! RR|7      ]P&                  EP                  R}]EP                  ]EP                  .4      ]! ]P^                  4      R~ 4       4       4       tR# )    N)is_torchxp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equalmake_xp_test_case)raises)typesTz test internal numpy-only helpersnp_onlyreasonFprivater   c                   B   a  ] tR t^t o RtR tR tR tR tR t	Rt
V tR# )	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           	        . ROp. ROp^ ^.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VR7      w  rg/ p\        V\         P                  ! ^^.3/ VB 4       \        V\         P                  ! RR.4      4       K  	  R# )r   labelsindex      ?       @Nr            r   r   r   r   )   )r   r   nparrayreshapendimage_measurements_statsr   asarray	selfxpxr   r   shpcountssums	dtype_args	   &&       _/data/cameron/venvs/s3viz/lib/python3.14/site-packages/scipy/ndimage/tests/test_measurements.pytest_aTest_measurements_stats.test_a#   s    A!C##C(AXXf%--c2F"0077 8 /LF IFBJJ1v$C$CDD"**c3Z"89 "    c           	        . ROp. ROp^ ^	.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VR7      w  rg/ p\        V\         P                  ! ^^.3/ VB 4       \        V\         P                  ! RR.4      4       K  	  R# )r   r   r   r   Nr   r   r   	   r5   r   r   r'   s	   &&       r/   test_bTest_measurements_stats.test_b1   s     A!C##C(AXXf%--c2F"0077 8 /LF IFBJJ1v$C$CDD"**c3Z"89 "r2   c           	        . ROp. ROp^ ^.pR	 F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R# )
r   Tr   r   centeredr   r         ?Nr   r   r   r   
r(   r)   r*   r   r   r+   r,   r-   centersr.   s
   &&        r/   test_a_centered'Test_measurements_stats.test_a_centeredA       A!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' IFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r2   c           	        . ROp. ROp^ ^	.pR	 F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R# )
r   Tr9   r   r   r;   Nr   r4   r   r   r<   s
   &&        r/   test_b_centered'Test_measurements_stats.test_b_centeredP   r@   r2   c           	        . R	Op. R
OpRR.pR F  p\         P                  ! V4      P                  V4      p\         P                  ! V4      P                  V4      p\        P                  P                  W#VRR7      w  rgp/ p	\        V\         P                  ! ^^.3/ V	B 4       \        V\         P                  ! RR.4      4       \        V\         P                  ! RR.4      4       K  	  R# )r                 "@Tr9   r   r   r;   Nr   )rE   rE   rF   rF   r   r   r<   s
   &&        r/   test_nonint_labels*Test_measurements_stats.test_nonint_labels_   s    %c
!C##C(AXXf%--c2F$+$9$9$@$@ %A %>!F' IFBJJ1v$C$CDD"**c3Z"89GRZZc
%;< "r2    N)__name__
__module____qualname____firstlineno____doc__r0   r6   r>   rB   rG   __static_attributes____classdictcell____classdict__s   @r/   r   r      s(     
:: === =r2   r   c                   *   a  ] tR t^ot o RtR tRtV tR# )Test_measurements_selectzEndimage._measurements._select() is a utility used by other functions.c           	        . ROp. RO^ ^.3. RO^ ^	.3. RORR.3.pV EF  w  rE\         P                  P                  W$VR7      p\        V4      ^ 8X  g   Q h\         P                  P                  W$VRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^^.4       \         P                  P                  W$VRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^ ^.4       \         P                  P                  W$VRRR7      p\        V4      ^8X  g   Q h\	        V^ ,          ^ ^.4       \	        V^,          ^ ^.4       V^,          P
                  P                  R8X  g   Q h\         P                  P                  W$VRRR	7      p\        V4      ^8X  g   Q h\	        V^ ,          ^^.4       \	        V^,          ^^.4       V^,          P
                  P                  R8X  d   EK  Q h	  R
# )r   rE         @r   T)r   r   find_max)r   r   find_min)r   r   rX   find_min_positionsi)r   r   rW   find_max_positionsN)r   r   r   r   r   r4   )rE   rE   rV   rV   )r#   r$   _selectlenr   dtypekind)r(   r)   r*   casesr   r   results   &&     r/   
test_basic#Test_measurements_select.test_basict   s   Aq6"Aq6"!C:.

 #MF**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 #r2   rI   N)rJ   rK   rL   rM   rN   rb   rO   rP   rQ   s   @r/   rT   rT   o   s      P /  /r2   rT   c                 |    V P                  R4      p\        P                  ! V4      w  r#V^8X  g   Q hV^8X  g   Q hR# )r   NrI   )onesr#   labelr)   dataoutns   &   r/   test_label01rk      s5    772;D]]4 FC!8O86M6r2   c                 |    V P                  R4      p\        P                  ! V4      w  r#V^ 8X  g   Q hV^ 8X  g   Q hR# )r   NrI   )zerosr#   rf   rg   s   &   r/   test_label02rn      s5    88B<D]]4 FC!8O86M6r2   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  ^.4      4       V^8X  g   Q hR# r   Nre   r#   rf   r   r&   rg   s   &   r/   test_label03rr      s>    77A3<D]]4 FCc::qc?36M6r2   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  ^ .4      4       V^ 8X  g   Q hR# rp   )rm   r#   rf   r   r&   rg   s   &   r/   test_label04rt      s>    88QC=D]]4 FCc::qc?36M6r2   c                     V P                  ^.4      p\        P                  ! V4      w  r#\        W P	                  . RO4      4       V^8X  g   Q hR# )   N)r   r   r   r   r   rq   rg   s   &   r/   test_label05rw      s=    77A3<D]]4 FCc::o#>?6M6r2   c                     V P                  . RO4      p\        P                  ! V4      w  r#\        W P                  . RO4      4       V^8X  g   Q hR# )r   N)r   r   r   r   r   r   r   r   r   r   r      r&   r#   rf   r   rg   s   &   r/   test_label06r|      s>    ::()D]]4 FCc::.@#AB6M6r2   c                     V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      w  r#\        W P                  . RO. RO. RO. RO. RO. RO.4      4       V^ 8X  g   Q hR# r   Nr   r   r   r   r   r   r{   rg   s   &   r/   test_label07r      sp    ::))))))+ ,D ]]4 FCc::%7%7%7%7%7%7%9$: ; 6M6r2   c                     V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      w  r#\        W P                  . RO. RO. RO. R	O. R	O. R
O.4      4       V^8X  g   Q hR# )r   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{   rg   s   &   r/   test_label08r      ss    ::))))))+ ,D ]]4 FCc::/A/A/A/A/A/A/C $D E 6M6r2   c                 6   V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! ^^4      pV P                  V4      p\        P                  ! W4      w  r4\	        W0P                  . RO. RO. RO. R	O. R	O. R
O.4      4       V^8X  g   Q hR# )r   Nr   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   rz   rz   r   r&   r#   generate_binary_structurerf   r   r)   rh   structri   rj   s   &    r/   test_label09r      s    ::))))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/A/A/C $D E 6M6r2   c           
         V P                  . RO. RO. RO. RO.4      p\        P                  ! ^^4      pV P                  V4      p\        P                  ! W4      w  r4\	        W0P                  . RO. RO. RO. RO.4      4       V^8X  g   Q hR# )r   Nr   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   s   &    r/   test_label10r      s    ::))))+ ,D ..q!4FZZF]]4(FCc::/A/A/A/A/C $D E 6M6r2   c           
      "   \          F  p\        W4      pV P                  . RO. RO. RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. R	O. R
O. R
O. RO.pV P                  V4      p\        WF4       V^8X  d   K  Q h	  R# )r   r^   Nr   r   r   r   r   r   r   r   r   r
   getattrr&   r#   rf   r   r)   typer^   rh   ri   rj   expecteds   &      r/   test_label11r     s    !zz------/
 7<  = t$&&&&&&( ::h'!#0Avv# r2   z inplace output is numpy-specificc           
          \          F  p\        W4      pV P                  . RO. RO. RO. RO. RO. RO.VR7      p\        P                  ! W3R7      p. RO. R	O. R
O. RO. RO. RO.pV P                  V4      p\        W54       V^8X  d   K  Q h	  R# )r   r   outputNr   r   r   r   r   r   r   r   r   r   )r)   r   r^   rh   rj   r   s   &     r/   test_label11_inplacer   &  s     !zz------/
 7<  = MM$,&&&&&&( ::h'!$1Avv# r2   c           	         \          F~  p\        W4      pV P                  . RO. RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. RO. RO. RO.pV P                  V4      p\        WF4       V^8X  d   K~  Q h	  R# )r   r   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   s   &      r/   test_label12r   =  s    !zz-----	/ 7<	  =
 t$&&&&&	(
 ::h'!#0Avv r2   c                 
   \          Fx  p\        W4      pV P                  . RO. RO. RO. RO.VR7      p\        P                  ! V4      w  rE. RO. RO. RO. RO.pV P                  V4      p\        WF4       V^8X  d   Kx  Q h	  R# )r   r   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   s   &      r/   test_label13r   Q  s    !zz<<<<> !&	  '
 t$55557 ::h'!#0Avv r2   cupyzoutput=dtype is numpy-specific)r   
exceptionsr   c           	      $   V P                  ^.4      p\         Fs  p\        W4      pV P                  ^.VR7      p\        P
                  ! WR7      p\        VV P                  VP                  VP                  R7      4       V^8X  d   Ks  Q h	  R# rv   r   r   N)	re   r
   r   rm   r#   rf   r   shaper^   r)   rh   tr^   r   rj   s   &     r/   test_label_output_typedr   d  sv     77A3<D1#U+MM$.!&"$''&,,fll'"K	MAvv r2   c           	         V P                  ^.4      p\         Fk  p\        W4      p\        P                  ! WR7      w  rE\        VV P                  VP                  VP                  R7      4       VP                  V8X  d   Kk  Q h	  R# )rv   r   r   N)re   r
   r   r#   rf   r   r   r^   r   s   &     r/   test_label_output_dtyper   r  sk     77A3<DMM$5	!&"$''&,,fll'"K	M||q    r2   z!in-place output is numpy-specificc                     V P                  ^.4      p\         FB  p\        W4      pV P                  ^
.VR7      p\	        \
        \        P                  WR7       KD  	  R# r   )re   r
   r   rm   assert_raises
ValueErrorr#   rf   )r)   rh   r   r^   r   s   &    r/   test_label_output_wrong_sizer     sJ     77A3<D2$e,j'--E r2   c           	         \         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      p\         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      p\         P                  ! \        P                  P	                  \        P                  P                  \        4      R R4      4      pVP                  R4      pVP                  R	4      pVP                  R4      pV P                  V4      pV P                  V4      pV P                  V4      p^ p\        VP                  ^ ,          4       Fw  pWRR3,          p\        VP                  ^ ,          4       FI  pW'RR3,          p\        \        P                  ! Wh4      ^ ,          W4RR3,          RR7       V^,          pKK  	  Ky  	  R# )
rh   zlabel_inputs.txtzlabel_strels.txtzlabel_results.txtNNNFcheck_dtypeN)   r   )r   rz   rz   )r    loadtxtospathjoindirname__file__r"   r&   ranger   r   r#   rf   )	r)   rh   strelsresultsrrZ   djss	   &        r/   test_label_structuring_elementsr     sl   ::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!QwAGMM!/2Gq!G4DRWXFA ( "r2   c                 P  a  RV 3R llp\         P                  ! \         P                  4      \         P                  ! R4      8w  d`   Rp\         P                  P	                  \         P
                  ! V4      4      P                  V4      pS P                  V4      pV! V4       R# R# )ffffff?c                    < W8  p\        VP                  4      p\        P                  ! WD4      pS	P	                  V4      p\        P
                  ! VV4      w  rg\        P                  ! V4      pR # )N)r]   r   r#   r   r&   rf   find_objects)
imgthreshsizemaskrankr   laco_r)   s
   &&&      r/   SEtest_ticket_742.<locals>.SE  sZ    |4::224>F#t%'  $r2   rZ   N)r   r   )rz     r   )r    r^   intprandomrandprodr"   r&   )r)   r   r   as   f   r/   test_ticket_742r     sj    % 
xxBHHSM)IINN2775>*2259JJqM
1 *r2   c                    \         P                  ! R4      p^VR&   ^VR&   ^VR&   ^VR&   ^VR&   V P                  V4      p\        P                  ! WP                  R4      4      ^,          ^8X  g   Q hR# )	z/Github issue #3025 - improper merging of labelsN)<   i@  )r   :Ni  N)r   :i  NN)$   i  )#   i  )r   i  )rz   rz   )r    rm   r&   r#   rf   re   )r)   r   s   & r/   test_gh_issue_3025r     sp     	AAgJAgJAgJAgJAgJ


1A==GGFO,Q/1444r2   c                   \   a  ] tR tRt o R tR tR tR tR tR t	R t
R	 tR
 tR tRtV tR# )TestFindObjectsi  c                   \         P                  P                  ^
^
4      pVP                  V4      p\        P
                  ! VR8  4      w  r4VP                  VP                  VP                  39   g   Q h\        P                  ! V4       R# )
   r;   N)
r    r   r   r&   r#   rf   r^   int32int64r   )r(   r)   
test_arrayrf   no_featuress   &&   r/   test_label_default_dtype(TestFindObjects.test_label_default_dtype  sg    YY^^B+
ZZ
+
$]]:+;<{{rxx2222U#r2   c                    VP                  . VP                  R 7      p\        P                  ! V4      pVR.8X  g   Q hR# )r   NrI   )re   r   r#   r   r(   r)   rh   ri   s   &&  r/   test_find_objects01#TestFindObjects.test_find_objects01  s6    wwrw*""4(rd{{r2   c                ~    VP                  . VP                  R 7      p\        P                  ! V4      pV. 8X  g   Q hR# r   Nrm   r   r#   r   r   s   &&  r/   test_find_objects02#TestFindObjects.test_find_objects02  s4    xx"((x+""4(byyr2   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV\	        ^ ^R4      3.8X  g   Q hR# r   r   Nre   r   r#   r   slicer   s   &&  r/   test_find_objects03#TestFindObjects.test_find_objects03  G    wws"((w+""4(aD)+,,,,r2   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV. 8X  g   Q hR# r   r   r   s   &&  r/   test_find_objects04#TestFindObjects.test_find_objects04  s6    xx288x,""4(byyr2   c                    VP                  ^.VP                  R7      p\        P                  ! V4      pV\	        ^ ^R4      3.8X  g   Q hR# )rv   r   Nr   r   s   &&  r/   test_find_objects05#TestFindObjects.test_find_objects05  r   r2   c                    VP                  . RO4      p\        P                  ! V4      pV\        ^ ^R4      3\        ^^R4      3\        ^^R4      3.8X  g   Q hR# )r   Nry   r&   r#   r   r   r   s   &&  r/   test_find_objects06#TestFindObjects.test_find_objects06  sd    zz,-""4(aD)+aD)+aD)+- - 	- -r2   c           	         VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV. 8X  g   Q hR# r~   )r&   r#   r   r   s   &&  r/   test_find_objects07#TestFindObjects.test_find_objects07  sE    zz------/ 0 ""4(byyr2   c           
     R   VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV\        ^ ^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3\        ^^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3.8X  g   Q hR# )r   Nr   r   r   r   r   r  r   s   &&  r/   test_find_objects08#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r2   c           
     "   VP                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V4      pV\        ^ ^R4      \        ^ ^R4      3\        ^^R4      \        ^^R4      3R\        ^^R4      \        ^^R4      3.8X  g   Q hR# )r   Nr   r   r   r   r   r  r   s   &&  r/   test_find_objects09#TestFindObjects.test_find_objects09  s    zz------/ 0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@AC C 	C Cr2   rI   N)rJ   rK   rL   rM   r   r   r   r   r   r   r  r  r  r  rO   rP   rQ   s   @r/   r   r     s?     $---CC Cr2   r   c           	     `   V P                  . RO. RO. RO. RO. RO. RO.4      p\        P                  ! V^ R7      p. ROp\        VP	                  4       4      V8X  g   Q hV Uu/ uF  qDV P                  W8H  4      bK  	  pp\        P                  ! V^ R7      pVP	                  4       VP	                  4       8X  g   Q hVP	                  4        FV  p\        W&,          4      \        WV,          4      8X  g   Q h\        W&,          WV,          4       F  w  rx\        Wx4       K  	  KX  	  R# u upi )	z Test dictionary keys and entries)ignore_valueNr   r   r   r   r   )r   r   r   )	r&   r#   value_indiceslistkeysnonzeror]   zipr   )	r)   rh   vi	true_keysktruevikeyvtrue_vs	   &        r/   test_value_indices01r    s     ::))))))+ ,D 
		t!	4BI	?i'''09:	1DI&&	F:			t!	4B779%%%wwy27|s6;////RWfk2IAA& 3 	 ;s   $D+c                    V P                  RV P                  R7      pRp\        \        VR7      ;_uu_ 4        \        P
                  ! V4       RRR4       R#   + '       g   i     R# ; i)zTest input checkingr   z(Parameter 'arr' must be an integer array)matchN)rv   r   )rm   float32r   r   r#   r  )r)   rh   msgs   &  r/   test_value_indices02r   0  sI     88F"**8-D
4C	z	-	-d# 
.	-	-	-s   AA+	c                   R EFH  p\         P                  ! ^^.,          ^^.,          ,           ^^.,          ,           \         P                  R7      p\         P                  ! W!4      p\         P                  ! V4      pV P                  V4      p\
        P                  ! V4      p\        VP                  4       4      \        V4      8X  g   Q hV Uu. uF  p\        V4      NK  	  up F]  pV P                  W&8H  4      p\        WF,          4      \        V4      8X  g   Q h\        WF,          V4       F  w  r\        W4       K  	  K_  	  EKK  	  R# u upi )z2Test different input array shapes, from 1-D to 4-Dr   N))r   )   r   )rz   rz   r   )rz   rz   r   r   )r    r&   r   r"   uniquer#   r  r  r  intr  r]   r  r   )
r)   r   r   trueKeysr  r*   r  trueNdxviktrue_viks
   &         r/   test_value_indices03r)  9  s     ;JJA3r1#vb!f,RXX>JJq 99Q<JJqM""1%BGGI$x.000"*+(Q#a&(+Ajj(Gru:W---!$RUG!4. "5 , ; ,s   Ec                     \          F@  p\        W4      pV P                  . VR 7      p\        P                  ! V4      pV^ 8X  d   K@  Q h	  R# r   )r
   r   r&   r#   sumr)   r   r^   inputr   s   &    r/   
test_sum01r.  K  sB    !

2U
+U#{{	 r2   c                     \          FB  p\        W4      pV P                  ^ ^.VR7      p\        P                  ! V4      pV^ 8X  d   KB  Q h	  R# )r   r   N)r
   r   rm   r#   r+  r,  s   &    r/   
test_sum02r0  T  sF    !!Qu-U#{{	 r2   c                     \          FS  p\        W4      pV P                  . VR 7      p\        P                  ! V4      p\        W@P                  R4      RR7       KU  	  R# )r   r   Fcheck_0dN)r
   r   re   r#   r+  r   r&   r,  s   &    r/   
test_sum03r4  ]  sH    !%(U#FJJsOeD	 r2   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# )r   r         @Fr2  Nr
   r   r&   r#   r+  r   r,  s   &    r/   
test_sum04r8  f  sL    !

Aq6
/U#FJJsOeD	 r2   c                     \          FY  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       K[  	  R# )r   r   g      $@Fr2  Nr7  r,  s   &    r/   
test_sum05r:  o  sV    !

QFQF+5
9U#FJJt$4uE	 r2   c                     \         P                  ! . \        R 7      pV P                  V4      p\         FA  p\	        W4      pV P                  . VR 7      p\
        P                  ! WAR7      pV^ 8X  d   KA  Q h	  R# )r   r   Nr    r&   boolr
   r   r#   r+  r)   r   r   r^   r-  r   s   &     r/   
test_sum06r@  x  s`    ZZ$'FZZF!

2U
+U2{{	 r2   c                     \         P                  ! ^ ^.\        R7      pV P                  V4      p\         FC  p\        W4      pV P                  ^ ^.VR7      p\        P                  ! WAR7      pV^ 8X  d   KC  Q h	  R# )r   r   r<  N)	r    re   r>  r&   r
   r   rm   r#   r+  r?  s   &     r/   
test_sum07rB    sh    WWaV4(FZZF!!Qu-U2{{	 r2   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\         FC  p\	        W4      pV P                  ^^.VR7      p\
        P                  ! WAR7      pV^8X  d   KC  Q h	  R# r   r   r<  Nr=  r?  s   &     r/   
test_sum08rE    sh    ZZAd+FZZF!

Aq6
/U2{{	 r2   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# )r   r   r<        @Fr2  N)r    r&   r>  r
   r   r#   r+  r   r?  s   &     r/   
test_sum09rH    sw    ZZAd+FZZF!

QFQF+5
9U2FJJsOeD	 r2   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# r   r   r<         @Fr2  N)r    r&   r>  r#   r+  r   r)   r   r-  r   s   &   r/   
test_sum10rM    so    ZZAd+FJJAA't4EZZFJJuE[[.F

3%@r2   c                    V P                  ^^.V P                  R7      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r         @Fr2  N)r&   int8r
   r   r#   r+  r   r?  s   &     r/   
test_sum11rQ    st    ZZAbggZ.F!

QFQF+5
9U#$&FJJsOeD r2   c           	      8   V P                  ^^.^^..V P                  R7      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# r   r   r   Nr      r   )rG  rE   g      @)r&   rP  r
   r   r#   r+  r   r?  s   &     r/   
test_sum12rV    s    ZZ!Q!Q(Z8F!

QFQF+5
9UI9NO!&**_*EF	 r2   c           	         V P                  ^^.^^..V P                  R7      p\         F  p\        W4      pV P                  ^^.^^..VR7      p\        P
                  ! WAV P                  . RO4      R7      p\        P                  ! WAV P                  . RO4      R7      pV P                  WV8H  4      '       g   Q h\        W`P                  . RO4      4       K  	  R# rS  )	r&   rP  r
   r   r#   r+  
sum_labelsallr   )r)   r   r   r^   r-  
output_sumoutput_labelss   &      r/   test_sum_labelsr\    s    ZZ!Q!Q(Z8F!

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

9(=? vvj12222!-O1LM r2   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# rJ  )r    r&   r>  r
   r   r#   meanr   r?  s   &     r/   test_mean01r_    sw    ZZAd+FZZF!

QFQF+5
9e3FJJsOeD	 r2   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# r   r   r<  r   Fr2  N)r    r&   r>  r#   r^  r   rL  s   &   r/   test_mean02rb    so    ZZAd+FJJAA't4EZZFJJuE\\%/F

3%@r2   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   r6  Fr2  N)r&   r
   r   r#   r^  r   r?  s   &     r/   test_mean03rd    sl    ZZAF!

QFQF+5
9e$%'FJJsOeD r2   c                    V P                  ^^.^^..V P                  R7      p\        P                  ! RR7      ;_uu_ 4        \         F  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      pV^ ,          R8X  g   Q hV^,          R8X  g   Q hV P                  V^,          4      '       d   K  Q h	  RRR4       R#   + '       g   i     R# ; i)	r   r   ignorerY  r   rG        @NrT  )	r&   rP  r    errstater
   r   r#   r^  isnanr?  s   &     r/   test_mean04rk    s    ZZ!Q!Q(Z8F		"	"DB%EJJAA/uJ=E\\%(*

9(=?F !9###!9###88F1I&&&&  
#	"	"	"s   BC(C((C9	c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# ra  )r    r&   r>  r
   r   r#   minimumr   r?  s   &     r/   test_minimum01rn    w    ZZAd+FZZF!

QFQF+5
96FJJsOeD	 r2   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# ra  )r    r&   r>  r#   rm  r   rL  s   &   r/   test_minimum02rq    so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r2   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   rK  Fr2  N)r&   r
   r   r#   rm  r   r?  s   &     r/   test_minimum03rs    sl    ZZAF!

QFQF+5
9'(*FJJsOeD r2   c           	          V P                  ^^.^^..4      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# )r   r   r   Nr   rz   rU  )rK  rG  rE   )r&   r
   r   r#   rm  r   r?  s   &     r/   test_minimum04rv  %  }    ZZ!Q!Q()F!

QFQF+5
9')zz)'<>!&**_*EF r2   c                 ,   \         P                  ! ^^ .\        R7      pV P                  V4      p\         FZ  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\        WPP                  R4      RR7       K\  	  R# )r   r   r<  r6  Fr2  N)r    r&   r>  r
   r   r#   maximumr   r?  s   &     r/   test_maximum01rz  0  ro  r2   c                 0   \         P                  ! ^^ .\        R7      p\         P                  ! ^^.^^..\        R7      pV P                  V4      pV P                  V4      p\        P                  ! W!R7      p\        W0P                  R4      RR7       R# ra  )r    r&   r>  r#   ry  r   rL  s   &   r/   test_maximum02r|  ;  so    ZZAd+FJJAA't4EZZFJJuE__U2F

3%@r2   c                     V P                  ^^.4      p\         F[  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        WPP                  R4      RR7       K]  	  R# )r   r   r   rG  Fr2  N)r&   r
   r   r#   ry  r   r?  s   &     r/   test_maximum03r~  E  sl    ZZAF!

QFQF+5
9'(*FJJsOeD r2   c           	          V P                  ^^.^^..4      p\         Fl  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WAV P                  . RO4      R7      p\        WPP                  . RO4      4       Kn  	  R# )r   r   r   Nru  )r6  rG  rE   )r&   r
   r   r#   ry  r   r?  s   &     r/   test_maximum04r  P  rw  r2   c                 f    V P                  . RO4      p\        P                  ! V4      R8X  g   Q hR# )rz   Nr   )r   )r&   r#   ry  )r)   r*   s   & r/   test_maximum05r  [  s)     	

< A??1###r2   c                    V P                  . RO. RO. RO. RO.4      pV P                  . RO. RO. RO. R	O.4      p\        P                  ! WV P                  . R
O4      R7      p\        W0P                  . RO4      4       R# )r   r   Nr   r   r   r   rv   rz   r   r   r   r   r   r   r5   rz   r   r   r   r   r   r   r   r   r   r   rz   rz   r   r   )r   r   rz   )rh  rG  rO  )r&   r#   medianr   r)   r   r   r   s   &   r/   test_median01r  b  sl    


L   " 	#A ZZ%%%' (F ^^ABJJy4IJFfjj&ABr2   c                     V P                  . RO. RO. RO. RO.4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )	r   r   Fr2  Nr  r  r  r  r&   r#   r  r   r)   r   r   s   &  r/   test_median02r  p  sB    


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

3%@r2   c                     V P                  . RO. RO. RO. R	O.4      pV P                  . R
O. R
O. RO. RO.4      p\        P                  ! WR7      p\        W0P                  R4      RR7       R# )r   r<  r6  Fr2  Nr  r  r  r  r  r  r  r  r  s   &   r/   test_median03r  z  sb    


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

3%@r2   c                    \         P                  ! ^^.\        R7      pV P                  V4      p\        P                  ! WP                  R4      V P                  ^.4      R7      p\        W P                  R.4      4       R# )r   r   r   r   Nr   )r    r&   r>  r#   r  re   r   r  s   &  r/   test_median_gh12836_boolr    sZ     	

Aq6&A


1A^^Aggdm2::qc?KFfjj#&78r2   c                     V P                  ^A^F.V P                  R7      p\        P                  ! WP	                  R4      V P                  ^.4      R7      p\        W P                  R.4      4       R# )A   r   r   g     P@Nr  )r&   rP  r#   r  re   r   r  s   &  r/   test_median_no_int_overflowr    sS     	

B8277
+A^^Aggdm2::qc?KFfjj$&89r2   c           
         \         P                  ! R R7      ;_uu_ 4        \         F  p\        W4      pV P	                  . VR7      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R R\        4       \        P                  ! V4      pRRR4       V P                  X4      '       d   K  Q h	  RRR4       R#   + '       g   i     L7; i  + '       g   i     R# ; irf  rg  r   zMean of empty sliceN)r    ri  r
   r   r&   warningscatch_warningsfilterwarningsRuntimeWarningr#   variancerj  r,  s   &    r/   test_variance01r    s    		"	"DB%EJJrJ/E((**''2GX ))%0 + 88F####  
#	" +*	 
#	"	"*   AC%3CC9CCCC+	c                     \          FT  p\        W4      pV P                  ^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KV  	  R# r   r   rE   Fr2  Nr
   r   r&   r#   r  r   r,  s   &    r/   test_variance02r    sL    !

A3e
,!!%(FJJsOeD	 r2   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# r   r   r   Fr2  Nr  r,  s   &    r/   test_variance03r    sN    !

Aq6
/!!%(FJJsOeD	 r2   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )r   r   g      ?Fr2  N)r    r&   r>  r#   r  r   r)   r-  r   s   &  r/   test_variance04r    sG    JJ1vT*EJJuEe$F

4 05Ar2   c                     V P                  . RO4      p\         FV  p\        W4      pV P                  . ROVR7      p\        P                  ! WA^4      p\        WPP                  R4      RR7       KX  	  R# r   r   r   Fr2  N)r   r   rz   )r   rz   rU  )r&   r
   r   r#   r  r   r?  s   &     r/   test_variance05r    sZ    ZZ	"F!

9E
2!!%3FJJsOeD r2   c                    V P                  . RO4      p\        P                  ! RR7      ;_uu_ 4        \         Fg  p\	        W4      pV P                  . ROVR7      p\
        P                  ! WAV P                  . RO4      4      p\        WPP                  . RO4      4       Ki  	  RRR4       R#   + '       g   i     R# ; i	r   rf  rg  r   N)r   r   rz   rz   r   )r   rz   rU  r   rU  )r   rz   r   )r   r   rE   )r&   r    ri  r
   r   r#   r  r   r?  s   &     r/   test_variance06r    s    ZZ(F		"	"DB%EJJ/uJ=E%%eRZZ	5JKF%fjj.IJ	  
#	"	"	"   A2B//C 	c           
         \         P                  ! R R7      ;_uu_ 4        \         F  p\        W4      pV P	                  . VR7      p\
        P                  ! 4       ;_uu_ 4        \
        P                  ! R R\        4       \        P                  ! V4      pRRR4       V P                  X4      '       d   K  Q h	  RRR4       R#   + '       g   i     L7; i  + '       g   i     R# ; ir  )r    ri  r
   r   r&   r  r  r  r  r#   standard_deviationrj  r,  s   &    r/   test_standard_deviation01r    s    		"	"DB%EJJrJ/E((**''2GX 33E: + 88F####  
#	" +*	 
#	"	"r  c                     \          FT  p\        W4      pV P                  ^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KV  	  R# r  r
   r   r&   r#   r  r   r,  s   &    r/   test_standard_deviation02r    sL    !

A3e
,++E2FJJsOeD	 r2   c                     \          FU  p\        W4      pV P                  ^^.VR7      p\        P                  ! V4      p\        W@P                  R4      RR7       KW  	  R# r  r  r,  s   &    r/   test_standard_deviation03r    sN    !

Aq6
/++E2FJJsOeD	 r2   c                     \         P                  ! ^^ .\        R7      pV P                  V4      p\        P                  ! V4      p\        W P                  R4      RR7       R# )r   r   r;   Fr2  N)r    r&   r>  r#   r  r   r  s   &  r/   test_standard_deviation04r    sF    JJ1vT*EJJuE''.F

3%@r2   c                     V P                  . RO4      p\         FV  p\        W4      pV P                  . ROVR7      p\        P                  ! WA^4      p\        WPP                  R4      RR7       KX  	  R# r  )r&   r
   r   r#   r  r   r?  s   &     r/   test_standard_deviation05r    sZ    ZZ	"F!

9E
2++E1=FJJsOeD	 r2   c                    V P                  . RO4      p\        P                  ! RR7      ;_uu_ 4        \         Fg  p\	        W4      pV P                  . ROVR7      p\
        P                  ! WAV P                  . RO4      4      p\        WPP                  . RO4      4       Ki  	  RRR4       R#   + '       g   i     R# ; ir  )r&   r    ri  r
   r   r#   r  r   r?  s   &     r/   test_standard_deviation06r    s    ZZ(F		"	"DB%EJJ/uJ=E//rzz)4F &fjj.IJ  
#	"	"	"r  c           
         V P                  ^.4      p\        P                  ! RR7      ;_uu_ 4        \         F  p\	        V 4      '       d   VR8X  d   \
        P                  ! R4       \        W4      pV P                  R.VR7      p\        P                  ! WAV P                  ^.4      4      p\        WPP                  ^ .4      4       K  	  RRR4       R#   + '       g   i     R# ; i)r   rf  rg  uint8z8value cannot be converted to type uint8 without overflowr   Ngl `y)r&   r    ri  r
   r   pytestxfailr   r#   r  r   r?  s   &     r/   test_standard_deviation07r    s    ZZ_F		"	"D|| 0 1B%EJJ}EJ:E//rzz1#OF%fjj!o>  
#	"	"	"s   BCC*	c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         FG  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      pVR8X  d   KG  Q h	  R# )r   r   r<  Nr   r   )r    r&   r>  r
   r   r#   minimum_positionr?  s   &     r/   test_minimum_position01r     su    ZZAd+FZZF!

QFQF+5
9))%?	 r2   c                     \          FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! V4      pVR8X  d   KI  Q h	  R# rv   r   Nrv   r   r   rv   rz   r   r   r   r   rv   r   r   r   r   )r
   r   r&   r#   r  r,  s   &    r/   test_minimum_position02r  +  Y    !

L((*16  8 ))%0 r2   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# r  r    r&   r>  r#   r  r  s   &  r/   test_minimum_position03r  6  N    JJ$$&-13E JJuE%%e,FVr2   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# )rv   r   Nr  )rz   r   r   r   r  r  r  r  s   &  r/   test_minimum_position04r  @  r  r2   c                     V P                  . RO4      p\         FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA4      pVR8X  d   KI  Q h	  R# )r   r   Nr   r   r   r   r  r  )r   rv   r   rz   )r   r   r&   r
   r   r#   r  r?  s   &     r/   test_minimum_position05r  J  g    ZZ%F!

L((*16  8 ))%8 r2   c                     V P                  . RO4      p\         FJ  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA^4      pVR8X  d   KJ  Q h	  R# )r   r   Nr   r   rz   r   r  r  r  r   r   r  r?  s   &     r/   test_minimum_position06r  V  i    ZZ%F!

L((*16  8 ))%; r2   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      pV^ ,          R8X  g   Q hV^,          R8X  d   Kr  Q h	  R# )	r   r   Nr  r  r  r  r  r  r  r?  s   &     r/   test_minimum_position07r  b      ZZ%F!

L((*16  8 ))%*,**aV*<>ayF"""ayF""" r2   c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         FH  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! VVR7      pVR8X  d   KH  Q h	  R# )r   r   r<  Nr   r   )r    r&   r>  r
   r   r#   maximum_positionr?  s   &     r/   test_maximum_position01r  p  sz    ZZAd+FZZF!

QFQF+5
9))%179 r2   c                     \          FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! V4      pVR8X  d   KI  Q h	  R# )rv   r   Nr  rz   r   rU  r   r  r  )r
   r   r&   r#   r  r,  s   &    r/   test_maximum_position02r  |  r  r2   c                     \         P                  ! . RO. RO. RO.\        R7      pV P                  V4      p\        P                  ! V4      pVR8X  g   Q hR# )rv   r   Nr  r  r  r  )r    r&   r>  r#   r  r  s   &  r/   test_maximum_position03r    r  r2   c                     V P                  . RO4      p\         FI  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA4      pVR8X  d   KI  Q h	  R# )r   r   Nr  r  r  r  r   r   r&   r
   r   r#   r  r?  s   &     r/   test_maximum_position04r    r  r2   c                     V P                  . RO4      p\         FJ  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WA^4      pVR8X  d   KJ  Q h	  R# )r   r   Nr  r  r  r  r  r  r?  s   &     r/   test_maximum_position05r    r  r2   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      pV^ ,          R8X  g   Q hV^,          R8X  d   Kr  Q h	  R# )	r   r   Nr  r  r  r  r  r  r  r?  s   &     r/   test_maximum_position06r    r  r2   c           	      $   V P                  . RO4      p\         Fr  p\        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  R R.4      4      pV^ ,          R8X  g   Q hV^,          R	8X  d   Kr  Q h	  R# )
r         @r   N)r   rh  rE   r  r  r  r  r  )r   rz   r  r?  s   &     r/   test_maximum_position07r    s     ZZ,-F!

L((*16  8 ))%*,**c3Z*@BayF"""ayF""" r2   c                    \         P                  ! ^^ .\        R7      pV P                  V4      p\         F  p\	        W4      pV P                  ^^.^^..VR7      p\
        P                  ! WAR7      p\
        P                  ! WAR7      p\
        P                  ! WAR7      p\
        P                  ! VVR7      p\
        P                  ! VVR7      p	WVWxV	38X  d   K  Q h	  R# rD  )r    r&   r>  r
   r   r#   extremarm  ry  r  r  
r)   r   r   r^   r-  output1output2output3output4output5s
   &         r/   test_extrema01r    s     ZZAd+FZZF!

QFQF+5
9//%7//%7//%7**528:**528:Gg>>>> r2   c                    V P                  ^^.4      p\         F  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! WA^R7      p\        P
                  ! WA^R7      p\        P                  ! WA^R7      p\        P                  ! VV^R7      p\        P                  ! VV^R7      p	WVWxV	38X  d   K  Q h	  R# )r   r   r   N)	r&   r
   r   r#   r  rm  ry  r  r  r  s
   &         r/   test_extrema02r    s     ZZAF!

QFQF+5
9//%()+//%()+//%()+**528C**528CGg>>>> r2   c           	      $   V P                  ^^.^^..4      p\         EFm  p\        V 4      '       d   VR9   d   \        P                  ! R4       \        W4      pV P                  ^^.^^..VR7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! WAV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p\        P                  ! VVV P                  . RO4      R7      p	\        V^ ,          V4       \        V^,          V4       V^,          V8X  g   Q hV^,          V	8X  d   EKn  Q h	  R# )r   /https://github.com/pytorch/pytorch/issues/58734r   r   Nuint16uint32uint64ru  r&   r
   r   r  r  r   r#   r  rm  ry  r  r  r   r  s
   &         r/   test_extrema03r    sX    ZZ!Q!Q()FB<<D$BB\\KL!

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

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

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

9(=?**52813I1FH **52813I1FH 	"'!*g6!'!*g6qzW$$$qzW$$$/ r2   c           	         V P                  . RO4      p\         EFg  p\        V 4      '       d   VR9   d   \        P                  ! R4       \        W4      pV P                  . RO. RO. RO.VR7      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p\        P                  ! WAV P                  ^^.4      4      p	\        V^ ,          V4       \        V^,          V4       V^,          V8X  g   Q hV^,          V	8X  d   EKh  Q h	  R# )	r   r  r   Nr  r	  r  r  r  r  r  s
   &         r/   test_extrema04r  
  sF    ZZ%FB<<D$BB\\KL!

L((*16  8 //%QF1CD//%QF1CD//%QF1CD**5+-::q!f+=?**5+-::q!f+=?!'!*g6!'!*g6qzW$$$qzW$$$% r2   c                     Rp\          FE  p\        W4      pV P                  ^^ .^ ^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )rE   r   N)rE   rE   r
   r   r&   r#   center_of_massr)   r   r   r^   r-  r   s   &     r/   test_center_of_mass01r  #  V    H!

QFQF+5
9''.!!!	 r2   c                     Rp\          FE  p\        W4      pV P                  ^ ^ .^^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r/   test_center_of_mass02r  -  V    H!

QFQF+5
9''.!!!	 r2   c                     Rp\          FE  p\        W4      pV P                  ^ ^.^ ^ ..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r/   test_center_of_mass03r  7  r  r2   c                     Rp\          FE  p\        W4      pV P                  ^ ^ .^ ^..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# )r   r   Nr  r  r  s   &     r/   test_center_of_mass04r  A  r  r2   c                     Rp\          FE  p\        W4      pV P                  ^^.^^..VR7      p\        P                  ! V4      pWQ8X  d   KE  Q h	  R# r;   r   N)r;   r;   r  r  s   &     r/   test_center_of_mass05r   K  r  r2   c                     Rp\         P                  ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! V4      pW18X  g   Q hR# r  )r    r&   r>  r#   r  r)   r   r-  r   s   &   r/   test_center_of_mass06r#  U  sN    HJJAA't4EJJuE##E*Fr2   c                     V P                  ^^ .4      pRp\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! W14      pWB8X  g   Q hR# )r   r   Nr;   rE   r&   r    r>  r#   r  r)   r   r   r-  r   s   &    r/   test_center_of_mass07r(  ^  s`    ZZAFHJJAA't4EJJuE##E2Fr2   c                     V P                  ^^.4      pRp\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P                  ! W1^4      pWB8X  g   Q hR# )r   r   Nr;   r   r&  r'  s   &    r/   test_center_of_mass08r+  h  sb    ZZAFHJJAA't4EJJuE##E15Fr2   c                 p   V P                  R4      pV P                  RR.V P                  R7      p\        P                   ! ^^.^^..\        R7      pV P                  V4      p\        P
                  ! W1V P                  ^^.4      4      p\        V P                  V4      V P                  V4      4       R# )r   r   Nr  r%  r*  )r&   float64r    r>  r#   r  r   r'  s   &    r/   test_center_of_mass09r.  r  s    ZZFzz:z2"**zEHJJAA't4EJJuE##E2::q!f3EFFBJJv&

8(<=r2   c                     V P                  ^
4      pV P                  ^
4      p\        P                  ! V^ ^
^
4      p\	        W14       R# )r   N)re   aranger#   	histogramr   r"  s   &   r/   test_histogram01r2  |  s:    wwr{HIIbMEuaR0Ff/r2   c                     V P                  . RO4      pV P                  . RO4      pV P                  . RO4      p\        P                  ! V^ ^^V^4      p\        WB4       R# )r   N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   rz   r   rz   rz   rz   rz   r&   r#   r1  r   r'  s   &    r/   test_histogram02r5    sP    ZZ01Fzz/*HJJ/0EuaAvq9Ff/r2   zobject arraysc                     V P                  . RO4      pV P                  . RO4      pV P                  . RO4      pV P                  . RO4      p\        P                  ! V^ ^^VR4      p\        V^ ,          V4       \        V^,          V4       R# )r   N)r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   rz   r   )r   r   rz   r   rz   rv   rz   rz   r  r4  )r)   r   	expected1	expected2r-  r   s   &     r/   test_histogram03r9    st     ZZ01F

?+I

?+IJJ/0EuaAvv>FfQi3fQi3r2   c           
      0   V P                  . R
O. RO. RO.4      pV P                  . RO. RO. RO.4      p\        P                  ! WV P                  ^^.4      R7      p\        W0P                  RR.V P                  R7      4       \        P
                  ! WV P                  ^^.4      R7      p\        W@P                  RR.V P                  R7      4       \        P                  ! WV P                  ^^.4      R7      p\        WPP                  V P                  RR.V P                  R7      4      4       \        P                  ! WV P                  ^^.4      R7      p\        W`P                  RR.V P                  R7      4       \        P                  ! WV P                  ^^.4      R7      p\        WpP                  ^^.4      RR7       \        P                  ! WV P                  ^^.4      R7      p\        WP                  ^	^.4      RR7       R	# )rv   r   rV   rG  r   rh  r   Fr   N)rv   r   r   r   r   )rU  r5   r   r   r   )r   r   r   rz   rv   )r   r   r   r   r   )r   r   r   r   r   )r&   r#   r^  r   r-  r  r  r   sqrtr  rm  ry  )	r)   r   lblr^  varstdmedminmaxs	   &        r/   test_stat_funcs_2drB    s    	

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

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

:+S#TU
..bjj!Q.@
ACCS#JbjjAB
//!rzz1a&/A
BCCQF+?
//!rzz1a&/A
BCCQF+?r2   no watershed_ift on CuPyc                      a  ] tR tRt o R tR tR tR tR tR t	]
! RR	R
7      R 4       t]
! RRR7      R 4       t]
! RRR7      R 4       tRtV tR# )TestWatershedIfti  c                   VP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O. R
O.p\        WQP                  V4      4       R# )r   r   	structureNr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r&   r  rP  r#   watershed_iftr   r(   r)   rh   markersrH  ri   r   s   &&     r/   test_watershed_ift01%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'') *	 ##DYG0+++++002 	"#zz(';<r2   c                n   VP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO. RO.VP                  R7      p\        P                  ! W#4      p. RO. R	O. R
O. R
O. R
O. R	O. RO. RO.p\        WAP                  V4      4       R# )r   r   NrI  rJ  rK  rL  rM  rO  )r   r   r   r   r   r   r   rP  rQ  r(   r)   rh   rT  ri   r   s   &&    r/   test_watershed_ift02%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 	"#zz(';<r2   c           
     \   VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      p\        P                  ! W#4      p. RO. R	O. R
O. R
O. R
O. R	O. RO.p\        WAP                  V4      4       R# )r   r   NrI  rJ  r   r   r   r   r   r   r   r   r   r   r   rz   r   r   r   r   r   r   r   r   r   rO  )r   r   r   r   rz   r   r   r   r   r   rz   rz   rz   r   rQ  rX  s   &&    r/   test_watershed_ift03%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 	"#zz(';<r2   c           
        VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O.p\        WQP                  V4      4       R# )r   r   rG  NrI  rJ  r\  r]  r^  rN  rO  r_  rQ  rS  s   &&     r/   test_watershed_ift04%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'') *	 ##DYG0+++++02 	"#zz(';<r2   c           
        VP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. RO. RO. RO. RO. RO. R
O.p\        WQP                  V4      4       R# )r   r   rG  NrI  rJ  r\  )r   r   rz   r   r   r   r   r^  rN  rO  )r   rz   rz   r   r   r   r   rQ  rS  s   &&     r/   test_watershed_ift05%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	 ) ) + ,	 ##DYG0+++++02 	"#zz(';<r2   c           	        VP                  . RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . RO. RO. RO. RO. RO. RO.VP                  R7      pVP                  . R	O. R	O. R	O.4      p\        P                  ! W#VR7      p. R
O. R
O. R
O. R
O. RO. RO.p\        WQP                  V4      4       R# )r   r   rG  NrK  rJ  rI  rL  rM  rN  rP  rO  rQ  rS  s   &&     r/   test_watershed_ift06%TestWatershedIft.test_watershed_ift06F  s    zz0000002
 :<  C **4333335
 =?GG  E **i'') *	 ##DYG++++002 	"#zz(';<r2   Tzinplace ops are numpy-specificr   c           	     ~   Rp\         P                  ! V\         P                  R7      pVP                  4       p\         P                  ! . RO. RO. RO. RO. RO. RO.\         P                  R7      VR&   VP	                  V4      pVP	                  . R	O. R
O. RO. RO. RO. RO.VP
                  R7      pVP                  W!P                  R7      pVP                  pVP	                  . RO. RO. RO.4      p\        P                  ! W4VVR7       . RO. RO. RO. RO. RO. RO.p\        WQP	                  V4      4       R# )r   r   .)rH  r   N)r   r   rK  rJ  rI  rL  rM  rN  rP  rO  )r    rm   r  	transposer&   rP  int16Tr#   rR  r   )r(   r)   r   rh   rT  ri   rH  r   s   &&      r/   test_watershed_ift07%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 hhuHHh-ee**i'') *	 	dy%(	*++++002 	"#zz(';<r2   r   rC  r   c                   VP                  R ^ .^ ^ ..VP                  R7      pVP                  ^^ .^ ^ ..VP                  R7      p\        P                  ! W#4      p^^.^^..p\        WAP                  V4      4       R# )   r   N)r&   r
  rP  r#   rR  r   rX  s   &&    r/   test_watershed_ift08%TestWatershedIft.test_watershed_ift08  s     zzC8q6#*,))  5**q!f !f&-/WW  6##D2FF!#zz(';<r2   c                L   VP                  VP                  VP                  4      P                  ^ .^ ^ ..VP                  R7      pVP                  ^^ .^ ^ ..VP                  R7      p\
        P                  ! W#4      p^^.^^..p\        WAP                  V4      RR7       R# )r   r   Fr   N)r&   iinfor
  rA  rP  r#   rR  r   rX  s   &&    r/   test_watershed_ift09%TestWatershedIft.test_watershed_ift09  s     zzBHHRYY/33Q7q6#*,))  5**q!f !f&-/WW  6##D2FFZZ1uEr2   rI   N)rJ   rK   rL   rM   rU  rY  r`  rc  rf  ri  skip_xp_backendsro  rs  rw  rO   rP   rQ   s   @r/   rE  rE    s}     =>=8=2=<=:=2 d+KL= M=@ f%?@	= A	= f%?@	F A	Fr2   rE  )r   dtc                     \         P                  P                  ^{4      p^pVP                  ^ VRR7      P	                  V R7      p\
        P                  ! V4      p\        VP                  4       4      V8X  g   Q hR# ){   )lowhighr   r   N)r      )	r    r   default_rngintegersastyper#   r  r]   r  )rz  r)   rngmax_valimageval_idxs   &&    r/   test_gh_19423r    sh     ))


$CGLLQW8L<CC"CME##E*Gw||~')))r2   )r   os.pathr  numpyr    scipy._lib._array_apir   r   r   r   r   r   r  r	   r   scipy.ndimager#    r
   markry  uses_xp_capabilitiesr   rT   rf   rk   rn   rr   rt   rw   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   r)  r+  r.  r0  r4  r8  r:  r@  rB  rE  rH  rM  rQ  rV  rX  r\  r^  r_  rb  rd  rk  rm  rn  rq  rs  rv  ry  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  r  r  r  r   r#  r(  r+  r.  r1  r2  r5  r9  rB  rR  rE  parametrizeintcuintcr  rI   r2   r/   <module>r     sB   	      *  ;;//  $'IJ!!%	!:O= O= ; KO=d $'IJ!!%	!:#/ #/ ; K#/L 7==! " 7==! " 7==! " 7==! " 7==! " 7==! " 7==! "$ 7==! "" 7==! "& 7==! " 7==! "* $'IJ7==! " K* 7==! "& 7==! "$ $F89;7==! "; $F89;7==!! ";! $'JK7==!F " LF 7==! ". 7=='"6"67 8$ 7==!	5 "	5 7=='"6"67TC TC 8TCn 7(()' *', 7(()$ *$ 7(()/ */" 7;;   7;;   7;;E  E 7;;E  E 7;;F  F 7;;   7;;   7;;   7;;E  E 7;;A  A 7;;E  E 7;;G  G 7;; 2 23
N 4
N 7<< E !E 7<< A !A 7<< E !E 7<< ' !' 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#E $E 7??#A $A 7??#E $E 7??#G $G 7??#$ $$ 7>>"
C #
C 7>>"A #A 7>>"
A #
A 7>>"9 #9 7>>": #: 7##$$ %$ 7##$E %E 7##$E %E 7##$B %B 7##$E %E 7##$K %K 7--.$ /$ 7--.E /E 7--.E /E 7--.A /A 7--.E /E 7--.	K /	K 7--.
? /
? 7++,  -  7++,  -  7++, - 7++, - 7++,  -  7++,  -  7++,
# -
# 7++,  -  7++,  -  7++, - 7++,  -  7++,  -  7++,
# -
# 7++,# -# 7??GOOW__++W-E-EG?G?  7??GOOW__++W-E-EG?G?$ 7??GOOW__++W-E-EG%G%8 7??GOOW__++W-E-EG%G%. 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))*" +" 7))* + 7))* + 7))* + 7))*> +> 7$$%0 &0 7$$%0 &0 $77$$%	4 & 8	4 7<<!1!173M3M>>7??GOOE@E@. &!;<7(()aF aF * =aFH $237(()* * 4  *r2   