3
Od+                 @   s   d dl Z d dlZd dljZd dlmZmZmZ d dl	m
Z d dljjZd dlmZ d dlmZ d-ddZd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd  Z!d!d" Z"d#d$ Z#d%d& Z$d'd( Z%d)d* Z&d+d, Z'dS ).    N)assert_allcloseassert_equalsuppress_warnings)raises)getfullargspec_no_self)statsFc             C   sL   xFt |D ]:\}}|r.tj| | t| | q
tj| | t| | q
W d S )N)	enumeratema_nptr   getattrnpt)res
attributesmaiattr r   R/var/www/html/virt/lib64/python3.6/site-packages/scipy/stats/tests/common_tests.pycheck_named_results   s    r   c       
      C   s   | j d| }tj|d |dkr,d\}}nd\}}| jdd |d}tj|d|||d	d
 | j| \}}| j|f| }	tj|	d d S )Nr   g      ?Zncfh㈵>Hz>c             S   s   dS )N   r   )xr   r   r   <lambda>!   s    z%check_normalization.<locals>.<lambda>)argsT)atolrtolerr_msgverbose)r   )r   r   )r   r   )momentr   r   expectsupportcdf)
distfnr   distnameZnorm_momentr   r   Znormalization_expectZ_a_bZnormalization_cdfr   r   r   check_normalization   s    

r%   c             C   s   | j d	| }| j d
| }tj|s>tj||d|d d ntjtj||dt|   tj|stj|||  |d|d d ntjtj||dt|   d S )Nr      
   z - 1st moment)decimalr   z - 1st moment -infinite, m1=%sz - 2ndt momentz - 2nd moment -infinite, m2=%s)r   )r&   )r   npisinfr   assert_almost_equalassert_str)r"   argmvmsgm1m2r   r   r   check_moment*   s    

r4   c             C   s4   t j|r0| jdd |}tj||d|d d d S )Nc             S   s   | S )Nr   )r   r   r   r   r   >   s    z#check_mean_expect.<locals>.<lambda>   z - 1st moment (expect))r(   r   )r)   isfiniter   r   r+   )r"   r.   r/   r1   r2   r   r   r   check_mean_expect<   s    
r7   c             C   s<   t j|r8| jdd |}tj||||  d|d d d S )Nc             S   s   | |  S )Nr   )r   r   r   r   r   E   s    z"check_var_expect.<locals>.<lambda>r5   z - 2st moment (expect))r(   r   )r)   r6   r   r   r+   )r"   r.   r/   r0   r1   r3   r   r   r   check_var_expectC   s    
r8   c                sV   t j|rB| j fdd|}tj||t j|d d|d d ntjt j| d S )Nc                s   t j|   dS )N   )r)   power)r   )r/   r   r   r   L   s    z#check_skew_expect.<locals>.<lambda>g      ?r5   z - skew)r(   r   )r)   r6   r   r   r+   r:   r,   isnan)r"   r.   r/   r0   sr1   Zm3er   )r/   r   check_skew_expectJ   s
    
r=   c                sf   t j|rH| j fdd|}tj||d t j|d dd|d d nt j|sbtjt j| d S )Nc                s   t j|   dS )N   )r)   r:   )r   )r/   r   r   r   U   s    z#check_kurt_expect.<locals>.<lambda>g      @r&   gh㈵>z - kurtosis)r   r   r   )	r)   r6   r   r   r   r:   Zisposinfr,   r;   )r"   r.   r/   r0   kr1   Zm4er   )r/   r   check_kurt_expectS   s    

r@   c             C   s&   | j | }tjtj| |d  d S )Nztest Entropy is nan)entropyr   r,   r)   r;   )r"   r.   r1   entr   r   r   check_entropy\   s    
rC   c             C   s"   t j| j| |j| f|  d S )N)r   r   Z_entropy)r"   r   
superclassr   r   r   check_private_entropya   s    rE   c                s   t jddgddgg}j d|i} fdd|j D }t j|j|j}t||dd	 dddg}j d|i} fd
d|D }t j|j|j}t||dd	 d S )Nr   r&   r9   r>   scalec                s   g | ]}j  d |iqS )rF   )rA   ).0r<   )r.   r"   r   r   
<listcomp>k   s    z,check_entropy_vect_scale.<locals>.<listcomp>g+=)r   c                s   g | ]}j  d |iqS )rF   )rA   )rG   r<   )r.   r"   r   r   rH   r   s    )r)   asarrayrA   ZravelZreshapeshaper   )r"   r.   ZscZv_entZs_entr   )r.   r"   r   check_entropy_vect_scaleg   s    
rL   c             C   s:  | j | }t| tjr*|d d |d f}tj| j|f| ddg tj| j|f| ddg | jdkrtj| j	|f| t
j dg tj| j|f| dt
j g tj| jddgf| | tj| jddgf| |d d d	  tjt
j| jd
dgf| j  tjt
j| jddgf| j  d S )Nr   r   g        g      ?skellamdlaplacer&   )rM   rN   rO   rO   )r    
isinstancer   Zrv_discreter   r   r!   sfnamelogcdfr)   inflogsfppfisfr,   r;   all)r"   r   r   r   r   r   check_edge_supportw   s    

  &$rY   c                s  t | j}tj|jd k tj|jd k tj|j  tjt|jt|k |j	d t
|  }| jr~| jjddj }nd}tjt
|| jk tjt
|t
|k tfdd|D }tjtjtj| |d d  d d  i   }	 xt|	rrj|	j  j i  fdd|D }
tj||
 dj kr tj| jd | jd  q W jd	d
i tt| jf d S )N,  c                s   g | ]}|f  qS r   r   )rG   meth)
shape_argsr   r   r   rH      s    z$check_named_args.<locals>.<listcomp>c                s   g | ]}|f qS r   r   )rG   r]   )ar?   r   r   r   rH      s    nr   Zkaboom*   )r   )r   )_getfullargspec_parse_argsr   r,   varargsvarkw
kwonlyargslistdefaultsr   lenZshapesreplacesplitZnumargsr)   rX   r6   updatepopZassert_array_equalkeysr   r   assert_raises	TypeErrorr!   )r"   r   r^   rh   meths	signatureZshape_argnamesZshapes_valsnamesr0   r   )r_   r?   r^   r   r   check_named_args   s0    
 ru   c       	      C   s   | j }tjjd d | _ | j|ddi}d| _ | j|ddi}tj|| tjjd| _ | j|ddi}tj|| ttjdrtjj	d}| j|d|d d| _ | j j
 }| j|dtjjdd}tj|| tj| j j
 | || _ d S )Ni  size   default_rngr   )rv   random_stater&   )ry   r)   randomseedrvsr   r   ZRandomStatehasattrrx   Z	get_state)	r"   r   rndmr0r1Zr2rngZ
orig_stateZr3r   r   r   check_random_state_property   s&    
r   c                s   dddg}| j |f|   fddtjtjtjtjfD }x\|D ]T}| j|  || j|k || jk @  }x,|D ]$}||f| }t	j
|jtjk qnW qBW d S )Ng      ?g      ?g      ?c                s   g | ]} j |qS r   )astype)rG   tp)x0r   r   rH      s    z$check_meth_dtype.<locals>.<listcomp>)rV   r)   int_float16float32float64	_argcheckr_   br   r,   dtypefloat_)r"   r.   rq   q0x_castr   r]   valr   )r   r   check_meth_dtype   s    




r   c                sv   t jdddg  fddt jt jt jfD }xB|D ]:}x4| j| jgD ]$}||f| }tj|j	t j
k qFW q4W d S )Ng      ?g      ?g      ?c                s   g | ]} j |qS r   )r   )rG   r   )r   r   r   rH      s    z#check_ppf_dtype.<locals>.<listcomp>)r)   rJ   r   r   r   rV   rW   r   r,   r   r   )r"   r.   Zq_castqr]   r   r   )r   r   check_ppf_dtype   s    
r   c                sb  dd }| j dddgf|   fddtjtjtjtjfD }x|D ]}| j|  || j|k || jk @  }| j	|f| | j
|f| | j|f|   }}}t|| j
|f| |dd	 t|| j|f| || dd	 t|| j|f| | dd	 t|| j|f| | | dd	 t|| j|f| || j	|f| | j	|f|  dd	 qHW d S )
Nc             W   s*   t j|}d}| ||d  f| | jS )Ng|=y              ?)r)   rJ   imag)fr   r.   hr   r   r   deriv   s    
z check_cmplx_deriv.<locals>.derivg      ?gRQ?g      ?c                s   g | ]} j |qS r   )r   )rG   r   )r   r   r   rH      s    z%check_cmplx_deriv.<locals>.<listcomp>gh㈵>)r   )rV   r)   r   r   r   r   r   r_   r   pdfr!   rQ   r   rS   rU   Zlogpdf)r"   r.   r   r   r   r   r!   rQ   r   )r   r   check_cmplx_deriv   s    

4 " r   c             C   s   | j }d| _ | j|ddi tj| }| j|ddi}tj|}|j|ddi}tj|| | jd| |jd| g}tj|d |d  tj| j|d f| |j|d f|  || _ d S )	Ni  rv   rw         ?r   r   )r   )r   )	ry   r|   pickledumpsloadsr   r   rV   r!   )r"   r   r~   r<   r   Z	unpickledr   Zmediansr   r   r   check_pickling  s    

r   c             C   sV   t | tjrddd}nddi}| ||}|j| | jks>t|j| | jksRtd S )Nr   r&   )locrF   r   )rP   r   Zrv_continuousr_   AssertionErrorr   )r"   r   Zlocscalervr   r   r   check_freezing+  s    
r   c       
         s   t jjd t l}|jtdd  j| }t|j|d|  |szt j	 fdd|d}t jjd || }	t
||	dd	 W d Q R X d S )
N{   z
.*frechet_)categorymessagez%s: rvs failed to broadcastc                 s
    j |  S )N)r|   )allargs)distfuncr   r   r   A  s    z%check_rvs_broadcast.<locals>.<lambda>)ZotypesgvIh%<=)r   )r)   rz   r{   r   filterDeprecationWarningr|   r   rK   Z	vectorizer   )
r   r#   r   rK   Z
shape_onlyotypesupsampler|   expectedr   )r   r   check_rvs_broadcast8  s    
r   )F)(r   Znumpyr)   Znumpy.testingZtestingr   r   r   r   Zpytestr   ro   Znumpy.ma.testutilsr   Z	testutilsr	   Zscipy._lib._utilr   rb   Zscipyr   r   r%   r4   r7   r8   r=   r@   rC   rE   rL   rY   ru   r   r   r   r   r   r   r   r   r   r   r   <module>   s4   

		')	