U
    Ãmœdó"  ã                   @   st   d Z ddlmZmZ ddlmZmZmZmZ ddl	Z
ddlZddlmZmZ dd„ ZG dd	„ d	ƒZG d
d„ dƒZdS )z×The 'handful' tests are intended to aid refactoring. The tests with the
@pytest.mark..slow are empirical (test within error limits) and intended to more
extensively ensure the stability and accuracy of the functionsé    )ÚlzipÚlmap)Úassert_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_raisesN)ÚqsturngÚpsturngc              	   C   s^   t | dd��}| ¡ }W 5 Q R X tdd„ |D ƒŽ \}}}}tt|ƒtt|ƒtt|ƒtt|ƒfS )Nzutf-8)Úencodingc                 S   s   g | ]}|  d ¡‘qS )ú,)Úsplit)Ú.0ÚL© r   úh/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/statsmodels/stats/libqsturng/tests/test_qsturng.pyÚ
<listcomp>   s     zread_ch.<locals>.<listcomp>)ÚopenÚ	readlinesr   r   Úfloat)ÚfnameÚfÚlinesÚpsÚrsÚvsÚqsr   r   r   Úread_ch   s    r   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zejj	d	d
„ ƒZ
dd„ Zejjdd„ ƒZdS )ÚTestQsturngc                 C   s   t dtdddƒdƒ d S )Nçû/
.î¾@çÍÌÌÌÌÌì?é   é   ©r   r   ©Úselfr   r   r   Útest_scalar   s    zTestQsturng.test_scalarc                 C   s6   t t dddg¡tdddgdddgdddgƒd	ƒ d S )
Nçx>[è@çÝµB`þE@çD›\X@g¾0™*•ì?g�•C‹lçí?g5ï8EGrï?é   r!   r    )r   ÚnpÚarrayr   r#   r   r   r   Útest_vector!   s    þ
þúzTestQsturng.test_vectorc                 C   sX   t ttdddƒ t ttdddƒ t ttdddƒ t ttdddƒ t ttftddd	ƒ d S )
Nçš™™™™™¹¿r    r!   gà-� øï?g{®Gázì?é   r   r   é   )r   Ú
ValueErrorr   ÚOverflowErrorr#   r   r   r   Útest_invalid_parameters+   s
    z#TestQsturng.test_invalid_parametersc                 C   sV   ddddddddd	d
ddddddddddg}|D ] \}}}}t |t|||ƒdƒ q0d S )N)ç      è?ç      >@ç      (@g¤‘³a5@)g333333ï?ç      .@ç      2@gUÊ«b@)çš™™™™™¹?ç       @ç      &@gˆƒ„³%3ü?)g×£p=
×ï?ç      @ç      1@g³ñŠü!Œ@)ç333333ë?r6   r7   gÇã‰®™@)r3   r<   r7   g©ý™vÂS@)r3   ç      N@g      0@gÈ#<U@)ç®Gáz®ï?g      Y@ç       @gŠ.ŒÑj1I@)r   r@   g      D@g[‚·ô@)çš™™™™™é?r5   ç      4@gÁÜ‘L�@)çš™™™™™å?r9   ç      ,@g}@	Í
@)r3   r4   g      8@gºàƒ{@)r3   r@   r7   g»ã3ŸÀåú?)r?   ç      @g      ^@gV*Þ©b@)rA   g      3@r6   gkWéÓ@)rA   r6   r9   g`È X77@)g      à?r5   r:   g)š�¨ˆ
@)r=   r4   r@   gÞóº2v$@)rC   rB   r7   g”~?ùÀò@)r8   r>   r>   g®Jfˆ‰@r    r"   ©r$   ZcasesÚpÚrÚvÚqr   r   r   Útest_handful_to_tbl7   s.    ízTestQsturng.test_handful_to_tblc                 C   sÈ   ddl m}m} g g g g f\}}}}|D ]X}|| D ]J}| ¡ D ]<}	| |¡ | |¡ | |	¡ | || | ||	  ¡ q@q4q(t |¡}t |t|||ƒ ¡| }
t	t g ¡t 
|
dk¡d ƒ d S )Nr   )ÚTÚRç¸…ëQ¸ž?)Z&statsmodels.stats.libqsturng.make_tblsrL   rM   ÚkeysÚappendr*   r+   Úabsr   r   Úwhere)r$   rL   rM   r   r   r   r   rG   rI   rH   Úerrorsr   r   r   Útest_all_to_tblS   s    


 
zTestQsturng.test_all_to_tblc                 C   sV   ddddddddd	d
ddddddddddg}|D ] \}}}}t |t|||ƒdƒ q0d S )N)gŸD:òöÖë?g      $@g]þCúí}@g‡©î~û@)g{”[¤šcë?g     €E@gù g³êwj@gaŠ@)g:këBã?r:   g†ZÓ¼ã(x@géø†óÛ´
@)gWBwIœå?g     €I@g}?5^º©R@g\íÀoY>@)gþ†ä¿›Éã?ç     @S@gãÇ˜»–ý}@g�eò@)gJ{’�í?rU   g¡Ö4ï8œˆ@gø9�îþ%@)g5�îèê?rE   gL¦
F%kl@gÿ�¨ÖÓq@)g¨²ƒ¥úâ?r>   gTR' ‰Ut@gy¢;{.@)g¤šH©ôã?g     €N@g}?5^:Œ„@g¼vÿâzH@)g»@jçí?g      R@g®Ø_vOsŠ@gvB;&«4@)gd,	ì?g      L@g~Œ¹k‰.…@gïç(s@)g(Ì7ìHé?g     €D@gÍÌÌÌÌp`@gŸlýj°@)gNlô ówä?g      F@gEGrùƒƒ@g{'¨óòg@)gtúàé?rD   g“:M„mo@g2ÿŒ5Q@)g�Ÿâ8ðêæ?g     €F@gj¼t“a@g¶®’â8@)gÆm4€·@ê?r;   gyX¨5Í/r@g�&Ø—ê†
@)gREñ*kÛë?g     ÀT@gŒ¹k	ù¼‡@g¾V%†Bc@)gF(¶‚¦eê?r7   gÐDØðt¯„@g9Þè@P@)gq¬‹Ûhî?r@   g#Ûù~j¼@grDUfL@)g¼iDz›Hç?g     ÀW@g.sº,&ÜV@gõ|!á£@r    r"   rF   r   r   r   Útest_handful_to_chc   s.    ízTestQsturng.test_handful_to_chc                 C   sŽ   dd l }|j |j t¡¡}t|j |j |¡d ¡d d ƒ\}}}}t |¡}t 	|t
|||ƒ ¡| }tt g ¡t |dk¡d ƒ d S )Nr   z/tests/results/bootleg.csvrN   )ÚosÚpathÚdirnameÚabspathÚ__file__r   r   r*   r+   rQ   r   r   rR   )r$   rW   Úcurdirr   r   r   r   rS   r   r   r   Útest_10000_to_ch|   s    ÿ
zTestQsturng.test_10000_to_chN)Ú__name__Ú
__module__Ú__qualname__r%   r,   r2   rK   ÚpytestÚmarkÚskiprT   rV   Úslowr]   r   r   r   r   r      s   

r   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	j
dd„ ƒZdS )ÚTestPsturngc                 C   s   t dtdddƒdƒ dS )zscalar input -> scalar outputr8   r   r    r!   N©r   r	   r#   r   r   r   r%   ‰   s    zTestPsturng.test_scalarc                 C   s6   t t dddg¡tdddgdddgdddgƒd	ƒ d
S )zvector input -> vector outputgé‘Ì,W»?gß_o(�Ä°?gQŠ±§x·‘?r&   r'   r(   r)   r!   r    N)r   r*   r+   r	   r#   r   r   r   r,   �   s    þþüøzTestPsturng.test_vectorc                 C   s   t dtdddƒdƒ d S )Nr8   gš™™™™™É?r    r.   rf   r#   r   r   r   Útest_v_equal_one™   s    zTestPsturng.test_v_equal_onec                 C   s(   t ttdddƒ t ttftdddƒ d S )Nr-   r    r!   r   r.   r/   )r   r0   r	   r1   r#   r   r   r   r2   œ   s    z#TestPsturng.test_invalid_parametersc                 C   sZ   ddddddddd	d
ddddddddddg}|D ]$\}}}}t d| t|||ƒdƒ q0d S )N)gjbØ>áæ?éC   g£¦`Î¨å�@ge5@)gÏ.æ€Û?é   giÉ@\œ†@gÇ­IØ’¤
@)gªr:1aî?r/   gDNÄm~¡Œ@gpYs$@)gÁÈø	zPë?éB   g
DMêjP@gP{˜3LB@)gÛ¹+é…õë?éJ   gµ³ºc“ƒ@gËlaHh$@)g|¯-TÔ>á?é1   gøÏÌœõŠ@gts @)g)]È~9Ÿï?é   gÒó…"B@gé«7×\@)gFp¦Šaøà?é2   gÖ<ð¸º”p@g°ý*(e@)gká¾›kç?é;   g£Î¯ÞQë…@g¦Áõ`÷ý@)gªÚ6Àÿçä?é=   gß0Ï=x‚@g².+Ñ�{@)g°~cÅ¡ºá?éM   gMÌœ‡»ZŒ@gÉa
H³ƒ@)gL¢\£³Ó?éS   gL,ùdšœT@gŸDO1Â@)gÌSÂÄÒ?ri   g˜"Ž&-†@gýúèP>@)gÊ ×Ñ­_Ñ?é   g4ÈÚ-p‚@gÎTT·.²@)gO§s¤6�å?éQ   gißÐk7 ƒ@gµ€9@p@)g®B\·ÁùÔ?rm   gkkJË´1@gõàÉ ú±	@)gÙgôG©æ?éH   gHá‰hµ±{@gÅÑÔae@)gédb�ßXÕ?é/   gé@%ž �@gŽØ®Î>@)gA+|öTã?é$   gë°¡®þ‹@gçKúà†@)g�cÏ€eì?rq   g‰ª¬#– z@gcK5)˜ˆ@ç      ð?r    rf   rF   r   r   r   Útest_handful_to_known_values¢   s.    íz(TestPsturng.test_handful_to_known_valuesc                 C   sŒ   d}t j d¡}| |¡d d }| dd|¡}| |¡d d }t|||ƒ}t|||ƒ}d	| }	||	 }
tt  g ¡t  	|
d
k¡d ƒ d S )Néd   i90  gøSã¥›Äì?r8   r/   ée   g     0�@r@   rx   gñhãˆµøä>r   )
r*   ÚrandomZRandomStateZrandom_sampleÚrandintr   r	   r   r+   rR   )r$   Zreset_randomstateÚnZrandom_stater   r   r   r   Z	estimatesZactualsrS   r   r   r   Útest_100_random_values»   s    z"TestPsturng.test_100_random_valuesN)r^   r_   r`   r%   r,   rg   r2   ry   ra   rb   rd   r   r   r   r   r   re   ˆ   s   re   )Ú__doc__Zstatsmodels.compat.pythonr   r   Znumpy.testingr   r   r   r   Únumpyr*   ra   Zstatsmodels.stats.libqsturngr   r	   r   r   re   r   r   r   r   Ú<module>   s   l