U
    ^»{j¨+  ã                   @   sâ   d dl mZmZmZmZ d dlT d dlZddlm	Z
 ddlmZ d dlZd dlZG dd„ dejƒZG d	d
„ d
ejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZedkrÞe ¡  dS )é    )Úabsolute_importÚdivisionÚprint_functionÚunicode_literals)Ú*Né   )Úmeasures)Údatasetsc                   @   s:   e Zd ZdZddd„Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestNoldsHelperFunctionszM
  Tests for internal helper functions that are not part of the public API
  Fc                 C   s:   |r"t |ƒ t dƒ t |ƒ t ƒ  |  t ||k¡¡ d S )Nz==)ÚprintÚ
assertTrueÚnpZalltrue)ÚselfÚexpectedÚactualZprint_arrays© r   úR/var/www/html/bwave/python/venv/lib/python3.8/site-packages/nolds/test_measures.pyÚassert_array_equals   s    z,TestNoldsHelperFunctions.assert_array_equalsc                 C   sd   t jddd�}tj|ddd�}t jddddgd	d
ddgddddgd
dddggdd�}|  ||¡ d S )Né
   Úfloat32©Zdtypeé   é   ©Úlagr   é   r   é   é   é   é   é	   ©r   ÚarangeÚnoldsÚdelay_embeddingÚarrayr   ©r   ÚdataÚembeddedr   r   r   r   Útest_delay_embed_lag2   s    



üûz.TestNoldsHelperFunctions.test_delay_embed_lag2c                 C   sV   t jddd�}t |d¡}t jddddgddddgdddd	ggdd�}|  ||¡ d S )
Nr   r   r   r   r   r   r   r   r   r!   r&   r   r   r   Útest_delay_embed&   s    


ýüz)TestNoldsHelperFunctions.test_delay_embedc                 C   sF   t jddd�}tj|ddd�}t jdddd	ggdd�}|  ||¡ d S )
Nr   r   r   r   r   r   r   r   r    r!   r&   r   r   r   Útest_delay_embed_lag30   s    
ÿþz.TestNoldsHelperFunctions.test_delay_embed_lag3c                 C   s˜   t jddd�}z$t |d¡}d}|  | |¡¡ W n tk
rF   Y nX t jddd�}z(tj|ddd�}d}|  | |¡¡ W n tk
r’   Y nX d S )	Nr   r   r   é   zRembedding array of size 10 with embedding dimension 11 should fail, got {} insteadr   r   z[embedding array of size 10 with embedding dimension 4 and lag 4 should fail, got {} instead)r   r"   r#   r$   ÚfailÚformatÚ
ValueError)r   r'   r(   Úmsgr   r   r   Útest_delay_embed_empty8   s    z/TestNoldsHelperFunctions.test_delay_embed_emptyN)F)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r)   r*   r+   r1   r   r   r   r   r
      s   

r
   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestNoldsUtilityzG
  Tests for small utility functions that are part of the public API
  c                 C   s&   t jddd�}|  |ddddg¡ d S )Néè  é2   ©Zmin_niô  éú   é}   é>   ©r#   Zbinary_nÚassertSequenceEqual©r   Úxr   r   r   Útest_binary_nO   s    zTestNoldsUtility.test_binary_nc                 C   s   t jddd�}|  |g ¡ d S )Nr8   r9   r=   r?   r   r   r   Útest_binary_n_emptyS   s    z$TestNoldsUtility.test_binary_n_emptyc                 C   s$   t  ddd¡}|  |dddg¡ d S )Nr   r,   ç)\�Âõ(ø?r   r    )r#   Zlogarithmic_nr>   r?   r   r   r   Útest_logarithmic_nW   s    z#TestNoldsUtility.test_logarithmic_nc                 C   s$   t  ddd¡}|  |dddg¡ d S )Nr   r   rC   g)\�Âõ(@gvàœ¥="@)r#   Zlogarithmic_rr>   r?   r   r   r   Útest_logarithmic_r[   s    z#TestNoldsUtility.test_logarithmic_rN)r2   r3   r4   r5   rA   rB   rD   rE   r   r   r   r   r6   K   s
   r6   c                   @   s0   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
S )ÚTestNoldsLyapz!
  Tests for lyap_e and lyap_r
  c                 C   sÚ   ddddg}ddddg}d}dd	„ }t ||ƒD ]¦\}}g }|}td
ƒD ]}	|||ƒ}| |¡ qFtj|dd�}t tj|ddd�¡}
tj|ddddd�}|  	|t
t |
¡ƒd |¡¡ |  	|t
t |¡ƒd |¡¡ q.d S )Ng      @ç333333@gš™™™™™@g      @éÿÿÿÿr   çš™™™™™¹?c                 S   s   ||  d|   S )Nr   r   )r@   Úrr   r   r   Úlogistici   s    z2TestNoldsLyap.test_lyap_logistic.<locals>.logisticéd   r   r   r   r   ©Úemb_dimÚ
matrix_dimr   é   ©rN   r   Úmin_tsepZtrajectory_lenzr = {})ÚzipÚrangeÚappendr   r%   Úmaxr#   Úlyap_eÚlyap_rZassertEqualÚintÚsignr.   )r   ZrvalsrZ   Zx0rK   rJ   ÚsÚlogr@   ÚiÚleÚlrr   r   r   Útest_lyap_logisticd   s    
z TestNoldsLyap.test_lyap_logisticc                 C   s4   t jddd�}tj|ddd�}|  t |¡d¡ d S )Nr7   ç333333Ó?©ÚHr   r   rM   r   )r	   Úfbmr#   rW   ÚassertGreaterr   rV   )r   r'   r^   r   r   r   Útest_lyap_fbmx   s    zTestNoldsLyap.test_lyap_fbmc                 C   sˆ  t dƒD �]x}tj dd¡tj dd¡tj dd¡tj dd¡dœ}tjf |Ž}tt td|d ƒ|d ƒƒD �]}tj |¡}||k rþzRt 	¡ �( t 
dt¡ tj|fd	d
i|—Ž W 5 Q R X d}|  | |||¡¡ W n" tk
rú } zW 5 d}~X Y nX qld}z8|  t t tj|fd	d
i|—Ž¡¡| |||¡¡ W ql tk
�r~ } z$|  | |||¡d t|ƒ ¡ W 5 d}~X Y qlX qlqdS )ú=
    tests if minimal input size is correctly calculated
    r   r   r   r   r   r   rQ   ÚignoreÚfitÚpolyúD{} data points should be required for kwargs {}, but {} where enoughNúD{} data points should be enough for kwargs {}, but  {} where too fewú, original error: )rT   r   ÚrandomÚrandintr#   Z
lyap_r_lenÚreversedrV   ÚwarningsÚcatch_warningsÚsimplefilterÚRuntimeWarningrX   r-   r.   r/   r   ÚallÚisfiniteÚstr©r   r]   ÚkwargsZmin_lenr'   r0   Úer   r   r   Útest_lyap_r_limits}   s@    ü"
 ý
 þÿz TestNoldsLyap.test_lyap_r_limitsc                 C   s’  t dƒD �]‚}tj dd¡tj dd¡tj dd¡dœ}tj dd¡|d d  d |d	< tjf |Ž}tt td|d
 ƒ|d
 ƒƒD �]}tj |¡}||k �rzJt 	¡ �  t 
dt¡ tj|f|Ž W 5 Q R X d}|  | |||¡¡ W n$ tk
�r } zW 5 d}~X Y nX q‚d}z0|  t t tj|f|Ž¡¡| |||¡¡ W q‚ tk
�rˆ } z$|  | |||¡d t|ƒ ¡ W 5 d}~X Y q‚X q‚qdS )rg   r   r   r   é   )rO   rR   Zmin_nbr   r   rO   rN   r   rh   rk   Nrl   rm   )rT   r   rn   ro   r#   Z
lyap_e_lenrp   rV   rq   rr   rs   rt   rW   r-   r.   r/   r   ru   rv   rw   rx   r   r   r   Útest_lyap_e_limits©   sH    ý
ÿÿ"

ý
þÿz TestNoldsLyap.test_lyap_e_limitsN)r2   r3   r4   r5   r`   rf   r{   r}   r   r   r   r   rF   `   s
   ,rF   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestNoldsHurstz
  Tests for hurst_rs
  c                 C   sš   g }t j ¡ }tdƒD ]"}| t j ¡  d }| |¡ qt |¡}|  |d¡ t j d¡}t |¡}| j|ddd� t  	|¡}t |¡}|  
|d¡ d S )Né'  ç      à?ra   rI   ©ÚdeltagÍÌÌÌÌÌì?)r   rn   rT   rU   r#   Úhurst_rsÚ
assertLessÚrandnÚassertAlmostEqualÚcumsumre   ©r   Zseq_negr@   r]   Zh_negZh_randÚwalkZh_walkr   r   r   Útest_hurst_basicÛ   s    




zTestNoldsHurst.test_hurst_basicc              
   C   s¤   t jtjddddt dd¡ d�}| j|ddd	� tjjd
d�}t j|dd�}| j|ddd	� tj	t 
dd¡dd�}t j|ddt dd¡ d�}| j|ddd	� d S )Nrj   Fr   r   r,   )ri   Z	correctedZunbiasedÚnvalsg
×£p=
ç?ç{®Gáz„?r�   r   )Úsize)ri   r€   rI   i   r   r   )ri   r‹   g…ëQ¸…Û?çš™™™™™©?)r#   rƒ   r	   Zbrown72r   r"   r†   rn   ÚnormalZfromiterZlogistic_map)r   Zh72ZxgnZhgnZxlmZhlmr   r   r   Útest_hurst_pracmaù   s       þz TestNoldsHurst.test_hurst_pracmaN)r2   r3   r4   r5   rŠ   r�   r   r   r   r   r~   ×   s   r~   c                   @   s    e Zd ZdZdd„ Zdd„ ZdS )ÚTestNoldsDFAz
  Tests for dfa
  c                 C   s¢   g }t j ¡ }tdƒD ]"}| t j ¡  d }| |¡ qt |¡}|  |d¡ t j d¡}t |¡}|  |d¡ |  |d¡ t  	|¡}t |¡}|  |d¡ d S )Nr   r€   ra   çffffffæ?)
r   rn   rT   rU   r#   Údfar„   r…   re   r‡   rˆ   r   r   r   Útest_dfa_base  s    




zTestNoldsDFA.test_dfa_basec                 C   sD   dddg}|D ]0}t jd|d�}t |¡}| j||d dd� qd S )	Nra   r€   r’   r7   rb   r   ç333333Ã?r�   )r	   rd   r#   r“   r†   )r   ÚhsÚhr'   Úher   r   r   Útest_dfa_fbm,  s
    

zTestNoldsDFA.test_dfa_fbmN)r2   r3   r4   r5   r”   r™   r   r   r   r   r‘     s   r‘   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestNoldsCorrDimz
  Tests for corr_dim
  c                 C   sV   d}t  |¡}t |d¡}| j|ddd� t j |¡}t |d¡}| j|ddd� d S )Nr7   r   r   rŽ   r�   gš™™™™™É?r•   )r   r"   r#   Zcorr_dimr†   rn   )r   Únr'   Úcdr   r   r   Útest_corr_dim8  s    
zTestNoldsCorrDim.test_corr_dimN)r2   r3   r4   r5   r�   r   r   r   r   rš   4  s   rš   c                   @   s   e Zd ZdZdd„ ZdS )ÚTestNoldsSampEnz
  Tests for sampen
  c                 C   sÈ   dddddddddg	}t  |¡}| j|t d¡ dd� dd	dd
ddg}t j|ddd�}| j|t d¡ dd� dddd	dddddd
ddddd
dddddg}t j|ddd�}| j|t d¡ dd� d S )Nr   r   r   r   r   r€   rŒ   r�   r   g333333@)rN   Z	tolerancerP   é(   é<   gffffffö?rG   éP   rL   éx   éŒ   é´   g      Ð?)r#   Zsampenr†   r   r\   )r   r'   Úser   r   r   Útest_sampen_baseH  s    
    ÿz TestNoldsSampEn.test_sampen_baseN)r2   r3   r4   r5   r¦   r   r   r   r   rž   D  s   rž   Ú__main__)Ú
__future__r   r   r   r   ÚbuiltinsÚnumpyr   Ú r   r#   r	   Zunittestrq   ZTestCaser
   r6   rF   r~   r‘   rš   rž   r2   Úmainr   r   r   r   Ú<module>   s   <w8%