L i@!ddlZddlZddlmZddlmZmZmZm Z ddl m Z m Z ddl mZejj ZedddZd Zed d ed d GddZy)N)stats)xp_default_dtypeis_numpyis_torchSCIPY_ARRAY_API)xp_assert_closexp_assert_equal)_apply_over_batch)x)pr c|dk(r|tj|}tj|}|j}d||<|dk(r|jdk(rtj||dn)t j j||j}|dk(rRtjtj|r*tj|ddntj||}tj||<|S)Nomit? harrell-davisr r propagate) npisnancopysize full_likermstats hdquantilesdataanynanquantile)r r nan_policymethodp_maskress e/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/scipy/stats/tests/test_quantile.pyquantile_reference_last_axisr# sV rxx{lO XXa[F AAfI  ()! r||Aqt$LL,,Q277  $ )<VVCFkk!Q&&CK Jctj||dtj||d}}t||||}tj|d|}|stj||}|S)Naxis)rmoveaxisr#squeeze)r r r(rkeepdimsrr!s r"quantile_referencer,s_ ;;q$ #R[[D"%=qA &q!Z @C ++c2t $C jj4( Jr$z dask.arrayzNo take_along_axis yet.)reasonz jax.numpyz No mutation.cpeZdZdZej j dgdej j dgddZedd ej j d d d gej j d ddgej j dgdej j dddgej j dddgdZ dZ ej j dgde jifgddd d de jge jd de je jgifgdggife jdggde jdgddifgggde jde jd difgggde jd d dd!fgggde jd"d dd!fgdd#ge jde jife jd d$j!d%dd&gggd'dd!fd dgdd(gggd)gd*gd'dd!fg d+Zej j d gd,ej j d ddgd-Zej j dgd.d/Zy')0 TestQuantilec|jgd}|jd}d}tjt|5t j |jddg|dddtjt5t j |jddg|dddd }tjt|5t j ||jd d gdddd }tjt|5t j ||d dddtjt|5t j ||d dddd}tjt|5t j ||d dddd}tjt|5t j |j|j d dg|ddddd}tjt|5t j ||ddddd}tjt|5t j ||ddddd}tjt|5t j ||jddgddddy#1swY~xYw#1swYBxYw#1swYxYw#1swYxYw#1swYxYw#1swYqxYw#1swY$xYw#1swYxYw#1swYxYw#1swYyxYw)Nr rz`x` must have real dtype.)matchTFy??r2z"`p` must have real floating dtype.rr z"`axis` must be an integer or None.r')rr&z7`axis` is not compatible with the shapes of the inputs.zThe input contains nan valuesraise)rzmethod` must be one of...za duckrz/If specified, `keepdims` must be True or False.*)r+zD`keepdims` may be False only if the length of `p` along `axis` is 1.333333?)asarraypytestraises ValueErrorrrr)selfxpr r messages r"test_input_validationz"TestQuantile.test_input_validation,s JJy ! JJsO- ]]:W 5 9 NN2::tUm4a 8 9 ]]: & 5 NN2::tQi0! 4 57 ]]:W 5 2 NN1bjj!Q0 1 27 ]]:W 5 + NN1ac * + ]]:W 5 / NN1ag . /L ]]:W 5 ) NN1aa ( )2 ]]:W 5 N NN2::rvvq!n5qW M N. ]]:W 5 2 NN1a 1 2D ]]:W 5 . NN1a" - .Y ]]:W 5 F NN1bjj#s4u E F FA 9 9 5 5 2 2 + + / / ) ) N N 2 2 . . F Fsx(K& (K3(L%L !LL'5L47M5M 3*M&K03K=L  LL$'L14L>M  MM"r) inverted_cdfaveraged_inverted_cdfclosest_observationhazeninterpolated_inverted_cdflinearmedian_unbiasednormal_unbiasedweibullzshape_x, shape_p, axis)) Nr&)rJrJr&)rJ)r2r3r&)rJr2NrrKct|}tjjd}|j|}|j|} tj|| ||} |j |||j | |} }t j|| ||} t| |j | |y)Nlv_r)rr(dtype)rrrandom default_rngrr9rr) r=rshape_xshape_pr(r>rPrngr r refr!s r"test_against_numpyzTestQuantile.test_against_numpyTs!$ii##$56 JJGJ $ JJGJ $kk!QvD9zz!5z)2::au:+E1nnQ&t<RZZ5Z9:r$TzPyTorch doesn't have `betainc`.)cpu_onlyr-r(rr r+Fr)rrmarrayrPfloat32float64rFrctjjd}d}|j|j|} |j|j|} |j|dkD} tj| sJtj | | <|stj | |d} t|r| j} d| d<d | d <t||}|d k(r|d k(rtjd t|rtjdtstjdtjd } t|||}| j!|}|j#| | }t%j&||j#| fi|}t)| | fddi|}t+|j,|j#||yt||||}t%j&|j#| |j#| fi|}t)| | fi|}t+||j#||y)NrM)rNg?Tr(r+gr g?rYrzNeeds gh-22490zFsum_cpu not implemented for UInt64, see data-apis/array-api-compat#242z-MArray is only available if SCIPY_ARRAY_API=1)r(r+r)maskrrrO)r(r+rr)rrQrRastyperrmeanrravelgetattrr:skiprr importorskipdict_get_namespacer9rrr,rr)r=r(r+rrPrr>rUshaper r rap0rYkwargsmxpx_mpr!rVs r"test_against_referencez#TestQuantile.test_against_referencegsii##$56 JJEJ " ) )% 0 JJEJ " ) )% 0zzuz%+vvd||&&$t4A B<BBqEBrFE"  !( ,-| =>" KL((2FthvFF''+C;;qt;,D..s{{1~@@C$QGfGGC CHHbjjEj&B C 4(!+F<nnRZZ]BJJqMDVD A00RZZ5Z9:r$ctj|jd|jd}|jt |k(sJy)NrJrOr)rrarangeint64rPr)r=r>r!s r"test_integer_input_output_dtypez,TestQuantile.test_integer_input_output_dtypes;nnRYYrY:C@yy,R0000r$zx, p, ref, kwargsrr1r&g?r3r2r)rr_)r rr8)r3r3r3g,@N)g?rg?)g?g@g @ct|}|j||j||j||}}}tj||fi|}t ||y)NrO)rr9rrr )r=r r rVrlr> default_dtyper!s r"test_edge_caseszTestQuantile.test_edge_casessW), JJqM2::a="**S *2Vc1nnQ,V,S!r$)rr r2cgd}|j}|rd||<n|j|tj|j t |d||}|j t |k(sJy)N)r3rurr rr_)rpoprrzerostuplerj)r=r(r+r>rj out_shaper!s r" test_size_0zTestQuantile.test_size_0sdJJL IdO MM$ nnRXXeEl3SthWyyE),,,,r$)rArBrCc|dk(r(tjdkrtjdtjdtj }tjddd}t j|j||j|| }tj||| }t||j||j y) NrCz2.0.1z5Bug in np.quantile (numpy/numpy#26656) fixed in 2.0.1g @rOrg?g?r6) r __version__r:rfrqr[rrr9r )r=rr>r r r!rVs r"test_transitionzTestQuantile.test_transitions * *r~~/G KKO P IIb + IIa (nnRZZ]BJJqM&Ikk!Qv.RZZ2::Z>?r$)__name__ __module__ __qualname__r@r:mark parametrizerWskip_xp_backendsrorsrrfullr{rqreshaperxr~rr$r"r/r/(s&FP [[X ;< [[5 34 ;4 < ;t,MN [[VaV, [[Z%7 [[\+JK [[Wy)&<= [[X/'BC*;D>L8-O *;X1 [[0 c2662  b!QRVV,rvvq!RVVRVV.Lb Q RR FFA;-rvvqkL&+A B r(CBFF+fb\ : r(C$!)G H r(C&)A4+H I sCj'"''!RVV,b 1 "))Ar  " "9 -sseWIT * , q6Aq6 -0A/BT * , . /" /"  [[VY/ [[Z%7-80- [[XHJ @J @r$r/)r:numpyrscipyrscipy._lib._array_apirrrrscipy._lib._array_api_no_0drr scipy._lib._utilr rrr#r,r/rr$r"rs WWH.;;//8X&'$,'@A+n5]@]@6B]@r$