
    Yh@!                        d dl Z d dlZd dlmZ d dlmZmZmZm	Z	 d dl
mZmZ d dlmZ e j        j        Z edd          d             Zd	 Z ed
d           edd           G d d                                  ZdS )    N)stats)xp_default_dtypeis_numpyis_torchSCIPY_ARRAY_API)xp_assert_closexp_assert_equal)_apply_over_batch)x   )pr   c                    |dk    r| t          j        |                     } t          j        |          }|                                }d||<   |dk    r| j        dk    rt          j        || d                   n$t
          j                            | |          j        }|dk    r7t          j	        t          j        |                     rt           j
        |d d <   nt          j        | |          }t           j
        ||<   |S )Nomit      ?harrell-davisr   r   	propagate)npisnancopysize	full_liker   mstatshdquantilesdataanynanquantile)r   r   
nan_policymethodp_maskress         q/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/scipy/stats/tests/test_quantile.pyquantile_reference_last_axisr#      s    Vrx{{lOXa[[F	AAfI  ()!r|Aqt$$$L,,Q227 	$$)<)<$VCFk!Q&CKJ    c                    t          j        | |d          t          j        ||d          }} t          | |||          }t          j        |d|          }|st          j        ||          }|S )Naxis)r   moveaxisr#   squeeze)r   r   r(   r   keepdimsr   r!   s          r"   quantile_referencer,      sn    ;q$##R[D"%=%=qA
&q!Z
@
@C
+c2t
$
$C )j4(((Jr$   z
dask.arrayzNo take_along_axis yet.)reasonz	jax.numpyzNo mutation.c                   D   e Zd Zd Zej                            dg d          ej                            dg d          d                         Z edd	          ej                            d
ddg          ej                            dddg          ej                            dg d          ej                            dddg          ej                            dddg          d                                                                         Z	d Z
ej                            dg dej        i fg dddddej        gej        ddej        ej        gi fg dg g i fej        dggdej        dgddifg g gd ej        dej                  d
difg g gd ej        d           ddd!fg g gd ej        d"          ddd!fg dd#g ej        dej                  i f ej        dd$                              d%          dd&gggd'dd!fddgdd(ggg d)g d*gd'dd!fg
          d+             Zej                            d
g d,          ej                            dddg          d-                         Zej                            dg d.          d/             Zd'S )0TestQuantilec                    |                     g d          }|                     d          }d}t          j        t          |          5  t	          j        |                     ddg          |           d d d            n# 1 swxY w Y   t          j        t                    5  t	          j        |                     ddg          |           d d d            n# 1 swxY w Y   d	}t          j        t          |          5  t	          j        ||                     d
dg                     d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        ||d           d d d            n# 1 swxY w Y   t          j        t          |          5  t	          j        ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        |                     |j        ddg          |d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        ||d           d d d            n# 1 swxY w Y   d}t          j        t          |          5  t	          j        ||                     ddg          d           d d d            d S # 1 swxY w Y   d S )Nr         r   z`x` must have real dtype.)matchTFy      ?      ?r2   z"`p` must have real floating dtype.r   r   z"`axis` must be an integer or None.r'   )r   r&   z7`axis` is not compatible with the shapes of the inputs.zThe input contains nan valuesraise)r   zmethod` must be one of...za duckr   z/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?)asarraypytestraises
ValueErrorr   r   r   )selfxpr   r   messages        r"   test_input_validationz"TestQuantile.test_input_validation,   s   JJyyy!!JJsOO-]:W555 	9 	9N2::tUm44a888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9]:&& 	5 	5N2::tQi00!444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 7]:W555 	2 	2N1bjj!Q00111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 7]:W555 	+ 	+N1ac****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+]:W555 	/ 	/N1ag....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ L]:W555 	) 	)N1aa((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 2]:W555 	N 	NN2::rvq!n55qWMMMM	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N 	N .]:W555 	2 	2N1a1111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 D]:W555 	. 	.N1a"----	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. Y]:W555 	F 	FN1bjj#s44uEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	Fs   
+BBB%+CC #C +D;;D?D?#FFF-GGG9HH!$H!3JJJ,KKK8LL #L -M>>NNr   )	inverted_cdfaveraged_inverted_cdfclosest_observationhazeninterpolated_inverted_cdflinearmedian_unbiasednormal_unbiasedweibullzshape_x, shape_p, axis))
   Nr&   )rJ   rJ   r&   )rJ   )r2   r3   r&   )rJ   r2   Nr   rK   c                    t          |          }t          j                            d          }|                    |          }|                    |          }	t          j        ||	||          }
|                    ||          |                    |	|          }	}t          j        ||	||          }t          ||                    |
|                     d S )N   lv_r   )r   r(   dtype)r   r   randomdefault_rngr   r9   r   r   )r=   r   shape_xshape_pr(   r>   rP   rngr   r   refr!   s               r"   test_against_numpyzTestQuantile.test_against_numpyT   s     !$$i##$566JJGJ$$JJGJ$$k!QvD999zz!5z))2::au:+E+E1nQ&t<<<RZZ5Z99:::::r$   TzPyTorch doesn't have `betainc`.)cpu_onlyr-   r(   r   r   r+   Fr   )r   r   marrayrP   float32float64rF   r   c                 :   t           j                            d          }d}|                    |                              |          }	|                    |                              |          }
|                    |          dk    }t          j        |          sJ t           j        |	|<   |st          j        |
|d          }
t          |          r|
                                }d|d<   d	|d
<   t          ||          }|dk    r|dk    rt          j        d           t          |          rt          j        d           t          st          j        d           t          j        d          }t          |||          }|                    |          }|                    |	|          }t%          j        ||                    |
          fi |}t)          |	|
fddi|}t+          |j        |                    ||                     d S t          ||||          }t%          j        |                    |	          |                    |
          fi |}t)          |	|
fi |}t+          ||                    ||                     d S )NrM   )      rN   g?Tr(   r+   g        r   g      ?rY   r   zNeeds 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   )maskr   r   rO   )r(   r+   r   r   )r   rQ   rR   astyper   r   meanr   ravelgetattrr:   skipr   r   importorskipdict_get_namespacer9   r   r   r,   r   r   )r=   r(   r+   r   rP   r   r>   rU   shaper   r   ra   p0rY   kwargsmxpx_mpr!   rV   s                      r"   test_against_referencez#TestQuantile.test_against_referenceg   s    i##$566JJEJ""))%00JJEJ""))%00zzuz%%+vd||&$ 	5t444A
 B<< 	BBqEBrFE""!!((,---|| > = > > >" MKLLL(22FthvFFFF''++C;;qt;,,D.s{{1~~@@@@C$QGGfGGGCCHbjjEj&B&BCCCF4(!+F< < <nRZZ]]BJJqMMDDVDD A0000RZZ5Z99:::::r$   c                     t          j        |                    d|j                  d          }|j        t          |          k    sJ d S )NrJ   rO   r   )r   r   arangeint64rP   r   )r=   r>   r!   s      r"   test_integer_input_output_dtypez,TestQuantile.test_integer_input_output_dtype   sG    nRYYrY::C@@y,R00000000r$   zx, p, ref, kwargsr   r1   r&   g      ?r3   r2   r   )r   r_   )r   r   r8      )r3   r3   r3   g      ,@N   )g      ?r   g      ?)g      ?g      @g      
@c                     t          |          }|                    |          |                    |          |                    ||          }}}t          j        ||fi |}t	          ||           d S )NrO   )r   r9   r   r   r	   )r=   r   r   rV   rl   r>   default_dtyper!   s           r"   test_edge_caseszTestQuantile.test_edge_cases   sq     ),,JJqMM2::a=="**S*2V2Vc1nQ,,V,,S!!!!!r$   )r   r   r2   c                    g d}|                                 }|rd||<   n|                    |           t          j        |                    t          |                    d||          }|j        t          |          k    sJ d S )N)r3   ru   r   r   r   r_   )r   popr   r   zerostuplerj   )r=   r(   r+   r>   rj   	out_shaper!   s          r"   test_size_0zTestQuantile.test_size_0   s     		JJLL	 	 IdOOMM$nRXXeEll33SthWWWyE),,,,,,,,r$   )rA   rB   rC   c                    |dk    r$t           j        dk     rt          j        d           t          j        dt           j                  }t          j        ddd          }t          j        |                    |          |                    |          |	          }t          j        |||	          }t          ||                    ||j                             d S )
NrC   z2.0.1z5Bug in np.quantile (numpy/numpy#26656) fixed in 2.0.1g       @rO   r   g      ?g      ?r6   )
r   __version__r:   rf   rq   r[   r   r   r9   r	   )r=   r   r>   r   r   r!   rV   s          r"   test_transitionzTestQuantile.test_transition   s    
 ***r~/G/GKOPPPIb
+++Ia((nRZZ]]BJJqMM&IIIk!Qv...RZZ2:Z>>?????r$   )__name__
__module____qualname__r@   r:   markparametrizerW   skip_xp_backendsro   rs   r   r   fullr{   rq   reshaperx   r~   r    r$   r"   r/   r/   (   s       &F &F &FP [X
; 
; 
;< < [5
3 
3 
34 4
; 
;4 4	< <
; t,MNNN[VaV,,[Z%77[\+J+J+JKK[Wy)&<==[X/'BCC*; *; DC >= LK 87 -, ON*;X1 1 1 [0
c262	
))b!QRV,rvq!RVRV.Lb	Q
))RR	 FA;-rvqkL&+A	Br(CBF++fb\	:r(C$!)G)G	Hr(C&))A4+H+H	I
sCj'"'!RV,,b	1
")Ar


"
"9
-
-sseWIT
*
*
,q6Aq6
---0A0A0A/BT
*
*
,	./ /" "/ /" [VYYY//[Z%77- - 87 0/- [XHHHJ J	@ 	@J J	@ 	@ 	@r$   r/   )r:   numpyr   scipyr   scipy._lib._array_apir   r   r   r   scipy._lib._array_api_no_0dr   r	   scipy._lib._utilr
   r   r   r#   r,   r/   r   r$   r"   <module>r      s=              W W W W W W W W W W W W H H H H H H H H . . . . . .;/  8X&&  '&$   ,'@AAA+n555]@ ]@ ]@ ]@ ]@ ]@ ]@ 65 BA]@ ]@ ]@r$   