B
    `j              (   @   sh  d dl Zd dlmZ d dlZd dlmZ d dlm	Z	 d dl
m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mZm Z  d dl!m"Z" d	Z#d
dgddgddgddgddggZ$dddddddddddddgZ%d d!ddd"d#d$dddddd%d&d'dd(dd)ddd*d+gZ&dd d!ddd"d#d$dddddd*d%d&d,dd(d-dd)ddgZ'e(d.d
d/d0d1d2d3d4d5dd6d7d8d9d"d:dddd;d<d=d>d?d@d&d'd,dAdBd-dCdDdEdFdGddd+g'Z)ej*ddHdHdIdIdIdJdJdJdJd	d	d	d	d	dKdKdKdKdLdLdLdMdMdNgdMdOZ+e,e+Z-dPdQ Z.ej/0dRe. dSdT Z1ej/0dRe. dUdV Z2dWdX Z3dYdZ Z4ej/j5ej/0d[e4 d\d] Z6ej/0d^e"d_d` Z7dadb Z8dcdd Z9dedf Z:dgdh Z;didj Z<dkdl Z=dmdn Z>dodp Z?dqdr Z@dsdt ZAdudv ZBdwdx ZCdydz ZDd{d| ZEd}d~ ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOej/0dddddddddgej/0de"dd ZPdS )    N)raises)IntegrationWarning)stats)betainc   )check_normalizationcheck_momentcheck_mean_expectcheck_var_expectcheck_skew_expectcheck_kurt_expectcheck_entropycheck_private_entropycheck_entropy_vect_scalecheck_edge_supportcheck_named_argscheck_random_state_propertycheck_meth_dtypecheck_ppf_dtypecheck_cmplx_derivcheck_picklingcheck_rvs_broadcastcheck_freezing)distcont   	betaprime)d   V   Zfatiguelife)r   
invweibull)gF6c?Zburr)gRGY?gft2@
genextreme)gy7
@kstwoksoneZkappa4
gausshyperZrecipinvgaussgenexponvonmisesZvonmises_lineZcosineZpowerlognormZ	johnsonsu	kstwobignZexponpowZ	exponweibZhalfgennormZgompertzZ	johnsonsbZmielkencfnctZ	powernormZtrapzlevy_stablerv_histogram_instanceZncx2Zrdistbetachichi2dgammadweibullZerlangfgammaZgengammageninvgaussZgennormZ	genparetoZinvgammalevy_lZloggammaZlogisticZ
loguniformZmaxwellZnakagaminorminvgaussZpearson3
reciprocalriceskewnormttukeylambda                  	   )Zbinsc              c   s`   xZt d d  tt fg D ]>\} }| dkr.qq| tkrNtj| |tjjdV  q| |fV  qW d S )Nr(   )marks)r   histogram_test_instancetupledistslowpytestparammarkslow)distnamearg rJ   V/home/dcms/DCMS/lib/python3.7/site-packages/scipy/stats/tests/test_continuous_basic.pycases_test_cont_basicW   s    "rL   zdistname,argc             C   s  | dkrt j| d ytt| }W n tk
r>   | }d} Y nX tjd d}t	 }|j
tdd |j|d|i}| }| }|j| \}}	t||||	|||| d	  t|||  t|||  t|||  t|||  t|||  t|||  t|||  t|||  d
}
| dkr2t|j||
| n| dkrJt| ||
| d}|j|j|j|j|jg}ddddddd}|| d}| dkrd}n| dkrd}t||||| t || t!|| t"|| | dkrt#|||  |j$dkrt%|| |j&j'tj(j'kr&| dkr&t)||tj( t	 4}|
t*d |
t*d |
t+d t,|| W d Q R X t-|| t.|| t/||| t0|| | t1krt2|| | dkrt3|||  | t4krt5|||dd  | t6krt7|||dd  W d Q R X d S )N	truncnorm)reasonr)   i i  z
.*frechet_)categorymessagesizezsample mean testg{Gz?r1   )r   r   g      g      ?g333333?g      @)Z	frechet_lZweibull_maxr2   Zparetor8   r)   g      ?r   )r   r!   )r:   )r%   r    r   r$   z The occurrence of roundoff errorzExtremely bad integrandzinvalid value   )8rD   xfailgetattrr   	TypeErrornprandomseednptsuppress_warningsfilterDeprecationWarningrvsZmeanvarcheck_sample_meanvar_check_cdf_ppfcheck_sf_isf	check_pdfcheck_pdf_logpdfcheck_pdf_logpdf_at_endpointscheck_cdf_logcdfcheck_sf_logsfcheck_ppf_broadcastcheck_distribution_rvscdfpdflogpdflogcdflogsfgetr   r   r   r   r   numargscheck_vecentropy	__class___entropyZrv_continuousr   r   RuntimeWarningr   check_retrieving_supportr   r   r   fails_cmplxr   check_ppf_privateskip_fit_testcheck_fit_argsskip_fit_fix_testcheck_fit_args_fix)rH   rI   distfnsnsupr]   smsvmvalphaZlocscale_defaultsZmethsZspec_xxrJ   rJ   rK   test_cont_basica   s    



















r   c          	   C   s   yt t| }W n tk
r*   | }d} Y nX t f}|jtdd |j| }t	|j| sbt
t	|j|ddis|t
t	|j|dd ist
W d Q R X d S )Nr)   z
.*frechet_)rO   rP   rQ   rJ   )rT   r   rU   rY   rZ   r[   r\   r]   rV   ZisscalarAssertionError)rH   rI   r{   r}   r]   rJ   rJ   rK   test_rvs_scalar   s    


r   c               C   s   t tjd d S )N)g      ?g?)r   r   r(   rJ   rJ   rJ   rK   &test_levy_stable_random_state_property   s    r   c           	   c   s   t dg} t ddg}xrtd d  tt fg D ]V\}}|dkrBq0|| k}||k}||||dfV  |rj|s0tj||dddtjjdV  q0W d S )Nr$   r&   r(   FT)r@   )setr   rA   rB   rD   rE   rF   rS   )Zfail_normalizationZfail_higherrH   rI   Zcond1Zcond2rJ   rJ   rK   cases_test_moments   s    
"r   z3distname,arg,normalization_ok,higher_ok,is_xfailingc          	   C   s   yt t| }W n tk
r*   | }d} Y nX t }|td |jtdd |r^|t |j|ddi\}}}	}
|rt|||  |rt	||||  t
|||||	|  t|||||  t|||||
|  t|||||  t|||||  W d Q R X d S )Nr)   z9The integral is probably divergent, or slowly convergent.z
.*frechet_)rO   rP   ZmomentsZmvsk)rT   r   rU   rY   rZ   r[   r   r\   r   r	   r   r
   r   check_loc_scaler   )rH   rI   Znormalization_okZ	higher_okZis_xfailingr{   r}   r   r   skrJ   rJ   rK   test_moments   s*    


r   zdist,shape_argsc             C   s   | dkrt d | dk}tt| }td}td}|j}g }ddg}xNt|D ]B}	|	d fd|	d   }
|	||	 t|
  |
d	|	d  qTW |||g t|| |||d
 d S )N)r"   r#   ztoo slow)Zargusr   r-   r.   Z	exponnormr1   r(   r'   r3   r5   r6   Zsemicircularr9   )r:   r   r:   r;   )r   r   d)rD   skiprT   r   rV   zerosonesro   rangeappendinsertextendr   )distZ
shape_argsZ
shape_onlyZdistfunclocscalenargsallargsZbshaper   ZshprJ   rJ   rK   test_rvs_broadcast  s    



r   c              C   sx  t jd tjjt ddd} t | }t	t 
|dkd tjjdt dd} t | }t	t 
|dkd tjjt dt dd} t | }t	t 
|dkd tjjt dgdggt dd} t |  }t	t 
|dkd tttjjddgddggddgddggd tttjjddd	dgddd
 tttjjddddgddddgdgdggd d S )N{   r   r   )r   r   r   z0All the values are equal, but they shouldn't be!r9   r:   r;   )r9   r9   )r;   )rV   rW   rX   r   Znormr]   r   ZdiffrY   assert_allr   arrayZravelassert_raises
ValueErrorr0   )valsr   rJ   rJ   rK   test_rvs_gh2069_regression0  s$    


$r   c              C   s   t j} t| ddtjd t| ddtjd t| dtj dd t| dtj dd t| ddtjd t| ddtjd t| dtj dd t| dtj dd t| dtj dd d S )Nr   r   gA?g|N?)r   rM   rY   assert_almost_equalri   rV   infZ_cdf)tnrJ   rJ   rK   test_nomodify_gh9900_regressionK  s    r   c              C   s   t ddddddg} t dddd	dd
g}dd t| |D }ttjd| || dd t| |D }ttjd| || dd t| |D }ttj| | || dd t| |D }ttj|| || d S )Nr   r9   r:   r;   r   r<   r>          0   c             S   s    g | ]\}}t jd ||qS )r=   )r   r4   ri   ).0_a_brJ   rJ   rK   
<listcomp>o  s    z4test_broadcast_gh9990_regression.<locals>.<listcomp>r=   c             S   s    g | ]\}}t jd ||qS )r   )r   r4   ri   )r   r   r   rJ   rJ   rK   r   r  s    c             S   s    g | ]\}}t j|||qS rJ   )r   r4   ri   )r   r   r   rJ   rJ   rK   r   u  s    c             S   s    g | ]\}}t j|||qS rJ   )r   r4   ri   )r   r   r   rJ   rJ   rK   r   x  s    )rV   r   ziprY   assert_array_almost_equalr   r4   ri   )abansrJ   rJ   rK    test_broadcast_gh9990_regressionf  s    r   c            	   C   sH   t jjtdddgdtdddg d tjtdddgdd d S )	Ng      @g       @g      ?g      ?g      @g      @g      @)r   r   r   r   )r   rM   rk   rV   r   r   rJ   rJ   rJ   rK    test_broadcast_gh7933_regression{  s    r   c              C   sb   t jddd } t jt d t df }dd t| |D }tj| |t j}t	|| d S )Nr9   y             @Y@2   3   c             S   s"   g | ]\}}t j||tjqS rJ   )r   rM   rj   rV   r   )r   _xr   rJ   rJ   rK   r     s    z*test_gh2002_regression.<locals>.<listcomp>)
rV   Zr_r   r   r   rM   rj   r   rY   r   )r   r   expectedr   rJ   rJ   rK   test_gh2002_regression  s
    r   c              C   s(   d} t jdt| g| d gg d S )Ng(\@g      ?)r   r   ppfrV   r   )crJ   rJ   rK   test_gh1320_regression  s    r   c             C   s2   t |rt|||| t |r.t||| d S )N)rV   isfinitecheck_sample_meancheck_sample_var)r{   rI   r   r   r~   r   r|   msgrJ   rJ   rK   r_     s    

r_   c             C   sr   |d }|d | t | }| | t|d|   }td| d||||   }t|dkd|||| f  d S )Nr   g      ?g      ?g{Gz?z'mean fail, t,prob = %f, %f, m, sm=%f,%f)floatrV   sqrtr   rY   r   )r~   r   nZpopmeandfZsvarr7   ZprobrJ   rJ   rK   r     s    r   c             C   sP   |d }|d | t | }tjj||d }t|dkd|||| f  d S )Nr   r9   g{Gz?z(var fail, t, pval = %f, %f, v, sv=%f, %f)r   r   distributionsr,   sfrY   r   )r   r   Zpopvarr   r,   pvalrJ   rJ   rK   r     s
    r   c             C   s<   dddg}t j| j| j|f| f| |t|d d d S )NgMbP?g      ?g+?z - cdf-ppf roundtrip)decimalerr_msg)rY   r   ri   r   DECIMAL)r{   rI   r   valuesrJ   rJ   rK   r`     s    
r`   c             C   sx   t j| j| jdddgf| f| dddgt|d d t j| jddgf| d| jddgf|  t|d d d S )Ng?g      ?g?z - sf-isf roundtrip)r   r   g      ?z - cdf-sf relationship)rY   r   r   isfr   ri   )r{   rI   r   rJ   rJ   rK   ra     s    $
ra   c             C   s   | j d	| }d}| j|f| }|dk s2|dkrJ|d }| j|f| }| j|| f| | j|| f|  | d }|d7 }tj||t|d d S )
N      ?gư>g-C6?g     @g?g       @z - cdf-pdf relationship)r   r   )r   )r   rj   ri   rY   r   r   )r{   rI   r   medianZepsZpdfvZcdfdiffrJ   rJ   rK   rb     s    0rb   c          	   C   s   t dddddddg}| j|f| }|t | }| j|f| }| j|f| }||dkt |@  }|t | }|d	7 }tjt ||d
|d d S )Ng?g333333?g?g      ?g333333?gffffff?g?r   z - logpdf-log(pdf) relationshipr=   )r   r   )	rV   r   r   r   rj   rk   rY   r   log)r{   argsr   pointsr   rj   rk   rJ   rJ   rK   rc     s    rc   c       	   	   C   s   t ddg}| j|f| }|t | }t }ddddddg}x|D ]}|jt|d	 qLW | j|f| }| j	|f| }||dkt |@  }|t | }|d
7 }tj
t ||d|d W d Q R X d S )Nr   r   z)divide by zero encountered in true_dividez!divide by zero encountered in logz#divide by zero encountered in powerz invalid value encountered in addz%invalid value encountered in subtractz%invalid value encountered in multiply)rO   rP   z - logpdf-log(pdf) relationshipr=   )r   r   )rV   r   r   r   rY   rZ   r[   rs   rj   rk   r   r   )	r{   r   r   r   r   r}   Zsuppress_messsagesrj   rk   rJ   rJ   rK   rd     s$    

rd   c             C   s   t ddddddddd	g	}| j|f| }|t | }| j|f| }| j|f| }||d
k }|t | }|d7 }tjt ||d|d d S )Ng        g?g333333?g?g      ?g333333?gffffff?g?g      ?r   z - logsf-log(sf) relationshipr=   )r   r   )	rV   r   r   r   r   rm   rY   r   r   )r{   r   r   r   r   r   rm   rJ   rJ   rK   rf     s    rf   c             C   s   t ddddddddd	g	}| j|f| }|t | }| j|f| }| j|f| }||dk }|t | }|d
7 }tjt ||d|d d S )Nr   g?g333333?g?g      ?g333333?gffffff?g?g      ?z - logcdf-log(cdf) relationshipr=   )r   r   )	rV   r   r   r   ri   rl   rY   r   r   )r{   r   r   r   r   ri   rl   rJ   rJ   rK   re     s    re   c                sb   d g   }|r" fdd|D }| j d| }| j d	| }|d7 }tj||g  d|d d S )
Nr   c                s   g | ]}t |g  qS rJ   )rV   r   )r   _)num_repeatsrJ   rK   r   %  s    z'check_ppf_broadcast.<locals>.<listcomp>      ?z - ppf multipler=   )r   r   )r   )r   )r   rY   r   )r{   rI   r   r   r   ZmediansrJ   )r   rK   rg      s    rg   c             C   st   t j|| |dd\}}||k rpt j| | |dd\}}t||kdt| d t| d t| d t|  d S )Ni  )r   NzD = z	; pval = z
; alpha = z
args = )r   ZkstestrY   r   str)r   r   r   r]   Dr   rJ   rJ   rK   rh   -  s
    
rh   c             C   s   t | j| | j|  d S )N)rY   Zassert_equalZ
vecentropyrr   )r{   r   rJ   rJ   rK   rp   @  s    rp   c       	      C   sJ   d\}}| j |||d\}}t|| | | t|| | | d S )N)g      $@g      $@)r   r   )r   rY   assert_allclose)	r{   rI   r   r   r   r   r   mtZvtrJ   rJ   rK   r   D  s    r   c             C   s>   | j tdddgf| }ttt| |d  d S )Ng?g      ?g?zppf private is nan)Z_ppfrV   r   rY   r   anyisnan)r{   rI   r   ZppfsrJ   rJ   rK   rv   K  s    rv   c             C   sH   d\}}| j | }| j |||d}tt|| | t| d S )N)r   r9   )r   r   )ZsupportrY   r   rV   r   )r{   r   r   r   ZsuppZsupp_loc_scalerJ   rJ   rK   rt   Q  s
    
rt   c          
   C   s   t jdd\ t H}|jtdd |jtdd |jtdd | |}| j|dd}W d Q R X W d Q R X tt	|d	t	| k tt	|d	t	| k d S )
Nignore)r   z
.*frechet_)rO   rP   z!The shape parameter of the erlangzfloating point number truncatedZpowell)Z	optimizerr9   )
rV   errstaterY   rZ   r[   r\   rs   fitr   len)r{   rI   r]   r}   r   vals2rJ   rJ   rK   rx   Y  s    
"rx   c       	   
   C   s  t jdd t }|jtdd |jtdd | j|dd}| j|dd	}tt	|d
t	| k t|d dk t|d dk tt	|d
t	| k t	|dkr| j||d d}tt	|d
t	| k t|d |d k t	|dkrJ| j||d d}tt	|d
t	| k t|d |d k t	|d
kr| j||d
 d}tt	|d
t	| k t|d
 |d
 k W d Q R X W d Q R X d S )Nr   )r   z
.*frechet_)rO   rP   z!The shape parameter of the erlangr   )Zflocr   )Zfscaler9   r   r   )Zf0)f1)f2)
rV   r   rY   rZ   r[   r\   rs   r   r   r   )	r{   rI   r]   r}   r   r   Zvals3Zvals4Zvals5rJ   rJ   rK   rz   i  s,    rz   methodrj   rk   ri   rl   r   rm   r   r   zdistname, argsc       
   	      s   t  }|jtdd tt|}t||  |dkrH| drHddg}nddg}d	d
 |D }ddg}ddg} |f|||d}	t j|	 fdd
t|f|||f D ddd W d Q R X d S )Nz
.*frechet_)rO   rP   r   r   g      ?r9   g?g?c             S   s   g | ]}|gd  qS )r9   rJ   )r   r   rJ   rJ   rK   r     s    z+test_methods_with_lists.<locals>.<listcomp>r   r   g)\(?)r   r   c                s   g | ]} | qS rJ   rJ   )r   r   )r/   rJ   rK   r     s    g+=gvIh%,=)ZrtolZatol)	rY   rZ   r[   r\   rT   r   
startswithr   r   )
r   rH   r   r}   r   r   Zshape2r   r   resultrJ   )r/   rK   test_methods_with_lists  s    



 r   )QnumpyrV   Znumpy.testingZtestingrY   rD   r   r   Zscipy.integrater   Zscipyr   Zscipy.specialr   Zcommon_testsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zscipy.stats._distr_paramsr   r   Zdistcont_extrarC   rw   ry   r   ru   Z	histogramZ_hZrv_histogramrA   rL   rF   Zparametrizer   r   r   r   rG   r   r   r   r   r   r   r   r   r_   r   r   r`   ra   rb   rc   rd   rf   re   rg   rh   rp   r   rv   rt   rx   rz   r   rJ   rJ   rJ   rK   <module>   s   P





$

^%
	

