L i2*ddlZddlZddlZddlmZddlmZmZm Z m Z m Z ddl Z ddl m ZddlmZddlmZe j&j(Zeddd g gZej,d k(xrej.d kZedd GddZedd GddZdZdZdZdZdZdZ dZ!dZ"dZ#dZ$dZ%edddZ&d Z'd!Z(eddgd"#d$Z)eddgd"#d%Z*edd&d'Z+d(Z,edd)*d+Z-d,Z.edd-*Gd.d/Z/d0Z0d1Z1d2Z2d3Z3d4Z4d5Z5d6Z6d7Z7d8Z8d9Z9d:Z:d;Z;d<ZZ>d?Z?d@Z@dAZAdBZBdCZCdDZDdEZEdFZFdGZGdHZHdIZIdJZJdKZKdLZLdMZMdNZNdOZOdPZPdQZQdRZRdSZSdTZTdUZUdVZVdWZWdXZXdYZYdZZZd[Z[d\Z\d]Z]d^Z^d_Z_d`Z`daZadbZbdcZcddZddeZedfZfdgZgdhZhdiZidjZjdkZkdlZldmZmdnZndoZodpZpdqZqdrZrdsZsdtZtduZudvZvdwZwdxZxdyZydzZzd{Z{edd|d}Z|d~Z}edd*GddZ~ede j&jdejejgdZy)N)suppress_warnings)is_torchxp_assert_equalxp_assert_closeassert_array_almost_equalassert_almost_equal)raises)typesTcupyz jax.numpy)cpu_only exceptionsnt2z test internal numpy-only helpersnp_onlyreasonc.eZdZdZdZdZdZdZdZy)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 gd}gd}ddg}dD]}tj|j|}tj|j|}tjj |||\}}t rdtjini}t|tjddgfi|t|tjd d gy) Nrr rrr r rr ))rrlabelsindexdtyper? @ nparrayreshapendimage _measurements_statsIS_WINDOWS_AND_NP1int64rasarray selfxpxrrshpcountssums dtype_args k/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_measurements.pytest_azTest_measurements_stats.test_a#s A! :C ##C(AXXf%--c2F"0077&8/LFD0B"((+rI FBJJ1v$C$C D D"**c3Z"8 9 :c gd}gd}ddg}dD]}tj|j|}tj|j|}tjj |||\}}t rdtjini}t|tjddgfi|t|tjd d gy) Nrrr r:rr:rrr rr!r"r#r-s r5test_bzTest_measurements_stats.test_b1s A! :C ##C(AXXf%--c2F"0077&8/LFD0B"((+rI FBJJ1v$C$C D D"**c3Z"8 9 :r7c gd}gd}ddg}dD]}tj|j|}tj|j|}tjj |||d\}}}t rdtjini} t|tjd d gfi| t|tjd d gt|tjd d gy) Nrrrr rTrrcenteredr rr!r"?r# r.r/r0rrr1r2r3centersr4s r5test_a_centeredz'Test_measurements_stats.test_a_centeredA A! =C ##C(AXXf%--c2F$+$9$9$@$@&%A%> !FD'0B"((+rI FBJJ1v$C$C D D"**c3Z"8 9 GRZZc %; < =r7c gd}gd}ddg}dD]}tj|j|}tj|j|}tjj |||d\}}}t rdtjini} t|tjd d gfi| t|tjd d gt|tjd d gy) Nrr9rr:rTr=r rr!r"r?r#r@s r5test_b_centeredz'Test_measurements_stats.test_b_centeredPrCr7c gd}gd}ddg}dD]}tj|j|}tj|j|}tjj |||d\}}}t rdtjini} t|tjd d gfi| t|tjd d gt|tjd d gy) Nr)rG"@rHrGrHrTr=r rr!r"r?r#r@s r5test_nonint_labelsz*Test_measurements_stats.test_nonint_labels_s %c ! =C ##C(AXXf%--c2F$+$9$9$@$@&%A%> !FD'0B"((+rI FBJJ1v$C$C D D"**c3Z"8 9 GRZZc %; < =r7N) __name__ __module__ __qualname____doc__r6r;rBrErIr7r5rrs  :: = = =r7rceZdZdZdZy)Test_measurements_selectzEndimage._measurements._select() is a utility used by other functions.cgd}gdddgfgdddgfgddd gfg}|D]\}}tjj||| }t|dk(sJtjj|||d }t|dk(sJt |ddd gtjj|||d }t|dk(sJt |dddgtjj|||d d }t|dk(sJt |dddgt |dddg|dj j dk(sJtjj|||d d }t|dk(sJt |ddd gt |dddg|dj j dk(rJy)N)rr rrrrr r9r:)rGrG@rRrGrRrT)rrfind_maxr)rrfind_minr)rrrTfind_min_positionsi)rrrSfind_max_positions)r'r(_selectlenrr kind)r.r/r0casesrrresults r5 test_basicz#Test_measurements_select.test_basicss  Aq6 " Aq6 " !C: .  # /MFE**22&3/Fv;!# ##**22&3>Fv;!# ## F1I1v .**22&3>Fv;!# ## F1I1v .**22&#'3)Fv;!# ## F1I1v . F1I1v .!9??''3. ..**22&#'3)Fv;!# ## F1I1v . F1I1v .!9??''3. ..3 /r7N)rJrKrLrMr^rNr7r5rPrPos O /r7rPcr|jd}tj|\}}|dk(sJ|dk(sJy)NrNr )onesr'labelr/dataoutns r5 test_label01rfs7 772;D ]]4 FC !8O8 6M6r7cr|jd}tj|\}}|dk(sJ|dk(sJy)NrNr)zerosr'rarbs r5 test_label02ris7 88B? 6M6r7c|jgd}tj|\}}t||jgd|dk(sJy)N)r rr r rr r rrrrrVrVr,r'rarrbs r5 test_label06rusB ::( )D ]]4 FCc2::.@#AB 6M6r7c |jgdgdgdgdgdgdg}tj|\}}t||jgdgdgdgdgdgdg|dk(sJy)Nrrrrrrrrtrbs r5 test_label07rxst ::)))))) + ,D ]]4 FCc2::%7%7%7%7%7%7 %9$:; 6M6r7c |jgdgdgdgdgdgdg}tj|\}}t||jgdgdgdgdgdgd g|d k(sJy) Nr rrrrrrrr r rrrrr r r rr r rrrrrrrr r rrrrrrrrrrrrrrVrVrrrrrrrrrrrrtrbs r5 test_label08rsw ::)))))) + ,D ]]4 FCc2::/A/A/A/A/A/A /C$DE 6M6r7c 2|jgdgdgdgdgdgdg}tjdd}|j|}tj||\}}t ||jgdgdgdgd gd gd g|d k(sJy) Nrzr{r|r}r~rrr)rrrrrr)rrrrVrVrrVr,r'generate_binary_structurerarr/rcstructrdres r5 test_label09rs ::)))))) + ,D  . .q! 4F ZZ F ]]4 (FCc2::/A/A/A/A/A/A /C$DE 6M6r7c |jgdgdgdgdg}tjdd}|j|}tj||\}}t ||jgdgdgdgdg|dk(sJy)Nrw)rr r rr r)rr r r r rrr rrs r5 test_label10rs ::))))+ ,D . .q! 4F ZZ F ]]4 (FCc2::/A/A/A/A/C$DE 6M6r7c tD]}t||}|jgdgdgdgdgdgdg|}tj|\}}gdgdgdgd gd gd g}|j|}t |||d k(rJy) Nrzr{r|r}r~r rrrrrr getattrr,r'rarr/typer rcrdreexpecteds r5 test_label11rsD!zz------ / 7< = t$Q&&&&&& ( ::h'!#x0Av v#r7z inplace output is numpy-specificc tD]}t||}|jgdgdgdgdgdgdg|}tj||}gdgdgd gd gd gd g}|j|}t |||d k(rJy) Nrzr{r|r}r~routputrrrrrr)r/rr rcrers r5test_label11_inplacersD!zz------ / 7< = MM$t ,&&&&&& ( ::h'!$1Av v#r7c tD]}}t||}|jgdgdgdgdgdg|}tj|\}}gdgdgdgdgdg}|j|}t |||dk(r}Jy)N)rrrrr r )rrrrrr )rrr rr r )rrr r r r r~rr rrs r5 test_label12r0sD!zz----- /7< = t$Q&&&&& ( ::h'!#x0Av vr7ctD]w}t||}|jgdgdgdgdg|}tj|\}}gdgdgdgdg}|j|}t |||dk(rwJy)N) r rr r r rr r r rr ) r r r rr r r rr r r ) r rrrrrrrrrr ) r r r r r r r r r r r rr rrs r5 test_label13rCsD!zz<<<<>!& ' t$Q55557::h'!#x0Av vr7zoutput=dtype is numpy-specific)rrrc|jdg}tD]q}t||}|jdg|}t j ||}t ||j|j|j|dk(rqJy)Nrprrr ) r`r rrhr'rarshaper r/rctr rres r5test_label_output_typedrUs 77A3@AG << #D ^^J 'Fooj)G ::d D ZZ Fjj!G A 4::a= ! AqMv||A' Aq!QwA GMM!Q/2GAq!G4DRW X FA r7z2`cupyx.scipy.ndimage` does not have `find_objects`rc>dfd }tjtjtjdk7r]d}tjj tj |j |}j|}||yy)Nc||kD}t|j}tj||} j |}tj ||\}}tj |}y)N)rZrr'rr,ra find_objects) imgthreshsizemaskrankrlaco_r/s r5SEztest_ticket_742..SEs`V|4::224>F#t%'B   $r7rW)rVr)gffffff?r)r$r intprandomrandprodr&r,)r/rras` r5test_ticket_742rsj% xxBHHSM) IINN2775> * 2 25 9 JJqM 1 *r7ctjd}d|ddddf<d|ddddf<d|d<d|d<d|d<|j|}tj||j d ddk(sJy) z/Github issue #3025 - improper merging of labels)<i@r Ni)$r)#i)ri)rVrV)r$rhr,r'rar`)r/rs r5test_gh_issue_3025rs~ AAa#gJAagJAgJAgJAgJ 1 A ==BGGFO ,Q /1 44 4r7z-cupyx.scipy.ndimage does not have find_objectcHeZdZdZdZdZdZdZdZdZ dZ d Z d Z y ) TestFindObjectsctjjdd}|j|}t j |dkD\}}|j |j|jfvsJt j|y)Nrr?) r$rrr,r'rar int32r+r)r.r/ test_arrayra no_featuress r5test_label_default_dtypez(TestFindObjects.test_label_default_dtypesiYY^^B+ ZZ + $]]:+;<{{{rxx2222U#r7cx|jg|j}tj|}|dgk(sJy)NrrN)r`r+r'rr.r/rcrds r5test_find_objects01z#TestFindObjects.test_find_objects01s6wwrw*""4(rd{{r7cv|jg|j}tj|}|gk(sJy)Nrrhr+r'rrs r5test_find_objects02z#TestFindObjects.test_find_objects02s4xx"((x+""4(byyr7c|jdg|j}tj|}|t dddfgk(sJy)Nr rrr`r+r'rslicers r5test_find_objects03z#TestFindObjects.test_find_objects03Gwws"((w+""4(aD)+,,,,r7cx|jdg|j}tj|}|gk(sJy)Nr rrrs r5test_find_objects04z#TestFindObjects.test_find_objects04s6xx288x,""4(byyr7c|jdg|j}tj|}|t dddfgk(sJy)Nrprrrrs r5test_find_objects05z#TestFindObjects.test_find_objects05rr7c|jgd}tj|}|tdddftdddftdddfgk(sJy)Nrsrr rrrprr,r'rrrs r5test_find_objects06z#TestFindObjects.test_find_objects06sdzz,-""4(aD)+aD)+aD)+-- --r7c |jgdgdgdgdgdgdg}tj|}|gk(sJy)Nrw)r,r'rrs r5test_find_objects07z#TestFindObjects.test_find_objects07sEzz------ /0 ""4(byyr7c J|jgdgdgdgdgdgdg}tj|}|tdddtdddftdddtd d dftdd dtdd dftd d dtdd dfgk(sJy) Nrzrrrrrr rVrrprrrs r5test_find_objects08z#TestFindObjects.test_find_objects08szz------ /0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@A!!Q-uQ4/@ACC CCr7c |jgdgdgdgdgdgdg}tj|}|tdddtdddftdddtd d dfdtd d dtdd dfgk(sJy) Nrzrrrwrrr rVrrprrrs r5test_find_objects09z#TestFindObjects.test_find_objects09szz------ /0 ""4(aD)5At+<=!!Q-uQ4/@A!!Q-uQ4/@ACC CCr7N) rJrKrLrrrrrrrrrrrNr7r5rrs6$  -  - - C Cr7rc 2|jgdgdgdgdgdgdg}tj|d}gd}t|j |k(sJ|Dcic]}||j ||k(}}tj|d}|j |j k(sJ|j D]G}t ||t ||k(sJt||||D]\}}t||Iy cc}w) z Test dictionary keys and entriesrzrrrwrr) ignore_value)r rrN) r,r' value_indiceslistkeysnonzerorZzipr) r/rcvi true_keysktruevikeyvtrue_vs r5test_value_indices01rs ::)))))) + ,D   t! 4BI  ?i '' '09 :1aDAI&& :F :   t! 4B 779 %% %wwy'2c7|s6#;////RWfSk2 'IAv Av & '' ;s!Dc|jd|j}d}tt|5t j |dddy#1swYyxYw)zTest input checking)rprrz(Parameter 'arr' must be an integer array)matchN)rhfloat32rrr'r)r/rcmsgs r5test_value_indices02rsJ 88F"**8 -D 4C z -$d#$$$s AAc`dD]#}tjddgzddgzzddgzztj}tj||}tj|}|j|}t j |}t|jt|k(sJ|Dcgc] }t|c}D]U}|j||k(}t||t|k(sJt|||D]\}} t|| W&ycc}w)z2Test different input array shapes, from 1-D to 4-D))r)r)rVrVr)rVrVrr r rrVrN)r$r,rr&uniquer'rrrintrrZrr) r/rrtrueKeysrr0rtrueNdxviktrue_viks r5test_value_indices03r"s : / JJA3r1#v b!f,RXX > JJq% 99Q< JJqM  " "1 %BGGI$x.000"*+Q#a&+ /Ajja(Gr!u:W- --!$RUG!4 / XX. / / /,s:D+ctD]=}t||}|jg|}tj|}|dk(r=Jy)Nrr)r rr,r'sumr/rr inputrs r5 test_sum01r3sID! 2U +U#{{ r7ctD]?}t||}|jddg|}tj|}|dk(r?Jy)Nrrr)r rrhr'rrs r5 test_sum02r;sMD!!Qu-U#{{ r7ctD]S}t||}|jg|}tj|}t ||j ddUy)Nrr!Fcheck_0d)r rr`r'rrr,rs r5 test_sum03rCsSED!%(U#FBJJsOeD Er7ctD]U}t||}|jddg|}tj|}t ||jddWy)Nr rr@Frr rr,r'rrrs r5 test_sum04r KsWED! Aq6 /U#FBJJsOeD Er7ctD]Y}t||}|jddgddgg|}tj|}t ||jdd[y) Nr rrVrrg$@Frrrs r5 test_sum05r"SsaFD! QFQF+5 9U#FBJJt$4uE Fr7ctjgt}|j|}tD]?}t ||}|jg|}t j ||}|dk(r?Jy)Nrrrr$r,boolr rr'rr/rrr rrs r5 test_sum06r([si ZZ$ 'F ZZ FD! 2U +U62{{ r7ctjddgt}|j|}tD]A}t ||}|j ddg|}tj||}|dk(rAJy)Nrrrr$) r$r`r&r,r rrhr'rr's r5 test_sum07r*esq WWaV4 (F ZZ FD!!Qu-U62{{ r7ctjddgt}|j|}tD]A}t ||}|jddg|}t j ||}|dk(rAJy)Nr rrrr$r%r's r5 test_sum08r,osq ZZAd +F ZZ FD! Aq6 /U62{{ r7c(tjddgt}|j|}tD][}t ||}|jddgddgg|}t j ||}t||jdd ]y) Nr rrrrVrr$@Fr)r$r,r&r rr'rrr's r5 test_sum09r/ys ZZAd +F ZZ FED! QFQF+5 9U62FBJJsOeD Er7c,tjddgt}tjddgddggt}|j|}|j|}tj||}t ||jdd y Nr rrrrVrr$@Fr)r$r,r&r'rrr/rrrs r5 test_sum10r4ss ZZAd +F JJAA't 4E ZZ F JJu E [[v .F 3%@r7c |jddg|j}tD]\}t||}|jddgddgg|}t j ||d}t ||jdd ^y) Nr rrrVrr@Fr)r,int8r rr'rrr's r5 test_sum11r8s ZZAbggZ .FED! QFQF+5 9U6#$&FBJJsOeD Er7c 6|jddgddgg|j}tD]m}t||}|jddgddgg|}t j |||jgd}t ||jgdoy Nr rrrrVrrr)r.rGg@)r,r7r rr'rrr's r5 test_sum12r=s ZZ!Q!Q(Z 8FGD! QFQF+5 9U6I9NO!&"**_*EF Gr7c |jddgddgg|j}tD]}t||}|jddgddgg|}t j |||jgd}t j |||jgd}|j||k(sJt||jgdyr:) r,r7r rr'r sum_labelsallr)r/rrr r output_sum output_labelss r5test_sum_labelsrCs ZZ!Q!Q(Z 8FND! QFQF+5 9[[vRZZ =RS ** & 9(=? vvjM1222!-O1LMNr7c(tjddgt}|j|}tD][}t ||}|jddgddgg|}t j ||}t||jdd ]yr1)r$r,r&r rr'meanrr's r5 test_mean01rFs ZZAd +F ZZ FED! QFQF+5 9eF3FBJJsOeD Er7c,tjddgt}tjddgddggt}|j|}|j|}tj||}t ||jdd y Nr rrrrVrr$r!Fr)r$r,r&r'rErr3s r5 test_mean02rIss ZZAd +F JJAA't 4E ZZ F JJu E \\% /F 3%@r7c|jddg}tD]\}t||}|jddgddgg|}tj||d}t ||jdd ^y) Nr rrVrrrrFr)r,r rr'rErr's r5 test_mean03rKsy ZZA FED! QFQF+5 9eF$%'FBJJsOeD Er7c |jddgddgg|j}tjd5tD]z}t ||}|jddgddgg|}t j|||jgd }|d d k(sJ|dd k(sJ|j|drzJ dddy#1swYyxYw) Nr rrrignorer@rVr;rrr.@) r,r7r$errstater rr'rEisnanr's r5 test_mean04rRs ZZ!Q!Q(Z 8F  " ' 'DB%EJJAA/uJ=E\\%(* 9(=?F!9# ##!9# ##88F1I& && ' ' ' 'sBC;CCc(tjddgt}|j|}tD][}t ||}|jddgddgg|}t j ||}t||jdd ]yrH)r$r,r&r rr'minimumrr's r5test_minimum01rU ZZAd +F ZZ FED! QFQF+5 9v6FBJJsOeD Er7c,tjddgt}tjddgddggt}|j|}|j|}tj||}t ||jdd y Nr rrrrr$r!Fr)r$r,r&r'rTrr3s r5test_minimum02rYss ZZAd +F JJAA't 4E ZZ F JJu E __U6 2F 3%@r7c|jddg}tD]\}t||}|jddgddgg|}tj||d}t ||jdd ^y) Nr rrVrrrr2Fr)r,r rr'rTrr's r5test_minimum03r[sy ZZA FED! QFQF+5 9v'(*FBJJsOeD Er7c |jddgddgg}tD]m}t||}|jddgddgg|}tj|||jgd}t ||jgdoy) Nr rrVrrrrVr<r)r2r.rG)r,r rr'rTrr's r5test_minimum04r^ ZZ!Q!Q( )FGD! QFQF+5 9v')zz)'<>!&"**_*EF Gr7c(tjddgt}|j|}tD][}t ||}|jddgddgg|}t j ||}t||jdd ]y) Nr rrrrVrr$rFr)r$r,r&r rr'maximumrr's r5test_maximum01rbrVr7c,tjddgt}tjddgddggt}|j|}|j|}tj||}t ||jdd yrX)r$r,r&r'rarr3s r5test_maximum02rd ss ZZAd +F JJAA't 4E ZZ F JJu E __U6 2F 3%@r7c|jddg}tD]\}t||}|jddgddgg|}tj||d}t ||jdd ^y) Nr rrVrrrr.Fr)r,r rr'rarr's r5test_maximum03rfsy ZZA FED! QFQF+5 9v'(*FBJJsOeD Er7c |jddgddgg}tD]m}t||}|jddgddgg|}tj|||jgd}t ||jgdoy) Nr rrVrrr]r)rr.rG)r,r rr'rarr's r5test_maximum04rh r_r7c^|jgd}tj|dk(sJy)N)rr)r,r'ra)r/r0s r5test_maximum05rl*s' < A ??1  ## #r7c|jgdgdgdgdg}|jgdgdgdgdg}tj|||jgd }t||jgd y) Nr rrr rprVrrrrrrr:rVrrr r rrrrrrrVrVrr)r rrVr)rOr.r6)r,r'medianrr/rrrs r5 test_median01rw0sp L   " #AZZ%%%'(F^^AfBJJy4I JFfbjj&ABr7c|jgdgdgdgdg}tj|}t||jddy)Nrnrorprqr!Frr,r'rurr/rrs r5 test_median02r{=sD L   " #A^^A F 3%@r7c|jgdgdgdgdg}|jgdgdgdgdg}tj||}t||jd d y) Nrnrorprqrrrsrtr$rFrryrvs r5 test_median03r}Fsf L   " #AZZ%%%'(F^^Af -F 3%@r7ctjddgt}|j|}tj||j d|jdg}t ||jdgy)Nr rrrr!)r$r,r&r'rur`rrzs r5test_median_gh12836_boolrSs\ Aq6&A 1 A ^^Abggdm2::qc? KFfbjj#&78r7c|jddg|j}tj||j d|jdg}t ||jdgy)NAFrrr rgP@)r,r7r'rur`rrzs r5test_median_no_int_overflowr[sU B8277 +A ^^Abggdm2::qc? KFfbjj$&89r7cjtjd5tD]r}t||}|j g|}t 5}|j tdtj|}ddd|jrrJ dddy#1swY(xYw#1swYyxYwNrMrNrzMean of empty slice) r$rPr rr,rfilterRuntimeWarningr'variancerQr/rr rsuprs r5test_variance01rbs  "$ $DB%EJJrJ/E"$ 1 >+@A ))%0 188F# ##  $$$ 1 1 $$)3B) ,B6B)B)B& "B))B2ctD]T}t||}|jdg|}tj|}t ||jddVyNr rrGFrr rr,r'rrrs r5test_variance02rmsWED! A3e ,!!%(FBJJsOeD Er7ctD]U}t||}|jddg|}tj|}t ||jddWyNr rVrr!Frrrs r5test_variance03rusYED! Aq6 /!!%(FBJJsOeD Er7ctjddgt}|j|}tj|}t ||jddy)Nr rrg?Fr)r$r,r&r'rrr/rrs r5test_variance04r}sI JJ1vT *E JJu E   e $F 4 05Ar7c|jgd}tD]W}t||}|jgd|}tj||d}t ||jddYyN)rrrV)r rVr<rrr!Fr)r,r rr'rrr's r5test_variance05rsg ZZ "FED! 9E 2!!%3FBJJsOeD Er7c d|jgd}tjd5tD]h}t ||}|jgd|}t j |||jgd}t||jgdj dddy#1swYyxYwN)rrrVrVrrMrN)r rVr<rr<r)rrVr)r!r!rG)r,r$rPr rr'rrr's r5test_variance06rs ZZ (F  "K KDB%EJJ/uJ=E%%eVRZZ 5JKF %fbjj.I J  KKKK A2B&&B/cjtjd5tD]r}t||}|j g|}t 5}|j tdtj|}ddd|jrrJ dddy#1swY(xYw#1swYyxYwr) r$rPr rr,rrrr'standard_deviationrQrs r5test_standard_deviation01rs  "$ $DB%EJJrJ/E"$ ; >+@A 33E: ;88F# ##  $$$ ; ; $$rctD]T}t||}|jdg|}tj|}t ||jddVyrr rr,r'rrrs r5test_standard_deviation02rsWED! A3e ,++E2FBJJsOeD Er7ctD]U}t||}|jddg|}tj|}t ||jddWyrrrs r5test_standard_deviation03rsYED! Aq6 /++E2FBJJsOeD Er7ctjddgt}|j|}tj|}t ||jddy)Nr rrr?Fr)r$r,r&r'rrrs r5test_standard_deviation04rsH JJ1vT *E JJu E  ' ' .F 3%@r7c|jgd}tD]W}t||}|jgd|}tj||d}t ||jddYyr)r,r rr'rrr's r5test_standard_deviation05rsg ZZ "FED! 9E 2++E61=FBJJsOeD Er7c d|jgd}tjd5tD]h}t ||}|jgd|}t j |||jgd}t||jgdj dddy#1swYyxYwr)r,r$rPr rr'rrr's r5test_standard_deviation06rs ZZ (F  "K KDB%EJJ/uJ=E//vrzz)4F &fbjj.I J  KKKKrc |jdg}tjd5tD]}t |r|dk(rt j dt||}|jdg|}tj|||jdg}t||jdg dddy#1swYyxYw) Nr rMrNuint8z8value cannot be converted to type uint8 without overflowgl `yrr) r,r$rPr rpytestxfailrr'rrr's r5test_standard_deviation07rs ZZ_F  "? ?D| 01B%EJJ }EJ:E//vrzz1#OF %fbjj!o > ????s BCCctjddgt}|j|}tD]E}t ||}|jddgddgg|}t j ||}|dk(rEJy) Nr rrrrVrr$rr)r$r,r&r rr'minimum_positionr's r5test_minimum_position01rs~ ZZAd +F ZZ F D! QFQF+5 9))%?  r7ctD]F}t||}|jgdgdgdg|}tj|}|dk(rFJyNrprrrprVrrrr rpr r rr r)r rr,r'rrs r5test_minimum_position02r` D! L((*168))%0  r7ctjgdgdgdgt}|j|}tj|}|dk(sJyrr$r,r&r'rrs r5test_minimum_position03rN JJ $$&-1 3E JJu E  % %e ,F V  r7ctjgdgdgdgt}|j|}tj|}|dk(sJy)Nr)rVrr rrrrrrs r5test_minimum_position04rrr7c|jgd}tD]G}t||}|jgdgdgdg|}tj||}|dk(rGJy)Nr rrrrr)r rprrVr)rrr,r rr'rr's r5test_minimum_position05rp ZZ %F D! L((*168))%8  r7c|jgd}tD]H}t||}|jgdgdgdg|}tj||d}|dk(rHJy)Nr rrVrrrrrrrr rr's r5test_minimum_position06r r ZZ %F D! L((*168))%;  r7c |jgd}tD]f}t||}|jgdgdgdg|}tj|||jddg}|dd k(sJ|d d k(rfJy) NrrrrrrrVrrr rrr's r5test_minimum_position07r ZZ %F#D! L((*168))%*,**aV*<>ayF"""ayF"""#r7ctjddgt}|j|}tD]E}t ||}|jddgddgg|}t j ||}|dk(rEJy) Nr rrrrVrr$r r)r$r,r&r rr'maximum_positionr's r5test_maximum_position01r%s ZZAd +F ZZ F D! QFQF+5 9))%179  r7ctD]F}t||}|jgdgdgdg|}tj|}|dk(rFJy)NrrVrr<rrrr)r rr,r'rrs r5test_maximum_position02r0rr7ctjgdgdgdgt}|j|}tj|}|dk(sJy)Nrrrrr)r$r,r&r'rrs r5test_maximum_position03r:rr7c|jgd}tD]G}t||}|jgdgdgdg|}tj||}|dk(rGJy)Nrrrrrr r r,r rr'rr's r5test_maximum_position04rCrr7c|jgd}tD]H}t||}|jgdgdgdg|}tj||d}|dk(rHJy)Nrrrrrr rrr's r5test_maximum_position05rNrr7c |jgd}tD]f}t||}|jgdgdgdg|}tj|||jddg}|dd k(sJ|dd k(rfJy) Nrrrrrr rrrrrr's r5test_maximum_position06rYrr7c |jgd}tD]f}t||}|jgdgdgdg|}tj|||jddg}|dd k(sJ|d d k(rfJy) N)r!rOrG@rrrrr!rrrr )rrVrr's r5test_maximum_position07rfs ZZ, -F#D! L((*168))%*,**c3Z*@BayF"""ayF"""#r7ctjddgt}|j|}tD]}t ||}|jddgddgg|}t j ||}t j||}t j||}t j||}t j||} ||||| fk(rJy)Nr rrrrVrr$) r$r,r&r rr'extremarTrarr r/rrr routput1output2output3output4output5s r5test_extrema01rts ZZAd +F ZZ F ?D! QFQF+5 9//%7//%7//%7**528:**528:7GWg>>>> ?r7c|jddg}tD]}t||}|jddgddgg|}tj||d}tj ||d}tj ||d}tj||d}tj||d} ||||| fk(rJy)Nr rrVrrr) r,r rr'rrTrarrrs r5test_extrema02rs ZZA F ?D! QFQF+5 9//%()+//%()+//%()+**528C**528C7GWg>>>> ?r7c |jddgddgg}tD]K}t|r|dvrtjdt ||}|jddgddgg|}t j|||jgd }t j|||jgd }t j|||jgd }t j|||jgd }t j|||jgd } t|d |t|d||d|k(sJ|d| k(rLJy) Nr rrVuint16uint32uint64/https://github.com/pytorch/pytorch/issues/58734rrr]rr r,r rrrrr'rrTrarrrrs r5test_extrema03rs[ ZZ!Q!Q( )F% BFfQi3fQi3r7c :|jgdgdgdg}|jgdgdgdg}tj|||jddg}t||jd d g|j tj |||jddg}t||jd d g|j tj |||jddg}t||j|jd d g|j tj|||jddg}t||jd d g|j tj|||jddg}t||jddgdtj|||jddg}t||jddgdy)N)rprrrr)r<r:rrr)rrrrVrp)r r rrr)rrrrrr rrrRr.rrOr!rprVFrr:) r,r'rErrrrrsqrtrurTra) r/rlblrEvarstdmedminmaxs r5test_stat_funcs_2dr+5s O_oFGA **oH IC <<#RZZA-? @DD"**c3Zrzz*BC   1S Aq60B CCCS#JbjjAB  $ $Qs"**aV:L MCc2772::sCj :+S#TU ..3bjj!Q.@ ACCS#JbjjAB //!Crzz1a&/A BCCQF+? //!Crzz1a&/A BCCQF+?r7no watershed_ift on CuPyceZdZdZdZdZdZdZdZe dd d Z e d d dZ e d d dZ y)TestWatershedIftc |jgdgdgdgdgdgdgdgdg|j}|jgdgdgdgdgdgdgdgdg|j}|jgdgdgdg}tj|||}gd gd gd gd gd gd gd gd g}t ||j|y) Nrrrrrrrrr r r r r rrr rrrr rrrrrrrrrrrrr rrrr r r  structurerrrrrrrrr r r r r rr,rr7r' watershed_iftrr.r/rcmarkersr7rdrs r5test_watershed_ift01z%TestWatershedIft.test_watershed_ift01Oszz000000002:<C**433333335=?GGE**i'')* ##D'YG0+++++002 "#rzz(';@WW F##D'20.+++.0 2 "#rzz(';rArGrIrKrMskip_xp_backendsrRrUrXrNr7r5r.r.Lsz=>=8=2=<=:=2d+KL=M=@f%?@ =A =f%?@ FA Fr7r.)rdtctjjd}d}|jd|dj |}t j |}t|j|k(sJy)N{r<r)rr )lowhighrr) r$r default_rngintegersastyper'rrZr)rZr/rngmax_valimageval_idxs r5 test_gh_19423rf1sh ))   $CG LLQW8L < C C" C ME##E*G w||~ ' )) )r7)ros.pathnumpyr$ numpy.testingrscipy._lib._array_apirrrrrrr r scipy.ndimager'r markrY pytestmarkname __version__r*rrPrfrirlrnrqrurxrrrrrrrrrrrrrrrrrrrrr r"r(r*r,r/r4r8r=rCrFrIrKrRrUrYr[r^rbrdrfrhrlrwr{r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrr"r+r. parametrizeintcuintcrfrNr7r5rts +*;;//&+9NO P WW_=#)=$'IJO=O=KO=d$'IJ#/#/K#/L$"& *$'IJK*&$$F89;;$F89;!;!$'JKFLF,&!UVW$ 5&!PQTCTCRTCn',$/"EEFEAEG NEAE 'EAEGEAEG$ CA A9:$EEBEK$EEAE K ?     #     # # ? ?$%8%.""""">00$7 48 4@.&!;<aFaF=aFH$23*4 *r7