B
    `8~                @   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m  mZ ddlmZmZmZmZmZ ddlZddlmZ ddlm  m Z  ddl!m  m"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Sd9 deSd:   ddeSd deSd   ddeRddddgddddgdddddeSd deSd9  deSd   ddeSd9 deSd  deSd   ddeRddddgddddddeSd9 deSd:   ddeSd deSd   dd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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g g g gdddg g g g dgZVG dd de5ZWejXYdde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jXYdefddfefddfgdd Zgdd Zhd ddZidd Zjdd Zkdd Zldd ZmejXYdefddfefddf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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 tdd}t|d| jd t jtddd}t jtd d}t||| jd d S )N)r   r   )TTg      @)significant)FF)limits	inclusive)r"   )statsZtmeanXr   dprec)selfyy1y2 r+   K/home/dcms/DCMS/lib/python3.7/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
d}t j|d d}t||jdd| jd t j|dd}t	|d t
dddd t j|dd}t	|d t
dddd t |dd d f }t|d| jd t n}|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 )N)r   r   )TT)r"   r#   g@)r!   )r"   r   )ddof?   )dtype)r   r   )axisr   )r   r   g     v@r   )decimal)r   r   g㪪@r   g@z"Degrees of freedom <= 0 for slice.)r   r   )r"   r1   r#   g      @)r   r   )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 tdd}t|d| jd t jtd d}t|tjdd| jd d S )N)r   r   )TTgBĆ/H@)r!   )r"   r   )r.   )r$   Ztstdr%   r   r&   std)r'   r(   r+   r+   r,   	test_tstde   s    zTestTrimmedStats.test_tstdc          
   C   sT  t tdd td}t t|d t tj|ddd t tj|dddd |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d}tj|d< t }|t	d t t|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   r   )r1   r   r   g      $@r   zinvalid value*omit)
nan_policyg        raisefoobarz'propagate', 'raise', 'omit')matchZfoo)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dd td}t t|d t tj|ddd t tj|dddd |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d}tj|d< t \}|t	d t t|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   r   g      $@r   zinvalid value*rA   )rB   g      "@rC   rD   )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dddddg}t||jd	d
t|j | j	d tt jtddgdt jtd d| j	d d S )N)r   r   )FT)r"   r#   r   r   r   r   r   r   )r.   )r!   r?   )r"   )
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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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||\}}t|ddd t|dtdt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|| \}}t|ddd t|dtdt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||\}}t|tdd  t|d d S )NrM   r   r   r   r   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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 d g}ddddt d  g}ttj t||\}}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 ||\}}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 dddddddg }dt d }t||\}}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 ddddg}t ddddg}t||\}}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 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 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 ||\}}t|d t|d dddg}d	d
dg}t ||\}}t|d t|ddd d S )Nr   r   r   r   r   g      ?g?g+?r   ig      g        gHz>)rq   )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$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 ]4\}}tt |}t jj|d	 |d	 ddd qW d S )Nr   r   i  r   )gAn&	?g}K
T?r   r   )g	7?g?r   r?   )g!@gj)A?r   r   )gU!a?gKY?r   r   )g7X?g~ltP?)gFu|?gj)A?r   )g        gQN^?r   gaa?)g        g      ?gaa?r      T)r2   verbose)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ddgd	|ggd
 }t||dd qW t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d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 |\}}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 }|tj|ddd  |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?gUUUUUU?gUUUUUU?less)alternativegreatergHz>)rq   rtol)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 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 dd}tt|  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d t jdd}t jdd}t||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   r   )r1   )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d t 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|	 |	 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 d}t j|d< tt||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   )g      ?g        rC   rD   )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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 tt}d}t|| d S )N)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 ||}t t||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 ||gj|d}t|| qW d S )	N)	propagaterA   r   r   r   r   r   r   )rB   )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 d}| }t ddddddg}t |||gj}t|}t 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   rM   g3+?g3+)r   r   )r0   g+Hs]s?)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 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 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   )gacJC?g%ln?g_0nYt!޿gư>)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d t j|}t j|dk}|dk}t |}tj||ddj}t j||< tj||dd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 ||}t|d
 |d
  t|d |d  d S )Nr   r   r   r   r   r   r   r   )gh
C?g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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d t t jjddddt jjddddg}ddgddgg}t t j||}d}t	|d |d }t
|d |d  t
|d |d  d S )	Niz  r   i  )locscalerO   g      ?g333333?)gCzYW?ge*=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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 d}t j|d< tt||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   )g      ?r   rC   rD   )	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 d}t 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< |t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dddgdddg\}}t|tj t|tj tdddgdddg\}}t|tj t|tj t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 ||}t ||}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||}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 ddddgddddgg}t ddddgddddgg}t 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 ddddddddddg
}t ddddddddddg
}ttj. t||\}}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 ddddddddddg
}t 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}d	}t | |}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	}d	}t | |}t|d
 |d
  t|d |d  dddddddg} dddddddg}d}t | |}t|d
 |d
  t|d |d  dddddddg} dddddddg}d}t | |}t|d
 |d
  t|d |d  td} td}d}t | |}t|d
 |d
  t|d |d  |d }|d |d< ||d< d}t | |}t|d
 |d
  t|d |d  |d }|d |d< ||d< d}t | |}t|d
 |d
  t|d |d  td} tdd d d }d}t | |}t|d
 |d
  t|d |d  |d }|d |d< ||d< d}t | |}t|d
 |d
  t|d |d  |d }|d |d< ||d< d}t | |}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}d}t ||}t|d
 |d
  t|d |d  d}t ||}t|| tt dddgdddgtj	tj	f tt dd
dgdddgtj	tj	f tt dddgdd
dgtj	tj	f tt g g tj	tj	f tj
d ttj
jddddtj
jddddg} ddgddgg}ttj|| } d }t | d
 | d }t|d
 |d
  t|d |d  tt dddgdddgd
 d td!} tj	| d"< tt | | tj	tj	f tt j| | d#d$d%d&d' tt j| | d#d(d)d*d&d' ttt j| | d+d$ ttt j| | d,d$ td!} td-}ttt j| | t g g \}	}
ttj	|	 ttj	|
 t d
gd
g\}	}
ttj	|	 ttj	|
 tjd.td/} tj| d0} tjd.td/}t|d1d  |d d1 f}ttt | |d  d S )2Nr   r   r   r   r   r   r   r   )g        g      ?r   )gJ$I¿gmK?)gJkaa?g      ?r?   )g      ?gxO~>)g?>?gaV>)g}'}'?go&5>rM   )g      gxO~>)g?>gaV>)g}'}'go&5>exact)methodZbanana   )gg}+޿g`=i?)r   r   iz  i  )r   r   rO   g      ?g333333?)g\zf?g^n)=g      $@r   rA   )rB   )g      ?g/>gư>)r   Z
asymptotic)rB   r	  )g      ?g&?rC   rD   g      4@i  )r0   i  i  )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d xtddD ]} g }xt| D ]}||g| 7 }q*W t|}t j| t j| t||}t||}t	|d |d  t	|d |d  qW d S )N*   r   r?   r   r   )
r6   r   r   r   r   shufflemstats_basicr  r$   r   )srs   irw   r   r   r+   r+   r,   test_kendalltau_vs_mstats_basicH  s    r  c              C   s\   ddddg} t jdddg}tj| |dd}t| 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$   r  r	   r   )rH   r(   r1r2r+   r+   r,   test_kendalltau_nan_2nd_argX  s
    r  c              C   s>  dddddg} dddddg}t | |\}}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 tj| tjd|\}}t|d t tj| tjd|\}}t|d t tj| tjdtj|tjd\}}t|d t g g \}}ttj| ttj| t 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 | |\}}t|d ddtjddg} t | |\}}t|d d S )Nr
  r   r   r   r   r   gs$F)additivegROoc             S   s   dS )Nr   r+   )rH   r+   r+   r,   <lambda>l      z"test_weightedtau.<locals>.<lambda>)weighergg}+޿)rankgڿgn)r  r  g @ڿg[đ(gIکnTc             S   s   dS )Nr   r+   )rH   r+   r+   r,   r    r  )r  r  c             S   s   dS )Nr   r+   )rH   r+   r+   r,   r    r  )r0   )r$   weightedtaur   r   r6   r:   r   r   int16rF   rG   )rH   r(   r  r  r+   r+   r,   test_weightedtaub  sj    











(

r"  c               C   s6   t dgdg t dgdg t tjgdg d S )Nr   g      ?4   )r$   r   r6   r:   r+   r+   r+   r,   test_segfault_issue_9710  s    r$  c              C   s   d} t | }t | }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 | d	 t}t | d	 t}t j|d< tj||dd
d\}}t|d d S )N   r  )r	  g        rM   r   r   rA   )r	  rB   )r6   r   r$   r  r   r   r   r:   )r   rH   r(   _r   r+   r+   r,   test_kendall_tau_large  s     





r)  c        
   
   C   s   dd } t jd xtddD ]}g }xt|D ]}||g| 7 }q2W t|}t j| t j| t jt|t jd}x`tdD ]T}xBdD ]:}| |||d	d
 |}t	
|||dd
 |j}	t||	 qW t 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||  t||	  S )Nr   )r   lenr6   rN   )rH   r(   r  r  addZtotZconcZdiscuvr  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,   r    r  z/test_weightedtau_vs_quadratic.<locals>.<lambda>c             S   s   d| d  S )Ng      ?r   r+   )rH   r+   r+   r,   r    r  )r6   r   r   r   r   r  r   r*  Zintpr$   r   r   r   )
r0  r  rs   r  rw   r  r(  r+  r   r   r+   r+   r,   test_weightedtau_vs_quadratic  s     
r1  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 |\}}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 |\}}t|g  t|g  qW d S )Nr?   r   2      (   )r$   r3  r   )r'   rs   Zrepeatedcountsr+   r+   r,   test_empty_result  s    
z!TestFindRepeats.test_empty_resultN)rQ   rR   rS   rx   r9  r+   r+   r+   r,   r2    s   r2  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 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 tt}|d }|d }t|d t|d d S )Nr   r   g        g      ?)r$   r;  r%   r   )r'   r(   r<  rV   r+   r+   r,   test_regressXX   s
    
zTestRegression.test_regressXXc             C   s4   t tt}|d }|d }t|d t|d d S )Nr   r   g        )r$   r;  r%   ZEROr   )r'   r(   r<  rV   r+   r+   r,   test_regressZEROX  s
    
z TestRegression.test_regressZEROXc             C   sZ   t ddd}dt ddd d }|t t ddd7 }t||}t|d d d S )Nr   r   g?r?   r   r   g4_Qc?)r6   linspacesinr$   r;  r   )r'   rH   r(   r   r+   r+   r,   test_regress_simple  s
    z"TestRegression.test_regress_simplec             C   sf   t ddd}dt ddd d }|t t ddd7 }t ||f}t|}t|d d d S )Nr   r   g?r?   r   r   g4_Qc?)r6   rA  rB  vstackr$   r;  r   )r'   rH   r(   rowsr   r+   r+   r,   test_regress_simple_onearg_rows$  s    
z.TestRegression.test_regress_simple_onearg_rowsc             C   sv   t ddd}dt ddd d }|t t ddd7 }t t |dt |df}t|}t|d d d S )	Nr   r   g?r?   r   r   r   g4_Qc?)r6   rA  rB  hstackZexpand_dimsr$   r;  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d d S )N)r   r   )rF   rG   r$   r;  r6   ones)r'   r+   r+   r,   test_regress_shape_error7  s    z'TestRegression.test_regress_shape_errorc             C   s\   t d}t dd}|ddg  d8  < |ddg  d7  < d}tt|||d	d
 d S )Nr   r   r   r   r&  r   rM   )g      ?g      @gePUn?g.bt>gڽE?   )r2   )r6   r   r   r$   r;  )r'   rH   r(   r   r+   r+   r,   test_linregress<  s    
zTestRegression.test_linregressc             C   sz   d\}}t |d| |}t d| ||}t|| t||}t|d dk t|d d tt |d   d S )N)gJr 11i r   rM   r   )r6   rA  r$   r;  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 ddd}dt ddd d }|t t ddd7 }t||}d}t|| d S )Nr   r   g?r?   r   )sloper<  rvaluer   stderr)r6   rA  rB  r$   r;  r   )r'   rH   r(   r   r   r+   r+   r,   !test_linregress_result_attributesR  s    z0TestRegression.test_linregress_result_attributesc             C   sB   t d}t dd}t||}t|d d t|d d d S )Nr   r   r   g        r   )r6   r   r$   r;  r   )r'   rH   r(   r   r+   r+   r,   test_regress_two_inputs\  s
    
z&TestRegression.test_regress_two_inputsc             C   s@   t d}t d}t||}t|d d t|d d d S )Nr   r   g      ?r   g        )r6   r   rJ  r$   r;  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=}d>}d?}t ||}t|j| t|j| t|jd@ | d S )ANg?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   )r$   r;  r   rO  r<  rP  )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$   r;  )r'   r+   r+   r,   test_empty_input  s    zTestRegression.test_empty_inputc          	   C   sV   t d}t j|d< t jdd, tt||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$   r;  )r'   rH   r+   r+   r,   test_nan_input  s
    

zTestRegression.test_nan_inputN)rQ   rR   rS   r=  r>  r@  rC  rF  rI  rK  rM  rN  rR  rS  rT  rU  rV  rZ  r+   r+   r+   r,   r:    s   		
	

		r:  c              C   s   t 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 ||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   )rO  r<  lowerupperrH   r(   r+   r+   r,   test_theilslopes  s    


rb  c              C   s   ddddddg} t j| dd\}}}}t|t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      @)g      ?r   )rc  Zdefaultreallimits)Zcumcountr@   binsizeextrapoints)r$   Zcumfreqr   r6   r   r   r   )rH   Zcumfreqslowlimrd  re  r   r   r+   r+   r,   test_cumfreq  s    rg  c              C   s   t 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   )rc  g      ?gK}\UU?)Z	frequencyr@   rd  re  )r6   r   r$   Zrelfreqr   r   )rs   Zrelfreqsrf  rd  re  r   r   Z	relfreqs2r+   r+   r,   test_relfreq  s    
rh  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   ir&  r   r   r   r   g      @g      @)Za1a2a3)r'   r+   r+   r,   setup_method  s    z"TestScoreatpercentile.setup_methodc             C   sF   t dd }tt|dd tt|dd tt|dd d S )	Nr   g      ?r   g        r   g      @r5  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dddgdd	d
 t|t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dddgdd	ddd
 t|tdddgddddd d S )Nr?   r5  g      @)r   r   r   )r   r   )limitr   )r?   r   r^  )r   r?   g      @fraction)interpolation_method)ro  rq  )r$   rn  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ddd
gddddd t|tddd
gdddd	d
 t|tddd
gddddd t|tddd
gdddd	d d S )Nr?   r5  r`  )rq  r   higherr   )r   r   )ro  rq  r   )r   r   r   )r?   r   )r   r?   )r$   rn  r   r   r   r6   r   )r'   rr  r+   r+   r,   test_lower_higher  s*    z'TestScoreatpercentile.test_lower_higherc          	   C   s   t dd }tdddg}t|dddg}t|| tt|tj tt|tdddg| tjt d	d	t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   r5  r
  )r   r   r   )r1   r   gQ?gQ@g(\ @r   r   r   )
r   r6   r   r$   rn  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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 |d}t|jd t|d t j|ddd}t|jd t|dddg d S )Nr
  r   r   )r   r5  r   g      @g      @g      &@r   r   r   r   r   r   r?   r   r   )r1   g      ?g      @g     !@g      ?g      #@r   r5  r+   g      ?)r   )r$   rn  r   r5   r   r   r   )r'   rr  rH   Zr0r  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   8   rD   )rq  e   rM   )rF   rG   r$   rn  )r'   r+   r+   r,   test_exception'  s    z$TestScoreatpercentile.test_exceptionc             C   sT   t tg dtj t ttg g gdtj t tg ddgtjtjg d S )Nr5  c   )r   r$   rn  r6   r:   r   )r'   r+   r+   r,   
test_empty-  s    z TestScoreatpercentile.test_emptyN)rQ   rR   rS   rm  rx   rs  ru  rw  ry  r|  r~  r+   r+   r+   r,   ri    s   ri  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| }t }|t t|}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;   r-  )r'   r+   r,   _check_itemfreq9  s    
z8TestItemfreq.test_numeric_types.<locals>._check_itemfreq)r6   r   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t||}||d d < tt||}||d d < t }|t t	|}W d Q R X t
|d d df | d S )NOr   )rs   rw   r6   emptyr*  r   r  r  r$   r  r   )r'   rs   rw   r  aabbr;   r-  r+   r+   r,   test_object_arraysF  s    
zTestItemfreq.test_object_arraysc          	   C   s   | j | j }}ddg}ttt|||}ttt|||}t }|t t	
|}W d Q R X tt|d t|d  d S )N) r  )r   r   r   )rs   rw   r6   r   r   r   r   r  r  r$   r  r   tuple)r'   rs   rw   r  r  r  r;   r-  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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 g \}}t|tg  t|tg  d S )N)r$   moder   r6   r   )r'   valsr8  r+   r+   r,   r~  _  s    zTestMode.test_emptyc             C   s6   t d\}}t|tdg t|tdg d S )Ng      @r   )r$   r  r   r6   r   )r'   r  r8  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 |}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 |||||g}tj|d d}t|d t dg t|d t dg tj|dd}t|d t ddddgg t|d t d	d
d
d	gg tj|dd}t|d t dgdgdgdgdgg t|d t d	gdgd
gdgd
gg d S )Nr?   r6  r7  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 |}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|}t|d d d t|d d d d S )	Nr?   TZhello)r   )r0   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d	 t	
|}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   r   r   r   )r   )r0   r   )r   r   r   r   )r  r6   r  r   r*  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 |}d	}t|| t |}t|| d S )
Nr   r   r   r?   r  r   r   r   )r  count)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|}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   )r   r   rA   )rB   rC   rD   )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dkrL|jjdksPtt |jdkrl|jjdkspt|t j	gg }t j|td}tj|dd}t |jdkr|jjdkstt |jdkr|jjdkstd S )	NZ	OxidationZPolymerizationZ	Reduction)r0   r   )r1   )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 |td t| j}W d Q R X W d Q R X tt	| t| j
}t|d t| j
}ttj| j
ddt||d   tj| j
dd td}tj|d	< tt|tj ttj|d
dd tttj|dd tttj|dd d S )NrW  )rX  z!Degrees of freedom <= 0 for sliceg㝎?r   )r.   r   g      $@r   rA   )rB   gH=6?rC   rD   )r   r6   rY  r  r9   r$   Zsemscalar_testcaser   r   testcaser   r*  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}ddddg}t||dd d S )NgOT\wg%ܿg%?gOT\w?r
  )r2   )r$   zmapr  r   )r'   r(   desiredr+   r+   r,   	test_zmap  s    zTestVariability.test_zmapc       	      C   s   t ddddgddddgddddgg}dt d }t dd }t 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 dgddddgg}t|| t|| d S )Ng        g      ?g       @gUUUUUU?g      @r   r   )r1   r   r   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 ddddgddddgg}tj||ddd}t ddddgdt d	  }t d
dddgt d }t|d | t|d | d S )Ng        g      ?g       @g      @r   )r1   r.   g      g      ?r   g      g      ?g?r   )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}ddddg}t||dd d S )NgOT\wg%ܿg%?gOT\w?r
  )r2   )r$   zscorer  r   )r'   r(   r  r+   r+   r,   test_zscore!  s    zTestVariability.test_zscorec       	      C   s   t ddddgddddgddddgg}dt d }t dd }t 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 dgddddgg}t|| t|| d S )Ng        g      ?g       @gUUUUUU?g      @r   r   )r1   r   r   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 ddddgddddgg}tj|ddd}t ddddgdt d	  }t d
dddgt d }t|d | t|d | d S )Ng        g      ?g       @g      @r   )r1   r.   g      g      ?r   g      g      ?g?r   )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 ddt jddg}tj|dd}tt |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 ddt jddg}tj|dd}t 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 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	
dddddgdd Zej	
ddeejddgfdeejejdgfgdd Zej	
dddddgfdgdd Zdd  ZdS )!TestMedianAbsDeviationc             C   s~   t 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 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dd}tj|dd}t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 ddddt jgdddddgg}tj|dd	}t|t 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 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 d}tj||d}t|t j|j|dt jd d S )N)r   r   r   )r1   )
fill_value)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 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      (@)Ng      @c          	   C   sX   t 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
  ir   rA   )centerrB   r1   gV瞯<)r   rq   )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)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 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 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  }|t t|}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 d}t ,}|t tj|dd}tj|dd}W d Q R X t|t j t|t 	t jt jt jg t|j
d d S )N)r   r   r   )r1   r   )r   )r6   rJ  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 d}t :}|t tj|dd}tj|dd}tj|dd}W d Q R X t|t j t|t 	t jt jgt jt jgt jt jgg t|j
d t|t j d S )N)r   r   r   r   )r1   r   r   )r   r   )r6   rJ  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   }|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  }|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}|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}|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   r*  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 dd }t j| tt|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 d}t| t|d  t|d t|d t|d d t|d dd t|d ddd	 t|d d
ddd t|d ddddd d S )N)r   r   r   )r   r   )r?   Z   )r6  r   g      ?)r   r   g      ?r   )r5  r5  r   rC   lineargٿrA   r`  T)r6   rJ  r$   r  )r'   dr+   r+   r,   test_api  s    

zTestIQR.test_apic             C   s.   t tg tj t tt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 d}tt|d ttj|ddt d ttj|ddt 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 dt d }ttj|ddt d ttj|ddt d ttj|ddt dd ttj|ddt d ttj|ddt dd ttj|ddt dd d S )N)r   r   g        r   )r1   r   r   r   r  )interpolationmidpointnearestr`  rt  )r   r   r   r   )r   r   )r   r   r   )r   r   g      @)r   r   )r   r   r   g      @)r   r   )	r6   rJ  r   r$   r  r   r   r   r7   )r'   rH   r(   r+   r+   r,   test_constant  s     
zTestIQR.test_constantc             C   sL   t dd }tt|d d tt|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 dd}tt|d ttj|ddt dd ttj|ddt d	d
 ttj|ddd ttj|ddd d S )Nr   )r   r   g      @r   )r1   r   g      @r   r   g       @)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 |gd }t|}ttj|dd| t |dd}ttj|dd| |dd	}ttj|d
d| |dd	}ttj|ddtj|d d ttj|ddtj|dd t 	d}t j
| |d}ttj|ddd t|d d d d d d df   ttj|ddd	 t|d d d d d	d d f   ttj|ddd t|d d d d dd d f   ttj|ddd t|dd d d d d d f   ttj|ddd t|dd	d d d d f   ttj|ddd t|dd d d d d	f   ttj|ddd t|dd d dd d f   tt jtj|dd tttj|dd d S )N)G   r  )rO   r?   )r   r   )r1   rM   r   )r   r   r   )r   r   )r   r   r   )r   i  )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   dstackr$   r  r   rollaxisZswapaxesr   r  r5   ravelrF   	AxisErrorrG   )r'   orH   qr  r+   r+   r,   ry  0  s@    


(((($$$zTestIQR.test_axisc             C   s   t d}tt|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   g     U@)rngg      @)g      )@r   )r?   r5  g?)r   r{  r   )r   r5  <   )
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 d}t d}tt|d tt|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  rt  )r   P   )r   r  r   r`  r  r   r  g      @rD   )r6   r   r   r$   r  rF   rG   )r'   rH   r(   r+   r+   r,   test_interpolationd  s$    

zTestIQR.test_interpolationc             C   s^  t 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 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 )N)r   r   r   r   F)r1   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   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   )r6   rJ  r   r$   r  r   )r'   rH   r+   r+   r,   test_keepdims  s    
zTestIQR.test_keepdimsc          	   C   s  t 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	d
f t	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	d ttj|ddd ttj|dddt 
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   r   r   r   g      @g      @Zbarfood)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 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d t
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 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   g=V^w@g       @g      @)r   r   T)r8   r  r   )r   rB   r   )r1   r   rB   r   gF7k?rA   g      @g	I1=@g      @rD   )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  ry  r  r  r  r
  r  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d e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^Ic             C   s  t | j}t|d t | jd}t|d t | jd}t|dd t | jd}t|d t | jd}t|d t | jd	}t|d
 t | jdddd	g}t|dddd
g t | jd}t|d ttt j| jd t | jddddg}t|dddd
g t g }t|t	j
 t	d}t	j
|d< tt |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 dddt}t j|d< tj|dddd}t jj	|dt jgd	d
 d S )Nr   r   rM   )r   r   r   r   )r1   rB   g      ?gV瞯<)rq   )
r6   r   r5   r   r   r:   r$   r  r   r	   )r'   rs   mmr+   r+   r,   test_moment_propagate_nan	  s    
z%TestMoments.test_moment_propagate_nanc             C   s   t | j}t|d t | j}t|dd td}tj|d< tt |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 dddt}t j|d< tj|ddd}t jj	|dt jgd	d
 d S )Nr   r   rM   )r   r   r   r   )r1   rB   g5Fu?gV瞯<)rq   )
r6   r   r5   r   r   r:   r$   r  r   r	   )r'   rs   vvr+   r+   r,   test_variation_propagate_nan	  s    
z(TestMoments.test_variation_propagate_nanc          	   C   s   t | j}t|d t | j}t|dd t j| jdd}t|dd t | j}t|dd td}tj|d< tj	d	d
 t
t |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   rW  )rX  rA   )rB   rC   rD   )r$   skewr  r   testmathworksr  r6   r   r:   rY  r   rF   rG   )r'   r(   rH   r+   r+   r,   test_skewness'	  s    


zTestMoments.test_skewnessc             C   s   t ttdd d S )Nr?   g        )r   r$   r  r   )r'   r+   r+   r,   test_skewness_scalar<	  s    z TestMoments.test_skewness_scalarc          	   C   sf   t ddd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   rM   )r   r   rW  )rX  r   r   )r1   rB   r   gV瞯<)rq   )r6   r   r5   r   r   r:   rY  r$   r  r   r	   )r'   rs   r  r+   r+   r,   test_skew_propagate_nan@	  s
    
z#TestMoments.test_skew_propagate_nanc             C   s   t | j}t|d t j| jdddd}t|dd t j| jddd}t|dd t | jdd}t|d td	}tj|d
< t	t |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   )fisherr  gO߻S@r?   gx|N@g=
ףp=?g      $@r   rA   )rB   gGzrC   rD   )r$   kurtosisr  r   r  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dddgt d S )Nr   r   r   )r   typer$   r  r   )r'   r+   r+   r,   test_kurtosis_array_scalard	  s    z&TestMoments.test_kurtosis_array_scalarc             C   sN   t dddt}t j|d< tj|ddd}t jj	|dt jgd	d
 d S )Nr   r   rM   )r   r   r   r   )r1   rB   g(\gV瞯<)rq   )
r6   r   r5   r   r   r:   r$   r  r   r	   )r'   rs   kr+   r+   r,   test_kurtosis_propagate_nang	  s    
z'TestMoments.test_kurtosis_propagate_nanc             C   s6   | j t| j  }tt|d t| j d d S )Nr  )testcase_moment_accuracyr6   r  r	   r   r$   r  )r'   Z
tc_no_meanr+   r+   r,   test_moment_accuracyo	  s    z TestMoments.test_moment_accuracyN)rQ   rR   rS   r   r  r  r6   r   r   r   r"  r  r  r  r  r  r  r  r  r  r  r!  r#  r+   r+   r+   r,   r    s"   	%	r  c               @   sT   e Zd ZedddgZe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 )TestStudentTestrM   r   r   r   g {g?g {gB4t?g {?c          
   C   s  t  :}tjdd" |td tdd\}}W d Q R X W d Q R X tt| tt| t| j	d\}}t
|| j t
|| j t| j	d}d}t|| t| jd\}}t
|| j t
|| j t| j	d\}}t
|| j t
|| j t| j	d	\}}t
|| j t
|| j tjd
 tjjdddd}tj|d< tjdd^ tt|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 )NrW  )rX  z!Degrees of freedom <= 0 for sliceg      @g      @r   )	statisticr   r   r   it r   r?   3   )r   r   rO   r5  g      @rA   )rB   )g̈́^Bg/kCm?rC   rD   )r   r6   rY  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_onesampleN)rQ   rR   rS   r6   r   r(  r+  r)  r*  r.  r/  r0  r1  r,  r-  r5  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d
d d|d| q0W x8dD ]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 x8dD ]0\}}t| ddddddddddg
d|d| qW x4dD ],}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| q.W x:dD ]2\}}t| d
dddddddddg
d|d| qjW x6dD ].}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| qW x:d D ]2\}}t| d
dddddddddg
d|d| qW x<d!D ]4\}}}t| d
dddddddddg
||d| qVW tt| dddddgdd"d d S )#Nr   r   r   r   r   r   r   r   r   r?   g      D@))r  g     A@)strictg      >@)weakg      D@)kind))r  g     F@)r6  g      >@)r7  g      I@)r  g      D@g      I@))r  g      I@)r  g     F@)r6  g      >@)r7  g      N@)r  r  r6  r7  r   r6  r   r7  r5  r  F   r  r  r   ))r  g     F@)r6  g      >@)r7  g      N@n   g      >@))r  g      $@)r  g      @)r6  g        )r7  g      $@))r  g      Y@)r  g     W@)r6  g     V@)r7  g      Y@))r  r   g      Y@)r  r   g      Y@)r  r   g        Zunrecognized)r$   Zpercentileofscorer   r6   r   rF   rG   )Zpcosr8  r  rx  r+   r+   r,   test_percentileofscore	  sH    $",$,
,
r;  ZCasef_obsf_expr.   r1   chi2logmod_logcrr
  g       @gUUUUUU?gfx(@)r<  r=  r.   r1   r>  r?  r@  rA  r      g      @g      ?g{T4@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 |}|d kr|j}nt ||}|j| }t d}	|	td tj	|||||d\}
}t
|
| |dksv|dkrtj||||d\}
}t
|
| W d Q R X t |}t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   rD  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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 )NrE  r   zlog-likelihoodzmod-log-likelihoodzcressie-readgUUUUUU?)
power_div_1d_casesrM  r<  r=  r.   r1   r>  r?  r@  rA  )r'   caser+   r+   r,   rx   Z
  s,    






zTestPowerDivergence.test_basicc          	   C   s   xt D ]}tj|j}| ||j|j|jd |j	 | ||j|j|jd|j	 | ||j|j|jd|j	 | ||j|j|jd|j
 | ||j|j|jd|j | ||j|j|jd|j | ||j|j|jd|j qW d S )NrE  r   zlog-likelihoodzmod-log-likelihoodzcressie-readgUUUUUU?)rN  r6   r  r   r<  rM  r=  r.   r1   r>  r?  r@  rA  )r'   rO  mobsr+   r+   r,   test_basic_maskedr
  s.    






z%TestPowerDivergence.test_basic_maskedc          	   C   s   t d }t d }t|j|jf}tt|jt|j |jf}| ||ddd|j|jg | ||ddd|j	|j	g | ||ddd|j
|j
g | ||ddd|j|jg | t|jddd dd d|j d S )Nr   r   rE  zlog-likelihoodzmod-log-likelihoodzcressie-readr   )rN  r6   rD  r<  	ones_liker  r=  rM  r>  r?  r@  rA  r   r5   )r'   case0case1r<  r=  r+   r+   r,   ry  
  s(    
zTestPowerDivergence.test_axisc             C   s   t d }t d }t|j|jfj}tt|jt|j |jfj}|j|jg}t	dgdgg}t
j|||d\}}t|| t
j|||d d\}	}
t
j|||d d\}}t|t|
|f d S )Nr   r   )r.   )r   r   )r   r   )rN  r6   rD  r<  r   rR  r  r=  r>  r   r$   rG  r	   r   )r'   rS  rT  r<  r=  Zexpected_chi2r.   rL  ry   Zstat0Zp0Zstat1p1r+   r+   r,   test_ddof_broadcasting
  s    
z*TestPowerDivergence.test_ddof_broadcastingc          
   C   s   t   xtD ]|}| |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 W d Q R X d S )NrE  zlog-likelihoodzmod-log-likelihoodzcressie-read)r  r  power_div_empty_casesrM  r<  r=  r.   r1   r>  r?  r@  rA  )r'   rO  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   rE  )r<  r=  r.   r1   rD  )r%  r   )rN  r<  r=  r.   r1   r$   rG  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   rM  rx   rQ  ry  rV  rX  rY  r+   r+   r+   r,   rC  =
  s   rC  zn, dtyper   i@B c             C   sN   t j| dg|d}t j| d | d g|d}t||\}}t|| dd d S )Nr   )r0   r   gvIh%<=)r   )r6   r   r$   rH  r	   )r   r0   obsexprL  ry   r+   r+   r,   test_chiquare_data_types
  s    r\  c           
   C   s  t dddddgdddddggj} t ddddd	gd	d	dddggj}t j| |}t d
dg}t ddt d dt d   ddt d dt d   g}tjj}t	|\}}t
|| t
||||jddd	  tj|dd\}}t
j||dd t
||||jddd	  tj	|jd	d\}}t
|| t
||||jjd	dd	  tj|jd	dd\}}t
j||dd t
||||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
|d tj	t jd	ddgd d\}}tt|t j tt|t j t|d t|tjjdd t jdd: t (}|td t	t jg \}}W d Q R X W d Q R X tt|t jj t|jd t|j t jg g g g}t	|\}}tt|t jj t
|g  t jdd4 t "}|td t	|j\}}W d Q R X W d Q R X tt|t jj t|jd  tt |j d S )!Nr   r       rM   r   r   r   r   r   g      8@g      ?r   g       @g      ?g      ?)r1   zlog-likelihood)rD  r   )r2   )r1   rD  r   r}  r?   )mask)r=  g      ?rW  )rX  zMean of empty slicer+   )r   )r6   r   r   r  Zmasked_arrayr?  r$   rI  r>  rH  matr   r   rJ  r  rG  r   rv  r   r   r   rY  r   r  r9   ZMaskedArrayr   r^  r   )rZ  r^  rP  Zexpected_chisqZ
expected_gr>  Zchisqry   gZobs1Zexp1r;   Zempty3r+   r+   r,   test_chisquare_masked_arrays
  sd    $$"$$$ 
*
$ra  c           &   C   s   t ddddddddd	d
dd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!} t d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAg d d!}xJ|D ]B\}}tj| d d dBf | d d df |dC\}}t||dDdE qW d S )FNr   gd;OW.@r   gCl+@rL  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@rM   r   g      $g    @g      g     r@g      gffffffP@g       gLD@g      g      A@g      g     =@g      g     :@g        g8@g      ?gffffff7@gq=
ףp?g7@g      ?g333336@g      ?g6@g       @gfffff6@g      @g8@g      @g     A@g      $@g     j@r   )rD  g{Gzt?)r   )r6   r   r5   r$   rG  r	   )Ztable4Ztable5rD  rK  rL  ry   r+   r+   r,   /test_power_divergence_against_cressie_read_data1  sT    

 rc  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| dK | d6 | d5 | d3 dL tt|dK |d6 |d5 |d3 dM tt|dK |d6 |d5 |d3 dN tttj|dK |d6  dO}tj|  }t|| tt| dK | d6 | d5 | d3 dL tt|dK |d6 |d5 |d3 dN tttj|dK |d6  d S )PNg"~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   )gNt$@gBv?)g
__2@g5"]i2?)g\(\%@g+ԋ?)r%  r   )r   r   r$   ZfriedmanchisquarerF   rG   r   mstats)r   r   r   r   r   r+   r+   r,   test_friedmanchisquareg  sB    "   

re  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.autorL  c       	      C   s8   t j|d||d}t||g}tt|||d d S )Nr2  )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|||d d S )Nr2  )r   r  )r2   )r$   rh  ks_1sampr2  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 ddd}d}t|d}t|| d S )NrM   r   r   )r%  r   r2  )r6   rA  r$   rh  r   )r'   rH   r   r   r+   r+   r,   test_namedtuple_attributes  s    z%TestKSTest.test_namedtuple_attributesc          
   C   s|   t ddd}| |d t ddd}| |d ddd	d
ddddddg
}| |d | j|ddd | j|ddd d S )NrM   r   r   z	two-sidedir   gGzgQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzr   r  )r  r   )r6   rA  rn  )r'   rH   r+   r+   r,   test_agree_with_ks_1samp  s    z#TestKSTest.test_agree_with_ks_1sampN)rg  rL  )rg  rL  )rQ   rR   rS   r   rk  rn  ro  rp  r+   r+   r+   r,   rf    s
   

rf  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.rg  rL  c       	      C   s<   t j|t jj||d}t||g}tt|||d d S )N)r   r  )r2   )r$   rl  r2  rm  r6   r   r   )	r'   rH   r   ri  rj  r  r2   r  r   r+   r+   r,   rk    s    zTestKSOneSample._testOnec             C   s0   t ddd}d}t|tjj}t|| d S )NrM   r   r   )r%  r   )r6   rA  r$   rl  r2  rm  r   )r'   rH   r   r   r+   r+   r,   ro    s    z*TestKSOneSample.test_namedtuple_attributesc          
   C   s   t ddd}| |ddd t ddd}| |dd	d
 ddddddddddg
}| |ddd | j|ddddd | j|ddddd d S )NrM   r   r   z	two-sidedg|N?g7.s?ir   g{CTp?g M<b*?gGzgQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzgZL?g86J4?r   g+?r  )r  r   gHD?gr?)r6   rA  rk  )r'   rH   r+   r+   r,   test_agree_with_r  s    z!TestKSOneSample.test_agree_with_rc             C   sT   t jd tjjddd}| j|ddddd	 | |d
dd | |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$   r2  r3  rk  )r'   rH   r+   r+   r,   test_known_examples  s
    z#TestKSOneSample.test_known_examplesc             C   s   t tttjdd ttdd tddd W d Q R X t ttddd tddd	d
ddddddddddg}tt|ddj	t
ttgd d S )Nr   Tzn is not integral: 1.5)rE   g      ?rM   )r{  r   Tg      ?)r{  g?Tg      ?)r{  r   Tg        )r{  gTg        )r]  g      ?Tg        )r]  g      ?Fg      ?)r]  g      ?Tgb?)r]  g      ?FgiNq>)r]  g      ?Tgv(?)r]  g      ?TgT	?)i@  g\(\?Fg        )i@  g      ?Fg(>)i@  gQ?Fg@c?)i@  g      ?FgX+ʳP?)r   r   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)rg  rL  )	rQ   rR   rS   r   rk  ro  rr  rt  rx  r+   r+   r+   r,   rq    s   
rq  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.rg  c       	      C   s4   t j||||d}t||g}tt|| d S )N)r  )r$   ks_2sampr6   r   r   )	r'   r   r   r   ri  rj  r  r  r   r+   r+   r,   rk    s    zTestKSTwoSamples._testOnec             C   s   |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd |  dgdgddd d S )	Nr   r   z	two-sidedg      ?r   g      ?r   g        )rk  )r'   r+   r+   r,   	testSmall  s    zTestKSTwoSamples.testSmallc             C   s   t ddg}|d }|d }t dddg}| ||ddd | ||ddd | ||d	dd | ||dd
d | ||dd
d | ||d	dd d S )Ng      ?g       @g{Gz?g      @z	two-sidedgUUUUUU?r   gffffff?r   gUUUUUU?g333333?g333333?r   )r6   r   rk  )r'   r  data1pdata1mr  r+   r+   r,   testTwoVsThree  s    zTestKSTwoSamples.testTwoVsThreec             C   s   t ddg}|d }|d }t ddddg}| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Ng      ?g       @g{Gz?g      @g      @z	two-sidedg      ?g?r   g?r   g      ?g?g      ?g?g?r   )r6   r   rk  )r'   r  r|  r}  r  r+   r+   r,   testTwoVsFour  s    zTestKSTwoSamples.testTwoVsFourc             C   s   t ddd}|d d }|d d }| ||ddd | ||ddd	 | ||d
dd | ||ddd | ||ddd | ||d
dd d S )Nr   r   r   g?z	two-sidedgQ?g~z?r   gz;.B?r   r   g      ?g{Gz?gn2IU?)r6   rA  rk  )r'   x100Z	x100_2_p1Z	x100_2_m1r+   r+   r,   test100_100,  s    zTestKSTwoSamples.test100_100c             C   s   t ddd}t ddd}|d d }|d d }| ||ddd | ||d	dd
 | ||ddd | ||ddd | ||d	dd | ||ddd d S )Nr   r   r:  r   g?z	two-sidedg?g@߿?r   g}n?r   r   g:[?g]O);?gѫ);?g        g      ?)r6   rA  rk  )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}| ||d
dd | ||ddd | ||ddd | ||d
dd | ||ddd | ||ddd d S )Nr   r   r   r   r   )r0   r   r?   r   z	two-sidedg      ?g^dH?r   gQl6y?r   g        g      ?gVdEVdE?g(f^?g!?gii?g+ ϖ?)r6   r   rv  rk  )r'   Zx2233Zx3344Zx2356Zx3467r+   r+   r,   testRepeatedValuesD  s    222z#TestKSTwoSamples.testRepeatedValuesc             C   s   t 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	dd d S )Ng      ?g       @g      @r   z	two-sidedgUUUUUU?r   g      ?r   g        g      ?)r6   r   rk  )r'   r  r+   r+   r,   testEqualSizesP  s    zTestKSTwoSamples.testEqualSizesc          	   C   s^  d\}}d| | d d }t dd|| }t 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}|td | j||dd| | ddd	 | j||dd| | ddd	 W d Q R X tjdd:}td | j||dd| | ddd	 t	|td W d Q R X d S )N)i  iX  g      ?r   r   r   z	two-sidedg     @@rg  )r  rs  r   g2JE?r   g     @@gsW\nc?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r  T)r8   r  )
r6   rA  rk  r   r  r9   r  r  r	  r  )r'   n1n2deltarH   r(   r;   r/  r+   r+   r,   testMiddlingBoth\  s     (
z!TestKSTwoSamples.testMiddlingBothc          	   C   s^  d\}}d| | d d }t dd|| }t 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}|td | j||dd| | ddd	 | j||dd| | ddd	 W d Q R X tjdd:}td | j||dd| | ddd	 t	|td W d Q R X d S )N)i  iL  g      ?r   r   r   z	two-sidedg     ȹ@rs  )r  rg  r   gZ?r   g     @@g@J?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r  T)r8   r  )
r6   rA  rk  r   r  r9   r  r  r	  r  )r'   r  r  r  rH   r(   r;   r/  r+   r+   r,   testMediumBothp  s     (
zTestKSTwoSamples.testMediumBothc             C   s   d\}}|d }d| | d d }t dd|| }t dd|}| ||dd	| d
 | ||dd| d | ||dd	| d d S )N)i'  r:  g      &@g      ?r   r   r   r   z	two-sidedg    `@g      <r   g     @g򼉷?r   gimb:)r6   rA  rk  )r'   r  r  lcmr  rH   r(   r+   r+   r,   	testLarge  s    zTestKSTwoSamples.testLargec             C   sz   t 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   rM   z	two-sidedgC?g      <rs  )r  r  )r6   r   r   r   printrk  )r'   rH   r(   r+   r+   r,   test_gh11184  s    zTestKSTwoSamples.test_gh11184c             C   s   t 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   rM   z	two-sidedg 	_r!?gAD5rs  )r  g      <r  r   gלN#y7r   gvqw?)r6   r   r   r   r  rk  )r'   rH   r(   r+   r+   r,   test_gh11184_bigger  s    z$TestKSTwoSamples.test_gh11184_biggerc          	   C   s  d\}}|d }d| | d d }t dd|| }t dd|}| j||dd| d	d
d | j||dd| ddd | j||dd| d	dd | ||dd| d | ||dd| d t F}|td | j||dd| ddd | j||dd| ddd W d Q R X d S )N)i'  i*  g      &@g      ?r   r   r   z	two-sidedg     @gkHY?rs  )r  gLɔ.?r  rg  r   g.LbG2?r   g      $@gr?֎?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.)r6   rA  rk  r   r  r9   )r'   r  r  r  r  rH   r(   r;   r+   r+   r,   testLargeBoth  s    zTestKSTwoSamples.testLargeBothc             C   s$   d}t ddgdg}t|| d S )N)r%  r   r   r   r   )r$   rz  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$   rz  )r'   r+   r+   r,   test_argument_checking  s    z'TestKSTwoSamples.test_argument_checkingc             C   sd   t 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   rs  )r   r  r   z	two-sidedN)r6   r   r   r$   uniformr3  rz  )r'   r  rvs1rvs2r+   r+   r,   test_gh12218  s    zTestKSTwoSamples.test_gh12218N)rg  )rQ   rR   rS   r   rk  r{  r~  r  r  r  r  r  r   r   r   r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   ry    s&   
	ry  c           
   C   s  d\} }| |  g||gf}t ddd}t ddd}t t dddt dddg}t t dddt 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	" |		t
d
 tdd\}}W d Q R X W d Q R X tt | tt | d}
tj||dd}t||
 t |||g}t |||g}tj||dd\}}tt ||  tt || t|jd tjt |dt |ddd\}}tt ||  tt || t|jd t 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||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dddgdddg\}}tt ||ft jdf t jdd	l ttdddgdddgt jt jf t dt jgddgg}tt|t ddt jgdt jgf W d Q R X t d }tttj|d!|d" d S )#N)gu?gȵI?r   r   g)\(?gKX@r   )r1   rW  )rX  z!Degrees of freedom <= 0 for sliceg      @g      @)r%  r   )r   r   r   )r   r   iNa r   r?   i  )r   r   rO   i  g?)r   rO   rA   )rB   )ghm#1?gry̧?rC   rD   rM   )r   r   rB  )r   r   )r   r   r   )r6   rA  r   r$   	ttest_relr   r   r   rY  r  r9   r   r   r   r  absr   r   r  r   r   r2  r3  r:   r   rF   rG   r   r   r   r5   )trr  tprr  r  rvs1_2Drvs2_2Dr4  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|d	d  | d	d  }t||dd t|d
dd d S )Ng       @g      @g      @g      ?rA   )rB   gV瞯<)rq   r   )r&  grh|?g-C6?)r6   r:   r$   r  r	   r%  r   )rH   r(   r  r  r3r+   r+   r,   test_ttest_rel_nan_2nd_arg%  s    r  c              C   s4   t g g } t| t j jstt| tjtjf d S )N)r$   r  rv  Ttest_relResultr   r   r6   r:   )r  r+   r+   r,   #test_ttest_rel_empty_1d_returns_nan:  s    r  zb, expected_shape)r   r   r   )r   r   )r   r   r   )r   r   c             C   sX   t d}tj|| dd}t|tjjs,tt j|t jd}t	|j
| t	|j| d S )N)r   r   r   rM   )r1   )r  )r6   r  r$   r  rv  r  r   r7   r:   r   r%  r   )rw   expected_shapers   r  expected_valuer+   r+   r,   test_ttest_rel_axis_size_zeroB  s    
r  c              C   sV   t d} t d}tj| |dd}t|tjjs6tt|jj	d t|j
j	d d S )N)r   r   r   )r   r   r   r   )r1   )r   r   )r6   r  r$   r  rv  r  r   r   r%  r   r   )rs   rw   r  r+   r+   r,    test_ttest_rel_nonaxis_size_zeroQ  s    

r  c             C   s   ddd}|| |||| S )Nr   c             S   s<   t | } 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   r  r+   r+   r,   _desc_stats^  s    
r  c           
   C   s  d} d}| |  g||gf}t ddd}t ddd}t ||g}t ||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
" |
td tdd\}}W d Q R X W d Q R X tt | tt | t |||g}t |||g}tj||dd\}}tt |t |  tt || t|jd tjt |dt |ddd\}}tt |t |  tt || t|jd t 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||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dddgdddg\}}tt ||ft jdf t j
d	d
l ttdddgdddgt jt jf t dt jgddgg}tt|t ddt jgdt jgf W d Q R X d S )Ng	ru?g8Mѱ?r   r   r   i   r   )r1   rW  )rX  z!Degrees of freedom <= 0 for sliceg      @g      @)r   r   r   )r   r   iNa r?   i  )r   r   rO   i  rA   )rB   )guͷ?g*,?rC   rD   rM   )r   r   )r6   rA  r   r$   	ttest_indr   ttest_ind_from_statsr  r   r   rY  r  r9   r   r   r  r   r  r   r   r  r   r   r2  r3  r:   r   rF   rG   r   r   )r  r  r  r  r  r  r  r4  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ddd}	tddd}
tddd}t||
g}t|
|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
|||g}t
|||g}t j||ddd\}}tt|t| tt|| t|jd t||dd}t j|ddi\}}tt|t| tt|| t|jd t jt|dt|dddd\}}tt|t| tt|| t|jd tt|dt|ddd}t j|ddi\}}tt|t| tt|| t|jd t jdddgdddgdd\}}tt||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dtjgddgg}tt j|tddddtjgdtjgf W d Q R X d S )N)r   r   r   )g?g333333@g@g9(?geF)	equal_varr  )r   r   r   r   gJ?g*ʿg	ru?g@[?gωұ?ghG?r   r   r   r   r  r   )r1   r  )r1   )r%  r   )r   r   r   )r   r   rW  )r   rM   )r   r   )r$   r  r   r  r  r6   rA  r   r   r   r  r   r  r   r   r  r   rY  r:   r   )rs   rw   r  r  r4  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    










 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|| d	d  }t||dd t|d
dd d S )Ng       @g      @g      @g      ?rA   )rB   gV瞯<)rq   r   )g8HgW@?)r6   r:   r$   r  r	   r%  r   )rH   r(   r  r  r  r+   r+   r,   test_ttest_ind_nan_2nd_arg  s    r  c              C   s4   t g g } t| t j jstt| tjtjf d S )N)r$   r  rv  Ttest_indResultr   r   r6   r:   )r  r+   r+   r,   #test_ttest_ind_empty_1d_returns_nan2  s    r  c             C   sX   t d}tj|| dd}t|tjjs,tt j|t jd}t	|j
| t	|j| d S )N)r   r   r   rM   )r1   )r  )r6   r  r$   r  rv  r  r   r7   r:   r   r%  r   )rw   r  rs   r  r  r+   r+   r,   test_ttest_ind_axis_size_zero:  s    
r  c              C   sV   t d} t d}tj| |dd}t|tjjs6tt|jj	d t|j
j	d d S )N)r   r   r   )r   r   r   r   )r1   )r   r   )r6   r  r$   r  rv  r  r   r   r%  r   r   )rs   rw   r  r+   r+   r,    test_ttest_ind_nonaxis_size_zeroI  s    

r  c              C   sV   t d} t d}tj| |dd}t|tjjs6tt|jj	d t|j
j	d d S )N)r   r   r   )r   r   r   r   )r1   )r   r   )r6   r  r$   r  rv  r  r   r   r%  r   r   )rs   rw   r  r+   r+   r,   2test_ttest_ind_nonaxis_size_zero_different_lengthsV  s    

r  c              C   sr   t ddgt ddg } }t ddgt ddg }}t ddgt dd	g }}t| ||||| d S )
Nr   r   r   r   r         r      )r6   r   r$   r  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2r+   r+   r,   test_gh5686d  s    r  c           	   C   s  d\} }}t jjdd| ||fd}t j|d d d d d d f t||fdd\}}t j|d d d d d d f ddd\}}t |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| |fdd\}}t j|d d d d d d f ddd\}}t |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| |fdd\}}t j|d d d d d d f ddd\}}t |ddd d f d\}}	t||dd	 t|d
 |dd	 t|j	| |f t dddgd\}
}tt
|
|ftjdf tjdd` tt dddgdtjtjf tdtjgddgg}tt |ddtjgdtjgf W d Q R X d S )N)r?   r   r   r   r?   )r   r   rO   r   )r1   r   rL  )r2   )r   r   r   rW  )r   rM   )r$   r2  r3  r'  r6   rJ  r   r   r   r   r  r   rY  r:   r   )r  r  Zn3Zrvn1r  rU  r  p2r  p3r4  ry   r  r+   r+   r,   test_ttest_1samp_newl  s4    
4*4*4* 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S )TestDescribec          
   C   s   t  @}tjdd( |td td\}}}}}}W d Q R X W d Q R X t|d t|d t|d tt	| t
|ddd	 t
|d
dd	 d S )NrW  )rX  z!Degrees of freedom <= 0 for sliceg      @r   )g      @g      @g           )r2   g      )r   r6   rY  r  r9   r$   describer   r   r   r   )r'   r;   r   r  r   r-  skkurtr+   r+   r,   test_describe_scalar  s    *


z!TestDescribe.test_describe_scalarc             C   s  t t dt ddf}dddddgddddgf }}t ddddg}t ddddg}d	gd
 }dgd
 }t|\}}	}
}}}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 
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 )N)r   r   )r   r   r   r   g      ?g       @gffffff?g333333?gH,p ?r   gTUUUUUr  )r2   r   )r1   g      $@r   )r   )g        g       @g      @g      @g        gGzrA   )rB   rC   rD   )r6   rD  rJ  r7   r   r$   r  r   r   r   r   r:   rF   rG   )r'   rH   ncmmcmcvcskckurtcr   r  r   r-  r  r  r+   r+   r,   test_describe_numbers  sH    
















z"TestDescribe.test_describe_numbersc             C   s"   t td}d}t|| d S )Nr   )r  minmaxr  varianceskewnessr  )r$   r  r6   r   r   )r'   r   r   r+   r+   r,   test_describe_result_attributes  s    z,TestDescribe.test_describe_result_attributesc             C   s   t t dt ddf}dddddgddddgf }}t ddddg}t 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 )N)r   r   )r   r   r   r   g      ?g       @gffffff?gQ?gH,p ?r   gTUUUUUr   )r.   gV瞯<)r   r  )r2   )
r6   rD  rJ  r7   r   r$   r  r   r	   r   )r'   rH   r  r  r  r  r  r  r   r  r   r-  r  r  r+   r+   r,   test_describe_ddof  s    


zTestDescribe.test_describe_ddofc       	      C   s   t t dt 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 )N)r   r   )r   r   r   )r   )g      ?g       @gffffff?ga+?gE,p ?gUUUUUU)r1   r  )r2   )r6   rD  rJ  r7   r$   r  r   r  r   r  r  r  r   r  r  )	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$   r  )r'   r+   r+   r,   test_describe_empty  s    z TestDescribe.test_describe_emptyN)	rQ   rR   rS   r  r  r  r  r  r  r+   r+   r+   r,   r    s   )r  c        
   
   C   s  t ttjd t ttjd t ttjd d\} }}d\}}}tdd }d}tt|| |f t	t|| tt|||f t	t|| tt|||f t	t|| ttj|d d| |f ttj|d d||f ttj|d d||f t
d}tj|d	< tjd
d tt|tjtjf W d Q R X d}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
d}tj|d< tjd
d tt|tjtjf W d Q R X d}ttj|dd| t ttj|dd t ttj|dd tjd
d tt|tjtjf W d Q R X d}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dd t|	D }tt|d d k d! d S )"Ng      @)gMc@gO?g{\᛿)g2$?gגe`?gǃK@?)r&  rM   r   r   r   r   r&  rM   r   r   r   r   r&  rM   r   r   r   r   r&  rM   r   r   r   r   r   )r%  r   )r1   g      $@r   rW  )rX  )geGK?gZ^<ý?rA   )rB   )r   rC   rD   g      >@   )g9+%g?*ݗ?)gwGw@g{8NĦ?   r   :   r   )   r      c             S   s   g | ]\}}t ||qS r+   )r6   r7   )r  r  cr+   r+   r,   r  3  s    z'test_normalitytests.<locals>.<listcomp>r   g{Gz?T)rF   rG   r$   skewtestkurtosistestZ
normaltestr6   r   r   r   r   r:   rY  r   rG  	enumerater   )
Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtrH   r   r   r8  r+   r+   r,   test_normalitytests  s\    






"

""r  c               @   s   e Zd Zdd ZdS )TestRankSumsc             C   s*   t tdtd}d}t|| d S )Nr   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d t jddd}t jdd}t jdd}tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|j	 tt|d t|j
 tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k tt|d t|d k tt|j
t|j
k d S )Nih:r   r   i i'  )r6   r   r   r   rH  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d t jddd}tt| }\}}tt| }\}}t|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JB1rU  Zjb_test2ZJB2r  Zjb_test3ZJB3r  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 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 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@rL  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'   u1rU  u2r  u3r  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  rU  r  r  r+   r+   r,   test_mannwhitneyu_two_sided  s    


z,TestMannWhitneyU.test_mannwhitneyu_two_sidedc          	   C   s   t  R}|td t| j| j\}}t| 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  rU  r  r  r  r  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  rU  r  r  r  r  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  rU  r  r  r+   r+   r,   &test_mannwhitneyu_no_correct_two_sided  s    


z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc          	   C   s   t  X}|td t| j| jd\}}t| 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  rU  r  r  r  r  r+   r+   r,   $test_mannwhitneyu_no_correct_default  s    




z5TestMannWhitneyU.test_mannwhitneyu_no_correct_defaultc             C   sX  t dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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 dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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   )g     @g ?չ>r
  )r2   )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 )N)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| |d d d! d"}t| |}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$   Zpointbiserialrr   )rH   r(   r   r   r+   r+   r,   test_pointbiserial  s    :r  c              C   s  t dddg} t| }dddg}t|d | t ddddg}t|}t d	ddd	g}t|d | t| |\}}t||d  t||d  t| || \}}}t||d  t||d  t||d  t d
} t dddddgdddddgg}tt| d|  |dd td
d}	t d
dddddg}
t 	|	|
}t ddddddg}t 	||
}t|}t|d |dd d S )Nr   r   r   r   r&  r   r   r   r6  r   g㪪@gI?g&>ڿg5@g㪪@gIr   )r2   r   g_v	@g1%?g"u?gZӼ?g!u @gq&@)
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   r6  r7  r5  r  r9  r  r  r   g=b#A@r   r   r   r   gQ?)r  )r'   rs   r  r+   r+   r,   test_1d_listY  s    
zTestHarMean.test_1d_listc             C   s0   t ddddddddd	d
g
}d}t|| d S )Nr?   r   r6  r7  r5  r  r9  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 ddg}d}tt|| 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 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   r6  r7  r5  r  r9  r  r  r   r:  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|| d S )Nr?   r   r6  r7  r5  r  r9  r  r  r   r:  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 ddddg}t||dd d S )Nr?   r   r6  r7  r5  r  r9  r  r  r   r:  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 ddddg}ttj|dd| d S )Nr?   r   r6  r7  r5  r  r9  r  r  r   r:  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 dddg}t||dd d S )Nr?   r   r6  r7  r5  r  r9  r  r  r   r:  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 dddg}ttj|dd| d S )Nr?   r   r6  r7  r5  r  r9  r  r  r   r:  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   r6  r7  r5  r  r9  r  r  r   r:  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   r6  r7  r5  r  r9  r  r  r   r:  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   r6  r7  r5  r  r9  r  r  r   gsŤF@r   r   r   r   rB  g      ?g+=)r   )r  r   )r'   rs   r  r+   r+   r,   r    s    

zTestGeoMean.test_1d_listc             C   sZ   t 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   r6  r7  r5  r  r9  r  r  r   gsŤF@r   r   r   r   rB  g      ?)r0   )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   r6  r7  r5  r  r9  r  r  r   r:  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   r6  r7  r5  r  r9  r  r  r   r:  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 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   r6  r7  r5  r  r9  r  r  r   r:  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 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   r6  r7  r5  r  r9  r  r  r   r:  r  gD" 6"6@gcP@g
ҧZ@r   )r1   r   r   r   rB  g      ?g+=)r1   r   )r6   r   r  r   )r'   rs   r  r-  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   r6  r7  r5  r  r9  r  r  r   r:  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   r6  r7  r5  r  r9  r  r  r   r:  r  gD" 6"6@gcP@g
ҧZ@r   )r1   r   r   r   rB  g      ?g+=)r1   r   )r   r   r  r   r   )r'   rs   r  r-  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   r6  r7  r5  r  r9  r  r  r   g        rW  )r   )r6   rY  r  )r'   rs   r  r+   r+   r,   test_1d_list0  s    zTestGeoMean.test_1d_list0c             C   sH   t 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   r6  r7  r5  r  r9  r  r  r   g        rW  )r   )r6   r   rY  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dd ZdZe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 )$TestGeometricStandardDeviationrB  r   gv aZ@r   r   r   c             C   s   t | 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 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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t| 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t| jdg W d Q R X d S )NzNon positive value)rE   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t| 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 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 )N)r   r   )r1   g~d@g<
?)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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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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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   r  Zmasked_wherer%  r$   r  r	   r   r^  )r'   r  r  r(  r^  r+   r+   r,   test_masked_3d_arrayN  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)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 t dddt dddt 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||||dd| d qdW tt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_msgr5  r   gVݶ3;)r6   r  rA  r   r   r$   
binom_test)ppr   rH   resultsry   r   r+   r+   r,   test_binomtestW  s     r1  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 | d qS )g      ?)r$   r.  )r  r-  )r   r+   r,   r    s    z#test_binomtest2.<locals>.<listcomp>r?   )r2   )r   r   )r   r   r+   )r   r,   test_binomtest2m  s     

r2  c           \   C   s  dd t ddD } t| tt| t tddddd	d
ddddddddddddd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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||| d| qqS )r   r   g      ?)r   r$   r.  )r  r-  r   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|d || d| qqS )r   r   r   g      ?)r   r$   r.  )r  r-  r   r+   r+   r,   r    s    c          	   S   s6   g | ].}t d dD ]}t|d || d| qqS )r   r   r   g      ?)r   r$   r.  )r  r-  r   r+   r+   r,   r    s    r  )r2   )r   r   r6   rJ  r*  rv  r   r   )r   Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1r+   r+   r,   test_binomtest3  s    

r3  c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestTrimc             C   s   t d}tt t|dt d tt t|dt d tt tj|dddt dd tt tj|d	ddt d
d tt|dg  ttj|dddg  ttg dg  ttjg d	ddg  ttg dg  d S )Nr   g?r?   g?r   left)tailr   gtE]t?r   g      ?gUUUUUU?)r6   r   r   sortr$   Ztrim1)r'   rs   r+   r+   r,   
test_trim1  s    
zTestTrim.test_trim1c             C   s(  t d}tt t|dt dd tt t|dt ddddd	d
dg tt tt dd	ddt dddd tt tt ddd	jdt ddddgddddgg t	t
tjt ddd	jd ttg dg  ttg dg  ttg dg  d S )Nr   gtE]t?r   r   g?r   r   r   r   r   rB  r   gUUUUUU?rL  r   r   r   gUUUUUU?g?)r6   r   r   r7  r$   Ztrimbothr   r5   r   rF   rG   )r'   rs   r+   r+   r,   test_trimboth  s    
   zTestTrim.test_trimbothc       
      C   s.  t ddddddddd	d
dg}t d
dddddg}t ddd|d d f }t djdddd|d d f }tt|dt ddddg tt|dt ddddg t ddd
dg}t ddd|d d f }tt|dt 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|dd' ttddd
dddgdd t jd( t jj	d$d)d*}x<d+D ]4}tj|d|d,}tt 
||d}	t||	 qW tj|dd d,}t| d}	t||	 tttj|d- ttg d.t j ttg d-t j d S )/Nr   r   r   r   r   r   r?   r   r   r   r   rB  F)ordergUUUUUU?g      @g      !@g      -@g     4@g      $@g      &@g      (@g      *@g      "@g      ,@r   r
  r   r      r[  rb  r\  r   r  r   rL  r  g      '@i  )r   r   r   r   )rO   )r   r   r   r   rM   )r1   g333333?g        )r6   r   r   r5   r   r$   Z	trim_meanr   r   randintr  r  rF   rG   r:   )
r'   rs   idxrk  rl  Zidx4Za4r1   r   r   r+   r+   r,   test_trim_mean  s8     ""

zTestTrim.test_trim_meanN)rQ   rR   rS   r8  r9  r?  r+   r+   r+   r,   r4    s   r4  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 t dddt dddf}d}t|\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|j|j d S )Ng      #@g      %@   r   r   r   r   )r6   r  rA  r$   	sigmaclipr   minmaxr   r  r=   rO   )r'   rs   factr  lowuppr+   r+   r,   test_sigmaclip1$  s    "zTestSigmaClip.test_sigmaclip1c             C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|jd t|jd	 d S )
Ng      #@g      %@rA  r   r   r   g      ?r   $   )r6   r  rA  r$   rB  r   rC  rD  r   r  r=   rO   )r'   rs   rE  r  rF  rG  r+   r+   r,   test_sigmaclip2.  s    "zTestSigmaClip.test_sigmaclip2c             C   s   t t dddt dddf}d}t|||\}}}t| |k t| |k  t||	 ||
    t||	 ||
    t|t ddd d S )Ng      #@g      %@r   iir   g?)r6   r  rA  r$   rB  r   rC  rD  r   r  r=   )r'   rs   rE  r  rF  rG  r+   r+   r,   test_sigmaclip39  s    zTestSigmaClip.test_sigmaclip3c             C   sF   t t dddt dddf}d}t|||}d}t|| d S )	Ng      #@g      %@r   iir   g?)Zclippedr`  ra  )r6   r  rA  r$   rB  r   )r'   rs   rE  r   r   r+   r+   r,    test_sigmaclip_result_attributesD  s    z.TestSigmaClip.test_sigmaclip_result_attributesc             C   s"   t d}tt|d | d S )Nr?   r   )r6   rJ  r   r$   rB  )r'   rH   r+   r+   r,   test_std_zeroL  s    
zTestSigmaClip.test_std_zeroN)rQ   rR   rS   rH  rJ  rK  rL  rM  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
dedddgedddgejdffedddgedddgejejffgdd Ze	j
dddddgdd Zdd Zdd Zdd Zdd  Ze	j
d!d"dd#d$gfgd%d& Zd'd( Zd)d* Zd+S ),TestFOneWayc             C   s0   t 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 ddgddg\}}t|d t|dtd dd d S )	Nr   r   r   g       @r   g      ?g+=)r   )r$   rO  r   r	   r6   rN   )r'   r:  ry   r+   r+   r,   rx   Z  s    
zTestFOneWay.test_basicc             C   s4   t dgdgdddg\}}t|d t|d d S )Nr   r   r   g333333?g      ?)r$   rO  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||\}}t|ddd d S )	Ni  i  )r0   i  i  gŸ?g+=)r   )r6   r   uint16r$   rO  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||}d}t|| d S )Ni  i  )r0   i  i  )r%  r   )r6   r   rR  r$   rO  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t jt jtd|}t|d}| d}W d Q R X dd |dd D }t	j
|dd}|j\ tt	}	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.datz
SmLs07.datz
SmLs08.datz
SmLs09.datgHz>zdata/nist_anovarV   
c             S   s   g | ]}|  r| qS r+   )stripsplit)r  liner+   r+   r,   r    s    z)TestFOneWay.test_nist.<locals>.<listcomp>r7  0   r  )Zskiprowsr   rM   c                s   g | ]} |k qS r+   r+   )r  r  )rH   r(   r+   r,   r    s    )z
SmLs07.datz
SmLs08.datz
SmLs09.datg-C6?zFailing testcase: %s)r   r-  )ospathabspathjoindirname__file__openreadrW  r6   Zloadtxtr   r   rv  r  r   r$   rO  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||\}}|s,t||kW d Q R X d S )N)r
   r$   F_onewayConstantInputWarningrO  r   )r'   rs   rw   r   rd  ry   r+   r+   r,   rz     s    zTestFOneWay.test_constant_inputr1   r&  rM   r   c             C   s  t 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 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 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t |||t |||t |||\}	}
t|| |	dd t|| |
dd qW xpdD ]h}ttjR tt |||t |||t |||\}	}
t	|| |	 t	|| |
 W d Q R X qW d S )Nr   r   r   r   r   r   r   )rM   r   r   )r1   )r   r   g+=)r   )r   r   )
r6   r   r   r
   r$   rg  rO  Ztaker	   r   )r'   r1   rs   rw   r  Z	take_axisrd  ry   r.  fjZpjr+   r+   r,   test_2d_inputs  sL    










 

zTestFOneWay.test_2d_inputsc       
   
   C   s  dt ddddd }dt dddd	d }t dt dd
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||d d |f ||d d |f ||d d |f \}}	t	||||f  t	|	|||f  qW qW d S )Nr   g      ?   r   r   r   r      r   q   )r1   )r   r   r   )
r6   r   r5   cosr$   rO  r   r   r   r	   )
r'   rs   rw   r  rd  ry   r  r.  ZfijZpijr+   r+   r,   test_3d_inputs  s     <zTestFOneWay.test_3d_inputsc          	   C   sH   t tj4 t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_onewayBadInputSizesWarningrO  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d|f}td|f}td|f}t|||\}}tj|ftjd}t|| t|| W d Q R X d S )Nr   r   r   r   )r  )	r
   r$   ro  r6   rJ  rO  r7   r:   r   )r'   Zncolsrs   rw   r  rd  ry   Znansr+   r+   r,   test_length0_2d_error  s    
z!TestFOneWay.test_length0_2d_errorc          	   C   sD   t tj0 t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$   ro  rO  r   r6   r:   )r'   r  r+   r+   r,   test_all_length_one  s    zTestFOneWay.test_all_length_oner  r+   r   r   c          	   C   s"   t t tj|  W d Q R X d S )N)rF   r  r$   rO  )r'   r  r+   r+   r,   test_too_few_inputs  s    
zTestFOneWay.test_too_few_inputsc          	   C   s>   t d}t d}tt j tj||dd W d Q R X d S )N)r   r   )r   r   r   )r1   )r6   rJ  rF   r  r$   rO  )r'   rs   rw   r+   r+   r,   test_axis_error  s    

zTestFOneWay.test_axis_errorc          	   C   s<   t d}t d}tt tj||dd W d Q R X d S )N)r   r   )r   r   r   )r1   )r6   rJ  rF   rG   r$   rO  )r'   rs   rw   r+   r+   r,   test_bad_shapes  s    


zTestFOneWay.test_bad_shapesN)rQ   rR   rS   rP  rx   rQ  rS  rT  rf  r   r   r  r6   r   r   r:   rz   ri  rn  rp  rq  rr  rs  rt  ru  r+   r+   r+   r,   rN  R  s"   
 &6/"rN  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 ||\}}t|d t|t jj|d t t|t|\}}t|d t|t jj|d d S )Nr   r   g      ?)	r$   kruskalr   r   rI  r>  rJ  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 ||\}}t|dd
d t|t jjdd t t|t|\}}t|dd
d t|t jjdd d S )Nr   r   r   r   r   r   r   r   r   r?   gtE]t?)r!   )r$   rw  r   rI  r>  rJ  r6   r   )r'   rH   r(   rx  ry   r+   r+   r,   rx     s    zTestKruskal.test_basicc             C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r   g      ?g      ?)r$   rw  r   )r'   rH   r(   h_uncorrr   r   rx  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||\}}t|| d S )Nr   r   g      @   i  )r   r$   rw  r   )r'   rH   r(   rz  r   r   rx  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|||\}}t|| t|tjj|d d S )Nr   r   g      @r|  i  )r   r$   rw  r   rI  r>  rJ  )	r'   rH   r(   r  rz  r   r   rx  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|||tjtjf d S )Nr   r   )r   r$   rw  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 ||}d}t|| d S )Nr   r   r   r   r   r   r   r   r   r?   )r%  r   )r$   rw  r   )r'   rH   r(   r   r   r+   r+   r,   test_kruskal_result_attributesH  s
    z*TestKruskal.test_kruskal_result_attributesc             C   sp   t d}t j|d< tt||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   )g        g      ?rC   rD   )	r6   r   r:   r   r$   rw  r   rF   rG   )r'   rH   r+   r+   r,   r   O  s    

zTestKruskal.test_nan_policyc             C   sB   d}t j|}t j|d }t||\}}d}t|| d S )NiP  r5  r   )r6   r   r   r$   rw  r   )r'   r   rH   r(   rx  ry   r   r+   r+   r,   test_large_no_samplesW  s    z!TestKruskal.test_large_no_samplesN)rQ   rR   rS   ry  rx   r{  r}  r~  r~  r  r   r  r+   r+   r+   r,   rv    s   

	rv  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?r  )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$   r  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      ?r  )r	  r   )r!   )r$   r  r   )r'   r  ry   r+   r+   r,   test_stouffer2l  s    z!TestCombinePvalues.test_stouffer2c             C   s2   t jdddgdtdd\}}t|ddd	 d S )
Ng{Gz?g?g333333?r  r   )r	  weightsgS:X?r   )r!   )r$   r  r6   rJ  r   )r'   r  ry   r+   r+   r,   test_weighted_stoufferp  s    z)TestCombinePvalues.test_weighted_stoufferc             C   s2   t jdddgdtdd\}}t|ddd	 d S )
Ng{Gz?g?g333333?r  )r   r   r   )r	  r  g46<?r   )r!   )r$   r  r6   r   r   )r'   r  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?rE  )r	  g&J?r   )r!   )r$   r  r   )r'   r  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$   r  r   )r'   r  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$   r  r   )r'   r  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	  r  rE  g      ?r   )r!   )r$   r  r   )r'   r  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   r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r  a  s   r  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$   r  )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$   r  )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$   r  )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$   r  r6   r   )r'   r+   r+   r,   test_inf_weight  s    z)TestCdfDistanceValidation.test_inf_weightN)	rQ   rR   rS   r   r  r  r  r  r  r+   r+   r+   r,   r    s   r  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ddgdgddgdgd t tddgdgddgdgd t tddgdgddgdgd t tdddgdddgd d S )Nr   r   g      ?r   g      ?r   )r   r$   r  )r'   r+   r+   r,   ry    s    z#TestWassersteinDistance.test_simplec          	   C   sP   t tdddgdddgd t t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$   r  )r'   r+   r+   r,   test_same_distribution  s
    z.TestWassersteinDistance.test_same_distributionc          	   C   s   t tdgdgd t tdgdgd t tdddddgd	d
dddgd t tdddgdddgdddgdddgd d S )Nr   r   rj  r   r?   r   r   r   r   r
  r  rL  r   g      @g@g @gffffff@r   gffffff"@g      @)r   r$   r  )r'   r+   r+   r,   
test_shift  s    z"TestWassersteinDistance.test_shiftc             C   sv   t t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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$   r  )r'   r+   r+   r,   test_combine_weights  s     "z,TestWassersteinDistance.test_combine_weightsc             C   s|   t ddd}t |}tt||t t | t t|}|d d d }tt||||t j	t ||d d S )Nir6  g333333?rM   )r  )
r6   r   Z
zeros_liker   r$   r  r  r  r*  Zaverage)r'   r,  r-  Z	u_weightsZ	v_weightsr+   r+   r,   test_collapse  s    

z%TestWassersteinDistance.test_collapsec          	   C   sJ   t tdddgddgdddgddgtddgddgddgddg d S )Nr   r   i r   )r   r$   r  )r'   r+   r+   r,   r    s    z(TestWassersteinDistance.test_zero_weightc          	   C   s   t tddtjgddgtj t tddtjgtj dgtj t tdtj tjgddgtj t 4}|td t t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$   r  r6   r   r   r8   r9   r:   )r'   r;   r+   r+   r,   test_inf_values  s    z'TestWassersteinDistance.test_inf_valuesN)rQ   rR   rS   r   ry  r  r  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S )TestEnergyDistancez0 Tests for energy_distance() output values.
    c             C   s   t tddgdgddgdgtdd  t tddgdgddgdgtdd  t tddgdgddgdgd t tdddgdddgtdd  d S )	Nr   r   r   g      ?r   g      ?g      ?g3Ey?)r   r$   energy_distancer6   rN   )r'   r+   r+   r,   ry    s    zTestEnergyDistance.test_simplec          	   C   sP   t tdddgdddgd t t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$   r  )r'   r+   r+   r,   r  %  s    &z)TestEnergyDistance.test_same_distributionc             C   s@   t tdgdgtd t tdgdgtdd  d S )Nr   r   r   rj  r   gS[:XL	@)r   r$   r  r6   rN   )r'   r+   r+   r,   r  -  s    zTestEnergyDistance.test_shiftc             C   sv   t t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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$   r  )r'   r+   r+   r,   r  5  s    $"z'TestEnergyDistance.test_combine_weightsc          	   C   sJ   t tdddgddgdddgddgtddgddgddgddg d S )Nr   r   i r   )r   r$   r  )r'   r+   r+   r,   r  =  s    "z#TestEnergyDistance.test_zero_weightc          	   C   s   t tddtjgddgtj t tddtjgtj dgtj t tdtj tjgddgtj t 4}|td t t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$   r  r6   r   r   r8   r9   r:   )r'   r;   r+   r+   r,   r  C  s     z"TestEnergyDistance.test_inf_valuesN)
rQ   rR   rS   r   ry  r  r  r  r  r  r+   r+   r+   r,   r    s   r  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|	&	gҏGg?g@-pL?)r$   brunnermunzelr%   r  r   r!   r   )	r'   r  rU  r  r  r  r  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|	&	g ҏGw?)r$   r  r%   r  r   r!   )r'   r  rU  r  r  r+   r+   r,   test_brunnermunzel_two_sidedq  s    

z.TestBrunnerMunzel.test_brunnermunzel_two_sidedc             C   sl   t | j| j\}}t | j| j\}}t||| jd t|d| jd t|d| jd t|d| jd d S )N)r!   g|	&	@g|	&	g ҏGw?)r$   r  r%   r  r   r!   )r'   r  rU  r  r  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errorr4  r   )z	two-sidedr   r   )r   rF   rG   r$   r  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   )r  )r!   g|	&	@g|	&	g "H[?)r$   r  r%   r  r   r!   )r'   r  rU  r  r  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-sidedr  r   )r4  r   )r   rF   rG   r$   r  r%   r  )r'   r   r  rB   r+   r+   r,   %test_brunnermunzel_distribution_error  s    z7TestBrunnerMunzel.test_brunnermunzel_distribution_errorc             C   s   t | jg \}}t g | j\}}t g g \}}t|tj t|tj t|tj t|tj t|tj t|tj d S )N)r$   r  r%   r  r   r6   r:   )r'   r  rU  r  r  r  r  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$   r  r   )r'   r%   r  r  rU  r  r  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-sidedr4  rC   )r6   r:   rF   rG   r$   r  )r'   r%   r  r   r  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|	&	g ҏGw?)r6   r:   r$   r  r   r!   )r'   r%   r  r  rU  r  r  r+   r+   r,   !test_brunnermunzel_nan_input_omit  s    $

z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitN)rQ   rR   rS   r%   r  r!   r  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   r  T  s    r  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|tdtd }t|d| |  }}}t j||||ddd}tt |dd dkd	 t jd
d dddtd ddd}tt |dd dkd	 d S )Nr   r   i	  i90  )rO   random_stater2  r   g      ?Tc             S   s   t |  S )N)r6   r[  )rH   r+   r+   r,   r    r  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rM   i  )umaxvminvmaxrO   r  Zexpon)	r$   r2  pdfr6   rN   rvs_ratio_uniformsr   rh  r[  )r'   rd  v_boundr  r  r  r3  r+   r+   r,   test_rv_generation  s    
z$TestRatioUniforms.test_rv_generationc             C   sR  t jj}t|tdtd }t|d| |  }}}t j||||ddd}t j||||ddd}t j||||ddd}t|| t||  t|jd t|jd t j||||dd	d}	t j||||d
d	d}
t|	 |
 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   r  )r   )r   r   )r   r   r   r
     )r  r   )r   )	r$   r2  r  r6   rN   r  r   r   r   )r'   rd  r  r  r  r  r  r  r  Zr4Zr5Zr6Zr7r8r+   r+   r,   
test_shape   s4    

zTestRatioUniforms.test_shapec             C   s   t jj}t|tdtd }t|d| |  }}}tjd t j||||dd}t j||||ddd}t|| d S )Nr   r   i  )r   r   )rO   )rO   r  )	r$   r2  r  r6   rN   r   r   r  r   )r'   rd  r  r  r  r  r  r  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   )r  r  r  r  rM   r   )r$   r2  r  rF   rG   r  )r'   rd  r+   r+   r,   test_exceptions*  s    z!TestRatioUniforms.test_exceptionsN)rQ   rR   rS   r   r  r  r  r  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 ddddddddd	d
g
}t ddddddddddg
}t||\}}t|ddd t|ddd d S )Ngffffffֿgffffff@gGz?g\(\?gffffff?gQ@gq=
ףp?gGzgGz׿gp=
#(@gffffffg333333ÿgףp=
@g      
@gGz@g)\(@g      @g(\@g(\ @g333333!@gHzG.@r   )r2   gQ,r?r   )r6   r   r$   epps_singleton_2sampr   )r'   rH   r(   r/  ry   r+   r+   r,   test_statistic_19  s
    z"TestEppsSingleton.test_statistic_1c             C   sD   t d}t d}t||\}}t|ddd t|ddd d S )	N)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?   g!@gMbP?)rq   g&J?r   )r2   )r6   r   r$   r  r	   r   )r'   rH   r(   r/  ry   r+   r+   r,   test_statistic_2D  s
    

z"TestEppsSingleton.test_statistic_2c       	      C   s   t jd t dt d }}tt|t|\}}tt|t|\}}t||\}}t||  kov|kn   t||  ko|kn   d S )Ni  r6  r   )	r6   r   r   r   r$   r  r   r  r   )	r'   rH   r(   Zw1rU  Zw2r  Zw3r  r+   r+   r,   test_epps_singleton_array_likeN  s    z0TestEppsSingleton.test_epps_singleton_array_likec             C   s$   dt d }}tttj|| d S )N)r   r   r   r   r?   )r6   r   rF   rG   r$   r  )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 d }}tttj|| t 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$   r  r:   )r'   rH   r(   r+   r+   r,   test_epps_singleton_nonfinite^  s    z/TestEppsSingleton.test_epps_singleton_nonfinitec             C   s&   t ddd}tttj|| d S )Nr   rM   r   )r6   r   r5   rF   rG   r$   r  )r'   rH   r+   r+   r,   test_epps_singleton_1d_inpute  s    z.TestEppsSingleton.test_epps_singleton_1d_inputc             C   s4   t dt d }}t||}d}t|| d S )Nr   r6  )r%  r   )r6   r   r$   r  r   )r'   rH   r(   r   r   r+   r+   r,   
test_namesi  s    zTestEppsSingleton.test_namesN)
rQ   rR   rS   r  r  r  r  r  r  r  r+   r+   r+   r,   r  8  s   
r  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
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 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 ddd}|dd}tttj|| d S )Nr   r   r   r?   )r6   r   r5   rF   rG   r$   r  )r'   rH   r(   r+   r+   r,   test_error_shapez  s    z%TestMGCErrorWarnings.test_error_shapec             C   s(   t d}t d}tttj|| d S )Nr   )r6   r   rF   rG   r$   r  )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 d}tttj|| d S )Nr   )r0   r   )r6   r   r   r:   rF   rG   r$   r  )r'   rH   r(   r+   r+   r,   test_error_nans  s
    

z$TestMGCErrorWarnings.test_error_nansc             C   s&   t d}d}tttj|||d d S )Nr   r   )compute_distance)r6   r   rF   rG   r$   r  )r'   rH   r  r+   r+   r,   test_error_wrongdisttype  s    
z-TestMGCErrorWarnings.test_error_wrongdisttyper  rM   1c             C   s"   t d}tttj|||d d S )Nr   )r  )r6   r   rF   rG   r$   r  )r'   r  rH   r+   r+   r,   test_error_reps  s    
z$TestMGCErrorWarnings.test_error_repsc             C   s&   t d}d}tttj|||d d S )Nr   r   )r  )r6   r   r
   r9   r$   r  )r'   rH   r  r+   r+   r,   test_warns_reps  s    
z$TestMGCErrorWarnings.test_warns_repsc             C   s.   t d}t dt j }tttj|| d S )Nr   )r6   r   rJ  r   rF   rG   r$   r  )r'   rH   r(   r+   r+   r,   test_error_infty  s    
z%TestMGCErrorWarnings.test_error_inftyN)rQ   rR   rS   r   r  r  r  r  r  r   r   r  r  r  r  r+   r+   r+   r,   r  p  s   	r  c               @   s   e Zd ZdZdddZejjejddd	d
gdd Z	ejje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 t jjdd|dfd}|t t j|  }|t 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  rM   r   )rO   g333333?	nonlinearr   r   g?independenceg      ?)ry   rO   r   r   z3sim_type must be linear, nonlinear, or independence)r1   )r6   r   r  Zrandom_samplerO   r   rm  pirB  r   binomialrG   r  )r'   sampsdimssim_typerH   r(   Zunifr,  r-  Zu_2Zv_2Z
dims_noiser+   r+   r,   _simulations  s(    

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue)r  g
ףp=
?gMbP?)r  gw/?gMbP?)r  gUN@g(\?c       	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )NiNa r   r   )r  r  r  )r!   )r6   r   r   r  r$   r  r   )	r'   r  obs_stat
obs_pvaluerH   r(   rL  r   r(  r+   r+   r,   	test_oned  s
    zTestMGCStat.test_oned)r  gZd;O?gMbP?)r  g~jt?gʡE?c       	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )NiNa r   r   )r  r  r  r   )r!   )r6   r   r   r  r$   r  r   )	r'   r  r  r  rH   r(   rL  r   r(  r+   r+   r,   
test_fived  s
    zTestMGCStat.test_fivedc             C   s   t jd t jjdddd}t jjdddd}t||\}}}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   r   )rO   r   r   )r  r   g      ?)r!   gMbP?T)Z
is_twosamp)r6   r   r   r  r   r$   r  r   )r'   rH   r(   rL  r   r(  r+   r+   r,   test_twosamp  s    zTestMGCStat.test_twosampc             C   sV   t 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$   r  r   )r'   rH   r(   rL  r   r(  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  )r  g
ףp=
?)r!   gMbP?)r  r$   r  r   )r'   rH   r(   rL  r   r(  r+   r+   r,   r    s    zTestMGCStat.test_random_statec             C   st   t 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  r  gw/?)r!   gMbP?)r6   r   r   r  r   r$   r  r   )r'   rH   r(   ZdistxZdistyZ	stat_distZpvalue_distr(  r+   r+   r,   test_dist_perm  s    zTestMGCStat.test_dist_permN)r   r   r  )rQ   rR   rS   r   r  r   r   r   r  r  r  r  r  r  r  r+   r+   r+   r,   r    s   
"
r  )r   )NNr  )NNr  )r   rZ  r  collectionsr   Znumpy.testingr   r   r   r   r   r   r	   r
   r   r   r   rF   Znumpy.ma.testutilsr  Z	testutilsr_  numpyr   r   r   r   r   r6   Zscipy.statsr$   Zscipy.stats.mstatsrd  Zscipy.stats.mstats_basicr  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zcommon_testsr   Zscipy.sparse.sputilsr   Zscipy.spatial.distancer   r   r%   r?  rX   rZ   r\   r^   r`   r  r    rT   r   r   r   r  r  r  r"  r$  r)  r1  r2  r:  rb  rg  rh  ri  r  r  r  r  r  r  r  r  r$  r;  ZPowerDivCaser?  rN  r   rW  rC  r   r  Zuint8r   r\  ra  rc  re  rf  rq  ry  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  r1  r2  r3  r4  r@  rN  rv  r  r  r  r  r  r  r  r  r  r+   r+   r+   r,   <module>   sD  ,m r  e  7
?
& u+| 
?H _ &9N,,
 !&	K65"E XK
Kj'bB( +JdQTK/ ;U-&]C L8<