rL i.ddlmZmZmZmZddlZddlZddlm Z dZ GddZ ejjddd gd d gd ejjdgdd ejjdgdddddfdgdddddfgddddddfgdddddfgdddddfgdddddfgdddddfgdddddfgdddddfgdddddfgdddddfg gdd GddZd ZGd!d"ZGd#d$ZGd%d&Zd'Zd(Zy)))assert_allcloseassert_almost_equalassert_array_equalassert_array_almost_equal_nulpN)mlabc"tjjdd}tjj|dz}tj|}t t j||t t j||t tjt||zt j|t tjt|t j|y)Nrd) nprandomseedstandard_normalonesrr window_nonehanninglenwindow_hanning)nrandrs `/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/matplotlib/tests/test_mlab.py test_windowr sIINN1 A 99 $ $Q '# -D 771:Dt''-t4t''-t4rzz#d),t3T5H5H5NOrzz#d),d.A.A$.GHcNeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z y ) TestDetrendc:tjjdd}tjdd|}tj||_|j dz|_tjdd||_||jz |_ tjj|tj|dztjz|dz z z|_ |xj|jjzc_ y) Nrr r Y@g$gV@)r r r linspacezeros sig_zerossig_off sig_slopemeansig_slope_meanrsinpisig_base)selfrxs r setup_methodzTestDetrend.setup_methods q  KKC #!~~, T32!&&(l II % %a (266!A#bee)QsU2C+D D  ++-- rct|ddiy)Natol:0yE>)r)r)argss rallclosezTestDetrend.allclose$s)D)rc @tjddk(sJtjdddk(sJtjdddk(sJtjdtjdk(sJd|j|j|j |j |jz|jzj tj|j |j |jz|j |jz|j |jz|jzgtj|j |j |jz|j |jz|j |jz|jzgjfD]V}t|tjr ttj||=tj||k(rVJy)Nraxisnonekey@) r detrend_nonedetrendr"r#r(tolistr vstackT isinstancendarrayrr)sigs rtest_detrend_nonezTestDetrend.test_detrend_none's  $***  !,222||BF+r111||BD$5$56"<<<T\\4>>4==/$,,>FFH 4====4<<7==4>>9==4<<7$..HJK 4====4<<7==4>>9==4<<7$..HJKLM1   5C#rzz*"4#4#4S#93?((-444 5rcdD]b}tj|dk(sJtj|ddk(sJtj|tjdk(rbJ|jtj|j|j|jtj|j |j |jtj|j |j z|j |jtj|j |jz|j |jz|jtj|j |jz|j z|j |jzy)N)rr8rr$r6) r detrend_meanr:r0r!r(r"r#r%r@s rtest_detrend_meanzTestDetrend.test_detrend_mean=sO BC$$S)R/ //<<0B6 66<<):):;rA AA B d''7H d'' 6 F d''  (DEmm % d'' (FGmmd&9&99 ;   dmmdnn>9==4<<7$..HJKDMM MM MMD,?,?? MMD,?,??AB d''a8&((C d''A6? d''B7@ dll5ia@&I dll577Q?J LLd&7&7a @&(( Lrc|jtjddif|jtjddifdddif|jddif|jtjddiffD]=\}}tjt 5t j|fi|ddd?y#1swYJxYw) Nr7spamr8r4rr2r)r#r newaxispytestraises ValueErrorrr:r)signalkwargss rtest_detrend_ValueErrorz#TestDetrend.test_detrend_ValueErrorqs +eV_= +eQZ8vqk"&!- +fa[9   /NFFz* / V.v. / / / / /s B88C cdddif|jddif|jtjddiffD]=\}}tjt 5t j|fi|ddd?y#1swYJxYw)Nr8r4rr2r)r#r rUrVrWrXrrDrYs rtest_detrend_mean_ValueErrorz(TestDetrend.test_detrend_mean_ValueError|svqk"&!- +fa[9  4NFF z* 4!!&3F3 4 4  4  4 4s A88B ctjddk(sJtjddk(sJtjdddk(sJtjdtjdk(sJ|j|j|j|jzfD]1}|j tj||j 3y)Nrr8linearr6)rdetrend_linearr:r"r#r0r!r@s rtest_detrend_linearzTestDetrend.test_detrend_linears""2&",,,""3'2---||CX."444||CT%8%89R??? -  DC MM$--c2DNN C  Drcl|j|jz}|j}|jt j |d||jt j |tj ||jt j |j|y)Nr`r6)r#r"r!r0rr:rar;rHs rtest_detrend_str_linear_1dz&TestDetrend.test_detrend_str_linear_1dst- dll5h7@ dll5d.A.ABFK d))%,,.96Brcztj|j|j|j|jzg}tj|j|j|jg}|j t j|jdd|j|j t j|jt jd|j|j t j|dd||j t j|t jd|tjt5t j|jtjdddy#1swYyxYw)Nr`rrNr2)r r<r"r#r!r0rr:r=rarVrWrXrUrHs rtest_detrend_linear_2dz"TestDetrend.test_detrend_linear_2ds2 4<<>>>>DLL8:;DNN NN NN,- LLhQ 7 C LLd&9&9 BFHH N LLH1 5v ? LLD$7$7a @& J]]: & <   rzz : ; < < |dkr7tdtjtj| z}|}n|}| t | }n| dkrt | x}} n| }| |x}}n t | x}}d}|}|}|}| }|}|dk(s|d k(r|s|dzr#tj d| dz |d ddd}n!tj d| dz |dzdz }|dzr#tj d| dz |d ddd}ntj d| dz |dzdz }n|dzr*tj | dz | dz d|zd ddd}n tj | dz | dz |d }|dzr*tj | dz | dz d|zd ddd}n tj | dz | dz |d }|}|dz}t | |dzz dz}||z }| |||}|dzr |d| z dz z }t |dk(rtj|d| zz g}tj|d| zz g} |}!tj| }"t|D]:\}#} |"tj| | ztjzdzd|#zzz }"<|r|"jd }"|j}$| |$_||$_||$_||$_||$_||$_||$_||$_| |$_||$_||$_||$_||$_|!|$_| |$_|"|$_||$_||$_||$_ | |$_!ycc} w)Nrrrur2rxr rrrrPF)numendpointrrm)"r arangeintceillog2rrarray zeros_like enumerater&r'astypeclsFsrqfstims NFFT_density nover_densitypad_to_density NFFT_spectrumnover_spectrumpad_to_spectrum NFFT_specgramnover_specgrampad_to_specgram t_specgram t_density t_spectrumy freqs_densityfreqs_spectrumfreqs_specgramNFFT_density_real)%r)requestrrkrqlen_xrrrrrr*fstimrnover_density_realpad_to_density_realpad_to_spectrum_realNFFT_spectrum_realrrrrrNFFT_specgram_realnover_specgram_realrrrt_startt_stopt_steprrrrirs% rstimzTestSpectral.stims IIaQV $  &5 A+11"u*11   #  A /2 2  ,   !"  Q 1Ba1G G !.   !"3  a  BGGBGG4E,F$G!GHN"0 "0   "#&q6 q 58V ; ?#2  "1E E 14Q 7 $ &(.0 J 5I#5i#Q& " ArAv0C5:!<TT"C"$bS1Wb1f1E6;"='$)Q,11A5#&99wvf,-  ! !b&1* $J z?a #5R#@"ABJXX1QV<=>  MM! !&) 7HAu  BEE)A-.Q6 6A 7 #A kk  ')+)+-)+-#! #)++ 1S2s N'c&|jdk(sJ|jt|dz k(sJt||d|D]H}t j ||z j}||||dzkDsJ||||dz kDrHJy)Nrr2ư>r-r)argminargmaxrrr abs)r)vals targfreqsresfreqsrrrs r check_freqszTestSpectral.check_freqsds A%%% CM!O333)%8 'Ex%'(//1A7T!A#Y& &&7T!A#Y& && 'rct|dk(ry|jdkrXtj|}|j }|j |d||d|||j ||d||d|y|dd}|j }|r6|j}||} t| |d|d=d||dz |dz|r5yy)NrrOrT) rminr rr check_maxfreqcopyrr) r)specfsprfspazeroindfstimstspectmaxindmaxfreqs rrzTestSpectral.check_maxfreqms v;!   779q=66#;DkkmG   tHW~tHW~v F   tGH~tGH~v F ) \\^F&kG  5 '(E&(6!8 $ rc |jdzdd|jdzdd|jdzdd|jdzddddi|jd d |jd d d d d d|jd tjddf D]E}tjt 5t jdd|ji|dddGy#1swYRxYw)Nr2rm)rmode magnitudeanglephaserrSeggs)rrqru)rNFFTnoverlap)rr )rrwindowr*rj)rr rrVrWrXr_spectral_helper)r)r[s rtest_spectral_helper_raisesz(TestSpectral.test_spectral_helper_raisess&&(I .&&(K 0&&(G ,&&(G , V &&6 *&&"" 5R (&&"wwqz #  :Fz* :%%99&9 : : : : :s )"CC rrPpsdctjt5tj|j |dddy#1swYyxYw)N)r*r)rVrWrXr_single_spectrum_helperr)r)rs r-test_single_spectrum_helper_unsupported_modesz:TestSpectral.test_single_spectrum_helper_unsupported_modess7 ]]: & >  ( (466 = > > >s "AAz mode, case))rdensity)rspecgram)rspectrumc t|d|}tj|j|jt|d||jt|d|t|d||j |\}}}t ||dt |t|d|d|jd |jd k(sJ|jd t|d|jd k(sJy) Nfreqs_NFFT_nover_pad_to_)r*rrrrpad_torqrrrt_rr2)getattrrrrrrqrshape)r)rcasefreqsrrts rtest_spectral_helper_psdz%TestSpectral.test_spectral_helper_psds tfo.,,fftf~.wwTVD6?3474&!12** c1 U/742dV5EBzz!} A...zz!}4&k : @ @ CCCCrc >|j}tj|j|jdz|j|j |j |j|j\}}t||d|j|jk(sJy)Nr2r*rrrrrrqrr) rrcsdrrrrrrqrrr)rrrs rtest_csdzTestSpectral.test_csds|""HHtvv"&"3"3 $&*&8&8$($7$7#':: / c U/zzU[[(((rc 6|jyt|j|jdz|jtj |j }t jdd|ji|\}}t jdd|jdzi|\}}ttjtj||zjtjtj|dz |zdz jy)zTest zero padding of csd().Nr2)r*rrrrqrrrj) rdictrrrrrqrrr sum conjugaterl)r)sargsspec0_spec1s rtest_csd_paddingzTestSpectral.test_csd_paddings    $ tvvdggd>N>N::'88<!2!2!2!21!4>>qBFF2<<#6u#<=BBFF2<<a#8#>q#@AFF HrcB|j}tj|j|j|j |j |j|j\}}|j|jk(sJ|j||||jy)Nr*rrrrrq) rrrrrrrrrqrrrrs rtest_psdzTestSpectral.test_psds~""HHtvv"&"3"3 $&*&8&8$($7$7#':: / c zzU[[((( uc4;;7rzmake_data, detrendr$r`cX|jy||j}|dz}|dz}tj||g}tj|d}|jj }|j }tj |}tj||j|jd|j|\}} tj||j|jd|j|\} } tj||j|jd|j\} } t| | t| | t|| dtjt5t| | ddddy#1swYyxYw) NrTffffff @rr2r)r*rrrrqr:)r*rrrrqr.r)rr r<tiler=flattenrrrrrqrrrVrWAssertionError)r) make_datar:ydataydata1ydata2ydatabycontrolspec_gfsp_gspec_bfsp_bspec_cfsp_cs rtest_psd_detrendzTestSpectral.test_psd_detrendsd    $ $++,qs 66*+w'" =='5&*&7&7$(GG*+'+zz)0 2  6&*&7&7$(GG*+'+zz)0 2  8&*&7&7$(GG*+'+zz 3  5%(5%(U3 ]]> * 8 FF 7 8 8 8s F  F)c|jytj|j}|dz}|dz}tjtj |}||z}tj|}tj ||g}tj ||g}tj|d}tj|d}|jj}|j} |j}tj| |j|jd|jtj\} } tj||j|jd|jtj\} } tj||j|jd|jtj\}}|t||dzjz z}t!| |t!| |t#| |dt%j&t(5t#| |ddddy#1swYyxYw) NrTrrrr*rrrrqrrr.r)rr rrr ones_liker<rr=rrrrqrrrrrrVrWr)r)rrr  windowVals ycontrol1 ycontrol2r r ydatafr r rrrrs rtest_psd_window_hanningz$TestSpectral.test_psd_window_hannings    $  $++,qs((f)=> Z' ''/  66*+99i34w'778W-"##%6&*&7&7$(GG*+'+zz(,(;(; =  6&*&7&7$(GG*+'+zz(,(;(; =  8&*&7&7$(GG*+'+zz(,(8(8 :  #i.*a-!4!4!6665%(5%(U3 ]]> * 8 FF 7 8 8 8s I$$I-c b|jytj|j}tj|j}|dz}|dz}|}|}t j tj |}||z}t j |}tj||g}tj||g}tj|d}tj|d}|jj}|j} |j}t j| |j|jd|jtjtj \} } t j||j|jd|jtjtj \} } t j||j|jd|jtj\}}|t!||dzj#z z}t%| |t%| |t'| |d t)j*t,5t'| |d dddy#1swYyxYw) NrTrrr)r*rrrrqr:rrrr.r)rr rr rrrr<rr=rrrrqrarrrrrrVrWr)r)rr rr rrrr rr r rrrrs r&test_psd_window_hanning_detrend_linearz3TestSpectral.test_psd_window_hanning_detrend_linear#s!    $  $++,88D--.qs  ((i)@A  * '' 2  66*+99i34w'778W-"##%6&*&7&7$(GG*+'+zz)-)<)<(,(;(; = 6&*&7&7$(GG*+'+zz)-)<)<(,(;(; = 8&*&7&7$(GG*+'+zz(,(8(8 :  #i.*a-!4!4!6665%(5%(U3 ]]> * 8 FF 7 8 8 8s J%%J.c gd}tjtj tj|j}tj|j}t t |D]#}|||tj||zzz }%tj|j|j|jd|j|d\}}tj|j|j|jd|j|\}}t||jdzz||jz|dzjzdy) N)g^M?g+?gzTestSpectral.s "((1+A >rc tj|j|j|j|j |j |jd\}}}tj|j|j|j|j |j |j|\}}}t||t||t|||dy)NrmrHrr) rrrrrrrrqrr) r)rconvspecc freqspecctcr9 freqspecmtms r test_specgram_complex_equivalentz-TestSpectral.test_specgram_complex_equivalents $}}tvv262D2D046:6I6I484H4H37::2;  =y" $}}tvv262D2D046:6I6I484H4H37::26  8y" 9i02r"U U7rc tjtj|j}tj |j |j|j|j|j|j|\}}tj |j |j|j|j|j|j\}}t||t||dy)Nr)rr.r)rrr rrrrrrrrrqrr)r)r#rIrrLfspbs rtest_psd_windowarray_equalz'TestSpectral.test_psd_windowarray_equal s!!"''$*@*@"ABhh$($5$5"&''(,(:(:&*&9&9%)ZZ&) + thh$($5$5"&''(,(:(:&*&9&9%)ZZ 1 t 4&u51rN)%rgrhrirVfixturerrrrmark parametrizerrrrrr r rrDrrarrrr'r*r0r4r:r@rFrOrrr[r^rjrrrrs+DV^^'40R21R2h')0:" [[Vi%78>9> [[\, D  D ) H 8 [[ ((D%% &6(: ))T(( )BIIx+@ BC!8 C!8F(8T-8^$6 )$B [[:< << < [[ fi 65/FK3H ) vw/&'1B DE= E=8B -  [[Vi%78#9#, [[ "&& ! bhh  > ?  8  8(2rrcd}tjjdtjj|}tj|d}tj |tj ddz d}tj||ddd \}}ttj|d d tjtj|sJy)Nrvi!N,rg4@same)rrxrrw)rrrgbX9?gMbP?r) r r r randnrollconvolverrcohererr$isreal)Nr*rcohsqfs r test_cohererl!s AIINN8 A 2A Arwwr{S(v6A{{1aca#>HE1BGGENE6 99RWWU^ $$ $rceZdZdZdZdZy)TestGaussianKDEctjd}tj|}gd}tjj |||dy)zRegression test for #1181.rT)B\A?筱 ES?g f?rqrpdecimalN)r rr GaussianKDEtestingassert_array_almost_equal)r)x1kde y_expecteds rtest_kde_integer_inputz&TestGaussianKDE.test_kde_integer_input6sC YYq\r""  ,,SWj!,Lrctjgdt}tjddd}gd}t j |d}||}tj j||d y) Nr2rtrT)dtypeirurTr)g>L\9?gp4=?gH꟫?g8(H MT?gIJCR ?scottrs)r rfloatrrrurvrw)r)rxxsrzkde2y2s r$test_gaussian_kde_covariance_cachingz4TestGaussianKDE.test_gaussian_kde_covariance_caching>sb XX'u 5 [[ba (" G, "X ,,ZQ,Grc<tjjdd}tjj|}t j |}t j |d}t j ||j }tjddd}|j|}|j|}|j|jk(sJ|j|} |j| jk(sJy)N2r bw_methodr~r3) r r r rdrrufactorrevaluateall) r) n_basesamplexngkdegkde2gkde3rkdepdfkdepdf2kdepdf3s rtest_kde_bandwidth_methodz)TestGaussianKDE.test_kde_bandwidth_methodLs w YY__\ *#  W-  t{{; [[Q #r"..$zz|w{{},,,..$zz|w{{},,,rN)rgrhrir{rrrjrrrnrn4sM H-rrncNeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z y ) TestGaussianKDECustomctjt5tjgdddy#1swYyxYw)z(Pass no data into the GaussianKDE class.NrVrWrXrrur?s r test_no_dataz"TestGaussianKDECustom.test_no_databs1 ]]: & !   R  ! ! !s 9Actjt5tjdgdddy#1swYyxYw)z9Pass a single dataset element into the GaussianKDE class.*Nrr?s rtest_single_dataset_elementz1TestGaussianKDECustom.test_single_dataset_elementgs3 ]]: & #   bT " # # #s :Actjgdgdgdg}tjtjj 5t j|ddddy#1swYyxYw)z/Test silverman's for a multi-dimensional array.r2rrtrTrrrr silvermanNr rrVrWlinalg LinAlgErrorrrur)rxs rtest_silverman_multidim_datasetz5TestGaussianKDECustom.test_silverman_multidim_datasetlsR XXy)Y7 8 ]]29900 1 .   R - . . . A,,A5ctjgd}tj|d}d}t |j |dy)z4Test silverman's output for a single dimension list.r}rg/?rNr rrrurcovariance_factorr)rxmygaussrzs r test_silverman_singledim_datasetz6TestGaussianKDECustom.test_silverman_singledim_datasetrs= XX' (""2{3( G557QGrctjgdgdgdg}tjtjj 5t j|ddddy#1swYyxYw)z2Test scott's output for a multi-dimensional array.rrrrNrrs rtest_scott_multidim_datasetz1TestGaussianKDECustom.test_scott_multidim_datasetysR XXy)Y7 8 ]]29900 1 *   R ) * * *rctjgd}tj|d}d}t |j |dy)z/Test scott's output a single-dimensional array.r}rg e1?rNrrs rtest_scott_singledim_datasetz2TestGaussianKDECustom.test_scott_singledim_datasets= XX' (""2w/( G557QGrctjt5tjgddddy#1swYyxYw)z0Test the scalar's cov factor for an empty array.rTrNrr?s rtest_scalar_empty_datasetz/TestGaussianKDECustom.test_scalar_empty_datasets3 ]]: & .   R1 - . . .s ;Actjjdd}tdDcgc]!}tjj |#}}t j |d}|jdk(sJycc}w)zTest a scalar's cov factor.rrrTg?rNr r r rrdrrur)r)rr multidim_datarys rtest_scalar_covariance_datasetz4TestGaussianKDECustom.test_scalar_covariance_datasetsj w @EaI16I I}<$$&#---Js&Bctjjdd}tdDcgc]!}tjj |#}}d}t j ||}|jdk(sJycc}w)z=Test the callable's cov factor for a multi-dimensional array.rrrTcy)N皙?rjrRs r callable_funzLTestGaussianKDECustom.test_callable_covariance_dataset..callable_funsrrrNr)r)rrrrrys r test_callable_covariance_datasetz6TestGaussianKDECustom.test_callable_covariance_datasetso w @EaI16I I } E$$&$... Js&Bctjjdd}tjj|}t j |d}d}t |j|dy)z>Test the callable's cov factor for a single-dimensional array.rrrrg}B8?rN)r r r rdrrurr)r)rrryrzs rtest_callable_singledim_datasetz5TestGaussianKDECustom.test_callable_singledim_datasetsU w   5 } D( C113ZCrctjjdd}tjj|}t j t 5tj|ddddy#1swYyxYw)z@Test the error message that should be called when bw is invalid.rrinvalidrN) r r r rdrVrWrXrru)r)rdatas rtest_wrong_bw_methodz*TestGaussianKDECustom.test_wrong_bw_methodsZ w yy|, ]]: & 8   TY 7 8 8 8s A;;BN)rgrhrirrrrrrrrrrrrjrrrras<! # . H* H. . /D8rrc*eZdZdZdZdZdZdZy)TestGaussianKDEEvaluatectjddd}tj|}tjddd}gd}|j |}tj j ||dy)zr Test the evaluate method when the dim's of dataset and points have different dimensions. rrur )X]?AG$?rrg;]?rNr rrrurrvrw)r)rxryx2rzrs rtest_evaluate_diff_dimz.TestGaussianKDEEvaluate.test_evaluate_diff_dimse YYq"a r" YYq"a   LL  ,,Q A>rc<tjjdd}tjj|}t j |}dgdgdgg}t jt5|j|dddy#1swYyxYw)z Invert the dimensions; i.e., for a dataset of dimension 1 [3, 2, 4], the points should have a dimension of 3 [[3], [2], [4]]. rrr2rrN) r r r rdrrurVrWrXr)r)rrryrs rtest_evaluate_inv_dimz-TestGaussianKDEEvaluate.test_evaluate_inv_dimsy w   5 }-cA3_ ]]: &  LL    s 7BBctjddd}tjdg}tj|}dg}|j |}tj j||dy)z-Tests if evaluated against a one by one arrayrrurrrN)r rrrrurrvrwr)rxrryrzrs rtest_evaluate_dim_and_numz1TestGaussianKDEEvaluate.test_evaluate_dim_and_nums^ YYq"a  XXqc]r" \ LL  ,,Q A>rc6tjddd}tjdddtjdddg}tj|}t j t 5|j|dddy#1swYyxYw)Nrrur)r rrrurVrWrXr)r)rxrrys rtest_evaluate_point_dim_not_onez7TestGaussianKDEEvaluate.test_evaluate_point_dim_not_onesu YYq"a ii2q!299QA#6 7r" ]]: &  LL    s 4BBctjddd}tjddd}tj|}gd}|j |}tj j ||dy)Nrrurr)rrrrrrs r"test_evaluate_equal_dim_and_num_ltz:TestGaussianKDEEvaluate.test_evaluate_equal_dim_and_num_lts_ YYq"a  YYq!Q r"9 LL  ,,Q A>rN)rgrhrirrrrrrjrrrrs ? ??rrc tjgd}d}tjtjj||zdz||jzz }t j ||jd|z t jt jdddd \}}tj|dg|dd|ddddd z}t||d y) Nrr2rrr2rr2?rr2rrrrrrr:rrrrqrtrOrr) r rrfftsizerrrr9appendrudtSuPrkSu_1sides rtest_psd_onesided_normrs &'A B  1 " #Q &"qvv+ 6B 88AAFFqtD4D4D --$"&$ &DAqyy"Q%"Qq'BqrF4R4L"89HAxe,rc tjgd}d}tjtjj||zdz||jzz }t j ||jdzd|z t jt jdddd \}}tj|dg|dd |d dddd z}ttj|tj|y) z&Test the case len(x) < NFFT for psd().rrrr2rNrrrrtrO) r rrrrrrrr9rrrrs rtest_psd_oversamplingrs &'A B  1 " #Q &"qvv+ 6B 88AAFF1H2d6F6F --$"&$ &DAqyy"Q%"Qq'BqrF4R4L"89Hq 266(#34r) numpy.testingrrrrnumpyr rV matplotlibrrrr`rarrlrnrrrrrjrrrsOO IV<V