L iddlZddlZddlmZddlmZmZmZm Z m Z m Z ddl Z ddl m ZddlmZddlmZe j&j(Ze j&j*Zeddd g gZd Zd d d ddddZGddZe j&j5dedde j&j5deGddZedde j&j5deddGddZeddGddZGd d!ZGd"d#Z Gd$d%Z!Gd&d'Z"Gd(d)Z#y)*N)suppress_warnings)_asarrayassert_array_almost_equalis_jax np_compatxp_assert_equalxp_assert_close)raises)typesTcupy jax.numpy)cpu_only exceptions-q=reflect symmetricwrapedgeconstant)mirrorr grid-mirror grid-wrapnearest grid-constantc eZdZeddej j ddgdfdgdfd gd fd gd fd gdfdgdfdgdfgdZeddej j ddgdfdgdfd gdfd gdfd gdfdgdfdgdfgdZej j dgdej j de ddZ y) TestBoundariesr &CuPy does not have geometric_transformreasonzmode, expected_valuer)?@ @r$r$r$r)r!r"r#r!r"r#r!r)r!r"r#r"r!r"r#r)r!r"r#r#r"r!r!r)r!r"r#r$r#r"r!r)r!r"r#r%r%r%r)r!r"r#r!r%r%r%c d}|jgd}ttj||d|dd|j|y)Nc|ddzfS)Nr?xs l/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/ndimage/tests/test_interpolation.pyshiftz-TestBoundaries.test_boundaries..shift0aD3J= )r @r%)r )cvalmode output_shapeorderasarrayrndimagegeometric_transformselfr5expected_valuexpr-datas r,test_boundarieszTestBoundaries.test_boundaries$sG !zz-(  ' 'e"459 D JJ~ & (r/)r r r0r1)r1r r0r1)r$r r0r1)r0r r0r1)r%r r0r1c d}|jgd}ttj||d|d|j|y)Nc|ddz fS)Nrg?r)r*s r,r-z.TestBoundaries.test_boundaries2..shiftEr.r/r r0r1r$r%r$)r4r5r6r8r<s r,test_boundaries2zTestBoundaries.test_boundaries29sD !zz,'  ' 'e"459 ; JJ~ & (r/r5)rrrrrrr7ct|r|dvs|dkDrtjdtjddtj }|j |}|j tjddd }tj|||jd f|| }d }tj|} |j tj||| } |j ||z|jd f} tj| | || } |dk(rdnd} t|| d| y)z$Tests based on examples from gh-2640)rrrrrr z-Jax does not support grid- modes or order > 1ir3dtypeii)num.r7r5 r5rgh㈵>rHz>rtolatolN)rpytestxfailnparangefloat64r9linspacer:map_coordinatesnewaxisndimage_to_numpy_modegetpadr )r=r5r7r?np_datar@r+ynpadpad_modepaddedcoordsexpectedrSs r,test_boundary_spline_accuracyz,TestBoundaries.test_boundary_spline_accuracyNs 2J M M LLH I))B4zz'" JJr{{2rt4 5  # #D!BJJO* ( O(f%MN [[ \ " ,  | $ L ! \ " m $ = )  + ( O( [[V&12 [[WeAh/;02;r/rr7r0rGrJcHeZdZdZdZeddgddZdZd Zy ) TestSplinect||}|jg|}tj||}||j d|j k(sJy)NrIr7r getattronesr: spline_filterr9rJr=rJr7r?r@outs r, test_spline01zTestSpline.test_spline01nsQE"wwrw'##D6bjj#))j4444r/ct||}|jdg|}tj||}t ||jdgy)Nr rIrq)rsr9r:rurrvs r, test_spline02zTestSpline.test_spline02tsHE"zz1#Uz+##D6!#rzz1#7r/Tr zoutput=dtype is numpy-specific)np_onlyrr ct||}|jg|}tj|||}||j d|j k(sJy)NrIoutputr rrrvs r, test_spline03zTestSpline.test_spline03zsUE"wwrw'##D%>bjj#))j4444r/ct||}|jdg|}tj||}t ||j gdy)Nr$rIr r r r )rsrtr:rurr9rvs r, test_spline04zTestSpline.test_spline04sGE"wws%w(##D%0!#rzz,'?@r/ct||}|jddg|}tj||}|j gdgdgdgdg}t ||y)Nr$rIrqr)rsrtr:rur9r)r=rJr7r?r@rwres r, test_spline05zTestSpline.test_spline05s`E"ww1vUw+##D6::|+++-. "#x0r/N) rgrhrirxrzrjrrrr)r/r,rorojs95 8 dx=?5?5 A 1r/rorrceZdZdZdZdZdZejjdddgdZ d Z d Z d Z d Zd ZdZdZdZdZdZdZdZdZdZdZdZy)TestGeometricTransformc|jdg}d}tj|||j|}t ||jdg|j y)Nr c|SNr)r*s r,mappingzBTestGeometricTransform.test_geometric_transform01..mappingHr/rqrIr9r:r;shaperrJr=r7r?r@rrws r,test_geometric_transform01z1TestGeometricTransform.test_geometric_transform01sRzz1# ))$057!#rzz1#SYYz'GHr/c|jdg}d}tj|||j|}t ||j gd|j y)Nr$c|Srr)r*s r,rzBTestGeometricTransform.test_geometric_transform02..mappingrr/rqrrIrtr:r;rrr9rJrs r,test_geometric_transform02z1TestGeometricTransform.test_geometric_transform02sPwws| ))$057!#rzz,ciiz'PQr/c|jdg}d}tj|||j|}t ||j gd|j y)Nr$c|ddz fSNrr r)r*s r,rzBTestGeometricTransform.test_geometric_transform03..mappingaD1H; r/rqrr r r rIrrs r,test_geometric_transform03z1TestGeometricTransform.test_geometric_transform03sPwws| ))$057!#rzz,ciiz'PQr/c|jgd}d}tj|||j|}t ||jgd|j y)Nr$r r1r0c|ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform04..mappingrr/rqrr$r r1rIrrs r,test_geometric_transform04z1TestGeometricTransform.test_geometric_transform04sOzz,' ))$057!#rzz,ciiz'PQr/rJrX complex128cHt||}|jgdgdgdg|}|jgdgdgdg|}|j|jdr|d|zz}|d|zz}d}t j |||j |}t||y)NrrIrcomplex floating?c|d|ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform05..mappingaD!A$(# #r/rq)rsr9isdtyperJr:r;rr)r=r7rJr?r@rerrws r,test_geometric_transform05z1TestGeometricTransform.test_geometric_transform05sE"zz<'')057::|++-49; ::djj"4 5 BI D X %H $))$057!#x0r/c|jgdgdgdg}d}tj|||j|}|jgdgdgdg|j }t ||y) Nrr3rGr1rr1rGc|d|ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform06..mappingrr/rqrrr3rGrrr1rr1rIr9r:r;rrJrr=r7r?r@rrwres r,test_geometric_transform06z1TestGeometricTransform.test_geometric_transform06tzz<'')* $))$057::|++-47II? "#x0r/c|jgdgdgdg}d}tj|||j|}|jgdgdgdg|j}t ||y)Nrrrc|ddz |dfSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform07..mappingaD1Had# #r/rqrrrrrIrrs r,test_geometric_transform07z1TestGeometricTransform.test_geometric_transform07rr/c|jgdgdgdg}d}tj|||j|}|jgdgdgdg|j }t ||y) Nrrrc"|ddz |ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform08..mappingaD1HadQh' 'r/rqrrrrIrrs r,test_geometric_transform08z1TestGeometricTransform.test_geometric_transform08stzz<'')* ())$057::|++-47II? "#x0r/c(|jgdgdgdg}d}|dkDrtj||}n|}tj|||j|d}|jgd gd gd g|j }t ||y) Nrrrc"|ddz |ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform10..mappingrr/r rqFr7 prefilterrrrrI)r9r:rur;rrJr)r=r7r?r@rfilteredrwres r,test_geometric_transform10z1TestGeometricTransform.test_geometric_transform10szz<'')* ( AI,,T?HH))(GTZZ05H::|++-47II? "#x0r/c|jdg|j}d}tj||dg|}t ||j gd|j y)Nr0rIc|ddzfSNrr0r)r*s r,rzBTestGeometricTransform.test_geometric_transform13..mappingsaDAI< r/r$rqr)rtrXr:r;rr9rJrs r,test_geometric_transform13z1TestGeometricTransform.test_geometric_transform13sTwws"**w- ))$!EJ!#rzz,ciiz'PQr/c|jgd}d}tj||dg|}t||jgd|jy)Nr rr0rGr1r3r$r$cd|dzfS)Nr0rr)r*s r,rzBTestGeometricTransform.test_geometric_transform14..mapping s!H; r/r$rqrDrI)r9r:r;rrJrs r,test_geometric_transform14z1TestGeometricTransform.test_geometric_transform14sKzz23 ))$!EJ!#rzz,ciiz'PQr/c|jgd}d}tj||dg|}t|ddd|jgdy)NrDc|ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform15..mapping)rr/rrqr0r9r:r;rrs r,test_geometric_transform15z1TestGeometricTransform.test_geometric_transform15&sJzz,' ))$!EJ!#cc(BJJ|,DEr/c gdgdgdg}|j|}d}tj||d|}t||jddgd d gd d ggy) NrDrrGr3rg"@ c|d|ddzfSNrr r0r)r*s r,rzBTestGeometricTransform.test_geometric_transform16..mapping5rr/r1r0rqr r1rr3 rrrs r,test_geometric_transform16z1TestGeometricTransform.test_geometric_transform16/sh!#zz$ $))$057!#rzzAq6Aq6Ar72K'LMr/cgdgdgdg}|j|}d}tj||d|}t||jgdgy)NrDrrrrrc|ddz|dfSNrr0r r)r*s r,rzBTestGeometricTransform.test_geometric_transform17..mappingBrr/r r$rqrrs r,test_geometric_transform17z1TestGeometricTransform.test_geometric_transform17<sW!zz$ $))$057!#rzz<.'ABr/cgdgdgdg}|j|}d}tj||d|}t||jddggy) NrDrrc"|ddz|ddzfSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform18..mappingOrr/r r0rqr r1rrs r,test_geometric_transform18z1TestGeometricTransform.test_geometric_transform18Is[!zz$ ())$057!#rzzAq6(';.mapping\rr/r1rrq.r0rrs r,test_geometric_transform19z1TestGeometricTransform.test_geometric_transform19VsX!zz$ $))$057!#c3Q3h-6r/cgdgdgdg}|j|}d}tj||d|}t|ddddf|y) NrDrrc|ddz |dfSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform20..mappingirr/rGr$rqr0.rrs r,test_geometric_transform20z1TestGeometricTransform.test_geometric_transform20csX!zz$ $))$057!#cc3h-6r/cgdgdgdg}|j|}d}tj||d|}t|ddddddf|y)NrDrrc"|ddz |ddz fSrr)r*s r,rzBTestGeometricTransform.test_geometric_transform21..mappingvrr/rGrrqr0rrs r,test_geometric_transform21z1TestGeometricTransform.test_geometric_transform21ps\!zz$ ())$057!#cc3Q3h-6r/cgdgdgdg}|j||j}d}d}tj||d|}tj||d |}t ||y) NrDrrrIc"|ddz |ddz fSrr)r*s r,mapping1zCTestGeometricTransform.test_geometric_transform22..mapping1rr/c"|ddz|ddzfSrr)r*s r,mapping2zCTestGeometricTransform.test_geometric_transform22..mapping2rr/rrqr1r$)r9rXr:r;r)r=r7r?r@rrrws r,test_geometric_transform22z1TestGeometricTransform.test_geometric_transform22}sr!zz$bjjz1 ( ())$*0?))#x*0?!#t,r/cgdgdgdg}|j|}d}tj||d|}t||jddgy) NrDrrcd|ddzfS)Nr rr0r)r*s r,rzBTestGeometricTransform.test_geometric_transform23..mappingqtax= r/r0rqrr3rrs r,test_geometric_transform23z1TestGeometricTransform.test_geometric_transform23sV!zz$ !))$UK!#rzz1a&'9:r/c gdgdgdg}|j|}d}tj||d|dddi }t||jd d gy) NrDrrc||d|zfS)Nrr))r+abs r,rzBTestGeometricTransform.test_geometric_transform24..mappingrr/r)r rr0)r7extra_argumentsextra_keywordsrr3rrs r,test_geometric_transform24z1TestGeometricTransform.test_geometric_transform24sd!zz$ !)) '4ud8% "#rzz1a&'9:r/N)rgrhrirrrrrTrkrlrrrrrrrrrrrrrrrrrr)r/r,rrsIRRR [[Wy,&?@1A1( 1 1 11&RRF N C = 7 7 7-$ ; ;r/rceZdZdZej j dgdej j deddZe dd d Z e dd d Z y )TestGeometricTransformExtrac|jgdgdg|j}d}|jgdgdg}ttj||dd |y) Nr r0r1r$rrGrIc"|ddz |ddz fS)Nrr(r r)r*s r,rzZTestGeometricTransformExtra.test_geometric_transform_grid_constant_order1..mappingaD3J!A$*- -r/g?g??r g@r2rr r5r7)r9rXrr:r;)r=r?r+rexpected_results r,-test_geometric_transform_grid_constant_order1zITestGeometricTransformExtra.test_geometric_transform_grid_constant_order1sj JJ !#*,**  6 .**&8&8&:;!  ' '7./ 1  r/r5rrrrrr7rGcd}tjdtjdd}d}tj |}tj |||}|j|}|j|}tt|| g|jz} tj||||| } ttj||||| d y) Nc"|ddz |ddzfS)Nr皙?r gffffff@r)r*s r,rzOTestGeometricTransformExtra.test_geometric_transform_vs_padded..mappingrr/rIrrOr rPrR)rVrWfloatreshaper\r]r^r9tupleslicendimr:r;r ) r=r7r5r?rr+rarbx_padded center_slicer s r,"test_geometric_transform_vs_paddedz>TestGeometricTransformExtra.test_geometric_transform_vs_paddeds  . IIc ' / /B 7(,,T266!T1 JJqM::h'eD4%01AFF:; !55 gD77CE   ' '7.3 5   r/Tzendianness is numpy-specificr{r ctjdg}d}|j|jjtj|tj|j |jjfD]8}t j|||j|}||n|}t|dg:y)Nr c|Srr)r*s r,rzfTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameter..mappingrr/r}) rVr9rJ newbyteorder empty_likeastyper:r;rr)r=r?r@rrwreturnedresults r,9test_geometric_transform_endianness_with_output_parameterzUTestGeometricTransformExtra.test_geometric_transform_endianness_with_output_parameterszz1# JJ 7 7 9MM$'MM$'..tzz/F/F/HIK 3C224$**:=?H$,S(F %fqc 2  3r/!string `output` is numpy-specificc|jdg}d}tj||d}|jt jdusJt |dgy)Nr c|Srr)r*s r,rzXTestGeometricTransformExtra.test_geometric_transform_with_string_output..mappingrr/fr})r9r:r;rJrVr)r=r?r@rrws r,+test_geometric_transform_with_string_outputzGTestGeometricTransformExtra.test_geometric_transform_with_string_outputsRzz1# ))$DyyBHHSM)))!#s+r/N) rgrhrirrTrkrlrmrrjr&r+r)r/r,rrs " [[V&;< [[WeAh/ 0< 4d+IJ3K3 d+NO,P,r/rcVeZdZejj deddejj dejejgdZ ejj dedddZ e dd d Z e d d Ze d ddZejjd ejj!dej$vxsej&dj(dkd dZy)TestMapCoordinatesr7rrGrJct|r|dkDrtjd|jgdgdgdg}|jgdgdgdg}|j |j d r|d |zz }|d |zz }t j|j}|dz}|j|}tj||| }t||y) Nr 'jax map_coordinates requires order <= 1rrrrrrrrrq) rrTrUr9rrJrVindicesrr:rZr)r=r7rJr?r@reidxrws r,test_map_coordinates01z)TestMapCoordinates.test_map_coordinates01s ":%!) LLB Czz<'')*::|++-. ::djj"4 5"t)#D"x-/Hjj$ qjjo%%dCu=!#x0r/ct|r4|dkDrtjd|dk(rtjd|jgdgdgdg}t j |j tj}|dz}|j|}tj|d|}tj|||}t||y) Nr r/zoutput differs. jax bug?rrrr(rq) rrTrUr9rVr0rrXr:r-rZr)r=r7r?r@r1out1out2s r,test_map_coordinates02z)TestMapCoordinates.test_map_coordinates02s ":qy||EFz||67zz<'')*jjRZZ0 s jjo}}T3e4&&tS>!$-r/rz`order` is required in jaxrc tgdgdgdgd|}tj|jdz }|j |}t j ||}|j gdgdgd g}t||t|t j|d tj|ddd d fjdz }|j |}t j |ddd d f|}t||j gdgdgt|t j|ddd d fd tj|ddddd fjdz }|j |}t j |ddddd f|}t||j d d gd dgd dggt|t j|ddddd fd y)NrrrF)r7r?r rrrr r r0.rr$r3) rrVr0rr9r:rZrr-)r=r?r@r1rwres r,test_map_coordinates03z)TestMapCoordinates.test_map_coordinates03$s%%'.1b:jj$q(jjo%%dC0::|++-. "#x0!#w}}T6'BCjjcc3h--.2jjo%%d3Q38nc:!#rzz<3?3A(B C!#w}}T#A#s(^V'LMjja1f++,q0jjo%%d1cc6lC8!#rzzAq6Aq6Aq62J'KL!#w}}T!SqS&\6'JKr/T)r{ctjddgddgg}tjddgddgg}tj|j}|dz}|j|jj tj |tj |j|jj fD],}tj|||}||n|}t||.y)Nr r0r3rGrr}) rVr9r0rrJr!r"r#r:rZr)r=r?r@rer1rwr$r%s r,5test_map_coordinates_endianness_with_output_parameterzHTestMapCoordinates.test_map_coordinates_endianness_with_output_parameter?s zzAq6Aq6*+::1v1v./jj$ q JJ JJ # # % MM( # MM( # * *8>>+F+F+H I   8C ..tSEH$,S(F %fh 7 8r/r'rc:|jdgg}tj|j}|j|}t j ||d}|j tj dusJt||jdggyNr r*r})r9rVr0rr:rZrJr)r=r?r@r1rws r,'test_map_coordinates_with_string_outputz:TestMapCoordinates.test_map_coordinates_with_string_outputSsxzzA3% jj$jjo%%dC<yyBHHSM)))!#rzzA3%'89r/)rwin32rz2do not run on 32 bit or windows (no sparse memory)cj d}tj|dztjj||}d||dz d|dz df<t j |j ||j |dz g|dz ggdy#t$r}tjd |d}~wwxYw) Ni0ur0rIrr1r!r rqzNot enough memory available) rVemptyfloat32rr:rZr9 MemoryErrorrTskip)r=r?nres r,test_map_coordinates_large_dataz2TestMapCoordinates.test_map_coordinates_large_data\s DAARZZ088A>A !Aa!efa!efn   # # 1 rzzAG9q3wi*@A  D++;eL!#rzz1#7r/c|jdg}tj||jdgg|}t ||jgdy)Nr$r rqrrtr:rRr9rrSs r,test_affine_transform02z+TestAffineTransform.test_affine_transform02wsEwws|&&tRZZ!->eL!#rzz,'?@r/c|jdg}tj||jdggd|}t ||jgdy)Nr$r r%rqrrVrSs r,test_affine_transform03z+TestAffineTransform.test_affine_transform03}sGwws|&&tRZZ!->%P!#rzz,'?@r/c|jgd}tj||jdggd|}t||jgdy)Nrr r%rqrrQrSs r,test_affine_transform04z+TestAffineTransform.test_affine_transform04sFzz,'&&tRZZ!->%P!#rzz,'?@r/rJrXrc\t||}|jgdgdgdg|}|jgdgdgdg|}|j|jdr|d|zz}|d|zz}t j ||jddgddggddg| }t ||y) NrrIrrrr rr%rq)rsr9rrJr:rRrr=r7rJr?r@rerws r,test_affine_transform05z+TestAffineTransform.test_affine_transform05sE"zz<'')057::|++-49; ::djj"4 5 BI D X %H&&tRZZ!Q!Q8H-I()2we=!#x0r/c |jgdgdgdg}tj||jddgddggddg|}t||jgdgd gd gy) Nrrrr rr%rqrrrrQrSs r,test_affine_transform06z+TestAffineTransform.test_affine_transform06swzz<'')*&&tRZZ!Q!Q8H-I()2we=!#rzz<3?3?3A(B Cr/c |jgdgdgdg}tj||jddgddggddg|}t||jgdgdgdgy) Nrrrr rr%rqrrQrSs r,test_affine_transform07z+TestAffineTransform.test_affine_transform07swzz<'')*&&tRZZ!Q!Q8H-I(*Awe=!#rzz<3?3?3A(B Cr/c |jgdgdgdg}tj||jddgddggddg|}t||jgdgd gd gy) Nrrrr rr%rqrrrrQrSs r,test_affine_transform08z+TestAffineTransform.test_affine_transform08swzz<'')*&&tRZZ!Q!Q8H-I(*Bxu>!#rzz<3?3?3A(B Cr/c  |jgdgdgdg}|dkDrtj||}n|}tj||jddgddggddg|d }t ||jgd gd gd gy) Nrrrr rqrr%Frrrr)r9r:rurRrr=r7r?r@rrws r,test_affine_transform09z+TestAffineTransform.test_affine_transform09szz<'')* AI,,T?HH&&xaVaV4uU!#rzz,'?@r/c|jgd}tj||jdggdd|}t|ddd|jgdy)NrDr(rrrqr0rQrSs r,test_affine_transform12z+TestAffineTransform.test_affine_transform12sQzz,'&&tRZZ#-@!TQVW!#cc(BJJ|,DEr/c gdgdgdg}|j|}tj||jddgddggdd|}t||jdd gd d gd d ggy)NrDrrr rr0rrqr1rr3rrrQrSs r,test_affine_transform13z+TestAffineTransform.test_affine_transform13sy!#zz$&&tRZZ!Q!Q8H-I1f-24!#rzzAq6Aq6Ar72K'LMr/cgdgdgdg}|j|}tj||jddgddggdd|}t||jgdgy) NrDrrr0rr rrqrQrSs r,test_affine_transform14z+TestAffineTransform.test_affine_transform14sh!zz$&&tRZZ!Q!Q8H-I1f-24!#rzz<.'ABr/cgdgdgdg}|j|}tj||jddgddggdd|}t||jdd ggy) NrDrrr0rrrqr r1rQrSs r,test_affine_transform15z+TestAffineTransform.test_affine_transform15sl!zz$&&tRZZ!Q!Q8H-I1f-24!#rzzAq6(';d-24!#rzz)'<=r/c|jgd}tj||jdggdgd|}t|ddd|jgdy)Nrr(r%rnrqr0rrQrSs r,test_affine_transform23z+TestAffineTransform.test_affine_transform23BsWzz,'&&tRZZ#-@2$-24!#cc(BJJ|,DEr/cR|jgd}t5}|jtdt j ||jdgd|}dddt j ||jdggd|}t |y#1swY@xYw)Nr@The behavior of affine_transform with a 1-D array .* has changedr0r%rqr9rfilter UserWarningr:rRrr=r7r?r@supr4r5s r,test_affine_transform24z+TestAffineTransform.test_affine_transform24Jszz,'   TC JJ{% &++D"**aS/2USD  T ''bjj1#.?5Q!$-  T T ABB&cR|jgd}t5}|jtdt j ||jdgd|}dddt j ||jdggd|}t |y#1swY@xYw)Nrrr(r%rqrrs r,test_affine_transform25z+TestAffineTransform.test_affine_transform25Vszz,'   VC JJ{% &++D"**cU2CRuUD  V ''bjj3%.A2US!$-  V Vrc |jgdgdgdg}|dkDrtj||}n|}|jd}|j d }|j ||fd}|j ||jgd gfd }|j |d D cgc] } t| } } tj||| |d } tj|||d } tj|||d } | | | fD]&}t||jgdgdgdg(ycc} w)Nrrrr rqr0r0r axis)rwrr r)r%Frrrr) r9r:rueyertconcatrrrRr)r=r7r?r@rtform_originaloffset_originaltform_h1tform_h2r+offsr4r5out3rws r,test_affine_transform26z+TestAffineTransform.test_affine_transform26bsKzz<'')* AI,,T?HH776?*99no>Q9G99h K=(AB9K"$**_e"DEQaEE''.(,.3uF''(%279''(%279$% GC %c2::|7C7C7E,F G GFs-D<zdoes not raisec.|jgdgdgdg}|j|jd|jd fd}|j||jgdgfd }t t t j||y) Nrrrr0rr r)@r0r r)r9rrrt assert_raises ValueErrorr:rR)r=r?r@rrs r,test_affine_transform27z+TestAffineTransform.test_affine_transform27szz<'')*99bffQi"''&/)9:!9D99h K=(AB9Kj'":":D(Kr/Tzbyteorder is numpy-specificrc |jd}|j||j|j|jj |j|jj fD]}}t 5}|j td|jddg}tj|||}ddd|n|}t||jddgddggy#1swY3xYw)N)r0r0rr r}) rtr"r#rJr!rrrr9r:rRr)r=r?r@rwrmatrixr$r%s r,9test_affine_transform_1d_endianness_with_output_parameterzMTestAffineTransform.test_affine_transform_1d_endianness_with_output_parameterswwvMM$'MM$'..tzz/F/F/HIJJ 7 7 9; LC#$ N ;,-QF+"33D&M  N %,S(F %fbjj1a&1a&9I.J K L N Ns ADD ctjdg}|j|jjtj|tj|j |jjfD]U}t j|tjdgg|}||n|}t|tjdgWy)Nr r}) rVr9rJr!r"r#r:rRr)r=r?r@rwr$r%s r,>test_affine_transform_multi_d_endianness_with_output_parameterzRTestAffineTransform.test_affine_transform_multi_d_endianness_with_output_parameters zz1#JJ 7 7 9MM$'MM$'..tzz/F/F/HIK ?C//bjj1#6GPSTH$,S(F %fbjj!o >  ?r/z+`out` of a different size is numpy-specificcb|jd|j}|jd}tj||j dgg|t |dd|tjt5tj|dgg|ddddy#1swYyxYw)NrrI)r r})r)r~r6) rWrXrtr:rRr9rrTr RuntimeErrorr=r?r@rws r,"test_affine_transform_output_shapez6TestAffineTransform.test_affine_transform_output_shapes yy"**y-ggen  rzzA3%'8E!#bq'40]]< ( =  $ $seCe = = = =s B%%B.r'c|jdg}tj||jdggd}|jt jdusJt ||jdgyr>)r9r:rRrJrVrrs r,(test_affine_transform_with_string_outputzsKyyBHHSM)))!#rzz1#7r/r-)r rrr )r%r )r1)r0r3ctjddgddgg}tjd}tjd|ddddf<tj||dddf<tj||d}|j|}|j|}|j|}t t j||d| |y) Nrr r0r1r0r1rrrr )rVr9zerosrrollrr:rR)r=r-r7r?r+affineres r,)test_affine_transform_shift_via_grid_wrapz=TestAffineTransform.test_affine_transform_shift_via_grid_wraps JJAA  !&!rr2A2vzz%(q!t 771e&1 JJqMF#::h'!  $ $Q[ N  r/ctjgdgdg}|ddddddfj}|j|}|j|}tjddg}tjd|ddddf<tj|j |dddf<|j|}t tj||d||y)Nrr1r$rr%r0r1rr ) rVr9copyrrrrr:rR)r=r7r?r+rers r,#test_affine_transform_shift_reflectz7TestAffineTransform.test_affine_transform_shift_reflects JJ !# $TrT4R4Z=%%' JJqM::h'1a&!rr2A2vzz!''*q!t F#!  $ $QYe L  r/N)*rgrhrirTrkrlrmrTrWrYr[r^r`rbrdrgrjrlrorqrsrurxrzr|rxfail_xp_backendsrrrrrrrrrjrrrrrrr)r/r,rOrOos [[WeAqk2838  [[WeAqk2A3A  [[WeAqk2A3A  [[WeAqk2A3A  [[WeAqk2 [[Wy,&?@ 1A3 1 [[WeAqk2C3C [[WeAqk2C3C [[WeAqk2C3C [[WeAqk2 C3 C [[WeAqk2A3A  [[WeAqk2A3A  [[WeAqk2F3F  [[WeAqk2N3N [[WeAqk2C3C [[WeAqk2=3= [[WeAqk2737 [[WeAqk2737 [[WeAqk2737 [[WeAqk2-3-v&PQ [[WeAqk2;3R;v&PQ [[WeAqk2;3R; [[WeAqk2>3> [[WeAqk2F3F [[WeAqk2 .3 . [[WeAqk2 .3 . [[WeAqk2G3G:v&67L8Ld+HILJL d+HI ?J ?d< = =d+NO8P8  [[WGI [[WeAqk2 3I & [[WeAqk2 3 r/rOceZdZejj dedddZejj dedddZejj dedddZ ejj dedddZ ejj deddejj dd d gd Z ejj deddejj d d dgejj dd d gdZ ejj dedddZ ejj dedddZejj dedddZejj dedddZejj dgdejj dedddZejj dgdejj dedddZdZejj dedddZejj deddejj dddgdZejj d gdejj deddZy )! TestShiftr7rrGc|jdg}tj|dg|}t||jdgy)Nr rqrr9r:r-rrSs r, test_shift01zTestShift.test_shift01s9zz1#mmD1#U3!#rzz1#7r/c|jdg}tj|dg|}t||j gdy)Nr$r rqrrtr:r-rr9rSs r, test_shift02zTestShift.test_shift02s8wws|mmD1#U3!#rzz,'?@r/c|jdg}tj|d|}t||j gdy)Nr$r%rqrirrSs r, test_shift03zTestShift.test_shift03s6wws|mmD"E2!#rzz,'?@r/c|jgd}tj|d|}t||jgdy)Nrr rqrrrSs r, test_shift04zTestShift.test_shift04s5zz,'mmD!51!#rzz,'?@r/rJrXrc0t||}|jgdgdgdg|}|jgdgdgdg|}|j|jdr|d|zz}|d|zz}t j |ddg|}t ||y) NrrIrrrrr rq)rsr9rrJr:r-rr]s r, test_shift05zTestShift.test_shift05sE"zz<'')057::|++-49; ::djj"4 5 BI D X %HmmD1a&6!#x0r/r5rrctjgdgdgdg|}tjgdgdgdg|}tj|jdr|d|zz}|d|zz}d}||dddf<|j|}|j|}t j |ddg||| }t||y) NrrIrrrrrr )r7r5r4)rVr9rrrJr:r-r) r=r7r5rJr?r@rer4rws r,test_shift_with_nonzero_cvalz&TestShift.test_shift_with_nonzero_cvalszz<'')057::|++-49;   TZZ); < BI D X %HAzz$::h'mmD1a&DtL!#x0r/c |jgdgdgdg}tj|ddg|}t||jgdgdgd gy) Nrrrrr rqrrrrrSs r, test_shift06zTestShift.test_shift06+Zzz<'')*mmD1a&6!#rzz<3?3?3A(B Cr/c |jgdgdgdg}tj|ddg|}t||jgdgdgdgy)Nrrrr rrqrrrSs r, test_shift07zTestShift.test_shift075rr/c |jgdgdgdg}tj|ddg|}t||jgdgdgdgy) Nrrrr rqrrrrrSs r, test_shift08zTestShift.test_shift08?rr/c |jgdgdgdg}|dkDrtj||}n|}tj|ddg|d}t ||jgdgd gd gy) Nrrrr rqFrrrr)r9r:rur-rrfs r, test_shift09zTestShift.test_shift09Iszzz<'')* AI,,T?HHmmHq!fEUK!#rzz<3?3?3A(B Cr/r-rctjddgddgg}tj||d}|j|}|j|}tt j ||d||y) Nrr r0r1rrrr )rVr9rrr:r-)r=r-r7r?r+res r,test_shift_grid_wrapzTestShift.test_shift_grid_wrapWsn JJAA  !771e%0 JJqM::h'! MM!UE B  r/c |j|jdd}ttj||d|tj||d|y)N)rr$rr r)rrWrr:r-)r=r-r7r?r+s r,test_shift_grid_constant1z#TestShift.test_shift_grid_constant1hsH JJryy}f -! MM!U F MM!U5 A r/c|jgdgdg|j}|jgdgdg}ttj|ddd |y) NrrrIr r )r(r(rr r )r9rXrr:r-)r=r?r+r s r,test_shift_grid_constant_order1z)TestShift.test_shift_grid_constant_order1ss\ JJ !#*,**  6**&8&8&:;! MM!ZoQ G  r/ctjgdgdg}|ddddddfj}|j|}|j|}tt j ||j d||y)Nrrr%rr )rVr9rrr:r-r)r=r7r?r+res r,test_shift_reflectzTestShift.test_shift_reflect}sv JJ !# $TrT4R4Z=%%' JJqM::h'! MM!QWW9E B  r/rFTc|jd}td||}ttj||dzdzfi|d|dttj|| dzdz fi|d|dy)Nrr)r5r7rr0r rr%)rWdictrr:r-)r=r7rr?r+kwargss r,test_shift_nearest_boundaryz%TestShift.test_shift_nearest_boundarys IIbM9EYG! MM!UaZ!^ 6v 6q 91Q4  " MM!eVq[1_ 7 7 ;QrU r/rctjdtjdd}d}d}tj |}|j tj|||}|j |} tt|| g| jz} tj||||| } ttj| |||| d y) NrrIr)rgffffffrNrOr rPr)rVrWrrr\r]r9r^rrrr:r-r ) r=r7r5r?x_npr-rarbrr+rr s r,test_shift_vs_paddedzTestShift.test_shift_vs_paddedsyyE*222r:(,,T2::bffT4h?@ JJt eD4%01AFF:; !-- e$e55AC  MM!UU ;  r/N)rgrhrirTrkrlrmrrrrrrrrrrrrrrrrr)r/r,rrsj [[WeAqk2838  [[WeAqk2A3A  [[WeAqk2A3A  [[WeAqk2A3A  [[WeAqk2 [[Wy,&?@ 1A3 1 [[WeAqk2 [[Vj/%BC [[Wy,&?@1AD31( [[WeAqk2C3C [[WeAqk2C3C [[WeAqk2C3C [[WeAqk2 C3 C [[WGI [[WeAqk2  3I   [[WGI [[WeAqk2 3I   [[WeAqk2  3   [[WeAqk2 [[[5$-8  93   [[V&;< [[WeAh/ 0< r/rceZdZejj dedddZdZdZ ejj deddejj ddd gd Z d Z d Z d Z ejj dgdejj dgddZejj dddgejj dgdejj dgddZejj dddgejj dZeddedddZd Zed!d"d#Zed!d"edd$edd%d&Zy')(TestZoomr7rrGcdddgfD]}|j|jd|jd}tj|||}|j dk(sJ|j |dddfdk7sJ|j |dddfd tz k\sJ|j |dddfd tzksJ|j |dtz k\sJ|j |d tzkrJy) Nr0rI)rrrq)rrr%rrrr)rrWrXr:zoomralleps)r=r7r?zarrs r, test_zoom1zTestZoom.test_zoom1saV -A**RYYrY(BCr/rJrXrct||}|jgdgdgdg|}|j|jdr|d|zz}t 5}|j t dtj||jddgd d | }dddtddd ddd f|y#1swY!xYw) NrDrrrIrrrr(rrrqr0) rsr9rrJrrrr:rRr)r=r7rJr?r@rrws r,test_zoom_affine01zTestZoom.test_zoom_affine01sE"zz<'*,38: ::djj"4 5 BI D   @C JJ{% &**4S#J1G+1@C  @ "#cc3Q3h-6  @ @s AB99Cc`d}tj|j||fd|z dy)Nr?rrO)r:rr)r=r?dims r,test_zoom_infinityzTestZoom.test_zoom_infinitys( RXXsCj)28)Dr/c|jd}d}tj||d}|jd}t||y)N)r rr)rr~r~r3)r4)r rr)rr:rr)r=r?rrrwrefs r,test_zoom_zoomfactor_onez!TestZoom.test_zoom_zoomfactor_ones?hhy!ll31-hh{#!#s+r/cx|jd}d}tj||}|jdk(sJy)N)r1rr)gUUUUUU?gE]t?g(\?)r$rK)rr:rr)r=r?rrrws r,test_zoom_output_shape_roundoffz(TestZoom.test_zoom_output_shape_roundoffs7hh{#.ll3%yyK'''r/r)r9)r1r)rr0)rrr5)rrrrrrrrc6tjddgddggtj}tj|tj|}|j|}|j|}t t j||d||y)Nrr r0r1rIrM)rVr9rXkronrtrr:r)r=rr5r?rrer+s r,test_zoom_by_int_order0z TestZoom.test_zoom_by_int_order0s|zzAq6q6#*,**6774/ JJt ::h'! LLD 5  r/rr)r$r$)rrrrrc Ttjtj|tj |}|j |}t tj||d|d|j tj|tj|y)NrIrT)r7r5 grid_mode) rVrWprodrrr9rr:rrrt)r=rrr5r?rr+s r,test_zoom_grid_by_int_order0z%TestZoom.test_zoom_grid_by_int_order0spyyu5==eD JJt ! LLD E JJrwwtRWWT]3 4 r/rrc|j|jd|jd}tjt d5t j|d|dfdddy#1swYyxYw) NrrI)r1r1zIt is recommended to use mode)matchr0T)r5r)rrWrXrTwarnsrr:r)r=r5r?r+s r,test_zoom_grid_mode_warningsz%TestZoom.test_zoom_grid_mode_warningssa JJryy"**y5v > \\+ ?A ; LLADD 9 : ; ; ;s A--A6z dask.arrayz!output=array requires buffer viewrrc|j|jdd}tj|d|j dy)z Ticket #643rrr0rr}N)rrWr:rrr=r?r+s r,test_zoom_output_shapezTestZoom.test_zoom_output_shapes5 JJryy}f - Q"((6"23r/c|jd}d}tj|tj|}tj||}t ||y)Ng$@r0)rWr:rrVarrayr )r=r?rfactoractualres r,test_zoom_0d_arrayzTestZoom.test_zoom_0d_array&sG IIcNa&!12<<6*)r/r zCuPy `zoom` needs similar fix.c|jd}ttj|d|ttj|d|y)Nr1r r9)rrr:rrs r,test_zoom_1_gh20999zTestZoom.test_zoom_1_gh20999.s; FF1I Q*A. Q/3r/zread-only backendznumpy round-tripc|jd}|j|}tj|d|t ||y)Nr1r r})r zeros_liker:rr)r=r?r+r~s r,test_zoom_1_gh20999_outputz#TestZoom.test_zoom_1_gh20999_output6s9 FF1Iq! Q&)"r/N)rgrhrirTrkrlrmrrrrrrrrr  thread_unsaferrjrrrrrr)r/r,rrs [[WeAqk2 -3 -" D [[WeAqk2 [[Wy,&?@ 7A3 7E ,(  [[V%EF [[V&78 8G " [[Wvv&67 [[V%EF [[V&DE  EG8   [[Vj&%9: [[;;;l+NOk*MN4OP4 *v&FG4H4v&FGk*=>|,>?#@?H#r/rc eZdZejj dedddZejj dedddZejj deddejj dddgd Z ejj deddd Z ejj deddd Z ejj deddd Z ejj deddd Z ejj dedddZdZdZedddZy) TestRotater7rrGc|jgdgdgdg|j}tj|d|}t ||y)Nrrr r rrIrrqr9rXr:rotaterrSs r, test_rotate01zTestRotate.test_rotate01BsGzz<'')02 <nnT1E2!#t,r/c|jgdgdgdg|j}|jgdgdgdgdg|j}tj|d|}t ||y)Nr)rr rrrIrrrrr rZrqr!r=r7r?r@rerws r, test_rotate02zTestRotate.test_rotate02Jsuzz<'')02 <::y(((*24=nnT2U3!#x0r/rJrXrc8t||}|jgdgdgdg|}|jgdgdgdgdgdg|}|j|jdr|d|zz}|d|zz}t j |d| }t ||y) Nrrrrrrr r rrrIr%r&rrr'rq)rsr9rrJr:r"rr]s r, test_rotate03zTestRotate.test_rotate03VsE"zz?**,38:::y(((( *27 8 ::djj"4 5 BI D X %HnnT2U3!#x0r/c|jgdgdgdg|j}|jgdgdgdg|j}tj|dd|}t ||y)Nr+r,rIrrr rrr'F)rr7r!r(s r, test_rotate04zTestRotate.test_rotate04hsszz?**,35::?::..079zzCnnT2uEB!#x0r/ctjd}tdD]=}tjgdgdgdgdgtj|dddd|f<?|j|}|jgdgdgdg|j}t j |d| }tdD]}t|dddd|f|y) N)r$r1r1r1r%r&rIrr r'rqrVrBrmr9rXr:r"rr=r7r?r@irerws r, test_rotate05zTestRotate.test_rotate05ssxx "q FAJJ (1(1(1(3;=**FDAqM F zz$::|++-46JJ@nnT2U3q >A %c!Q'lH = >r/ctjd}tdD]:}tjgdgdgdgtj|dddd|f<<|j|}|jgdgdgdgdg|j}t j |d| }tdD]}t|dddd|f|y) N)r1r$r1r1rr rIr%r&r'rqr2r3s r, test_rotate06zTestRotate.test_rotate06sxx "q IAJJ (4(4(6=?ZZIDAqM Izz$::y(((*24=nnT2U3q >A %c!Q'lH = >r/cJ|jgdgdgdggdz|j}|j|d}|jgdgdgdgdgdggdz|j}|j|d}tj|dd | }t ||y) Nr+r,r0rIr0r rr%r&r'r)axesr7r9rX permute_dimsr:r"rr(s r, test_rotate07zTestRotate.test_rotate07szzO++-.0129;EtY/:: ) ) ) )  +,/0 08:zz C ??8Y7nnT2F%@!#x0r/c@|jgdgdgdggdz|j}|j|d}|jgdgdgdggdz|j}|j|d}tj|ddd | }t ||y) Nr+r,r0rIr9r/r'rF)r:rr7r;r(s r, test_rotate08zTestRotate.test_rotate08szzO++-.0129;EtY/:: / / 12456=?ZZI??8Y7nnT2FEO!#x0r/c|jgdgdgdgdz|j}tt5t j |dd|j fdddy#1swYyxYw)Nr+r,r0rIr'r)r:)r9rXrrr:r"r)r=r?r@s r, test_rotate09zTestRotate.test_rotate09sizz?**,./079zzC: & : NN41dii. 9 : : :s %A''A0c F|j|jd|jd}|jgdgdgdgdgdggdgdgd gd gd ggdgd gd gdgdgg|j}t j |dd}t ||ddy)N-rI)r1rr1)rwrwrw)g|S2@g|S2@g>)!@)g9HD%@g9HD'@g9HD)@)gc~@gc~@gzLb @)g[ic6*@g[ic6,@g[ic6.@)g5@g6@g7@)gRK<@gRK=@gRK>@)g,PA@g,PgB@g,PB@)gݠ'?@grn@@grnГ@@)gGA@gG9B@gGB@rF)anglergư>g>rQ)rrWrXr9r:r"r )r=r?r@rerws r, test_rotate10zTestRotate.test_rotate10szz"))Bbjj)99E:: / D G /  1 !E D 2 D G  I !0 G G / /  12:<E nnTU;XDt>!S14 81r/N)rgrhrirTrkrlrmr#r)r-r0r5r7r=r?rArErrIr)r/r,rr@s [[WeAqk2-3- [[WeAqk2 13 1 [[WeAqk2 [[Wy,&?@1A31  [[WeAqk2131 [[WeAqk2 >3 > [[WeAqk2 >3 > [[WeAqk2 13 1 [[WeAqk2 13 1:=2v&PQRr/r)$rJnumpyrV numpy.testingrscipy._lib._array_apirrrrrr rTr r scipy.ndimager:r rkrjr pytestmarkrr\rrlrmrorrr-rOrrrr)r/r,rPs + *;;//KK11&+9NO P   E;E;P%1+.%($1$1)/$1N&!IJ%1+.R;R;/KR;j&!IJJ,J,KJ,ZtDtDnx x v D D NL#L#^SSr/