L iE ddlZddlZddlmZmZmZddlZddlmZddl m Z ejjZ ejjZ GddZejej eej$ej ej eeej(ej(eeiZe dGd d Zd Zd Zy) N)assert_almost_equalxp_assert_closexp_assert_equal)raises)signalceZdZdZeddgdZeddgdZdZedd d Zed d Z ed d Z ed dZ ed dZ y) TestBSplinesaTest behaviors of B-splines. Some of the values tested against were returned as of SciPy 1.1.0 and are included for regression testing purposes. Others (at integer points) are compared to theoretical expressions (cf. Unser, Aldroubi, Eden, IEEE TSP 1993, Table 1).Tcupy)cpu_only exceptionsctjjd}ttt j |jdgd|jdd}ddd|zz z}|j|}|jgdgdgd gd gd gd gd gdgdgdgdgdg |j}tt j |d|y)N0r ) g7ݿgD @g5P?gB ߸"@gyӼ®@gE5`@g&)#@gEf!g<@gSbυ.X gFgg$`#@) gI)rtol) rrrrr complex128rrr)rrrdata_array_complexresult_array_complexs r"test_spline_filter_complexz'TestBSplines.test_spline_filter_complexIsii##E* XXa^chhq!nR.??a(:&:!:;ZZ(:;!zz&&&%+&%1 &6.0]]9 * <@ ,,-?C,4 9r$ctjtjdddsJt tj|j dgd|j dgdy)Nrg<~??rg?g& .>atol)mathiscloser gauss_splinerr)rrs r"test_gauss_splinezTestBSplines.test_gauss_splinetsV||F//157HIII++BJJt,!}@)rr cspline1drrr)rrc1dc1d0s r"test_cspline1dzTestBSplines.test_cspline1ds((QC9 B4rzz : <jj&-/ZZ9 ((4D)EqI3Ozz'.0jj:((4D)EFMr$cttj|jdg|jdg|jt t tj|jgddt t tj|jgdd|jgd|j}ttj|jgd|j|y)Nrr9rr?r-r8)g)`O?gAk2@g@go @g5ڕ@)rr qspline1drrr ValueErrorr)rrq1d0s r"test_qspline1dzTestBSplines.test_qspline1ds((QC9 B4rzz : < z6++RZZ8H-I2Nz6++RZZ8H-I3Ozz'.0jj:   RZZ(8 ZK Ld r$c tj|jddg|j|jdg|j}t ||jdg|jtj|jgd|j|jg|j}t ||jg|jgd}|d|dz }gd}|jgd}tj |}|jgd |j}t tj||j|||d |tjtd 5tj|jg|j|jdg|jdddy#1swYyxYw) Nr9rrr-rr rrrr:r@rAr&gggggg ggggr8gr9?r-g?@@@g @@g@g@@@g@g@g@ @g!@g"@g#@g$@g%@g&@g'@g(@g)@ gw/@~jt@&1 @Zd;@K7 @Zd@"~@jt@tV?K7A`@)&r^SW@r]7.O@r\00/@g)-3/@rgr\rfr]rer^ ^:@r_4Ev@r`c4~#.@rauyJ9@rb/~ @rcY@@rdrmrcrlrbrkrarjr`rir_rhr^redxx0+Spline coefficients 'cj' must not be empty.match) rcspline1d_evalrrrrrBpytestrrH) rrrxronewxycjnewys r"test_cspline1d_evalz TestBSplines.test_cspline1d_evals  ! !"**b!WBJJ*"G!zz2$bjjzA C2::rd"**:=>  ! !"**Zrzz*"J!zz"BJJz? A2::b :;< - qTAaD[ JJ& '   a zz: BD M   ! !"bjj&62!A$ G ]]:"OQ G  ! !"**Rrzz*"B"$**cU"***"E G G G Gs AG..G7cxttj|jddg|jdg|jdgt tj|jgd|jg|jggd}|d|dz }gd}|jgd}tj |}|jgd|j }tj||j||j ||d }t||tjtd 5tj|jg|j |jdg|j dddy#1swYyxYw) Nr9rrLrMrrRr[)&r^TW @r] oR@r\bP@geW/@rr\rr]r~r^ B@r_HG(@r`nfWΜ=@ra%d O@rbu# @rc)C@rdrrcrrbrrarr`rr_rr^r~rrnrqrr) rrqspline1d_evalrrrGrrurrH) rrrwrorxryrzr{rvs r"test_qspline1d_evalz TestBSplines.test_qspline1d_evals|--bjj"a.A2::rdCST B4(  --bjj.DbjjQSnU 2  . qTAaD[ JJ& '   a zz: BD M  ! !  4rzz 2rad  4 ]]:!NP G  ! !"**Rrzz*"B"$**cU"***"E G G G Gs AF00F9N) __name__ __module__ __qualname____doc__skip_xp_backendsr#r+r3r=rErJr|rr$r"r r sH t9/+:/+bt9(9:(9T d+QR S t$ N% Nt$  %  t$G%GBt$G%Gr$r T)r5c eZdZdZdZej jdeje eje ejegdZeddej jdeje eje ejegdZeddej j%d d Zeddej j%d ej jdeje eje ejegd Zy) TestSepfir2dc D|jgd}tjjdd}|j|}t j |||ddt jtd5t j |||dddddt jtd5t j ||dd|dddt jtd5t j ||j|d |dddt jtd5t j |||j|d dddy#1swYxYw#1swYxYw#1swYmxYw#1swYyxYw) Nr-rTrWrTr-r& rz odd lengthrrrobject too deep)rrP) rrrrrsepfir2drurrHreshaperrfiltimages r"test_sepfir2d_invalid_filterz)TestSepfir2d.test_sepfir2d_invalid_filtersKzz34 q!$ 5!tT!"X.]]:\ : 3 OOE4ab 2 3 ]]:\ : 3 OOE48T 2 3]]:-> ? D OOE2::dG# ? D OOE4D')B C D D 3 3 3 3 D D D Ds0:E28E>6(F (F2E;>F FFc|jgd}tjjdd}|j|}t j t d5tj|j|d||dddt j t d5tj|dddf||dddy#1swYLxYw#1swYyxYw)Nrrrr)r@r@r@zobject of too small depthr) rrrrrurrHrrrrs r"test_sepfir2d_invalid_imagez(TestSepfir2d.test_sepfir2d_invalid_imageszz34 q!$ 5!]]:-> ? F OOBJJui8$ E F]]:-H I 5 OOE!Q$Kt 4 5 5 F F 5 5s (C+CCC(dtypctjgdgdgdgdg|}gd}dg}tj|||}t|}tj gdgdgdgdg|}t ||dtj|||}tj gdgdgdgdg|}t ||dy) N)rrr:r:rrrrSrrSr)rUrWrXrXrWrUgؗҜ image.shape: flaky)r6c tjgd}tjjdd}tjgdgdgdgdg}t t j|||ddd|y)N)r-rTrWrTr-rVrTr@)g!SB@g¿3=>@gs`[C@gsLhE@)gͨ*C@g5A@g;/K;E@g#jD@gB`G@g]n0a#F@)gٕzH@g|FC@gǜgKE@gCF@r:)rrrrrrrr)rrrrrs r"test_sepfir2d_strided_2z$TestSepfir2d.test_sepfir2d_strided_21si xx;< q!$::K L L LNO tT#A#Y?Jr$z*XXX: flaky. pointers OOB on some platformsc2tjgd|}tjgdgdgdgdgdg|}gdgd gd gd gd g}tj|}tj|||ddd }t ||d|j t|k(sJgdgdgdgdgdg}tj|}tj||ddd |ddd }t ||d|j t|k(sJy)N)rrr@rrr:rr)rr:rrr)rrr:r:r:)rrr:rr:)rr:rrr:)r:r:rrr)g^@g@Y@gV@a@g_@)`@g@_@g_@c@gd@)rg a@gb@g@d@g f@)rg_@g`@gb@g`b@)ge@gc@rgd@ga@r:rr.)g6@gA@D@g?@G@)g;@C@H@rgK@)g@@gE@gH@gJ@gM@)rgF@rgB@r)gP@gO@rgA@gG@)rrrrrrrr)rrrrrrrs r"test_sepfir2d_strided_3z$TestSepfir2d.test_sepfir2d_strided_3?s xx-T: O++++ -59 : 32222 4 ::h'd3Q3i8u5||/5555----- / ::h'SqS 4!9=u5||/5555r$N)rrrrrrumark parametrizeruint8intfloat32float complex64complexrrrxfailrrrr$r"rrsID& 5 [[V 3 E2<<A66.d+DE [[V 3 E2<<A ;F ;d+DE [[CD KEF Kd+DE [[JK [[V 3 E2<<A6LF 6r$rctjjd}|jdd}t j |dy)NiW GIrZ)rrrrr cspline2drrrs r"test_cspline2drds6 ))   *C HHR E UC r$ctjjd}|jdd}t j |y)NiW rr)rrrrr qspline2drs r"test_qspline2drjs4 ))   *C HHR E Ur$)r0numpyrscipy._lib._array_apirrrrurscipyrrrxfail_xp_backendsr rrrrrrrrrrrrr$r"rs ;;//KK11MGMGbHHbjj#rzzJJ E5LL",,B $y6y6 y6x! r$