U
    Ãmœd1"  ã                   @   s‚  d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
mZmZ zd dlmZ W n ek
rh   Y nX e ¡ Ze ej¡e_ejdd…d f  e¡Zejdd…dd…f Zejjdd„ ƒZejjejjdd	„ ƒƒZejjejjd
d„ ƒƒZejjejjdd„ ƒƒZejjejjdd„ ƒƒZejjejjdd„ ƒƒZ ejjdd„ ƒZ!ejjejjdd„ ƒƒZ"dd„ Z#dd„ Z$ejjdd„ ƒZ%dS )é    N)Úassert_almost_equalÚassert_equal)Úelnino)Ú	banddepthÚfboxplotÚ
hdrboxplotÚrainbowploté   c                 C   sÀ  zt ttdd�\}}W n tk
r4   t d¡ Y nX t|jƒdksHt‚ddddd	d
ddddddg}t	|j
|dd� t |j|j|jg¡}t ddddddddddddgdd d!d"d#d$d%d&d'd(d)d*gd+d,d-d.d/d0d1d2d3d4d5d6gd7d"d8d9d:d;d<d=d>d?d@dAgdBdCdDdEdFdGdHdId'dJdKdLgdMdNdOdPdQdRdSdTdUdVdWdXgdYdFdZd[d\d]d^d_d`dadbdcgdddedfdgdhdidjdkdldmdndogg¡}t	||dd� tjt t|j¡ tj¡dpdq�}t| }tdrdsdtdug|ƒ tt|j |ƒ d S )vNé90  )ÚlabelsÚseedú0Multiprocess randomly crashes in Windows testingr   ç¬Zd;?8@ç      9@çX9´Èö9@ç9´Èv¾ÿ8@çÙÎ÷Sã¥7@çZd;ßOM6@çB`åÐ";5@çV-²]4@ç^ºI+4@çÉv¾Ÿo4@ç#Ûù~j5@ç�•C‹L6@é   ©Údecimalg\�Âõ(\8@gìQ¸…k9@çffffff9@gö(\�Âõ8@gö(\�Â58@gš™™™™Y7@g     €6@g¤p=
×ã5@g
×£p=
6@gáz®Gá6@gR¸…ë‘8@g¤p=
×ã9@g     @;@g{®Gá:<@gš™™™™Ù<@gR¸…ëÑ<@g…ëQ¸^<@g®Gázn;@g{®Gáº9@gáz®Gá7@gÃõ(\�B6@g¸…ëQ86@gö(\�Â56@gq=
×£07@g33333³7@g®Gáz:@gìQ¸…+;@g=
×£p½:@g…ëQ¸Å:@gfffff&:@g×£p=
—9@g33333ó8@gq=
×£°8@g¤p=
×£8@gš™™™™Ù9@g®Gáz;@g…ëQ¸<@g=
×£p==@g33333s<@g\�Âõ(\;@gq=
×£09@g\�Âõ(œ7@g…ëQ¸E6@ç�Âõ(\O5@g…ëQ¸^5@gš™™™™™5@g�Âõ(\Ï6@g{®Gáz9@g=
×£pý:@gÃõ(\�‚;@g
×£p=
;@g{®Gá::@gq=
×£ð8@gq=
×£°7@g¸…ëQ¸6@ç¤p=
×£6@g®GázT7@gq=
×£p8@g\�Âõ(7@g     €8@g)\�Âõ¨8@gq=
×£p7@g=
×£p½5@g®Gáz”4@g®Gáz®3@g×£p=
×2@gÃõ(\�Â2@g=
×£pý2@g)\�Âõ¨3@g\�Âõ(Ü4@g×£p=
×8@gìQ¸…«:@g®Gázî9@g…ëQ¸Þ8@gR¸…ë‘7@gö(\�Âu6@g33333s5@gÃõ(\�B5@gR¸…ë‘5@g¤p=
×#6@g)\�Âõh7@g…ëQ¸ž7@çš™™™™9@g×£p=
W9@g¸…ëQ88@g=
×£p½6@g…ëQ¸…5@gffffff4@g�Âõ(\�3@gáz®G¡3@gìQ¸…«3@g…ëQ¸^4@gÃõ(\�Â5@r	   ©Zaxisé¾  é¿  éÍ  éÎ  )r   Údatar   ÚWindowsErrorÚpytestÚxfailÚlenÚextra_quantilesÚAssertionErrorr   ÚmedianÚnpÚvstackÚoutliersZhdr_90Zhdr_50ÚallÚin1dÚreshapeÚshaper   Zoutliers_idx)Úclose_figuresÚ_ÚhdrÚmedian_tZquantZquant_tÚ
labels_posr0   © r:   úc/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/graphics/tests/test_functional.pyÚtest_hdr_basic   s®         ÿ     ÿ     ÿ     ÿ     ÿ     ÿ     ÿ     ÿ     ÿòÿr<   c                 C   sz   zt tdtdd�\}}W n tk
r6   t d¡ Y nX t|jƒdksJt‚dddd	d
dddddddg}t	|j
|dd� d S )Nr   T)Úncompr   Z	use_bruter   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r&   r   r'   r(   r)   r*   r+   r,   r   r-   )r5   Zreset_randomstater6   r7   r8   r:   r:   r;   Útest_hdr_basic_bruteC   s         ÿr>   c                 C   sž   t  ¡ }| d¡}zttt ¡ |ddd� W n tk
rJ   t 	d¡ Y nX | 
d¡ | d¡ | tjdd	d
�d ¡ | dddddg¡ | ddg¡ d S )Néo   r	   r
   )r   ÚaxÚ	thresholdr   r   zMonth of the yearzSea surface temperature (C)é   é   )ÚstepÚ ÚMarÚJunÚSepÚDecgš™™™™™É¿gffffff&@)ÚpltÚfigureÚadd_subplotr   r&   r   Útolistr'   r(   r)   Z
set_xlabelZ
set_ylabelZ
set_xticksr.   ÚarangeZset_xticklabelsZset_xlim)r5   Úfigr@   r:   r:   r;   Útest_hdr_plotS   s    
ÿ


rP   c                 C   sŠ   zt tdgdd�\}}W n tk
r6   t d¡ Y nX t ddddd	d
ddddddgddddddddddddgg¡}t|j|dd� d S )Ngffffffæ?r
   ©Úalphar   r   r    g     €:@g      ;@gffffff:@r   gš™™™™8@g      7@g      6@g33333³5@gš™™™™6@g33333³6@gÍÌÌÌÌÌ7@gffffff7@gÍÌÌÌÌÌ8@g      9@gfffffæ7@çffffff6@gš™™™™5@g      4@gÍÌÌÌÌL3@g3333333@gffffff3@gš™™™™4@gÍÌÌÌÌL5@r   r   )	r   r&   r'   r(   r)   r.   r/   r   r+   ©r5   r6   r7   Zextra_quant_tr:   r:   r;   Útest_hdr_alphaf   s,         ÿ     ÿþrU   c                 C   sÀ   zt tddgdd�\}}W n tk
r8   t d¡ Y nX dddd	d
dddddddgddddddddddddgddd d!d"d#d$d%d&d'd(d)gd*d+d,d-d.d/d0d1d2d3d4d5gg}t|jt |¡d6d7� d S )8Ngš™™™™™Ù?gq=
×£pí?r
   rQ   r   gƒÀÊ¡E¶9@gZd;ßO;@g¼t“¶;@g333333;@g¶óýÔx):@gh‘í|?Õ8@gÝ$�•£7@gTã¥›Ä`6@g     @6@r   gF¶óýÔx7@g /Ý$¦8@g+‡ù6@g-²�ï§†8@gÏ÷Sã¥›8@g+‡ÙÎW7@gœÄ °rè5@gHáz®§4@g     À3@g²�ï§Æ3@gZd;ßÏ2@gw¾Ÿ/ý2@g…ëQ¸…3@g�Âõ(\¯4@g˜nƒÀª8@gœÄ °r:@gÑ"Ûù~j:@g/Ý$�•9@g+‡ÙN8@gÓMbXÙ6@gÉv¾Ÿ¯5@g¦›Ä °ò4@gÏ÷Sã¥{4@g¾Ÿ/Ý5@gÇK7‰AÀ5@g¤p=
×ã6@gsh‘í|ß7@gåÐ"Ûù^9@g˜nƒÀª9@g¾Ÿ/Ý¤8@gZd;ßO-7@g?5^ºIì5@gÑ"Ûù~Ê4@g¤p=
×4@gßO�—n²3@gú~j¼tó3@g¬Zd;Ÿ4@gÏ÷Sã¥Û5@r   r   )	r   r&   r'   r(   r)   r   r+   r.   r/   rT   r:   r:   r;   Útest_hdr_multiple_alphau   s`          þ      þ      þ      þ÷ÿrV   c                 C   sz   zt tdgddd�\}}W n tk
r8   t d¡ Y nX tjt t|j¡ 	tj
¡dd�}t| }tdd	d
ddg|ƒ d S )Ngš™™™™™é?gÃõ(\�Âí?r
   )rR   rA   r   r   r	   r!   i°  r"   r#   r$   r%   )r   r&   r'   r(   r)   r.   r1   r2   r0   r3   r4   r   r   )r5   r6   r7   r9   r0   r:   r:   r;   Útest_hdr_threshold�   s    
ÿÿrW   c                 C   sf   zt tddd�\}}W n tk
r4   t d¡ Y nX ddddd	d
dddddd
g}t|j|dd� d S )NZcv_mlr
   )Úbwr   r   g     @8@g¤p=
×£9@g=
×£pý9@g
×£p=
9@gö(\�Âµ7@gáz®Ga6@r   gq=
×£p4@g=
×£p=4@gÃõ(\�‚4@gq=
×£05@r   r   ©r   r&   r'   r(   r)   r   r-   ©r5   r6   r7   r8   r:   r:   r;   Útest_hdr_bwœ   s         ÿr[   c                 C   sf   zt tddd�\}}W n tk
r4   t d¡ Y nX ddddd	d
ddddddg}t|j|dd� d S )NrC   r
   )r=   r   r   g®GázT8@gö(\�Âµ9@g
×£p=
:@g®Gáz9@g=
×£p½7@rS   gR¸…ëQ5@g33333s4@g     @4@gHáz®‡4@g3333335@g¤p=
×c6@r   r   rY   rZ   r:   r:   r;   Útest_hdr_ncomp¨   s         ÿr\   c                  C   s¤   t  d¡d } ddt  | ¡  }dt  | t jd  ¡ }dt  | t jd  ¡ }ddt  | t jd  ¡  }t  ||||g¡}t|d	d
�}ddddg}t||ƒ d S )Niô  g     Àb@r	   ç      à?g333333Ó?é   g      à¿éÿÿÿÿZBD2©Úmethodç«ªªªªªê?)r.   rN   ÚsinÚpiÚcosÚasarrayr   r   ©ZxxÚy1Úy2Zy3Zy4r&   ÚdepthZexpected_depthr:   r:   r;   Útest_banddepth_BD2µ   s    rk   c                  C   s‚   t  d¡d } t  | j¡}d|  d }t  | j¡d }t  | j¡d }t  ||||g¡}t|dd�}d	d
dd
g}t||dd� d S )Ni‰  g     ˆ³@r   r	   r]   g      Ð¿ZMBDr`   rb   g      ä?g«ªªªªªâ?é   r   )r.   rN   Zzerosr4   Zonesrf   r   r   rg   r:   r:   r;   Útest_banddepth_MBDË   s    rm   c                    sè   dd„ ‰ t j d¡ t  ddt j d¡‰‡ ‡fdd„td	ƒD ƒ}t ¡ }| d
¡}t	|d|d�\}}}}t  
ddddddddddddddddddddg¡}t||ƒ t  
ddddg¡}	t||	ƒ t  |d j¡}
t||
|tjjd�}d S )Nc                 S   sš   t tj ¡ dkƒ}tj ¡ d }tj ¡ d }dtj ¡  d }dtj ¡  d }d| |t | ¡ |t | ¡   ||t | ¡ |t | ¡    }|S )z3Test function, combination of a few harmonic terms.gÍÌÌÌÌÌì?gš™™™™™©?g˜™™™™™©?gš™™™™™¹?r	   )Úintr.   Úrandomrc   re   )ÚtÚciZa1iZa2iZb1iZb2iÚfuncr:   r:   r;   ÚharmfuncÛ   s    "ÿz+test_fboxplot_rainbowplot.<locals>.harmfunci‡Ö r   r   éú   c                    s   g | ]}ˆ ˆƒ‘qS r:   r:   )Ú.0r6   ©rs   rp   r:   r;   Ú
<listcomp>ì   s     z-test_fboxplot_rainbowplot.<locals>.<listcomp>é   r?   )Zwfactorr@   rB   rl   é   é   é   r^   rC   é   é	   é   r	   é   é   é   é   é   é
   é   )Úxdatarj   Zcmap)r.   ro   r   Zlinspacerd   ÚrangerJ   rK   rL   r   Úarrayr   rN   Úsizer   ÚcmÚrainbow)r5   r&   rO   r@   r6   rj   Zix_depthZix_outliersZix_expectedZix_expected2r†   r:   rv   r;   Útest_fboxplot_rainbowplotØ   s*    
      ÿ

rŒ   )&Únumpyr.   Znumpy.testingr   r   r(   Zstatsmodels.datasetsr   Zstatsmodels.graphics.functionalr   r   r   r   Zmatplotlib.pyplotZpyplotrJ   ÚImportErrorÚloadr&   rf   Úraw_dataZastypern   r   ÚmarkZ
matplotlibr<   Zslowr>   rP   rU   rV   rW   r[   r\   rk   rm   rŒ   r:   r:   r:   r;   Ú<module>   sL   
(
