3
Od8~                @   s   d 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	m
Z
mZmZmZmZ ddlZddlmZ ddljjZddlmZmZmZmZmZ ddlZddljZddljj Z ddl!jj"Z"ddl#m$Z$ ddl%m&Z& d	d
l'm(Z( ddl)m*Z* ddl+m,Z, ed	ddddddddg	e-Z.edddddddddg	e-Z/edddddddddg	e-Z0eddd d!d"d#d$d%d&g	e-Z1ed'd(d)d*d+d,d-d.d/g	e-Z2ed0d1d2d3d4d5d6d7d8g	e-Z3ed9d:d;d<d=d>d?d@dAg	e-Z4G dBdC dCe5Z6G dDdE dEe5Z7G dFdG dGe5Z8G dHdI dIe5Z9G dJdK dKe5Z:dLdM Z;dNdO Z<dPdQ Z=dRdS Z>dTdU Z?dVdW Z@dXdY ZAG dZd[ d[e5ZBG d\d] d]e5ZCd^d_ ZDd`da ZEdbdc ZFG ddde dee5ZGG dfdg dge5ZHG dhdi die5ZIG djdk dke5ZJG dldm dme5ZKG dndo doe5ZLdpdq ZMG drds dse5ZNG dtdu due5ZOG dvdw dwe5ZPdxdy ZQedzd{d|d}d~ddddgZReRddddgddddddejSd dejSd   ddejSd dejSd   ddeRddddgddddgdddddejSd dejSd  dejSd	   ddejSd
 dejSd  dejSd   ddeRddddgddddddejSd  dejSd!   ddejSd" dejSd#   d0deRddddgddddgdddddddgZTeRg ddddddddeRejg g g gjUddddddgdddgdddgdddgdeRejg g g gdddg g g g dgZVG dd de5ZWejXjYddejZfdej[fgdd Z\dd Z]dd Z^dd Z_G dd de5Z`G dd de5ZaG dd de5Zbdd Zcdd Zddd ZeejXjYdejfd1d2fejfd3d4fgdd Zgdd Zhd5ddZidd Zjdd Zkdd Zldd ZmejXjYdejfd6d7fejfd8d9fgdd Zndd Zodd Zpdd Zqdd ZrG dd de5Zsdd ZtG dd de5ZuG dd de5Zvdd ZwddĄ ZxG ddƄ de5ZyddȄ Zzddʄ Z{d:dd̈́Z|d;ddτZ}G ddф de5Z~G ddӄ de5ZG ddՄ de5Zddׄ Zddل Zddۄ ZG dd݄ de5ZG dd߄ de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZG dd de5ZdS (<  z Test functions for stats module

    WRITTEN BY LOUIS LUANGKESORN <lluang@yahoo.com> FOR THE STATS MODULE
    BASED ON WILKINSON'S STATISTICS QUIZ
    https://www.stanford.edu/~clint/bench/wilk.txt

    Additional tests by a host of SciPy developers.
    N)
namedtuple)	assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_approx_equalassert_allcloseassert_warnssuppress_warnings)raises)arrayarangefloat32float64power)kolmogn)FuncData   )check_named_results)matrix)cdist                     	   iiiiiiiiig~?g<?gEk?g?ge(?gq?g?g8C?gG?g   mBg   }Bg  yӅBg   Bg  @0Bg  yӕBg  BwBg   Bg   ^Bg-q=g-=gAfc=g-=gdy=gAfc=gYLɞ=g-=gSSʣ=g      ?g      ?g      @g      @g      @g      @g      @g      @g      !@c               @   sJ   e Zd ZejejjZdd Zdd Z	dd Z
dd Zd	d
 Zdd ZdS )TestTrimmedStatsc             C   sP   t jtd	d
}t|d| jd t jtddd}t jtd d}t||| jd d S )Nr   r   Tg      @)significantF)limits	inclusive)r"   )r   r   )TT)r   r   )FF)statsZtmeanXr   dprec)selfyy1y2 r+   P/var/www/html/virt/lib64/python3.6/site-packages/scipy/stats/tests/test_stats.py
test_tmean=   s
    zTestTrimmedStats.test_tmeanc             C   sr  t jtddd}t|d| jd t jtd d}t|tjdd	| jd td
tdjd}t j|d d}t||jdd	| jd t j|dd}t	|d t
jdddd t j|dd}t	|d t
jdddd t j|dd d f }t|d| jd t n}|jtd t j|ddd d}t|d d| jd t j|d!dd"d}t|d d| jd t|d t
j W d Q R X d S )#Nr   r   T)r"   r#   g@)r!   )r"   r   )ddof?   )dtyper   r   )axisr   g     v@)decimalg㪪@r   g@z"Degrees of freedom <= 0 for slice.r   )r"   r1   r#   g      @r   )r   r   )TT)r   r   )r   r   )r   r   )r   r   )TT)r   r   )TT)r$   tvarr%   r   r&   varr   r   reshaper   npfullr   recordRuntimeWarningr   nan)r'   r(   Zx_2dsupr+   r+   r,   	test_tvarE   s(    zTestTrimmedStats.test_tvarc             C   sH   t jtd	d
}t|d| jd t jtd d}t|tjdd| jd d S )Nr   r   TgBĆ/H@)r!   )r"   r   )r.   )r   r   )TT)r$   Ztstdr%   r   r&   std)r'   r(   r+   r+   r,   	test_tstde   s    zTestTrimmedStats.test_tstdc             C   sT  t tjdd tjd}t tj|d t tj|ddd t tj|dddd |jd}t tj|dddd	dg t tj|dd
dd	dddg t tj|d d
d tjd}tj|d< t }|jt	d t tj|tj t tj|ddd t
ttj|dd t
ttj|dd d}t
t|d tj|dd W d Q R X W d Q R X d S )Nr   
   r   )
lowerlimitF)r@   r#   r   r   r   )r1   r   r   g      $@r   zinvalid value*omit)
nan_policyg        raisefoobarz'propagate', 'raise', 'omit')matchZfoo)r   r   )r   r$   Ztminr6   r   r5   r:   r   r8   r9   assert_raises
ValueError)r'   xr;   msgr+   r+   r,   	test_tminl   s(    



zTestTrimmedStats.test_tminc             C   s*  t tjdd tjd}t tj|d t tj|ddd t tj|dddd |jd}t tj|ddddd
g t tj|dddddd
dg t tj|d dd tjd}tj|d< t \}|jt	d t tj|tj t tj|ddd t
ttj|dd t
ttj|dd W d Q R X d S )Nr   r?   r   )
upperlimitF)rK   r#   r   r   r   r   r   )r1   r   g      $@r   zinvalid value*rA   )rB   g      "@rC   rD   )r   r   )r   r$   Ztmaxr6   r   r5   r:   r   r8   r9   rF   rG   )r'   rH   r;   r+   r+   r,   	test_tmax   s"    



zTestTrimmedStats.test_tmaxc             C   st   t jtddd}tjdddd	dg}t||jd
dtj|j | j	d tt jtddgdt jtd d| j	d d S )Nr   r   FT)r"   r#   r   r   r   r   r   )r.   )r!   r?   )r"   )r   r   )FT)
r$   Ztsemr%   r6   r   r   r=   sqrtsizer&   )r'   r(   Zy_refr+   r+   r,   	test_tsem   s    
zTestTrimmedStats.test_tsemN)__name__
__module____qualname__r6   Zfinfor   Z	precisionr&   r-   r<   r>   rJ   rL   rP   r+   r+   r+   r,   r    9   s    r    c               @   s   e Zd Z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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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBdC Z$dDdE Z%dFS )GTestCorrPearsonraE   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN correlations, if
        your program has them.
    c             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   pearsonrr%   r   )r'   r(   rr+   r+   r,   test_pXX   s    zTestCorrPearsonr.test_pXXc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r%   BIGr   )r'   r(   rV   r+   r+   r,   
test_pXBIG   s    zTestCorrPearsonr.test_pXBIGc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r%   LITTLEr   )r'   r(   rV   r+   r+   r,   test_pXLITTLE   s    zTestCorrPearsonr.test_pXLITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r%   HUGEr   )r'   r(   rV   r+   r+   r,   test_pXHUGE   s    zTestCorrPearsonr.test_pXHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r%   TINYr   )r'   r(   rV   r+   r+   r,   test_pXTINY   s    zTestCorrPearsonr.test_pXTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r%   ROUNDr   )r'   r(   rV   r+   r+   r,   test_pXROUND   s    zTestCorrPearsonr.test_pXROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rX   r   )r'   r(   rV   r+   r+   r,   test_pBIGBIG   s    zTestCorrPearsonr.test_pBIGBIGc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rX   rZ   r   )r'   r(   rV   r+   r+   r,   test_pBIGLITTLE   s    z TestCorrPearsonr.test_pBIGLITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rX   r\   r   )r'   r(   rV   r+   r+   r,   test_pBIGHUGE   s    zTestCorrPearsonr.test_pBIGHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rX   r^   r   )r'   r(   rV   r+   r+   r,   test_pBIGTINY   s    zTestCorrPearsonr.test_pBIGTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rX   r`   r   )r'   r(   rV   r+   r+   r,   test_pBIGROUND   s    zTestCorrPearsonr.test_pBIGROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rZ   r   )r'   r(   rV   r+   r+   r,   test_pLITTLELITTLE   s    z#TestCorrPearsonr.test_pLITTLELITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rZ   r\   r   )r'   r(   rV   r+   r+   r,   test_pLITTLEHUGE   s    z!TestCorrPearsonr.test_pLITTLEHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rZ   r^   r   )r'   r(   rV   r+   r+   r,   test_pLITTLETINY   s    z!TestCorrPearsonr.test_pLITTLETINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   rZ   r`   r   )r'   r(   rV   r+   r+   r,   test_pLITTLEROUND   s    z"TestCorrPearsonr.test_pLITTLEROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r\   r   )r'   r(   rV   r+   r+   r,   test_pHUGEHUGE   s    zTestCorrPearsonr.test_pHUGEHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r\   r^   r   )r'   r(   rV   r+   r+   r,   test_pHUGETINY   s    zTestCorrPearsonr.test_pHUGETINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r\   r`   r   )r'   r(   rV   r+   r+   r,   test_pHUGEROUND  s    z TestCorrPearsonr.test_pHUGEROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r^   r   )r'   r(   rV   r+   r+   r,   test_pTINYTINY	  s    zTestCorrPearsonr.test_pTINYTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r^   r`   r   )r'   r(   rV   r+   r+   r,   test_pTINYROUND  s    z TestCorrPearsonr.test_pTINYROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   rU   r`   r   )r'   r(   rV   r+   r+   r,   test_pROUNDROUND  s    z!TestCorrPearsonr.test_pROUNDROUNDc             C   sH   t d}tj||\}}t|ddd t|dtjdtjd d d S )Ng      @g      ?gV瞯<)atolg        r   )r   r$   rU   r	   r6   rN   spacing)r'   arV   probr+   r+   r,   test_r_almost_exactly_pos1  s    z+TestCorrPearsonr.test_r_almost_exactly_pos1c             C   sJ   t d}tj|| \}}t|ddd t|dtjdtjd d d S )Ng      @g      ?gV瞯<)rq   g        r   g      )r   r$   rU   r	   r6   rN   rr   )r'   rs   rV   rt   r+   r+   r,   test_r_almost_exactly_neg1!  s    z+TestCorrPearsonr.test_r_almost_exactly_neg1c             C   sN   t dddg}t dddg}tj||\}}t|tjdd  t|d d S )Nr   r   r   r   rM   gUUUUUU?)r   r$   rU   r   r6   rN   )r'   rs   brV   rt   r+   r+   r,   
test_basic*  s
    zTestCorrPearsonr.test_basicc             C   sN   t tj: tjdddgdddg\}}t|tj t|tj W d Q R X d S )NgMbX?grh|?gv/?gsh|??)r
   r$   ZPearsonRConstantInputWarningrU   r   r6   r:   )r'   rV   pr+   r+   r,   test_constant_input3  s    z$TestCorrPearsonr.test_constant_inputc          
   C   sV   dddt jd g}ddddt jd  g}ttj tj||\}}W d Q R X d S )Nr   r   r   )r6   rr   r
   r$   Z PearsonRNearConstantInputWarningrU   )r'   rH   r(   rV   ry   r+   r+   r,   test_near_constant_input;  s    z)TestCorrPearsonr.test_near_constant_inputc             C   sD   dddddg}dddd	d
g}t j||\}}t|d t|d d S )Ngy)r?gxd{s?gnp?g$9"o?ge =:k?goȟg`
,gzg2l?g>??'ge;E?g3R?)r$   rU   r	   )r'   rH   r(   rV   ry   r+   r+   r,   test_very_small_input_valuesD  s
    
z-TestCorrPearsonr.test_very_small_input_valuesc          	   C   sR   dt jdddddddg }dt jd }tj||\}}t|d t|d d S )NgY)	kRr   r   r   gLXz?g͗~-?)r6   r   r   r$   rU   r	   )r'   rH   r(   rV   ry   r+   r+   r,   test_very_large_input_valuesQ  s
    
z-TestCorrPearsonr.test_very_large_input_valuesc             C   sL   t jddddg}t jddddg}tj||\}}t|d	 t|d
 d S )Ng7	igNig_b4igZbigDig<'(½igmQigZbtig*D{?gݣ?)r6   r   r$   rU   r	   )r'   rH   r(   rV   ry   r+   r+   r,   !test_extremely_large_input_values_  s
    
z2TestCorrPearsonr.test_extremely_large_input_valuesc             C   s0   t jddgddg\}}t|d t|d d S )Nr   r   r   r   )r$   rU   r   )r'   rV   ry   r+   r+   r,   test_length_two_pos1l  s    
z%TestCorrPearsonr.test_length_two_pos1c             C   s0   t jddgddg\}}t|d t|d d S )Nr   r   r   r   rM   )r$   rU   r   )r'   rV   ry   r+   r+   r,   test_length_two_neg2s  s    
z%TestCorrPearsonr.test_length_two_neg2c             C   s|   ddddg}ddddg}t j||\}}t|d t|d dddg}d	ddg}t j||\}}t|d t|ddd d S )Nr   r   r   r   r   g      ?g?g+?r      g      ?g        gHz>)rq   ig      )r$   rU   r	   )r'   rH   r(   rV   ry   r+   r+   r,   test_more_basic_examplesz  s    




z)TestCorrPearsonr.test_more_basic_examplesc             C   s&   dddg}ddg}t ttj|| d S )Nr   r   r   r   r   )rF   rG   r$   rU   )r'   rH   r(   r+   r+   r,   test_unequal_lengths  s    
z%TestCorrPearsonr.test_unequal_lengthsc             C   s    dg}dg}t ttj|| d S )Nr   r   )rF   rG   r$   rU   )r'   rH   r(   r+   r+   r,   	test_len1  s    zTestCorrPearsonr.test_len1N)&rQ   rR   rS   __doc__rW   rY   r[   r]   r_   ra   rb   rc   rd   re   rf   rg   rh   ri   rj   rk   rl   rm   rn   ro   rp   ru   rv   rx   rz   r{   r|   r}   r~   r   r   r   r   r   r+   r+   r+   r,   rT      sF   				rT   c               @   sP   e Zd ZdZdd Zdd Zejjdd Z	dd	 Z
d
d Zdd Zdd ZdS )TestFisherExacta  Some tests to show that fisher_exact() works correctly.

    Note that in SciPy 0.9.0 this was not working well for large numbers due to
    inaccuracy of the hypergeom distribution (see #1218). Fixed now.

    Also note that R and SciPy have different argument formats for their
    hypergeometric distribution functions.

    R:
    > phyper(18999, 99000, 110000, 39000, lower.tail = FALSE)
    [1] 1.701815e-09
    c             C   s  t j}|ddgddggd }t|ddd |d	d
gddggd }t|ddd |d
dgdd
ggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgddggd }t|ddd |ddgdd
ggd }t|d |dd
gddggd }t|d |d
dgdd
gg}t|d ddd t|d d! d S )"Ni8  i N  i0u  i@  r   g؞Y?r   )r!   d   r   i  r   g,Ԛ?r   r   g2c?r   r?   gY
A?      g_?      gO^M?r   gօa?r   g      ?ggE?g      @8   g$I$I?)r$   fisher_exactr   )r'   r   resr+   r+   r,   rx     s0    

zTestFisherExact.test_basicc             C   s  ddgddggd#fddgddggd$fddgddggd%fddgddggd&fddgddggd'fddgddggd(fddgddggd)fddgddggt jdffddgddggd*fddgddggt jdffddgddggd+fg}x>|D ]6\}}tjt j|}t jj|d |d d d!d"  qW d S ),Nr   r   i  r   An&	?}K
T?r   r   禛	7??r   r?   !@j)A?r   r   U!a?KY?r   r   7X?~ltP?Fu|?r           QN^?r   gaa?      ?gaa?r      T)r2   verbose)r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r6   infr$   r   asarraytestingr   )r'   ZtablisttableZres_rr   r+   r+   r,   test_precise  s    zTestFisherExact.test_precisec             C   s|   dddg}xDt |dddgD ]0\}}tjddgd	|ggd
 }t||dd qW tjddgddggd
 }t|ddd d S )Ng?=gNuP=gs=K   L   M   i(E  i  i)  r   r   )r!   iPF  i8 i N  i_ g^K=?)zipr$   r   r   )r'   pvalspvalnumr   r+   r+   r,   test_large_numbers  s    
z"TestFisherExact.test_large_numbersc             C   s    t ttjtjdjdd d S )Nr   r   r   )rF   rG   r$   r   r6   r   r5   )r'   r+   r+   r,   test_raises  s    zTestFisherExact.test_raisesc             C   sr   ddgddggddgddggddgddggddgddggf}x0|D ](}t j|\}}t|d t|tj qBW d S )Nr   r   r?   g      ?)r$   r   r   r6   r:   )r'   tablesr   Z	oddsratior   r+   r+   r,   test_row_or_col_zero  s    

z$TestFisherExact.test_row_or_col_zeroc             C   s  ddgddggddgddggddgdd	ggd
dgddggddgddggddgddggddgddggddgddggddgddggf	}ddgddgddgddgddgddgddgd"dgdd#gf	}xZt ||D ]L\}}g }|jtj|ddd  |jtj|ddd  t||dd d! qW d S )$Nr   r   r      i,        r   i     i   i  r   r   r   r   gI[?gq}!?g      ?g2\&gQp6g:O_?g a?g?gffffff?g?g333333?g       @less)alternativegreatergHz>)rq   rtolgUUUUUU?gUUUUUU?)r   appendr$   r   r	   )r'   r   r   r   r   r   r+   r+   r,   test_less_greater  s.    
z!TestFisherExact.test_less_greaterc             C   s   t jddgddgg\}}d S )Nr   r   r   i")r$   r   )r'   Zoddspvaluer+   r+   r,   test_gh3014  s    zTestFisherExact.test_gh3014N)rQ   rR   rS   r   rx   r   pytestmarkslowr   r   r   r   r   r+   r+   r+   r,   r     s   
"r   c               @   s  e Zd Z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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$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!d>d? Z"d@dA Z#dBS )CTestCorrSpearmanraD   W.II.D. Compute a correlation matrix on all the variables.

        All the correlations, except for ZERO and MISS, should be exactly 1.
        ZERO and MISS should have undefined or missing correlations with the
        other variables.  The same should go for SPEARMAN corelations, if
        your program has them.
    c             C   s"   t jdd}ttj|j  d S )Ng      @g       @)r$   	spearmanrr   r6   isnanall)r'   r(   r+   r+   r,   test_scalar#  s    zTestCorrSpearmanr.test_scalarc             C   s4   t ttjdddgddg t ttjdddgd d S )Nr   r   r   r   )rF   rG   r$   r   )r'   r+   r+   r,   test_uneven_lengths'  s    z%TestCorrSpearmanr.test_uneven_lengthsc             C   s   t jjd t jjdd}t jjdd}tj||jjdks@ttj|j	|j	ddj
jd	ks`ttttj||dd tttj|j	|j	 d S )
Ni r   r   r   r   r   )r1   )r   r   )r   r   )r6   randomseedrandnr$   r   correlationshapeAssertionErrorTr   rF   rG   )r'   rH   r(   r+   r+   r,   test_uneven_2d_shapes+  s     z'TestCorrSpearmanr.test_uneven_2d_shapesc             C   sz   t jjd t jjddd}tttj| tttj|| tttj|d d  ttj||d dtj|j	 |j	 dd d S )Ni r   r   r   )r1   r   )
r6   r   r   r   rF   rG   r$   r   r	   flatten)r'   rH   r+   r+   r,   test_ndim_too_high6  s    z$TestCorrSpearmanr.test_ndim_too_highc             C   sp   t jd}t j|d< ttj||t jt jf ttj||ddd	 tttj||dd tttj||dd d S )
Ng      $@r   rA   )rB         ?        rC   rD   )r   r   )r6   r   r:   r   r$   r   rF   rG   )r'   rH   r+   r+   r,   test_nan_policy@  s    

z!TestCorrSpearmanr.test_nan_policyc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   r   )r'   r(   rV   r+   r+   r,   test_sXXI  s    zTestCorrSpearmanr.test_sXXc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   rX   r   )r'   r(   rV   r+   r+   r,   
test_sXBIGN  s    zTestCorrSpearmanr.test_sXBIGc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   rZ   r   )r'   r(   rV   r+   r+   r,   test_sXLITTLES  s    zTestCorrSpearmanr.test_sXLITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   r\   r   )r'   r(   rV   r+   r+   r,   test_sXHUGEX  s    zTestCorrSpearmanr.test_sXHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   r^   r   )r'   r(   rV   r+   r+   r,   test_sXTINY]  s    zTestCorrSpearmanr.test_sXTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r%   r`   r   )r'   r(   rV   r+   r+   r,   test_sXROUNDb  s    zTestCorrSpearmanr.test_sXROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rX   r   )r'   r(   rV   r+   r+   r,   test_sBIGBIGg  s    zTestCorrSpearmanr.test_sBIGBIGc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rX   rZ   r   )r'   r(   rV   r+   r+   r,   test_sBIGLITTLEl  s    z!TestCorrSpearmanr.test_sBIGLITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rX   r\   r   )r'   r(   rV   r+   r+   r,   test_sBIGHUGEq  s    zTestCorrSpearmanr.test_sBIGHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rX   r^   r   )r'   r(   rV   r+   r+   r,   test_sBIGTINYv  s    zTestCorrSpearmanr.test_sBIGTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rX   r`   r   )r'   r(   rV   r+   r+   r,   test_sBIGROUND{  s    z TestCorrSpearmanr.test_sBIGROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rZ   r   )r'   r(   rV   r+   r+   r,   test_sLITTLELITTLE  s    z$TestCorrSpearmanr.test_sLITTLELITTLEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rZ   r\   r   )r'   r(   rV   r+   r+   r,   test_sLITTLEHUGE  s    z"TestCorrSpearmanr.test_sLITTLEHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rZ   r^   r   )r'   r(   rV   r+   r+   r,   test_sLITTLETINY  s    z"TestCorrSpearmanr.test_sLITTLETINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   rZ   r`   r   )r'   r(   rV   r+   r+   r,   test_sLITTLEROUND  s    z#TestCorrSpearmanr.test_sLITTLEROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r\   r   )r'   r(   rV   r+   r+   r,   test_sHUGEHUGE  s    z TestCorrSpearmanr.test_sHUGEHUGEc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r\   r^   r   )r'   r(   rV   r+   r+   r,   test_sHUGETINY  s    z TestCorrSpearmanr.test_sHUGETINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r\   r`   r   )r'   r(   rV   r+   r+   r,   test_sHUGEROUND  s    z!TestCorrSpearmanr.test_sHUGEROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r^   r   )r'   r(   rV   r+   r+   r,   test_sTINYTINY  s    z TestCorrSpearmanr.test_sTINYTINYc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r^   r`   r   )r'   r(   rV   r+   r+   r,   test_sTINYROUND  s    z!TestCorrSpearmanr.test_sTINYROUNDc             C   s"   t jtt}|d }t|d d S )Nr   g      ?)r$   r   r`   r   )r'   r(   rV   r+   r+   r,   test_sROUNDROUND  s    z"TestCorrSpearmanr.test_sROUNDROUNDc             C   s   t jtt}d}t|| d S )Nr   r   )r   r   )r$   r   r%   r   )r'   r   
attributesr+   r+   r,    test_spearmanr_result_attributes  s    z2TestCorrSpearmanr.test_spearmanr_result_attributesc             C   sP   ddddddg}ddddddg}t j||}t jtj||gj}t|| d S )Nr   r   r   r   r   r   )r$   r   r6   r   r   r	   )r'   x1x2res1res2r+   r+   r,   test_1d_vs_2d  s
    zTestCorrSpearmanr.test_1d_vs_2dc             C   sj   xdd
D ]\}dt jddddg}dddddt jg}tj|||d	}tjt j||gj|d	}t|| qW d S )N	propagaterA   r   r   r   r   r   r   )rB   )r   rA   )r6   r:   r$   r   r   r   r	   )r'   rB   r   r   r   r   r+   r+   r,   test_1d_vs_2d_nans  s    
z$TestCorrSpearmanr.test_1d_vs_2d_nansc             C   s   t jd}| }t jddddddg}t j|||gj}tj|}t jdddgdddgdddgg}t jdtd	}d
|dddf< d
|dddf< t	|j
| t	|j| d S )Nr   r   r   r   r   r   r   g3+?)r0   g+Hs]s?rM   rM   g3+g3+)r   r   )r6   r   r   r   r   r$   r   zerosfloatr	   r   r   )r'   r   r   x3rH   actualZexpected_corrZexpected_pvaluer+   r+   r,   
test_3cols  s    

zTestCorrSpearmanr.test_3colsc          
   C   s   t jt jddddddgdt jddd	ddgd
ddddddggj}t jt jt jt jgt jt jt jgt jt jdgg}ttj|ddj| tj|ddj}t|d d |d d |d d fddd d S )Ng      @g      @g      @gffffff@g      @gffffff"@gffffff@g333333@g@g      ?gffffff@gffffff@g       @gffffff@g      ?r   )rB   rA   r   r   r   acJC?%ln?g_0nYt!?gư>)r   _0nYt!޿)r   r   r   )r6   r   r:   r   r	   r$   r   r   )r'   rH   corrr   r+   r+   r,   test_gh_9103  s    "zTestCorrSpearmanr.test_gh_9103c       
      C   s   d}t jjd t jj|}t jj|dk}|dk}t j|}tj||ddj}t j||< tj||ddj}|j	t j
}tj||ddj}dddg}	t|||g|	 d S )	Nr   iH gffffff?g      ?rA   )rB   gonj?g)Wn%?)r6   r   r   randr   r$   r   r   r:   astypeint32r	   )
r'   nrH   mrs   rw   r   r   res3expectedr+   r+   r,   test_gh_8111  s    


zTestCorrSpearmanr.test_gh_8111N)$rQ   rR   rS   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   r   r   r   r   r   r   r   r  r+   r+   r+   r,   r     sB   
		r   c               @   s   e Zd Z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d Zdd Zdd Zdd Zdd Zdd ZdS )TestCorrSpearmanr2z-Some further tests of the spearmanr function.c             C   sT   dddddg}dddddg}d}t j||}t|d |d  t|d |d  d S )Nr   r   r   r   r   r   r   r   h
C?R?r   )r  r  )r$   r   r   )r'   r   r   r   r   r+   r+   r,   test_spearmanr_vs_r  s    z&TestCorrSpearmanr2.test_spearmanr_vs_rc             C   s   t tjg g tjtjf d S )N)r   r$   r   r6   r:   )r'   r+   r+   r,   test_empty_arrays  s    z$TestCorrSpearmanr2.test_empty_arraysc             C   s   t jjd t jt jjddddt jjddddg}ddgddgg}t jt jj||}d
}tj	|d	 |d }t
|d	 |d	  t
|d |d  d S )Niz  r   i  )locscalerO   g      ?g333333?CzYW?e*=r   )r	  r
  )r6   r   r   r   normaldotlinalgcholeskyr$   r   r   )r'   rH   r   r   r   r+   r+   r,   test_normal_draws  s    
z$TestCorrSpearmanr2.test_normal_drawsc             C   s&   t tjdddgdddgd d d S )Nr   r   r   g      ?)r   r$   r   )r'   r+   r+   r,   test_corr_1  s    zTestCorrSpearmanr2.test_corr_1c             C   sp   t jd}t j|d< ttj||t jt jf ttj||ddd	 tttj||dd tttj||dd d S )
Ng      $@r   rA   )rB         ?r   rC   rD   )r  r   )	r6   r   r:   r   r$   r   r	   rF   rG   )r'   rH   r+   r+   r,   test_nan_policies  s    

z$TestCorrSpearmanr2.test_nan_policiesc             C   s(   t jd}t jd}tttj|| d S )Ng      $@g      4@)r6   r   rF   rG   r$   r   )r'   rH   r(   r+   r+   r,   r   &  s    

z'TestCorrSpearmanr2.test_unequal_lengthsc             C   sX   ddddg}dddt jg}tj||dd	}tj|d d |d d dd	}t|| d S )
Nr   r   r   r   r   r   r   rA   )rB   )r6   r:   r$   r   r   )r'   r   r   r   r   r+   r+   r,   test_omit_paired_value+  s
     z)TestCorrSpearmanr2.test_omit_paired_valuec             C   s   t td}t td}|d |d  |d< |d< |d |d  |d< |d< |d |d  |d< |d< |jtj |jd ttj||d	d
d d d S )Ni  r   r   i  r?   i  i  g      @rA   )rB   gV-?)listranger   r6   r:   r   r$   r   )r'   rH   r(   r+   r+   r,   #test_gh_issue_6061_windows_overflow2  s    
z6TestCorrSpearmanr2.test_gh_issue_6061_windows_overflowc             C   s   t tj tjdddgdddg\}}t|tj t|tj tjdddgdddg\}}t|tj t|tj tjdddgdddg\}}t|tj t|tj W d Q R X d S )Nr   r   )r
   r$   SpearmanRConstantInputWarningr   r   r6   r:   )r'   rV   ry   r+   r+   r,   	test_tie0?  s    zTestCorrSpearmanr2.test_tie0c             C   sV   ddddg}ddddg}ddddg}ddddg}t j||}t j||}t|| d S )Ng      ?g       @g      @g      @g      @)r$   r   rU   r   )r'   rH   r(   Zxryrsrprr+   r+   r,   	test_tie1L  s    zTestCorrSpearmanr2.test_tie1c             C   sb   ddddg}ddddg}ddddt jg}ddddt jg}tj||}tj||dd}t|| d S )Nr   r   g      @r   r   rA   )rB   )r6   r:   r$   r   r   )r'   r   r)   r   r*   Zsr1Zsr2r+   r+   r,   	test_tie2Y  s    zTestCorrSpearmanr2.test_tie2c             C   s   t jddddgddddgg}t jddddgddddgg}t jddddgddddgg}ttj tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j tj|dd\}}t|t j t|t j W d Q R X d S )Nr   r   r   r   )r1   )r6   r   r
   r$   r  r   r   r:   )r'   z1Zz2Zz3rV   ry   r+   r+   r,   test_ties_axis_1g  s    z#TestCorrSpearmanr2.test_ties_axis_1c             C   s~   t jddddddddddg
}t jddddddddddg
}ttj. tj||\}}t|t j t|t j W d Q R X d S )Ng      ?r   gN}	?g	/`?gY%uX-H?gC1tq1?g*I?)r6   r   r
   r$   r  r   r   r:   )r'   rH   r(   rV   ry   r+   r+   r,   test_gh_11111v  s    z TestCorrSpearmanr2.test_gh_11111c             C   sT   t jddddddddddg
}t jdddddddddd	g
}tttj||d
d d S )Ng      ?g      @g       @r   gN}	?g	/`?gY%uX-H?gC1tq1?g*I?r   )r1   )r6   r   rF   rG   r$   r   )r'   rH   r(   r+   r+   r,   test_index_error  s
    z#TestCorrSpearmanr2.test_index_errorN)rQ   rR   rS   r   r  r  r  r  r  r   r  r  r  r  r  r  r   r!  r+   r+   r+   r,   r    s   
	
r  c           	   C   s  ddddddddg} ddddddddg}d4}t j| |}t|d |d  t|d |d  dddddddddg	} dddddddddg	}d5}t j| |}t|d |d  t|d |d  dddddddg} dddddddg}d7}t j| |}t|d |d  t|d |d  dddddddg} dddddddg}d8}t j| |}t|d |d  t|d |d  tjd} tjd}d9}t j| |}t|d |d  t|d |d  |d }|d |d< ||d< d:}t j| |}t|d |d  t|d |d  |d }|d |d< ||d< d;}t j| |}t|d |d  t|d |d  tjd} tjdd d d< }d>}t j| |}t|d |d  t|d |d  |d }|d |d< ||d< d@}t j| |}t|d |d  t|d |d  |d }|d |d< ||d< dB}t j| |}t|d |d  t|d |d  |d |d< ttt j| |dd ttt j| |dd dddddg}dddddg}dD}t j||}t|d |d  t|d |d  dE}t j||}t|| tt jdddgdddgtj	tj	f tt jdddgdddgtj	tj	f tt jdddgdddgtj	tj	f tt jg g tj	tj	f tj
jd tjtj
jddddtj
jddddg} d
d gd d
gg}tjtjj|| } dF}t j| d | d }t|d |d  t|d |d  tt jdddgdddgd d
 tjd#} tj	| d$< tt j| | tj	tj	f tt j| | d%d&dGd(d) tt j| | d%d*d+dHd(d) ttt j| | d-d& ttt j| | d.d& tjd#} tjd/}ttt j| | t jg g \}	}
ttj	|	 ttj	|
 t jdgdg\}	}
ttj	|	 ttj	|
 tjd0td1} tjj| d2} tjd0td1}tj|d3d  |d d3 f}ttjt j| |d  d S )INr   r   r   r   r   r   r   r                 ?r   gJ$I?mK?Jkaa?r?   紞xO~>?>?aV>}'}'?o&5>exact)methodZbanana   gg}+?`=i?r   r   iz  i  )r  r  rO   g333333?\zf?^n)=g      $@r   rA   )rB   />gư>)r   Z
asymptotic)rB   r,  &?rC   rD   g      4@i  )r0   i  i  )r"  r#  )r"  r#  箶J$I¿)r3  r$  )r%  r#  )r#  r&  )r'  r(  )r)  r*  rM         )r4  r&  ?>)r5  r(  }'}')r6  r*  g}+޿)r7  r.  )r   r   )r/  r0  )r#  r1  )r#  r2  )r$   
kendalltaur   r6   r   rF   rG   r   r   r:   r   r   r   r  r  r  r  r   r	   r   maZmasked_greaterconcatenater   isfinite)rH   r(   r   r   rw   r   r   r   r   taup_valuer+   r+   r,   test_kendalltau  s    



&&&
"





r>  c              C   s   t jjd xtddD ]} g }xt| D ]}||g| 7 }q*W t|}t jj| t jj| tj||}tj||}t	|d |d  t	|d |d  qW d S )N*   r   r?   r   r   )
r6   r   r   r  r  shufflemstats_basicr8  r$   r   )srs   irw   r   r   r+   r+   r,   test_kendalltau_vs_mstats_basicH  s    rD  c              C   s\   ddddg} t jdddg}tj| |dd}tj| d	d  |d	d  }t|j|jd
d d S )Ng      ?g       @g      @g      @g333333@g333333@rA   )rB   r   gV瞯<)rq   )r6   r:   r$   r8  r	   r   )rH   r(   r1r2r+   r+   r,   test_kendalltau_nan_2nd_argX  s
    rG  c              C   s>  dddddg} dddddg}t j| |\}}t|d ttj| t j| |dd	\}}t|d ttj| t j| |dd d\}}t|d ttj| t j| |d d\}}t|d ttj| t j|| d d\}}t|d ttj| t j| |d dd\}}t|d  ttj| t j|| d dd\}}t|d! ttj| t j| |dd\}}t|d" ttj| t j| |ddd d\}}t|d# ttj| t j|| ddd d\}}t|d$ ttj| t jtj| tjd|\}}t|d% t jtj| tjd|\}}t|d& t jtj| tjdtj|tjd\}}t|d' t jg g \}}ttj| ttj| t jdgdg\}}ttj| ttj| t	t
t jddgdddg t	t
t jddgddgdg dddddg} ddddtjg}t j| |\}}t|d( ddtjddg} t j| |\}}t|d) d S )*Nr-  r   r   r   r   r   gs$?F)additivegROo?c             S   s   dS )Nr   r+   )rH   r+   r+   r,   <lambda>l  s    z"test_weightedtau.<locals>.<lambda>)weighergg}+?)rankg?gn?)rK  rH  g @?g[đ(?gIکn?Tc             S   s   dS )Nr   r+   )rH   r+   r+   r,   rI    s    )rK  rJ  c             S   s   dS )Nr   r+   )rH   r+   r+   r,   rI    s    )r0   gs$gROogg}+޿gڿgng @ڿg[đ(gIکngg}+޿gg}+޿gs$gs$gs$gs$gs$)r$   weightedtaur   r   r6   r:   r   r   Zint16rF   rG   )rH   r(   r<  r=  r+   r+   r,   test_weightedtaub  sj    











(

rM  c               C   s6   t jdgdg t jdgdg t jtjgdg d S )Nr   g      ?4   )r$   rL  r6   r:   r+   r+   r+   r,   test_segfault_issue_9710  s    rO  c              C   s   d} t j| }t j| }tj||dd\}}t|d |d |d  |d< |d< tj||dd\}}t|d |d |d  |d< |d< tj||dd\}}t|d t j| d jt}t j| d jt}t j|d< tj||dd	d
\}}t|d d S )N   r+  )r,  g        r   r   r   r   rA   )r,  rB   rM   rM   rQ  r   rR  r   rM   )r6   r   r$   r8  r   r   r   r:   )r   rH   r(   _r   r+   r+   r,   test_kendall_tau_large  s     





rT  c        
   	   C   s   dd } t jjd xtddD ]}g }xt|D ]}||g| 7 }q2W t|}t jj| t jj| t jt|t jd}x`tdD ]T}xBdD ]:}| |||d
d |}t	j
|||dd |j}	t||	 qW t jj| qW q W d S )Nc             S   sn  d } } } }}	x2t t| D ] }
xt t| D ]}|r\|||
 |||  n|||
 |||  }||7 }| |
 | | kr||7 }||
 || kr|	|7 }	| |
 | | k r||
 || k s| |
 | | kr||
 || kr||7 }q:| |
 | | k r||
 || ks:| |
 | | kr:||
 || k r:||7 }q:W q$W || tj||  tj||	  S )Nr   )r  lenr6   rN   )rH   r(   rK  rJ  addZtotZconcZdiscuvrC  jwr+   r+   r,   wkq  s    4@
Dz*test_weightedtau_vs_quadratic.<locals>.wkqr?  r   r?   )r0   r   TFc             S   s   d| d  S )Ng      ?r   r+   )rH   r+   r+   r,   rI    s    z/test_weightedtau_vs_quadratic.<locals>.<lambda>c             S   s   d| d  S )Ng      ?r   r+   )rH   r+   r+   r,   rI    s    )TF)r6   r   r   r  r  r@  r   rU  Zintpr$   rL  r   r   )
r[  rB  rs   rC  rw   rK  rS  rV  r   r   r+   r+   r,   test_weightedtau_vs_quadratic  s     
r\  c               @   s   e Zd Zdd Zdd ZdS )TestFindRepeatsc             C   sP   dddddddddddg}t j|\}}t|ddddg t|ddddg d S )Nr   r   r   r   r   )r$   find_repeatsr   )r'   rs   r   numsr+   r+   r,   rx     s    zTestFindRepeats.test_basicc             C   sB   x<dddddgg gD ]&}t j|\}}t|g  t|g  qW d S )Nr?   r   2      (   )r$   r^  r   )r'   rs   Zrepeatedcountsr+   r+   r,   test_empty_result  s    
z!TestFindRepeats.test_empty_resultN)rQ   rR   rS   rx   rd  r+   r+   r+   r,   r]    s   r]  c               @   s   e Z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d Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) TestRegressionc             C   s4   t jtt}|d }|d }t|d t|d d S )Nr   r   ig      ?)r$   
linregressr%   rX   r   )r'   r(   	interceptrV   r+   r+   r,   test_linregressBIGX  s
    
z"TestRegression.test_linregressBIGXc             C   s4   t jtt}|d }|d }t|d t|d d S )Nr   r   g        g      ?)r$   rf  r%   r   )r'   r(   rg  rV   r+   r+   r,   test_regressXX   s
    
zTestRegression.test_regressXXc             C   s4   t jtt}|d }|d }t|d t|d d S )Nr   r   g        )r$   rf  r%   ZEROr   )r'   r(   rg  rV   r+   r+   r,   test_regressZEROX  s
    
z TestRegression.test_regressZEROXc             C   sZ   t jddd}dt jddd d }|t jt jddd7 }tj||}t|d d d S )Nr   r   g?r?   r   r   g4_Qc?)r6   linspacesinr$   rf  r   )r'   rH   r(   r   r+   r+   r,   test_regress_simple  s
    z"TestRegression.test_regress_simplec             C   sf   t jddd}dt jddd d }|t jt jddd7 }t j||f}tj|}t|d d d S )Nr   r   g?r?   r   r   g4_Qc?)r6   rl  rm  vstackr$   rf  r   )r'   rH   r(   rowsr   r+   r+   r,   test_regress_simple_onearg_rows$  s    
z.TestRegression.test_regress_simple_onearg_rowsc             C   sv   t jddd}dt jddd d }|t jt jddd7 }t jt j|dt j|df}tj|}t|d d d S )	Nr   r   g?r?   r   r   r   g4_Qc?)r6   rl  rm  hstackZexpand_dimsr$   rf  r   )r'   rH   r(   colsr   r+   r+   r,   test_regress_simple_onearg_cols.  s    
z.TestRegression.test_regress_simple_onearg_colsc             C   s   t ttjtjd d S )Nr   )r   r   )rF   rG   r$   rf  r6   ones)r'   r+   r+   r,   test_regress_shape_error7  s    z'TestRegression.test_regress_shape_errorc             C   s\   t jd}t jdd}|ddg  d8  < |ddg  d7  < d}ttj|||dd d S )Nr   r   r   r   r   r         ?      @ePUn?.bt>碩ڽE?   )r2   rQ  rM   )rw  rx  ry  rz  r{  )r6   r   r   r$   rf  )r'   rH   r(   r   r+   r+   r,   test_linregress<  s    
zTestRegression.test_linregressc             C   sz   d\}}t j|d| |}t jd| ||}tj|| tj||}t|d dk t|d d tt j|d   d S )	NJr 11順 r   r   r   )r~  r  rM   rM   )r6   rl  r$   rf  r   r   r   )r'   rs   r   rH   r(   r   r+   r+   r,    test_regress_simple_negative_corF  s    z/TestRegression.test_regress_simple_negative_corc             C   sZ   t jddd}dt jddd d }|t jt jddd7 }tj||}d}t|| d S )Nr   r   g?r?   r   sloperg  rvaluer   stderr)r  rg  r  r   r  )r6   rl  rm  r$   rf  r   )r'   rH   r(   r   r   r+   r+   r,   !test_linregress_result_attributesR  s    z0TestRegression.test_linregress_result_attributesc             C   sB   t jd}t jdd}tj||}t|d d t|d d d S )Nr   r   r   g        r   )r6   r   r$   rf  r   )r'   rH   r(   r   r+   r+   r,   test_regress_two_inputs\  s
    
z&TestRegression.test_regress_two_inputsc             C   s@   t jd}t jd}tj||}t|d d t|d d d S )Nr   r   g      ?r   g        )r6   r   ru  r$   rf  r   )r'   rH   r(   r   r+   r+   r,   'test_regress_two_inputs_horizontal_linee  s
    

z6TestRegression.test_regress_two_inputs_horizontal_linec          $   C   s   ddddddddd	d
dddddddddddddd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d$d.d/d0d"d1d2d3d4d5d6ddd7d0d'd*d,d8d9d:d;d<dg$}d=}dA}d?}t j||}t|j| t|j| t|jd@ | d S )BNg?gfffffu@ǧ]@g̤@g333333$@g     Pl@gfffff҄@gfffff"@g	|@g     H@gq@g?g333333?g     <@g33333ׄ@g      u@g     {@g333333'@g     `@g33333l@gfffff@g̼@g^@g333333?gffffff@g1u@g@g     8@g     X@g333333&@g33333]@gfffffl@g@gfffff|@g      ?g?g,u@gfffff]@g     @gffffff"@g     @g     4@g|@g33333W@gy@gP@gfffff@g4u@g%@gm@gl@g     0@gfffffƋ@gfffff]@gl@gffffff$@gffffff]@g̜l@g33333@g33333|@g?g!?gpX?r   g!п)r$   rf  r   r  rg  r  )r'   rH   r(   Z	exp_slopeZexp_interceptZexp_rsquaredr   r+   r+   r,   test_nist_norrisn  s    zTestRegression.test_nist_norrisc             C   s   t ttjg g  d S )N)rF   rG   r$   rf  )r'   r+   r+   r,   test_empty_input  s    zTestRegression.test_empty_inputc             C   sV   t jd}t j|d< t jdd, ttj||t jt jt jt jt jf W d Q R X d S )Ng      $@r   ignore)invalid)r6   r   r:   errstater   r$   rf  )r'   rH   r+   r+   r,   test_nan_input  s
    

zTestRegression.test_nan_inputN)rQ   rR   rS   rh  ri  rk  rn  rq  rt  rv  r}  r  r  r  r  r  r  r  r+   r+   r+   r,   re    s   		
	

		re  c              C   s   t jdddg\} }}}t| d t|d ddddddd	g}d
ddddddg}t j||d\} }}}t| d t|ddd t|ddd d S )Nr   r   g      ?r   r   r   r?   r-     r   r      r   -   7   N   gQ?gQ@)r2   gGz@)r$   Ztheilslopesr   )r  rg  lowerupperrH   r(   r+   r+   r,   test_theilslopes  s    


r  c              C   s   ddddddg} t j| dd\}}}}t|tjdddd	g t j| ddd\}}}}t|dk d}t j| ddd}t|| d S )Nr   r   r   r   )numbinsg      @g      @g      @g      @      ?r   )r  Zdefaultreallimitscumcountr@   binsizeextrapoints)r  r   )r  r@   r  r  )r  r   )r$   Zcumfreqr   r6   r   r   r   )rH   Zcumfreqslowlimr  r  r   r   r+   r+   r,   test_cumfreq  s    r  c              C   s   t jddddddg} tj| dd\}}}}t|tddddg d}tj| dd}t|| tjddddddgdd\}}}}t|| d S )Nr   r   r   r   )r  g      ?gK}\UU?	frequencyr@   r  r  )r  r@   r  r  )r6   r   r$   Zrelfreqr   r   )rs   Zrelfreqsr  r  r  r   r   Z	relfreqs2r+   r+   r,   test_relfreq  s    
r  c               @   sL   e Z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 )TestScoreatpercentilec             C   sD   dddddddg| _ dddddddd	g| _d
dddddddg| _d S )Nr   r   r   r?   r   r   r   r   r   g      @g      @rR  irQ  rR  r  i)Za1a2a3)r'   r+   r+   r,   setup_method  s    z"TestScoreatpercentile.setup_methodc             C   sF   t dd }ttj|dd ttj|dd ttj|dd d S )	Nr   g      ?r   g        r   g      @r`  g      ?)r   r   r$   scoreatpercentile)r'   rH   r+   r+   r,   rx     s    z TestScoreatpercentile.test_basicc             C   s0  t j}t|ttddd t|ttdddd t|ttdddd	d t|tjdddgddd
 t|tjdddgddd t|ttddddd t|ttdddddd t|ttdddddd t|tjdddgddddd
 t|tjdddgddddd d S )Nr?   r`  g      @r   r   r   r   r   )limitr  g      @fraction)interpolation_method)r  r  )r   r   )r   r   )r?   r   )r   r?   )r   r   )r   r   )r?   r   )r   r?   )r$   r  r   r  r  r6   r   )r'   scoreatpercr+   r+   r,   test_fraction  s(    z#TestScoreatpercentile.test_fractionc             C   sB  t j}t|ttddddd t|ttddddd t|ttdddddd t|ttddddd
d t|ttdddddd t|ttdddddd t|tjdddgddddd t|tjdddgdddd
d t|tjdddgddddd t|tjdddgdddd
d d S )Nr?   r`  r  )r  r   higherr   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  r   r  r  r6   r   )r'   r  r+   r+   r,   test_lower_higher  s*    z'TestScoreatpercentile.test_lower_higherc             C   s   t dd }tjdddg}tj|dddg}t|| tt|tj ttj|tjdddg| tjtj dj	dtjddddgdd}tdd
dgdddgd	ddgd	ddgg}t|| d S )Nr   g      ?r   g      @g      ?r   r`  r-  r   r   r   )r1   gQ?gQ@g(\ @r   r   )r   r   )
r   r6   r   r$   r  r	   r   
isinstanceZndarrayr5   )r'   rH   r   r   r   Z	expected2r+   r+   r,   test_sequence_per  s    

z'TestScoreatpercentile.test_sequence_perc             C   s  t j}tdjdd}t||dddd	g d
dddgddddgddddgg}t||ddd| dddgdddgdddgg}t||ddd| tdddgdddgdddgdddgdddgg}t j|d}t|jf  t|d t j|ddd}t|jd t|dddg d S )Nr-  r   r   r   r`  r   g      @g      @g      &@r   r   r   r   r   r   r?   r   r   )r1   g      ?g      @g     !@g      ?g      #@r   g      ?)r   r`  r   )r   r`  r   )r   r`  r   )r   )r$   r  r   r5   r   r   r   )r'   r  rH   Zr0rE  scorer+   r+   r,   	test_axis  s$    "

zTestScoreatpercentile.test_axisc             C   s@   t ttjddgddd t ttjdgd t ttjdgd d S )Nr   r   r   rD   )r  e   rM   )rF   rG   r$   r  )r'   r+   r+   r,   test_exception'  s    z$TestScoreatpercentile.test_exceptionc             C   sT   t tjg dtj t tjtjg g gdtj t tjg ddgtjtjg d S )Nr`  c   )r   r$   r  r6   r:   r   )r'   r+   r+   r,   
test_empty-  s    z TestScoreatpercentile.test_emptyN)rQ   rR   rS   r  rx   r  r  r  r  r  r  r+   r+   r+   r,   r    s   r  c               @   sF   e Zd Zdddddddgd ZddddgZdd Zdd	 Zd
d ZdS )TestItemfreqr   r   r   r   r?   c                sB    fdd}t jt jt jt jt jt jg}x|D ]}|| q.W d S )Nc                s~   t j j| }t }|jt tj|}W d Q R X t|d d df ddddg t|d d df t jddddg| d d S )	Nr   r   r   r   r   r   r?   )r0   )	r6   r   rs   r   filterDeprecationWarningr$   itemfreqr   )dtrs   r;   rX  )r'   r+   r,   _check_itemfreq9  s    
z8TestItemfreq.test_numeric_types.<locals>._check_itemfreq)r6   r   Zint64r   r   Z	complex64Z
complex128)r'   r  dtypesr  r+   )r'   r,   test_numeric_types7  s
    
zTestItemfreq.test_numeric_typesc             C   s   | j | j }}d}tjt||}||d d < tjt||}||d d < t }|jt tj	|}W d Q R X t
|d d df | d S )NOr   )rs   rw   r6   emptyrU  r   r  r  r$   r  r   )r'   rs   rw   r  aabbr;   rX  r+   r+   r,   test_object_arraysF  s    
zTestItemfreq.test_object_arraysc             C   s   | j | j }}ddg}tjtt|||}tjtt|||}t }|jt t	j
|}W d Q R X tt|d t|d  d S )N rC  r   r   )r  rC  )r  rC  )r   r   )rs   rw   r6   r   r  r   r   r  r  r$   r  r   tuple)r'   rs   rw   r  r  r  r;   rX  r+   r+   r,   test_structured_arraysR  s    
z#TestItemfreq.test_structured_arraysN)rQ   rR   rS   rs   rw   r  r  r  r+   r+   r+   r,   r  3  s
   r  c            	   @   s   e Z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d Zejjddddddgdejddddgdddgdejddggdd Zdd ZdS )TestModec             C   s2   t jg \}}t|tjg  t|tjg  d S )N)r$   moder   r6   r   )r'   valsrc  r+   r+   r,   r  _  s    zTestMode.test_emptyc             C   s6   t jd\}}t|tjdg t|tjdg d S )Ng      @r   )r$   r  r   r6   r   )r'   r  rc  r+   r+   r,   r   d  s    zTestMode.test_scalarc             C   sN   ddddddddddddg}t j|}t|d	 d	 d t|d d	 d d S )
Nr   r   r   r?      r   r   r   r   )r$   r  r   )r'   data1r  r+   r+   r,   rx   i  s    
zTestMode.test_basicc             C   s6  ddddg}ddddg}ddddg}ddddg}ddddg}t j|||||g}tj|d d}t|d t jdg t|d t jdg tj|dd}t|d t jddddgg t|d t jd	d
d
d	gg tj|dd}t|d t jdgdgdgdgdgg t|d t jd	gdgd
gdgd
gg d S )Nr?   ra  rb  r   )r1   r   r   r   r   r   r   )r6   r   r$   r  r   )r'   r  data2Zdata3Zdata4Zdata5arrr  r+   r+   r,   	test_axeso  s    (zTestMode.test_axesc             C   s<   dddg}t j|}t|d d d t|d d d d S )NZrainZshowersr   r   r   )r$   r  r   )r'   r  r  r+   r+   r,   test_strings  s    

zTestMode.test_stringsc             C   s\   ddt jddg}t jd	td}||d d < tj|}t|d d d t|d d d d S )
Nr?   TZhellor   )r0   r   r   r   )r   )r6   r:   r  objectr$   r  r   )r'   Zobjectsr  r  r+   r+   r,   test_mixed_objects  s    
zTestMode.test_mixed_objectsc          	      s   G dd dt   fdddD }tjdt d
}||d d < ttt|dk ttj|jd t	j
|}t|d d  d t|d d d d S )Nc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )z$TestMode.test_objects.<locals>.Pointc             S   s
   || _ d S )N)rH   )r'   rH   r+   r+   r,   __init__  s    z-TestMode.test_objects.<locals>.Point.__init__c             S   s   | j |j kS )N)rH   )r'   otherr+   r+   r,   __eq__  s    z+TestMode.test_objects.<locals>.Point.__eq__c             S   s   | j |j kS )N)rH   )r'   r  r+   r+   r,   __ne__  s    z+TestMode.test_objects.<locals>.Point.__ne__c             S   s   | j |j k S )N)rH   )r'   r  r+   r+   r,   __lt__  s    z+TestMode.test_objects.<locals>.Point.__lt__c             S   s
   t | jS )N)hashrH   )r'   r+   r+   r,   __hash__  s    z-TestMode.test_objects.<locals>.Point.__hash__N)rQ   rR   rS   r  r  r  r  r  r+   r+   r+   r,   Point  s
   r  c                s   g | ]} |qS r+   r+   ).0rH   )r  r+   r,   
<listcomp>  s    z)TestMode.test_objects.<locals>.<listcomp>r   r   r   r   r   )r0   r   )r   r   r   r   r   r   r   r   )r   )r   )r  r6   r  r   rU  setr   uniquer   r$   r  )r'   Zpointsr  r  r+   )r  r,   test_objects  s    
zTestMode.test_objectsc             C   sP   ddddddddddddg}g }t j|}d}t|| t j|}t|| d S )Nr   r   r   r?   r  r   r   r   r  count)r  r  )r$   r  r   )r'   r  r  r   r   Zactual2r+   r+   r,   test_mode_result_attributes  s    


z$TestMode.test_mode_result_attributesc             C   st   dt jdddddddddddg}tj|}t|d tj|d	d
}t|d tttj|dd
 tttj|dd
 d S )Nr   r   r   r?   r  r   r   r   rA   )rB   rC   rD   )r   r   )r   r   )r6   r:   r$   r  r   rF   rG   )r'   r  r   r+   r+   r,   test_mode_nan  s     


zTestMode.test_mode_nandatar   r   r   c             C   s$   t j|dd}t|d d d d S )NrA   )rB   r   r   )r$   r  r   )r'   r  resultr+   r+   r,   test_smallest_equal  s    zTestMode.test_smallest_equalc             C   s   dgdgdgdgg}t j|td}tj|dd}t j|jdkrL|jjd	ksPtt j|jdkrl|jjd
kspt|t j	gg }t j|td}tj|dd}t j|jdkr|jjdkstt j|jdkr|jjdkstd S )NZ	OxidationZPolymerizationZ	Reduction)r0   r   )r1   r   r   )r   r   )r   r   )r   r   )r   r   )
r6   r   r  r$   r  r   r   r   r  r:   )r'   r  arr   r  Zar1r+   r+   r,   test_obj_arrays_ndim  s       zTestMode.test_obj_arrays_ndimN)rQ   rR   rS   r  r   rx   r  r  r  r  r  r  r   r   parametrizer6   r:   r  r  r+   r+   r+   r,   r  ^  s   	
r  c               @   sl   e Zd ZddddgZ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d Zdd ZdS )TestVariabilityr   r   r   r   g      @c             C   s  t  6}tjdd |jtd tj| j}W d Q R X W d Q R X ttj	| tj| j
}t|d t| j
}ttj| j
ddtj||d   tj| j
dd tjd}tj|d	< ttj|tj ttj|d
dd tttj|dd tttj|dd d S )Nr  )r  z!Degrees of freedom <= 0 for sliceg㝎?r   )r.   r   g      $@r   rA   )rB   gH=6?rC   rD   )r   r6   r  r  r9   r$   Zsemscalar_testcaser   r   testcaser   rU  r	   rN   r   r:   r   rF   rG   )r'   r;   r(   r   rH   r+   r+   r,   test_sem  s     

"

zTestVariability.test_semc             C   s.   t j| j| j}ddddg}t||dd d S )NgOT\w?g%?r-  )r2   gOT\wg%ܿ)r$   zmapr  r   )r'   r(   desiredr+   r+   r,   	test_zmap  s    zTestVariability.test_zmapc       	      C   s   t jddddgddddgddddgg}dt jd
 }t jdd }t jd}tj||dd}tj||dd}| | d	 | d	 dgd|| d	 |g|| d	 || gg}ddddg| | | t jdgddddgg}t|| t|| d S )Ng        g      ?g       @r   g      @r   )r1   r   r   gUUUUUU?g      g      g      g      )r6   r   rN   r$   r  r   )	r'   rH   t1t2t3z0r  z0_expectedz1_expectedr+   r+   r,   test_zmap_axis  s     



zTestVariability.test_zmap_axisc             C   s   t jddddgddddgg}tj||ddd}t jddddgdt jd  }t jdddd	gt jd }t|d | t|d | d S )Ng        g      ?g       @g      @r   )r1   r.   g      ?r   g      ?g      @r   g      g      g      g      g?)r6   r   r$   r  rN   r   )r'   rH   zr  r  r+   r+   r,   test_zmap_ddof  s     zTestVariability.test_zmap_ddofc             C   s*   t j| j}ddddg}t||dd d S )NgOT\w?g%?r-  )r2   gOT\wg%ܿ)r$   zscorer  r   )r'   r(   r  r+   r+   r,   test_zscore!  s    zTestVariability.test_zscorec       	      C   s   t jddddgddddgddddgg}dt jd
 }t jdd }t jd}tj|dd}tj|dd}| | d	 | d	 dgd|| d	 |g|| d	 || gg}ddddg| | | t jdgddddgg}t|| t|| d S )Ng        g      ?g       @r   g      @r   )r1   r   r   gUUUUUU?g      g      g      g      )r6   r   rN   r$   r  r   )	r'   rH   r  r  r  r  r  r  r  r+   r+   r,   test_zscore_axis(  s     



z TestVariability.test_zscore_axisc             C   s   t jddddgddddgg}tj|ddd}t jddddgdt jd  }t jdddd	gt jd }t|d | t|d | d S )Ng        g      ?g       @g      @r   )r1   r.   g      ?r   g      ?g      @r   g      g      g      g      g?)r6   r   r$   r  rN   r   )r'   rH   r  r  r  r+   r+   r,   test_zscore_ddof?  s     z TestVariability.test_zscore_ddofc             C   s:   t jddt jddg}tj|dd}tt j|s6td S )Nr   r   r   r   r   )rB   )r6   r   r:   r$   r  r   r   r   )r'   rH   r  r+   r+   r,   test_zscore_nan_propagateK  s    z)TestVariability.test_zscore_nan_propagatec             C   sH   t jddt jddg}tj|dd}t jd	d
t jddg}t|| d S )Nr   r   r   r   rA   )rB   gIHb=?gIHb=?gIHb=gIHb=)r6   r   r:   r$   r  r   )r'   rH   r  r   r+   r+   r,   test_zscore_nan_omitP  s    z$TestVariability.test_zscore_nan_omitc             C   s,   t jddt jddg}tttj|dd d S )Nr   r   r   r   rC   )rB   )r6   r   r:   rF   rG   r$   r  )r'   rH   r+   r+   r,   test_zscore_nan_raise]  s    z%TestVariability.test_zscore_nan_raiseN)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   r  c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zej	j
dddddgdd Zej	j
ddejejddgfdejejejdgfgdd Zej	j
dddddgfd!gdd Zdd  ZdS )"TestMedianAbsDeviationc             C   s~   t jdddddddddddd	d
d
d
ddddddddt jg| _t jdddddddddddd	d
d
d
dddddddddg| _d S )Ng@g333333@g      @g@gffffff@g333333@g=
ףp=@g@g(\
@g333333@g      @g@g@g)\(@gQ@g33333<@)r6   r   r:   dat_nandat)r'   r+   r+   r,   setup_classd  s    z"TestMedianAbsDeviation.setup_classc             C   sR   t tj| jd dd | jjdd}tj|dd}tjdddd	g}t|| d S )
N)r1   gQ?r   r   r   gףp=
?g      ?g?g?)r   r$   median_abs_deviationr  r5   r6   r   r   )r'   r  madZmad_expectedr+   r+   r,   test_median_abs_deviationl  s    z0TestMedianAbsDeviation.test_median_abs_deviationc             C   s   t j| jdd}t|d d S )NrA   )rB   g(\?)r$   r  r  r   )r'   r   r+   r+   r,   test_mad_nan_omitt  s    z(TestMedianAbsDeviation.test_mad_nan_omitc             C   sL   t jddddt jgdddddgg}tj|dd	}t|t jt jdg d S )
Ng      ?g       @g      @g      @g      @g       @g      "@r   )r1   )r6   r   r:   r$   r  r   )r'   rH   r   r+   r+   r,   test_axis_and_nanx  s    z(TestMedianAbsDeviation.test_axis_and_nanc             C   s8   t jdddddt jt jg}tj|dd}t|d d S )	Nr   r   r   r   r  rA   )rB   g      @)r6   r   r:   r   r$   r  r   )Zsefr  r   r+   r+   r,   test_nan_policy_omit_with_inf~  s    z4TestMedianAbsDeviation.test_nan_policy_omit_with_infr1   r   r   r   Nc             C   s:   t jd}tj||d}t|t j|j|dt jd d S )Nr   r   r   )r1   )
fill_value)r   r   r   )r6   r   r$   r  r   Z	full_likesumr:   )r'   r1   rH   r   r+   r+   r,   test_size_zero_with_axis  s    
z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrA   g      ?r   c          	   C   sb   t jt jt jt jt jt jt jgddddt jt jgddddddgg}tj||dd}t|| d S )	Nr   r   r   r   r   r   r?   )rB   r1   )r6   r   r:   r$   r  r   )r'   rB   r   rH   r   r+   r+   r,   test_nan_policy_with_axis  s
    z0TestMedianAbsDeviation.test_nan_policy_with_axiszaxis, expectedg      @g       @g      (@      @c             C   sX   t jddddt jgdddddgdddddgg}tj|t jd	|d
}t||ddd d S )Nr   r   r   r   r   r-  r?   r   rA   )centerrB   r1   gV瞯<)r   rq   iii)r6   r   r:   r$   r  meanr	   )r'   r1   r   rH   r   r+   r+   r,   test_center_mean_with_nan  s    z0TestMedianAbsDeviation.test_center_mean_with_nanc             C   s4   t jtdd tjddddgdd W d Q R X d S )	Ncallable)rE   r   r   r   r   r  )r
  )r   r   	TypeErrorr$   r  )r'   r+   r+   r,   test_center_not_callable  s    z/TestMedianAbsDeviation.test_center_not_callable)Nr	  )rQ   rR   rS   r  r  r  r  r  r   r   r  r  r6   r   r:   r  r  r  r+   r+   r+   r,   r  c  s   $	r  c               @   sL   e Z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 )TestMedianAbsoluteDeviationc             C   s~   t jdddddddddddd	d
d
d
ddddddddt jg| _t jdddddddddddd	d
d
d
dddddddddg| _d S )Ng@g333333@g      @g@gffffff@g333333@g=
ףp=@g@g(\
@g333333@g      @g@g@g)\(@gQ@g33333<@)r6   r   r:   r  r  )r'   r+   r+   r,   r    s    z'TestMedianAbsoluteDeviation.setup_classc          
   C   s:   g }t  }|jt tj|}W d Q R X t|tj d S )N)r   r  r  r$   median_absolute_deviationr   r6   r:   )r'   r  r;   r   r+   r+   r,   test_mad_empty  s
    
z*TestMedianAbsoluteDeviation.test_mad_emptyc             C   sz   t jd}t ,}|jt tj|dd}tj|dd}W d Q R X t|t j t|t j	t jt jt jg t|j
d d S )Nr   r   )r1   r   )r   r   )r   )r6   ru  r   r  r  r$   r  r   r:   r   r   )r'   r  r;   	mad_axis0	mad_axis1r+   r+   r,   test_mad_nan_shape1  s    

z/TestMedianAbsoluteDeviation.test_mad_nan_shape1c             C   s   t jd}t :}|jt tj|dd}tj|dd}tj|dd}W d Q R X t|t j t|t j	t jt jgt jt jgt jt jgg t|j
d t|t j d S )Nr   r   r   )r1   r   )r   r   r   )r   r   )r6   ru  r   r  r  r$   r  r   r:   r   r   )r'   r  r;   r  r  Z	mad_axis2r+   r+   r,   test_mad_nan_shape2  s    


z/TestMedianAbsoluteDeviation.test_mad_nan_shape2c             C   s<   t   }|jt tj| jdd}W d Q R X t|tj d S )Nr   )rB   )	r   r  r  r$   r  r  r   r6   r:   )r'   r;   r   r+   r+   r,   test_mad_nan_propagate  s
    
z2TestMedianAbsoluteDeviation.test_mad_nan_propagatec             C   sD   t t2 t  }|jt tj| jdd W d Q R X W d Q R X d S )NrC   )rB   )rF   rG   r   r  r  r$   r  r  )r'   r;   r+   r+   r,   test_mad_nan_raise  s
    

z.TestMedianAbsoluteDeviation.test_mad_nan_raisec             C   sT   t  0}|jt tj| jdd}tj| jdd}W d Q R X t|d t|| d S )Ng      ?)r  gQ?)r   r  r  r$   r  r  r   )r'   r;   r   	mad_floatr+   r+   r,   test_mad_scale_default  s    

z2TestMedianAbsoluteDeviation.test_mad_scale_defaultc             C   sX   t  4}|jt tj| jdd}d}tj| j|d}W d Q R X t|d t|| d S )Nr  )r  gsV?g)?)r   r  r  r$   r  r  r   )r'   r;   r   r  r  r+   r+   r,   test_mad_scale_normal  s    

z1TestMedianAbsoluteDeviation.test_mad_scale_normalN)rQ   rR   rS   r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   
r  c             C   s0   t t| |d x| D ]}t|j|k qW dS )z
    Checks that all of the warnings from a list returned by
    `warnings.catch_all(record=True)` are of the required type and that the list
    contains expected number of warnings.
    znumber of warningsN)r   rU  r   category)Z	warn_listexpected_typeexpected_lenZwarn_r+   r+   r,   _check_warnings  s    
r  c               @   sl   e Z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d Zdd Zdd Zdd ZdS )TestIQRc             C   s.   t jdd }t jj| ttj|d d S )Nr   g      ?g      ?)r6   r   r   r@  r   r$   iqr)r'   rH   r+   r+   r,   rx     s    zTestIQR.test_basicc             C   s   t jd}tj| tj|d  tj|d tj|d tj|d d tj|d dd tj|d ddd tj|d dddd tj|d ddddd d S )Nr   r   r   r?   Z   ra  r   g      ?r   r   g      ?r   r`  r  rC   linearg?rA   r  T)r   r   )r   r   )r?   r"  )ra  r   )r   r   )r`  r`  )r   r   gٿ)r6   ru  r$   r!  )r'   dr+   r+   r,   test_api  s    

zTestIQR.test_apic             C   s.   t tjg tj t tjtjdtj d S )Nr   )r   r$   r!  r6   r:   r   )r'   r+   r+   r,   r    s    zTestIQR.test_emptyc             C   sl  t jd}ttj|d ttj|ddt jd ttj|ddt jd ttj|ddd ttj|d	dd ttj|d
dd ttj|ddd ttj|ddd t jdt jd }ttj|ddt jd ttj|ddt jd ttj|ddt jdd ttj|ddt jd ttj|ddt jdd ttj|ddt jdd d S )Nr   r   g        r   )r1   r   r#  )interpolationmidpointnearestr  r  r   r   r   g      @g      @)r   r   )r   r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )	r6   ru  r   r$   r!  r   r   r   r7   )r'   rH   r(   r+   r+   r,   test_constant  s     
zTestIQR.test_constantc             C   sL   t jdd }ttj|d d ttj|d ttj|dddg d S )Nr   g      @r   g        T)keepdims)r6   r   r   r$   r!  r   )r'   rH   r+   r+   r,   test_scalarlike"  s    zTestIQR.test_scalarlikec             C   s   t jdjd
}ttj|d ttj|ddt jdd ttj|ddt jdd	 ttj|ddd ttj|ddd d S )Nr   r   r   g      @r   )r1   g      @r   g       @)r   r   )r   r   )r   r   )r6   r   r5   r   r$   r!  r   r7   )r'   rH   r+   r+   r,   test_2D(  s    zTestIQR.test_2Dc          	   C   s  t jjdd}t j|gd }tj|}ttj|dd| t j|dd}ttj|dd| |jdd}ttj|dd| |jdd}ttj|ddtj|d d ttj|ddtj|dd t j	d}t jj
| |jd}ttj|ddd tj|d d d d d d df j  ttj|ddd tj|d d d d dd d f j  ttj|ddd tj|d d d d dd d f j  ttj|ddd tj|dd d d d d d f j  ttj|ddd tj|ddd d d d f j  ttj|d!dd" tj|dd d d d df j  ttj|d#dd$ tj|dd d dd d f j  tt jtj|dd tttj|d%d d S )&NG   r  )rO   r?   r   r   )r1   r   r   r   r   r   r   )r-  r  )r   r   rM   )r   r   )r   r   )r   r   r   )r   r   i   i  )r   r   r   r   )r   r   r   )r   r   r   r   )r   r   r   )r   r   r   )r   r   )r   r   rQ  )r   rQ  )r   r   )r   r   )r   r   )r   r   )r6   r   r  dstackr$   r!  r   rollaxisZswapaxesr   r@  r5   ravelrF   	AxisErrorrG   )r'   orH   qr$  r+   r+   r,   r  0  s@    


(((($$$zTestIQR.test_axisc             C   s   t jd}ttj|d ttj|ddd ttj|ddd ttj|ddd tttj|dd tttj|t jdfd tt	tj|dd d S )Nr   r   r        U@)rngg      @      )@r   r?   r`  g?r   r  <   )r   r5  )r7  r   )r?   r`  )r   r  )r   r`  r8  )
r6   r   r   r$   r!  r   rF   rG   r:   r  )r'   rH   r+   r+   r,   test_rngY  s    
zTestIQR.test_rngc             C   sT  t jd}t jd}ttj|d ttj|d ttj|ddd ttj|ddd ttj|ddd ttj|ddd
d ttj|ddd ttj|ddd ttj|ddd
d ttj|ddd ttj|ddd ttj|ddd ttj|ddd ttj|ddd
d ttj|ddd tttj|dd d S )Nr   r   r   g      ?r#  )r&  r  r   P   )r6  r&  r   r  r(  r   r'  g      @rD   )r   r:  )r   r:  )r   r:  )r6   r   r   r$   r!  rF   rG   )r'   rH   r(   r+   r+   r,   test_interpolationd  s$    

zTestIQR.test_interpolationc             C   s^  t jd}ttj|d ddjf  ttj|dddjd ttj|dddjd ttj|dddjd ttj|dddjd ttj|ddd
jf  ttj|dddjd ttj|d ddjd ttj|dddjd ttj|dddjd ttj|dddjd ttj|dddjd ttj|ddd
jd  ttj|d!ddjd" d S )#Nr   r   r   r   F)r1   r*  r   r   r   )r*  T)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   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   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   )r   r   r   r   )r6   ru  r   r$   r!  r   )r'   rH   r+   r+   r,   test_keepdims  s    
zTestIQR.test_keepdimsc             C   s  t jdjd}ttj|ddd ttj|ddd ttj|ddd t j|d< tjddf tj	d ttj|ddt j ttj|dddddt jddg ttj|d	ddd
t jd
g W d Q R X tjdd^ tj	d ttj|ddd ttj|dddt j
dd ttj|d	ddd
dd
g W d Q R X tttj|dd tttj|ddd tttj|d	dd tttj|dd d S )Ng      .@r   r   r   )rB   r   rA   rC   r   r   T)r8   alwaysr   )r1   rB   g      @g      @Zbarfood)r   r   )r   r   )r6   r   r5   r   r$   r!  r:   warningscatch_warningssimplefilterr7   rF   rG   )r'   rH   r+   r+   r,   test_nanpolicy  s&    

"(
&zTestIQR.test_nanpolicyc             C   s  t jdjd}ttj|ddd ttj|ddd ttj|d	dd
 t j|d< tj	dd tj
d ttj|dddt j ttj|dddt j ttj|d	ddt j ttj|dddddt jdg ttj|ddddt jdt jdgd  ttj|dd	dddt jdg W d Q R X ttj|dddd ttj|dddd ttj|d	ddd tttj|dd d S )Ng      .@r   r   g      ?)r  r   r  gF7k?g       @g      @r   r   T)r8   r=  r   )r  rB   )r1   r  rB   rA   g      @g      @rD   )r   r   g=V^w@)r   r   g	I1=@)r6   r   r5   r   r$   r!  r   r:   r>  r?  r@  r   rF   rG   )r'   rH   r+   r+   r,   
test_scale  s,    

zTestIQR.test_scaleN)rQ   rR   rS   rx   r%  r  r)  r+  r,  r  r9  r;  r<  rA  rB  r+   r+   r+   r,   r     s   )r   c               @   s   e Zd ZdZddddgZdZejjd ejj	dZ
d	d
ddd%g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d Zd d! Zd"d# Zd$S )&TestMomentsa  
        Comparison numbers are found using R v.1.5.1
        note that length(testcase) = 4
        testmathworks comes from documentation for the
        Statistics Toolbox for Matlab and can be found at both
        https://www.mathworks.com/help/stats/kurtosis.html
        https://www.mathworks.com/help/stats/skewness.html
        Note that both test cases came from here.
    r   r   r   r   g      @i  r?  gp=
ף?g?߾?gD9?gQI?g}?5^I?c             C   s  t j| j}t|d t j| jd}t|d t j| jd}t|dd t j| jd}t|d t j| jd}t|d t j| jd	}t|d
 t j| jdddd	g}t|dddd
g t j| jd}t|d ttt j| jd t j| jddddg}t|dddd
g t jg }t|t	j
 t	jd}t	j
|d< tt j|dt	j
 tt j|ddd ttt j|dd ttt j|dd d S )Ng        r   g      ?r   r?   r   g      ?r   r   g     @g333333?g      @g      $@r   rA   )rB   rC   rD   )r$   momentr  r   r  r	   rF   rG   r   r6   r:   r   r   )r'   r(   rH   r+   r+   r,   test_moment  s6    








zTestMoments.test_momentc             C   sP   t jdjdd
jt}t j|d< tj|dddd}t jj	|dt jgdd	 d S )Nr   r   r   r   r   )r1   rB   g      ?gV瞯<)rq   rM   )r   r   )
r6   r   r5   r   r   r:   r$   rD  r   r	   )r'   rs   mmr+   r+   r,   test_moment_propagate_nan	  s    
z%TestMoments.test_moment_propagate_nanc             C   s   t j| j}t|d t j| j}t|dd tjd}tj|d< tt j|tj t	t j|ddd t
tt j|d	d t
tt j|d
d d S )Ng        g%?r?   g      $@r   rA   )rB   g4?rC   rD   )r$   	variationr  r   r  r6   r   r:   r   r   rF   rG   )r'   r(   rH   r+   r+   r,   test_variation	  s    


zTestMoments.test_variationc             C   sN   t jdjdd
jt}t j|d< tj|ddd}t jj	|dt jgdd	 d S )Nr   r   r   r   r   )r1   rB   g5Fu?gV瞯<)rq   rM   )r   r   )
r6   r   r5   r   r   r:   r$   rH  r   r	   )r'   rs   vvr+   r+   r,   test_variation_propagate_nan	  s    
z(TestMoments.test_variation_propagate_nanc             C   s   t j| j}t|d t j| j}t|dd t j| jdd}t|dd t j| j}t|dd tjd}tj|d< tj	d	d
 t
t j|tj W d Q R X t
t j|ddd ttt j|dd ttt j|dd d S )Ng        g7l*?r?   r   )biasg2۠?g      $@r   r  )r  rA   )rB   rC   rD   g7l*ҿg2۠ۿ)r$   skewr  r   testmathworksr  r6   r   r:   r  r   rF   rG   )r'   r(   rH   r+   r+   r,   test_skewness'	  s    


zTestMoments.test_skewnessc             C   s   t tjtdd d S )Nr?   g        )r   r$   rM  r   )r'   r+   r+   r,   test_skewness_scalar<	  s    z TestMoments.test_skewness_scalarc             C   sf   t jdjddjt}t j|d< t jdd tj|ddd}W d Q R X t j	j
|dt jgd	d
 d S )Nr   r   r   r   r  )r  r   )r1   rB   gV瞯<)rq   rM   )r   r   )r6   r   r5   r   r   r:   r  r$   rM  r   r	   )r'   rs   rB  r+   r+   r,   test_skew_propagate_nan@	  s
    
z#TestMoments.test_skew_propagate_nanc             C   s   t j| j}t|d t j| jdddd}t|dd t j| jddd}t|dd t j| jdd}t|d tjd	}tj|d
< t	t j|tj t
t j|ddd ttt j|dd ttt j|dd d S )Ng      @r   r   )fisherrL  gO߻S@r?   gx|N@g=
ףp=?g      $@r   rA   )rB   gGz?rC   rD   g      gGz)r$   kurtosisr  r   rN  r  r6   r   r:   r   r   rF   rG   )r'   r(   rH   r+   r+   r,   test_kurtosisI	  s    



zTestMoments.test_kurtosisc             C   s   t ttjdddgt d S )Nr   r   r   )r   typer$   rS  r   )r'   r+   r+   r,   test_kurtosis_array_scalard	  s    z&TestMoments.test_kurtosis_array_scalarc             C   sN   t jdjdd
jt}t j|d< tj|ddd}t jj	|dt jgdd	 d S )Nr   r   r   r   r   )r1   rB   g(\?gV瞯<)rq   rM   )r   r   g(\)
r6   r   r5   r   r   r:   r$   rS  r   r	   )r'   rs   kr+   r+   r,   test_kurtosis_propagate_nang	  s    
z'TestMoments.test_kurtosis_propagate_nanc             C   s6   | j tj| j  }ttj|dj tj| j d d S )Nr?  )testcase_moment_accuracyr6   r  r	   r   r$   rD  )r'   Z
tc_no_meanr+   r+   r,   test_moment_accuracyo	  s    z TestMoments.test_moment_accuracyNg}?5^I)rQ   rR   rS   r   r  r  r6   r   r   r   rY  rN  rE  rG  rI  rK  rO  rP  rQ  rT  rV  rX  rZ  r+   r+   r+   r,   rC    s"   	%	rC  c               @   sT   e Zd ZejdddgZejdddgZdZdZdZ	dZ
dZdZdZdZdd	 Zd
S )TestStudentTestr   r   r   g {?g?g {@gB4t?c             C   s  t  :}tjdd" |jtd tjdd\}}W d Q R X W d Q R X ttj| ttj| tj| j	d\}}t
|| j t
|| j tj| j	d}d}t|| tj| jd\}}t
|| j t
|| j tj| j	d	\}}t
|| j t
|| j tj| j	d
\}}t
|| j t
|| j tjjd tjjdddd}tj|d< tjdd^ ttj|dtjtjf t
tj|dddd tttj|ddd tttj|ddd W d Q R X d S )Nr  )r  z!Degrees of freedom <= 0 for sliceg      @g      @r   	statisticr   r   r   it r   r?   3   )r  r  rO   r`  g      @rA   )rB   g̈́^B?/kCm?rC   rD   )r\  r   ̈́^B)r_  r^  )r   r6   r  r  r9   r$   ttest_1sampr   r   X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2r   r   normrvsr:   r   rF   rG   )r'   r;   try   r   r   rH   r+   r+   r,   test_onesample	  s<    $

zTestStudentTest.test_onesampleNrM   g {g {)rQ   rR   rS   r6   r   ra  rd  rb  rc  rg  rh  ri  rj  re  rf  rn  r+   r+   r+   r,   r[  x	  s   r[  c              C   s  t j} t| ddddddddd	d
g
dd x.d-D ]&\}}t| tjd
d d|d| q0W x8d2D ]0\}}t| dddddddddd	g
d|d| q`W t| ddddddddddg
dd x:d7D ]2\}}t| ddddddddddg
d|d|  qW x6d8D ].}t| dddddddd	d
dg
d|dd  qW x:d<D ]2\}}t| d
dddddddddg
d|d| q2W x:d@D ]2\}}t| d
dddddddddg
d|d| qnW x6dAD ].}t| d
ddddddddd g
d|dd qW x:dFD ]2\}}t| d
ddddddddd g
d
|d| qW x:dKD ]2\}}t| d
ddddddddd g
d |d| qW x<dOD ]4\}}}t| d
ddddddddd g
||d| qZW tt| dddddgdd)d d S )PNr   r   r   r   r   r   r   r   r   r?         D@r       A@strict      >@weak)kindrK       F@      I@      N@r   ra  r   rb  r`  r8  F   r:  r"  r   n         $@      @              Y@     W@     V@r   r   Zunrecognizedr  rp  rq  rr  rs  ro  )r  r  r  rK  ru  rq  rr  rs  rv  r  ro  )r  r  r  r  rK  rv  r  ru  rq  rr  rs  rw  )r  r  r  r  )rK  r  rq  rs  r  rp  rq  rr  rs  ro  )r  r  r  r  ru  rq  rr  rs  rw  )r  r  r  )rK  r  rq  rs  rK  rz  r  r{  rq  r|  rs  rz  )r  r  r  r  rK  r}  r  r~  rq  r  rs  r}  )r  r  r  r  rK  r   r}  r  r   r}  r  r   r|  )r  r  r  )r$   Zpercentileofscorer   r6   r   rF   rG   )Zpcosrt  r  r  r+   r+   r,   test_percentileofscore	  sp    $ "  ,$  .
.  
     r  ZCasef_obsf_expr.   r1   chi2logmod_logcrr-  )r  r  r.   r1   r  r  r  r  r      c               @   sD   e Z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 )TestPowerDivergencec             C   s   t j|}|d kr|j}nt j||}|j| }t d}	|	jtd tj	|||||d\}
}t
|
| |dksv|dkrtj||||d\}
}t
|
| W d Q R X t j|}tjjj||d | }t
|| d S )NzMean of empty slice)r  r  r.   r1   lambda_r   pearson)r  r  r.   r1   )r6   r   rO   	broadcastr   r   r  r9   r$   power_divergencer	   	chisquaredistributionsr  sf)r'   r  r  r.   r1   r  expected_statZnum_obsrw   r;   statry   Z
expected_pr+   r+   r,   check_power_divergence?
  s&    





z*TestPowerDivergence.check_power_divergencec             C   s   xt D ]}| j|j|j|j|jd |j | j|j|j|j|jd|j | j|j|j|j|jd|j | j|j|j|j|jd|j | j|j|j|j|jd|j | j|j|j|j|jd|j	 | j|j|j|j|jd|j	 qW d S )	Nr  r   zlog-likelihoodzmod-log-likelihoodzcressie-readr   r   gUUUUUU?)
power_div_1d_casesr  r  r  r.   r1   r  r  r  r  )r'   caser+   r+   r,   rx   Z
  s,    






zTestPowerDivergence.test_basicc             C   s   xt D ]}tjj|j}| j||j|j|jd |j	 | j||j|j|jd|j	 | j||j|j|jd|j	 | j||j|j|jd|j
 | j||j|j|jd|j | j||j|j|jd|j | j||j|j|jd|j qW d S )	Nr  r   zlog-likelihoodzmod-log-likelihoodzcressie-readr   r   gUUUUUU?)r  r6   r9  r   r  r  r  r.   r1   r  r  r  r  )r'   r  mobsr+   r+   r,   test_basic_maskedr
  s.    






z%TestPowerDivergence.test_basic_maskedc             C   s   t d }t d }tj|j|jf}tjtj|jtj|j |jf}| j||ddd|j|jg | j||ddd|j	|j	g | j||ddd|j
|j
g | j||ddd|j|jg | jtj|jjddd dd d|j d S )Nr   r   r  zlog-likelihoodzmod-log-likelihoodzcressie-readr   )r  r6   ro  r  	ones_liker  r  r  r  r  r  r  r   r5   )r'   case0case1r  r  r+   r+   r,   r  
  s(    
zTestPowerDivergence.test_axisc             C   s   t d }t d }tj|j|jfj}tjtj|jtj|j |jfj}|j|jg}tj	dgdgg}t
j|||d\}}t|| t
j|||d d\}	}
t
j|||d d\}}t|tj|
|f d S )Nr   r   )r.   )r   r   )r   r   )r  r6   ro  r  r   r  r  r  r  r   r$   r  r	   r   )r'   r  r  r  r  Zexpected_chi2r.   r  ry   Zstat0Zp0Zstat1p1r+   r+   r,   test_ddof_broadcasting
  s    
z*TestPowerDivergence.test_ddof_broadcastingc             C   s   t j  xtD ]|}| j|j|j|j|jd|j | j|j|j|j|jd|j	 | j|j|j|j|jd|j
 | j|j|j|j|jd|j qW W d Q R X d S )Nr  zlog-likelihoodzmod-log-likelihoodzcressie-read)r>  r?  power_div_empty_casesr  r  r  r.   r1   r  r  r  r  )r'   r  r+   r+   r,   test_empty_cases
  s    




z$TestPowerDivergence.test_empty_casesc             C   sN   t d j}t d j}t d j}t d j}tj||||dd}d}t|| d S )Nr   r  )r  r  r.   r1   r  r\  r   )r\  r   )r  r  r  r.   r1   r$   r  r   )r'   r  r  r.   r1   r   r   r+   r+   r,   'test_power_divergence_result_attributes
  s    





z;TestPowerDivergence.test_power_divergence_result_attributesN)
rQ   rR   rS   r  rx   r  r  r  r  r  r+   r+   r+   r,   r  =
  s   r  zn, dtyper   i@B c             C   sN   t j| dg|d}t j| d | d g|d}tj||\}}t|| dd d S )Nr   )r0   r   gvIh%<=)r   )r6   r   r$   r  r	   )r   r0   obsexpr  ry   r+   r+   r,   test_chiquare_data_types
  s    r  c               C   s  t jdddddgdd dddggj} t jdddddgdddddggj}t jj| |}t jd	d
g}t jdd!t jd
 dt jd   ddt jd dt jd   g}tjj}tj	|\}}t
j|| t
j||j||jddd  tj|dd\}}t
j||dd t
j||j||jddd  tj	|jdd\}}t
j|| t
j||j||jjddd  tj|jddd\}}t
j||dd t
j||j||jddd  t jjdddddgdddddgd}	t jjdddddgdddddgd}
tj	|	|
d\}}t
j|d& tj	t jjdddgd d\}}tt|t j tt|t j t|d t|tjjjdd t jdd: t (}|jtd tj	t jjg \}}W d Q R X W d Q R X tt|t jj t|jf  t|j t jjg g g g}tj	|\}}tt|t jj t
j|g  t jdd4 t "}|jtd tj	|j\}}W d Q R X W d Q R X tt|t jj t|jd' tt j|j d S )(Nr   r       r   r   r   r   r   g      8@g      ?r   g       @g      ?g      ?)r1   zlog-likelihood)r  r   )r2   )r1   r  r   r  r?   )mask)r  g      ?r  )r  zMean of empty slicerM   rM   rM   r   g      ?g      ?g      ?g      ?g      ?)r   )r6   r   r   r9  Zmasked_arrayr  r$   r  r  r  matr   r   r  r  r  r   r  r   r   r   r  r   r  r9   ZMaskedArrayr   r  r   )r  r  r  Zexpected_chisqZ
expected_gr  Zchisqry   gZobs1Zexp1r;   Zempty3r+   r+   r,   test_chisquare_masked_arrays
  sd    $$"$$$ 
*
$r  c           %   C   s   t jddddddddd	d
ddddddddddddddddddddddddddg$jd>d } t jd?d"d@d$dAd&dBd(dCd*dDd,dEd.d/d0d-d1d2d3d+d4d)d5d'd6d%d7d#d8d!d9g jdFd }xJ|D ]B\}}tj| d d d:f | d d df |d;\}}t||d<d= qW d S )GNr   gd;OW.@r   gCl+@r|  gx)@   g'@r   gNbX9%@gR!#@r?   g~Z"@r   gea @r   g?5^I@g%䃞@r   gn4@B@r   gڊ%@gh|?5@r   gꕲql@r   gc]K@r   ggDioE@g48@g37@r   g      $@g    @g      @g     r@g      @gffffffP@g       @gLD@g      ?g      A@g      ?g     =@g      ?g     :@g        g8@gffffff7@gq=
ףp?g7@g333336@g6@gfffff6@g8@g     A@g     j@r   )r  g{Gzt?)r   rM   g      $g      g      g       g      g      g      rM   )r6   r   r5   r$   r  r	   )Ztable4Ztable5r  r  r  ry   r+   r+   r,   /test_power_divergence_against_cressie_read_data1  sT    

 r  c              C   sV  t ddddddddd	d
ddddgt dddddddddd
ddddgt ddddddd d!d"d
d#d$d%d&gt d'd(d)d*d+dd,d-d.d
dd/d0d1gg} t d2d3d4d3d4d3d5d4d2d2d2d3gt d5d5d6d5d3d6d5d3d5d6d6d3gt d5d2d3d3d2d3d3d2d2d6d5d6gt d3d4d2d3d2d2d3d3d3d2d2d2gg}t d7d8d9d:d;gt d<d=d>d?d@gt dAdBdCdDdEgt dFdGdHdIdJgg}ttj| dK | d6 | d5 | d3 dT ttj|dK |d6 |d5 |d3 dU ttj|dK |d6 |d5 |d3 dV tttj|dK |d6  dW}tj|  }t|| ttj| dK | d6 | d5 | d3 dX ttj|dK |d6 |d5 |d3 dY tttj|dK |d6  d S )ZNg"~j?g^I+?gI+?gjt?gMbX9?gʡE?gx&?g-?g?g      ?gGz?g+?gv?g9v?g~jt?gx?gOn?g"~j?gn?gK7A`?g7A`?gbX9?gZd;O?g1Zd?gK?gy&1?gzG?g`"?g!rh?g'1Z?gZd;O?grh|?gjt?gʡE?gzG?gS?gJ4?gʡE?gK7?gh|?5?gl?g/$?g#~j?gQ?g      ?g      ?g rh?g333333?g
ףp=
?r   r   r   r   r   g      @g#@g      !@gffffff@g$@g333333@g@g@g      @g@g@gffffff@g      @gffffff@g @g!@g!@g333333 @gffffff
@g333333"@r   Nt$@砥Bv?
__2@5"]i2?\(\%@篢+ԋ?r\  r   )r  r  )r  r  )r  r  )r\  r   )r  r  )r  r  )r   r   r$   ZfriedmanchisquarerF   rG   r   mstats)r   r   r   r   r   r+   r+   r,   test_friedmanchisquareg  sB    "   

r  c               @   s4   e Zd ZdZdddZdddZdd	 Zd
d ZdS )
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.autor|  c       	      C   s8   t j|d||d}tj||g}ttj|||d d S )Nrk  )r   r  )r2   )r$   kstestr6   r   r   )	r'   rH   r   expected_statisticexpected_probr  r2   r  r   r+   r+   r,   _testOne  s    zTestKSTest._testOnec             C   s@   t j|d||d}t j|t jj||d}ttj|||d d S )Nrk  )r   r  )r2   )r$   r  ks_1samprk  cdfr   r6   r   )r'   rH   r   r  r2   r  Zresult_1sampr+   r+   r,   _test_kstest_and_ks1samp  s    z#TestKSTest._test_kstest_and_ks1sampc             C   s,   t jddd}d}tj|d}t|| d S )Nr   r   r\  r   rk  rM   )r\  r   )r6   rl  r$   r  r   )r'   rH   r   r   r+   r+   r,   test_namedtuple_attributes  s    z%TestKSTest.test_namedtuple_attributesc          
   C   s|   t jddd}| j|d t jddd}| j|d ddddd	dddddg
}| j|d | j|ddd | j|ddd d S )Nr   r   z	two-sidedr   gGz?gQ?g333333?g(\?gQ?g{Gz?gHzG?g\(\?gGz?r   r+  )r  r   rM   igGzg333333g(\ſg{Gzg\(\gGz)r6   rl  r  )r'   rH   r+   r+   r,   test_agree_with_ks_1samp  s    z#TestKSTest.test_agree_with_ks_1sampN)r  r|  )r  r|  )rQ   rR   rS   r   r  r  r  r  r+   r+   r+   r,   r    s
   

r  c               @   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 )TestKSOneSamplezOTests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.r  r|  c       	      C   s<   t j|t jj||d}tj||g}ttj|||d d S )N)r   r  )r2   )r$   r  rk  r  r6   r   r   )	r'   rH   r   r  r  r  r2   r  r   r+   r+   r,   r    s    zTestKSOneSample._testOnec             C   s0   t jddd}d}tj|tjj}t|| d S )Nr   r   r\  r   rM   )r\  r   )r6   rl  r$   r  rk  r  r   )r'   rH   r   r   r+   r+   r,   r    s    z*TestKSOneSample.test_namedtuple_attributesc          
   C   s   t jddd}| j|ddd t jddd}| j|ddd dd
ddddd dd!d"g
}| j|ddd | j|ddddd | j|ddddd d S )#Nr   r   z	two-sidedg|N?g7.s?r   g{CTp?g M<b*?gGz?gQ?g333333?g(\?gQ?g{Gz?gHzG?g\(\?gGz?gZL?g86J4?r   g+?r+  )r  r   gHD?gr?rM   igGzg333333g(\ſg{Gzg\(\gGz)r6   rl  r  )r'   rH   r+   r+   r,   test_agree_with_r  s    z!TestKSOneSample.test_agree_with_rc             C   sT   t jjd tjjddd}| j|ddddd	 | j|d
dd | j|ddd d S )Nih:g?r   )r  rO   z	two-sidedghх?g7?asymp)r  r   g^h?r   gv!ԉ}?g*z)?)r6   r   r   r$   rk  rl  r  )r'   rH   r+   r+   r,   test_known_examples  s
    z#TestKSOneSample.test_known_examplesc             C   s   t tjttjdd ttdd tddd W d Q R X t tjtd dd tjd!d"d#d%d'd)d*d+d-d/d0d2d4d6g}tt|d7dj	t
ttgd d S )8Nr   Tzn is not integral: 1.5)rE   g      ?r        ?皙?r           g?r  @   F      ?b?iNq>r   v(?r   T	?@  \(\?g      0@羸(>r|  @c?X+ʳP?r   r   )r  rM   )r  r   Tr  )r  r  Tr  )r  r   Tr  皙)r  r  Tr        ?)r  r  Tr        ?)r  r  Fr  )r  r  Tr  )r  r  Fr        ?)r  r  Tr        ?)r  r  Tr  )r  r  Fr        ?)r  r  Fr  Q?)r  r  Fr        ?)r  r  Fr  )r   r   r   )r   r6   r   r   r:   rF   rG   r   r   checkintr   bool)r'   Zdatasetr+   r+   r,   test_ks1samp_allpaths  s(    z%TestKSOneSample.test_ks1samp_allpathsN)r  r|  )	rQ   rR   rS   r   r  r  r  r  r  r+   r+   r+   r,   r    s   
r  c               @   s   e Zd ZdZ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ejjdd Zejj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#d$ Zd%d& Zd'S ))TestKSTwoSamplesz<Tests 2-samples with K-S various sizes, alternatives, modes.r  c       	      C   s4   t j||||d}tj||g}ttj|| d S )N)r  )r$   ks_2sampr6   r   r   )	r'   r   r   r   r  r  r  r  r   r+   r+   r,   r    s    zTestKSTwoSamples._testOnec             C   s   | j dgdgdd	d | j dgdgdd
d | j dgdgddd | j dgdgddd | j dgdgddd | j dgdgddd d S )Nr   r   z	two-sidedg      ?r   g      ?r   g        g      ?g      ?g        g      ?g        g      ?)r  )r'   r+   r+   r,   	testSmall  s    zTestKSTwoSamples.testSmallc             C   s   t jddg}|d }|d }t jdddg}| j||ddd | j||ddd | j||d	dd | j||ddd
 | j||ddd | j||d	dd d S )Ng      ?g       @g{Gz?g      @z	two-sidedr   r   gffffff?r   g333333?g333333?r   gUUUUUU?gUUUUUU?gUUUUUU?gUUUUUU?gUUUUUU?)r6   r   r  )r'   r  data1pdata1mr  r+   r+   r,   testTwoVsThree  s    zTestKSTwoSamples.testTwoVsThreec             C   s   t jddg}|d }|d }t jddddg}| j||ddd | j||d
dd | j||ddd | j||ddd | j||d
dd | j||ddd d S )Ng      ?g       @g{Gz?g      @g      @z	two-sidedr   g      ,@r   r   g       @r   g      (@g      @r   g      ?g?g      ?g?g      ?g?g      ?g?g      ?g?)r6   r   r  )r'   r  r  r  r  r+   r+   r,   testTwoVsFour  s    zTestKSTwoSamples.testTwoVsFourc             C   s   t jddd}|d d }|d d }| j||ddd | j||ddd	 | j||d
dd | j||ddd | j||ddd | j||d
dd d S )Nr   r   r   g?z	two-sidedg      @g~z?r   gz;.B?r   r   g      ?g       @gn2IU?gQ?gQ?g{Gz?g{Gz?)r6   rl  r  )r'   x100Z	x100_2_p1Z	x100_2_m1r+   r+   r,   test100_100,  s    zTestKSTwoSamples.test100_100c             C   s   t jddd}t jddd}|d d }|d d }| j||ddd	 | j||d
dd | j||ddd | j||ddd | j||d
dd | j||ddd d S )Nr   r   ry  r   g?z	two-sidedg      m@iL  g@߿?r   g}n?r   r   g     l@g]O);?gѫ);?g        g      ?g?g?g:[?g:[?)r6   rl  r  )r'   r  Zx110Z
x110_20_p1Z
x110_20_m1r+   r+   r,   test100_1107  s    zTestKSTwoSamples.test100_110c             C   s  t jdgd dgd  dgd  dgd  td}|d }t jdgd dgd  dgd  dgd  td}t jdgd dgd  dgd  d	gd  td}| j||d
dd | j||ddd | j||ddd | j||d
dd | j||dd d | j||dd"d d S )#Nr   r   r   r   r   )r0   r   r?   r   z	two-sidedg      @r   g^dH?r   gQl6y?r   g        g      ?g     g@r      g(f^?g!?g     Q@g+ ϖ?g      ?g      ?g        gaa"@gVdEVdE?gaa"@gVdEVdE?g
@gii?)r6   r   r  r  )r'   Zx2233Zx3344Zx2356Zx3467r+   r+   r,   testRepeatedValuesD  s    222z#TestKSTwoSamples.testRepeatedValuesc             C   s   t jdddg}| j||d ddd | j||d ddd | j||d d	dd | j||d ddd | j||d ddd | j||d d	dd | j||d ddd | j||d ddd | j||d d	dd d S )Ng      ?g       @g      @r   z	two-sidedr   r   g      ?r   g        g      ?gUUUUUU?gUUUUUU?g        gUUUUUU?gUUUUUU?g        gUUUUUU?g        gUUUUUU?)r6   r   r  )r'   r  r+   r+   r,   testEqualSizesP  s    zTestKSTwoSamples.testEqualSizesc             C   s^  d\}}d| | d d }t jdd|| }t jdd|}| j||dd| | dd	d
 | j||dd| | ddd
 | j||dd| | ddd
 | j||dd| | ddd
 t N}|jtd | j||dd| | ddd
 | j||dd| | ddd
 W d Q R X tjdd:}tjd | j||dd| | ddd
 t	|td W d Q R X d S )N  X  g      ?r   r   r   z	two-sidedg     @@r  )r  r  r   g2JE?r   g     @@gsW\nc?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r+  T)r8   r=  )r  r  )
r6   rl  r  r   r  r9   r>  r?  r@  r  )r'   n1n2deltarH   r(   r;   rZ  r+   r+   r,   testMiddlingBoth\  s     (
z!TestKSTwoSamples.testMiddlingBothc             C   s^  d\}}d| | d d }t jdd|| }t jdd|}| j||dd| | dd	d
 | j||dd| | ddd
 | j||dd| | dd	d
 | j||dd| | dd	d
 t N}|jtd | j||dd| | ddd
 | j||dd| | ddd
 W d Q R X tjdd:}tjd | j||dd| | ddd
 t	|td W d Q R X d S )N  L  g      ?r   r   r   z	two-sidedg     ȹ@r  )r  r  r   gZ?r   g     @@g@J?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r+  T)r8   r=  )r	  r
  )
r6   rl  r  r   r  r9   r>  r?  r@  r  )r'   r  r  r  rH   r(   r;   rZ  r+   r+   r,   testMediumBothp  s     (
zTestKSTwoSamples.testMediumBothc             C   s   d\}}|d }d| | d d }t jdd|| }t jdd|}| j||d	d
| d | j||dd| d | j||dd
| d d S )N'  ry  g      &@g      ?r   r   r   r   z	two-sidedg    `@g      <r   g     @g򼉷?r   gimb:)r  ry  )r6   rl  r  )r'   r  r  lcmr  rH   r(   r+   r+   r,   	testLarge  s    zTestKSTwoSamples.testLargec             C   sz   t jjd t jjdd}t jjddd }t|d |d |d |d  | j||dd	d
dd | j||dd	d
dd d S )Ni@ i  )rO   i  g      ?r   r   z	two-sidedgC?g      <r  )r  r+  rM   rM   )r6   r   r   r  printr  )r'   rH   r(   r+   r+   r,   test_gh11184  s    zTestKSTwoSamples.test_gh11184c             C   s   t jjd t jjdd}t jjddd }t|d |d |d |d  | j||dd	d
dd | j||dd	ddd | j||dd	ddd | j||ddddd d S )Ni@ i'  )rO   i'  g      ?r   r   z	two-sidedg 	_r!?gAD5r  )r  g      <r+  r   gלN#y7r   gvqw?rM   rM   )r6   r   r   r  r  r  )r'   rH   r(   r+   r+   r,   test_gh11184_bigger  s    z$TestKSTwoSamples.test_gh11184_biggerc             C   s  d\}}|d }d| | d d }t jdd|| }t jdd|}| j||dd	| d
dd | j||dd	| ddd | j||dd	| d
dd | j||dd	| d | j||dd| d t F}|jtd | j||dd	| ddd | j||dd| ddd W d Q R X d S )N'  *  g      &@g      ?r   r   r   z	two-sidedg     @gkHY?r  )r  gLɔ.?r+  r  r   g.LbG2?r   g      $@gr?֎?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.)r  r  )r6   rl  r  r   r  r9   )r'   r  r  r  r  rH   r(   r;   r+   r+   r,   testLargeBoth  s    zTestKSTwoSamples.testLargeBothc             C   s$   d}t jddgdg}t|| d S )Nr\  r   r   r   r   )r\  r   )r$   r  r   )r'   r   r   r+   r+   r,   testNamedAttributes  s    z$TestKSTwoSamples.testNamedAttributesc             C   sT   ddl m}m} |dddd |dddd tt|dddd tt|dddd d S )	Nr   )_count_paths_outside_method_compute_prob_inside_methodr   i  i  iL  iK  i  )Zscipy.stats.statsr  r  rF   FloatingPointError)r'   r  r  r+   r+   r,   test_some_code_paths  s
    z%TestKSTwoSamples.test_some_code_pathsc             C   s8   t ttjg dg t ttjdgg  t ttjg g  d S )Nr   )rF   rG   r$   r  )r'   r+   r+   r,   test_argument_checking  s    z'TestKSTwoSamples.test_argument_checkingc             C   sd   t jjd d}tjj|ddd}|d }tj||ddd tj||d	dd tj||d
dd dS )zEnsure gh-12218 is fixed.iNa i    g        r   )rO   r  r  r   r  )r   r  r   z	two-sidedN)r6   r   r   r$   uniformrl  r  )r'   r  rvs1rvs2r+   r+   r,   test_gh12218  s    zTestKSTwoSamples.test_gh12218N)r  )rQ   rR   rS   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+   r,   r    s&   
	r  c           $   C   s  d#\} }| |  g||gf}t jddd}t jddd}t jt jdddt jdddg}t jt jdddt jdddg}tj||dd\}}t||g| |f tj|j|jdd\}}t||g| tj||dd\}}t||g| t :}	t jd	d
" |	j	t
d tjdd\}}W d Q R X W d Q R X tt j| tt j| d$}
tj||dd}t||
 t j|||g}t j|||g}tj||dd\}}tt j||  tt j|| t|jd% tjt j|dt j|ddd\}}tt j||  tt j|| t|jd& t jjd tjjdddd}t j|d< tjjddddtjjddd }t j|d< t jd	d
  ttj||t jt jf W d Q R X ttj||ddd' tttj||dd tttj||dd tjdddgdddg\}}tt j||ft jdf t jd	d
l ttjdddgdddgt jt jf t jdt jgd(dgg}ttj|t jd)dt jgdt jgf W d Q R X t jd }tttj|jd*|jd+ d S ),Nu?ȵI?r   r   g)\(?gKX@r   )r1   r  )r  z!Degrees of freedom <= 0 for sliceg      @g      @r\  r   r   r   iNa r   r?   i  )r  r  rO   i  g?)r  rO   rA   )rB   hm#1?ry̧?rC   rD   r  r   r   )r  r   )r\  r   )r   r   )r   r   )r!  r"  rM   )r   r   )r   r   )r   r   r   )r6   rl  r   r$   	ttest_relr   r   r   r  r  r9   r   r   r   r/  absr   r   r0  r   r   rk  rl  r:   r   rF   rG   r   r   r   r5   )trr  tprr  r  rvs1_2Drvs2_2Drm  ry   r;   r   r   rvs1_3Drvs2_3DrH   r(   ananr+   r+   r,   test_ttest_rel  sh    ""$
$

$& 
r,  c              C   s   t jdddg} ddddg}tj| |dd}tj|| dd}t|j|j dd t|j|jdd tj|d	d  | d	d  }t||dd t|ddd d S )Ng       @g      @g      @g      ?rA   )rB   gV瞯<)rq   r   r   rh|?g-C6?rQ  )rQ  r-  )r6   r:   r$   r#  r	   r\  r   )rH   r(   rE  rF  r3r+   r+   r,   test_ttest_rel_nan_2nd_arg%  s    r/  c              C   s4   t jg g } t| t j jstt| tjtjf d S )N)r$   r#  r  Ttest_relResultr   r   r6   r:   )r  r+   r+   r,   #test_ttest_rel_empty_1d_returns_nan:  s    r1  zb, expected_shapec             C   sX   t jd}tj|| dd}t|tjjs,tt j|t jd}t	|j
| t	|j| d S )Nr   r   r   )r1   )r  )r   r   r   rM   )r6   r  r$   r#  r  r0  r   r7   r:   r   r\  r   )rw   expected_shapers   r  expected_valuer+   r+   r,   test_ttest_rel_axis_size_zeroB  s    
r4  c              C   sV   t jd} t jd}tj| |dd}t|tjjs6tt|jj	d t|j
j	d	 d S )
Nr   r   r   r   )r1   )r   r   r   )r   r   r   )r   r   )r   r   )r6   r  r$   r#  r  r0  r   r   r\  r   r   )rs   rw   r  r+   r+   r,    test_ttest_rel_nonaxis_size_zeroQ  s    

r5  c             C   s   ddd}|| |||| S )Nr   c             S   s<   t j| } t j| |d}t j| |dd}| j| }|||fS )N)r1   r   )r1   r.   )r6   r   r  r=   r   )rH   r1   mur=   nobsr+   r+   r,   _stats_  s
    

z_desc_stats.<locals>._stats)r   r+   )r   r   r1   r8  r+   r+   r,   _desc_stats^  s    
r9  c           "   C   s  d} d}| |  g||gf}t jddd}t jddd}t j||g}t j||g}tj||dd\}}t||g| |f ttjt|| ||g tj|j|jdd\}}t||g| t|j|j}	ttj|	 ||g tj||dd\}}t||g| t||dd}	ttj|	 ||g t	 :}
t j
d	d
" |
jtd tjdd\}}W d Q R X W d Q R X tt j| tt j| t j|||g}t j|||g}tj||dd\}}tt j|t j|  tt j|| t|jd tjt j|dt j|ddd\}}tt j|t j|  tt j|| t|jd t jjd tjjdddd}t j|d< tjjdddd}t j
d	d
  ttj||t jt jf W d Q R X ttj||ddd tttj||dd tttj||dd tjdddgdddg\}}tt j||ft jdf t j
d	d
l ttjdddgdddgt jt jf t jdt jgddgg}ttj|t jddt jgdt jgf W d Q R X d S ) Ng	ru?g8Mѱ?r   r   r   r.  r   )r1   r  )r  z!Degrees of freedom <= 0 for sliceg      @g      @r   r   iNa r?   i  )r  r  rO   i  rA   )rB   uͷ?*,?rC   rD   )r   r   )r   r   )r:  r;  rM   )r   r   )r6   rl  r   r$   	ttest_indr   ttest_ind_from_statsr9  r   r   r  r  r9   r   r   r/  r   r$  r   r   r0  r   r   rk  rl  r:   r   rF   rG   r   r   )r%  r  r&  r  r  r'  r(  rm  ry   argsr;   r)  r*  rH   r(   r+  r+   r+   r,   test_ttest_indh  sl    





$$
$&r?  c              C   s  d} d}d}d }t j| |d	d
\}}t||g||g tt jt| |dd	i||g d!} d}d"}t j| |d	d
\}}t||g||g tt jt| |dd	i||g d}d}d}d}|| g||gf}tjddd}	tjddd}
tjddd}tj||
g}tj|
|g}t j||
dd	d\}}t||g||f tt jt||
dd	i||f t j||	dd	d\}}t||g||f tt jt||	dd	i||f t j|j|jdd	d\}}t||g| t|j|j}tt j|dd	i||f t j||dd	d\}}t||g| t||dd}tt j|dd	i||f d#}t j||
dd	d}t	|| tj
|||g}tj
|||g}t j||dd	d\}}ttj|tj| ttj|| t|jd$ t||dd}t j|dd	i\}}ttj|tj| ttj|| t|jd% t jtj|dtj|ddd	d\}}ttj|tj| ttj|| t|jd& ttj|dtj|ddd}t j|dd	i\}}ttj|tj| ttj|| t|jd' t jdddgdddgd	d
\}}ttj||ftjdf tjddt tt jdddgdddgd	d
tjtjf tjdtjgd(dgg}tt j|tjd)d	d
dtjgdtjgf W d Q R X d S )*Nr   r   r   皙?333333@@g9(?ge?F)	equal_varrC  r   gJ?g*?g	ru?g@[?gωұ?ghG?r   r   r   r.  r   )r1   rC  )r1   r\  r   r  )r   )r   r   r   )r@  rA  rB  ge)r   r   r   r   g*ʿ)r\  r   )r   r   )r   r   )r   r   )r   r   rM   )r   r   )r$   r<  r   r=  r9  r6   rl  r   r   r   r/  r   r$  r   r   r0  r   r  r:   r   )rs   rw   r  r%  rm  ry   Z	tr_uneq_nZ	pr_uneq_nr&  Zrvs3r  r  r'  r(  r>  r   r   r)  r*  r+  r+   r+   r,   test_ttest_ind_with_uneq_var  s    










 rD  c              C   s   t jdddg} ddddg}tj| |dd}tj|| dd}t|j|j dd t|j|jdd tj|| d	d  }t||dd t|ddd d S )Ng       @g      @g      @g      ?rA   )rB   gV瞯<)rq   r   g8H@W@?8H)rF  rE  )r6   r:   r$   r<  r	   r\  r   )rH   r(   rE  rF  r.  r+   r+   r,   test_ttest_ind_nan_2nd_arg  s    rG  c              C   s4   t jg g } t| t j jstt| tjtjf d S )N)r$   r<  r  Ttest_indResultr   r   r6   r:   )r  r+   r+   r,   #test_ttest_ind_empty_1d_returns_nan2  s    rI  c             C   sX   t jd}tj|| dd}t|tjjs,tt j|t jd}t	|j
| t	|j| d S )Nr   r   r   )r1   )r  )r   r   r   rM   )r6   r  r$   r<  r  rH  r   r7   r:   r   r\  r   )rw   r2  rs   r  r3  r+   r+   r,   test_ttest_ind_axis_size_zero:  s    
rJ  c              C   sV   t jd} t jd}tj| |dd}t|tjjs6tt|jj	d t|j
j	d	 d S )
Nr   r   r   r   )r1   )r   r   r   )r   r   r   )r   r   )r   r   )r6   r  r$   r<  r  rH  r   r   r\  r   r   )rs   rw   r  r+   r+   r,    test_ttest_ind_nonaxis_size_zeroI  s    

rK  c              C   sV   t jd} t jd}tj| |dd}t|tjjs6tt|jj	d	 t|j
j	d
 d S )Nr   r   r   r   r   )r1   )r   r   r   )r   r   r   )r   r   )r   r   )r6   r  r$   r<  r  rH  r   r   r\  r   r   )rs   rw   r  r+   r+   r,   2test_ttest_ind_nonaxis_size_zero_different_lengthsV  s    

rL  c              C   sr   t jddgt jddg } }t jddgt jddg }}t jddgt jdd	g }}tj| ||||| d S )
Nr   r   r   r   r         r      )r6   r   r$   r=  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2r+   r+   r,   test_gh5686d  s    rP  c              C   s  d\} }}t jjdd| ||fd}t j|d d d d d d f tj||fdd\}}t j|d d d d d d f ddd\}}t j|d d ddf d\}}	t||d	d
 t|d |d	d
 t|j	||f t j|d d d d d d f tj| |fdd\}}t j|d d d d d d f ddd\}}t j|dd d df d\}}	t||d	d
 t|d |d	d
 t|j	| |f t j|d d d d d d f tj| |fdd\}}t j|d d d d d d f ddd\}}t j|ddd d f d\}}	t||d	d
 t|d |d	d
 t|j	| |f t jdddgd\}
}ttj
|
|ftjdf tjdd` tt jdddgdtjtjf tjdtjgddgg}tt j|ddtjgdtjgf W d Q R X d S )Nr?   r   r   r   )r  r  rO   r   )r1   r   r|  )r2   r   r  )r   )r?   r   r   )r   r   )r   r   )r   r   rM   )r$   rk  rl  r`  r6   ru  r   r   r   r   r$  r   r  r:   r   )r  r  Zn3Zrvn1r  r  r  p2r  p3rm  ry   r+  r+   r+   r,   test_ttest_1samp_newl  s4    
4*4*4* rS  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestDescribec             C   s   t  @}tjdd( |jtd tjd\}}}}}}W d Q R X W d Q R X t|d t|d
 t|d ttj	| t
|ddd t
|ddd d S )Nr  )r  z!Degrees of freedom <= 0 for slice      @r   g        r   )r2   g      @)rU  rU  g      )r   r6   r  r  r9   r$   describer   r   r   r   )r'   r;   r   rF  r   rX  skkurtr+   r+   r,   test_describe_scalar  s    *


z!TestDescribe.test_describe_scalarc             C   s  t jt jdt jddf}dddddgddddgf }}t jddddg}t jddddg}d	gd }dgd }tj|\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd tj|j	dd\}}	}
}}}t|| t|	| t|
| t|| t||dd t||dd t j
d}t j|d< d\}}d}d}d}d}tj|dd\}}	}
}}}t|| t|	| t|
| t|| t|| t||dd tttj|dd tttj|dd d S ) Nr   r   r   r   g      ?g       @gffffff?g333333?gH,p ?gTUUUUU?r   )r2   r   )r1   g      $@r                  @g      @g      @gGz?rA   )rB   rC   rD   )r   r   )r   r   gTUUUUUrZ  r[  )r   r\  gGz)r6   ro  ru  r7   r   r$   rV  r   r   r   r   r:   rF   rG   )r'   rH   ncmmcmcvcskckurtcr   rF  r   rX  rW  rX  r+   r+   r,   test_describe_numbers  sH    
















z"TestDescribe.test_describe_numbersc             C   s"   t jtjd}d}t|| d S )	Nr   r7  minmaxr  varianceskewnessrS  )r7  rd  r  re  rf  rS  )r$   rV  r6   r   r   )r'   r   r   r+   r+   r,   test_describe_result_attributes  s     z,TestDescribe.test_describe_result_attributesc             C   s   t jt jdt jddf}dddddgddddgf }}t jddddg}t jddddg}d	gd }dgd }tj|dd\}}	}
}}}t|| t|	|dd t|
|dd t||dd t	||dd t	||dd d S )Nr   r   r   r   g      ?g       @gffffff?gQ?gH,p ?gTUUUUU?r   )r.   gV瞯<)r   r   )r2   )r   r   )r   r   gTUUUUU)
r6   ro  ru  r7   r   r$   rV  r   r	   r   )r'   rH   r]  r^  r_  r`  ra  rb  r   rF  r   rX  rW  rX  r+   r+   r,   test_describe_ddof  s    


zTestDescribe.test_describe_ddofc       	      C   s   t jt jdt jddf}d\}}d}d}d	}d}tj|d d}t|j| t|j	| t|j
| t|j| t|j|dd t|j|dd d S )Nr   r   r   r         ?       @gffffff?ga+?gE,p ?gUUUUUU?)r1   r   )r2   )r   r   )r   r   ri  rj  )r   rk  gUUUUUU)r6   ro  ru  r7   r$   rV  r   r7  r   rd  r  re  r   rf  rS  )	r'   rH   Ze_nobsZe_minmaxZe_meanZe_varZe_skewZe_kurtrs   r+   r+   r,   test_describe_axis_none  s    z$TestDescribe.test_describe_axis_nonec             C   s   t ttjg  d S )N)rF   rG   r$   rV  )r'   r+   r+   r,   test_describe_empty  s    z TestDescribe.test_describe_emptyN)	rQ   rR   rS   rY  rc  rg  rh  rl  rm  r+   r+   r+   r,   rT    s   )rT  c        
   &   C   s  t ttjd t ttjd t ttjd d,\} }}d-\}}}tjd0d d }d1}ttj|| |f t	tj|| ttj|||f t	tj|| ttj|||f t	tj|| ttj|d d| |f ttj|d d||f ttj|d d||f tj
d}tj|d< tjdd ttj|tjtjf W d Q R X d2}ttj|dd| tjdd t ttj|dd W d Q R X t ttj|dd tj
d}tj|d< tjdd ttj|tjtjf W d Q R X d4}ttj|dd| t ttj|dd t ttj|dd tjdd ttj|tjtjf W d Q R X d5}ttj|dd| t ttj|dd t ttj|dd d!d
d"d#d
d$d%d
d
d&g
}	tjd'd( t|	D }ttj|d	 d)k d* d S )6Ng      @Mc@O?g{\᛿?2$?גe`?ǃK@?r   r   r   r   r   r\  r   )r1   g      $@r   r  )r  eGK?Z^<ý?rA   )rB   )r   rC   rD   g      >@   g9+%@?*ݗ?wGw@{8NĦ?   :   r   )   r      c             S   s   g | ]\}}t j||qS r+   )r6   r7   )r  rC  cr+   r+   r,   r  3  s    z'test_normalitytests.<locals>.<listcomp>g{Gz?T{\᛿)rn  ro  r~  )rp  rq  rr  rQ  rM   )rQ  rM   r   r   r   r   )r\  r   )rs  rt  9+%)r  rv  )rw  rx  )rF   rG   r$   skewtestkurtosistestZ
normaltestr6   r   r   r   r   r:   r  r   rr  	enumerater   )
Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtrH   r   r   rc  r+   r+   r,   test_normalitytests  s\    






"

""r  c               @   s   e Zd Zdd ZdS )TestRankSumsc             C   s*   t jtjdtjd}d}t|| d S )Nr   r   r\  r   )r\  r   )r$   Zranksumsr6   r   r   )r'   r   r   r+   r+   r,   test_ranksums_result_attributes8  s    z,TestRankSums.test_ranksums_result_attributesN)rQ   rR   rS   r  r+   r+   r+   r,   r  7  s   r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestJarqueBerac             C   s  t jjd t jjddd}t jjdd}t jjdd}ttj|d tj|j	 ttj|d tj|j
 ttj|d tj|j	 ttj|d tj|j
 ttj|d tj|j	 ttj|d tj|j
 ttj|d tj|d k ttj|j
tj|j
k ttj|d tj|d k ttj|j
tj|j
k ttj|d tj|d k ttj|j
tj|j
k d S )Nih:r   r   i i'  )r6   r   r   r  r  Zrayleighr   r$   jarque_berar\  r   r   )r'   rH   r(   r  r+   r+   r,   test_jarque_bera_stats?  s        z%TestJarqueBera.test_jarque_bera_statsc             C   s   t jjd t jjddd}tjt| }\}}tjt| }\}}tj|jdd }\}	}
t	||  ko|	  ko|j
  ko|j
  ko|j
kn   t	||  ko|
  ko|j  ko|j  ko|jkn   d S )Nih:r   r   i r   iP  )r6   r   r   r  r$   r  r  r  r5   r   r\  r   )r'   rH   Zjb_test1ZJB1r  Zjb_test2ZJB2rQ  Zjb_test3ZJB3rR  r+   r+   r,   test_jarque_bera_array_likeW  s    @z*TestJarqueBera.test_jarque_bera_array_likec             C   s   t ttjg  d S )N)rF   rG   r$   r  )r'   r+   r+   r,   test_jarque_bera_sizeb  s    z$TestJarqueBera.test_jarque_bera_sizeN)rQ   rR   rS   r  r  r  r+   r+   r+   r,   r  >  s   r  c              C   s   t jd} tttj|  d S )Ng      @)r6   r   rF   rG   r$   r  )rH   r+   r+   r,   test_skewtest_too_few_samplesf  s    
r  c              C   s   t jd} tttj|  d S )Ng      @)r6   r   rF   rG   r$   r  )rH   r+   r+   r,   !test_kurtosistest_too_few_samplesm  s    
r  c               @   s   e Zd Zddddddddd	d
ddddddddddddddddddddgZdd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2gZd3Zd4d5 Zd6d7 Zd8d9 Zd:d; Z	d<d= Z
d>d? Zd@dA ZdBdC ZdDS )ETestMannWhitneyUg	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@r|  c       	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d| jd d S )	Nr   )r   r   i  f   g=_A?)r!   glPz.?)r$   mannwhitneyur%   Yr   r   r   r!   )	r'   u1r  u2rQ  u3rR  u4p4r+   r+   r,   test_mannwhitneyu_one_sided  s    





z,TestMannWhitneyU.test_mannwhitneyu_one_sidedc             C   sb   t j| j| jdd\}}t j| j| jdd\}}t|| t|d t|d t|d| jd d S )Nz	two-sided)r   i  r  glPz.?)r!   )r$   r  r%   r  r   r   r!   )r'   r  r  r  rQ  r+   r+   r,   test_mannwhitneyu_two_sided  s    


z,TestMannWhitneyU.test_mannwhitneyu_two_sidedc             C   s   t  R}|jtd tj| j| j\}}tj| j| j\}}tj| j| jd d\}}W d Q R X t|| t|| t|d t|d t|d t|d| j	d d S )Nz.Calling `mannwhitneyu` without .*`alternative`)r   r  glPz.?)r!   )
r   r  r  r$   r  r%   r  r   r   r!   )r'   r;   r  r  r  rQ  r  rR  r+   r+   r,   test_mannwhitneyu_default  s    "




z*TestMannWhitneyU.test_mannwhitneyu_defaultc       	      C   s   t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t j| j| jddd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d	| jd d S )
NFr   )r   r   i  r  gii5?)r!   g22?)r$   r  r%   r  r   r   r   r!   )	r'   r  r  r  rQ  r  rR  r  r  r+   r+   r,   &test_mannwhitneyu_no_correct_one_sided  s"    





z7TestMannWhitneyU.test_mannwhitneyu_no_correct_one_sidedc             C   sf   t j| j| jddd\}}t j| j| jddd\}}t|| t|d t|d t|d| jd d S )NFz	two-sided)r   i  r  g22?)r!   )r$   r  r%   r  r   r   r!   )r'   r  r  r  rQ  r+   r+   r,   &test_mannwhitneyu_no_correct_two_sided  s    


z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc             C   s   t  X}|jtd tj| j| jd\}}tj| j| jd\}}tj| j| jdd d\}}W d Q R X t|| t|| t|d t|d t|d t|d| j	d d S )Nz.Calling `mannwhitneyu` without .*`alternative`F)r   r  g22?)r!   )
r   r  r  r$   r  r%   r  r   r   r!   )r'   r;   r  r  r  rQ  r  rR  r+   r+   r,   $test_mannwhitneyu_no_correct_default  s    




z5TestMannWhitneyU.test_mannwhitneyu_no_correct_defaultc             C   sX  t jddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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tjj||ddd
dd	 d S )Ng      ?g       @g      @r   )r        @ ?չ>r-  )r2   )r  r  )r6   r   r   r$   r  )r'   rH   r(   r+   r+   r,   test_mannwhitneyu_ones  sD      z'TestMannWhitneyU.test_mannwhitneyu_onesc             C   s&   d}t j| j| jdd}t|| d S )Nr\  r   r   )r   )r\  r   )r$   r  r%   r  r   )r'   r   r   r+   r+   r,   #test_mannwhitneyu_result_attributes
  s    z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)rQ   rR   rS   r%   r  r!   r  r  r  r  r  r  r  r  r+   r+   r+   r,   r  t  s,   
'r  c           "   C   s   dddddddddddddddddddddd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ddddddddddddddddddddddg"}t tj| |d d d! d$}tj| |}t|| d S )%Nr   r   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@g      @gffffff
@g	@g      @gffffff@g      @g333333@gffffff@g @g333333?g      ?g?g333333?g?g?gffffff?g333333?g      ?g?g?g/"?r   r   r   )r   r   )r   r$   Zpointbiserialrr   )rH   r(   r   r   r+   r+   r,   test_pointbiserial  s    :r  c              C   s  t jdddg} tj| }dddg}t|d | t jddddg}tj|}t jddddg}t|d | tj| |\}}t||d  t||d  tj| || \}}}t||d  t||d  t||d  t jd	} t jd
dddd
gdddddgg}ttj| d|  |dd td	d}	t jd	dddddg}
t j	|	|
}t jddddddg}t j	||
}tj|}t|d |dd d S )Nr   r   r   r   r   r   r   ra  r   g㪪@gI?g&>?g5@g㪪@gI?r   )r2   r   g_v	@g1%?g"u?gZӼ?g!u @gq&@rQ  g&>ڿgI)
r6   r   r$   Zobrientransformr	   r   r   r   r  repeat)r   r  r   r   r  rs   rw   r}  r  valuesrepsr  Ztransformed_valuesr+   r+   r,   test_obrientransform!  s8    






r  Hz>c             C   s.   t j| ||d}t|||d t|j| d S )N)r1   r0   )r   )r$   gmeanr	   r   r0   )
array_liker  r1   r0   r   rH   r+   r+   r,   check_equal_gmeanL  s    r  c             C   s.   t j| ||d}t|||d t|j| d S )N)r1   r0   )r   )r$   hmeanr	   r   r0   )r  r  r1   r0   r   rH   r+   r+   r,   check_equal_hmeanR  s    r  c               @   sl   e Z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d Zdd Zdd Zdd ZdS )TestHarMeanc          
   C   sD   ddddddddd	d
g
}d}t || ddddg}d}t || d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   g=b#A@r   r   r   r   g      @g      ?g      ?g      ?g      ?gUUUUUU?gUUUUUU?g      ?g @gQ?)r  )r'   rs   r  r+   r+   r,   test_1d_listY  s    
zTestHarMean.test_1d_listc             C   s0   t jddddddddd	d
g
}d}t|| d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   g=b#A@)r6   r   r  )r'   rs   r  r+   r+   r,   test_1d_arrayc  s    zTestHarMean.test_1d_arrayc             C   s&   t jddg}d}ttj|| d S )Nr   r   g        )r6   r   r   r$   r  )r'   rs   r  r+   r+   r,   test_1d_array_with_zeroi  s    z#TestHarMean.test_1d_array_with_zeroc             C   s"   t jdddg}tttj| d S )Nr   r   rM   )r6   r   rF   rG   r$   r  )r'   rs   r+   r+   r,   !test_1d_array_with_negative_valuen  s    z-TestHarMean.test_1d_array_with_negative_valuec             C   s4   ddddgddddgd	d
ddgg}d}t || d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  x   gmWUC@)r  )r'   rs   r  r+   r+   r,   test_2d_lists  s    "zTestHarMean.test_2d_listc             C   s:   ddddgddddgd	d
ddgg}d}t tj|| d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gmWUC@)r  r6   r   )r'   rs   r  r+   r+   r,   test_2d_arrayy  s    "zTestHarMean.test_2d_arrayc             C   sF   ddddgddddgd	d
ddgg}t jddddg}t||dd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gU|ϊ6@g4.=C@gJQ6LsJ@gE]P@r   )r1   )r6   r   r  )r'   rs   r  r+   r+   r,   test_2d_axis0  s    "zTestHarMean.test_2d_axis0c             C   sL   ddddgddddgd	d
ddgg}t jddddg}ttj|dd| d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gU|ϊ6@g        gJQ6LsJ@gE]P@)r1   )r6   r   r	   r$   r  )r'   rs   r  r+   r+   r,   test_2d_axis0_with_zero  s    "z#TestHarMean.test_2d_axis0_with_zeroc             C   sD   ddddgddddgd	d
ddgg}t jdddg}t||dd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g3333333@gO@gy@Y@r   )r1   )r6   r   r  )r'   rs   r  r+   r+   r,   test_2d_axis1  s    "zTestHarMean.test_2d_axis1c             C   sJ   ddddgddddgd	d
ddgg}t jdddg}ttj|dd| d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g        gO@gy@Y@r   )r1   )r6   r   r	   r$   r  )r'   rs   r  r+   r+   r,   test_2d_axis1_with_zero  s    "z#TestHarMean.test_2d_axis1_with_zeroc             C   sJ   ddddgddddgd	d
ddgg}t ddddgg}tt ||dd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gU|ϊ6@g4.=C@gJQ6LsJ@gE]P@r   )r1   )r   r  )r'   rs   r  r+   r+   r,   test_2d_matrix_axis0  s    "z TestHarMean.test_2d_matrix_axis0c             C   sJ   ddddgddddgd	d
ddgg}t dddggj}tt ||dd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g3333333@gO@gy@Y@r   )r1   )r   r   r  )r'   rs   r  r+   r+   r,   test_2d_matrix_axis1  s    "z TestHarMean.test_2d_matrix_axis1N)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r  X  s   
r  c               @   sd   e Z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d Zdd Zdd ZdS )TestGeoMeanc          
   C   sN   ddddddddd	d
g
}d}t || ddddg}tdd}t ||dd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   gsŤF@r   r   r   r   g      ?g      @g+=)r   r   r   r  g      ?)r  r   )r'   rs   r  r+   r+   r,   r    s    

zTestGeoMean.test_1d_listc             C   sZ   t jddddddddd	d
g
}d}t|| tddddgt}tdd}t||td d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   gsŤF@r   r   r   r   g      ?g      @)r0   r   r   r  g      ?)r6   r   r  r   r   )r'   rs   r  r+   r+   r,   r    s    

zTestGeoMean.test_1d_arrayc             C   s4   ddddgddddgd	d
ddgg}d}t || d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g/,$qJ@)r  )r'   rs   r  r+   r+   r,   r    s    "zTestGeoMean.test_2d_listc             C   s8   ddddgddddgd	d
ddgg}d}t t|| d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g/,$qJ@)r  r   )r'   rs   r  r+   r+   r,   r    s    "zTestGeoMean.test_2d_arrayc             C   s   ddddgddddgd	d
ddgg}t jddddg}t||dd tddddgddddgddddgg}tddddg}t||ddd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g4@A@g5H@g`8|wЭN@gm~&+R@r   )r1   r   r   r   r   g+=)r1   r   )r6   r   r  )r'   rs   r  r+   r+   r,   r    s    "&zTestGeoMean.test_2d_axis0c             C   s   ddddgddddgd	d
ddgg}t jdddg}t||dd tddddgddddgddddgg}tdd}t|||g}t||ddd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gD" 6"6@gcP@g
ҧZ@r   )r1   r   r   r   g      ?g      @g+=)r1   r   r   r   r  g      ?)r6   r   r  r   )r'   rs   r  rX  r+   r+   r,   r    s    "&
zTestGeoMean.test_2d_axis1c             C   s   ddddgddddgd	d
ddgg}t ddddgg}tt ||dd tddddgddddgddddgg}t ddddg}tt ||ddd tddddgddddgddddgg}t tj|dd}tt ||ddd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  g4@A@g5H@g`8|wЭN@gm~&+R@r   )r1   r   r   r   r   g+=)r1   r   )r   r  r   r$   r  )r'   rs   r  r+   r+   r,   r    s    "&&z TestGeoMean.test_2d_matrix_axis0c             C   s   ddddgddddgd	d
ddgg}t dddggj}tt ||dd tddddgddddgddddgg}tdd}t |g|g|gg}tt ||ddd d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   ry  r  gD" 6"6@gcP@g
ҧZ@r   )r1   r   r   r   g      ?g      @g+=)r1   r   r   r   r  g      ?)r   r   r  r   r   )r'   rs   r  rX  r+   r+   r,   r    s    "&
z TestGeoMean.test_2d_matrix_axis1c             C   s$   t dddg}d}t||dd d S )Ng}Ô%ITgZbtigu <7~gvIh%<=)r   )r   r  )r'   rs   r  r+   r+   r,   test_large_values  s    zTestGeoMean.test_large_valuesc          
   C   sB   ddddddddd	d
g
}d}t jdd t|| W d Q R X d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   g        r  )r   )r6   r  r  )r'   rs   r  r+   r+   r,   test_1d_list0  s    zTestGeoMean.test_1d_list0c             C   sH   t jddddddddd	d
g
}d}t jdd t|| W d Q R X d S )Nr?   r   ra  rb  r`  r8  rx  r:  r"  r   g        r  )r   )r6   r   r  r  )r'   rs   r  r+   r+   r,   test_1d_array0  s    zTestGeoMean.test_1d_array0N)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   

r  c               @   s   e Zd Zejd$d ZdZej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d Zdd Zdd Zdd Zdd Zd d! Zd"S )%TestGeometricStandardDeviationr   r   r   r   gv aZ@c             C   s   t j| j}t|| j d S )N)r$   gstdarray_1dr	   gstd_array_1d)r'   gstd_actualr+   r+   r,   r    s    z,TestGeometricStandardDeviation.test_1d_arrayc             C   s    t jt| j}t|| j d S )N)r$   r  r  r  r	   r  )r'   r  r+   r+   r,    test_1d_numeric_array_like_input  s    z?TestGeometricStandardDeviation.test_1d_numeric_array_like_inputc          	   C   s(   t jtdd tjd W d Q R X d S )NzInvalid array input)rE   z3This should fail as it can not be cast to an array.)r   r   rG   r$   r  )r'   r+   r+   r,   ,test_raises_value_error_non_array_like_input  s    zKTestGeometricStandardDeviation.test_raises_value_error_non_array_like_inputc             C   s4   t jtdd tjtj| jdg W d Q R X d S )NzNon positive value)rE   r   )r   r   rG   r$   r  r6   r   r  )r'   r+   r+   r,   "test_raises_value_error_zero_entry  s    zATestGeometricStandardDeviation.test_raises_value_error_zero_entryc             C   s4   t jtdd tjtj| jdg W d Q R X d S )NzNon positive value)rE   r   rM   )r   r   rG   r$   r  r6   r   r  )r'   r+   r+   r,   &test_raises_value_error_negative_entry  s    zETestGeometricStandardDeviation.test_raises_value_error_negative_entryc             C   s6   t jtdd tjtj| jtjg W d Q R X d S )NzInfinite value)rE   )	r   r   rG   r$   r  r6   r   r  r   )r'   r+   r+   r,   !test_raises_value_error_inf_entry   s    z@TestGeometricStandardDeviation.test_raises_value_error_inf_entryc             C   sF   t ddddgtjdddgg}tj|dd}t|tj dtjg d S )Nr   r   r   r   )r1   r   )r   r6   r:   r$   r  r	   )r'   rs   r  r+   r+   r,   test_propagates_nan_values$  s    z9TestGeometricStandardDeviation.test_propagates_nan_valuesc             C   s2   t jtdd tj| j| jjd W d Q R X d S )NzDegrees of freedom <= 0)rE   )r.   )r   r   rG   r$   r  r  rO   )r'   r+   r+   r,   )test_ddof_equal_to_number_of_observations)  s    zHTestGeometricStandardDeviation.test_ddof_equal_to_number_of_observationsc             C   s    t j| jd d}t|| j d S )N)r1   )r$   r  array_3dr	   r  )r'   r  r+   r+   r,   test_3d_array-  s    z,TestGeometricStandardDeviation.test_3d_arrayc             C   s"   t j| jdd}t|ddg d S )Nr   r   )r1   g~d@g<
?)r   r   )r$   r  r  r	   )r'   r  r+   r+   r,   test_3d_array_axis_type_tuple1  s    z<TestGeometricStandardDeviation.test_3d_array_axis_type_tuplec             C   sF   t j| jdd}tjddddgddd	d
gddddgg}t|| d S )Nr   )r1   gĶ?@gQӫ@g֌@gן7R@g%Ȁ@ge@gv6B5 @g _?gE ?gީ?gk̊Y?g%:?)r$   r  r  r6   r   r	   )r'   r  gstd_desiredr+   r+   r,   test_3d_array_axis_05  s    

z3TestGeometricStandardDeviation.test_3d_array_axis_0c             C   s<   t j| jdd}tjddddgddd	d
gg}t|| d S )Nr   )r1   gN@g85@g'ĥ?gwth?gHnaX?gG?gBu?gE?)r$   r  r  r6   r   r	   )r'   r  r  r+   r+   r,   test_3d_array_axis_1>  s
    
z3TestGeometricStandardDeviation.test_3d_array_axis_1c             C   s8   t j| jdd}tjdddgdddgg}t|| d S )	Nr   )r1   gt80?gі?g?gۘ]~?gmT6(?g	G?)r$   r  r  r6   r   r	   )r'   r  r  r+   r+   r,   test_3d_array_axis_2F  s
    z3TestGeometricStandardDeviation.test_3d_array_axis_2c             C   sb   t jj| jdk| j}tj|dd}tj| jdd}dddgdddgg}t|| t|j| d S )Nr   r   )r1   r   r   )	r6   r9  Zmasked_wherer  r$   r  r	   r   r  )r'   r9  r  r  r  r+   r+   r,   test_masked_3d_arrayN  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayNr   r  )rQ   rR   rS   r6   r   r  r  r5   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r    s"   	r  c              C   s   t jt jdddt jdddt jdddf} d}d	}d
d
dddddddddddddg}x4t| |D ]&\}}ttj||||dd| d qdW ttjdddddd| d d S )Ng?g?r   g?g?g333333?gffffff?i  i  g        gs  gG|G{g	ɺM>6g>
ztt+g#ӌRM/gF׸fz2gU8u5g8M8gФ)Ba?g%վ?g*+a5?gś?gڒJ|>r-  zfail forp=%f)r!   err_msgr`  r   gVݶ3;)r6   r:  rl  r   r   r$   
binom_test)ppr   rH   resultsry   r   r+   r+   r,   test_binomtestW  s     r  c                 s   ddgdddgddddgdddddgddddddgdd	d
dd
d	dgddddddddgdddddddddg	ddddddddddg
dddddddddddgg
} xBt ddD ]4  fddt  d D }t||  d  dd qW d S ) Ng      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g     ?g     @?g      p?g      ?g      ?g     @?g      `?g      ?g      ?g      ?g      ?r   r   c                s   g | ]}t j| d qS )g      ?)r$   r  )r  rX  )rW  r+   r,   r    s    z#test_binomtest2.<locals>.<listcomp>r?   )r2   )r  r   )r   r   r+   )rW  r,   test_binomtest2m  s     

r  c           [   C   s  dd t ddD } t| tjt| t tjddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^gZ}tjdd_d`dadbdcdddedfddgdhdidjdkdldmdnddodpdqdrdsdtdudvd dwdxdydzd{d|d}d~d)ddddddddd2ddddddddd;dddddddddDdddddddddMdddddddddVddddddddgZ}dd t ddD }dd t ddD }t||dd t||dd d S )Nc             S   s2   g | ]*}t d dD ]}tj||| d| qqS )r   r   g      ?)r  r$   r  )r  rX  rW  r+   r+   r,   r    s    z#test_binomtest3.<locals>.<listcomp>r   r   g      ?grq?g     ?glq?gx0f#?g%d)MO?g   	o?g6?g:X@?g      ?gsw?g    ?gR'jMV?gEf?gF5a?gAQU?g'W?gk?g      ?g
ņB?g  ?g$?g{dU'?gD:B?gwV?gR0Nf?gOq?g     @?g[k^?g T+?gO?gggh(?gP-@?gOQ?g}^?gV7_i?g      ?ge$?gр?g#>?g5z@?g:?gf?gzP?g  ?g     ?gg*),?g}A_?g}aA?gH]@_?g
y7s?gPG?g>)\R?gjc6?gK?go; ,?g!O0?g?g}e?g5?g?!A^?gN/#?g*?g    @?g?g?g3?g.1?gdT\1-?gt0W59?goQC?gX4J?g   ?g
?gf?C"?g\6I?g4b?g|$or?gWNS~?gT?gXnc?g   \?gY\?gp ^a?gX-K?g#c?g
3?g75Q?gMJ[?gP8R?gw	%?g     ?gS g?gv^?g*uCi?g  a?g]?gE9Q?g/?g     ?g	x&~?g#?g5B?g	A'9?gpZ?gWV$u?gqIb?g  @N?g1Y?g5?gO?gc-?gk?g )?glMV?g?$?gT*r?gCqRv?grx?gωZ?gExY?g<T ?gJ9Ͻd?g `Ԗt?gT?gEz?gQ?g7C<*?g<?g~ K?g8?g~ȍEt?g⿒?g<v?gHE:?g8Z$?gbº5?gvC?g`Yw?gA?$??gE=?g4?g3?g{G9?gp?gH ?gz6f?g¯F?g(+?g	$V?gq^ws?g!?gXNJ?gK?g4P?g<q?gdV;?gy?g$w?gU<vO?gMX?g	șz*?giqSp?gMM?g0V$)?g]
yi/Q?gl?gl?g3Ȇ?gѾ_c?c             S   s6   g | ].}t d dD ]}tj|d || d| qqS )r   r   r   g      ?)r  r$   r  )r  rX  rW  r+   r+   r,   r    s    c             S   s6   g | ].}t d dD ]}tj|d || d| qqS )r   r   r   g      ?)r  r$   r  )r  rX  rW  r+   r+   r,   r    s    r   )r2   )r  r   r6   ru  rU  r  r   r   )r   Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1r+   r+   r,   test_binomtest3  s    

r  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrimc             C   s   t jd}tt jtj|dt jd tt jtj|dt jd tt jtj|dddt jdd tt jtj|dddt jd	d ttj|dg  ttj|dddg  ttjg dg  ttjg dddg  ttjg dg  d S )Nr   g?r?   g?r   left)tailr   r   g      &@g      ?r   g      @gtE]t?gtE]t?gUUUUUU?)r6   r   r   sortr$   Ztrim1)r'   rs   r+   r+   r,   
test_trim1  s    
zTestTrim.test_trim1c          
   C   s(  t jd}tt jtj|dt jdd tt jtj|dt jddddd	d
dg tt jtjt jdjd	ddt jddjdd tt jtjt jdjdd	jdt jddddgddddgg t	t
tjt jdjdd	jd ttjg dg  ttjg dg  ttjg dg  d S )Nr   r   g      &@r   g?r   r   r   r   r   r  r   g      @r|  r   r   r   g?gtE]t?gUUUUUU?gUUUUUU?gtE]t?gUUUUUU?)r6   r   r   r  r$   Ztrimbothr   r5   r   rF   rG   )r'   rs   r+   r+   r,   test_trimboth  s    
   zTestTrim.test_trimbothc       
      C   s.  t jddddddddd	d
dg}t jd
dddddg}t jdjdd|d d f }t jdjdddd|d d f }ttj|d-t jddddg ttj|d.t jddddg t jddd
dg}t jdjdd|d d f }ttj|d/t jddddddg d	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tj|d0d' ttjddd
dddgd1d t jjd( t jj	d$d2d)}x<d4D ]4}tj|d5|d*}tjt j
||d6}	t||	 qW tj|d7d d*}tj|j d8}	t||	 tttj|d+ ttjg d,t j ttjg d+t j d S )9Nr   r   r   r   r   r   r?   r   r   r   r   r  F)orderg      @g      @g      !@g      -@g     4@g      $@g      &@g      (@g      *@g      "@g      ,@r   r-  r   r      r  r  r  r   r  r   r|  r   g      '@i  )rO   )r1   g333333?g        gUUUUUU?gUUUUUU?gUUUUUU?gUUUUUU?gUUUUUU?)r   r   r   r   rM   )r   r   r   r   rM   gUUUUUU?gUUUUUU?gUUUUUU?gUUUUUU?)r6   r   r   r5   r   r$   Z	trim_meanr   r   randintr0  r1  rF   rG   r:   )
r'   rs   idxr  r  Zidx4Za4r1   r   r   r+   r+   r,   test_trim_mean  s8     ""

zTestTrim.test_trim_meanN)rQ   rR   rS   r  r  r  r+   r+   r+   r,   r    s   r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSigmaClipc             C   s   t jt jdddt jdddf}d}tj|\}}}t|j |k t|j |k  t||j	 ||j
    t||j	 ||j
    t|j|j d S )Ng      #@g      %@   r   r   r   r   )r6   r:  rl  r$   	sigmaclipr   minmaxr   r  r=   rO   )r'   rs   factr}  lowuppr+   r+   r,   test_sigmaclip1$  s    "zTestSigmaClip.test_sigmaclip1c             C   s   t jt jdddt jdddf}d}tj|||\}}}t|j |k t|j |k  t||j	 ||j
    t||j	 ||j
    t|jd t|jd	 d S )
Ng      #@g      %@r  r   r   r   g      ?r   $   )r6   r:  rl  r$   r  r   r  r  r   r  r=   rO   )r'   rs   r  r}  r  r  r+   r+   r,   test_sigmaclip2.  s    "zTestSigmaClip.test_sigmaclip2c             C   s   t jt jdddt jdd	df}d}tj|||\}}}t|j |k t|j |k  t||j	 ||j
    t||j	 ||j
    t|t jddd d S )
Ng      #@g      %@r   r   r`  r   g?ii)r6   r:  rl  r$   r  r   r  r  r   r  r=   )r'   rs   r  r}  r  r  r+   r+   r,   test_sigmaclip39  s    zTestSigmaClip.test_sigmaclip3c             C   sF   t jt jdddt jdddf}d}tj|||}d}t|| d S )Ng      #@g      %@r   r   r`  r   g?clippedr  r  ii)r  r  r  )r6   r:  rl  r$   r  r   )r'   rs   r  r   r   r+   r+   r,    test_sigmaclip_result_attributesD  s    z.TestSigmaClip.test_sigmaclip_result_attributesc             C   s"   t jd}ttj|d | d S )Nr?   r   )r6   ru  r   r$   r  )r'   rH   r+   r+   r,   test_std_zeroL  s    
zTestSigmaClip.test_std_zeroN)rQ   rR   rS   r  r  r  r  r  r+   r+   r+   r,   r  #  s
   
r  c               @   s  e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Ze	j
jdejdddgejdddgejdffejdddgejdddgejejffgdd Ze	j
jdd)d*ddgdd Zdd Zdd Zdd Zdd Ze	j
jd f ddd!gfgd"d# Zd$d% Zd&d' Zd(S )+TestFOneWayc             C   s0   t jddgddg\}}t|d t|d d S )Nr   r   g        g      ?)r$   f_onewayr   )r'   r  ry   r+   r+   r,   test_trivialT  s    
zTestFOneWay.test_trivialc             C   s>   t jddgddg\}}t|d t|dtjd dd d S )	Nr   r   r   g       @r   g      ?g+=)r   )r$   r  r   r	   r6   rN   )r'   r  ry   r+   r+   r,   rx   Z  s    
zTestFOneWay.test_basicc             C   s4   t jdgdgdddg\}}t|d t|d d S )Nr   r   r   r   r   g333333?g      ?)r$   r  r   )r'   r  ry   r+   r+   r,   test_known_exacta  s    
zTestFOneWay.test_known_exactc             C   sJ   t jddgt jd}t jddgt jd}tj||\}}t|ddd d S )	Ni  i  )r0   i  i  gŸ?g+=)r   )r6   r   uint16r$   r  r	   )r'   rs   rw   r  ry   r+   r+   r,   test_large_integer_arrayk  s    z$TestFOneWay.test_large_integer_arrayc             C   sF   t jddgt jd}t jddgt jd}tj||}d}t|| d S )	Ni  i  )r0   i  i  r\  r   )r\  r   )r6   r   r  r$   r  r   )r'   rs   rw   r   r   r+   r+   r,   test_result_attributess  s
    z"TestFOneWay.test_result_attributesc                s  ddddddddd	d
dg}x|D ]}d}t jjt jjt jjtd|}t|d}|j jd}W d Q R X dd |dd D }t	j
|dd}|j\ jtt	j}	t|d d } fdd|	D }
tj|
 }d}||krd}t|d ||d| d q W d S )Nz
SiRstv.datz
SmLs01.datz
SmLs02.datz
SmLs03.datzAtmWtAg.datz
SmLs04.datz
SmLs05.datz
SmLs06.dat
SmLs07.dat
SmLs08.dat
SmLs09.datgHz>zdata/nist_anovarV   
c             S   s   g | ]}|j  r|j qS r+   )stripsplit)r  liner+   r+   r,   r    s    z)TestFOneWay.test_nist.<locals>.<listcomp>rb  0   r8  )Zskiprowsr   r   c                s   g | ]} |k qS r+   r+   )r  rC  )rH   r(   r+   r,   r    s    g-C6?zFailing testcase: %s)r   r  rM   )r  r  r  )ospathabspathjoindirname__file__openreadr  r6   Zloadtxtr   r   r  r  r   r$   r  r	   )r'   	filenamesZ	test_caser   fnamefcontentZ	certifiedZdatafZcatyZxlistr   Zhard_tcr+   )rH   r(   r,   	test_nistz  s,    






zTestFOneWay.test_nistza, b, expectedr?  r   r   c          
   C   s:   t tj& tj||\}}|s,t||kW d Q R X d S )N)r
   r$   F_onewayConstantInputWarningr  r   )r'   rs   rw   r   r  ry   r+   r+   r,   rz     s    zTestFOneWay.test_constant_inputr1   r   r   c             C   s  t jddddgddddgddddgddddgddddgg}t jddddgddddgddddgddddgddddgddddgddddgddddgg}t jddddgddddgddddgddddgg}|dkr|j}|j}|j}d}nd}ttj tj||||d	\}}W d Q R X xbdD ]Z}tjt j|||t j|||t j|||\}	}
t|| |	d
d t|| |
d
d qW xpdD ]h}ttjR tjt j|||t j|||t j|||\}	}
t	|| |	 t	|| |
 W d Q R X qW d S )Nr   r   r   r   r   r   r   r   )r1   g+=)r   rM   )rM   r   )r   r   )r   r   )
r6   r   r   r
   r$   r  r  Ztaker	   r   )r'   r1   rs   rw   r}  Z	take_axisr  ry   rY  fjZpjr+   r+   r,   test_2d_inputs  sL    










 

zTestFOneWay.test_2d_inputsc       
   	   C   s  dt jddjddd }dt jddjddd }t jdt jddjddd }tj|||dd\}}|jdksxt|jdkstxt|jd	 D ]|}xvt|jd D ]d}tj||d d |f ||d d |f ||d d |f \}}	t	||||f  t	|	|||f  qW qW d S )Nr   g      ?r   r   r   r   r   )r1   r   r   rN     r        r   p   q   )r   r   )r   r   )
r6   r   r5   cosr$   r  r   r   r  r	   )
r'   rs   rw   r}  r  ry   rC  rY  ZfijZpijr+   r+   r,   test_3d_inputs  s     <zTestFOneWay.test_3d_inputsc             C   sH   t tj4 tjdddgg ddddg}t|tjtjf W d Q R X d S )Nr   r   r   r   r   r   r   )r
   r$   F_onewayBadInputSizesWarningr  r   r6   r:   )r'   r  r+   r+   r,   test_length0_1d_error  s    z!TestFOneWay.test_length0_1d_errorc             C   s   t tjl d}tjd|f}tjd|f}tjd|f}tj|||\}}tj|ftjd}t|| t|| W d Q R X d S )Nr   r   r   r   )r  )	r
   r$   r  r6   ru  r  r7   r:   r   )r'   Zncolsrs   rw   r}  r  ry   Znansr+   r+   r,   test_length0_2d_error  s    
z!TestFOneWay.test_length0_2d_errorc             C   sD   t tj0 tjdgdgdgdg}t|tjtjf W d Q R X d S )Nr?   r   r-  r   )r
   r$   r  r  r   r6   r:   )r'   r  r+   r+   r,   test_all_length_one  s    zTestFOneWay.test_all_length_oner>  r   c          	   C   s"   t t tj|  W d Q R X d S )N)rF   r  r$   r  )r'   r>  r+   r+   r,   test_too_few_inputs  s    
zTestFOneWay.test_too_few_inputsc             C   s>   t jd}t jd}tt j tj||dd W d Q R X d S )Nr   r   r   r   )r1   )r   r   )r   r   )r6   ru  rF   r2  r$   r  )r'   rs   rw   r+   r+   r,   test_axis_error  s    

zTestFOneWay.test_axis_errorc             C   s<   t jd}t jd}tt tj||dd W d Q R X d S )Nr   r   r   r   )r1   )r   r   )r   r   )r6   ru  rF   rG   r$   r  )r'   rs   rw   r+   r+   r,   test_bad_shapes  s    


zTestFOneWay.test_bad_shapesNrQ  rM   )rQ   rR   rS   r  rx   r  r  r  r  r   r   r  r6   r   r   r:   rz   r  r  r  r  r  r  r  r  r+   r+   r+   r,   r  R  s"   
 &6/"r  c               @   sT   e Z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d ZdS )TestKruskalc             C   s|   dg}dg}t j||\}}t|d t|t jjj|d t jtj|tj|\}}t|d t|t jjj|d d S )Nr   r   g      ?)	r$   kruskalr   r   r  r  r  r6   r   )r'   rH   r(   hry   r+   r+   r,   test_simple  s    

zTestKruskal.test_simplec             C   s   dddddg}dddd	d
g}t j||\}}t|dd
d t|t jjjdd t jtj|tj|\}}t|dd
d t|t jjjdd d S )Nr   r   r   r   r   r   r   r   r   r?   g      @r   )r!   gtE]t?gtE]t?gtE]t?gtE]t?)r$   r!  r   r  r  r  r6   r   )r'   rH   r(   r"  ry   r+   r+   r,   rx     s    zTestKruskal.test_basicc             C   s<   dg}ddg}d}d}|| }t j||\}}t|| d S )Nr   r   g      ?g      @r-  g      ?g      @g     @@g     @$@g     (@g      ?)r$   r!  r   )r'   rH   r(   h_uncorrr   r   r"  ry   r+   r+   r,   test_simple_tie!  s    zTestKruskal.test_simple_tiec             C   sR   ddddg}ddddg}d}dt dd  }|| }tj||\}}t|| d S )Nr   r   g      (@g       @g      "@r   r   r   r   r   r   g      ?gUUUUUU?gUUUUUU?r   r  r  g      >@   g      @r&  r  }         i   i  )r   r$   r!  r   )r'   rH   r(   r$  r   r   r"  ry   r+   r+   r,   test_another_tie,  s    zTestKruskal.test_another_tiec       	      C   sn   dddg}dddg}ddg}d}dt dd  }|| }tj|||\}}t|| t|tjjj|d d S )Nr   r   g      (@g       @g      "@r   r   r   r   r   g      ?gUUUUUU?r   r-  r  l   r  r  H      g      @@r&  g      @r&  r  r'  r(  r)  i   i  )r   r$   r!  r   r  r  r  )	r'   rH   r(   r  r$  r   r   r"  ry   r+   r+   r,   test_three_groups5  s    


zTestKruskal.test_three_groupsc             C   s8   dddg}dddg}g }t tj|||tjtjf d S )Nr   r   )r   r$   r!  r6   r:   )r'   rH   r(   r  r+   r+   r,   r  A  s    

zTestKruskal.test_emptyc             C   s:   dddddg}dddd	d
g}t j||}d}t|| d S )Nr   r   r   r   r   r   r   r   r   r?   r\  r   )r\  r   )r$   r!  r   )r'   rH   r(   r   r   r+   r+   r,   test_kruskal_result_attributesH  s
    z*TestKruskal.test_kruskal_result_attributesc             C   sp   t jd}t j|d< ttj||t jt jf ttj||ddd	 tttj||dd tttj||dd d S )
Ng      $@r   rA   )rB                 ?rC   rD   )r0  r1  )	r6   r   r:   r   r$   r!  r   rF   rG   )r'   rH   r+   r+   r,   r   O  s    

zTestKruskal.test_nan_policyc             C   sB   d}t jj|}t jj|d }tj||\}}d}t|| d S )NiP  r`  r   )r6   r   r   r$   r!  r   )r'   r   rH   r(   r"  ry   r   r+   r+   r,   test_large_no_samplesW  s    z!TestKruskal.test_large_no_samplesN)rQ   rR   rS   r#  rx   r%  r*  r.  r  r/  r   r2  r+   r+   r+   r,   r     s   

	r   c               @   sT   e Z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d ZdS )TestCombinePvaluesc             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?rR  )r,  gf?r   )r!   )r$   combine_pvaluesr   )r'   Zxsqry   r+   r+   r,   test_fisherc  s    zTestCombinePvalues.test_fisherc             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?stouffer)r,  gS:X?r   )r!   )r$   r4  r   )r'   Zry   r+   r+   r,   test_stoufferh  s    z TestCombinePvalues.test_stoufferc             C   s*   t jdddgdd\}}t|ddd d S )Ng      ?r6  )r,  r   )r!   )r$   r4  r   )r'   r7  ry   r+   r+   r,   test_stouffer2l  s    z!TestCombinePvalues.test_stouffer2c             C   s2   t jdddgdtjdd\}}t|ddd	 d S )
Ng{Gz?g?g333333?r6  r   )r,  weightsgS:X?r   )r!   )r$   r4  r6   ru  r   )r'   r7  ry   r+   r+   r,   test_weighted_stoufferp  s    z)TestCombinePvalues.test_weighted_stoufferc             C   s2   t jdddgdtjdd\}}t|d	dd
 d S )Ng{Gz?g?g333333?r6  r   r   r   )r,  r:  g46<?)r!   )r   r   r   )r$   r4  r6   r   r   )r'   r7  ry   r+   r+   r,   test_weighted_stouffer2u  s    z*TestCombinePvalues.test_weighted_stouffer2c             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?r  )r,  g&J?r   )r!   )r$   r4  r   )r'   r7  ry   r+   r+   r,   test_pearsonz  s    zTestCombinePvalues.test_pearsonc             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?Ztippett)r,  g
}?r   )r!   )r$   r4  r   )r'   r7  ry   r+   r+   r,   test_tippett~  s    zTestCombinePvalues.test_tippettc             C   s*   t jdddgdd\}}t|ddd d S )Ng?mudholkar_george)r,  g&?r   )r!   )r$   r4  r   )r'   r7  ry   r+   r+   r,   test_mudholkar_george  s    z(TestCombinePvalues.test_mudholkar_georgec             C   sb   t jdddgdd\}}t jdddgdd\}}t jdddgdd\}}td||  |d	d
 d S )Ng{Gz?g?g333333?r?  )r,  rR  r  g      ?r   )r!   )r$   r4  r   )r'   r7  ry   ZZ_fZp_fZZ_pZp_pr+   r+   r,   0test_mudholkar_george_equal_fisher_minus_pearson  s    zCTestCombinePvalues.test_mudholkar_george_equal_fisher_minus_pearsonN)rQ   rR   rS   r5  r8  r9  r;  r<  r=  r>  r@  rA  r+   r+   r+   r,   r3  a  s   r3  c               @   s8   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d ZdS )TestCdfDistanceValidationzg
    Test that _cdf_distance() (via wasserstein_distance()) raises ValueErrors
    for bad inputs.
    c             C   s<   t ttjdgdgdgddg t ttjdgdgddg d S )Nr   r   r   r   r   )rF   rG   r$   wasserstein_distance)r'   r+   r+   r,   &test_distinct_value_and_weight_lengths  s    z@TestCdfDistanceValidation.test_distinct_value_and_weight_lengthsc             C   s@   t ttjddgdgddg t ttjddgdgddgdg d S )Nr   r   r   r   )rF   rG   r$   rC  )r'   r+   r+   r,   test_zero_weight  s    z*TestCdfDistanceValidation.test_zero_weightc             C   s(   t ttjddgddgddgddg d S )Nr   r   r   r   rM   )rF   rG   r$   rC  )r'   r+   r+   r,   test_negative_weights  s    z/TestCdfDistanceValidation.test_negative_weightsc             C   s*   t ttjg ddg t ttjdgg  d S )Nr   r   )rF   rG   r$   rC  )r'   r+   r+   r,   test_empty_distribution  s    z1TestCdfDistanceValidation.test_empty_distributionc             C   s.   t ttjdddgddgdtjdgddg d S )Nr   r   )rF   rG   r$   rC  r6   r   )r'   r+   r+   r,   test_inf_weight  s    z)TestCdfDistanceValidation.test_inf_weightN)	rQ   rR   rS   r   rD  rE  rF  rG  rH  r+   r+   r+   r,   rB    s   rB  c               @   sH   e Zd Z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 )TestWassersteinDistancez5 Tests for wasserstein_distance() output values.
    c             C   s   t tjddgdgddgdgd t tjddgdgddgdgd t tjddgdgddgdgd t tjdddgdddgd d S )Nr   r   g      ?r   g      ?r   )r   r$   rC  )r'   r+   r+   r,   r#    s    z#TestWassersteinDistance.test_simplec             C   sP   t tjdddgdddgd t tjddddgddgddddgddgd d S )Nr   r   r   r   r   )r   r$   rC  )r'   r+   r+   r,   test_same_distribution  s
    z.TestWassersteinDistance.test_same_distributionc             C   s   t tjdgdgd t tjdgdgd t tjdddddgdd	d
ddgd t tjdddgdddgdddgdddgd d S )Nr   r   r   r?   r   r   r   r   r-  r   r|  r   g      @g@g @gffffff@r   gffffff"@g      @r  )r   r$   rC  )r'   r+   r+   r,   
test_shift  s    z"TestWassersteinDistance.test_shiftc             C   sv   t tjdddddddgdddddddgdddddddgdddddddgtjdddgdddgdddgdddg d S )Nr   r   r   r   r   r   )r   r$   rC  )r'   r+   r+   r,   test_combine_weights  s     "z,TestWassersteinDistance.test_combine_weightsc             C   s|   t jddd}t j|}ttj||t jt j| t jt|}|d d d }ttj||||t j	t j||d d S )Nr?   ra  g333333?r   )r:  irM   )
r6   r   Z
zeros_liker   r$   rC  r  r$  rU  Zaverage)r'   rW  rX  Z	u_weightsZ	v_weightsr+   r+   r,   test_collapse  s    

z%TestWassersteinDistance.test_collapsec             C   sJ   t tjdddgddgdddgddgtjddgddgddgddg d S )Nr   r   i r   )r   r$   rC  )r'   r+   r+   r,   rE    s    z(TestWassersteinDistance.test_zero_weightc             C   s   t tjddtjgddgtj t tjddtjgtj dgtj t tjdtj tjgddgtj t 4}|jtd t tjddtjgtjdgtj W d Q R X d S )Nr   r   zinvalid value*)	r   r$   rC  r6   r   r   r8   r9   r:   )r'   r;   r+   r+   r,   test_inf_values  s    z'TestWassersteinDistance.test_inf_valuesN)rQ   rR   rS   r   r#  rJ  rK  rL  rM  rE  rN  r+   r+   r+   r,   rI    s   	
rI  c               @   s@   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dS )TestEnergyDistancez0 Tests for energy_distance() output values.
    c             C   s   t tjddgdgddgdgtjdd  t tjddgdgddgdgtjdd  t tjddgdgddgdgd t tjdddgdddgtjdd  d S )Nr   r   r   g      ?r   g      ?g      ?g      ?r   gqq?gUUUUUU?g3Ey?)r   r$   energy_distancer6   rN   )r'   r+   r+   r,   r#    s    zTestEnergyDistance.test_simplec             C   sP   t tjdddgdddgd t tjddddgddgddddgddgd d S )Nr   r   r   r   r   )r   r$   rP  )r'   r+   r+   r,   rJ  %  s    &z)TestEnergyDistance.test_same_distributionc             C   s@   t tjdgdgtjd t tjdgdgtjdd  d S )	Nr   r   r   r   r?   g      ?r  gS[:XL	@)r   r$   rP  r6   rN   )r'   r+   r+   r,   rK  -  s    zTestEnergyDistance.test_shiftc             C   sv   t tjdddddddgdddddddgdddddddgdddddddgtjdddgdddgdddgdddg d S )Nr   r   r   r   r   r   )r   r$   rP  )r'   r+   r+   r,   rL  5  s    $"z'TestEnergyDistance.test_combine_weightsc             C   sJ   t tjdddgddgdddgddgtjddgddgddgddg d S )Nr   r   i r   )r   r$   rP  )r'   r+   r+   r,   rE  =  s    "z#TestEnergyDistance.test_zero_weightc             C   s   t tjddtjgddgtj t tjddtjgtj dgtj t tjdtj tjgddgtj t 4}|jtd t tjddtjgtjdgtj W d Q R X d S )Nr   r   zinvalid value*)	r   r$   rP  r6   r   r   r8   r9   r:   )r'   r;   r+   r+   r,   rN  C  s     z"TestEnergyDistance.test_inf_valuesN)
rQ   rR   rS   r   r#  rJ  rK  rL  rE  rN  r+   r+   r+   r,   rO    s   rO  c               @   s   e Zd ZddddddddddddddgZdddddddddddgZ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d Zdd ZdS )TestBrunnerMunzelr   r   r   r   r   r   c       	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t||| jd t||| jd t||k t|d| jd t|d| jd t|d| jd t|d	| jd t|d| jd t|d| jd d S )
Nr   )r   r   )r!   g|	&	@gҏGg?g@-pL?g|	&	g|	&	)r$   brunnermunzelr%   r  r   r!   r   )	r'   r  r  r  rQ  r  rR  r  r  r+   r+   r,   test_brunnermunzel_one_sidedZ  s&    




z.TestBrunnerMunzel.test_brunnermunzel_one_sidedc             C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nz	two-sided)r   )r!   g|	&	@g ҏGw?g|	&	)r$   rR  r%   r  r   r!   )r'   r  r  r  rQ  r+   r+   r,   test_brunnermunzel_two_sidedq  s    

z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc             C   sl   t j| j| j\}}t j| j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )N)r!   g|	&	@g ҏGw?g|	&	)r$   rR  r%   r  r   r!   )r'   r  r  r  rQ  r+   r+   r,   test_brunnermunzel_default~  s    

z,TestBrunnerMunzel.test_brunnermunzel_defaultc             C   s6   d}d}d}t |dk tttj| j| j||| d S )Nerrorrm  r   	two-sidedr   r   )rW  r   r   )r   rF   rG   r$   rR  r%   r  )r'   r   distributionrB   r+   r+   r,   $test_brunnermunzel_alternative_error  s    z6TestBrunnerMunzel.test_brunnermunzel_alternative_errorc             C   st   t j| j| jdd\}}t j| j| jdd\}}t||| jd t|d| jd t|d| jd t|d| jd d S )Nr  )rX  )r!   g|	&	@g "H[?g|	&	)r$   rR  r%   r  r   r!   )r'   r  r  r  rQ  r+   r+   r,   $test_brunnermunzel_distribution_norm  s    

z6TestBrunnerMunzel.test_brunnermunzel_distribution_normc             C   s6   d}d}d}t |dk tttj| j| j||| d S )Nz	two-sidedrV  r   rm  r  )rm  r  )r   rF   rG   r$   rR  r%   r  )r'   r   rX  rB   r+   r+   r,   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc             C   s   t j| jg \}}t jg | j\}}t jg g \}}t|tj t|tj t|tj t|tj t|tj t|tj d S )N)r$   rR  r%   r  r   r6   r:   )r'   r  r  r  rQ  r  rR  r+   r+   r,   test_brunnermunzel_empty_imput  s    z0TestBrunnerMunzel.test_brunnermunzel_empty_imputc             C   s   ddddddddddddddt jg}dddddddddddg}tj||dd\}}tj||dd\}}t|t j t|t j t|t j t|t j d S )Nr   r   r   r   r   r   )rB   )r6   r:   r$   rR  r   )r'   r%   r  r  r  r  rQ  r+   r+   r,   &test_brunnermunzel_nan_input_propagate  s    $z8TestBrunnerMunzel.test_brunnermunzel_nan_input_propagatec             C   sz   ddddddddddddddt jg}dddddddddddg}d}d}d}tttj||||| tttj||||| d S )	Nr   r   r   r   r   z	two-sidedrm  rC   )r6   r:   rF   rG   r$   rR  )r'   r%   r  r   rX  rB   r+   r+   r,   "test_brunnermunzel_nan_input_raise  s&    $z4TestBrunnerMunzel.test_brunnermunzel_nan_input_raisec             C   s   ddddddddddddddt jg}dddddddddddg}tj||dd\}}tj||dd\}}t||| jd t|d	| jd t|d| jd t|d
| jd d S )Nr   r   r   r   r   rA   )rB   )r!   g|	&	@g ҏGw?g|	&	)r6   r:   r$   rR  r   r!   )r'   r%   r  r  r  r  rQ  r+   r+   r,   !test_brunnermunzel_nan_input_omit  s    $

z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitN)rQ   rR   rS   r%   r  r!   rS  rT  rU  rY  rZ  r[  r\  r]  r^  r_  r+   r+   r+   r,   rQ  T  s    rQ  c               @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )TestRatioUniformsz# Tests for rvs_ratio_uniforms.
    c             C   s   t jj}tj|tjdtjd }tj|d| |  }}}t j||||ddd}tt j|dd dkd	 t jd
d dddtjd ddd}tt j|dd dkd	 d S )Nr   r   i	  i90  )rO   random_staterk  r   g      ?Tc             S   s   t j|  S )N)r6   r  )rH   r+   r+   r,   rI    s    z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>i  )umaxvminvmaxrO   ra  ZexponrM   )	r$   rk  pdfr6   rN   rvs_ratio_uniformsr   r  r  )r'   r  v_boundrb  rc  rd  rl  r+   r+   r,   test_rv_generation  s    
z$TestRatioUniforms.test_rv_generationc             C   sR  t jj}tj|tjdtjd }tj|d| |  }}}t j||||ddd}t j||||d
dd}t j||||ddd}t|| t||j  t|jd t|jd t j||||ddd}	t j||||ddd}
t|	j |
 t|	jd t j||||dd	}t j||||ddd}t j||||ddd}t|| t|| d S )Nr   r   r   i  )rO   ra  r   r-  r&  )ra  )r   )r   r   )r   )r   r   )r   r   r   )r   r   r   )r   )	r$   rk  re  r6   rN   rf  r   r   r   )r'   r  rg  rb  rc  rd  rE  rF  r.  Zr4Zr5Zr6Zr7r8r+   r+   r,   
test_shape   s4    

zTestRatioUniforms.test_shapec             C   s   t jj}tj|tjdtjd }tj|d| |  }}}tjjd t j||||dd}t j||||d	dd}t|| d S )
Nr   r   i  r   r   )rO   )rO   ra  )r   r   )r   r   )	r$   rk  re  r6   rN   r   r   rf  r   )r'   r  rg  rb  rc  rd  rE  rF  r+   r+   r,   test_random_state   s    z#TestRatioUniforms.test_random_statec             C   sd   t jj}ttt j|dddd ttt j|dddd ttt j|dddd ttt j|dddd d S )Nr   r   )re  rb  rc  rd  r   rM   )r$   rk  re  rF   rG   rf  )r'   r  r+   r+   r,   test_exceptions*  s    z!TestRatioUniforms.test_exceptionsN)rQ   rR   rS   r   rh  rj  rk  rl  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dd Zdd Z	dS )TestEppsSingletonc             C   sl   t jdddddddddd	g
}t jddddddddddg
}tj||\}}t|ddd t|ddd d S )Ngffffff?gffffff@gGz?g\(\?gQ@gq=
ףp?gGz?gGz?gp=
#(@gffffff?g333333?gףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @g333333!@gHzG.@r   )r2   gQ,r?r   gffffffֿgGzgGz׿gffffffg333333ÿ)r6   r   r$   epps_singleton_2sampr   )r'   rH   r(   rZ  ry   r+   r+   r,   test_statistic_19  s
    z"TestEppsSingleton.test_statistic_1c             C   sD   t jd}t jd}tj||\}}t|ddd t|ddd d S )Nr   r   r   r   r   r   r   r?   r   r   g!@gMbP?)rq   g&J?)r2   )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?   r?   r   r   r   r   r?   r   r   r   r   r   r   r   r   r?   )r6   r   r$   rn  r	   r   )r'   rH   r(   rZ  ry   r+   r+   r,   test_statistic_2D  s    z"TestEppsSingleton.test_statistic_2c       	      C   s   t jjd t jdt jd }}tjt|t|\}}tjt|t|\}}tj||\}}t||  kov|kn   t||  ko|kn   d S )Ni  ra  r   )	r6   r   r   r   r$   rn  r  r  r   )	r'   rH   r(   Zw1r  Zw2rQ  Zw3rR  r+   r+   r,   test_epps_singleton_array_likeN  s    z0TestEppsSingleton.test_epps_singleton_array_likec             C   s$   dt jd }}tttj|| d S )Nr   r   r   r   r?   )r   r   r   r   )r6   r   rF   rG   r$   rn  )r'   rH   r(   r+   r+   r,   test_epps_singleton_sizeY  s    z*TestEppsSingleton.test_epps_singleton_sizec             C   s`   dddddt jft jd }}tttj|| t jddddddt jf }}tttj|| d S )Nr   r   r   r   r   r?   )r6   r   r   rF   rG   r$   rn  r:   )r'   rH   r(   r+   r+   r,   test_epps_singleton_nonfinite^  s    z/TestEppsSingleton.test_epps_singleton_nonfinitec             C   s&   t jdjdd}tttj|| d S )Nr   r   rM   )r6   r   r5   rF   rG   r$   rn  )r'   rH   r+   r+   r,   test_epps_singleton_1d_inpute  s    z.TestEppsSingleton.test_epps_singleton_1d_inputc             C   s4   t jdt jd }}tj||}d}t|| d S )Nr   ra  r\  r   )r\  r   )r6   r   r$   rn  r   )r'   rH   r(   r   r   r+   r+   r,   
test_namesi  s    zTestEppsSingleton.test_namesN)
rQ   rR   rS   ro  rp  rq  rr  rs  rt  ru  r+   r+   r+   r,   rm  8  s   
rm  c               @   sb   e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Ze	j
jdddgdd Zdd Zdd ZdS )TestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c             C   s8   t jd}dgd }tttj|| tttj|| d S )Nr   r   )r6   r   rF   rG   r$   multiscale_graphcorr)r'   rH   r(   r+   r+   r,   test_error_notndarrays  s    

z*TestMGCErrorWarnings.test_error_notndarrayc             C   s2   t jdjdd}|jdd}tttj|| d S )Nr   r   r   r?   )r6   r   r5   rF   rG   r$   rw  )r'   rH   r(   r+   r+   r,   test_error_shapez  s    z%TestMGCErrorWarnings.test_error_shapec             C   s(   t jd}t jd}tttj|| d S )Nr   )r6   r   rF   rG   r$   rw  )r'   rH   r(   r+   r+   r,   test_error_lowsamples  s    

z*TestMGCErrorWarnings.test_error_lowsamplesc             C   sF   t jdtd}t j|d< tttj|| t jd}tttj|| d S )Nr   )r0   r   )r6   r   r   r:   rF   rG   r$   rw  )r'   rH   r(   r+   r+   r,   test_error_nans  s
    

z$TestMGCErrorWarnings.test_error_nansc             C   s&   t jd}d}tttj|||d d S )Nr   r   )compute_distance)r6   r   rF   rG   r$   rw  )r'   rH   r|  r+   r+   r,   test_error_wrongdisttype  s    
z-TestMGCErrorWarnings.test_error_wrongdisttyper  r   1c             C   s"   t jd}tttj|||d d S )Nr   )r  )r6   r   rF   rG   r$   rw  )r'   r  rH   r+   r+   r,   test_error_reps  s    
z$TestMGCErrorWarnings.test_error_repsc             C   s&   t jd}d}tttj|||d d S )Nr   r   )r  )r6   r   r
   r9   r$   rw  )r'   rH   r  r+   r+   r,   test_warns_reps  s    
z$TestMGCErrorWarnings.test_warns_repsc             C   s.   t jd}t jdt j }tttj|| d S )Nr   )r6   r   ru  r   rF   rG   r$   rw  )r'   rH   r(   r+   r+   r,   test_error_infty  s    
z%TestMGCErrorWarnings.test_error_inftyNrM   )rQ   rR   rS   r   rx  ry  rz  r{  r}  r   r   r  r  r  r  r+   r+   r+   r,   rv  p  s   	rv  c               @   s   e Zd ZdZd ddZejjejjdd"d$d&gdd Z	ejjejjdd(d)gdd Z
ejjdd Zejjdd Zejjdd Zejjdd ZdS )*TestMGCStatz) Test validity of MGC test statistic
    r   r   r  c             C   st  |dkr<t jjdd|dfd}|dt jj|jdfd  }n|dkrt jt jjdd|dfd}|t jt j|  }|t jt j|  dt jj|jdfd  }n|d	kr.t jj	dd|dfd}t jj	dd|dfd}t jj
dd
|dfd}	t jj
dd
|dfd}
|d d|	  d }|d d|
  d }ntd|dkrlt jj	dd||d fd}t j||fdd}||fS )Nr#  r   )rO   g333333?	nonlinearr   r   g?independenceg      ?)ry   rO   r   r   z3sim_type must be linear, nonlinear, or independence)r1   rM   )r6   r   r  Zrandom_samplerO   r   r  pirm  r  binomialrG   r:  )r'   sampsdimssim_typerH   r(   ZunifrW  rX  Zu_2Zv_2Z
dims_noiser+   r+   r,   _simulations  s(    

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvaluer#  
ףp=
?i  r  w/?r  gUN@?(\?c       	      C   sR   t jjd | jdd|d\}}tj||\}}}t||dd t||dd d S )NiNa r   r   )r  r  r  )r!   )r6   r   r   r  r$   rw  r   )	r'   r  obs_stat
obs_pvaluerH   r(   r  r   rS  r+   r+   r,   	test_oned  s
    zTestMGCStat.test_onedZd;O?~jt?ʡE?c       	      C   sR   t jjd | jdd|d\}}tj||\}}}t||dd t||dd d S )NiNa r   r   )r  r  r  r   )r!   )r6   r   r   r  r$   rw  r   )	r'   r  r  r  rH   r(   r  r   rS  r+   r+   r,   
test_fived  s
    zTestMGCStat.test_fivedc             C   s   t jjd t jjdddd}t jjdddd}tj||\}}}t|d	dd
 t|ddd
 t jjdddd}tj||dd\}}}t|d	dd
 t|ddd
 d S )NiNa r   g      ?r   )rO   r   r   r:  g      ?)r!   gMbP?T)Z
is_twosamp)r   r   )r:  r   )r   r   )r6   r   r   r  r  r$   rw  r   )r'   rH   r(   r  r   rS  r+   r+   r,   test_twosamp  s    zTestMGCStat.test_twosampc             C   sV   t jjd | jdddd\}}tj||dd\}}}t|ddd	 t|d
dd	 d S )NiNa r   r   r#  )r  r  r  r   )workersg
ףp=
?)r!   gMbP?)r6   r   r   r  r$   rw  r   )r'   rH   r(   r  r   rS  r+   r+   r,   test_workers  s
    zTestMGCStat.test_workersc             C   sJ   | j dddd\}}tj||dd\}}}t|ddd t|ddd d S )	Nr   r   r#  )r  r  r  )ra  g
ףp=
?)r!   gMbP?)r  r$   rw  r   )r'   rH   r(   r  r   rS  r+   r+   r,   rk    s    zTestMGCStat.test_random_statec             C   st   t jjd | jdddd\}}t||dd}t||dd}tj||d dd\}}}t|d	dd
 t|ddd
 d S )NiNa r   r   r  )r  r  r  Z	euclidean)Zmetric)r|  ra  gw/?)r!   gMbP?)r6   r   r   r  r   r$   rw  r   )r'   rH   r(   ZdistxZdistyZ	stat_distZpvalue_distrS  r+   r+   r,   test_dist_perm  s    zTestMGCStat.test_dist_permN)r   r   r  MbP?)r#  r  r  MbP?)r  r  r  UN@)r  r  r  MbP?)r#  r  r  )r  r  r  )rQ   rR   rS   r   r  r   r   r   r  r  r  r  r  rk  r  r+   r+   r+   r,   r    s   
"
r  g      ?g      ?g       @gUUUUUU?g      ?gUUUUUU?gr(?g׿gg      ?gUUUUUU?g4CG?g(l?g<;@gǭ0N@grq?gfx(@g       @g      ?g      @g      ?g       @g      ?g       @gUUUUUU?g<n=e?gxzJ?gxzJ@g      ?gUUUUUU?gr(?g׿gg	g      @gUUUUUU?gr(@gEQ?gEQ(@gzU'@grq?g{T4@g      ?g      ?g       @gUUUUUU?g      ?gUUUUUU?gr(?g׿gg      ?gUUUUUU?g4CG?g(l?g<;@gǭ0N@grq?gfx(@)r   r   r   )r   r   )r   r   r   )r   r   )r   )r   r   r   )r   r   )r   r   r   )r   r   )NNr  )NNr  )r   r  r>  collectionsr   Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   r   rF   Znumpy.ma.testutilsr9  Z	testutilsr  Znumpyr   r   r   r   r   r6   Zscipy.statsr$   Zscipy.stats.mstatsr  Zscipy.stats.mstats_basicrA  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zcommon_testsr   Zscipy.sparse.sputilsr   Zscipy.spatial.distancer   r   r%   rj  rX   rZ   r\   r^   r`   r  r    rT   r   r   r  r>  rD  rG  rM  rO  rT  r\  r]  re  r  r  r  r  r  r  r  r  r  r  r   rC  r[  r  ZPowerDivCaser  r  r   r  r  r   r  Zuint8r   r  r  r  r  r  r  r  r,  r/  r1  r  r4  r5  r9  r?  rD  rG  rI  rJ  rK  rL  rP  rS  rT  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r3  rB  rI  rO  rQ  r`  rm  rv  r  r+   r+   r+   r,   <module>   sF  ,
m r  e  7
?
& u+| 
?H _ &9N22 ""
 !&	K65"E XK
Kj'bB( +JdQTK/ ;U-&]C L8<