U
    Kvf  ã                   @   sæ   d Z ddlZddlZddlZddlZddlmZ ddlmZm	Z	m
Z
mZ ddlmZ ej ej e¡¡Zej ¡ jZe ¡ dd„ ƒZdd	„ Zej d
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S )z?
Tests of save / load / remove_data state space functionality.
é    N)Údatasets)ÚsarimaxÚ
structuralÚvarmaxÚdynamic_factor)Úassert_allclosec                  c   sT   t  ¡ \} }|V  zt | ¡ t |¡ W n$ tk
rN   tdj|dƒ Y nX d S )Nz)Couldn't close or delete file {filename}.)Úfilename)ÚtempfileÚmkstempÚosÚcloseÚunlinkÚ	ExceptionÚprintÚformat)Úfdr   © r   úN/tmp/pip-unpacked-wheel-2v6byqio/statsmodels/tsa/statespace/tests/test_save.pyÚtemp_filename   s    
ÿr   c                 C   sl   t jtd jdd}| |j¡}| ¡  | | ¡ t j 	| ¡}t
|j|jƒ t
|j|jƒ t
|j|jƒ d S ©NÚrealgdp©é   é   r   ©Úorder©r   ÚSARIMAXÚ	macrodataÚvaluesÚsmoothÚstart_paramsÚsummaryÚsaveÚSARIMAXResultsÚloadr   ÚparamsÚbseÚllf©r   ÚmodÚresÚres2r   r   r   Útest_sarimax   s    
r-   r   )r   )r   r   r   )r   é   r   c                 C   sp   t jtd j|d}| |j¡}| ¡  |j| dd t j 	| ¡}t
|j|jƒ t
|j|jƒ t
|j|jƒ d S )Nr   r   T)Zremove_datar   )r   r   r*   r+   r,   r   r   r   Útest_sarimax_save_remove_data+   s    r/   c                  C   sj   t jtd jdd} t t | ¡¡}|  | j¡}| | j¡}t	|j
|j
ƒ t	|j|jƒ t	|j|jƒ d S r   )r   r   r   r   ÚpickleÚloadsÚdumpsr    r!   r   r&   r'   r(   ©r*   Úpkl_modr+   Úpkl_resr   r   r   Útest_sarimax_pickle7   s    r6   c                 C   sj   t  td jd¡}| |j¡}| ¡  | | ¡ t j 	| ¡}t
|j|jƒ t
|j|jƒ t
|j|jƒ d S ©Nr   Zllevel)r   ÚUnobservedComponentsr   r   r    r!   r"   r#   ZUnobservedComponentsResultsr%   r   r&   r'   r(   r)   r   r   r   Útest_structuralC   s     ÿ
r9   c                  C   sh   t  td jd¡} t t | ¡¡}|  | j¡}| |j¡}t	|j
|j
ƒ t	|j|jƒ t	|j|jƒ d S r7   )r   r8   r   r   r0   r1   r2   r    r!   r   r&   r'   r(   r3   r   r   r   Útest_structural_pickleO   s     ÿr:   c                 C   s€   t jtddg  ¡ jdd … jddd}| |j¡}| ¡  | 	| ¡ t j
 | ¡}t|j|jƒ t|j|jƒ t|j|jƒ d S )Nr   Úrealconsr   )Z	k_factorsZfactor_order)r   ZDynamicFactorr   ÚdiffÚilocr   r    r!   r"   r#   ZDynamicFactorResultsr%   r   r&   r'   r(   r)   r   r   r   Útest_dynamic_factor\   s     þ
r>   c                 C   sÄ   t jtddg  ¡ jdd … jdd}t t |¡¡}| 	|j
¡}| 	|j
¡}t|j|jƒ t|j|jƒ t|j|jƒ | ¡  | | ¡ t j | ¡}t|j|jƒ t|j|jƒ t|j|jƒ d S ©Nr   r;   r   )r   r   r   )r   ÚVARMAXr   r<   r=   r   r0   r1   r2   r    r!   r   r&   r'   r(   r"   r#   ÚVARMAXResultsr%   )r   r*   r4   r+   r5   r,   r   r   r   Útest_dynamic_factor_picklei   s     þ
rB   c                 C   s~   t jtddg  ¡ jdd … jdd}| |j¡}| ¡  | 	| ¡ t j
 | ¡}t|j|jƒ t|j|jƒ t|j|jƒ d S r?   ©r   r@   r   r<   r=   r   r    r!   r"   r#   rA   r%   r   r&   r'   r(   r)   r   r   r   Útest_varmax~   s    þ
rD   c                 C   s~   t jtddg  ¡ jdd … jdd}| |j¡}| ¡  | 	| ¡ t j
 | ¡}t|j|jƒ t|j|jƒ t|j|jƒ d S r?   rC   r)   r   r   r   Útest_varmax_pickle‹   s    þ
rE   c                  C   s0   t j tdd¡} tj | ¡}t|tjƒs,t	‚d S )NÚresultszsm-0.9-sarimax.pkl)
r   ÚpathÚjoinÚcurrent_pathr   r$   r%   Ú
isinstanceZSARIMAXResultsWrapperÚAssertionError)Zpkl_fileZloadedr   r   r   Útest_existing_pickle™   s    rL   )$Ú__doc__r0   r   r	   ZpytestZstatsmodelsr   Zstatsmodels.tsa.statespacer   r   r   r   Znumpy.testingr   rG   ÚdirnameÚabspathÚ__file__rI   r   Zload_pandasÚdataZfixturer   r-   ÚmarkZparametrizer/   r6   r9   r:   r>   rB   rD   rE   rL   r   r   r   r   Ú<module>   s,   

