B
    0dK                @   s  d Z ddlZddlZddlmZ ddlm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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%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l0m1Z1 ddl2m3Z3 ddl4m5Z5 ddl6m7Z7 ddl8m9Z9 ddl:m;Z; ddl<m=Z=m>Z> ddl<m?Z?m@Z@ edddddddddg	eAZBedddddddddg	eAZCeddd d!d"d#d$d%d&g	eAZDed'd(d)d*d+d,d-d.d/g	eAZEed0d1d2d3d4d5d6d7d8g	eAZFed9d:d;d<d=d>d?d@dAg	eAZGedBdCdDdEdFdGdHdIdJg	eAZHG dKdL dLZIG dMdN dNZJG dOdP dPZKG dQdR dRZLG dSdT dTZMdUdV ZNdWdX ZOdYdZ ZPd[d\ ZQd]d^ ZRd_d` ZSdadb ZTG dcdd ddZUG dedf dfZVdgdh ZWdidj ZXdkdl ZYG dmdn dnZZG dodp dpZ[G dqdr drZ\G dsdt dtZ]G dudv dvZ^G dwdx dxZ_G dydz dzZ`d{d| ZaG d}d~ d~ZbG dd dZcG dd dZddd ZeedddddddddgZfefddddgdddddde!gdB de!gdC   dde!gd de!gd   ddefddddgddddgddddde!gd de!gdB  de!gd   dde!gdB de!gd  de!gd   ddefddddgdddddde!gdB de!gdC   dde!gd de!gd   ddefddddgddddgdddddddgZhefg ddddddddefe!g g g gjiddddddgdddgdddgdddgdefe!g g g gdddg g g g dgZjG dd dZkdd Zlejmndde!jofde!jpfgdd Zqdd Zrdd Zsdd ZtG dd dZuG dd dZvG dd dZwdd Zxdd Zydd Zzejmnde!{ddfe!{ddfgdd Z|dd Z}dddZ~dd ZG dd dZG ddÄ dÃZG ddń dŃZddǄ ZddɄ Zdd˄ Zdd̈́ Zejmnde!{ddfe!{ddfgddτ Zddф Zddӄ ZddՄ Zddׄ Zddل ZG ddۄ dۃZdd݄ ZG dd߄ d߃ZG dd dZdd Zdd ZG dd dZdd Zdd ZdddZdddZG dd dZG dd dZG dd dZdd Zdd Zdd ZG dd dZG dd  d ZG dd dZG dd dZG dd dZG dd dZG d	d
 d
ZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd dZG dd d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)product)deepcopy)
assert_assert_equalassert_almost_equalassert_array_almost_equalassert_array_equalassert_approx_equalassert_allcloseassert_warnssuppress_warningsassert_string_equal)raises)arrayarangefloat32float64power)check_random_state)special)kolmogn)FuncData)binom   )check_named_results)matrix)cdist)distcont)NumpyVersion)_broadcast_concatenate#AlexanderGovernConstantInputWarning)_calc_t_stat_data_partitions                     	   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 r7   N/var/www/html/venv/lib/python3.7/site-packages/scipy/stats/tests/test_stats.py
test_tmeanH   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.   r=   r/   g      @)r   r(   )r0   tvarr1   r
   r2   varr   r   reshaper   npfullr   recordRuntimeWarningr   nan)r3   r4   Zx_2dsupr7   r7   r8   	test_tvarP   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:   )r0   Ztstdr1   r
   r2   std)r3   r4   r7   r7   r8   	test_tstdp   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)rL   r/   r   )r'   r$   r$   )r=   r(   r*   g      $@r+   zinvalid value*omit)
nan_policyg        raisefoobarz'propagate', 'raise', 'omit')matchZfoo)r   r0   ZtminrB   r   rA   rF   r   rD   rE   assert_raises
ValueError)r3   xrG   msgr7   r7   r8   	test_tminw   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&   rK   r+   )
upperlimitF)rW   r/   r*   )r'   r$   r)   r   )r=   r%   r'   g      $@r(   zinvalid value*rM   )rN   g      "@rO   rP   )r   r0   ZtmaxrB   r   rA   rF   r   rD   rE   rR   rS   )r3   rT   rG   r7   r7   r8   	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-   rK   )r.   )
r0   Ztsemr1   rB   r   r
   rI   sqrtsizer2   )r3   r4   Zy_refr7   r7   r8   	test_tsem   s    
zTestTrimmedStats.test_tsemN)__name__
__module____qualname__rB   Zfinfor   	precisionr2   r9   rH   rJ   rV   rX   r\   r7   r7   r7   r8   r,   D   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      ?)r0   pearsonrr1   r
   )r3   r4   rr7   r7   r8   test_pXX   s    zTestCorrPearsonr.test_pXXc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   r1   BIGr
   )r3   r4   rc   r7   r7   r8   
test_pXBIG   s    zTestCorrPearsonr.test_pXBIGc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   r1   LITTLEr
   )r3   r4   rc   r7   r7   r8   test_pXLITTLE   s    zTestCorrPearsonr.test_pXLITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   r1   HUGEr
   )r3   r4   rc   r7   r7   r8   test_pXHUGE   s    zTestCorrPearsonr.test_pXHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   r1   TINYr
   )r3   r4   rc   r7   r7   r8   test_pXTINY   s    zTestCorrPearsonr.test_pXTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   r1   ROUNDr
   )r3   r4   rc   r7   r7   r8   test_pXROUND   s    zTestCorrPearsonr.test_pXROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   re   r
   )r3   r4   rc   r7   r7   r8   test_pBIGBIG   s    zTestCorrPearsonr.test_pBIGBIGc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   re   rg   r
   )r3   r4   rc   r7   r7   r8   test_pBIGLITTLE   s    z TestCorrPearsonr.test_pBIGLITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   re   ri   r
   )r3   r4   rc   r7   r7   r8   test_pBIGHUGE   s    zTestCorrPearsonr.test_pBIGHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   re   rk   r
   )r3   r4   rc   r7   r7   r8   test_pBIGTINY   s    zTestCorrPearsonr.test_pBIGTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   re   rm   r
   )r3   r4   rc   r7   r7   r8   test_pBIGROUND   s    zTestCorrPearsonr.test_pBIGROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rg   r
   )r3   r4   rc   r7   r7   r8   test_pLITTLELITTLE   s    z#TestCorrPearsonr.test_pLITTLELITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rg   ri   r
   )r3   r4   rc   r7   r7   r8   test_pLITTLEHUGE   s    z!TestCorrPearsonr.test_pLITTLEHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rg   rk   r
   )r3   r4   rc   r7   r7   r8   test_pLITTLETINY   s    z!TestCorrPearsonr.test_pLITTLETINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rg   rm   r
   )r3   r4   rc   r7   r7   r8   test_pLITTLEROUND   s    z"TestCorrPearsonr.test_pLITTLEROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   ri   r
   )r3   r4   rc   r7   r7   r8   test_pHUGEHUGE  s    zTestCorrPearsonr.test_pHUGEHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   ri   rk   r
   )r3   r4   rc   r7   r7   r8   test_pHUGETINY
  s    zTestCorrPearsonr.test_pHUGETINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   ri   rm   r
   )r3   r4   rc   r7   r7   r8   test_pHUGEROUND  s    z TestCorrPearsonr.test_pHUGEROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rk   r
   )r3   r4   rc   r7   r7   r8   test_pTINYTINY  s    zTestCorrPearsonr.test_pTINYTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rk   rm   r
   )r3   r4   rc   r7   r7   r8   test_pTINYROUND  s    z TestCorrPearsonr.test_pTINYROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   rb   rm   r
   )r3   r4   rc   r7   r7   r8   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   r0   rb   r   rB   rZ   spacing)r3   arc   probr7   r7   r8   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瞯<)r~   g        r$   g      ?)r   r0   rb   r   rB   rZ   r   )r3   r   rc   r   r7   r7   r8   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 )NrY   r   r   r%   r$   gUUUUUU?)r   r0   rb   r
   rB   rZ   )r3   r   brc   r   r7   r7   r8   
test_basic5  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   r0   ZPearsonRConstantInputWarningrb   r   rB   rF   )r3   rc   pr7   r7   r8   test_constant_input>  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(   )rB   r   r   r0   Z PearsonRNearConstantInputWarningrb   )r3   rT   r4   rc   r   r7   r7   r8   test_near_constant_inputF  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?)r0   rb   r   )r3   rT   r4   rc   r   r7   r7   r8   test_very_small_input_valuesO  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͗~-?)rB   r   r   r0   rb   r   )r3   rT   r4   rc   r   r7   r7   r8   test_very_large_input_values\  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ݣ?)rB   r   r0   rb   r   )r3   rT   r4   rc   r   r7   r7   r8   !test_extremely_large_input_valuesj  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'   )r0   rb   r   )r3   rc   r   r7   r7   r8   test_length_two_pos1w  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'   rY   )r0   rb   r   )r3   rc   r   r7   r7   r8   test_length_two_neg2~  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>)r~   )r0   rb   r   )r3   rT   r4   rc   r   r7   r7   r8   test_more_basic_examples  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'   )rR   rS   r0   rb   )r3   rT   r4   r7   r7   r8   test_unequal_lengths  s    
z%TestCorrPearsonr.test_unequal_lengthsc             C   s    dg}dg}t ttj|| d S )Nr   r$   )rR   rS   r0   rb   )r3   rT   r4   r7   r7   r8   	test_len1  s    zTestCorrPearsonr.test_len1N)&r]   r^   r_   __doc__rd   rf   rh   rj   rl   rn   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r7   r7   r7   r8   ra      sF   				ra   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(   rK   gY
A?      g_?      gO^M?r   gօa?r%   g      ?ggE?g$I$I?)r0   fisher_exactr
   )r3   r   resr7   r7   r8   r     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   rK   )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)r>   verbose)rB   infr0   r   asarraytestingr   )r3   ZtablisttableZres_rr   r7   r7   r8   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=?)zipr0   r   r
   )r3   pvalspvalnumr   r7   r7   r8   test_large_numbers  s    
z"TestFisherExact.test_large_numbersc             C   s    t ttjtddd d S )Nr(   r$   r%   )rR   rS   r0   r   rB   r   rA   )r3   r7   r7   r8   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'   rK   g      ?)r0   r   r   rB   rF   )r3   tablesr   Z	oddsratior   r7   r7   r8   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>)r~   rtol)r   appendr0   r   r   )r3   r   r   r   r   r   r7   r7   r8   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")r0   r   )r3   Zoddspvaluer7   r7   r8   test_gh3014  s    zTestFisherExact.test_gh3014N)r]   r^   r_   r   r   r   pytestmarkslowr   r   r   r   r   r7   r7   r7   r8   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#dBdC Z$dDdE Z%dFS )G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       @)r0   	spearmanrr   rB   isnanall)r3   r4   r7   r7   r8   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+   )rR   rS   r0   r   )r3   r7   r7   r8   test_uneven_lengths2  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   )r=   )rB   randomseedrandnr0   r   correlationshapeAssertionErrorTr   rR   rS   )r3   rT   r4   r7   r7   r8   test_uneven_2d_shapes6  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$   )r=   r   )
rB   r   r   r   rR   rS   r0   r   r   flatten)r3   rT   r7   r7   r8   test_ndim_too_highA  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+   rM   )rN   )g      ?g        rO   rP   )rB   r   rF   r	   r0   r   rR   rS   )r3   rT   r7   r7   r8   test_nan_policyK  s    

z!TestCorrSpearmanr.test_nan_policyc             C   s   t jd t jdd}d}t j|d d |f< t j||dd}tj|dd\}}t|\}}t jt j||dd|dd}t jt j||dd|dd}t||d	d
 t||d	d
 d S )Nr'   rK   r(   r   )r=   rM   )rN   r   g+=)r~   )	rB   r   r   randrF   deleter0   r   r   )r3   rT   kr4   ZcorxZpxZcorypyr7   r7   r8   test_nan_policy_bug_12458T  s    z+TestCorrSpearmanr.test_nan_policy_bug_12458c                sp   t jd d d}t j |t jd< t jd< tjddd\}} fdd	t D }t|| d S )
Nr'   rK   )r   r   )r%   rY   r   	propagate)r=   rN   c                s$   g | ]  fd dt D qS )c          	      s2   g | ]*}t |d d f  d d f jqS )N)r0   r   r   ).0i)jrT   r7   r8   
<listcomp>i  s    zJTestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>.<listcomp>)range)r   )mrT   )r   r8   r   i  s   z?TestCorrSpearmanr.test_nan_policy_bug_12411.<locals>.<listcomp>)	rB   r   r   r   rF   r0   r   r   r   )r3   ncorrr   r   r7   )r   rT   r8   test_nan_policy_bug_12411a  s    

z+TestCorrSpearmanr.test_nan_policy_bug_12411c             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   r
   )r3   r4   rc   r7   r7   r8   test_sXXm  s    zTestCorrSpearmanr.test_sXXc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   re   r
   )r3   r4   rc   r7   r7   r8   
test_sXBIGr  s    zTestCorrSpearmanr.test_sXBIGc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   rg   r
   )r3   r4   rc   r7   r7   r8   test_sXLITTLEw  s    zTestCorrSpearmanr.test_sXLITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   ri   r
   )r3   r4   rc   r7   r7   r8   test_sXHUGE|  s    zTestCorrSpearmanr.test_sXHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   rk   r
   )r3   r4   rc   r7   r7   r8   test_sXTINY  s    zTestCorrSpearmanr.test_sXTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   r1   rm   r
   )r3   r4   rc   r7   r7   r8   test_sXROUND  s    zTestCorrSpearmanr.test_sXROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   re   r
   )r3   r4   rc   r7   r7   r8   test_sBIGBIG  s    zTestCorrSpearmanr.test_sBIGBIGc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   re   rg   r
   )r3   r4   rc   r7   r7   r8   test_sBIGLITTLE  s    z!TestCorrSpearmanr.test_sBIGLITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   re   ri   r
   )r3   r4   rc   r7   r7   r8   test_sBIGHUGE  s    zTestCorrSpearmanr.test_sBIGHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   re   rk   r
   )r3   r4   rc   r7   r7   r8   test_sBIGTINY  s    zTestCorrSpearmanr.test_sBIGTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   re   rm   r
   )r3   r4   rc   r7   r7   r8   test_sBIGROUND  s    z TestCorrSpearmanr.test_sBIGROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rg   r
   )r3   r4   rc   r7   r7   r8   test_sLITTLELITTLE  s    z$TestCorrSpearmanr.test_sLITTLELITTLEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rg   ri   r
   )r3   r4   rc   r7   r7   r8   test_sLITTLEHUGE  s    z"TestCorrSpearmanr.test_sLITTLEHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rg   rk   r
   )r3   r4   rc   r7   r7   r8   test_sLITTLETINY  s    z"TestCorrSpearmanr.test_sLITTLETINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rg   rm   r
   )r3   r4   rc   r7   r7   r8   test_sLITTLEROUND  s    z#TestCorrSpearmanr.test_sLITTLEROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   ri   r
   )r3   r4   rc   r7   r7   r8   test_sHUGEHUGE  s    z TestCorrSpearmanr.test_sHUGEHUGEc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   ri   rk   r
   )r3   r4   rc   r7   r7   r8   test_sHUGETINY  s    z TestCorrSpearmanr.test_sHUGETINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   ri   rm   r
   )r3   r4   rc   r7   r7   r8   test_sHUGEROUND  s    z!TestCorrSpearmanr.test_sHUGEROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rk   r
   )r3   r4   rc   r7   r7   r8   test_sTINYTINY  s    z TestCorrSpearmanr.test_sTINYTINYc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rk   rm   r
   )r3   r4   rc   r7   r7   r8   test_sTINYROUND  s    z!TestCorrSpearmanr.test_sTINYROUNDc             C   s"   t tt}|d }t|d d S )Nr   g      ?)r0   r   rm   r
   )r3   r4   rc   r7   r7   r8   test_sROUNDROUND  s    z"TestCorrSpearmanr.test_sROUNDROUNDc             C   s   t tt}d}t|| d S )N)r   r   )r0   r   r1   r   )r3   r   
attributesr7   r7   r8    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(   )r0   r   rB   r   r   r   )r3   x1x2res1res2r7   r7   r8   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)r   rM   r   r%   r&   r'   r(   r$   )rN   )rB   rF   r0   r   r   r   r   )r3   rN   r   r   r   r   r7   r7   r8   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&   rY   g3+?g3+)r%   r%   )r<   g+Hs]s?)rB   r   r   r   r   r0   r   zerosfloatr   r   r   )r3   r   r   x3rT   actualZexpected_corrZexpected_pvaluer7   r7   r8   
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   )rN   rM   r   r   r$   )gacJC?g%ln?g_0nYt!޿gư>)r   )rB   r   rF   r   r   r0   r   r   )r3   rT   r   r   r7   r7   r8   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      ?rM   )rN   gonj?g)Wn%?)rB   r   r   r   r   r0   r   r   rF   astypeint32r   )
r3   r   rT   r   r   r   r   r   res3expectedr7   r7   r8   test_gh_8111
  s    


zTestCorrSpearmanr.test_gh_8111N)&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  r7   r7   r7   r8   r   %  sF   
		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ejd d!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   )r0   r   r
   )r3   r   r   r  r   r7   r7   r8   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   r0   r   rB   rF   )r3   r7   r7   r8   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scaler[   g      ?g333333?)gCzYW?ge*=r   )rB   r   r   r   normaldotlinalgcholeskyr0   r   r
   )r3   rT   r   r  r   r7   r7   r8   test_normal_draws2  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
   r0   r   )r3   r7   r7   r8   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+   rM   )rN   )g      ?r   rO   rP   )	rB   r   rF   r	   r0   r   r   rR   rS   )r3   rT   r7   r7   r8   test_nan_policiesA  s    

z$TestCorrSpearmanr2.test_nan_policiesc             C   s(   t d}t d}tttj|| d S )Ng      $@g      4@)rB   r   rR   rS   r0   r   )r3   rT   r4   r7   r7   r8   r   J  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(   rM   )rN   )rB   rF   r0   r   r   )r3   r   r   r   r   r7   r7   r8   test_omit_paired_valueO  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  rK   i  i  g      @rM   )rN   gV-?)listr   r   rB   rF   r   r0   r   )r3   rT   r4   r7   r7   r8   #test_gh_issue_6061_windows_overflowV  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   r0   SpearmanRConstantInputWarningr   r   rB   rF   )r3   rc   r   r7   r7   r8   	test_tie0c  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      @)r0   r   rb   r   )r3   rT   r4   Zxryrsrprr7   r7   r8   	test_tie1p  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&   rM   )rN   )rB   rF   r0   r   r   )r3   r   r5   r   r6   Zsr1Zsr2r7   r7   r8   	test_tie2}  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&   )r=   )rB   r   r   r0   r  r   r   rF   )r3   z1Zz2Zz3rc   r   r7   r7   r8   test_ties_axis_1  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?)rB   r   r   r0   r  r   r   rF   )r3   rT   r4   rc   r   r7   r7   r8   test_gh_11111  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$   )r=   )rB   r   rR   rS   r0   r   )r3   rT   r4   r7   r7   r8   test_index_error  s
    z#TestCorrSpearmanr2.test_index_errorc          	   C   s   dddddg}dddddg}d	}t j||d
d}t|d |d  t|d d|d d   t j||dd}t|d |d  t|d |d d  tjtdd t j||dd W d Q R X d S )Nr   r$   r%   r&   r'   r(   r)   r*   )gh
C?gR?r   )r   r   r   zalternative must be 'less'...)rQ   z	ekki-ekki)r0   r   r
   r   r   rS   )r3   r   r   r  r   r7   r7   r8   test_alternative  s    z#TestCorrSpearmanr2.test_alternativer   )z	two-sidedr   r   c       	   	   C   s   dddddg}dddddg}|t jg }|t jg }tt||t jt jf tj||d	|d
}tj|||d}t|| d}tjt|d tj||d|d
 W d Q R X d}tjt|d tj||d|d
 W d Q R X d S )Nr   r$   r%   r&   r'   r(   r)   r*   rM   )rN   r   )r   zThe input contains nan values)rQ   rO   znan_policy must be one of...z	ekki-ekki)	rB   rF   r	   r0   r   r   r   r   rS   )	r3   r   r   r   Zx1nanZx2nanZ
res_actualZres_expectedmessager7   r7   r8   test_alternative_nan_policy  s"    



z.TestCorrSpearmanr2.test_alternative_nan_policyN)r]   r^   r_   r   r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r   r   parametrizer   r7   r7   r7   r8   r  "  s"   
	
r  c              C   s,  d} dddddddd	g}dddddd	ddg}d
}x<| D ]4}t ||}t|d |d  t|d |d  q6W ddddddddd	g	}ddddddd	ddg	}d
}x<| D ]4}t ||}t|d |d  t|d |d  qW dddddddg}dddddddg}d}x>| D ]6}t ||}t|d |d  t|d |d  q
W ddddddd	g}ddddd	ddg}d}x>| D ]6}t ||}t|d |d  t|d |d  qrW td}td}d}xB| D ]:}t j|||d}t|d |d  t|d |d  qW |d }|d |d< ||d< d}xB| D ]:}t j|||d}t|d |d  t|d |d  q.W |d }|d |d< ||d< d}xB| D ]:}t j|||d}t|d |d  t|d |d  qW td}tdd d d }d}xB| D ]:}t j|||d}t|d |d  t|d |d  qW |d }|d |d< ||d< d}xB| D ]:}t j|||d}t|d |d  t|d |d  q\W |d }|d |d< ||d< d}xB| D ]:}t j|||d}t|d |d  t|d |d  qW tdddddddd	ddg
}tddddddd	d	d	dg
}d}tt j||ddd | d}tt j||ddd | |d |d< ttt j||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"}	x(| D ] }t j|||d}t||	 qW x| D ]}t	t jdddgdddg|dtj
tj
f t	t jdddgdddg|dtj
tj
f t	t jdddgdddg|dtj
tj
f q>W 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 jdddgdddgddd d& tt jdddgdddgdd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+d0d1d2d.d/ ttt j||d3d, ttt j||d4d, td*}td5}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d6td7}tj|d8}tjd6td7}t|d9d  |d d9 f}ttt ||d  d S ):N)r   cr'   r$   r   r%   r(   r&   r)   r*   )g        g      ?r   )gJ$I¿gmK?)gJkaa?g      ?rK   )g      ?gxO~>)variant)g?>?gaV>)g}'}'?go&5>rY   )g      gxO~>)g?>gaV>)g}'}'go&5>r+   gok|?r   gffffff?r"  exact)methodbananaZrms   )gg}+޿g`=i?)r   r   iz  i  )r  r  r[   g      ?g333333?)g\zf?g^n)=g#q?g      $@rM   )rN   )g      ?g/>gư>)r   
asymptotic)rN   r%  )g      ?g&?rO   rP   g      4@i  )r<   i  i  )r0   
kendalltaur
   rB   r   r   rR   rS   r   r   rF   r   r   r	  r
  r  r  r	   r   r   maZmasked_greaterconcatenater   isfinite)variantsrT   r4   r  Ztauxr   r   r   r   r   r   taup_valuer7   r7   r8   test_kendalltau  s   















  





r0  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$   rK   r   r   )
rB   r   r   r   r  shufflemstats_basicr)  r0   r
   )sr   r   r   r  r   r7   r7   r8   test_kendalltau_vs_mstats_basic  s    r5  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@rM   )rN   r   gV瞯<)r~   )rB   rF   r0   r)  r   r   )rT   r4   r1r2r7   r7   r8   test_kendalltau_nan_2nd_arg  s
    r8  c              C   s0  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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ddddg} dddddg}t | |\}}t|d  ddtjdtjg} t | |\}}t|d  tjddtjtjg}t | |\}}t|d  d S )!Nr'  r$   r   r&   r)   r   gs$F)additivegROoc             S   s   dS )Nr   r7   )rT   r7   r7   r8   <lambda>      z"test_weightedtau.<locals>.<lambda>)weighergg}+޿)rankgڿgn)r=  r9  g @ڿg[đ(gIکnTc             S   s   dS )Nr   r7   )rT   r7   r7   r8   r:    r;  )r=  r<  c             S   s   dS )Nr   r7   )rT   r7   r7   r8   r:    r;  )r<   g      (@g       @g      ?g      @g      @gt34+)r0   weightedtaur
   r   rB   rF   r   r   int16rR   rS   )rT   r4   r.  r/  r7   r7   r8   test_weightedtau  s    











(






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   )r0   r>  rB   rF   r7   r7   r7   r8   test_segfault_issue_97100  s    rB  c              C   sZ   d} t | d t}t | d t}t j|d< tj||ddd\}}t|d d S )N   r   rY   r$  rM   )r%  rN   g        )rB   r   r   r   rF   r0   r)  r   )r   rT   r4   _r   r7   r7   r8   test_kendall_tau_large:  s    
rE  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   lenrB   rZ   )rT   r4   r=  r<  addZtotZconcZdiscuvr   r   wr7   r7   r8   wkqF  s    4@
Dz*test_weightedtau_vs_quadratic.<locals>.wkqr1  r%   rK   )r<   r$   )TFc             S   s   d| d  S )Ng      ?r   r7   )rT   r7   r7   r8   r:  c  r;  z/test_weightedtau_vs_quadratic.<locals>.<lambda>c             S   s   d| d  S )Ng      ?r   r7   )rT   r7   r7   r8   r:  d  r;  )rB   r   r   r   r  r2  r   rF  Zintpr0   r>  r   r
   )
rK  r4  r   r   r   r=  rD  rG  r  r   r7   r7   r8   test_weightedtau_vs_quadraticD  s     
rL  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'   )r0   find_repeatsr	   )r3   r   r   numsr7   r7   r8   r   l  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 )NrK   r   2      (   )r0   rN  r	   )r3   r   Zrepeatedcountsr7   r7   r8   test_empty_resultr  s    
z!TestFindRepeats.test_empty_resultN)r]   r^   r_   r   rT  r7   r7   r7   r8   rM  j  s   rM  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d  Zd!d" Zd#d$ Zd%S )&TestRegressionc             C   s@   t tt}t|jd t|jd t|jd t|jd d S )Nig      ?g        )	r0   
linregressr1   re   r   	interceptrvaluestderrintercept_stderr)r3   resultr7   r7   r8   test_linregressBIGX|  s
    z"TestRegression.test_linregressBIGXc             C   s@   t tt}t|jd t|jd t|jd t|jd d S )Ng        g      ?)r0   rV  r1   r   rW  rX  rY  rZ  )r3   r[  r7   r7   r8   test_regressXX  s
    zTestRegression.test_regressXXc             C   s(   t tt}t|jd t|jd d S )Ng        )r0   rV  r1   ZEROr   rW  rX  )r3   r[  r7   r7   r8   test_regressZEROX  s    z TestRegression.test_regressZEROXc             C   sn   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| t	|j
d d S )Nr   r   g?rK   r   g4_Qc?)rB   linspacesinr0   rV  _stats_mstats_commonLinregressResultr   
isinstancer   rY  )r3   rT   r4   r[  lrr7   r7   r8   test_regress_simple  s    z"TestRegression.test_regress_simplec          	   C   s   t ddd}dt ddd d }|t t ddd7 }tjtdd tj||dd	 W d Q R X tj||d
d	}tj||dd	}t|j	d|j	d   tj||dd	}t|j	|j	d  |j
|j
  kr|j
ksn td S )Nr   r   g?rK   r   zalternative must be 'less'...)rQ   z	ekki-ekki)r   z	two-sidedr   r   r$   r   )rB   r`  ra  r   r   rS   r0   rV  r   r   rX  r   )r3   rT   r4   r   r   r  r7   r7   r8   test_regress_alternative  s    z'TestRegression.test_regress_alternativec          
   C   s   ddddddddd	d
g
}ddddddddddg
}t j||dd}t|jd t|jd t|jtd t|jd t|j	d t|j
d d S )N                              r;   Q   8   [   /   9   r   H   >   0   z	two-sided)r   gؗh?gJK@:Cgag?g->g5ՒO?g]؊E @)r0   rV  r   sloperW  rX  rB   rZ   r   rY  rZ  )r3   rT   r4   r   r7   r7   r8   test_regress_against_R  s    z%TestRegression.test_regress_against_Rc             C   sp   t ddd}dt ddd d }|t t ddd7 }t ||f}t|}t|jd t|jd d S )Nr   r   g?rK   r   g4_Qc?g8?)	rB   r`  ra  vstackr0   rV  r   rY  rZ  )r3   rT   r4   rowsr[  r7   r7   r8   test_regress_simple_onearg_rows  s    
z.TestRegression.test_regress_simple_onearg_rowsc             C   s   t ddd}dt ddd d }|t t ddd7 }t t |dt |df}t|}t|jd t|j	d d S )	Nr   r   g?rK   r   r   g4_Qc?g8?)
rB   r`  ra  hstackZexpand_dimsr0   rV  r   rY  rZ  )r3   rT   r4   columnsr[  r7   r7   r8   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%   )rR   rS   r0   rV  rB   ones)r3   r7   r7   r8   test_regress_shape_error  s    z'TestRegression.test_regress_shape_errorc             C   s   t d}t dd}|ddg  d8  < |ddg  d7  < t||}dd	 }||jd
 ||jd ||jd ||jd ||jd ||j	d d S )Nr   r'   r   r   r   rY   c             S   s   t | |ddS )N   )r>   )r   )rT   r4   r7   r7   r8   r:    r;  z0TestRegression.test_linregress.<locals>.<lambda>g      ?g      @gePUn?g.bt>gڽE?gʺL7?)
rB   r   r0   rV  rz  rW  rX  r   rY  rZ  )r3   rT   r4   r[  Z	assert_aer7   r7   r8   test_linregress  s    
zTestRegression.test_linregressc             C   sz   d\}}t |d| |}t d| ||}t||}t|jdk t|jd tt |j  tt |j	  d S )N)gJr 11i r$   rY   )
rB   r`  r0   rV  r   rX  r   r   rY  rZ  )r3   r   r   rT   r4   r[  r7   r7   r8    test_regress_simple_negative_cor  s    z/TestRegression.test_regress_simple_negative_corc             C   s   t ddd}dt ddd d }|t t ddd7 }t||}tjj}tt|| d}t	|| dt
|ks|td S )Nr   r   g?rK   r   )rz  rW  rX  r   rY  rZ  )rB   r`  ra  r0   rV  rb  rc  r   rd  r   dirr   )r3   rT   r4   r[  re  r   r7   r7   r8   !test_linregress_result_attributes  s    
z0TestRegression.test_linregress_result_attributesc             C   sJ   t d}t dd}t||}t|jd t|jd t|jd d S )Nr$   r%   r'   g        )rB   r   r0   rV  r   r   rY  rZ  )r3   rT   r4   r[  r7   r7   r8   test_regress_two_inputs)  s    
z&TestRegression.test_regress_two_inputsc             C   sH   t d}t d}t||}t|jd t|jd t|jd d S )Nr$   g      ?g        )	rB   r   r  r0   rV  r   r   rY  rZ  )r3   rT   r4   r[  r7   r7   r8   'test_regress_two_inputs_horizontal_line6  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$}t ||}t|jd= t|jd> t|jd? d@ t|jdA t|jdB t|jdC d S )DNg?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!пr$   gpX?g        gh-h*<?gg?)	r0   rV  r   rz  rW  rX  r   rY  rZ  )r3   rT   r4   r[  r7   r7   r8   test_nist_norrisC  s    zTestRegression.test_nist_norrisc             C   sz   t ddd}dt ddd d }|t t ddd7 }t||}t ||d}t|j|d  t|j|d  d S )Nr   r   g?rK   r   r   )	rB   r`  ra  r0   rV  Zpolyfitr   rz  rW  )r3   rT   r4   r[  Zpolyr7   r7   r8   test_compare_to_polyfitW  s    z&TestRegression.test_compare_to_polyfitc             C   s   t ttjg g  d S )N)rR   rS   r0   rV  )r3   r7   r7   r8   test_empty_inputc  s    zTestRegression.test_empty_inputc          	   C   sr   t d}t j|d< t jdd t||}W d Q R X tjj}tt	|| t
|t jfd  t|jt j d S )Ng      $@r+   ignore)invalidr'   )rB   r   rF   errstater0   rV  rb  rc  r   rd  r	   r   rZ  )r3   rT   r[  re  r7   r7   r8   test_nan_inputf  s    

zTestRegression.test_nan_inputN)r]   r^   r_   r\  r]  r_  rf  rg  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   rU  z  s$   
	
rU  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&   rK   r'     r+   r      r   -   7   N   gQ?gQ@)r>   gGz@)r0   Ztheilslopesr   )rz  rW  lowerupperrT   r4   r7   r7   r8   test_theilslopest  s    


r  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'   )r  Zdefaultreallimits)ZcumcountrL   binsizeextrapoints)r0   Zcumfreqr   rB   r   r   r   )rT   Zcumfreqslowlimr  r  r   r   r7   r7   r8   test_cumfreq  s    r  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%   )r  g      ?gK}\UU?)Z	frequencyrL   r  r  )rB   r   r0   Zrelfreqr   r   )r   Zrelfreqsr  r  r  r   r   Z	relfreqs2r7   r7   r8   test_relfreq  s    
r  c               @   sL   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dS )TestScoreatpercentilec             C   sD   dddddddg| _ ddd	d
ddddg| _ddddddddg| _d S )Nr%   r&   r'   rK   r(   ir  r*   r)   r$   r   g      @g      @)a1a2a3)r3   r7   r7   r8   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      @rP  g      ?)r   r   r0   scoreatpercentile)r3   rT   r7   r7   r8   r     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 )NrK   rP  g      @)r$   r)   r   )r   r*   )limitr   )rK   r   r  )r   rK   g      @fraction)interpolation_method)r  r  )r0   r  r   r  r   rB   r   )r3   scoreatpercr7   r7   r8   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 )NrK   rP  r  )r  r&   higherr'   )r$   r)   )r  r  r   )r   r*   r   )rK   r   )r   rK   )r0   r  r   r  r   rB   r   )r3   r  r7   r7   r8   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   rP  r'  )r%   r&   r   )r=   r&   gQ?gQ@g(\ @r%   r)   r   )
r   rB   r   r0   r  r   r   rd  ZndarrayrA   )r3   rT   r  r   r   Z	expected2r7   r7   r8   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   rP  r   g      @g      @g      &@r$   r'   r(   r)   r*   r+   rK   r   r   )r=   g      ?g      @g     !@g      ?g      #@r   rP  r7   g      ?)r%   )r0   r  r   rA   r   r   r   )r3   r  rT   Zr0r6  scorer7   r7   r8   	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$   rs  rP   )r  e   rY   )rR   rS   r0   r  )r3   r7   r7   r8   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 )NrP  c   )r   r0   r  rB   rF   r   )r3   r7   r7   r8   
test_empty  s    z TestScoreatpercentile.test_emptyN)r]   r^   r_   r  r   r  r  r  r  r  r  r7   r7   r7   r8   r    s   r  c               @   sF   e Zd Zdddddddgd ZddddgZdd Zdd	 Zd
d ZdS )TestItemfreqr'   r)   r   r$   rK   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   rK   )r<   )	rB   r   r   r   filterDeprecationWarningr0   itemfreqr	   )dtr   rG   rI  )r3   r7   r8   _check_itemfreq  s    
z8TestItemfreq.test_numeric_types.<locals>._check_itemfreq)rB   r   Zint64r   r   Z	complex64
complex128)r3   r  dtypesr  r7   )r3   r8   test_numeric_types  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   )r   r   rB   emptyrF  r   r  r  r0   r  r	   )r3   r   r   r  aabbrG   rI  r7   r7   r8   test_object_arrays*  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$   )r   r   rB   r   r  r   r   r  r  r0   r  r   tuple)r3   r   r   r  r  r  rG   rI  r7   r7   r8   test_structured_arrays6  s    
z#TestItemfreq.test_structured_arraysN)r]   r^   r_   r   r   r  r  r  r7   r7   r7   r8   r    s
   r  c            
   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Z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)r0   moder   rB   r   )r3   valsrS  r7   r7   r8   r  C  s    zTestMode.test_emptyc             C   s6   t d\}}t|tdg t|tdg d S )Ng      @r   )r0   r  r   rB   r   )r3   r  rS  r7   r7   r8   r   H  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   rK      r$   r(   r*   r   )r0   r  r   )r3   data1r  r7   r7   r8   r   M  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 )NrK   rQ  rR  r   )r=   r   r   r*   r$   r%   r&   )rB   r   r0   r  r   )r3   r  data2Zdata3Zdata4Zdata5arrr  r7   r7   r8   	test_axesS  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$   )r0   r  r   )r3   r  r  r7   r7   r8   test_stringsg  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 )	NrK   Thello)r'   )r<   r   r   r$   )rB   rF   r  objectr0   r  r   )r3   objectsr  r  r7   r7   r8   test_mixed_objectsm  s    
zTestMode.test_mixed_objectsc                s   G dd d  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)rT   )r3   rT   r7   r7   r8   __init__y  s    z-TestMode.test_objects.<locals>.Point.__init__c             S   s   | j |j kS )N)rT   )r3   otherr7   r7   r8   __eq__|  s    z+TestMode.test_objects.<locals>.Point.__eq__c             S   s   | j |j kS )N)rT   )r3   r  r7   r7   r8   __ne__  s    z+TestMode.test_objects.<locals>.Point.__ne__c             S   s   | j |j k S )N)rT   )r3   r  r7   r7   r8   __lt__  s    z+TestMode.test_objects.<locals>.Point.__lt__c             S   s
   t | jS )N)hashrT   )r3   r7   r7   r8   __hash__  s    z-TestMode.test_objects.<locals>.Point.__hash__N)r]   r^   r_   r  r  r  r  r  r7   r7   r7   r8   Pointx  s
   r  c                s   g | ]} |qS r7   r7   )r   rT   )r  r7   r8   r     s    z)TestMode.test_objects.<locals>.<listcomp>)r   r$   r%   r&   r%   r$   r$   r$   )r*   )r<   r&   )r&   r   r$   r   )rB   r  r  r   rF  setr   uniquer   r0   r  )r3   Zpointsr  r  r7   )r  r8   test_objectsu  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   rK   r  r$   r(   r*   )r  count)r0   r  r   )r3   r  r  r   r   Zactual2r7   r7   r8   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   rK   r  r$   r(   r*   )r(   r%   rM   )rN   rO   rP   )rB   rF   r0   r  r   rR   rS   )r3   r  r   r7   r7   r8   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 )NrM   )rN   r   r   )r0   r  r   )r3   r  r[  r7   r7   r8   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)r<   r   )r=   )r   r   r$   )
rB   r   r  r0   r  r   r   r   r  rF   )r3   r  arr   r  Zar1r7   r7   r8   test_obj_arrays_ndim  s       zTestMode.test_obj_arrays_ndimN)r]   r^   r_   r  r   r   r  r  r  r  r  r  r   r   r!  rB   rF   r  r  r7   r7   r7   r8   r  B  s   	
r  c               @   s$   e Zd ZddddgZdZdd ZdS )	TestSEMr   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 )Nr  )r  z!Degrees of freedom <= 0 for sliceg㝎?r   )r:   r$   g      $@r+   rM   )rN   gH=6?rO   rP   )r   rB   r  r  rE   r0   Zsemscalar_testcaser   r   testcaser
   rF  r   rZ   r   rF   r   rR   rS   )r3   rG   r4   r   rT   r7   r7   r8   test_sem  s     

"

zTestSEM.test_semN)r]   r^   r_   r  r  r  r7   r7   r7   r8   r    s   r  c            
   @   s   e Zd Zejdddddgddddgfdddgdddddgfgdd Zd	d
 Zdd Zejdddgdd Z	ejdddg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ejd,eg ed-gd.d/ Zd0S )1TestZmapZscorezx, yr   r$   r%   r&   r   c             C   s6   t ||}|t| t| }t||dd d S )Ng-q=)r   )r0   zmaprB   meanrI   r   )r3   rT   r4   zr  r7   r7   r8   	test_zmap  s    zTestZmapZscore.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   )r=   r   r$   g      )rB   r   rZ   r0   r  r   )	r3   rT   t1t2t3z0r  z0_expectedz1_expectedr7   r7   r8   test_zmap_axis  s     



zTestZmapZscore.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   )r=   r:   g      g      ?r%   g      g      ?g?r   )rB   r   r0   r  rZ   r   )r3   rT   r  r  r  r7   r7   r8   test_zmap_ddof  s     zTestZmapZscore.test_zmap_ddofr:   c             C   sd   t dddt jg}t dddddt jg}tj|||dd}t|tj||t |  |d	 d S )
Nr  rY   r$   ir)   r'  rM   )r:   rN   )r:   )rB   r   rF   r0   r  r   r   )r3   r:   scorescomparer  r7   r7   r8   test_zmap_nan_policy_omit  s
    z(TestZmapZscore.test_zmap_nan_policy_omitc          
   C   s   t dddd}t ddddd}t j|d< t j|d	< t j|d
< tj||dd|d}t tj|d |d t |d   |dtj|d |d t |d   |dg}t	||dd d S )Ng      g      "@r$   rY   ir(      )r   r&   )r   r(   )r   r   rM   r   )rN   r=   r:   r   )r:   g+=)r   )
rB   r   rA   r`  rF   r0   r  r   r   r   )r3   r:   r  r  r  r  r7   r7   r8   #test_zmap_nan_policy_omit_with_axis  s    



z2TestZmapZscore.test_zmap_nan_policy_omit_with_axisc          	   C   sV   t dddg}t dddddt jg}tjtdd	 tj||d
d W d Q R X d S )Nr   r$   r%   ir  r)   r'  zinput contains nan)rQ   rO   )rN   )rB   r   rF   r   r   rS   r0   r  )r3   r  r  r7   r7   r8   test_zmap_nan_policy_raise'  s    z)TestZmapZscore.test_zmap_nan_policy_raisec             C   s0   t ddddg}ddddg}t||d	d
 d S )Nr   r$   r%   r&   gOT\wg%ܿg%?gOT\w?r'  )r>   )r0   zscorer   )r3   r4   desiredr7   r7   r8   test_zscore-  s    zTestZmapZscore.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   )r=   r   r$   g      )rB   r   rZ   r0   r  r   )	r3   rT   r  r  r  r  r  r  r  r7   r7   r8   test_zscore_axis5  s     



zTestZmapZscore.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   )r=   r:   g      g      ?r%   g      g      ?g?r   )rB   r   r0   r  rZ   r   )r3   rT   r  r  r  r7   r7   r8   test_zscore_ddofL  s     zTestZmapZscore.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   )rN   )rB   r   rF   r0   r  r   r   r   )r3   rT   r  r7   r7   r8   test_zscore_nan_propagateX  s    z(TestZmapZscore.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'   rM   )rN   gIHb=gIHb=gIHb=?gIHb=?)rB   r   rF   r0   r  r   )r3   rT   r  r  r7   r7   r8   test_zscore_nan_omit]  s    z#TestZmapZscore.test_zscore_nan_omitc             C   s\   t t jdddddg}tj|ddd}t jt jtj|dd  dd	f }t||d
d d S )Ng      ?g      @g      @g      @g      "@r   rM   )r:   rN   )r:   gvIh%<=)r   )rB   r   rF   r0   r  Zr_r   )r3   rT   r  r  r7   r7   r8   test_zscore_nan_omit_with_ddofj  s    "z-TestZmapZscore.test_zscore_nan_omit_with_ddofc             C   s,   t ddt jddg}tttj|dd d S )Nr   r$   r&   r'   rO   )rN   )rB   r   rF   rR   rS   r0   r  )r3   rT   r7   r7   r8   test_zscore_nan_raisep  s    z$TestZmapZscore.test_zscore_nan_raisec             C   s0   dgd }t |}t|tt|tj d S )NgʡEr%   )r0   r  r   rB   rC   rF  rF   )r3   rT   r  r7   r7   r8   test_zscore_constant_input_1du  s    

z,TestZmapZscore.test_zscore_constant_input_1dc          	   C   s   t ddddgddddgg}tj|dd}t|t t jdddgt jdddgg tj|d	d}t|t t jt jt jt jgt|d	 g tj|d d}t|t| |j t 	d
}tj|d d}t|t 
|jt j d S )Ng      $@g      &@g      (@g      *@r   )r=   g      g      ?r   )r%   r(   )rB   r   r0   r  r   rF   ravelrA   r   r  rC   )r3   rT   r  r  r  r4   r7   r7   r8   test_zscore_constant_input_2dz  s    
z,TestZmapZscore.test_zscore_constant_input_2dc             C   s   t ddddgdddt jgddt jdgg}tj|ddd}t d}t d}t|t t j| d	t jgt jdd
t jgt j|t jt jgg tj|ddd}t|t t jt jt jt jg| d|t jg| d |t j| d gg d S )Ng      $@g      &@g      (@rM   r   )rN   r=   g      ?r$   g      g      ?r   )rB   r   rF   r0   r  rZ   r   )r3   rT   r  r4  s2r  r7   r7   r8   -test_zscore_constant_input_2d_nan_policy_omit  s    

z<TestZmapZscore.test_zscore_constant_input_2d_nan_policy_omitc          	   C   sf   t t jt jt jt jgddddgg}tj|ddd}t|t t jt jt jt jgddddgg d S )Ng      $@g      (@rM   r   )rN   r=   g      g      ?)rB   r   rF   r0   r  r   )r3   rT   r  r7   r7   r8   test_zscore_2d_all_nan_row  s
    z)TestZmapZscore.test_zscore_2d_all_nan_rowc             C   s,   t dt j}tj|dd d}t|| d S )N)r$   r%   rM   )rN   r=   )rB   rC   rF   r0   r  r   )r3   r4   r  r7   r7   r8   test_zscore_2d_all_nan  s    z%TestZmapZscore.test_zscore_2d_all_nanrT   )r%   r   r'   c             C   s   t |}t|| d S )N)r0   r  r   )r3   rT   r  r7   r7   r8   test_zscore_empty_input  s    
z&TestZmapZscore.test_zscore_empty_inputN)r]   r^   r_   r   r   r!  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r	  r  r  r  rB   r   r   r  r7   r7   r7   r8   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<@)rB   r   rF   dat_nandat)r3   r7   r7   r8   setup_class  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)r=   gQ?r(   r&   r   gףp=
?g      ?g?g?)r   r0   median_abs_deviationr  rA   rB   r   r   )r3   r  madZmad_expectedr7   r7   r8   test_median_abs_deviation  s    z0TestMedianAbsDeviation.test_median_abs_deviationc             C   s   t j| jdd}t|d d S )NrM   )rN   g(\?)r0   r  r  r   )r3   r  r7   r7   r8   test_mad_nan_omit  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   )r=   )rB   r   rF   r0   r  r   )r3   rT   r  r7   r7   r8   test_axis_and_nan  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  rM   )rN   g      @)rB   r   rF   r   r0   r  r   )Zsefr  r  r7   r7   r8   test_nan_policy_omit_with_inf  s    z4TestMedianAbsDeviation.test_nan_policy_omit_with_infr=   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&   )r=   )
fill_value)rB   r   r0   r  r   Z	full_likesumrF   )r3   r=   rT   r  r7   r7   r8   test_size_zero_with_axis  s    
z/TestMedianAbsDeviation.test_size_zero_with_axisznan_policy, expectedrM   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+   rK   )rN   r=   )rB   r   rF   r0   r  r   )r3   rN   r  rT   r  r7   r7   r8   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   rM   )centerrN   r=   gV瞯<)r   r~   )rB   r   rF   r0   r  r  r   )r3   r=   r  rT   r  r7   r7   r8   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)rQ   r   r$   r%   r'   r  )r  )r   r   	TypeErrorr0   r  )r3   r7   r7   r8   test_center_not_callable  s    z/TestMedianAbsDeviation.test_center_not_callable)r]   r^   r_   r  r  r  r  r  r   r   r!  r  rB   r   rF   r  r  r!  r7   r7   r7   r8   r    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<@)rB   r   rF   r  r  )r3   r7   r7   r8   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  r0   median_absolute_deviationr   rB   rF   )r3   r  rG   r  r7   r7   r8   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   )r=   r   )r%   )rB   r  r   r  r  r0   r#  r   rF   r   r   )r3   r  rG   	mad_axis0	mad_axis1r7   r7   r8   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   )r=   r   r$   )r%   r$   )rB   r  r   r  r  r0   r#  r   rF   r   r   )r3   r  rG   r%  r&  Z	mad_axis2r7   r7   r8   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   )rN   )	r   r  r  r0   r#  r  r   rB   rF   )r3   rG   r  r7   r7   r8   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 )NrO   )rN   )rR   rS   r   r  r  r0   r#  r  )r3   rG   r7   r7   r8   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  r0   r#  r  r   )r3   rG   r  	mad_floatr7   r7   r8   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  r0   r#  r  r   )r3   rG   r  r  r+  r7   r7   r8   test_mad_scale_normal*	  s    

z1TestMedianAbsoluteDeviation.test_mad_scale_normalN)r]   r^   r_   r  r$  r'  r(  r)  r*  r,  r-  r7   r7   r7   r8   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   rF  r   category)Z	warn_listexpected_typeexpected_lenZwarn_r7   r7   r8   _check_warnings4	  s    
r1  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      ?)rB   r   r   r2  r   r0   iqr)r3   rT   r7   r7   r8   r   A	  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   )rK   Z   )rQ  r   g      ?)r   r   g      ?r   )rP  rP  r	  rO   lineargٿrM   r  T)rB   r  r0   r3  )r3   dr7   r7   r8   test_apiF	  s    

zTestIQR.test_apic             C   s.   t tg tj t ttdtj d S )Nr   )r   r0   r3  rB   rF   r   )r3   r7   r7   r8   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   )r=   r&   r   r)   r5  )interpolationmidpointnearestr  r  )r&   r'   r(   r(   )r'   r(   )r&   r(   r$   )r&   r'   g      @)r   r   )r   r$   r'   g      @)r   r$   )	rB   r  r   r0   r3  r	   r   r   rC   )r3   rT   r4   r7   r7   r8   test_constantV	  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)rB   r   r   r0   r3  r	   )r3   rT   r7   r7   r8   test_scalarlikel	  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   )r=   r'   g      @r   r%   g       @)r   r   )r   r   )rB   r   rA   r   r0   r3  r	   rC   )r3   rT   r7   r7   r8   test_2Dr	  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  )r[   rK   )r   r   )r=   rY   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   )rB   r   r	  dstackr0   r3  r   rollaxisZswapaxesr   r2  rA   r  rR   	AxisErrorrS   )r3   orT   qr6  r7   r7   r8   r  z	  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   )rK   rP  g?)r   r  r   )r   rP  <   )
rB   r   r   r0   r3  r   rR   rS   rF   r   )r3   rT   r7   r7   r8   test_rng	  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      ?r5  )r8  r  )r   P   )rE  r8  r%   r  r:  r   r9  g      @rP   )rB   r   r   r0   r3  rR   rS   )r3   rT   r4   r7   r7   r8   test_interpolation	  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)r=   r<  r7   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   )rB   r  r   r0   r3  r   )r3   rT   r7   r7   r8   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   )rN   r)   rM   rO   )r   r$   T)rD   alwaysr   )r=   rN   r'   r   r$   g      @g      @Zbarfood)rB   r   rA   r   r0   r3  rF   warningscatch_warningssimplefilterrC   rR   rS   )r3   rT   r7   r7   r8   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)rD   rK  r   )r  rN   r   )r=   r  rN   r$   gF7k?rM   g      @g	I1=@g      @rP   )rB   r   rA   r   r0   r3  r   rF   rL  rM  rN  r   rR   rS   )r3   rT   r7   r7   r8   
test_scale	  s,    

zTestIQR.test_scaleN)r]   r^   r_   r   r7  r  r;  r=  r>  r  rG  rI  rJ  rO  rP  r7   r7   r7   r8   r2  ?	  s   )r2  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dddZdd Zejdejejejgejdddg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!dS )4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  r1  gp=
ף?g?߾?gD9?gQI?g}?5^IN)r   r<   c            C   sH   t |}|d k	rt ||}t|| |d kr6|j}|j|ksDtd S )N)rB   r   broadcast_tor	   r<   r   )r3   r   expectr   r<   r7   r7   r8   _assert_equal-
  s    

zTestMoments._assert_equalc             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 }| j|t	j
t	jd t t	jg t	jd}| j|t	j
t	jd t jt	ddd}| j|g dt	jd t jg gdd}| j|t	j
dt	jd t jg gddgdd}| j|g dd 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   rK   r$   g      ?r%   r&   g     @g333333?g      @)r<   )r   r   )r=   )r   )r   r<   )r   )momentr=   )r$   r   )r   g      $@r+   rM   )rN   rO   rP   )r0   rU  r  r
   r  r   rR   rS   rT  rB   rF   r   r   r   r   r   r   r   )r3   r4   rT   r7   r7   r8   test_moment6
  sF    








zTestMoments.test_momentr<   zexpect, moment)r   r   )r   r   c             C   s   t jd|}tj||d}| j|||d tjt |dd|d}| j||d|d tjt |d	d
|d}| j||d|d tjt |d	d |d}| j||d|d d S )Nr'   )rU  )r<   )r(   r'   r   )r=   rU  )r'   )r   r<   )r   r$   r%   r&   r'   r$   )r   r$   r&   r'   r7   )rB   r   r   r   r0   rU  rT  rR  )r3   r<   rS  rU  rT   r4   r7   r7   r8   test_constant_momentsc
  s    z!TestMoments.test_constant_momentsc             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$   rY   )r   r   r   r   )r=   rN   g      ?gV瞯<)r~   )
rB   r   rA   r   r   rF   r0   rU  r   r   )r3   r   mmr7   r7   r8   test_moment_propagate_nanv
  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%?rK   g      $@r+   rM   )rN   g4?rO   rP   )r0   	variationr  r
   r  rB   r   rF   r   r   rR   rS   )r3   r4   rT   r7   r7   r8   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$   rY   )r   r   r   r   )r=   rN   g5Fu?gV瞯<)r~   )
rB   r   rA   r   r   rF   r0   rZ  r   r   )r3   r   vvr7   r7   r8   test_variation_propagate_nan
  s    
z(TestMoments.test_variation_propagate_nanc             C   sf   t dddddg}t dddtjddtjg}tj|dd}tj|ddd}t|d	 tj|| d S )
Nr   r$   r%   r&   r'   )r:   rM   )rN   r:   g<<'?)r   rB   rF   r0   rZ  r
   r   r   )r3   r   Znan_ar4   Znan_yr7   r7   r8   test_variation_ddof
  s    
zTestMoments.test_variation_ddofc          	   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*ҿrK   r   )biasg2۠ۿg      $@r+   r  )r  rM   )rN   rO   rP   )r0   skewr  r
   testmathworksr  rB   r   rF   r  r   rR   rS   )r3   r4   rT   r7   r7   r8   test_skewness
  s    


zTestMoments.test_skewnessc             C   s   t ttdd d S )NrK   g        )r   r0   r`  r   )r3   r7   r7   r8   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$   rY   )r   r   r  )r  r   r   )r=   rN   r   gV瞯<)r~   )rB   r   rA   r   r   rF   r  r0   r`  r   r   )r3   r   r4  r7   r7   r8   test_skew_propagate_nan
  s
    
z#TestMoments.test_skew_propagate_nanc             C   s   t dd}t|dkstt|td dks8tt|td dksRttj|dddkshttdgd dksttd	t d
dd  dkstd S )Ng9ѿrK   g        l           F)r_  g,@r)   r   r  r&   gؗҜ<r   )rB   repeatr0   r`  r   r   r   )r3   r   r7   r7   r8   test_skew_constant_value
  s    z$TestMoments.test_skew_constant_valuec             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@rK   gx|N@g=
ףp=?g      $@r+   rM   )rN   gGzrO   rP   )r0   kurtosisr  r
   ra  r  rB   r   rF   r   r   rR   rS   )r3   r4   rT   r7   r7   r8   test_kurtosis
  s    



zTestMoments.test_kurtosisc             C   s   t ttdddgt d S )Nr   r$   r%   )r   typer0   rh  r   )r3   r7   r7   r8   test_kurtosis_array_scalar
  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$   rY   )r   r   r   r   )r=   rN   g(\gV瞯<)r~   )
rB   r   rA   r   r   rF   r0   rh  r   r   )r3   r   r   r7   r7   r8   test_kurtosis_propagate_nan
  s    
z'TestMoments.test_kurtosis_propagate_nanc             C   sz   t dd}tj|dddks"ttj|td dddks@ttj|td dddks^ttj|ddddksvtd S )Ng9ѿrK   F)rg  g        l           )rg  r_  )rB   re  r0   rh  r   r   )r3   r   r7   r7   r8   test_kurtosis_constant_value
  s
    z(TestMoments.test_kurtosis_constant_valuec             C   s6   | j t| j  }tt|d t| j d d S )Nr1  )testcase_moment_accuracyrB   r  r   r   r0   rU  )r3   Z
tc_no_meanr7   r7   r8   test_moment_accuracy
  s    z TestMoments.test_moment_accuracy)"r]   r^   r_   r   r  r  rB   r   r   r   rn  ra  rT  rV  r   r   r!  r   r   r  rW  rY  r[  r]  r^  rb  rc  rd  rf  ri  rk  rl  rm  ro  r7   r7   r7   r8   rQ  
  s.   		-
		rQ  c               @   sp   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e
d Zde
d  Zdd Zdd ZdS )TestStudentTestrY   r   r   r$   gSzgE.?g {gB4t?g {?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jd
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 )Nr  )r  z!Degrees of freedom <= 0 for sliceg      @g      @r   )	statisticr   r   r$   r'   rK   3   it )r  r  r[   random_staterP  g      @rM   )rN   )g̈́^Bg/kCm?rO   rP   )r   rB   r  r  rE   r0   ttest_1sampr   r   X1r   T1_0P1_0r   X2T2_0P2_0T1_1P1_1T1_2P1_2normrvsrF   r	   rR   rS   )r3   rG   tr   r   r   rT   r7   r7   r8   test_onesample  s:    $

zTestStudentTest.test_onesamplec             C   sv   t ttj| jddd tj| jddd\}}t|| j t|| j tj| jddd\}}t|| j t|| j d S )Nr   error)r   r   r   r   )	rR   rS   r0   rt  ru  r   P1_1_lr{  P1_1_g)r3   r  r   r7   r7   r8   test_1samp_alternative?  s    z&TestStudentTest.test_1samp_alternativeN)r]   r^   r_   rB   r   ru  rx  rv  rw  r{  r|  r}  r~  ry  rz  r  r  r  r  r7   r7   r7   r8   rp    s   +rp  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+   rK   g      D@))r  g     A@)strictg      >@)weakg      D@)kind))r=  g     F@)r  g      >@)r  g      I@)r  g      D@g      I@))r=  g      I@)r  g     F@)r  g      >@)r  g      N@)r=  r  r  r  r   rQ  r   rR  rP  rF  F   rH  r4  r   ))r  g     F@)r  g      >@)r  g      N@n   g      >@))r=  g      $@)r  g      @)r  g        )r  g      $@))r=  g      Y@)r  g     W@)r  g     V@)r  g      Y@))r=  r   g      Y@)r  r   g      Y@)r  r   g        Zunrecognized)r0   Zpercentileofscorer   rB   r   rR   rS   )Zpcosr  r[  r  r7   r7   r8   test_percentileofscoreK  sH    $",$,
,
r  ZCasef_obsf_expr:   r=   chi2logmod_logcrr'  g       @gUUUUUU?gfx(@)r  r  r:   r=   r  r  r  r  r   r  g      @g      ?g{T4@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 )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:   r=   lambda_r   pearson)r  r  r:   r=   )rB   r   r[   	broadcastr   r   r  rE   r0   power_divergencer   	chisquaredistributionsr  sf)r3   r  r  r:   r=   r  expected_statZnum_obsr   rG   statr   Z
expected_pr7   r7   r8   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 )Nr  r   zlog-likelihoodzmod-log-likelihoodzcressie-readgUUUUUU?)
power_div_1d_casesr  r  r  r:   r=   r  r  r  r  )r3   caser7   r7   r8   r     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 )Nr  r   zlog-likelihoodzmod-log-likelihoodzcressie-readgUUUUUU?)r  rB   r*  r   r  r  r  r:   r=   r  r  r  r  )r3   r  mobsr7   r7   r8   test_basic_masked  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   r  zlog-likelihoodzmod-log-likelihoodzcressie-readr$   )r  rB   r|  r  	ones_liker  r  r  r  r  r  r  r   rA   )r3   case0case1r  r  r7   r7   r8   r  &  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   )r  rB   r|  r  r   r  r  r  r  r   r0   r  r   r	   )r3   r  r  r  r  Zexpected_chi2r:   r  r   Zstat0p0Zstat1p1r7   r7   r8   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 )Nr  zlog-likelihoodzmod-log-likelihoodzcressie-read)rL  rM  power_div_empty_casesr  r  r  r:   r=   r  r  r  r  )r3   r  r7   r7   r8   test_empty_cases\  s    




z$TestPowerDivergence.test_empty_casesc             C   sN   t d j}t d j}t d j}t d j}tj||||dd}d}t|| d S )Nr   r  )r  r  r:   r=   r  )rq  r   )r  r  r  r:   r=   r0   r  r   )r3   r  r  r:   r=   r   r   r7   r7   r8   'test_power_divergence_result_attributesl  s    





z;TestPowerDivergence.test_power_divergence_result_attributesc          	   C   s   t ddgddgg}t ddgddgg}ttdd	 tjddgdd
gd W d Q R X ttdd	 tj||dd W d Q R X tj||d\}}t|ddg t|ddg d S )NrK   r   rQ  r'   r   #   r   zFor each axis slice...)rQ   rF  )r  r  r   )r  r  r=   g̑m@gUUU@gj^4;?g4;?)rB   r   rR   rS   r0   r  r   )r3   r  r  r  r   r7   r7   r8   test_power_divergence_gh_12282w  s     z2TestPowerDivergence.test_power_divergence_gh_12282N)r]   r^   r_   r  r   r  r  r  r  r  r  r7   r7   r7   r8   r    s   r  c            	   C   s2   t tdd tjddgddgd W d Q R X d S )NzFor each axis slice...)rQ   rK   r   rQ  rF  )r  r  )rR   rS   r0   r  r7   r7   r7   r8   test_gh_chisquare_12282  s    r  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   )r<   r$   gvIh%<=)r   )rB   r   r0   r  r   )r   r<   obsexpr  r   r7   r7   r8   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       rY   r%   r&   r'   r   r   g      8@g      ?r$   g       @g      ?g      ?)r=   zlog-likelihood)r  r   )r>   )r=   r  r(   r  rK   )mask)r  g      ?r  )r  zMean of empty slicer7   )r%   )rB   r   r   r*  Zmasked_arrayr  r0   r  r  r  matr	   r   r  r  r  r   rd  r   r   r   r  r   r  rE   ZMaskedArrayr   r  r   )r  r  r  Zexpected_chisqZ
expected_gr  Zchisqr   gZobs1Zexp1rG   Zempty3r7   r7   r8   test_chisquare_masked_arrays  sd    $$"$$$ 
*
$r  c           "   C   s*  t ddddddddddd	d
ddddddg} d}t dt| d }t |  t ||   }t |||  }t | |fj}t dddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.g 	d/d0}xJ|D ]B\}}t
j|d d d1f |d d df |d2\}	}
t|	|d3d4 qW d S )5Nr   r   r     r'   rK   r&   r*   r)   r+   r%   r(   r   g*kqg      $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@rY   r$   r   )r  g{Gzt?)r   )rB   r   r   rF  r  r  r  r|  r   rA   r0   r  r   )r  betar   alphaZexpected_countsZtable4Ztable5r  r  r  r   r7   r7   r8   /test_power_divergence_against_cressie_read_data  s:    	 
 r  c              C   sV  t ddddddddd	d
ddddgt dddddddddd
ddddgt ddddddd d!d"d
d#d$d%d&gt d'd(d)d*d+dd,d-d.d
dd/d0d1gg} t d2d3d4d3d4d3d5d4d2d2d2d3gt d5d5d6d5d3d6d5d3d5d6d6d3gt d5d2d3d3d2d3d3d2d2d6d5d6gt d3d4d2d3d2d2d3d3d3d2d2d2gg}t d7d8d9d:d;gt d<d=d>d?d@gt dAdBdCdDdEgt dFdGdHdIdJgg}tt| 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+ԋ?)rq  r   )r   r   r0   ZfriedmanchisquarerR   rS   r   mstats)r   r   r   r   r   r7   r7   r8   test_friedmanchisquare  sB    "   

r  c               @   s4   e Zd ZdZdddZdddZdd	 Zd
d ZdS )
TestKSTestzLTests kstest and ks_1samp agree with K-S various sizes, alternatives, modes.autor  c       	      C   s8   t j|d||d}t||g}tt|||d d S )Nr  )r   r  )r>   )r0   kstestrB   r   r   )	r3   rT   r   expected_statisticexpected_probr  r>   r[  r  r7   r7   r8   _testOneE  s    zTestKSTest._testOnec             C   s@   t j|d||d}t j|t jj||d}tt|||d d S )Nr  )r   r  )r>   )r0   r  ks_1sampr  cdfr   rB   r   )r3   rT   r   r  r>   r[  Zresult_1sampr7   r7   r8   _test_kstest_and_ks1sampJ  s    z#TestKSTest._test_kstest_and_ks1sampc             C   s,   t ddd}d}t|d}t|| d S )NrY   r   r+   )rq  r   r  )rB   r`  r0   r  r   )r3   rT   r   r   r7   r7   r8   test_namedtuple_attributesO  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 )NrY   r   r+   z	two-sidedir   gGzgQ?g333333g(\?gQ?g(\ſg{GzgHzG?g\(\gGzr   r$  )r  r   )rB   r`  r  )r3   rT   r7   r7   r8   test_agree_with_ks_1sampV  s    z#TestKSTest.test_agree_with_ks_1sampN)r  r  )r  r  )r]   r^   r_   r   r  r  r  r  r7   r7   r7   r8   r  B  s
   

r  c               @   s:   e Zd ZdZdddZdd Zdd	 Zd
d Zdd ZdS )TestKSOneSamplezOTests kstest and ks_samp 1-samples with K-S various sizes, alternatives, modes.r  r  c       	      C   s<   t j|t jj||d}t||g}tt|||d d S )N)r   r  )r>   )r0   r  r  r  rB   r   r   )	r3   rT   r   r  r  r  r>   r[  r  r7   r7   r8   r  g  s    zTestKSOneSample._testOnec             C   s0   t ddd}d}t|tjj}t|| d S )NrY   r   r+   )rq  r   )rB   r`  r0   r  r  r  r   )r3   rT   r   r   r7   r7   r8   r  l  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 )NrY   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?)rB   r`  r  )r3   rT   r7   r7   r8   test_agree_with_rs  s    z!TestKSOneSample.test_agree_with_rc             C   sJ   t jjdddd}| j|ddddd	 | |d
dd | |ddd d S )Ng?r   ih:)r  r[   rs  z	two-sidedghх?g7?asymp)r  r   g^h?r   gv!ԉ}?g*z)?)r0   r  r  r  )r3   rT   r7   r7   r8   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)rQ   g      ?rY   )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   rB   r   r   rF   rR   rS   r   r   checkintr   bool)r3   Zdatasetr7   r7   r8   test_ks1samp_allpaths  s(    z%TestKSOneSample.test_ks1samp_allpathsN)r  r  )	r]   r^   r_   r   r  r  r  r  r  r7   r7   r7   r8   r  d  s   
r  c               @   s   e Zd ZdZd(ddZdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zejjdd Zejjdd Zdd Zdd Zdd Zejjdd Zdd  Zejjd!d" Zd#d$ Zejjd%d& Zd'S ))TestKSTwoSamplesz<Tests 2-samples with K-S various sizes, alternatives, modes.r  c       	      C   s4   t j||||d}t||g}tt|| d S )N)r  )r0   ks_2samprB   r   r   )	r3   r   r   r   r  r  r  r[  r  r7   r7   r8   r    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        )r  )r3   r7   r7   r8   	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   )rB   r   r  )r3   r  data1pdata1mr  r7   r7   r8   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   )rB   r   r  )r3   r  r  r  r  r7   r7   r8   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?)rB   r`  r  )r3   x100Z	x100_2_p1Z	x100_2_m1r7   r7   r8   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      ?)rB   r`  r  )r3   r  Zx110Z
x110_20_p1Z
x110_20_m1r7   r7   r8   test100_110  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(   )r<   r   rK   r)   z	two-sidedg      ?g^dH?r   gQl6y?r   g        g      ?gVdEVdE?g(f^?g!?gii?g+ ϖ?)rB   r   r  r  )r3   Zx2233Zx3344Zx2356Zx3467r7   r7   r8   testRepeatedValues  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      ?)rB   r   r  )r3   r  r7   r7   r8   testEqualSizes  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     @@r  )r  r  r   g2JE?r   g     @@gsW\nc?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r$  T)rD   rK  )
rB   r`  r  r   r  rE   rL  rM  rN  r1  )r3   n1n2deltarT   r4   rG   rJ  r7   r7   r8   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     ȹ@r  )r  r  r   gZ?r   g     @@g@J?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.r$  T)rD   rK  )
rB   r`  r  r   r  rE   rL  rM  rN  r1  )r3   r  r  r  rT   r4   rG   rJ  r7   r7   r8   testMediumBoth  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:)rB   r`  r  )r3   r  r  lcmr  rT   r4   r7   r7   r8   	testLarge*  s    zTestKSTwoSamples.testLargec             C   s\   t jd t jjdd}t jjddd }| j||dddd	d
 | j||ddddd
 d S )Ni@ i  )r[   i  g      ?z	two-sidedgC?g      <r  )r  r$  )rB   r   r   r	  r  )r3   rT   r4   r7   r7   r8   test_gh111845  s
    zTestKSTwoSamples.test_gh11184c             C   s   t jd t jjdd}t jj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'  )r[   i'  g      ?z	two-sidedg 	_r!?gAD5r  )r  g      <r$  r   gלN#y7r   gvqw?)rB   r   r   r	  r  )r3   rT   r4   r7   r7   r8   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?r  )r  gLɔ.?r$  r  r   g.LbG2?r   g      $@gr?֎?zBks_2samp: Exact calculation unsuccessful. Switching to mode=asymp.)rB   r`  r  r   r  rE   )r3   r  r  r  r  rT   r4   rG   r7   r7   r8   testLargeBothG  s    zTestKSTwoSamples.testLargeBothc             C   s$   d}t ddgdg}t|| d S )N)rq  r   r   r$   r%   )r0   r  r   )r3   r   r   r7   r7   r8   testNamedAttributesY  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  )scipy.stats.statsr  r  rR   FloatingPointError)r3   r  r  r7   r7   r8   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   )rR   rS   r0   r  )r3   r7   r7   r8   test_argument_checkingj  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   )r[   r  r  r   r  )r   r  r   z	two-sidedN)rB   r   r   r0   uniformr  r  )r3   r  rvs1rvs2r7   r7   r8   test_gh12218p  s    zTestKSTwoSamples.test_gh12218N)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  r7   r7   r7   r8   r    s&   

r  c           
   C   s4  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ttj||dd tj||ddd\}}t|d|d   t||  tj||ddd\}}t||d  t||  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   )r=   r  )r  z!Degrees of freedom <= 0 for sliceg      @g      @)rq  r   )r$   r%   r$   )r%   r$   r  )r   r   )r=   r   r   iNa r'   rK   i  )r  r  r[   rs  i  g?)r  r[   rs  rM   )rN   )ghm#1?gry̧?rO   rP   rY   )r$   r$   r  )r*   r%   )r$   r%   r&   ) rB   r`  r   r0   	ttest_relr   r   r   r  r  rE   r   r   r   r@  absr   r   rA  rR   rS   r   r   RandomStater  r  rF   r	   r   r   r   rA   )trr  tprr  r  rvs1_2Drvs2_2Dr  r   rG   r   r   rvs1_3Drvs2_3DrE  rT   r4   ananr7   r7   r8   test_ttest_rel~  sx    ""$




$& 
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      ?rM   )rN   gV瞯<)r~   r   )r  grh|?g-C6?)rB   rF   r0   r  r   rq  r   )rT   r4   r6  r7  r3r7   r7   r8   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)r0   r  rd  Ttest_relResultr   r   rB   rF   )r[  r7   r7   r8   #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   rY   )r=   )r  )rB   r  r0   r  rd  r  r   rC   rF   r   rq  r   )r   expected_shaper   r[  expected_valuer7   r7   r8   test_ttest_rel_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   )r=   )r'   r   )rB   r  r0   r  rd  r  r   r   rq  r   r   )r   r   r[  r7   r7   r8    test_ttest_rel_nonaxis_size_zero  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)r=   r   )r=   r:   )rB   r   r  rI   r   )rT   r=   murI   nobsr7   r7   r8   _stats  s
    

z_desc_stats.<locals>._stats)r   r7   )r   r   r=   r  r7   r7   r8   _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ttj||dd tttjft|j|jddi tj||dd\}}t|d|d   t||  tj||dd\}}t||d  t||  tj|j|jddd\}}t|j|j}	ttj|	ddi||g tj|j|jddd\}}t|j|j}	ttj|	ddi||g 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   )r=   r  )r  z!Degrees of freedom <= 0 for sliceg      @g      @)r$   r%   r$   )r%   r$   r  )r   r   r   r   )r=   r   iNa rK   i  )r  r  r[   rs  i  rM   )rN   )guͷ?g*,?rO   rP   rY   )r$   r$   ) rB   r`  r   r0   	ttest_indr   ttest_ind_from_statsr  r   r   r  r  rE   r   r   r@  r   r  r   r   rA  rR   rS   r   r   r  r  r  rF   r	   r   r   )r  r  r  r  r  r  r  r  r   argsrG   r  r  rE  rT   r4   r  r7   r7   r8   test_ttest_ind  s    





$



$&r  c               @   sF  e Zd ZdZejd eede d ejde d fZ	eeed d ejed fZ
edZedd ZddgZddgZejd ejjd	dd
ddd	ZejjddddZddgZddgZdddddgZe	e
ddiefe	je
jddiefe	dddf e
dddf ddied fe	dddf  e
dddf  ddied fe	e
dddefe	e
ejdddefeeddidfeedddefeei dfg	Zeejdkree	e
ejdddef e j!"dedd Z#dd  Z$d!d" Z%d#d$ Z&d%d& Z'e j!( d'd( Z)d)d* Z*d+d, Z+dS )-Test_ttest_ind_permutationsr   r   r%   r&   r   rK   r   r$   r'   i  )r  r  r[   r*   goʡ?g/$?g-?gQ?gzG?g(\?gRQ?r=   N)rs  r=   	equal_varT)r=   rs  gUUUUUU?z1.18.0za,b,update,p_dc             C   sn   d dd}d dddd}| | | | tj||f|\}}tj||f|\}	}
t||	d t|
| d S )NF)r=   r  i  r   )r=   r  permutationsrs  r'   )updater0   r  r   )r3   r   r   r  p_dZ	options_a	options_pZstat_arD  Zstat_pr   r7   r7   r8   test_ttest_ind_permutations  s    



z7Test_ttest_ind_permutations.test_ttest_ind_permutationsc             C   s  t jd d}t jd|d}t jd|d}ddd}|jdd tj||f|}tj||f|}|jd	d tj||f|}tj||f|}|jd
d tj||f|}	tj||f|}
t|j|j t|j|	j t|j|j  t|j|j  t|	j|
j  t|	j	|
j	 t|j	|j	 t|j	|j	 |j	dk}t|j	| |j	|  |	j	|  t|j	|  |j	|   |	j	|   d S )Nr   r%   r$   r   i  )r=   r  r   )r   r   z	two-sidedg      ?)
rB   r   r   r   r  r0   r  r   rq  r   )r3   Nr   r   r  res_g_abres_g_bares_l_abres_l_bares_2_abZres_2_bar  r7   r7   r8    test_ttest_ind_exact_alternative  s6    

z<Test_ttest_ind_permutations.test_ttest_ind_exact_alternativec             C   s   t jd d}t j|}t j|}t||}tj||dd}tj||dd}tj||t jd}|j|jksvt|j|jkst|j|jkstd S )Nr   r%   i  )r  )	rB   r   r   r   r0   r  r   r   r   )r3   r  r   r   Zres0r   r   r  r7   r7   r8   test_ttest_ind_exact_selection  s    z:Test_ttest_ind_permutations.test_ttest_ind_exact_selectionc             C   s   t jd t jd}t jd}t ||f}t|t| }}d}t|||\}}|dd |f }|d|d f }t||d}	tt|	}
|
t	|| |kst
t|	|
kst
d S )Nr   r%   r&   i .T)rB   r   r   r   r+  rF  r#   r"   r  r   r   )r3   r   r   r  nanbr  Zmat_permrD  Zt_statZn_uniquer7   r7   r8   !test_ttest_ind_exact_distribution  s    z=Test_ttest_ind_permutations.test_ttest_ind_exact_distributionc       	      C   s   t jd d}t jdd|}t jd|}dddd}|jdd	 tj||f|}tj||f|}|jd
d	 tj||f|}tj||f|}t|j|j t|j|j  t|j|j  t|j	|j	 d t|j	|j	 d d S )Nr   rP  r$   r%   rY   i  )r=   r  rs  r   )r   r   r   )
rB   r   r   r   r  r0   r  r   rq  r   )	r3   r  r   r   r  r  r  r  r  r7   r7   r8   #test_ttest_ind_randperm_alternative  s     z?Test_ttest_ind_permutations.test_ttest_ind_randperm_alternativec       	      C   s2  t jd d}t j|d}t j|d}ddd}|jdd tj||f|}|jdd tj||f|}|jd	d tj||f|}t|j|j d
 |jdk}t	d|j|  |j| dd t	dd
|j|    |j|  dd t	d|j|   |j|  dd t	dd
|j|   |j| dd d S )Nr   rP  r&   i N  )r  rs  r   )r   r   z	two-sidedr   g      ?r$   g{Gz?)r~   )
rB   r   r   r   r  r0   r  r   r   r   )	r3   r  r   r   r  r  r  r  r  r7   r7   r8   $test_ttest_ind_randperm_alternative2  s*    

z@Test_ttest_ind_permutations.test_ttest_ind_randperm_alternative2c       	   	   C   s  t jd d}t j|d}t j|d}t j|d< t j|d< t j|d< t j|d< ddd}|jd	d
 ttdd tj	||f|}W d Q R X t
 }|td |jdd
 tj	||f|}t |jddt |jddB }tj	|d d | f |d d | f f|}t|j| t j t|j| t j t|j|  |j t|j|  |j tj	| | f|}t |jstt |jstW d Q R X |jdd
 ttdd tj	||f|}W d Q R X d S )Nr   rP  r'   )r'   r   )r*   r$   )r+   r%   i  )r  rs  rO   )rN   zThe input contains nan values)rQ   zinvalid value*r   )r=   rM   z!nan-containing/masked inputs with)rB   r   r   r   rF   r  rR   rS   r0   r  r   rD   rE   r   anyr   r   rq  r   r  r   )	r3   r  r   r   r  r   rG   r  r   r7   r7   r8   $test_ttest_ind_permutation_nanpolicy@  s:    





$,
z@Test_ttest_ind_permutations.test_ttest_ind_permutation_nanpolicyc          	   C   s   t tdd tj| j| jdd W d Q R X t tdd tj| j| jdd W d Q R X t tdd tj| j| jddd	 W d Q R X d S )
NzPermutations must be)rQ   r  )r  g      ?z'hello' cannot be usedr   r  )r  rs  )rR   rS   r0   r  r  b2r   r   )r3   r7   r7   r8   'test_ttest_ind_permutation_check_inputsj  s    zCTest_ttest_ind_permutations.test_ttest_ind_permutation_check_inputs),r]   r^   r_   r  rB   r   r   r|  r   r   r   r  r"  r  Zb3r0   r  r  rA   r  r  r  Zp_d_genZp_d_bigr   tolistr  paramsr   __version__r   default_rngr   r   r!  r  r  r  r  r  r   r  r!  r#  r7   r7   r7   r8   r  }  sH   ,(

*2*!*r  c               @   s   e Zd Zej ejjddddddii gdddgd	ejjd
ddgd
dgd	dd Zejjddddddii gdddgd	ejdddgdd ZdS )Test_ttest_ind_commonkwdsr   r   )r  rs  trimg?r  basic)Zidsr  TFZunequal_varc             C   s  t jd t jdddddd}t jddddd}tj||fd	d
i|}d\}}}||d d |d d dd d f }	|d d dd d |d d f }
tj|	|
fd	di|}t|j|d d ||d d f |j t|j|d d ||d d f |j t 	t 
|dd
d}t 	t 
|dd
d}|jd d }t |}t |}xXtdd |D  D ]B}|| }|| }tj||fd	di|}|j||< |j||< qXW t||j t||j d S )Nr   r'   r&   r)   r   r(   r*   r$   r=   r  )r$   r%   r   r  )r   r   r   r   r$   r   rY   )r'   r   r&   r   r   r   c             s   s   | ]}t |V  qd S )N)r   )r   r   r7   r7   r8   	<genexpr>  s    z=Test_ttest_ind_common.test_ttest_many_dims.<locals>.<genexpr>)rB   r   r   r   r0   r  r   rq  r   Zmoveaxistiler   r   r   r   )r3   r)  r  r   r   r   r   r   r   r  r"  r   rT   r4   r   
statisticsZpvaluesindicesxiyir  r7   r7   r8   test_ttest_many_dimsw  s2    
 


z*Test_ttest_ind_common.test_ttest_many_dimsr=   rY   c       
   
   C   s   t jjdddd}t jjdddd}t j|d d d< t j|d d d< t t j|| |d	}t B}t jd
d* |	t
d tj||fd|i|}W d Q R X W d Q R X t |j}t|| t |j}	t|	| d S )NrK   )r'   r%   rK   )r[   r   r   r$   r%   r(   )r=   r  )r  z'invalid value encountered in less_equalr=   )rB   r   randintr   rF   r   r  r   r  r  rE   r0   r  r   r	   rq  )
r3   r)  r=   r   r   r  rG   r   Zp_nansZstatistic_nansr7   r7   r8   test_nans_on_axis  s    ,
z'Test_ttest_ind_common.test_nans_on_axisN)	r]   r^   r_   r   r   r   r!  r2  r4  r7   r7   r7   r8   r(  t  s   
$
r(  c               @   s\  e Zd Zdddgdddgddd	gd
ddddddgdddgddd	gd
ddddddgdddgdddgdddddddddddgddddddd d!d"d#d$gd%d&d	gd'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:gd;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNgdOdPd	ggZejdQedRdS ZdTdU ZdVdW Z	ejdXdYdZd[ Z
d\d] Zejd^d_ddgd`da ZdbS )cTest_ttest_trimr   r$   r%   g?g333333@g@g9(?geg?rs  g33333`@r'  g33333^@g(\P@r  gfffffڇ@gBM)u?g]@gyd?g	s5v@g{Gz?g@g      @gffffff?gffffff@g333333?g      @g@g333333 @g      @g      ?g333333@g@g      #@g@gffffff@gn4aƂg?g^g,
gm?giI@gE|x!gvwQ?glfPg_)gXG~?g=n@g8$mg({g]:m?gYv gb?gb	gSTß}g9yg.Ͽv?g޺i?g	'X@g>_\?g hO?gau?@g׌g+?g:؜^gz54g7f?gDO%@g#xG@g\F?g4E?gnfg>P"ۿguX@gvR?g%?g2Ydzgo?gih?gn?g!nu?gJ+bza,b,pr,tr,trimc             C   s6   t j|||dd\}}t||dd t||dd dS )a  
        Using PairedData's yuen.t.test method. Something to note is that there
        are at least 3 R packages that come with a trimmed t-test method, and
        comparisons were made between them. It was found that PairedData's
        method's results match this method, SAS, and one of the other R
        methods. A notable discrepancy was the DescTools implementation of the
        function, which only sometimes agreed with SAS, WRS2, PairedData and
        this implementation. For this reason, most comparisons in R are made
        against PairedData's method.

        Rather than providing the input and output for all evaluations, here is
        a representative example:
        > library(PairedData)
        > a <- c(1, 2, 3)
        > b <- c(1.1, 2.9, 4.2)
        > options(digits=16)
        > yuen.t.test(a, b, tr=.2)

            Two-sample Yuen test, trim=0.2

        data:  x and y
        t = -0.68649512735573, df = 3.4104431643464, p-value = 0.5361949075313
        alternative hypothesis: true difference in trimmed means is not equal
        to 0
        95 percent confidence interval:
         -3.912777195645217  2.446110528978550
        sample estimates:
        trimmed mean of x trimmed mean of y
        2.000000000000000 2.73333333333333
        F)r*  r  gV瞯<)r~   N)r0   r  r   )r3   r   r   r  r  r*  rq  r   r7   r7   r8   test_ttest_compare_r  s     z$Test_ttest_trim.test_ttest_compare_rc             C   sr   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g}t j||ddd\}}t|ddd t|ddd d S )Nr'  r  r  r   r  ,   r     rQ     r  g
ףp=
?F)r*  r  gRbv?gư>)r~   gOi?)r0   r  r   )r3   r   r   rq  r   r7   r7   r8   test_compare_SAS  s
     z Test_ttest_trim.test_compare_SASc             C   sh   dddddddddddg}ddd	d
dddddddg}t j||dd\}}t|ddd t|ddd dS )a  
        The PairedData library only supports unequal variances. To compare
        samples with equal variances, the multicon library is used.
        > library(multicon)
        > a <- c(2.7, 2.7, 1.1, 3.0, 1.9, 3.0, 3.8, 3.8, 0.3, 1.9, 1.9)
        > b <- c(6.5, 5.4, 8.1, 3.5, 0.5, 3.8, 6.8, 4.9, 9.5, 6.2, 4.1)
        > dv = c(a,b)
        > iv = c(rep('a', length(a)), rep('b', length(b)))
        > yuenContrast(dv~ iv, EQVAR = TRUE)
        $Ms
           N                 M wgt
        a 11 2.442857142857143   1
        b 11 5.385714285714286  -1

        $test
                              stat df              crit                   p
        results -4.246116897032513 12 2.178812829667228 0.00113508833897713
        g@g?g      @gffffff?gffffff@g333333?g      @g@g333333 @g      @g      ?g333333@g@g      #@g@gffffff@g?)r*  gR?g|=)r~   g^N)r0   r  r   )r3   r   r   rq  r   r7   r7   r8   test_equal_var  s
    zTest_ttest_trim.test_equal_varz	alt,pr,tr))r   gjΜ>5?g^)r   gn4aƂW?g^c             C   sl   dddddddddddg}ddd	d
dddddddg}t j||dd|d\}}t||dd t||dd dS )z
        > library(PairedData)
        > a <- c(2.7,2.7,1.1,3.0,1.9,3.0,3.8,3.8,0.3,1.9,1.9)
        > b <- c(6.5,5.4,8.1,3.5,0.5,3.8,6.8,4.9,9.5,6.2,4.1)
        > options(digits=16)
        > yuen.t.test(a, b, alternative = 'greater')
        g@g?g      @gffffff?gffffff@g333333?g      @g@g333333 @g      @g      ?g333333@g@g      #@g@gffffff@g?F)r*  r  r   g|=)r~   N)r0   r  r   )r3   altr  r  r   r   rq  r   r7   r7   r8   test_alternatives  s    z!Test_ttest_trim.test_alternativesc          	   C   st   d}t t|d  tjddgddgddd W d Q R X d}t t|d$ tjddgdtjdgdd	d
 W d Q R X d S )Nz7Permutations are currently not supported with trimming.)rQ   r   r$   r%   g?)r*  r  zQnot supported by permutation tests, one-sided asymptotic tests, or trimmed tests.rM   )r*  rN   )rR   rS   r0   r  rB   rF   )r3   rQ   r7   r7   r8   test_errors_unsupported1  s    $z'Test_ttest_trim.test_errors_unsupportedr*  gɿc          	   C   s8   d}t t|d tjddgddg|d W d Q R X d S )Nz/Trimming percentage should be 0 <= `trim` < .5.)rQ   r   r$   )r*  )rR   rS   r0   r  )r3   r*  rQ   r7   r7   r8   test_trim_bounds_error<  s    z&Test_ttest_trim.test_trim_bounds_errorN)r]   r^   r_   r%  r   r   r!  r6  r:  r;  r=  r>  r?  r7   r7   r7   r8   r5    s0   


$r5  c        
   	   C   s  t jd t jdddddd} t jddddd}t| |fd	d
}t | d} t |d d}xtdd |jD  D ]}|\}}}}}}	|| jd	 k r| ||||||	f |||||||	f kstqx|||||| jd	  ||	f |||||||	f ksxtqxW d S )Nr   r'   r&   r%   r   r(   r*   r$   r  )r=   )r   r   r   r   r$   r   )N.)r'   r   r&   r   r   r   c             s   s   | ]}t |V  qd S )N)r   )r   r   r7   r7   r8   r,  M  s    z.test__broadcast_concatenate.<locals>.<genexpr>)	rB   r   r   r   r    r-  r   r   r   )
r   r   r"  indexr   r   r   lr   r   r7   r7   r8   test__broadcast_concatenateC  s    .rB  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)r  r  )r   r$   r%   r&   gJ?g*ʿg	ru?g@[?gωұ?ghG?r   r   r   r'   r  r   )r=   r  )r=   )rq  r   )r$   r%   r$   )r%   r$   r  )r   rY   )r$   r$   )r0   r  r   r	  r  rB   r`  r   r   r   r@  r   r  r   r   rA  r   r  rF   r   )r   r   r  r  r  r   Z	tr_uneq_nZ	pr_uneq_nr  Zrvs3r  r  r  r  r
  r   r   r  r  r  r7   r7   r8   test_ttest_ind_with_uneq_varU  s    










 rC  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      ?rM   )rN   gV瞯<)r~   r   )g8HgW@?)rB   rF   r0   r  r   rq  r   )rT   r4   r6  r7  r  r7   r7   r8   test_ttest_ind_nan_2nd_arg  s    rD  c              C   s4   t g g } t| t j jstt| tjtjf d S )N)r0   r  rd  Ttest_indResultr   r   rB   rF   )r[  r7   r7   r8   #test_ttest_ind_empty_1d_returns_nan  s    rF  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   rY   )r=   )r  )rB   r  r0   r  rd  rE  r   rC   rF   r   rq  r   )r   r  r   r[  r   r7   r7   r8   test_ttest_ind_axis_size_zero  s    
rG  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   )r=   )r'   r   )rB   r  r0   r  rd  rE  r   r   rq  r   r   )r   r   r[  r7   r7   r8    test_ttest_ind_nonaxis_size_zero  s    

rH  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   )r=   )r'   r   )rB   r  r0   r  rd  rE  r   r   rq  r   r   )r   r   r[  r7   r7   r8   2test_ttest_ind_nonaxis_size_zero_different_lengths  s    

rI  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      )rB   r   r0   r	  )Zmean1Zmean2Zstd1Zstd2Znobs1Znobs2r7   r7   r8   test_gh5686  s    rM  c           	   C   s.   t jdddddddd} t| tjtjg d S )Nr   r(   F)r  )r0   r	  r   rB   rF   )r[  r7   r7   r8   %test_ttest_ind_from_stats_inputs_zero  s    rN  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 dd }t|}t |d d d d d d f d\}}t j|d d d d d d f ddd\}
}|||d}t|| t|
| t j|d d d d d d f ddd\}
}|||d}t|| t|
| 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)rK   r   r   r'   rK   )r  r  r[   r   )r=   r   r  )r>   )r   r   r$   c             S   s4   | dk r|dks | dkr(|dkr(|d S d|d  S )Nr   r   r   r$   r   r7   )r  r   r<  r7   r7   r8   convert7  s     z%test_ttest_1samp_new.<locals>.convertr   )r   r   r  )r   rY   )r0   r  r  rt  rB   r  r   r   r   r   r  r   Z	vectorizer   r  rF   r   )r  r  Zn3Zrvn1r  r  r  p2r  p3r  r   rO  	converterr  r  Zpcr  r7   r7   r8   test_ttest_1samp_new  sJ    
4*4*4*
&*

*

 rS  c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestDescribec          
   C   s   t  @}tjdd( |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 )Nr  )r  z!Degrees of freedom <= 0 for sliceg      @r   )g      @g      @g           )r>   g      )r   rB   r  r  rE   r0   describer   r   r   r   )r3   rG   r   rX  r   rI  skkurtr7   r7   r8   test_describe_scalarQ  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&   gTUUUUUrU  )r>   r   )r=   g      $@r+   )r+   )g        g       @g      @g      @g        gGzrM   )rN   rO   rP   )rB   r|  r  rC   r   r0   rV  r   r   r   r   rF   rR   rS   )r3   rT   ncmmcmcvcskckurtcr   rX  r   rI  rW  rX  r7   r7   r8   test_describe_numbers\  sH    
















z"TestDescribe.test_describe_numbersc             C   s"   t td}d}t|| d S )Nr'   )r  minmaxr  varianceskewnessrh  )r0   rV  rB   r   r   )r3   r   r   r7   r7   r8   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   rU  )r>   )
rB   r|  r  rC   r   r0   rV  r   r   r   )r3   rT   rZ  r[  r\  r]  r^  r_  r   rX  r   rI  rW  rX  r7   r7   r8   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)r=   rU  )r>   )rB   r|  r  rC   r0   rV  r   r  r   ra  r  rb  r   rc  rh  )	r3   rT   Ze_nobsZe_minmaxZe_meanZe_varZe_skewZe_kurtr   r7   r7   r8   test_describe_axis_none  s    z$TestDescribe.test_describe_axis_nonec             C   s   t ttjg  d S )N)rR   rS   r0   rV  )r3   r7   r7   r8   test_describe_empty  s    z TestDescribe.test_describe_emptyN)	r]   r^   r_   rY  r`  rd  re  rf  rg  r7   r7   r7   r8   rT  P  s   )rT  c           
   C   s>  t ttjd t ttjd t ttjd d\} }}d\}}}d|d  |d  }}|d d|d   }}	tdd }
d}tt|
| |f t	t|
| tt|
||f ttj|
dd	||f ttj|
d
d	||f t	t|
| tt|
||f ttj|
dd	||f ttj|
d
d	||	f t	t|
| tj
jdddd}tj|d
d	j}t|ddd tjjddd}tj|d
d	j}t|d 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 ttj|
ddd t ttj|
dd
d t ttjttd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 ttj|
ddd t ttj|
dd
d t ttjttd"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   r$   )r  rY   r   r   r$   r%   r  rY   r   r   r$   r%   r  rY   r   r   r$   r%   r  rY   r   r   r$   r%   )rq  r   r   )r   r   i'  {   )r   r[   rs  g        r'   )r>   )r[   rs  )r=   g      $@r+   r  )r  )geGK?gZ^<ý?rM   )rN   )r   rO   rP   )rN   r   r*   g      >@r9  )g9+%g?*ݗ?r   )gwGw@g{8NĦ?rl  r   :   r)   )   r      c             S   s   g | ]\}}t ||qS r7   )rB   rC   )r   r   r"  r7   r7   r8   r     s    z'test_normalitytests.<locals>.<listcomp>g{Gz?T)rR   rS   r0   skewtestkurtosistestZ
normaltestrB   r   r   r   skewnormr  r   r   Zlaplacer   rF   r  r	   r  r   r  	enumerater   )Z	st_normalZst_skewZst_kurtZ	pv_normalZpv_skewZpv_kurtZpv_skew_lessZpv_kurt_lessZpv_skew_greaterZpv_kurt_greaterrT   r   r  r   r  r  rS  r7   r7   r8   test_normalitytests  s    











"

""rp  c               @   sV   e Zd Zejd ejdd\ZZe	j
ddddgdd	 Zd
d Zdd ZdS )TestRankSumsr   r$   rK   r   r   r   z	two-sidedc             C   s<   t j| j| j|dj}t j| j| jd|dj}t|| d S )N)r   F)Zuse_continuityr   )r0   ranksumsrT   r4   r   mannwhitneyur   )r3   r   r   r   r7   r7   r8   test_ranksums_result_attributes  s
    

z,TestRankSums.test_ranksums_result_attributesc             C   s   t | j| j}t|d d S )N)rq  r   )r0   rr  rT   r4   r   )r3   r   r7   r7   r8   test_ranksums_named_results#  s    z(TestRankSums.test_ranksums_named_resultsc          	   C   s0   t tdd tj| j| jdd W d Q R X d S )Nzalternative must be 'less')rQ   rP   )r   )rR   rS   r0   rr  rT   r4   )r3   r7   r7   r8   test_input_validation'  s    z"TestRankSums.test_input_validationN)r]   r^   r_   rB   r   r   r   rT   r4   r   r   r!  rt  ru  rv  r7   r7   r7   r8   rq    s
   	rq  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'  )rB   r   r   r	  r  Zrayleighr   r0   jarque_berarq  r   r   )r3   rT   r4   r  r7   r7   r8   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  )rB   r   r   r	  r0   rx  r  r  rA   r   rq  r   )r3   rT   Zjb_test1ZJB1r  Zjb_test2ZJB2rP  Zjb_test3ZJB3rQ  r7   r7   r8   test_jarque_bera_array_likeE  s    @z*TestJarqueBera.test_jarque_bera_array_likec             C   s   t ttjg  d S )N)rR   rS   r0   rx  )r3   r7   r7   r8   test_jarque_bera_sizeP  s    z$TestJarqueBera.test_jarque_bera_sizeN)r]   r^   r_   ry  rz  r{  r7   r7   r7   r8   rw  ,  s   rw  c              C   s   t d} tttj|  d S )Ng      @)rB   r   rR   rS   r0   rl  )rT   r7   r7   r8   test_skewtest_too_few_samplesT  s    
r|  c              C   s   t d} tttj|  d S )Ng      @)rB   r   rR   rS   r0   rm  )rT   r7   r7   r8   !test_kurtosistest_too_few_samples[  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@S )ATestMannWhitneyUg	U3@g^3@gt3@g]o5@gzS4@gt< 4@gM	X3@gXmCk4@gLo&3@gfɘ2@g{m;^3@ga A$|3@gMѢ_4@g#3@g19T_3@ggC2@gqR4@gKk/4@g܁3@gZ2@g_
3@g$`3@g
x4@g3#л5@g;VND1@g >H2@gr4@gyܤ2@g?4@g=bɇ3@gpG3@gL:j0@g2@gJNnC1@gR;`(3@g+Pi,2@g6:Z2@gZ"3=2@gF	uSa	3@gXҀ2@gX3^83@g21@gJ2@gZ)E2@gU83@g50@gԆ3@gFz33@gz3@gڴ3@r  c       	      C   s   t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t j| j| jdd\}}t|| t|| t||k t|d t|d t|d t|d t|d| jd t|d| jd d S )	Nr   )r   r   i  f   g=_A?)r-   glPz.?)r0   rs  r1   Yr   r   r
   r-   )	r3   u1r  u2rP  u3rQ  u4p4r7   r7   r8   test_mannwhitneyu_one_sidedt  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-   )r0   rs  r1   r  r   r
   r-   )r3   r  r  r  rP  r7   r7   r8   test_mannwhitneyu_two_sided  s    


z,TestMannWhitneyU.test_mannwhitneyu_two_sidedc       	      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?)r0   rs  r1   r  r   r   r
   r-   )	r3   r  r  r  rP  r  rQ  r  r  r7   r7   r8   &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-   )r0   rs  r1   r  r   r
   r-   )r3   r  r  r  rP  r7   r7   r8   &test_mannwhitneyu_no_correct_two_sided  s    


z7TestMannWhitneyU.test_mannwhitneyu_no_correct_two_sidedc             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dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd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||ddd ttj||ddd ttj||d	dd
 d S )Ng      ?g       @g      @r   )r   )g     @g ?չ>r   )g     @g&)E?z	two-sided)g     @g?չ?)rB   r   r   r0   rs  )r3   rT   r4   r7   r7   r8   test_mannwhitneyu_ones  sH      z'TestMannWhitneyU.test_mannwhitneyu_onesc             C   s&   d}t j| j| jdd}t|| d S )N)rq  r   r   )r   )r0   rs  r1   r  r   )r3   r   r   r7   r7   r8   #test_mannwhitneyu_result_attributes  s    z4TestMannWhitneyU.test_mannwhitneyu_result_attributesN)r]   r^   r_   r1   r  r-   r  r  r  r  r  r  r7   r7   r7   r8   r~  b  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   r0   Zpointbiserialrr   )rT   r4   r   r   r7   r7   r8   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+   rQ  r'   g㪪@gI?g&>ڿg5@g㪪@gIr*   )r>   r   g_v	@g1%?g"u?gZӼ?g!u @gq&@)
rB   r   r0   Zobrientransformr   r   r   r   r   re  )r   r  r  r   r  r   r   r"  r[  valuesrepsr  Ztransformed_valuesr7   r7   r8   test_obrientransform  s8    






r  Hz>c             C   s0   t j| |||d}t|||d t|j| d S )N)r=   r<   weights)r   )r0   gmeanr   r   r<   )
array_liker  r=   r<   r   r  rT   r7   r7   r8   check_equal_gmean  s    r  c             C   s.   t j| ||d}t|||d t|j| d S )N)r=   r<   )r   )r0   hmeanr   r   r<   )r  r  r=   r<   r   rT   r7   r7   r8   check_equal_hmean!  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   g=b#A@r   r$   r%   r&   gQ?)r  )r3   r   r  r7   r7   r8   test_1d_list(  s    
zTestHarMean.test_1d_listc             C   s0   t ddddddddd	d
g
}d}t|| d S )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   g=b#A@)rB   r   r  )r3   r   r  r7   r7   r8   test_1d_array2  s    zTestHarMean.test_1d_arrayc             C   s&   t ddg}d}tt|| d S )Nr   r   g        )rB   r   r   r0   r  )r3   r   r  r7   r7   r8   test_1d_array_with_zero8  s    z#TestHarMean.test_1d_array_with_zeroc             C   s"   t dddg}tttj| d S )Nr   r   rY   )rB   r   rR   rS   r0   r  )r3   r   r7   r7   r8   !test_1d_array_with_negative_value=  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  x   gmWUC@)r  )r3   r   r  r7   r7   r8   test_2d_listB  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gmWUC@)r  rB   r   )r3   r   r  r7   r7   r8   test_2d_arrayH  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gU|ϊ6@g4.=C@gJQ6LsJ@gE]P@r   )r=   )rB   r   r  )r3   r   r  r7   r7   r8   test_2d_axis0N  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gU|ϊ6@g        gJQ6LsJ@gE]P@)r=   )rB   r   r   r0   r  )r3   r   r  r7   r7   r8   test_2d_axis0_with_zeroT  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g3333333@gO@gy@Y@r   )r=   )rB   r   r  )r3   r   r  r7   r7   r8   test_2d_axis1Y  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g        gO@gy@Y@r   )r=   )rB   r   r   r0   r  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gU|ϊ6@g4.=C@gJQ6LsJ@gE]P@r   )r=   )r   r  )r3   r   r  r7   r7   r8   test_2d_matrix_axis0d  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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g3333333@gO@gy@Y@r   )r=   )r   r   r  )r3   r   r  r7   r7   r8   test_2d_matrix_axis1j  s    "z TestHarMean.test_2d_matrix_axis1N)r]   r^   r_   r  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   r  '  s   
r  c               @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) 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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   gsŤF@r   r$   r%   r&   r  g      ?g+=)r   )r  r   )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   gsŤF@r   r$   r%   r&   r  g      ?)r<   )rB   r   r  r   r   )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g/,$qJ@)r  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g/,$qJ@)r  r   )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g4@A@g5H@g`8|wЭN@gm~&+R@r   )r=   r   r$   r%   r&   g+=)r=   r   )rB   r   r  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gD" 6"6@gcP@g
ҧZ@r   )r=   r$   r%   r&   r  g      ?g+=)r=   r   )rB   r   r  r   )r3   r   r  rI  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  g4@A@g5H@g`8|wЭN@gm~&+R@r   )r=   r   r$   r%   r&   g+=)r=   r   )r   r  r   r0   r  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   r  r  gD" 6"6@gcP@g
ҧZ@r   )r=   r$   r%   r&   r  g      ?g+=)r=   r   )r   r   r  r   r   )r3   r   r  rI  r7   r7   r8   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  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   g        r  )r   )rB   r  r  )r3   r   r  r7   r7   r8   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 )NrK   r   rQ  rR  rP  rF  r  rH  r4  r   g        r  )divide)rB   r   r  r  )r3   r   r  r7   r7   r8   test_1d_array0  s    zTestGeoMean.test_1d_array0c          
   C   sD   ddddddddd	d
g
}t j}t jdd t|| W d Q R X d S )NrK   r   rQ  rR  rP  rF  r  rH  r4  rY   r  )r  )rB   rF   r  r  )r3   r   r  r7   r7   r8   test_1d_list_neg  s    zTestGeoMean.test_1d_list_negc             C   s4   dddddg}dddddg}d}t |||dd	 d S )
Nr$   r'   r(   r&   r%   r   gGZ*oG8@gh㈵>)r  r   )r  )r3   r  r   r  r7   r7   r8   test_weights_1d_list  s    z TestGeoMean.test_weights_1d_listc             C   s@   t dddddg}t dddddg}d}t|||dd	 d S )
Nr   r$   r%   r&   r'   r(   gGZ*oG8@gh㈵>)r  r   )rB   r   r  )r3   r   r  r  r7   r7   r8   test_weights_1d_array  s    z!TestGeoMean.test_weights_1d_arrayc             C   sV   t ddddddg}t jjddddddgddddddgd}d	}t|||d
d d S )Nr   r$   r%   r&   r'   r(   r   )r  gGZ*oG8@gh㈵>)r  r   )rB   r   r*  r  )r3   r   r  r  r7   r7   r8   test_weights_masked_1d_array  s    (z(TestGeoMean.test_weights_masked_1d_arrayN)r]   r^   r_   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   r  q  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 )$TestGeometricStandardDeviationr  r   gv aZ@r$   r%   r&   c             C   s   t | j}t|| j d S )N)r0   gstdarray_1dr   gstd_array_1d)r3   gstd_actualr7   r7   r8   r    s    z,TestGeometricStandardDeviation.test_1d_arrayc             C   s    t t| j}t|| j d S )N)r0   r  r  r  r   r  )r3   r  r7   r7   r8    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)rQ   z3This should fail as it can not be cast to an array.)r   r   rS   r0   r  )r3   r7   r7   r8   ,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)rQ   r   )r   r   rS   r0   r  rB   r   r  )r3   r7   r7   r8   "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)rQ   rY   )r   r   rS   r0   r  rB   r   r  )r3   r7   r7   r8   &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)rQ   )	r   r   rS   r0   r  rB   r   r  r   )r3   r7   r7   r8   !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%   )r=   r&   )r   rB   rF   r0   r  r   )r3   r   r  r7   r7   r8   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)rQ   )r:   )r   r   rS   r0   r  r  r[   )r3   r7   r7   r8   )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)r=   )r0   r  array_3dr   r  )r3   r  r7   r7   r8   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$   )r=   g~d@g<
?)r0   r  r  r   )r3   r  r7   r7   r8   test_3d_array_axis_type_tuple  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   )r=   gĶ?@gQӫ@g֌@gן7R@g%Ȁ@ge@gv6B5 @g _?gE ?gީ?gk̊Y?g%:?)r0   r  r  rB   r   r   )r3   r  gstd_desiredr7   r7   r8   test_3d_array_axis_0#  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   )r=   gN@g85@g'ĥ?gwth?gHnaX?gG?gBu?gE?)r0   r  r  rB   r   r   )r3   r  r  r7   r7   r8   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$   )r=   gt80?gі?g?gۘ]~?gmT6(?g	G?)r0   r  r  rB   r   r   )r3   r  r  r7   r7   r8   test_3d_array_axis_24  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$   )r=   r   r   )	rB   r*  Zmasked_wherer  r0   r  r   r   r  )r3   r*  r  r  r  r7   r7   r8   test_masked_3d_array<  s    
z3TestGeometricStandardDeviation.test_masked_3d_arrayN)r]   r^   r_   rB   r   r  r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r7   r7   r7   r8   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 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_msgrP  r   gVݶ3;)r-   )rB   r+  r`  r   r
   r0   
binom_test)ppr   rT   resultsr   r   r7   r7   r8   test_binomtestE  s$    r  c                 s   ddgdddgddddgdddddgddddddgdd	d
dd
d	dgddddddddgdddddddddg	ddddddddddg
dddddddddddgg
} xBt ddD ]4  fddt  d D }t||  d  dd qW d S ) Ng      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g      ?g     ?g     @?g      p?g      ?g      ?g     @?g      `?g      ?g      ?g      ?g      ?r   r   c                s   g | ]}t | d qS )g      ?)r0   r  )r   rI  )r   r7   r8   r   r  s    z#test_binomtest2.<locals>.<listcomp>rK   )r>   )r   r   )r   r   r7   )r   r8   test_binomtest2]  s$    



r  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   r0   r  )r   rI  r   r7   r7   r8   r   y  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   r0   r  )r   rI  r   r7   r7   r8   r     s   c          	   S   s6   g | ].}t d dD ]}t|d || d| qqS )r$   r   r   g      ?)r   r0   r  )r   rI  r   r7   r7   r8   r     s   rU  )r>   )r   r   rB   r  rF  r  r   r   )r  Zbinom_testm1Zbinom_testp1Zres4_p1Zres4_m1r7   r7   r8   test_binomtest3v  s    	

r  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?rK   g?r+   left)tailr$   gtE]t?r%   g      ?gUUUUUU?)rB   r   r   sortr0   Ztrim1)r3   r   r7   r7   r8   
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)   r  r   gUUUUUU?r  r+   r   r   gUUUUUU?g?)rB   r   r   r  r0   Ztrimbothr   rA   r   rR   rS   )r3   r   r7   r7   r8   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'   rK   r   r)   r%   r(   r  F)ordergUUUUUU?g      @g      !@g      -@g     4@g      $@g      &@g      (@g      *@g      "@g      ,@r   r'  r   r   r8  r  r  r  r   r  r   r  rU  g      '@i  )r'   r(   r&   r)   )r[   )r   r   r$   r%   rY   )r=   g333333?g        )rB   r   r   rA   r   r0   Z	trim_meanr   r   r3  rA  r  rR   rS   rF   )
r3   r   idxr  r  Zidx4Za4r=   r   r   r7   r7   r8   test_trim_mean  s8     ""

zTestTrim.test_trim_meanN)r]   r^   r_   r  r  r  r7   r7   r7   r8   r    s   r  c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestSigmaClipc             C   s   t 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&   )rB   r+  r`  r0   	sigmaclipr   minmaxr   r  rI   r[   )r3   r   factr"  lowuppr7   r7   r8   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      %@r  r   r   r'   g      ?r&   $   )rB   r+  r`  r0   r  r   r  r  r   r  rI   r[   )r3   r   r  r"  r  r  r7   r7   r8   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?)rB   r+  r`  r0   r  r   r  r  r   r  rI   )r3   r   r  r"  r  r  r7   r7   r8   test_sigmaclip35  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  r  )rB   r+  r`  r0   r  r   )r3   r   r  r   r   r7   r7   r8    test_sigmaclip_result_attributes@  s    z.TestSigmaClip.test_sigmaclip_result_attributesc             C   s"   t d}tt|d | d S )NrK   r   )rB   r  r   r0   r  )r3   rT   r7   r7   r8   test_std_zeroH  s    
zTestSigmaClip.test_std_zeroN)r]   r^   r_   r  r  r  r  r  r7   r7   r7   r8   r    s
   
r  c               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestAlexanderGovernc       
      C   s  d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g	dddddddddg	g}t j|t jd}t j|t jd}t j|t jd}t j|t jd}tj| }tj| }tj| }tj| }	|j|j  kr|j  kr|	jksn t	|j
|j
  kr|j
  kr|	j
ksn t	d S )NrU  r'  r  r   r   )r<   )rB   r   r?  r   uint8r   r0   alexandergovernr   r   rq  )
r3   r
  Z
args_int16Z
args_int32Z
args_uint8Zargs_float64Z	res_int16Z	res_int32Z	res_unit8Zres_float64r7   r7   r8   test_compare_dtypesO  s     



z'TestAlexanderGovern.test_compare_dtypesc          	   C   s   t tdd tddgg  W d Q R X t tdd tddgd W d Q R X t tdd tddgdg W d Q R X t tdd tddgtjtjg W d Q R X t tdd" tddgddgddgg W d Q R X d S )	Nz+Input sample size must be greater than one.)rQ   r   r$   zInput samples must be finite.z%Input samples must be one-dimensionalr%   r&   )rR   rS   r0   r  rB   r   )r3   r7   r7   r8   test_bad_inputsc  s    "z#TestAlexanderGovern.test_bad_inputsc          (   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$d%d&d'd(g(}d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFg}dGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZg}t |||}t|jd[ t|jd\ d]S )^a  
        Data generated in R with
        > set.seed(1)
        > library("onewaytests")
        > library("tibble")
        > y <- c(rnorm(40, sd=10),
        +        rnorm(30, sd=15),
        +        rnorm(20, sd=20))
        > x <- c(rep("one", times=40),
        +        rep("two", times=30),
        +        rep("eight", times=20))
        > x <- factor(x)
        > ag.test(y ~ x, tibble(y,x))

        Alexander-Govern Test (alpha = 0.05)
        -------------------------------------------------------------
        data : y and x

        statistic  : 1.359941
        parameter  : 2
        p.value    : 0.5066321

        Result     : Difference is not statistically significant.
        -------------------------------------------------------------
        Example adapted from:
        https://eval-serv2.metpsy.uni-jena.de/wiki-metheval-hp/index.php/R_FUN_Alexander-Govern

        g5gb?gl"k g^s/@gQ\
@gRh gIF@gpZ>q@g7D @g-ѪZng(Q<.@gON/@g	Ogҷ%6gs&@gw)ܿg789Ŀgzp"@gzl @g57@g>m@*a"@g,ZbI@gX9
]?g3g1@gg"Jbgy:@j-g2A g;@gL97vp,+@gp/rg"@gfT|7g^v+g٘Yg0/gglA! &@go@g!_5*gqTEgg1$@g	a, @gˤ$g9%gZ@gT6U'@gS g6aGn*@gO@g\\"g^4w@g0gr~5@gDP=@gٿԙg:4R/gOx]r!@gU4 gta)B@g,Gg2$@gD%?gI,VL&g@gч
;g5@gWJc@gYjK@@gj7#@g<e,g}m(@gr2g#^9gr/P@g:RO!g'9?g6F
?gcʱ'gt*&gg~*0Ώ7@gWzx>gIK'@g?Ң@g7C5@g;C>ϯUg7@g)n}.^@gFQ?gsdlT6?N)r0   r  r   rq  r   )r3   onetwoeightsolnr7   r7   r8   test_compare_rx  sD    
z"TestAlexanderGovern.test_compare_rc             C   s   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g}d d!d"d#d$d%d&d'd(d)d*d+d,d-d.g}t |||}t|jd/d0d1 t|jd2d3d1 t|jd4 t|jd5 d6S )7z
        Data taken from 'The Modification and Evaluation of the
        Alexander-Govern Test in Terms of Power' by Kingsley Ochuko, T.,
        Abdullah, S., Binti Zain, Z., & Soaad Syed Yahaya, S. (2015).
        g{G&~@g(\E~@g=
ףp~@gfffff~@gp=
~@gףp=
k@gR@gQ2@g8@g`@g)\`@g=
ףp@g(\#@g@g=
ףpE@gQ@g
ףp=@gףp=
Մ@g33333#@g=
ףpt@g{G&u@gq=
ףv@gQDy@g     X{@g\(P}@g]~@gt~@gzG~@g)\~@g1@gzG@gGz8@g     @gp=
ב@g
ףp=@gGzԀ@gq=
ףր@gRi@g{Gt@gw@g=
ףp@gQS@gQ@g(\©@gQ-@gQ@g]FxK@gMbP?)r~   g R8߱?g-C6?g.UikL@g&Zݱ?N)r0   r  r   rq  r   )r3   Zyoungmiddleoldr  r7   r7   r8   test_compare_scholar  s     z(TestAlexanderGovern.test_compare_scholarc             C   s   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(g}t ||}t|jd)d*d+ t|jd,d*d+ t|jd- t|jd. d/S )0aA  
        Data taken from 'Robustness And Comparative Power Of WelchAspin,
        Alexander-Govern And Yuen Tests Under Non-Normality And Variance
        Heteroscedasticity', by Ayed A. Almoied. 2017. Page 34-37.
        https://digitalcommons.wayne.edu/cgi/viewcontent.cgi?article=2775&context=oa_dissertations
        gQhgMOgY9gnSgdȿg}"Ogиp $?g8~4?g
p?gZ?g)J=?gX?gpG?gᛦ?gg?gh8en?g?guwg?gbX?g9SI?gN]g	cZgAJigMg'gk,	Pg<gΈ׿g%zrKտg0BxҿgPNg:ǀgvꭁg?k~?gI\߇?gi?g<)?g0Xr?g
F%u?gsFZ*o?g7n:?g[z4?gh㈵>)r~   gOZ}?g9$?g6MDd}?N)r0   r  r   rq  r   )r3   r   r   r  r7   r7   r8   test_compare_scholar3  s    z)TestAlexanderGovern.test_compare_scholar3c             C   s@   ddddgdt jgg}tj| }t|jt j t|jt j d S )Nr   r$   r%   r&   )rB   rF   r0   r  r   r   rq  )r3   r
  r   r7   r7   r8   test_nan_policy_propogate  s    
z-TestAlexanderGovern.test_nan_policy_propogatec          	   C   sB   ddddgdt jgg}ttdd tj|ddi W d Q R X d S )	Nr   r$   r%   r&   zThe input contains nan values)rQ   rN   rO   )rB   rF   rR   rS   r0   r  )r3   r
  r7   r7   r8   test_nan_policy_raise%  s    z)TestAlexanderGovern.test_nan_policy_raisec             C   sl   dddd dgdt jddgg}ddddgdddgg}tj|ddi}tj| }t|j|j t|j|j d S )	Nr   r$   r%   r&   r  r   rN   rM   )rB   rF   r0   r  r   r   rq  )r3   Zargs_nanZargs_no_nanZres_nanZ
res_no_nanr7   r7   r8   test_nan_policy_omit*  s    
z(TestAlexanderGovern.test_nan_policy_omitc          	   C   sL   t t: tdddgdddg}t|jtj t|jtj W d Q R X d S )NgMbX?grh|?gv/?gsh|??)	r   r!   r0   r  r   rq  rB   rF   r   )r3   r   r7   r7   r8   r   2  s
    
z'TestAlexanderGovern.test_constant_inputN)r]   r^   r_   r  r  r  r  r  r  r  r  r   r7   r7   r7   r8   r  N  s   B22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      ?)r0   f_onewayr   )r3   r  r   r7   r7   r8   test_trivial=  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   )r0   r  r   r   rB   rZ   )r3   r  r   r7   r7   r8   r   C  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      ?)r0   r  r   )r3   r  r   r7   r7   r8   test_known_exactJ  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  )r<   i  i  gŸ?g+=)r   )rB   r   uint16r0   r  r   )r3   r   r   r  r   r7   r7   r8   test_large_integer_arrayT  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  )r<   i  i  )rq  r   )rB   r   r  r0   r  r   )r3   r   r   r   r   r7   r7   r8   test_result_attributes\  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_anovarc   
c             S   s   g | ]}|  r| qS r7   )stripsplit)r   liner7   r7   r8   r   p  s    z)TestFOneWay.test_nist.<locals>.<listcomp>rR  ry  rF  )Zskiprowsr   rY   c                s   g | ]} |k qS r7   r7   )r   r   )rT   r4   r7   r8   r   x  s    )z
SmLs07.datz
SmLs08.datz
SmLs09.datg-C6?zFailing testcase: %s)r   r  )ospathabspathjoindirname__file__openreadr  rB   Zloadtxtr   r   r  r  r   r0   r  r   )r3   	filenamesZ	test_caser   fnamefcontentZ	certifiedZdatafZcatyZxlistr   Zhard_tcr7   )rT   r4   r8   	test_nistc  s,    






zTestFOneWay.test_nistza, b, expectedr1  r)   r   c          	   C   s:   t tj& t||\}}|s,t||kW d Q R X d S )N)r   r0   F_onewayConstantInputWarningr  r   )r3   r   r   r  r  r   r7   r7   r8   r     s    zTestFOneWay.test_constant_inputr=   r  rY   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*   )rY   r   r   )r=   )r   r   g+=)r   )r$   r%   )
rB   r   r   r   r0   r
  r  Ztaker   r   )r3   r=   r   r   r"  Z	take_axisr  r   r   fjZpjr7   r7   r8   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   )r=   )r&   r)   r   )
rB   r   rA   cosr0   r  r   r   r   r   )
r3   r   r   r"  r  r   r   r   ZfijZpijr7   r7   r8   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   r0   F_onewayBadInputSizesWarningr  r   rB   rF   )r3   r[  r7   r7   r8   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   r0   r  rB   r  r  rC   rF   r   )r3   Zncolsr   r   r"  r  r   Znansr7   r7   r8   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 )NrK   r   r'  rU  )r   r0   r  r  r   rB   rF   )r3   r[  r7   r7   r8   test_all_length_one  s    zTestFOneWay.test_all_length_oner
  r7   r$   r%   c          	   C   s"   t t tj|  W d Q R X d S )N)rR   r   r0   r  )r3   r
  r7   r7   r8   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$   )r=   )rB   r  rR   rB  r0   r  )r3   r   r   r7   r7   r8   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   )r=   )rB   r  rR   rS   r0   r  )r3   r   r   r7   r7   r8   test_bad_shapes  s    


zTestFOneWay.test_bad_shapesN)r]   r^   r_   r  r   r  r  r  r	  r   r   r!  rB   r   r   rF   r   r  r  r  r  r  r  r  r  r7   r7   r7   r8   r  ;  s"   
 &6/"r  c               @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zd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      ?)	r0   kruskalr   r
   r  r  r  rB   r   )r3   rT   r4   hr   r7   r7   r8   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*   rK   gtE]t?)r-   )r0   r  r
   r  r  r  rB   r   )r3   rT   r4   r  r   r7   r7   r8   r      s    zTestKruskal.test_basicc             C   s<   dg}ddg}d}d}|| }t ||\}}t|| d S )Nr   r$   g      ?g      ?)r0   r  r   )r3   rT   r4   h_uncorrr   r  r  r   r7   r7   r8   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   r0   r  r
   )r3   rT   r4   r  r   r  r  r   r7   r7   r8   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   r0   r  r
   r  r  r  )	r3   rT   r4   r  r  r   r  r  r   r7   r7   r8   test_three_groups  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   r0   r  rB   rF   )r3   rT   r4   r  r7   r7   r8   r  *  s    

zTestKruskal.test_emptyc          	   C   sD   dg}dg}t jdd}ttdd t||| W d Q R X d S )Nr   r$   z Samples must be one-dimensional.)rQ   )rB   r   r   rR   rS   r0   r  )r3   rT   r4   r  r7   r7   r8   test_nd_arrays1  s    
zTestKruskal.test_nd_arraysc             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*   rK   )rq  r   )r0   r  r   )r3   rT   r4   r   r   r7   r7   r8   test_kruskal_result_attributes:  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+   rM   )rN   )g        g      ?rO   rP   )	rB   r   rF   r   r0   r  r   rR   rS   )r3   rT   r7   r7   r8   r   A  s    

zTestKruskal.test_nan_policyc             C   sB   d}t j|}t j|d }t||\}}d}t|| d S )NiP  rP  r   )rB   r   r   r0   r  r
   )r3   r   rT   r4   r  r   r  r7   r7   r8   test_large_no_samplesI  s    z!TestKruskal.test_large_no_samplesN)r]   r^   r_   r  r   r  r   r!  r  r"  r#  r   r$  r7   r7   r7   r8   r    s   

		r  c               @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )TestCombinePvaluesc             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?rg  )r%  gf?r&   )r-   )r0   combine_pvaluesr
   )r3   Zxsqr   r7   r7   r8   test_fisherU  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-   )r0   r&  r
   )r3   Zr   r7   r7   r8   test_stoufferZ  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-   )r0   r&  r
   )r3   r)  r   r7   r7   r8   test_stouffer2^  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%  r  gS:X?r&   )r-   )r0   r&  rB   r  r
   )r3   r)  r   r7   r7   r8   test_weighted_stoufferb  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-   )r0   r&  rB   r   r
   )r3   r)  r   r7   r7   r8   test_weighted_stouffer2g  s    z*TestCombinePvalues.test_weighted_stouffer2c             C   s*   t jdddgdd\}}t|ddd d S )	Ng{Gz?g?g333333?r  )r%  g&J?r&   )r-   )r0   r&  r
   )r3   r)  r   r7   r7   r8   test_pearsonl  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-   )r0   r&  r
   )r3   r)  r   r7   r7   r8   test_tippettp  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-   )r0   r&  r
   )r3   r)  r   r7   r7   r8   test_mudholkar_georget  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?r0  )r%  rg  r  g      ?r&   )r-   )r0   r&  r
   )r3   r)  r   ZZ_fZp_fZZ_pZp_pr7   r7   r8   0test_mudholkar_george_equal_fisher_minus_pearsonx  s    zCTestCombinePvalues.test_mudholkar_george_equal_fisher_minus_pearsonN)r]   r^   r_   r'  r*  r+  r,  r-  r.  r/  r1  r2  r7   r7   r7   r8   r%  S  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   )rR   rS   r0   wasserstein_distance)r3   r7   r7   r8   &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%   )rR   rS   r0   r4  )r3   r7   r7   r8   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%   rY   )rR   rS   r0   r4  )r3   r7   r7   r8   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   )rR   rS   r0   r4  )r3   r7   r7   r8   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$   )rR   rS   r0   r4  rB   r   )r3   r7   r7   r8   test_inf_weight  s    z)TestCdfDistanceValidation.test_inf_weightN)	r]   r^   r_   r   r5  r6  r7  r8  r9  r7   r7   r7   r8   r3    s   r3  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   r0   r4  )r3   r7   r7   r8   r    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   r0   r4  )r3   r7   r7   r8   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   r  r'   rK   r$   r%   r&   r   r'  rU  r  r   g      @g@g @gffffff@r)   gffffff"@g      @)r   r0   r4  )r3   r7   r7   r8   
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   r0   r4  )r3   r7   r7   r8   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 )NirQ  g333333?rY   )r  )
rB   r   Z
zeros_liker   r0   r4  r  r  rF  Zaverage)r3   rH  rI  Z	u_weightsZ	v_weightsr7   r7   r8   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   r0   r4  )r3   r7   r7   r8   r6    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   r0   r4  rB   r   r   rD   rE   rF   )r3   rG   r7   r7   r8   test_inf_values  s    z'TestWassersteinDistance.test_inf_valuesN)r]   r^   r_   r   r  r;  r<  r=  r>  r6  r?  r7   r7   r7   r8   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   r0   energy_distancerB   rZ   )r3   r7   r7   r8   r    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   r0   rA  )r3   r7   r7   r8   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$   r  r'   gS[:XL	@)r   r0   rA  rB   rZ   )r3   r7   r7   r8   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   r0   rA  )r3   r7   r7   r8   r=  '  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   r0   rA  )r3   r7   r7   r8   r6  /  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   r0   rA  rB   r   r   rD   rE   rF   )r3   rG   r7   r7   r8   r?  5  s     z"TestEnergyDistance.test_inf_valuesN)
r]   r^   r_   r   r  r;  r<  r=  r6  r?  r7   r7   r7   r8   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'   rU  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?)r0   brunnermunzelr1   r  r
   r-   r   )	r3   r  r  r  rP  r  rQ  r  r  r7   r7   r8   test_brunnermunzel_one_sidedL  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?)r0   rC  r1   r  r
   r-   )r3   r  r  r  rP  r7   r7   r8   test_brunnermunzel_two_sidedc  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?)r0   rC  r1   r  r
   r-   )r3   r  r  r  rP  r7   r7   r8   test_brunnermunzel_defaultp  s    

z,TestBrunnerMunzel.test_brunnermunzel_defaultc             C   s6   d}d}d}t |dk tttj| j| j||| d S )Nr  r  r   )z	two-sidedr   r   )r   rR   rS   r0   rC  r1   r  )r3   r   distributionrN   r7   r7   r8   $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	  )rG  )r-   g|	&	@g|	&	g "H[?)r0   rC  r1   r  r
   r-   )r3   r  r  r  rP  r7   r7   r8   $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   )r  r	  )r   rR   rS   r0   rC  r1   r  )r3   r   rG  rN   r7   r7   r8   %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)r0   rC  r1   r  r   rB   rF   )r3   r  r  r  rP  r  rQ  r7   r7   r8   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   )rN   )rB   rF   r0   rC  r   )r3   r1   r  r  r  r  rP  r7   r7   r8   &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-sidedr  rO   )rB   rF   rR   rS   r0   rC  )r3   r1   r  r   rG  rN   r7   r7   r8   "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'   rM   )rN   )r-   g|	&	@g|	&	g ҏGw?)rB   rF   r0   rC  r
   r-   )r3   r1   r  r  r  r  rP  r7   r7   r8   !test_brunnermunzel_nan_input_omit  s    $

z3TestBrunnerMunzel.test_brunnermunzel_nan_input_omitN)r]   r^   r_   r1   r  r-   rD  rE  rF  rH  rI  rJ  rK  rL  rM  rN  r7   r7   r7   r8   rB  F  s    rB  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  )r[   rs  r  r   g      ?Tc             S   s   t |  S )N)rB   r  )rT   r7   r7   r8   r:    r;  z6TestRatioUniforms.test_rv_generation.<locals>.<lambda>rY   i  )umaxvminvmaxr[   rs  Zexpon)	r0   r  pdfrB   rZ   rvs_ratio_uniformsr   r  r  )r3   r  v_boundrP  rQ  rR  r  r7   r7   r8   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  )r[   rs  )r%   )r%   r   )r%   r%   r%   r'     )rs  r   )r   )	r0   r  rS  rB   rZ   rT  r   r   r   )r3   r  rU  rP  rQ  rR  r6  r7  r  Zr4Zr5Zr6Zr7r8r7   r7   r8   
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&   )r[   )r[   rs  )	r0   r  rS  rB   rZ   r   r   rT  r   )r3   r  rU  rP  rQ  rR  r6  r7  r7   r7   r8   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%   )rS  rP  rQ  rR  rY   r   )r0   r  rS  rR   rS   rT  )r3   r  r7   r7   r8   test_exceptions  s    z!TestRatioUniforms.test_exceptionsN)r]   r^   r_   r   rV  rY  rZ  r[  r7   r7   r7   r8   rO    s
    
rO  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'   )rB   r   rR   rS   r0   multiscale_graphcorr)r3   rT   r4   r7   r7   r8   test_error_notndarray-  s    

z*TestMGCErrorWarnings.test_error_notndarrayc             C   s2   t ddd}|dd}tttj|| d S )Nr   r   r&   rK   )rB   r   rA   rR   rS   r0   r]  )r3   rT   r4   r7   r7   r8   test_error_shape4  s    z%TestMGCErrorWarnings.test_error_shapec             C   s(   t d}t d}tttj|| d S )Nr%   )rB   r   rR   rS   r0   r]  )r3   rT   r4   r7   r7   r8   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   )r<   r   )rB   r   r   rF   rR   rS   r0   r]  )r3   rT   r4   r7   r7   r8   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)rB   r   rR   rS   r0   r]  )r3   rT   rb  r7   r7   r8   test_error_wrongdisttypeI  s    
z-TestMGCErrorWarnings.test_error_wrongdisttyper  rY   1c             C   s"   t d}tttj|||d d S )Nr   )r  )rB   r   rR   rS   r0   r]  )r3   r  rT   r7   r7   r8   test_error_repsP  s    
z$TestMGCErrorWarnings.test_error_repsc             C   s&   t d}d}tttj|||d d S )Nr   r   )r  )rB   r   r   rE   r0   r]  )r3   rT   r  r7   r7   r8   test_warns_repsY  s    
z$TestMGCErrorWarnings.test_warns_repsc             C   s.   t d}t dt j }tttj|| d S )Nr   )rB   r   r  r   rR   rS   r0   r]  )r3   rT   r4   r7   r7   r8   test_error_infty_  s    
z%TestMGCErrorWarnings.test_error_inftyN)r]   r^   r_   r   r^  r_  r`  ra  rc  r   r   r!  re  rf  rg  r7   r7   r7   r8   r\  *  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 )Nr5  rY   r   )r[   g333333?	nonlinearr   r'   g?independenceg      ?)r   r[   r%   r$   z3sim_type must be linear, nonlinear, or independence)r=   )rB   r   r  Zrandom_sampler[   r   r  pira  r	  binomialrS   r+  )r3   sampsdimssim_typerT   r4   ZunifrH  rI  Zu_2Zv_2Z
dims_noiser7   r7   r8   _simulationsi  s(    

zTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue)r5  g
ףp=
?gMbP?)ri  gw/?gMbP?)rj  gUN@g(\?c       	      C   sR   t jd | jdd|d\}}t||\}}}t||dd t||dd d S )NiNa r   r   )rm  rn  ro  )r-   )rB   r   r   rp  r0   r]  r
   )	r3   ro  obs_stat
obs_pvaluerT   r4   r  r   rD  r7   r7   r8   	test_oned  s
    zTestMGCStat.test_oned)r5  gZd;O?gMbP?)ri  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'   )rm  rn  ro  r   )r-   )rB   r   r   rp  r0   r]  r
   )	r3   ro  rq  rr  rT   r4   r  r   rD  r7   r7   r8   
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'   )r[   r   r   )rH  r'   g      ?)r-   gMbP?T)Z
is_twosamp)rB   r   r   rl  r	  r0   r]  r
   )r3   rT   r4   r  r   rD  r7   r7   r8   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   r5  )rm  rn  ro  r$   )workersg
ףp=
?)r-   gMbP?)rB   r   r   rp  r0   r]  r
   )r3   rT   r4   r  r   rD  r7   r7   r8   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   r5  )rm  rn  ro  )rs  g
ףp=
?)r-   gMbP?)rp  r0   r]  r
   )r3   rT   r4   r  r   rD  r7   r7   r8   rZ    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   ri  )rm  rn  ro  Z	euclidean)Zmetric)rb  rs  gw/?)r-   gMbP?)rB   r   r   rp  r   r0   r]  r
   )r3   rT   r4   ZdistxZdistyZ	stat_distZpvalue_distrD  r7   r7   r8   test_dist_perm  s    zTestMGCStat.test_dist_permN)r   r   r  )r]   r^   r_   r   rp  r   r   r   r!  rs  rt  ru  rw  rZ  rx  r7   r7   r7   r8   rh  f  s   
"
rh  c               @   s:  e Zd Zejdedd Zdd Zdde	j
dgZee	jdkrXee	j
d de fd	d
gZejdeejdedd Zee	jdkrdejjdddejjdddgZng Zde fddddgZde fde fdgZejdeejdeejdedd Zdd Zdd Zdd  ZdS )!TestNumericalInverseHermite)distnameshapesc          	   C   s  ddddh}ddddd	d
ddh}||kr2t d ||krDt d tjd tt|| }tj	 4}|
td |
td |
td t|}W d Q R X tjd}tt|||| t|| }	tt|||| }
|	dk st|
dk std S )NZksoneZkstwoZlevy_stablern  r  Z
gausshyperZgeninvgaussZncfZnctZnorminvgaussZgenhyperbolicZstudentized_rangezDistribution is too slowz)Fails - usually due to inaccurate CDF/PDFr   zoverflow encounteredzdivide by zerozinvalid value encounteredrK   g:0yE>g-q=)r   skipZxfailrB   r   r   getattrr0   r   r   r  rE   NumericalInverseHermiter   r  r  ppfr  r   )r3   rz  r{  Z
slow_distsZ
fail_distsdistrG   fnirT   Zp_tolZu_tolr7   r7   r8   r     s&    



0 z&TestNumericalInverseHermite.test_basicc          	   C   s  d}t jt|d td W d Q R X d}t jt|d tjt dd W d Q R X d}t jt|d tjt dd	 W d Q R X d
}t jt|d  tt }|jdd W d Q R X ttj	dkrtt }d}t jt|d |jdtj
dd W d Q R X d S )Nz0`dist` must have methods `pdf`, `cdf`, and `ppf`)rQ   r  z!could not convert string to floatekki)tolz`max_intervals' must be...rY   )Zmax_intervalsz&`qmc_engine` must be an instance of...r   )
qmc_enginez1.18.0z6`d` must be consistent with dimension of `qmc_engine`.r%   r$   )r6  r  )r   r   rS   r0   r~  r  qrvsr   rB   r&  qmcHalton)r3   rQ   r  r7   r7   r8   rv    s$    z1TestNumericalInverseHermite.test_input_validationNr   z1.18.0)r*   )r*   ))r&   r'   r(   )r&   r'   r(   rE  zsize_in, size_outc       
      C   sl   t  }t |}t|}|j||d}|j|ks6t|d k	rht|}|j|d}t j	|}	t
||	 d S )N)r[   rs  )r[   )r0   r  r~  r   r  r   r   r   r  r  r   )
r3   rE  size_insize_outr  r  Zrng2r  r  r  r7   r7   r8   test_RVS$  s    
z$TestNumericalInverseHermite.test_RVSr   )r   r%   )r   )r   )r&   )r&   ))r&   )r&   ))r$   r&   )r$   r&   )r%   )r%   qrngzd_in, d_outc          	   C   s   t  }t |}|d k	r^|d k	r^|j|kr^d}tjt|d |j|||d W d Q R X d S |d kr|d k	r|jdkr|jf}|| }	t|}
|j|||d}|j	|	kst
|
d k	r|
t|pd}t j||	}t||dd d S )Nz6`d` must be consistent with dimension of `qmc_engine`.)rQ   )r6  r  r   )r[   r6  r  g-q=)r~   )r0   r  r~  r6  r   r   rS   r  r   r   r   r   rB   prodr  rA   r   )r3   r  r  r  Zd_inZd_outr  r  rQ   Zshape_expectedqrng2r  r  qrvs2r7   r7   r8   	test_QRVS>  s"    
z%TestNumericalInverseHermite.test_QRVSc             C   s   t tjdkrtd t }t|}d}d}tjj	|dd}tjj	|dd}|
t|}|j|||d}tj|}	x@t|D ]4}
|d|
f }|	d d |
f |}t||d	d
 qW d S )Nz1.18.0z$QMC doesn't play well with old NumPy)r%   r&   r'   r   )r   )r[   r6  r  .g-q=)r~   )r   rB   r&  r   r|  r0   r  r~  r  r  r   r  r  r  r   rA   r   )r3   r  r  r[   r6  r  r  r  r  r  r   sampleZsample2r7   r7   r8   test_QRVS_size_tuple[  s    


z0TestNumericalInverseHermite.test_QRVS_size_tuplec          	   C   sJ   d}d}t jt|d ttj|  W d Q R X tjtj| dd d S )N)gdsz@g@e?z.The interpolating spline could not be created.)rQ   g|=)r  )r   r   rS   r0   r~  r  )r3   r{  rQ   r7   r7   r8   test_inaccurate_CDFz  s
    z/TestNumericalInverseHermite.test_inaccurate_CDFc             C   sN   G dd d}| }t |}t  }t |}t|jdd|jdd d S )Nc               @   s$   e Zd Zdd Zdd Zdd ZdS )zFTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormalc             S   s(   dt dt j  t |d  d  S )Nr   r$   )rB   rZ   rk  r  )r3   rT   r7   r7   r8   rS    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.pdfc             S   s
   t |S )N)r   Zndtr)r3   rT   r7   r7   r8   r    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.cdfc             S   s
   t |S )N)r   Zndtri)r3   rT   r7   r7   r8   r    s    zJTestNumericalInverseHermite.test_custom_distribution.<locals>.MyNormal.ppfN)r]   r^   r_   rS  r  r  r7   r7   r7   r8   MyNormal  s   r  r   )rs  )r0   r~  r  r   r  )r3   r  Zdist1Zfni1Zdist2Zfni2r7   r7   r8   test_custom_distribution  s    

z4TestNumericalInverseHermite.test_custom_distribution)r]   r^   r_   r   r   r!  r   r   rv  rB   r   r  Zrngsr   r&  r   r'  r  sizesr  r0   r  ZSobolr  ZqrngsZdsr  r  r  r  r7   r7   r7   r8   ry    s(   $ry  c            !   @   s  e Zd Zejd ejddZejddZdddd	efd
ddd	efdddd	d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!d0d1ddd"ddgdd2d3dd4d5d6d7d*d8d9d8d#d:d9d;d<dddd=d2d>d?d@ggfdAdBddCdDdEdFdGdHdIgdGdJdKddd*gdLdMdd5dNdOggfdPdQdRdCdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgdJddSdTgddJdTdSgdTdSddJgdTdSddJgdTdSddJgdTdSddJgdTdSddJggfdUdVdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfdWdXdRdCdYdGdJddSdTgdYdGdJddSdTgdTddJdGdSdYggfdZd[dRdCdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdGdJddSdTgdJdTddSdGgdTdSddJdGgdTdSddJdGgdTdSddJdGgg
fd\d]dRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdgdTdSdggfd^d_dRdCd`dYdGdJddSdTgd`dYdGdJddSdTgdYdGd`dJddSdTgdTdSddJdGdYd`ggfdadbdRdCddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgddSdTgdSdTdgdTdSdggfgZ	e
jdce	ddde ZdfdgdRdCddhdid`dYdGdJddSdTg
dTdidJd`dYdGdhddSdg
gfdjdkdRdCddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
ddhdid`dYdGdJddSdTg
dhdSdid`dYdGdJdddTg
dTdSddJdGdYd`didhdg
gfdldmdRdCdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdid`dYdGdJddSdTgdTddGdYdJd`dSdigdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`digdTdSddJdGdYd`diggfgZe
jdce	e
j dndo Zdpdq Zdrds Zdtdu ZdvS )wTestPageTrendTestr   r%   r   rK      i2  g:hў?Fr(  i  gsH?i,0  gY@?rw  ru  I   r  `   rQ  ;   rj  r  rs  1   rr  +   r  r   rx  r   =   rH  r  rP  D   rA  rF  "   r7  A   X   r   ry  r  C   E   ^   rR  W   rU  U   O   r'  \   V   @   r   r  Y   r?  6   B   rr  r  i
  gXY?r$  g      ?g      @g @r'   r  r   r&   g      @g @g	@r  r   iL  gs˜?Tr$   r      gĞ?   g>K=?r(   i  gqူ?   ga?i  g;?r)   u   g[^6?zL, p, ranked, method, datac             C   sD   t jd tj|||d}t||j t||j t||j	 d S )Nr1  )rankedr%  )
rB   r   r   r0   page_trend_testr   rq  r   r   r%  )r3   Lr   r  r%  r  r   r7   r7   r8   test_accuracy  s
    zTestPageTrendTest.test_accuracyi  g-lpW?r+   r*   i*  gh[?i  g&]2?c             C   sD   t jd tj|||d}t||j t||j t||j	 d S )Nr1  )r  r%  )
rB   r   r   r0   r  r   rq  r   r   r%  )r3   r  r   r  r%  r  r   r7   r7   r8   test_accuracy2  s
    z TestPageTrendTest.test_accuracy2c             C   s   t jd d\}}t d|d }t jt |}t j||}tj|dd}t|}tj|dd}tj|dd}	tj||d}
tj|d d |f || d}t	|j
|j
 t	|j
|	j
 t	|j
|
j
 t	|j
|j
 d S )	Nr1  )rK   r   r   )r=   T)r  F)predicted_ranks)rB   r   r   r   Zpermutationr   r0   Zrankdatar  r   rq  )r3   r   r   r  Zpermr  Zranksr   r   r  Zres4Zres5r7   r7   r8   test_options  s     
zTestPageTrendTest.test_optionsc             C   s   t jd dddgdddgdd	d
gdddgdddgdddgg}t |j}t dd}tj|d|dd}t|j	d t
|jddd tj|d|dd}t|j	d t
|jddd d S )Nr1  r  r  o   rt  r4  k   g      y   rm  rK  r  r            r  t   r   r)   Fr(  )r  r  r%  i  gy&1l?r&   )r>   r$  gHPsb?)rB   r   r   r   r   r   r0   r  r   rq  r   r   )r3   r  r  r   r7   r7   r8   test_Ames_assay  s    z!TestPageTrendTest.test_Ames_assayc          	   C   s  t tdd td  W d Q R X t tdd tg  W d Q R X t tdd tddg W d Q R X t tdd tdggg W d Q R X t tdd ttjdd W d Q R X t tdd ttjdd W d Q R X d}t t|d* tjdddgdddggdddgd	 W d Q R X t t|d* tjdddgdddggd
ddgd	 W d Q R X t t|d, tjdddgdddggddddgd	 W d Q R X t t|d$ tjdddgdddggdd	 W d Q R X t tdd" tdddgdddggd W d Q R X t tdd" tdddgdddggd W d Q R X t tdd& tjdddgddtjggdd W d Q R X t tdd$ tjdddgdddggdd W d Q R X t tdd$ tjdddgdddggdd W d Q R X d S )Nz`data` must be a 2d array.)rQ   r   r$   zPage's L is only appropriater%   z+`predicted_ranks` must include each integerr   )r  r  g?r  z`data` is not properly rankedTr&   z`data` contains NaNsF)r  z`method` must be inr  )r  r%  z`ranked` must be boolean.)r  r  )	rR   rS   r0   r  rB   r   r   rF   r   )r3   r  r7   r7   r8   rv  (  sL    &&z'TestPageTrendTest.test_input_validationN)r]   r^   r_   rB   r   r   r   Z	data_3_25Z
data_10_26tsr   r   r!  r  Zts2r   r  r  r  rv  r7   r7   r7   r8   r    s   (((000.$$$000 $00	,,$$$$$$$r  )r   )NNr  N)NNr  )r   r  rL  collectionsr   	itertoolsr   copyr   Znumpy.testingr   r   r   r   r	   r
   r   r   r   r   r   r   rR   Znumpy.ma.testutilsr*  Z	testutilsr  numpyr   r   r   r   r   rB   Zscipy._lib._utilr   Zscipyr   Zscipy.statsr0   Zscipy.stats.mstatsr  Zscipy.stats.mstats_basicr3  Zscipy.stats._ksstatsr   Zscipy.special._testutilsr   Zscipy.specialr   Zcommon_testsr   Zscipy.sparse.sputilsr   Zscipy.spatial.distancer   Zscipy.stats._distr_paramsr   Z	numpy.libr   r  r    r!   r"   r#   r   r1   r^  re   rg   ri   rk   rm   r,   ra   r   r   r  r0  r5  r8  r@  rB  rE  rL  rM  rU  r  r  r  r  r  r  r  r  r  r"  r1  r2  rQ  rp  r  ZPowerDivCaser  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(  r5  rB  rC  rD  rF  rG  rH  rI  rM  rN  rS  rT  rp  rq  rw  r|  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r3  r:  r@  rB  rO  r\  rh  ry  r  r7   r7   r7   r8   <module>   st  0m r  ~ I Z
S

& {u+| R?H _ jEN,,
 -&	K-5"D WW
e xH k:bc(~+J Q^K/ n ;^-&]C L<  7