U
    Kvf1"                     @   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 )vN90  )labelsseed0Multiprocess randomly crashes in Windows testingr   Zd;?8@     9@X99@9v8@S7@Zd;OM6@B`";5@V-]4@^I+4@vo4@#~j5@CL6@   decimalg\(\8@gQk9@ffffff9@g(\8@g(\58@gY7@g     6@gp=
5@g
ףp=
6@gzG6@gR8@gp=
9@g     @;@g{G:<@g<@gR<@gQ^<@gGzn;@g{G9@gzG7@g(\B6@gQ86@g(\56@gq=
ף07@g333337@gGz:@gQ+;@g=
ףp:@gQ:@gfffff&:@gףp=
9@g333338@gq=
ף8@gp=
ף8@g9@gGz;@gQ<@g=
ףp==@g33333s<@g\(\;@gq=
ף09@g\(7@gQE6@(\O5@gQ^5@g5@g(\6@g{Gz9@g=
ףp:@g(\;@g
ףp=
;@g{G::@gq=
ף8@gq=
ף7@gQ6@p=
ף6@gGzT7@gq=
ףp8@g\(7@g     8@g)\8@gq=
ףp7@g=
ףp5@gGz4@gGz3@gףp=
2@g(\2@g=
ףp2@g)\3@g\(4@gףp=
8@gQ:@gGz9@gQ8@gR7@g(\u6@g33333s5@g(\B5@gR5@gp=
#6@g)\h7@gQ7@皙9@gףp=
W9@gQ88@g=
ףp6@gQ5@gffffff4@g(\3@gzG3@gQ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:   N/tmp/pip-unpacked-wheel-2v6byqio/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 )No   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@g333335@g6@g333336@g7@gffffff7@g8@g      9@gfffff7@ffffff6@g5@g      4@gL3@g3333333@gffffff3@g4@gL5@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ʡE9@gZd;O;@gt;@g333333;@gx):@gh|?8@g$7@gT㥛`6@g     @6@r   gFx7@g/$8@g+6@g-阮8@gS㥛8@g+W7@g r5@gHz4@g     3@g3@gZd;2@gw/2@gQ3@g(\4@gn8@g r:@g"~j:@g/$9@g+N8@gMbX6@gv5@g 4@gS{4@g/5@gK7A5@gp=
6@gsh|7@g"^9@gn9@g/ݤ8@gZd;O-7@g?5^I5@g"~4@gp=
4@gOn3@g~jt3@gZd;4@gS5@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
   )Zbwr   r   g     @8@gp=
ף9@g=
ףp9@g
ףp=
9@g(\µ7@gz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         rZ   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GzT8@g(\µ9@g
ףp=
:@gGz9@g=
ףp7@rS   gRQ5@g33333s4@g     @4@gHz4@g3333335@gp=
c6@r   r   rX   rY   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    rj   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_   ra   g      ?g?   r   )r.   rN   zerosr4   Zonesre   r   r   rf   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.   randomrb   rd   )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   rk            r]   rC      	      r	                  
      )xdatari   Zcmap)r.   ro   r   Zlinspacerc   rangerJ   rK   rL   r   arrayr   rN   sizer   cmZrainbow)r5   r&   rO   r@   r6   ri   Zix_depthZix_outliersZix_expectedZix_expected2r   r:   rv   r;   test_fboxplot_rainbowplot   s*    
      

r   )&Znumpyr.   Znumpy.testingr   r   r(   Zstatsmodels.datasetsr   Zstatsmodels.graphics.functionalr   r   r   r   Zmatplotlib.pyplotZpyplotrJ   ImportErrorloadr&   re   raw_dataZastypern   r   markZ
matplotlibr<   Zslowr>   rP   rU   rV   rW   rZ   r[   rj   rm   r   r:   r:   r:   r;   <module>   sL   
(
