U
    »mœde  ã                   @   s>   d dl Zd dlmZmZ d dlZd dlmZ G dd„ dƒZdS )é    N)Úassert_equalÚassert_allclose)Ú	variationc                   @   s  e Zd ZdZdd„ Zej dddg¡dd„ ƒZd	d
„ Z	ej dde
jfde
 d¡d fg¡dd„ ƒZdd„ Zdd„ Zdd„ Zej dde
 d¡fde
jde
jd�fg¡dd„ ƒZej dde
jfde
jfg¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zej d*e
 d+¡g dd,e
jd-gg¡d.d/„ ƒZej ddg fde
jgd0 fd1e
jfg¡d2d3„ ƒZd4d5„ Zej d6ddg¡d7d8„ ƒZej d9de
 d:¡e
 d;¡e
jde
jd<e
jgfdd=e
 d>¡e
jde
jde
jgfd,e
 d=¡e
 d?¡e
je
je
jde
jgfg¡d@dA„ ƒZdBdC„ Z d1S )DÚTestVariationz.
    Test class for scipy.stats.variation
    c                 C   s*   t  d¡}tt|dd�t  d¡d ƒ d S )Nç      "@é   ©Úddofg      @é   )ÚnpÚaranger   r   Úsqrt©ÚselfÚx© r   úY/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/stats/tests/test_variation.pyÚ	test_ddof   s    
zTestVariation.test_ddofÚsgnr   éÿÿÿÿc                 C   sD   t  dddddg¡}t|| ƒ}|t  d¡ d }t||dd� d S )Nr   é   é   r
   é   g»½×Ùß|Û=)Zrtol)r   Úarrayr   r   r   )r   r   r   ÚvÚexpectedr   r   r   Ú	test_sign   s    zTestVariation.test_signc                 C   s   t tdƒdƒ d S )Nç      @ç        )r   r   ©r   r   r   r   Útest_scalar   s    zTestVariation.test_scalarznan_policy, expectedÚ	propagateÚomitg«ªªªªª@r
   c                 C   s*   t  d¡}t j|d< tt||d�|ƒ d S )Ng      $@é	   ©Ú
nan_policy)r   r   Únanr   r   )r   r%   r   r   r   r   r   Útest_variation_nan   s    

z TestVariation.test_variation_nanc              	   C   s>   t  ddt jdg¡}tjtdd�� t|dd� W 5 Q R X d S )Nç      ð?ç       @ç      @zinput contains nan©ÚmatchÚraiser$   )r   r   r&   ÚpytestÚraisesÚ
ValueErrorr   r   r   r   r   Útest_nan_policy_raise#   s    z#TestVariation.test_nan_policy_raisec              	   C   s0   t jtdd�� tdddgdd� W 5 Q R X d S )Nzmust be one ofr+   r   r   r   Zfoobarr$   )r.   r/   r0   r   r   r   r   r   Útest_bad_nan_policy(   s    z!TestVariation.test_bad_nan_policyc                 C   sT   t  d¡ dd¡}t|ddd�}t  t  d¡d gt  d¡d gg¡}t||ƒ d S )Né
   r   r   r   T©ÚaxisÚkeepdimsé   )r   r   Úreshaper   r   r   r   )r   r   Úyr   r   r   r   Útest_keepdims,   s    ÿzTestVariation.test_keepdimszaxis, expectedr   ©r   r   )r   r   ©Z
fill_valuec                 C   s&   t  d¡}t||dd�}t||ƒ d S )N)r   r   Tr4   )r   Úzerosr   r   ©r   r5   r   r   r9   r   r   r   Útest_keepdims_size03   s    
z!TestVariation.test_keepdims_size0zincr, expected_fillc                 C   sP   t  ddddgddddgg¡}t|d|jd | dd�}t|t jd|d�ƒ d S )Nr   r   r   T)r5   r	   r6   )r   r   r<   )r   r   r   Úshaper   Úfull)r   ÚincrZexpected_fillr   r9   r   r   r   Ú'test_keepdims_and_ddof_eq_len_plus_incr;   s    z5TestVariation.test_keepdims_and_ddof_eq_len_plus_incrc                 C   sR   t  d¡ dd¡ t¡}t j|d< t|ddd�}t|t  d¡d	 t jgd
d� d S )Né   r   r   r;   r   r!   ©r5   r%   ç      ô?ç      ø?gVçž¯Ò<)Zatol)	r   r   r8   ZastypeÚfloatr&   r   r   r   )r   Úar   r   r   r   Útest_propagate_nanA   s    
z TestVariation.test_propagate_nanc                 C   s0   t ddgddggd d�}t|t d¡d ƒ d S )Nr   r   r   r   ©r5   rF   rG   )r   r   r   r   )r   r9   r   r   r   Útest_axis_noneI   s    zTestVariation.test_axis_nonec              	   C   sB   t  dddgdddgg¡}t t j¡� t|dd� W 5 Q R X d S )	Nr   r   r   r
   r   é   r3   rK   )r   r   r.   r/   Z	AxisErrorr   r   r   r   r   Útest_bad_axisO   s    zTestVariation.test_bad_axisc                 C   s\   t  dddddg¡}t|ƒ}t|t jƒ t  |d| g¡}t|dd�}t|t jt jgƒ d S )Nr3   éýÿÿÿr   éüÿÿÿéöÿÿÿrK   )r   r   r   r   Úinf)r   r   r9   Úx2Úy2r   r   r   Útest_mean_zeroU   s    zTestVariation.test_mean_zeror   r   r   r#   c                 C   s   t |ƒ}t|tjƒ d S )N)r   r   r   r&   )r   r   r9   r   r   r   Útest_return_nan`   s    zTestVariation.test_return_nanr   Nc                 C   s$   t  d¡}t||d�}t||ƒ d S )N)r   r   rK   )r   Úemptyr   r   r>   r   r   r   Útest_2d_size_zero_with_axisf   s    
z)TestVariation.test_2d_size_zero_with_axisc                 C   sp   t  ddg¡}tt|dd�t j ƒ t  t jddt jgddt jt jgg¡}tt|dddd	�t j t j gƒ d S )
NrO   éûÿÿÿr   r   r   rQ   iìÿÿÿr"   ©r5   r	   r%   )r   r   r   r   rR   r&   )r   Úx1rS   r   r   r   Útest_neg_infm   s    ÿÿzTestVariation.test_neg_infr%   c                 C   sb   t  ddt jdgddt jdgddt jdgg¡}t|d|d�}t|t jt jt jt  d¡d gƒ d S )	Nr   r3   r   rY   r   r   rE   gUUUUUUå?)r   r   r&   r   r   rR   r   )r   r%   r   r9   r   r   r   Útest_combined_edge_casesx   s    þz&TestVariation.test_combined_edge_caseszddof, expectedgUUUUUUÅ?g      ä?r   ç      à?g«ªªªªªê?rF   c                 C   st   t j}t  dd|dgddddg|dd|g|dd|g||||gddddgddddgg¡}t|d	|d
d�}t||ƒ d S )Nr(   r)   r*   r   r   g      à¿r^   r   r   r"   rZ   )r   r&   r   r   r   )r   r	   r   r&   r   r   r   r   r   Útest_more_nan_policy_omit_tests€   s    





úz-TestVariation.test_more_nan_policy_omit_testsc              	   C   sn   t  dddddg¡}t  dddt jddt jg¡}t|dd�}t|ddd�}t|t  d	¡d ƒ ||ksjt‚d S )
Nr   r   r   r
   r   r   r"   )r%   r	   g      @)r   r   r&   r   r   r   ÚAssertionError)r   rI   Znan_ar9   Znan_yr   r   r   Útest_variation_ddof–   s    z!TestVariation.test_variation_ddof)!Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r.   ÚmarkZparametrizer   r    r   r&   r   r'   r1   r2   r:   rW   rA   r?   rR   rC   rJ   rL   rN   rU   r=   rV   rX   r\   r]   r_   ra   r   r   r   r   r      sX   
ÿÿ
ÿÿ

"
ÿ

& (þþ
r   )	Únumpyr   Znumpy.testingr   r   r.   Zscipy.statsr   r   r   r   r   r   Ú<module>   s   