o
    gN                     @   s  d dl mZ d dl mZ d dlZd dlZd dlmZ ddl	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZ g dg d	fZeej ed
dgg7 ZddhZ!dd Z"ej#$dej#%de" dd Z&ej#$dej#%dedd Z'ej#%dedd Z(ej#%dedd Z)ej#%dedd Z*d d! Z+d"d# Z,d$d% Z-d&d' Z.d(d) Z/d*d+ Z0ej#%d,g d-ej#%d.ed/d0 Z1ej#%d.ed1d2 Z2d3d4 Z3ej#%d5e3 d6d7 Z4d8d9 Z5ej#%d:ed;d< Z6d=d> Z7dS )?    N)assert_allclose)stats   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_edge_supportcheck_named_argscheck_random_state_propertycheck_picklingcheck_rvs_broadcastcheck_freezing'check_deprecation_warning_gh5982_moment)check_deprecation_warning_gh5982_interval)distdiscreteinvdistdiscrete)rv_discrete_frozen)r            )皙?皙?g333333?g?values zipfian
nhypergeomc                  c   sV    t  } tD ]"\}}|tv rtj|||tjjdV  n|||| vfV  | | qd S )N)marks)setr   distslowpytestparammarkslowadd)seendistnameargr   r   c/home/ubuntu/cloudmapper/venv/lib/python3.10/site-packages/scipy/stats/tests/test_discrete_basic.pycases_test_discrete_basic   s   r.   zignore::RuntimeWarningzdistname,arg,first_casec                 C   sv  zt t| }W n ty   | }d} Y nw tjd |j|ddi}t|}|j| \}}t|||| d  t	|||  t
|||| d  t|| t|||  t|||  d}t||||| d  |rd	}	|j|j|j|j|jg}
d
dddd}|| d}t||||	|
 | dkrt| t|| t|| t|| t|||  |jjtjjkrt||tj d S d S d S )Nsample distributioniP sizei  z cdf_ppfz oth{Gz?z
 chisquare)r      r   r      )randint	hypergeom	bernoullinchypergeom_walleniusr   )getattrr   	TypeErrornprandomseedrvsuniquecheck_cdf_ppfcheck_pmf_cdf	check_othr   r   r   check_discrete_chisquarepmflogpmfcdflogcdflogsfgetr   check_scale_docstringr   r   r   r   	__class___entropyrv_discreter   )r+   r,   
first_casedistfnr=   suppmvalphalocscale_defaultsmethsspec_kkr   r   r-   test_discrete_basic$   sP   





rW   zdistname,argc                 C   s   zt t| }W n ty   | }d} Y nw |j|ddi\}}}}t|||  t|||||  t||||  t|||||  t||||||  | dvrTt||||||  t	|||d t	|||||  d d S )Nr/   momentsmvsk)zipf	yulesimonr   r   )
r8   r   r9   r   r   r   r   r	   r
   check_moment_frozen)r+   r,   rN   rP   rQ   srV   r   r   r-   test_momentsR   s    r^   zdist,shape_argsc                 C   s   | dv }zt t| }W n ty   | }d| j| jf } Y nw td}|j}g }g }t|D ]"}|d fd|d   }	|| }
|	t
|	|
 |d|	d  q/|	| |	|j t|| |||tjg d S )N)	betabinomskellamr[   dlaplacenchypergeom_fisherr7   zrv_discrete(values=(%r, %r))r   r   )r   r   r   )r8   r   r9   xkpkr:   zerosnumargsrangeappendfullinsertr0   r   int_)dist
shape_args
shape_onlydistfunclocnargsallargsbshaperV   shp	param_valr   r   r-   test_rvs_broadcastj   s&   

rv   z	dist,argsc              	   C   s   zt t| }W n ty   | }Y nw tjd tjdddtjddg}|j| \}}|D ]&}t	|d | || g|j
dg|R d|i|j
d	g|R d|ig q1d S )
NM r   r   
           rp         ?)r8   r   r9   r:   r;   r<   r4   supportnptassert_array_equalppf)rl   argsrN   re_locs_a_brp   r   r   r-   test_ppf_with_loc   s   .r   z
dist, argsc           	      C   sP  zt t| }W n ty   | }Y nw tjd tjdddtjddg}|j| \}}|D ]*}|| |d | f}|jdg|R d|i|jd	g|R d|if}t	
|| q1tjjddd
dtd
tjjddd
dg}|j| \}}|D ]*}|| |d | f}|jdg|R d|i|jd	g|R d|if}t	
|| q{d S )Nrw   rx   ry   r   r   rz   r{   rp   r|   )   r   r0   )r8   r   r9   r:   r;   r<   r4   r}   isfr~   r   re   )	rl   r   rN   r   r   r   rp   expectedresr   r   r-   test_isf_with_loc   s,   00r   c           	      C   s   | j |g|R  }|dt|  }t| j|g|R  ||d  t| j| j |g|R  d g|R  ||d  t| dsk| j| \}}|||k  }t| j| j |g|R  d g|R  || j |d  d S d S )Nrz   z
-roundtrip:0yE>rc   z ppf-cdf-next)	rE   r:   spacingr~   r   r   hasattrr}   inc)	rN   r,   rO   msgcdf_supp	cdf_supp0r   r   supp1r   r   r-   r?      s   &
&r?   c              	   C   s8  t | dr	| j}nt| jdg|R  d }tt||d }| j|g|R  }| j|g|R   }d\}}|dkr?d\}}t	j
||d  ||d  ||d	 t|}	|	d d
 t|	d  }
t	| j|
g|R  d d}| |d|i}t	
||	dd  | t||	|  t	||
| d d S )Nrc   r1   r   rz   )绽|=r   r`   )h㈵>r   r   atolrtolry   r         ?rp   )r   rc   intr   listrg   rE   rC   cumsumr~   r   r:   asarraydiffassert_equal)rN   r,   r+   indexstartindcdfspmfs_cumr   r   rV   	k_shiftedrp   rl   r   r   r-   r@      s&   

.r@   c                 C   s    t j| | ||ddd d S )Nr   r   )r~   r   moment)rN   r,   rP   rV   r   r   r-   r\      s   
r\   c                 C   s   t j| j|g|R  d| j|g|R   ddd tddd}t j| j|g|R  | jd| g|R  ddd | jdg|R  }t | j|d g|R  dk t | j|d g|R  dk d S )	Nr|   r   r   r1   Gz?   r   r   )	r~   r   sfrE   r:   linspacer   r   assert_)rN   r,   rO   r   q	median_sfr   r   r-   rA      s   (( $rA   c                 C   s>  d}| j | \}}tt|d}tt|dd }	t||	}
d}|g}g }|
D ])}| j|g|R  }|| |d krP|| |||  |}|d| krP nq'|d |k rc|| |d|  t|}t|}|d }||d< t	||\}}t
t|t|| \}}t||kd	|t|t|f  d
S )as  Perform chisquare test for random sample of a discrete distribution

    Parameters
    ----------
    distname : string
        name of distribution function
    arg : sequence
        parameters of distribution
    alpha : float
        significance level, threshold for p-value

    Returns
    -------
    result : bool
        0 if test passes, 1 if test fails

    g?ii  r   r   g+=ry   r   z2chisquare - test for %s at arg = %s with pval = %sN)r}   r   maxminrg   rE   rh   r:   array	histogramr   	chisquarelenr~   r   str)rN   r,   r=   rR   r   wsuppr   r   lohighdistsupportlastdistsuppdistmassiicurrenthistsuppfreqhsuppchispvalr   r   r-   rB      s>   





rB   c                 C   s"   | j d urtd| j v d S d S )Nscale)__doc__r~   r   )rN   r   r   r-   rI   8  s   
rI   method)rC   rD   rE   rF   r   rG   r   r   zdistname, argsc                    s   zt t| W n
 ty   Y d S w | dv rddg}nddg}dd |D }ddg} j|g|R d|i}tj| fd	dt|g||R  D d
d
d d S )N)r   r   r   r   r   r   c                 S   s   g | ]}|gd  qS )r   r   ).0pr   r   r-   
<listcomp>L      z+test_methods_with_lists.<locals>.<listcomp>rp   c                    s   g | ]} j | qS r   )rC   )r   rQ   rl   r   r-   r   P  r   V瞯<)r   r   )r8   r   r9   rC   r~   r   zip)r   r+   r   zp2rp   resultr   r   r-   test_methods_with_lists>  s   
 
r   c                 C   s>   t t| }tdd}|j|g|R  }tj}t|| d S )N   )r8   r   r:   arangerE   nanr~   r   )r+   r   rl   xvalsr   r   r   r-   test_cdf_gh13280_regressionT  s
   
r   c               	   c   s    ddhi} t  }tD ]A\}}||v rq|| ztt|}W n	 ty)   Y qw | }t|D ]\}}|j| 	|t  v sC|j
sDq2||j|fV  q2qd S )Nnbinomn)r#   r   r)   r8   r   r9   _shape_info	enumeratenamerH   integrality)integrality_exceptionsr*   r+   shapesrl   
shape_infoishaper   r   r-   "cases_test_discrete_integer_shapes^  s*   

r   zdistname, shapename, shapesc                 C   s   t t| }| }dd |D }||}t|}|| }|d }	|d }
|g|	g|
gg||< |j| \}}tt||d}|j	|g|R  }t
t|dd d f rYJ tt|dd d f siJ t
t|dd d f ryJ d S )Nc                 S   s   g | ]}|j qS r   )r   )r   r   r   r   r-   r   }  s    z'test_integer_shapes.<locals>.<listcomp>r   r   r   r   r   )r8   r   r   r   r   r}   r:   roundr   rC   anyisnanall)r+   	shapenamer   rl   r   shape_namesr   shapes_copyvalid_shapeinvalid_shapenew_valid_shapeabr   rC   r   r   r-   test_integer_shapesx  s   

  $r   c                  C   s   d} t jt| d tddj W d    n1 sw   Y  t jt| d tddj W d    n1 s9w   Y  dtj_tdd}t|tsOJ t	tjd d S )Nz,'rv_discrete_frozen' object has no attribute)matchrz   r   herringpdf)
r%   raisesAttributeErrorr   binomr   logpdf
isinstancer   delattr)messagefrozen_binomr   r   r-   test_frozen_attributes  s   r   zdistname, shapesc                 C   s   t | trtt| }n| }|j| \}}t|jddgg|R  |d |f t|jddgg|R  |d |f t|j	dg|R  |d |f d S )Nr   r   )
r   r   r8   r   r}   r~   r   r   r   interval)r+   r   rl   r   r   r   r   r-   test_interval  s   
&&&r   c                     sH  t jd} t | dd }| d}|t | }tj||fd t dg|d d   | d }t |dd   |d d g | d }t 	|}t dg|d d   | d }t |dd   dg | d } 
 \}}	t||d  t|	|d  t || t |d t |d t jdd	' t |t | t |t j  t |t j  W d    n1 sw   Y  t || t || t |dg|d d    t jdd	8 t |t  |d
d t |t  |d
d t |t  |d
d W d    n	1 s9w   Y  t |d |  t |d |  t |d |  t jdd	8 t |t  |d
d t |t  |d
d t |t  |d
d W d    n	1 sw   Y  t || t || t |d d |dd   t d|d  t d|	  |}
t |
| t d|  | t d|  | t d|	 t d|d  t ddd} |d  |d f}t d| | t d   t d|d |	f  d}t  | t || }t || d | }t || d | |d  }t || d | |d  d }t  | t  t | t  | t jdd||||f t |d | }t d| t dd d t  | t dd | t jdd	 t  fdd     W d    n	1 sw   Y  t jd}  j!d| d}t jd}  | jdd}t|| d S )Nl   KU[ rz   r   r   ry   r   r   ignore)divider   )r   r1   r   r   r   g      ?r   rY   )rX   c                 S   s   dS )Nr   r   r   r   r   r-   <lambda>  s    z test_rv_sample.<locals>.<lambda>c                 S   s   | d S )Nr   r   r   r   r   r-   r    s    c                    s
     | S )N)rD   r   r   r   r-   r    s   
 d   )r0   random_stater   )"r:   r;   default_rngsortsumr   rL   r   tolistr   r}   r   rC   errstaterD   loginfrE   rF   r   rG   r   r   r   r   medianmeanstdsqrtvarr   expectentropyr=   )rngrc   rd   xk_leftxk_rightcdf2	cdf2_left
cdf2_rightr   r   sf2psint2med2mean2var2skew2kurt2mom3r=   rvs0r   r   r-   test_rv_sample  s   
$,
$$"		 

" r"  )8numpy.testingtestingr~   r   numpyr:   r%   scipyr   common_testsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   scipy.stats._distr_paramsr   r   !scipy.stats._distn_infrastructurer   r   rL   r$   r.   r'   filterwarningsparametrizerW   r^   rv   r   r   r?   r@   r\   rA   rB   rI   r   r   r   r   r   r   r"  r   r   r   r-   <module>   sX    H


,
$

8
	

