
    S_fQ                       d Z ddlZddlZddlZddlmZ ddlmZ ddlmZm	Z	 ddl
mc mZ ddlmZ ddlmZ ddlZddlmZ dd	lmZmZmZmZmZmZmZ dd
lmZ ddlmZ  G d d      Zd@dZ d@dZ! G d d      Z" G d d      Z# G d d      Z$ G d d      Z% G d d      Z& G d d      Z' G d d      Z( G d d      Z) G d  d!      Z* G d" d#      Z+d$ Z,d% Z- G d& d'      Z.d( Z/d) Z0d* Z1d+ Z2 G d, d-      Z3 G d. d/      Z4 G d0 d1      Z5 G d2 d3      Z6 G d4 d5      Z7 G d6 d7      Z8 G d8 d9      Z9 G d: d;      Z: G d< d=      Z; G d> d?      Z<y)Az?
Tests for the stats.mstats module (support for masked arrays)
    N)nan)maskednomask)stats   )check_named_results)raises)assert_equalassert_almost_equalassert_array_almost_equalassert_array_almost_equal_nulpassert_assert_allcloseassert_array_equal)suppress_warnings)_mstats_basicc                       e Zd Zd Zy)TestMquantilesc                     t        j                  g dg dg dg dg dg dg dg dg d	g d
g dg      }g dg dg dg}t        j                  |dd      }t	        ||       y )N)      @      @      ?)g     G@      .@       @)g     H@      B@      @)r        C@      @)      E@      D@     8)     D@r"   r!   )r   r!   r!   )r   r!   r!   )g     E@r!   r!   )r    r!   r!   )r   r!   r!   )g3333333@g333333-@g333333?)r    g     B@      @)gffffffE@gfffffD@gffffff@r   )r   2   )axislimit)nparraymstats
mquantilesr   )selfdatadesiredquantss       Clib/python3.12/site-packages/scipy/stats/tests/test_mstats_basic.pytest_mquantiles_limit_keywordz,TestMquantiles.test_mquantiles_limit_keyword   sg    xx'''**+,,,,
. 
/ &$&( ""4aw?FG,    N)__name__
__module____qualname__r0    r1   r/   r   r      s    -r1   r   c                 |    t        j                  | ||      }t        |||       t        |j                  |       y N)r%   dtypertol)r)   gmeanr   r
   r8   
array_liker-   r%   r8   r:   xs         r/   check_equal_gmeanr?   .   s.    Zd%8AAwT*% r1   c                 |    t        j                  | ||      }t        |||       t        |j                  |       y r7   )r   hmeanr   r
   r8   r<   s         r/   check_equal_hmeanrB   5   s.    JT7AAwT*% r1   c                       e Zd Zd Zd Zd Zd Zd Zej                  j                   eed       d      d	        Zd
 Zy)TestGeoMeanc                 T    g d}t        j                  dd      }t        ||d       y )Nr                     ?+=r9   )r'   powerr?   r+   ar-   s      r/   test_1dzTestGeoMean.test_1d<   s#    ((7E*!W51r1   c                     t        j                  g d      }d}t        ||       t        j                  g dg d      }t        j                  dd      }t        ||d	       y )
N

         (   r$   <   F   P   Z   d   gsŤF@rF   r   r   r   r   mask   UUUUUU?rL   r9   )mar(   r?   r'   rM   rN   s      r/   
test_1d_mazTestGeoMean.test_1d_maA   sL    HH>?!W%HH\5((5%(!W51r1   c                 j    t         j                  j                  g dg d      }d}t        ||       y )NrR   
r   r   r   r   r   r   r   r   r   r   r]   gdq_D@r'   ra   r(   r?   rN   s      r/   test_1d_ma_valuezTestGeoMean.test_1d_ma_valueK   s.    EEKKA;  =!W%r1   c                 b    t         j                  j                  g d      }d}t        ||       y )N)
rS   rT   rU   rV   r$   rW   rX   rY   rZ   r   r   re   rN   s      r/   test_1d_ma0zTestGeoMean.test_1d_ma0R   s$    EEKK?@!W%r1   c                     t         j                  j                  g d      }t         j                  }t        j                  d      5  t        ||       d d d        y # 1 sw Y   y xY w)N)
rS   rT   rU   rV   r$   rW   rX   rY   rZ   ignore)invalid)r'   ra   r(   r   errstater?   rN   s      r/   test_1d_ma_infzTestGeoMean.test_1d_ma_infX   sI    EEKK@A&&[[* 	*a)	* 	* 	*s   AA'float96cannot find float96 so skippingreasonc                     t        j                  g dg d      }t        j                  dd      j	                  t        j
                        }t        ||t        j
                  d       y )NrF   r\   r]   r_   r`   rL   )r8   r:   )ra   r(   r'   rM   astypero   r?   r+   rO   
desired_dts      r/   test_1d_float96zTestGeoMean.test_1d_float96_   sE     HH\5XXeU+222::>
!ZrzzFr1   c                    t        j                  g dg dg dgg dg dg dg      }t        j                  g d      }t        ||dd       t        j                  t        j                  d	d
      t        j                  dd      t        j                  dd      g      }t        ||dd       g dg dg dg}d}t        t        j                   j                  |      |       y )NrF   r   r   r   r   r   r   r   r   r   r   r   r   r]   r   rL   r%   r:   rJ   rK   r_         ?rI   rj   rS   rT   rU   rV   r$   rW   rX   rY   rZ   r[   n   x   g/,$qJ@)ra   r(   r'   r?   rM   rN   s      r/   
test_2d_mazTestGeoMean.test_2d_maf   s    HHlL,?'|DF((<(!W159((BHHWe4HHS%0HHS%02 3 	!W2E: /1DE"%%++a.'2r1   N)r2   r3   r4   rP   rb   rf   rh   rn   pytestmarkskipifhasattrr'   rw   r   r5   r1   r/   rD   rD   ;   s[    2
2&&* [[GB	22@  BGBG
3r1   rD   c                   n    e Zd Zd Zej
                  j                   eed       d      d        Z	d Z
y)TestHarMeanc                    t        j                  g dg d      }d}t        ||d       t        j                   j                  g d      }d}t        ||       t        j                   j                  g dg d	      }d
}t        ||       y )NrF   r\   r]   /袋.?rL   r9   rR   g=b#A@rd   gO?@ra   r(   rB   r'   rN   s      r/   rP   zTestHarMean.test_1dx   sq    HH\5+!W51EEKKAB!W%EEKKA;  =!W%r1   ro   rp   rq   c                     t        j                  g dg d      }t        j                  dt        j                        }t        ||t        j                         y )NrF   r\   r]   r   r8   )ra   r(   r'   asarrayro   rB   ru   s      r/   rw   zTestHarMean.test_1d_float96   s9     HH\5ZZ 9L
!Zrzz:r1   c                 4   t        j                  g dg dg dgg dg dg dg      }t        j                  g d      }t        ||dd       g d	}t        ||d
d       g dg dg dg}d}t        t        j                   j                  |      |       y )NrF   ry   rz   r{   r]   r   rL   r|   )gQ?g433333@g?rj   r~   r   r   gmWUC@r   rN   s      r/   test_2dzTestHarMean.test_2d   s|    HHlL,?'|DF((<(!W159L!W2E:/1DE"%%++a.'2r1   N)r2   r3   r4   rP   r   r   r   r   r'   rw   r   r5   r1   r/   r   r   w   sE    & [[GB	22@  B;B;
3r1   r   c                       e Zd Zd Zy)TestRankingc                    t        j                  g d      }t        t        j                  |      g d       t
        |ddg<   t        t        j                  |      g d       t        t        j                  |d      g d       t        j                  g d	      }t        t        j                  |      g d
       t        j                  g dg dg      }t        t        j                  |      g dg dg       t        t        j                  |d      g dg dg       t        t        j                  |d      g dg dg       y )N)
r   r   r   r   rG   rH   rI      r   r_   )
r   rH   rH   rH   r   r_            !@r   rS   rH   rI   )
r   r#   r#   r   r   rI   r         @r      T)use_missing)
r   r#   r#         @r   rI   r   r   r   r   )
r   r   r   r   rG   rI   rH   r   r   r_   )
r   rH   r   rH   r   r   r_   r   rH   rS   )r   r   r   r   rG   )rH   rI   r   r   r_   )r   rH   rH   rH   r   )r_   r   r   r   rS   r   r%   )r   rG         @r   r   r   r   r   r   r   r   rG   rG   rG   rG   rG   )ra   r(   r   r)   rankdatar   r+   r>   s     r/   test_rankingzTestRanking.test_ranking   s    HH+,FOOA.6	81Q%FOOA.9	;FOOA4@=	?HH+,FOOA.6	8HHk<01FOOA.(*:;	=FOOAA6(/:	<FOOA15(,7	9r1   N)r2   r3   r4   r   r5   r1   r/   r   r      s    9r1   r   c                      e Zd Zd Zd Zd Zd Zej                  j                   e
j                         dk(  d      d        Zej                  j                   e
j                         dk(  d      ej                  j                  d	               Zd
 Zej                  j!                  dd      ej                  j!                  dd      d               Zd Zej                  j&                  d        Zd Zy)TestCorrc           
         t        j                  d      }t        j                         5  t        j                  dt
               t        t        j                  ||      d   d       t        t        j                  ||d d d         d   d       t        j                  |d      }t        j                  ||      }t        |d   t        u        t        |d	   t        u        d d d        t        j                  g d
      }t        j                  g d      }t        j                  ||      \  }}t        |t        j                  d      dz         t        |d       g d}t        j                  g d|      }t        j                  g d|      }	t        j                  ||	      \  }}t        |t        j                  d      dz         t        |d       y # 1 sw Y   xY w)NrS   errorr   r   rj         Tr]   r   )r           r   )r   r   rH   rH   rG   r`   )FFFT)r   r   r   g     X@)r   r   rH   rj   )ra   arangewarningscatch_warningssimplefilterRuntimeWarningr   r)   pearsonrr(   r   r   r'   sqrt)
r+   r>   prx1y1rpr^   x2y2s
             r/   test_pearsonrzTestCorr.test_pearsonr   sm   IIbM$$& 	% !!'>:1 5a 8#>1TrT7 ;A >E&AA&BBqEVO$BqEVO$	% XX&'XXi r2&1Arwwqz!|,Au% +XX,48XXm$/r2&1Arwwqz!|,Au%5	% 	%s   B<G!!G*c                    t         j                  j                  g dg d      }t         j                  j                  g dg d      }t        j                  g d      }t        j                  g d      }t	        j
                  ||      \  }}t        j
                  ||      \  }}t        ||       t        ||       y )Nr   rG   rH   rI   r   r_   )r   r   r   r   r   r   r]   )	   r   r   r_   r   r   )r   r   r   r   r   r   )r   rI   r   r_   )r   r_   r   r   )r'   ra   masked_arrayr(   r)   r   r   r
   )	r+   mxmyr>   ymrmpr   r   s	            r/   test_pearsonr_misaligned_maskz&TestCorr.test_pearsonr_misaligned_mask   s    UU 29KLUU 29KLHH\"HH\"R(B~~a#1RRr1   c                     g dg d}}t        t        j                  ||      d   d       ddddt        j                  gd	d
d
dt        j                  g}}t        j                  |      t        j                  |      }}t        t        j                  ||      d   d       g d}g d}t        t        j                  ||      d   d       d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d&dd'dt        j                  g}t        j                  |      t        j                  |      }}t        t        j                  ||      d   d       t        t        d(            }t        t        d(            }|d)   |d   c|d<   |d)<   |d*   |d+   c|d+<   |d*<   |d,   |d-   c|d-<   |d,<   t        t        j                  ||      d   d.       t        j                  ||      }d/}t        ||d01       y )2N)333333@      @Gz	@HzG@)ffffff?Q@r   @r   gIQ=r   r   r   r   r   r   r   r   33333G@r   皙%@N@333333?      P@̌O@r   ffffff?皙@333333?333333@r   @皙6@皙 @333333F@'@皙8@333333?@D@r   r   r   ffffff@r   333333?r   g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     r   i  rS   i  i  gV-?correlationpvalueTra   )
r   r)   	spearmanrr'   r   ra   fix_invalidlistranger   r+   r>   r   res
attributess        r/   test_spearmanrzTestCorr.test_spearmanr   s   ')>AF,,Qq1!4jAT$rvv.T$tBFF/KA..#R^^A%6AF,,Qq1!4jA00F,,Qq1!4i@$dD#tT#sCc383dD#sD#sCc38..#R^^A%6AF,,Qq1!4i@
 ttqT1Q4
!ad#""qvD'1S6#$ 	F,,Qq1!4e< q!$.
C5r1   c                 R   g d}g d}d}t        j                  ||      \  }}t        ||       t        |d       t        j                  ||d      \  }}t        ||       t        |d       t        j                  ||d      \  }}t        ||       t        |d	       d
}t        j                  dd|      }d|z  t        j
                  j                  |      z   }t        j                  ||      \  }}t        j                  ||d      \  }	}
t        |
|dz         t        j                  ||d      \  }}t        |d|dz  z
         ||	cxk(  r|k(  sJ  J t        j                  t        d      5  t        j                  ||d       d d d        y # 1 sw Y   y xY w)Nr   r   g+;
?gr?greateralternativegb?lessgcH}?r[   r   r   皙?rG   r   zalternative must be 'less'...matchz	ekki-ekki)
r)   r   r   r'   linspacerandomrandr   r	   
ValueError)r+   r>   r   r_expr   r   nstat1p1stat2p2stat3p3s                r/   test_spearmanr_alternativez#TestCorr.test_spearmanr_alternative  s   00 #1%15!,-1)<15!,-1&915!?+ KK1a EBIINN1%%$$Q*	r$$QyA	rBF#$$Qv>	rAQJ'&&&&&&]]:-LM 	<Q{;	< 	< 	<s   ;FF&ppc64lezfails/crashes on ppc64lerq   c                 r	   t        j                  t        j                  g d            }t        j                  t        j                  g d            }ddg}t        t        j                  t        j                  ||            |       t        j                  t        j                  d            }t        j                  t        j                  d            }ddg}t        t        j                  t        j                  ||            |       t        t        t
        j                  ||d       |d	   }|d
   |d	<   ||d
<   ddg}t        t        j                  t        j                  ||            |       |d   }|d   |d<   ||d<   ddg}t        t        j                  t        j                  ||            |       t        j                  t        j                  d            }t        j                  t        j                  d      d d d         }ddg}t        t        j                  t        j                  ||            |       |d	   }|d
   |d	<   ||d
<   ddg}t        t        j                  t        j                  ||            |       |d   }|d   |d<   ||d<   ddg}t        t        j                  t        j                  ||            |       t        j                  ddddt        j                  g      }t        j                  ddddt        j                  g      }t        j                  ddddt        j                  g      }t        t        j                  t        j                  ||            dd g       t        t        j                  t        j                  ||d!            dd"g       t        t        j                  t        j                  ||            d#d$g       t        j                  d%d%d%d%d&d&d%d'd%d&ddd%d(d%d&d%d%d%d%d%t        j                  g      }t        j                  d%d)d)d)dd*d'd%d+d,d-d)d)d)d)d)d)d%dd.t        j                  d%g      }t        j                  ||      }t        t        j                  |      d/d0g       d1}t        ||d23       y )4N)r   rG   r   r_   )rI   r   r      r   r   rS   gxO~>bananamethodr   rG   g?>?gaV>r   r_   g}'}'?go&5>rj   r   g?>g}'}'r   r   r   r   r   g     :@gQgףp=
@r   r   g1UU?      ?
asymptoticglgN?g~ȋgQM?r   rT   rW   rV   rY   !   C         -   gXJĿgvPwTk?r   Tr   )ra   r(   r'   r   r   r)   
kendalltaur   assert_raisesr   r   r   r   )r+   r>   r   expectedbzresultr   s           r/   test_kendalltauzTestCorr.test_kendalltau.  s
    HHRXXl+,HHRXXm,- :BJJv'8'8A'>?J HHRYYr]#HHRYYr]# +,BJJv'8'8A'>?J 	j&"3"3Q(K aDt!! '(:;BJJv'8'8A'>?J aDt!! '(:;BJJv'8'8A'>?J HHRYYr]#HHRYYr]4R4() ,-BJJv'8'8A'>?J aDt!! ();<BJJv'8'8A'>?J aDt!! ();<BJJv'8'8A'>?J NND$dBFF;<NND$tRVV<=NND$dBFF;<BJJv'8'8A'>?'.	0BJJv'8'8Al'ST'3	5BJJv'8'8A'>?'3	5 NNAq!QB2q"Ar1b!Q1aI JNNAr2r2r2q"bBBB2r2661N O""1a(BJJv.Y0GH /
FJ48r1   c                 @   t        j                  dt              }t        j                  |d      }t        j                  dt              }t        j
                  |dd  |d d f      }t        t        j                  t        j                  ||      d                y )Nr   r   i    r   )
r'   r   floatra   masked_greaterconcatenater   isfiniter)   r  )r+   r>   r   s      r/   test_kendalltau_largezTestCorr.test_kendalltau_large  sx     IId%(a&IId%(NNAdeHah/0F--a3A678r1   c                 Z   t         t         dddddddddddgg ddddd	d
ddddt         ddt         gt         d	dddt         d	ddddddgg}t        j                  |      j                  }t	        j
                  |      }t        |d   dd       t        |d   j                  d      g d       y )NrI   rG         r   r   rH   rI   rH   r   rH   rG   r   rH   r   r   rG   rH   r   rH   r_      r   r     zglobal p-value (indep)gMb?zseasonal p-value)g
ףp=
?g(\?皙?g{Gz?)r   ra   r   Tr)   kendalltau_seasonalr   round)r+   r>   outputs      r/   test_kendalltau_seasonalz!TestCorr.test_kendalltau_seasonal  s    31b"aAq!Q:4Aq"aAq#q!S91b!RaAq!Q:< NN1++A.F#;<eQGF#56<<Q?1	3r1   r  )exactr
  r   	two-sidedr   r   c                    t         j                  j                  d       d}t         j                  j                  |      }t         j                  j                  |      }t         j                  j                  |      dkD  }t	        j
                  ||      }t	        j
                  ||      }t        j                  ||||      }	|j                         }
|j                         }t        j                  |
|||      }t         j                  ||<   t         j                  ||<   t        j                  |||d|      }t        |	|       t        ||       y )Nr   r$   r}   r]   )r  r   omit)r  
nan_policyr   )r'   r   seedr   ra   r(   r)   r  
compressedr   r   r   )r+   r  r   r   r>   r   r^   x_maskedy_masked
res_maskedx_compressedy_compressedres_compressedres_nans                 r/   test_kendalltau_mstats_vs_statsz(TestCorr.test_kendalltau_mstats_vs_stats  s    			qIINN1IINN1yy~~a 3&88AD)88AD)&&hv;H
  **,**,)),v;P &&$&&$""qFM 	
N30r1   c           	          ddddddddd}|j                         D ]-  \  }}t        j                  |d   |d	         }t        ||       / y )
Ng遣m?g:4W?g,
:H r   gK?g(6?))r[   iY	  )e   i	  )   r   )   r   )r=  r   )   r   )   iE&  )   i%  r   r   itemsr   _kendall_p_exactr   r+   expectationsncr  r   s        r/   test_kendall_p_exact_mediumz$TestCorr.test_kendall_p_exact_medium  se     &<%;"8"%"8"%%;%;= )..0 	/LB00A1>CX.	/r1   c                     ddddddd}|j                         D ]-  \  }}t        j                  |d   |d	         }t        ||       / y )
NgE?gU`Ux<?gve?gZ?g=?gG?))i  i5  )i  i\  )i   idd )i!  ih )i@  i 	 )iA  i 	 r   r   rA  rD  s        r/   test_kendall_p_exact_largez#TestCorr.test_kendall_p_exact_large  s`     '=&<'='=(>(>@ )..0 	/LB00A1>CX.	/r1   c                 L   g 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t         j                  }t        t        j                  ||      d   d d!       t        j                  ||      }d"}t        ||d#$       y )%N)#r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj   g-@g+@g(@g333333$@gffffff@gffffff@g333333@gffffff@g333333@r   gffffff
@g	@r   gffffff@r#   g333333@gffffff@g @r   g      ?g?r   g?皙?gffffff?r   r}   r$  r   r   g/"?r   r   Tr   )r'   r   r   r)   pointbiserialrr   r   s        r/   test_pointbiserialzTestCorr.test_pointbiserial  s   5BT B4 B Bt BS B# Bs BC B Bc B3 B BBBBB!$B&)B+.B03B58B:=B?BBDGBILBBBBB!$B&)B+.B03B58B:<&&B 	F11!Q7:GQG ##Aq).
C5r1   N)r2   r3   r4   r   r   r   r  r   r   r   platformmachiner  slowr  r)  parametrizer9  rG  xslowrI  rM  r5   r1   r/   r   r      s   &>$6L+<Z [[(((*i79  ;T9;T9l [[(((*i79  ;[[9 ;9
3 [[X'>?[[],LM1 N @1:/ [[/ /6r1   r   c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestTrimmingc                 ^   t        j                  d      }t        t        j                  |      g d       t        j                  d      }t        t        j                  |d      g d       t        j                  d      }t        t        j                  |dd      g d       t        j                  d      }t        t        j                  |dd	
      g d       t        j                  d      }t
        x|ddg<   |d<   t        t        j                  |d      g d       t        j                  d      j                  dd      }dgdz  dgdz  z   dgdz  z   }t        j                  |dd	d       }t        |j                  j                         |       t        j                  |dd	d      }t        |j                  j                         |       t        j                  |dd	d      }t        |j                  j                  j                         |       t        j                  d      j                  dd      }t
        |d<   dgdz  dgdz  z   dgdz  z   }t        j                  |dd	d       }t        |j                  j                         |       t        j                  |dd	d      }t        |j                  j                         |       t        j                  |j                  dd	d      }t        |j                  j                  j                         |       y )NrS   
r   r   rG   rH   rI   r   r_   r   r   r   )rG   r   )
NNrG   rH   rI   r   r_   r   r   NFFlimits	inclusive)
NNNrH   rI   r   r_   r   NN)r   r$  T)rY  relative)
Nr   rG   rH   rI   r   r_   r   NN   r   rj   r   )NNrG   rH   rI   Nr_   r   r   NNNr[   r   rX   rT   )r[  r%   r   r  )
ra   r   r
   r)   trimr   reshape_maskravelr%  )r+   rO   r>   r  trimxs        r/   	test_trimzTestTrimming.test_trim  s`   IIbMV[[^%:;IIbMV[[5)+IJIIbMV[[%-H9	;IIbMV[[)TB3	5 IIbM!!1R&	AaDV[[E*K	M IIcN""2r*3r6QCF?aSV+Ay4dCU[[&&((3Ay4a@U[[&&((3Ay4bAU[[]]((*H5 IIcN""2r*!3r6QCF?aSV+Ay4dCU[[&&((3Ay4a@U[[&&((3ACCTCUWW]]((*H5r1   c                    t        j                  d      }t        t        j                  |      j                         d       t        t        j                  |d      j                         d       t        |dd t        j                  |      }t        |j                         d       t        |j                  d	gd
z  dgdz  z   d	gdz  z   dgdz  z   d	gd
z  z          t        |_        d|_
        t        t        j                  |      j                         d       t        t        j                  |      j                         d       y )Nr[   rW   r   )tailrY   r$   rX   0   r   r  r   "   rT      )rS   rS   )ra   r   r
   r)   trimbothcounttrimtailr   r_  r   shape)r+   r>   ra  s      r/   test_trim_oldzTestTrimming.test_trim_old  s    IIcNV__Q'--/4V__QC0668"="R"U[[]B'U[[1#b&A3r6/QCF":aSV"Cqc"f"LMV__Q'--/4V__Q'--/4r1   c                     t        j                  d      }t        j                  |dd      }t        j                  g dg d      }t        ||       t        |j                  |j                         y )NrS   )g333333?gQ?rW  rX  rV  )
r   r   r   r   r   r   r   r   r   r   r]   )ra   r   r)   trimrr(   r
   r^   )r+   r>   r  r  s       r/   
test_trimrzTestTrimming.test_trimr  sR    IIbMaO88:!?AVX&V[[(--0r1   c                     t        j                  g d      }t        t        j                  |d      dd       t        t        j                  |d      dd       t        t        j                  |d      dd       y )NM   W   X   r                  i  i(  i+  i2  ix  i  i  i  i  i3
  r   iW  r   )r   r   r$  r$  i  )ra   r(   r   r)   trimmed_meanr+   r,   s     r/   test_trimmedmeanzTestTrimming.test_trimmedmean%  sb    xx @ AF//S93BF//Y?aHF//Y?aHr1   c                    t         j                  j                  d      }|j                  d      }t        j                  |      }t	        j
                  |g d      }t        t        j                  |d      |j                                y )Nl   l{f0j rT   sizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r]   r   )
r'   r   default_rngsortra   r(   r   r)   trimmed_varvarr+   rng	data_origr,   s       r/   test_trimmedvarzTestTrimming.test_trimmedvar,  k     ii##$78JJBJ'	wwy!xx $B C**9c:DHHJGr1   c                    t         j                  j                  d      }|j                  d      }t        j                  |      }t	        j
                  |g d      }t        t        j                  |d      |j                                y )Nl   /{Gzi rT   r  r  r]   r   )
r'   r   r  r  ra   r(   r   r)   trimmed_stdstdr  s       r/   test_trimmedstdzTestTrimming.test_trimmedstd6  r  r1   c                     t        j                  g d      }t        t        j                  |d      dd       t        t        j                  |d      dd       y )Nrq  r{  g>L@r   r$  )ra   r(   r   r)   trimmed_stder}  s     r/   test_trimmed_stdezTestTrimming.test_trimmed_stde@  sI    xx @ AF//Y?1MF//S98QGr1   c                 t   t        j                  g d      }t        t        j                  |d      j                  d      dd       t        t        j                  |dd      j                  d      dd       t        |d<   t        j                  |      }t        |j                  |j                         y )	Nrq  r{  r   ddofg@rW  gffff7@r   )	ra   r(   r   r)   	winsorizer  r   r
   r^   )r+   r,   
winsorizeds      r/   test_winsorizationzTestTrimming.test_winsorizationF  s    xx @ AF,,T)<@@a@H#Q	(T9];??Q?GQ	 Q%%d+
Z__dii0r1   c           
      r   t        j                  t        j                  t        j                  dddg      }t	        t
        t        j                  |dd       t        t        j                  |d      t        j                  g d             t        t        j                  |d	      t        j                  t        j                  t        j                  t        j                  t        j                  t        j                  g             t        t        j                  |dd
      t        j                  t        j                  t        j                  dddg             t        t        j                  |d	d
      t        j                  t        j                  t        j                  dddg             y )Nr   r   rG   )皙?r  raise)r/  )皙?r  r   )rK  rK  r.  )	ra   r(   r'   r   r  r   r)   r  r
   r}  s     r/   test_winsorization_nanz#TestTrimming.test_winsorization_nanR  s   xxAq12j&"2"2D,!(	* 	V%%dJ7XXo.	0V%%dJ7XXrvvrvvrvvrvvrvvFG	IV%%dJ6JXXrvvrvvq!Q78	:V%%dJ6JXXrvvrvvq!Q78	:r1   N)r2   r3   r4   rb  rl  ro  r~  r  r  r  r  r  r5   r1   r/   rT  rT    s4    #6J51IHHH
1:r1   rT  c                   ,   e Zd Zg dZ ej
                  dddddej                  g      Z ej                   ej                  g dg dg d	g d
g dg       ej                  g dg dg dg dg dge
            ZddddZd Zd Zd Zd Zd Zy)TestMomentsrF   gp=
ף?g?߾?gD9?gQI?g}?5^I)gq2۪?g{!3?gr!fa?gk?gY?)gSH*:/?g#R/?g>y}zd?gV߯<?gF?)ggˠw?gyZf?g=?g!@Vyȧ?g#1?)geY(9?gD$?g;?gJX<q0?g#d?)g?gA]?g_.?g?g2^9?)TFFTF)TTTFT)FFFFF)TTTTT)FFTFFr   r]   Nrk  r8   c                    t        j                  |      }|t        j                  ||      }t        ||       ||j                  }|j                  |k(  sJ y N)r'   r   broadcast_tor   r8   )r+   actualexpectrk  r8   s        r/   _assert_equalzTestMoments._assert_equalx  sP    F#__VU3F66*=LLE||u$$$r1   c                 b   t        j                  | j                  d      }t        |dd       t        j                  | j                  d      }t        |d       t        j                  | j                  d      }t        |d       t        j                  | j                  d      }t        |d       t        j                  | j                  g d	      }t	        |g d
       t        j                  | j                  d      }t	        |d       t        t        t         j                  | j                  d       t        j                  | j                  g d      }t	        |g d
       t        j                  g       }| j                  |t        j                  t        j                         t        j                  t        j                  g t        j                              }| j                  |t        j                  t        j                         t        j                  t        j                  d      d      }| j                  |g dt        j                         t        j                  g gd      }| j                  |t        j                  dt        j                         t        j                  g gddgd      }| j                  |g d       t        j                  d      }t        j                  |d<   t        t        j                  |d      t         j"                         y )Nr   r   rS   rG         ?rH   rI        @rF   )r   r  r   r  r   r   )r   rG   rH   r   r   )r   r   r   r   )r   r  )r   )momentr%   )rG   r   )rk  g      $@r   )r)   r  testcaser   r   r  r   r  r'   r   float64r(   float32zerosr   r
   ra   r   )r+   r   r>   s      r/   test_momentzTestMoments.test_moment  s   MM$--*Ac"%MM$--*Ad#MM$--*Ac"MM$--*Af% MM$--6/0 MM$---3j&--DMM$--)9:/0 MM"1bffBJJ7MM"((2RZZ891bffBJJ7MM"((6*31bBJJ?MM2$Q'1bffD

CMM2$1vA61b/IIcNvv!V]]1a("))4r1   c                 \    t        j                  | j                        }t        |dd       y )N%?rS   )r)   	variationr  r   )r+   r   s     r/   test_variationzTestMoments.test_variation  s#    T]]+A.3r1   c                 x    t        j                  g d      }t        j                  |d      }t	        |d       y )N)r   rG   rH   rI   r   r   r  g<<'?)r'   r(   r)   r  r   )r+   rO   r   s      r/   test_variation_ddofzTestMoments.test_variation_ddof  s/     HH_%QQ'A12r1   c           	         t        j                  | j                        }t        |dd       t        j                  | j                  d      }t        |dd       t        j                  | j                        }t        |dd       t        j                  t        j                  g d      t        j                  g dt        	      
      }t        t        j                  | j                  d      |       t        | j                        D ]'  \  }}t        t        j                  |      ||          ) t        j                  t        j                  g d      t        j                  g dt        	      
      }t        t        j                  | j                  dd      |       t        | j                        D ])  \  }}t        t        j                  |d      ||          + t        t        j                  | j                  dd d f         t        j                  | j                  dd d f                y )Ng7l*ҿrS   r   biasg2۠ۿr   )gҽr?r   g>HÛe?r   gIǮFFFTFr   r]   r   )g`٨?r   gn?r   g0FrG   )r)   skewtestmathworksr   r  ra   r(   r'   boolr   testcase_2d	enumerater   r+   r   
correct_2dirowcorrect_2d_bias_correcteds         r/   test_skewnesszTestMoments.test_skewness  s   KK**+A/3KK**2A04KK&Ac"% XXHH / 0<DI


 	D$4$4a8*E 0 01 	AFAsC 0*Q-@	A %'HHHH , -<DI%
!
 	D$4$4aeD1	3 0 01 	>FAsCe < 9! <>	>
 	D$4$4QT$:;

4#3#3AqD#9:	<r1   c           	         t        j                  | j                  ddd      }t        |dd       t        j                  | j                  dd      }t        |dd       t        j                  | j                  dd      }t        |d       t        j                  t        j                  g d      t        j                  g d	t        
            }t        t        j                  | j                  d      |       t        | j                        D ]'  \  }}t        t        j                  |      ||          ) t        j                  t        j                  g d      t        j                  g d	t        
            }t        t        j                  | j                  dd      |       t        | j                        D ])  \  }}t        t        j                  |d      ||          + t        t        j                  | j                  dd d f         t        j                  | j                  dd d f         d       y )Nr   r   )fisherr  gO߻S@rS   gx|N@g=
ףp=?)            g'@=r   gt
Qr  r   r]   )r  r  g?<r   g`@7Fr  rG   rI   )nulp)r)   kurtosisr  r   r  ra   r(   r'   r  r   r  r  r   r   r  s         r/   test_kurtosiszTestMoments.test_kurtosis  s    OOD..!!DA3
 OOD..qqAA0"5OODMM1a0At$ XXbhh (8 9#%88 -4;?$AB
 	"&//$2B2BA"F",	. 0 01 	EFAs 4jmD	E %'HHHHIJ<DI%K! 	"&//$2B2BA7<#>";	=   0 01 	>FAs% @ 9! <>	>
 	'vt7G7G17M'N',~~d6F6Fq!t6L'M,-	/r1   )r2   r3   r4   r  ra   r   r'   r   r  r(   r  r  r  r  r  r  r  r  r5   r1   r/   r  r  a  s     H"BNNE6667$&FF$, -M"((NNNNM	O 	P
 RXX86:59	; CG	H
IK 6: %#5J43<B%/r1   r  c                       e Zd Zd Zd Zy)TestModec                    g d}t        j                  |d      }t        j                  g d      }t        j                  |d      }t        j                  t        j                  |      dkD  |      }t        j                  |dkD  |      }t        j                  |dk  |      }t        j                  t        j                  |      dk  |      }t        t        j                  |d       d       t        t        j                  |d      d       t        t        j                  |d       d	       t        t        j                  |d       d       t        t        j                  |d       d	       t        t        j                  |d       d
       t        t        j                  |d       d       t        t        j                  |d      g dgg dgf       t        t        j                  |d      g dgg dgf       t        t        j                  |d      dgdgdggdgdgdggf       t        t        j                  |d      dgdgdggdgdgdggf       t        t        j                  |d      ddggddggf       t        t        j                  |d      dgdgdggdgdgdggf       t        j                  |d       }	d}
t        |	|
d       y )N)r   r   r   r   r   r   rG   rH   rH   rH   rH   rI   r   r_   r   )rH   r   r   )rH   rG   rG   r   )rH   rI   r   )r   rH   )r   r   )rG   r   )r   r   r   r   r   r   rj   rH   r   r   )moderi  Tr   )	r'   r^  r(   ra   masked_wherer
   r)   r  r   )r+   a1a2a3a4ma1ma2ma3ma4a1_resr   s              r/   	test_modezTestMode.test_mode  sE   ,ZZE"XXm$ZZE"oobhhrlQ.3oob1fb)oob1fb)oobhhrlQ.3V[[$/7V[[!,e4V[[40%8V[[$/7V[[40%8V[[$/7V[[40%8V[[!,}{m.LMV[[1-}/MNV[["-!aS!QC}/MNV[[2.1#qc1#!aS!0NOV[[1-!A1Q%/ABV[[2.1#qc1#!aS!0NORd+ '
FJ48r1   c                     t        j                  d      }|d dd d fxx   dz  cc<   |d d d dfxx   dz  cc<   |j                         }t        j                  |d        t        ||       y )N)r[   r[   r$   r   )r'   r  copyr)   r  r
   )r+   imcps      r/   test_mode_modifies_inputz!TestMode.test_mode_modifies_input  s_     XXj!
3B36
a

1crc6
a
WWYBRr1   N)r2   r3   r4   r  r  r5   r1   r/   r  r    s    9:r1   r  c                       e Zd Zd Zd Zd Zy)TestPercentilec                 :    g d| _         g d| _        g d| _        y )N)rH   rI   r   rS   r_   )rH   r   r   rI   rG   r   )r   rI   r   rS   r  r  r  r   )r  r  r  r+   s    r/   setup_methodzTestPercentile.setup_method$  s    *,1r1   c                     t        j                  d      dz  }t        t        j                  |d      d       t        t        j                  |d      d       t        t        j                  |d      d       y )	Nr   r}   r   r   r[   r   r$   g      ?)r'   r   r
   r)   scoreatpercentiler   s     r/   test_percentilezTestPercentile.test_percentile)  sY    IIaL3V--a3R8V--a5s;V--a4d;r1   c                     t        j                  g dg dg dg dg dg      }t        t        j                  |d      g d       y )Nr   r   r   )rI   rI   rH   r$   )ra   r(   r
   r)   r  r   s     r/   test_2DzTestPercentile.test_2D/  s<    HHi	! "
 	V--a4i@r1   N)r2   r3   r4   r  r  r  r5   r1   r/   r  r  #  s    2
<Ar1   r  c                   d    e Zd ZdZ ej
                  ddddej                  g      Zd Z	d Z
d Zy	)
TestVariabilityz[  Comparison numbers are found using R v.1.5.1
         note that length(testcase) = 4
    r   rG   rH   rI   c                 Z   t        j                  | j                        }t        |d       | j                  j	                         }t        t        j                  | j                  d      t        j                  ||dz
  z        z  t        j                  | j                  d             y )Ng㝎?r   r  rG   )r)   semr  r   ri  r   r'   r   )r+   r   r   s      r/   test_semzTestVariability.test_sem>  sq    JJt}}%A|,MM!

4==q9BGGAqsG<LL

4==q9	;r1   c                     t        j                  | j                  | j                        }g d}t        ||j                  |j
                  dk(     d       y )N)OT\w%ܿr  OT\w?Fr\  decimal)r)   zmapr  r   r,   r^   )r+   r   desired_unmaskedvalss      r/   	test_zmapzTestVariability.test_zmapF  sG     KKt}}5!D!"6"#&&5"92	Gr1   c                     t        j                  | j                        }t        j                  ddddt
        j                  g      }t        ||d       y )Nr  r  r  r  r\  r  )r)   zscorer  ra   r   r'   r   r   )r+   r   r-   s      r/   test_zscorezTestVariability.test_zscoreO  sH     MM$--(.."24E"2ORVV"M NGQ3r1   N)r2   r3   r4   __doc__ra   r   r'   r   r  r  r  r  r5   r1   r/   r  r  8  s8     r~~q1Qrvv./H;G4r1   r  c                       e Zd Zd Zd Zd Zy)TestMiscc                    dgdz  dgdz  z   dgdz  z   dgdz  z   dgdz  z   d	gdz  z   dgdgdz  z   dgd
z  z   dgdz  z   d	gdz  z   g}ddgz  ddgz  z   ddgz  z   ddgz  z   ddgz  z   ddgz  z   dgddgz  z   d
dgz  z   ddgz  z   ddgz  z   g}t        t        j                  t        j                  | j
                  d
      |d
       y )Nr   r_   r  r   r   r   rH   rG   rS   rI   r  g_v	@g1%?g"u?gZӼ?g!u @gq&@g;pΈ$@gTR'p@g9#?gHPx?gQI?)r   r'   r'  r)   obrientransformr%  )r+   argsr  s      r/   test_obrientransformzTestMisc.test_obrientransformZ  s   Aqc"faSU"A3q5(!Q.tAv5QCE	1#a%A%rd2g-/VH*R[(F83AvhJ>q&zI!WI+U)AvhJ&q&z1!VH*<R[HJBHHV%;%;T%B%D%DaH"A	'r1   c                 .   t         t         dddddddddddgg ddddd	d
ddddt         ddt         gt         d	dddt         d	ddddddgg}t        j                  |      j                  }|j                  \  }}}}t	        t        j                  t        j                  ||      d      d       t	        t        j                  t        j                  ||d      d      d       t	        t        j                  t        j                  ||d      d      d       y )NrI   rG   r  r   r   r   rH   r!  r_   r"  r   r  r#  )48E?gsA?g)g%䃞?g 	?l)r  g46<?)	r   ra   r   r%  r   r'   r'  r)   ks_2samp)r+   r>   winterspringsummerfalls         r/   test_ks_2sampzTestMisc.test_ks_2sampb  s    #q!RQ1aAq94Aq"aAq#q!S91b!RaAq!Q:< NN1)*&BHHV__VV%DaH,	.BHHV__VVS%I1M,	.BHHV__VVS%I1M,	.r1   c                    g dg dg df}t        j                  | }t        |d   dd       t        |d   dd	       t        t        dd
ddddddd
ddgg ddd
dd	dddddt        ddt        gt        d	dddt        d	ddd
dddgg}t	        j
                  |      }t        j                  | }t        |d   dd       t        |d   dd       d}t        ||d       y )N)
g      "@      #@      @      @r  r         @r   r   r   )
r   r   r   r  r  r  r   r   r   r   )
r   r  r   r   r   r   r   r   r   r   r   g:pΈ$@rI   r   g(QGu?r_   rG   r  r   r   rH   r!  r"  r   r  r#  gr @g-C6?	statisticr   Tr   )r)   friedmanchisquarer   r   ra   r   r   )r+   r  r  r>   r   s        r/   test_friedmanchisqzTestMisc.test_friedmanchisqq  s    999; ))40F1Iw2F1Ix3#q!RQ1aAq94Aq"aAqa371b!RQ1aAq9; NN1))1-F1Ivq1F1Ivq1 -
FJ48r1   N)r2   r3   r4   r  r  r  r5   r1   r/   r  r  X  s    '.9r1   r  c                  >   t        j                  ddd      } dt        j                  ddd      z  dz   }|t        j                  t        j                  ddd            z  }t        j                  | |      }t
        j                  j                  }t        t        ||             d}t        ||d       d	t        |      v sJ t        |j                  d
       t        |j                  d       t        |j                  d       t        |j                   d       y )Nr   r[   r$  rS   rT   )slope	interceptrvaluer   stderrTr   intercept_stderrg5E%?g +l$@g4_Qc?g8?)r'   r   sinr)   
linregressr   _stats_mstats_commonLinregressResultr   
isinstancer   dirr   r  r  r  r  )r>   r   r  lrr   s        r/   test_regress_simpler'    s    
AsC Abkk!S#&&+AAr3'	((Aq!$F 
	#	#	4	4BJvr"#EJ
t4V,,, &9:((*<=';<//1DEr1   c                      t        j                  d      } t         j                  j                  d      }d}t        t        |      5  t        j                  | |       d d d        y # 1 sw Y   y xY w)NrS   zBCannot calculate a linear regression if all x values are identicalr   )r'   r  r   r  r   r)   r!  )r>   r   msgs      r/   test_linregress_identical_xr*    sW    
A
		A
NC	z	-  !Q     s   A((A1c                   $    e Zd Zd Zd Zd Zd Zy)TestTheilslopesc                 B   t        j                  g d      \  }}}}t        |d       t        |d       t        j                  g dd      \  }}}}t        |d       t        |d       t        j                  j                  g dg d      }t        j                  |      \  }}}}t        |d	       t        |d
       t        j                  |d      \  }}}}t        |d	       t        |d       g d}g d}t        j                  ||d      \  }}}}t        |d       t        |d       t        |dd       t        |dd       t        j                  ||dd      \  }}}}t        |d       t        |d       t        |dd       t        |dd       y )N)r   r   r   r}   jointr  r   )r   r   r[   r   )FFTFr]   r`   gUUUUUU?)r   rG   rH   rI   rS   r\  r"  )r         rT   r  7   N   gQ?rI   r   gQ@rG   r  gGz@r   )r)   theilslopesr   r'   ra   r(   )r+   r  r  lowerupperr   r>   s          r/   test_theilslopesz TestTheilslopes.test_theilslopes  s   )/););I)F&y%E3'Is+)/););ICJ*L&y%E3'Is+ EEKK-HKI)/););A)>&y%E4(It,)/););ACJ*L&y%E4(Is+ %')/););Aq$)G&y%E1%Is+E43E43)/););Aq$CJ*L&y%E1%Is+E43E43r1   c                    d}t        j                  t        |      5  t        j                  ddgddg      }t        j                  t        j                  |            sJ 	 d d d        t               5 }|j                  t        d       t        j                  g dg d      }t        |ddt
        j                  t
        j                  f       d d d        y # 1 sw Y   yxY w# 1 sw Y   y xY w)NzFAll `x` coordinates.*|Mean of empty slice.|invalid value encountered.*r   r   r   zinvalid value encountered...r   r   r   )r   r   r   )r   warnsr   r)   r3  r'   allisnanr   filterr   r   )r+   r)  r   sups       r/   test_theilslopes_warningsz)TestTheilslopes.test_theilslopes_warnings  s    V\\.4 	)$$aVaV4C66"((3-(((	)   	9CJJ~'EF$$Y	:CC!Q!78	9 	9	) 	)	9 	9s   AC6AC(C%(C1c                 &   g d}g d}t        j                  ||      \  }}}}t        j                  ||      }t        ||j                         t        ||j                         t        ||j
                         t        ||j                         y)zv
        Simple test to ensure tuple backwards-compatibility of the returned
        TheilslopesResult object
        r   rG   rI   rI   r_   r   N)r)   r3  r
   r  r  	low_slope
high_slope)r+   r   r>   r  r  rB  rC  r  s           r/   'test_theilslopes_namedtuple_consistencyz7TestTheilslopes.test_theilslopes_namedtuple_consistency  s{    
 282D2DQ2J/y)Z##Aq) 	UFLL)Y 0 01Y 0 01Z!2!23r1   c                    t         j                  j                  d      }|j                  dddt         j                        }t        j                  ||      }t         j                  j                  |j                  d       y )Nl   U5<H r      rS   )r  r8   r   )
r'   r   r  integersuint8r   r3  testingr   r  )r+   r  r   r   s       r/   test_gh19678_uint8z"TestTheilslopes.test_gh19678_uint8  s]     ii##$45LLCbL91%


""399a0r1   N)r2   r3   r4   r6  r>  rD  rJ  r5   r1   r/   r,  r,    s    $4N	94 1r1   r,  c                  V   dt        j                  d      z  dz   } t        t        j                  |       d       t        t        j                  | d      d       dt        j                  d      z  }d|z  dz
  } t        t        j                  | |      d	       t        t        j                  | |d      d	       d
| d d t        t        j                  | |      d	       t        j                  d      }dd|z  z   t
        j                  j                  dd      z   } t        j                  ||       \  }}}}}t        j                  | |      \  }}t        ||d       t        ||d       t        j                  | |d      \  }}t        ||d       t        ||d       y )NrG   rS   r}   )r   r}   separater  r   r   )r  r  r  rI   gffffffr      r  random_stater   r9   )
r'   r   r
   r)   siegelslopesr   normrvsr!  r   )r   r>   	slope_olsintercept_ols_r  r  s          r/   test_siegelslopesrV    sg   	BIIbMCA$$Q'4$$Qz:JG	BIIbMA	AA$$Q*K8$$Q*={K AbqE$$Q*K8 			"As1uuzz~~2C~@@A(-(8(8A(>%I}aA**1a0E9E93/I}37**1a
CE9E93/I}37r1   c                      g d} g d}t        j                  | |      \  }}t        j                  | |      }t        ||j                         t        ||j                         y)zl
    Simple test to ensure tuple backwards-compatibility of the returned
    SiegelslopesResult object.
    r@  rA  N)r)   rP  r
   r  r  )r   r>   r  r  r  s        r/   (test_siegelslopes_namedtuple_consistencyrX    sW    
 	AA**1a0E9  A&F %F,,-r1   c            
         t         j                  j                  d      } | j                  d      }t        j                  |      \  }}d }t        d      D ]1  }t        t        j                   ||d d |f               ||          3 t        j                  t        |j                  d         D cg c]  } ||d d |f          c}      }t        t        j                  |      |       y c c}w )Nl   ,'  )r[   rI   r  c                 $   t        |       }t        j                  |      }| | d d t        j                  f   z
  }||d d t        j                  f   z
  }t        j                  t        j
                  ||ft              d      }||   ||   z  S )Nr   r   )k)lenr'   r   newaxistriuonesr  )yir   r>   dydxr^   s         r/   dijkz&test_sen_seasonal_slopes.<locals>.dijk%  sx    GIIaL"Q

]##1bjj=!!wwrww1vT2a8$x4  r1   rI   r   )
r'   r   r  r)   sen_seasonal_slopesr   r   medianr  rk  )r  r>   intra_slopeinter_sloperc  r  
all_slopess          r/   test_sen_seasonal_slopesri    s    
))

 3
4C


!A%99!<K! 1X B		$qAw-0+a.AB aggaj8I J1a1g JKJBIIj);7 !Ks   5C2c                      t        j                  t        j                  d      dd      } t	        | j
                  t        j                  g d             y )NrH   r   )rK   r}   r	  )r)   plotting_positionsr'   r   r   r,   r(   )poss    r/   test_plotting_positionsrm  4  s6    

#
#BIIaL!Q
7Cchh1B(CDr1   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  dd	d
g      e
j                  j                  dddg      d               Zd Zy)TestNormalitytestsc                    t        j                  d      dz  }t        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             t
        j                  t
        j                  t
        j                  g}t        j                  t        j                  t        j                  g}g d}t        ||      D ]'  \  }}t        t        ||       t        t        ||       ) y )Nr  rj   r   r   rG   rH   r  rj   r   r   rG   rH   r  rj   r   r   rG   rH   r  rj   r   r   rG   rH   rG   rF   )r'   r(   r   r)   
normaltestr   skewtestkurtosistestzipr  r   )r+   r>   funcsmfuncsfuncmfuncs         r/   test_vs_nonmaskedz$TestNormalitytests.test_vs_nonmasked<  s    HH+,a/!&"3"3A"6"'"2"21"5	7!&//!"4"'.."3	5!&"5"5a"8"'"4"4Q"7	9 !!5>>53E3EF##V__f6I6IJuf- 	0KD%*dA.*eQ/	0r1   c                 l   t        j                  d      dz  }t        t        j                  |d       t        j                  |             t        t        j
                  |d       t        j
                  |             t        t        j                  |d       t        j                  |             y )Nrq  rG   r   )r'   r(   r   r)   rr  rs  rt  r   s     r/   test_axis_Nonez!TestNormalitytests.test_axis_NoneL  s{    HH&'*))!$79J9J19MN5vq7IJ++AD9++A.	0r1   c                 *   t        j                  d      dz  }t         j                  j                  t         j                  t         j                  |df   t         j                  ddg|j
                  z  df         }t        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             t        t        j                  |      t        j                  |             y )Nrq  rG   rS   TFr]   )r'   r(   ra   r_infr  r   r)   rr  r   rs  rt  )r+   r>   xms      r/   test_maskedarray_inputz)TestNormalitytests.test_maskedarray_inputT  s    HH+,a/UU[[rvvq"}- eeD5'AFF*:D$@A  C))"-u/?/?/BC+U^^A->?++B/1C1CA1FGr1   c                 Z   t        j                  d      dz  }t        j                  |gdz        j                  }t        j
                  t        j                  t        j                  fD ]>  } ||      } ||      }t        |d   |d   gdz         t        |d   |d   gdz         @ y )Nrq  rG   r   r   )	r'   r(   vstackr%  r)   rr  rs  rt  r   )r+   r>   x_2drx  res_1dres_2ds         r/   test_nd_inputz TestNormalitytests.test_nd_input]  s    HH+,a/yy!q!##&&9L9LM 	8D!WF$ZFF1Iq	{Q7F1Iq	{Q7		8r1   c                 ~    t        j                  d      dz  }t        j                  |      }d}t	        ||d       y Nrq  rG   r  Tr   )r'   r(   r)   rr  r   r+   r>   r   r   s       r/   !test_normaltest_result_attributesz4TestNormalitytests.test_normaltest_result_attributesf  s7    HH+,a/",
C5r1   c                 ~    t        j                  d      dz  }t        j                  |      }d}t	        ||d       y r  )r'   r(   r)   rt  r   r  s       r/   #test_kurtosistest_result_attributesz6TestNormalitytests.test_kurtosistest_result_attributesl  s7    HH+,a/!!!$,
C5r1   c           
          g d}t        j                  t        |      D cg c]  \  }}t        j                  ||       c}}      }t	        t        j                  |      d   dk  d       y c c}}w )N)
   r   :   r   r   )   r  r   r      r   g{Gz?T)r'   hstackr  fullr
   r)   rt  )r+   countsr  cr>   s        r/   test_regression_9033z'TestNormalitytests.test_regression_9033r  sZ     7II61BCArwwq!}CDV((+A.5t< Ds    A0
testrs  rt  r   r   r   c                    t         j                  j                  dddd      }t        t         |      }t        t        |      } |||      \  }} |||      \  }}	t        ||d       t        |	|d       t        j                  |d	d
 t        j                  j                  |t        j                  |            } ||j                         |      \  }} |||      \  }}	t        ||d       t        |	|d       y )NrS   r#   rU   {   locscaler  rO  r   g-q=atolr   r   r]   )r   rQ  rR  getattrr)   r   r'   r   ra   r   r;  r1  )
r+   r  r   r>   
stats_testmstats_testz_exp_exr  r   s
             r/   test_alternativez#TestNormalitytests.test_alternativey  s     JJNNr2CNHUD)
fd+{;
d1+614e,4e, !AEEqrxx{3KH
d1+614e,4e,r1   c                 f   t         j                  j                  dd      }d}t        j                  t
        |      5  t        j                  |d       d d d        t        j                  t
        |      5  t        j                  |d       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)NrT   r  rN  z`alternative` must be...r   r   r   )	r   rQ  rR  r   r	   r   r)   rs  rt  )r+   r>   r)  s      r/   test_bad_alternativez'TestNormalitytests.test_bad_alternative  s    JJNNN5)]]:S1 	4OOA73	4 ]]:S1 	8w7	8 	8	4 	4	8 	8s   B:B'B$'B0N)r2   r3   r4   rz  r|  r  r  r  r  r  r   r   rQ  r  r  r5   r1   r/   ro  ro  :  su    0 0H866= [[Vj.%AB[[]VY,?@- A C-&8r1   ro  c                       e Zd Zd Zy)TestFOnewayc                     t        j                  ddgt         j                        }t        j                  ddgt         j                        }t        j                  ||      }d}t        ||d       y )	Ni  i  r   i  i  r  Tr   )r'   r(   uint16r)   f_onewayr   )r+   rO   r  r   r   s        r/   test_result_attributesz"TestFOneway.test_result_attributes  sS    HHc3Zryy1HHc3Zryy1ooa#,
C5r1   Nr2   r3   r4   r  r5   r1   r/   r  r    s    6r1   r  c                   h    e Zd Z ej                  g d      Z ej                  g d      Zd Zd Zy)TestMannwhitneyu)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   c                 x    t        j                  | j                  | j                        }d}t	        ||d       y )Nr  Tr   )r)   mannwhitneyur>   r   r   )r+   r   r   s      r/   r  z'TestMannwhitneyu.test_result_attributes  s-    !!$&&$&&1,
C5r1   c                 "   t        j                  | j                  | j                        }t	        j                  | j                  | j                        }|j
                  |j
                  k(  sJ t        |j                  |j                         y r  )r)   r  r>   r   r   r  r   r   )r+   res1res2s      r/   test_against_statsz#TestMannwhitneyu.test_against_stats  s`     ""4664662!!$&&$&&1~~///T[[1r1   N)	r2   r3   r4   r'   r(   r>   r   r  r  r5   r1   r/   r  r    s8     * 	+A& 	 " 	#A6
2r1   r  c                       e Zd Zd Zy)TestKruskalc                 `    g d}g d}t        j                  ||      }d}t        ||d       y )N)r   rH   r   r   r   )rG   rI   r_   r   rS   r  Tr   )r)   kruskalr   r   s        r/   r  z"TestKruskal.test_result_attributes  s-    nnQ",
C5r1   Nr  r5   r1   r/   r  r    s    6r1   r  c                   ~    e Zd Zd Zd Zd Zd Zd Zd Zd Z	e
j                  j                  dd	d
g      d        Zy)TestTtest_relc                    t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   |d d df         }t        j
                  |d d df   |d d df         }t        ||       t	        j
                  |d d df   |d d df   d       }t        j
                  |d d df   |d d df   d       }t        ||       t	        j
                  |d d d df   |d d dd f   d      }t        j
                  |d d d df   |d d dd f   d      }t        ||       t        j
                  |d d d df   |d d dd f         }t        ||       y )	N rT   rI   r   r   r   rG   r   r   r   rG   )r'   r   r0  randnr   	ttest_relr)   r   )r+   outcomer  r  res3s        r/   rz  zTestTtest_rel.test_vs_nonmasked  s[   
		w))//"a(<7 wq!t}gadm<1wq!t}=d# wq!t}gadm$G1wq!t}4Hd#wq"1"u~wq!"u~AF2A212QGd# 2A212?d#r1   c                 l   t         j                  j                  d       t        j                  t         j                  j                  dd      g dg dg      }t               5 }|j                  t        d       |d d df   |d d d	f   ft         j                  t         j                  gd
dgffD ]k  }t        j                  | \  }}t        |t         j                  t         j                  f       t        |t         j                  t         j                  f       m 	 d d d        y # 1 sw Y   y xY wNr  rH   rG   r  r8  r]   %invalid value encountered in absoluter   r   r   r   )r'   r   r0  ra   r   r  r   r<  r   r   r)   r  r   r+   r  r=  pairtr   s         r/   test_fully_maskedzTestTtest_rel.test_fully_masked  s    
		w//"))//!Q"7(19'=?  	8CJJ~'NO!!Q$-A766266*S#J79 8''.1"1rvvrvv&67"1rvvrvv&67	8	8 	8 	8   %B;D**D3c                     t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   |d d df         }d}t        ||d	       y 
Nr  rT   rI   r  r   r   r  Tr   )r'   r   r0  r  r)   r  r   r+   r  r   r   s       r/   r  z$TestTtest_rel.test_result_attributes   ^    
		w))//"a(<7wq!t}gadm<,
C5r1   c           
         t        t        t        j                  t	        j
                  d      t	        j
                  d             t	        j
                  d      }t        t        t        j                  |j                  ddd      |j                  ddd      d       t        t        t        j                  |j                  ddd      |j                  ddd      d       y )	NrS   r  rJ   rG   rH   rI   r   r   )r  r   r)   r  r'   r   r^  r   s     r/   test_invalid_input_sizez%TestTtest_rel.test_invalid_input_size  s    j&"2"2iimRYYr]	4IIbMj&"2"2ii1a(!))Aq!*<1	Fj&"2"2ii1a(!))Aq!*<1	Fr1   c                     t        j                  g g       }t        t        j                  t        j
                  |                   y r  )r)   r  r   r'   r:  r;  r+   r  s     r/   
test_emptyzTestTtest_rel.test_empty  -    B'rxx~&'r1   c                 8   t        j                  g dg d      \  }}t        t        j                  |      |ft        j
                  df       t               5 }|j                  t        d       t        j                  g dg d      \  }}t        |t        j                  t        j                  t        j                  g             t        |t        j                  t        j                  t        j                  g             d d d        y # 1 sw Y   y xY w)Nr8  r  r   r  )r)   	ttest_indr
   r'   absr  r   r<  r   r   r(   r   r+   r  r   r=  s       r/   test_zero_divisionz TestTtest_rel.test_zero_division  s    	951bffQi^bffa[1  	>CJJ~'NO##Iy9DAqq"((BFFBFF+;"<=q"((BFFBFF+;"<=		> 	> 	>s   B.DDc                     d}t        j                  t        |      5  t        j                  g dg dd       d d d        y # 1 sw Y   y xY wN4alternative must be 'less', 'greater' or 'two-sided'r   r   rG   rH   )rI   r   r_   foor   r   r	   r   r)   r  r+   r)  s     r/   r  z"TestTtest_rel.test_bad_alternative  @    E]]:S1 	FY	uE	F 	F 	F   AAr   r   r   c                 ,   t         j                  j                  dddd      }t         j                  j                  dddd      }t        j                  |||      \  }}t	        j                  |||      \  }}t        ||d	
       t        ||d	
       t        j                  |dd t        j                  |dd t        j                  j                  |t        j                  |            }t        j                  j                  |t        j                  |            }t	        j                  |||      \  }}t        j                  |j                         |j                         |      \  }}t        ||d	
       t        ||d	
       y )NrS   r   r  *   r  r   rG   r   rL   r9   r   r]   )r   rQ  rR  r  r)   r   r'   r   ra   r   r;  r1  r+   r   r>   r   t_exr  r  r   s           r/   r  zTestTtest_rel.test_alternative$  s3   JJNNr"NEJJNNqND__Q{C
d1+>14e,4e, &&!B&&!BEEqrxx{3EEqrxx{31+>1__Q\\^Q\\^1<>
d4e,4e,r1   N)r2   r3   r4   rz  r  r  r  r  r  r  r   r   rQ  r  r5   r1   r/   r  r    sR    $*
86F(>F
 [[]VY,?@- A-r1   r  c                   x    e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  ddd	g      d
        Zy)TestTtest_indc                 l   t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   |d d df         }t        j
                  |d d df   |d d df         }t        ||       t	        j
                  |d d df   |d d df   d       }t        j
                  |d d df   |d d df   d       }t        ||       t	        j
                  |d d d df   |d d dd f   d      }t        j
                  |d d d df   |d d dd f   d      }t        ||       t        j
                  |d d d df   |d d dd f         }t        ||       t	        j
                  |d d df   |d d df   d	
      }t        j
                  |d d df   |d d df   d	
      }t        ||       t	        j
                  |d d df   |d d df   d
      }t        j
                  |d d df   |d d df   d
      }t        ||       y )Nr  rT   rI   r  r   r   r   rG   T	equal_varF)r'   r   r0  r  r   r  r)   r   )r+   r  r  r  r  res4res5s          r/   rz  zTestTtest_ind.test_vs_nonmasked;  s   
		w))//"a(<7 wq!t}gadm<1wq!t}=d# wq!t}gadm$G1wq!t}4Hd#wq"1"u~wq!"u~AF2A212QGd# 2A212?d# wq!t}gadmtL1wq!t}Md#wq!t}gadmuM1wq!t}Nd#r1   c                 l   t         j                  j                  d       t        j                  t         j                  j                  dd      g dg dg      }t               5 }|j                  t        d       |d d df   |d d d	f   ft         j                  t         j                  gd
dgffD ]k  }t        j                  | \  }}t        |t         j                  t         j                  f       t        |t         j                  t         j                  f       m 	 d d d        y # 1 sw Y   y xY wr  )r'   r   r0  ra   r   r  r   r<  r   r   r)   r  r   r  s         r/   r  zTestTtest_ind.test_fully_maskedX  s    
		w//"))//!Q"7y)>TU  	8CJJ~'NO!!Q$-A766266*S#J79 8''.1"1rvvrvv&67"1rvvrvv&67	8	8 	8 	8r  c                     t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   |d d df         }d}t        ||d	       y r  )r'   r   r0  r  r)   r  r   r  s       r/   r  z$TestTtest_ind.test_result_attributesc  r  r1   c                     t        j                  g g       }t        t        j                  t        j
                  |                   y r  )r)   r  r   r'   r:  r;  r  s     r/   r  zTestTtest_ind.test_emptyk  r  r1   c                    t        j                  g dg d      \  }}t        t        j                  |      |ft        j
                  df       t               5 }|j                  t        d       t        j                  g dg d      \  }}t        |t        j                  t        j                  f       t        |t        j                  t        j                  f       d d d        t        j                  g dg dd      \  }}t        t        j                  |      |ft        j
                  df       t        t        j                  g dg dd      t        j                  t        j                  f       y # 1 sw Y   xY w)Nr8  r  r   r  Fr  )r)   r  r
   r'   r  r  r   r<  r   r   r   r  s       r/   r  z TestTtest_ind.test_zero_divisiono  s   	951bffQi^bffa[1  	4CJJ~'NO##Iy9DAqq266266"23q266266"23		4 	9F1bffQi^bffa[16++Iy6;=?Avvrvv>N	P	4 	4s   BE>>Fc                     d}t        j                  t        |      5  t        j                  g dg dd       d d d        y # 1 sw Y   y xY wr  r  r  s     r/   r  z"TestTtest_ind.test_bad_alternative~  r  r  r   r   r   c                 ,   t         j                  j                  dddd      }t         j                  j                  dddd      }t        j                  |||      \  }}t	        j                  |||      \  }}t        ||d	       t        ||d	       t        j                  |d
d t        j                  |dd t        j                  j                  |t        j                  |            }t        j                  j                  |t        j                  |            }t        j                  |j                         |j                         |      \  }}t	        j                  |||      \  }}t        ||d	       t        ||d	       y )NrS   rG   r[   r  r  r   r   rL   r9   r   rY   rZ   r]   )r   rQ  rR  r  r)   r   r'   r   ra   r   r;  r1  r  s           r/   r  zTestTtest_ind.test_alternative  s3   JJNNr3NGJJNNq#NF__Q{C
d1+>14e,4e, &&!B66"REEqrxx{3EEqrxx{3__Q\\^Q\\^1<>
d1+>14e,4e,r1   Nr2   r3   r4   rz  r  r  r  r  r  r   r   rQ  r  r5   r1   r/   r  r  :  sM    $:	86(PF
 [[]VY,?@- A-r1   r  c                   x    e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  ddd	g      d
        Zy)TestTtest_1sampc                    t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   d      }t        j
                  |d d df   d      }t        ||       y )Nr  rT   rI   r  r   r   )r'   r   r0  r  r   ttest_1sampr)   r   )r+   r  r  r  s       r/   rz  z!TestTtest_1samp.test_vs_nonmasked  sk    
		w))//"a(<7   A2!!'!Q$-3d#r1   c                 
   t         j                  j                  d       t        j                  t         j                  j                  d      g d      }t         j                  t         j                  f}t               5 }|j                  t        d       t         j                  t         j                  fdf|dffD ]/  }t        j                  | \  }}t        ||       t        ||       1 	 d d d        y # 1 sw Y   y xY w)Nr  rH   r  r]   r  r   )r'   r   r0  ra   r   r  r   r   r<  r   r)   r  r   )r+   r  r  r=  r  r  r   s          r/   r  z!TestTtest_1samp.test_fully_masked  s    
		w//"))//!"49EFFBFF#  	0CJJ~'NO66266*C07C.A 0))401"1h/"1h/0	0 	0 	0s    A/C99Dc                     t         j                  j                  d       t         j                  j                  dd      g dz   }t	        j
                  |d d df   d      }d}t        ||d	       y r  )r'   r   r0  r  r)   r  r   r  s       r/   r  z&TestTtest_1samp.test_result_attributes  sV    
		w))//"a(<7  A2,
C5r1   c                     t        j                  g d      }t        t        j                  t        j
                  |                   y )Nr   )r)   r  r   r'   r:  r;  r  s     r/   r  zTestTtest_1samp.test_empty  s-    !!"a(rxx~&'r1   c                    t        j                  g dd      \  }}t        t        j                  |      |ft        j
                  df       t               5 }|j                  t        d       t        j                  g dd      \  }}t        t        j                  |             t        |t        j                  t        j                  f       d d d        y # 1 sw Y   y xY w)Nr8  r   r   r  )r)   r  r
   r'   r  r  r   r<  r   r   r;  r   r   r  s       r/   r  z"TestTtest_1samp.test_zero_division  s    !!)Q/1bffQi^bffa[1  	4CJJ~'NO%%i3DAqBHHQK q266266"23		4 	4 	4s   A:CC#c                     d}t        j                  t        |      5  t        j                  g ddd       d d d        y # 1 sw Y   y xY w)Nr  r   r  rI   r  r   )r   r	   r   r)   r  r  s     r/   r  z$TestTtest_1samp.test_bad_alternative  s@    E]]:S1 	@y!?	@ 	@ 	@s   AAr   r   r   c                 <   t         j                  j                  dddd      }t        j                  |d|      \  }}t	        j                  |d|      \  }}t        ||d	       t        ||d	       t        j                  |d
d t        j                  j                  |t        j                  |            }t        j                  |j                         d|      \  }}t	        j                  |d|      \  }}t        ||d	       t        ||d	       y )NrS   rG   r[   r  r  r   r   rL   r9   r   r]   )r   rQ  rR  r  r)   r   r'   r   ra   r   r;  r1  )r+   r   r>   r  r  r  r   s          r/   r  z TestTtest_1samp.test_alternative  s    JJNNr3NG&&q!E
d!!!QK@14e,4e, &&!BEEqrxx{3&&q||~q3>@
d!!!QK@14e,4e,r1   Nr  r5   r1   r/   r  r    sL    $	06(4@
 [[]VY,?@- A-r1   r  c                       e Zd ZdZd Zy)TestDescribez
    Tests for mstats.describe.

    Note that there are also tests for `mstats.describe` in the
    class TestCompareWithStats.
    c                    t         j                  j                  g dg dgg dg dg      }t        j                  |d      }t        |j                  dd	g       |j                  \  }}t        |d
dg       t        |d	dg       t        |j                  ddg       t        |j                  ddg       t        |j                  ddg       t        |j                  ddg       y )N)r   r   rG   rH   rI   r   )r   r   r   r   rH   rH   )r   r   r   r   r   r   )r   r   r   r   r   r   r]   r   r   r   rI   r   rH   r   r   r   r   g       )r'   ra   r   r)   describer
   nobsminmaxmeanvarianceskewnessr   r  )r+   rO   r  aminamaxs        r/   test_basic_with_axisz!TestDescribe.test_basic_with_axis  s    EE 2 2 4%7%7%9  : +V[[1a&)]]
dTAq6"TAq6"V[[3*-V__sCj1V__sCj1$6r1   N)r2   r3   r4   r   r  r5   r1   r/   r  r    s    7r1   r  c                       e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(y')(TestCompareWithStatsa  
    Class to compare mstats results with stats results.

    It is in general assumed that scipy.stats is at a more mature stage than
    stats.mstats.  If a routine in mstats results in similar results like in
    scipy.stats, this is considered also as a proper validation of scipy.mstats
    routine.

    Different sample sizes are used for testing, as some problems between stats
    and mstats are dependent on sample size.

    Author: Alexander Loew

    NOTE that some tests fail. This might be caused by
    a) actual differences or bugs between stats and mstats
    b) numerical inaccuracies
    c) different definitions of routine interfaces

    These failures need to be checked. Current workaround is to have disabled these
    tests, but issuing reports on scipy-dev

    c                 
    g dS )z9 Returns list of sample sizes to be used for comparison. )r  r[   rS   r   r5   r  s    r/   get_nzTestCompareWithStats.get_n  s    !!r1   c                    t         j                  j                  d       t         j                  j                  |      }|t         j                  j                  |      z   }t        j                  t        |      dz   d      }t        j                  t        |      dz   d      }||dt        |       ||dt        |       |dkD  }t         j                  j                  ||      }t         j                  j                  ||      }||||fS )Nr  r   g 7yACr   g s?Cr]   )r'   r   r0  r  r  r\  ra   r(   )r+   r   r>   r   r  ymr^   s          r/   generate_xy_samplez'TestCompareWithStats.generate_xy_sample  s     			wIIOOA		""WWSVaZ&WWSVaZ&1SV1SVDyUU[[$['UU[[$['!R|r1   c                    t        j                  ||ft         j                        }t        j                  ||ft         j                        }t        j                  |dz   |ft         j                        }t        j                  |dz   |ft         j                        }t        |      D ]&  }| j	                  |      \  |d d |f<   |d d |f<   }}	( |d| |d|d d f<   |d| |d|d d f<   t         j
                  j                  |t        j                  |            }t         j
                  j                  |t        j                  |            }||||fS )Nr   r   r]   )r'   r  r   r   r  ra   r(   r;  )
r+   r   nxr>   r   r  r  r  rb  ra  s
             r/   generate_xy_sample2Dz)TestCompareWithStats.generate_xy_sample2D  s"   GGQGRVV$GGQGRVV$WWac2Y'WWac2Y'r 	BA'+'>'>q'A$AadGQq!tWb"	B qV1Q36
qV1Q36
UU[["((2,[/UU[["((2,[/!R|r1   c                 *   | j                         D ]  }| j                  |      \  }}}}t        j                  ||      }t        j                  j                  ||      }t        t        j                  |      t        j                  |              y r  )r  r  r   r!  r)   r   r'   r   )r+   r   r>   r   r  r  result1result2s           r/   test_linregressz$TestCompareWithStats.test_linregress-  su     	FA2215LAq"b&&q!,Gll--b"5GBJJw/G1DE		Fr1   c                 
   | j                         D ]p  }| j                  |      \  }}}}t        j                  ||      \  }}t        j                  j                  ||      \  }}	t        ||d       t        ||	d       r y )Nrg  r  )r  r  r   r   r)   r   
r+   r   r>   r   r  r  r   r   rmpms
             r/   r   z"TestCompareWithStats.test_pearsonr4  su     	3A2215LAq"b>>!Q'DAq\\**2r2FB2r22r2	3r1   c                    | j                         D ]n  }| j                  |      \  }}}}t        j                  ||      \  }}t        j                  j                  ||      \  }}	t        ||d       t        ||	d       p y Nrg  )r  r  r   r   r)   r   r  s
             r/   r   z#TestCompareWithStats.test_spearmanr=  su     	+A2215LAq"b??1a(DAq\\++B3FB2r*2r*	+r1   c                 p    t        j                  d      }t        t        t        j
                  ||d       y )Nr_   F)r'   r   r  r   r)   r   r   s     r/   !test_spearmanr_backcompat_usetiesz6TestCompareWithStats.test_spearmanr_backcompat_usetiesE  s'     IIaLj&"2"2Aq%@r1   c                    | j                         D ]  }| j                  |      \  }}}}t        j                  t	        |            }t        j
                  j                  t	        |            }t        ||d       t        j                  t	        |            }t        j
                  j                  t	        |            }t        ||d        y )NgvIh%<=r9   )r  r  r   r;   r  r)   r   r+   r   r>   r   r  r  r   r  s           r/   
test_gmeanzTestCompareWithStats.test_gmeanK  s     	/A2215LAq"bCF#A##CG,BAr.CF#A##CG,BAr.	/r1   c                    | j                         D ]  }| j                  |      \  }}}}t        j                  t	        |            }t        j
                  j                  t	        |            }t        ||d       t        j                  t	        |            }t        j
                  j                  t	        |            }t        ||d        y NrS   )r  r  r   rA   r  r)   r   r$  s           r/   
test_hmeanzTestCompareWithStats.test_hmeanV  s     		+A2215LAq"bCF#A##CG,B2r*CF#A##CG,B2r*		+r1   c                 ^   | j                         D ]  }| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        ||d       t        j                  |      }t        j                  j                  |      }t        ||d        y r'  )r  r  r   r  r)   r   r$  s           r/   	test_skewzTestCompareWithStats.test_skewb  s     		+A2215LAq"b

1A""2&B2r*

1A""2&B2r*		+r1   c                 ^   | j                         D ]  }| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        ||d       t        j                  |      }t        j                  j                  |      }t        ||d        y r'  )r  r  r   r  r)   r   r$  s           r/   r  z TestCompareWithStats.test_momentn  s     		+A2215LAq"bQA$$R(B2r*QA$$R(B2r*		+r1   c                    | j                         D ]7  }| j                  |      \  }}}}||j                         z
  |j                         z  }||j                         z
  |j                         z  }t	        t        j                  |      |d       t	        t        j                  |      |d       t	        t        j                  |      t
        j                  j                  |dt        |             d       t	        t        j                  |      t
        j                  j                  |dt        |             d       : y )N绽|=r9   r   )	r  r  r  r  r   r   r  r)   r\  )r+   r   r>   r   r  r  zxzys           r/   r  z TestCompareWithStats.test_zscorez  s     	(A2215LAq"b affh,!%%')Baffh,!%%')B ELLORe<ELLORe< ELLOU\\-@-@Ac!f-N!&(ELLOU\\-@-@Ac!f-N!&(	(r1   c                 ^   | j                         D ]  }| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        ||d       t        j                  |      }t        j                  j                  |      }t        ||d        y r'  )r  r  r   r  r)   r   r$  s           r/   r  z"TestCompareWithStats.test_kurtosis  s     	+A2215LAq"bq!A&&r*B2r*q!A&&r*B2r*	+r1   c           	         t        j                  d      j                  dd      }t         j                  j	                  |      }t        j                  |d      }t
        j                  j                  |d      }t        |dd       t        |dd       | j                         D ])  }| j                  |      \  }}}}	t        t
        j                  j                  |d d	
      t        j                  |d d	
      d       t        t
        j                  j                  |	d d	
      t        j                  |d d	
      d       t        t
        j                  j                  |d d
      t        j                  |d d
      d       t        t
        j                  j                  |	d d
      t        j                  |d d
      d       , y )NrT   r   rI   r   r  g'e@gh㈵>r  r   )r%   r     r  )r'   r   r^  ra   r(   r   r  r)   r   r  r  r   )
r+   rO   amr   r  r   r>   r   r  r  s
             r/   r  zTestCompareWithStats.test_sem  si   IIbM!!!Q'UU[[^IIaa \\bq):D1JT2 		MA2215LAq"b 0 0$Q 0 G %		!$Q ?M 0 0$Q 0 G %		!$Q ?M 0 0$Q 0 G %		!$Q ?M 0 0$Q 0 G %		!$Q ?M		Mr1   c           	      ^   | j                         D ]  }| j                  |      \  }}}}t        j                  |d      }t        j                  j                  |d      }t        d      D ]<  }t        t        j                  ||         t        j                  ||         d       >  y )Nr   r  r_   r\  r  )	r  r  r   r  r)   r   r   r'   r   )	r+   r   r>   r   r  r  r   r  iis	            r/   test_describez"TestCompareWithStats.test_describe  s     	0A2215LAq"bqq)A&&r&2BAh 0#BJJqu$5$&JJr"v$6,.00		0r1   c                 t    t        j                  t        j                  d            }d}t	        ||d       y )Nr   )r  r  r  r  r	  r  Tr   )r)   r  r'   r   r   )r+   r  r   s      r/   test_describe_result_attributesz4TestCompareWithStats.test_describe_result_attributes  s+    1."
FJ48r1   c                     | j                         D ]X  }| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        ||       Z y r  )r  r  r   r   r)   r   r$  s           r/   test_rankdataz"TestCompareWithStats.test_rankdata  s[     	#A2215LAq"bq!A&&q)BAr"		#r1   c                 N   | j                         D ]  }| j                  |      \  }}}}t        t        j                  |      t        j
                  j	                  |      d       t        t        j                  |      t        j
                  j	                  |      d        y r   )r  r  r   r   tmeanr)   r+   r   r>   r   r  r  s         r/   
test_tmeanzTestCompareWithStats.test_tmean  sw     	KA2215LAq"bAu||/A/A"/ErJAu||/A/A"/ErJ	Kr1   c                 ^   | j                         D ]  }| j                  |      \  }}}}t        t        j                  |d      t        j
                  j	                  |d      d       t        t        j                  |d      t        j
                  j	                  |d      d       t        t        j                  |d      t        j
                  j	                  |d      d       t        t        j                  |d      t        j
                  j	                  |d      d        y )Nr   rS   r   )
upperlimit)r  r  r   r   tmaxr)   r=  s         r/   	test_tmaxzTestCompareWithStats.test_tmax  s     
	JA2215LAq"b

1R 0 % 1 1"R 8">

1R 0 % 1 1"R 8">  

1 < % 1 1" 1 DbJ

1 < % 1 1" 1 DbJ
	Jr1   c                 R   | j                         D ]  }| j                  |      \  }}}}t        t        j                  |      t        j
                  j	                  |             t        t        j                  |      t        j
                  j	                  |             t        t        j                  |d      t        j
                  j	                  |d      d       t        t        j                  |d      t        j
                  j	                  |d      d        y )Nr   )
lowerlimitrS   )r  r  r
   r   tminr)   r   r=  s         r/   	test_tminzTestCompareWithStats.test_tmin  s     	KA2215LAq"bA(9(9"(=>A(9(9"(=>

1 = % 1 1" 1 ErK

1 = % 1 1" 1 ErK	Kr1   c           	          | j                         D ]h  }| j                  |      \  }}}}t        j                  ||      }t        j                  j                  ||      }t        ||dt        |       d       j y )Nr   r-  r  )r  r  r   r  r)   r   r\  )r+   r   r>   r   r  r  r  zms           r/   r  zTestCompareWithStats.test_zmap  sk     	9A2215LAq"b

1a A""2r*BAr!CF|%8		9r1   c                 R   | j                         D ]  }| j                  |      \  }}}}t        t        j                  |      t        j
                  j	                  |      d       t        t        j                  |      t        j
                  j	                  |      d        y Nr\  r  )r  r  r   r   r  r)   r=  s         r/   r  z#TestCompareWithStats.test_variation  s}     	,A2215LAq"b 2ELL4J4J24N(*, 2ELL4J4J24N(*,		,r1   c                 R   | j                         D ]  }| j                  |      \  }}}}t        t        j                  |      t        j
                  j	                  |      d       t        t        j                  |      t        j
                  j	                  |      d        y rJ  )r  r  r   r   tvarr)   r=  s         r/   	test_tvarzTestCompareWithStats.test_tvar  s{     	,A2215LAq"b

1u||/@/@/D(*,

1u||/@/@/D(*,		,r1   c                    t        j                  d      }t        j                  |d      }t        j                  j                  |d      }t        t        j                  |      |j                  |j                             y )NrT   r   )	r'   r   r   rh  r)   r   r  r,   r^   )r+   rO   r  bms       r/   test_trimbothz"TestCompareWithStats.test_trimboth  sV    IIbMNN1c"\\""1c*
BGGRWWH$56r1   c                    | j                         D ]  }| j                  |      \  }}}}t        t        j                  |      t        j
                  j	                  |      d       t        t        j                  |      t        j
                  j	                  |      d       t        t        j                  |d      t        j
                  j	                  |d      d        y )Nrg  r  )r  r   )rY  )r  r  r   r   tsemr)   r=  s         r/   	test_tsemzTestCompareWithStats.test_tsem  s     	,A2215LAq"b

1u||/@/@/D(*,

1u||/@/@/D(*,

1Y ? % 1 1"Y 1 G(*,	,r1   c                     | j                         D ]^  }|dkD  s	| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        ||       ` y )Nr   )r  r  r   rs  r)   r   r$  s           r/   test_skewtestz"TestCompareWithStats.test_skewtest	  sb     	'A1u#66q91b"NN1%\\**2.2&	'r1   c                 ~    t        j                  d      dz  }t        j                  |      }d}t	        ||d       y r  )r'   r(   r)   rs  r   r  s       r/   test_skewtest_result_attributesz4TestCompareWithStats.test_skewtest_result_attributes  s5    HH+,a/ooa ,
C5r1   c                    t         j                  j                  d      dz  }t        j                  |      }t        j                  j                  |      }t        t        j                  |      t        j                  |             y )N)rT   rG   g      4@)r'   r   r   rs  r)   r   r   )r+   r>   r   r  s       r/   test_skewtest_2D_notmaskedz/TestCompareWithStats.test_skewtest_2D_notmasked  sW    IIW%+NN1\\""1%

1rzz"~6r1   c                 <   d}| j                         D ]  }|dkD  s	| j                  ||      \  }}}}t        j                  |      }t        j                  j                  |      }t        |d   d   |d   d   d       t        |d   d   |d   d   d        y )NrG   r   r   rL   r9   r   )r  r  r   rs  r)   r   )	r+   r  r   r>   r   r  r  r   r  s	            r/   test_skewtest_2D_WithMaskz.TestCompareWithStats.test_skewtest_2D_WithMask  s     	?A1u#88B?1b"NN1%\\**2.!QAq>!QAq>	?r1   c           	         t        j                  d      5  t               5 }|j                  t        d       | j                         D ]  }|dkD  s	| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        t        j                  |      t        j                  |              	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr  )overz!kurtosistest only valid for n>=20r   )r'   rm   r   r<  UserWarningr  r  r   rr  r)   r   r   )	r+   r=  r   r>   r   r  r  r   r  s	            r/   test_normaltestz$TestCompareWithStats.test_normaltest*  s    [[g& 	C(9(; 	CsJJ{$GHZZ\ Cq5#'#:#:1#=LAq"b((+A004B#BJJqM2::b>BC	C 	C 	C 	C 	C 	Cs)   C./C"A>C"C."C+	'C..C7c                 z   t        j                  g d      j                  d      }t        j                  g d      j                  d      }|dk(  }t         j                  j	                  ||      }|j                         |j                         }}t        j                  |      }t        j                  j                  |      }t        ||       t        ||       t        ||       t        j                  j                  g       \  }	}
t        |
t        j                  dt         j                               y )N)r   r   rG   rG   rH   rH   rH   rI   rI   rI   rI   r  )r   r   rG   rG   rH   rH   rH   rI   rI   rI   rI   r   r   r   r   r  r]   r   r   )r'   r   rt   ra   r(   r  r   find_repeatsr)   r
   intp)r+   r>   tmpr^   r  x_origxm_origr   r  rU  r  s              r/   test_find_repeatsz&TestCompareWithStats.test_find_repeats4  s    JJ89@@IjjFGNNwWr	UU[[4[(&&(BGGIq!\\&&r*QQR! LL--b1	6VRXXarww78r1   c                    | j                         D ]v  }| j                  |      \  }}}}t        j                  ||      }t        j                  j                  ||      }t        |d   |d   d       t        |d   |d   d       x y )Nr   rS   r  r   r   )r  r  r   r  r)   r   r$  s           r/   r  z$TestCompareWithStats.test_kendalltauG  s     	8A2215LAq"b  A&A((R0B!beR8!beQ7	8r1   c           	         | j                         D ]n  }| j                  |      \  }}}}t        j                  |      }t        j                  j                  |      }t        |j                  |dt        |              p y )Nr   )r  r  r   r  r)   r   r%  r\  r$  s           r/   r  z)TestCompareWithStats.test_obrientransformO  sk     	3A2215LAq"b%%a(A--b1BR#a&\2		3r1   c           
         dD ]N  }t               5  dD ]1  }| j                         D ]  }| j                  |      \  }}}}t        j                  |t        j
                  j                  ||      }t        j                  j	                  |t        j
                  j                  ||      }	t        t        j                  |      t        j                  |	             t        j                  |t        j
                  j                  ||      }
t        t        j                  |      t        j                  |
              4 	 ddd       Q y# 1 sw Y   ]xY w)zFChecks that mstats.ks_1samp and stats.ks_1samp agree on masked arrays.autor*  asympr   r   r,  r   r  N)r   r  r  r   ks_1samprQ  cdfr)   r
   r'   r   r+   r  r   r   r>   r   r  r  r  r  r  s              r/   test_ks_1sampz"TestCompareWithStats.test_ks_1sampV  s   . 	ID"$ I#C 
IK!ZZ\ 	I'+'>'>q'A1b"$~~a:ED R$||44RALSW  5  Y$RZZ%5rzz$7GH$~~b%**..:ED R$RZZ%5rzz$7GH	I
II I	II Is   D8EE 	c           
      .   dD ]  }t               5  dD ]  }| j                         D ]  }| j                  |      \  }}}}t        j                  |d||      }t        j
                  j	                  |d||      }	t        t        j                  |      t        j                  |	             t        j                  |d||      }
t        t        j                  |      t        j                  |
               	 ddd        y# 1 sw Y   xY w)z]
        Checks that 1-sample mstats.kstest and stats.kstest agree on masked arrays.
        rj  rm  rQ  rn  N)	r   r  r  r   kstestr)   r
   r'   r   rq  s              r/   test_kstest_1sampz&TestCompareWithStats.test_kstest_1sampf  s    / 	ID"$ I#C 
IK!ZZ\ 	I'+'>'>q'A1b"$||Av8C$ P$||222v?JQU  3  W$RZZ%5rzz$7GH$||B8C$ P$RZZ%5rzz$7GH	I
II I	II Is   C,D

D	c           
      f   dD ]  }t               5 }|dv rd}|j                  t        |       dD ]  }| j                         D ]  }| j	                  |      \  }}}}	t        j                  ||||      }
t
        j                  j                  ||	||      }t        t        j                  |
      t        j                  |             t        j                  ||||      }t        t        j                  |
      t        j                  |               	 ddd       ! y# 1 sw Y   -xY w)zVChecks that mstats.ks_2samp and stats.ks_2samp agree on masked arrays.
        gh-8431rj  rk  r*  )ks_2samp: Exact calculation unsuccessful.rm  rn  N)r   r<  r   r  r  r   r  r)   r
   r'   r   r+   r  r=  messager   r   r>   r   r  r  r  r  r  s                r/   r  z"TestCompareWithStats.test_ks_2sampx  s$    / 	ID"$ I,,IGJJ~w7#C 
IK!ZZ\ 	I'+'>'>q'A1b"$~~a:ED R$||44RALSW  5  Y$RZZ%5rzz$7GH$~~b!:ED R$RZZ%5rzz$7GH	I
I	I I	II I   DD&&D0	c           
      f   dD ]  }t               5 }|dv rd}|j                  t        |       dD ]  }| j                         D ]  }| j	                  |      \  }}}}	t        j                  ||||      }
t
        j                  j                  ||	||      }t        t        j                  |
      t        j                  |             t        j                  ||||      }t        t        j                  |
      t        j                  |               	 ddd       ! y# 1 sw Y   -xY w)z]
        Checks that 2-sample mstats.kstest and stats.kstest agree on masked arrays.
        rj  rw  rx  rm  rn  N)r   r<  r   r  r  r   rt  r)   r
   r'   r   ry  s                r/   test_kstest_2sampz&TestCompareWithStats.test_kstest_2samp  s$    / 	ID"$ I,,IGJJ~w7#C 
IK!ZZ\ 	I'+'>'>q'A1b"$||Aq8C$ P$||222r?JQU  3  W$RZZ%5rzz$7GH$||B8C$ P$RZZ%5rzz$7GH	I
I	I I	II Ir{  N))r2   r3   r4   r   r  r  r  r  r   r   r"  r%  r(  r*  r  r  r  r  r6  r8  r:  r>  rB  rF  r  r  rM  rP  rS  rU  rW  rY  r[  r_  rf  r  r  rr  ru  r  r}  r5   r1   r/   r  r    s    ,"F3+A	/
+
+
+($	+M*09#KJ	K9,,7	,'67	?C9&83I I$I(Ir1   r  c                      e Zd Zej                  j                  dddddej                  dddddddddej                  g      Zej                  j                  ddddej                  dddddddg      ZdZ	d Z
d Zd	 Zd
 Zd Zd Zd Zy)TestBrunnerMunzelr   rG   rI   rH   r   rg  c                    t        j                  | j                  | j                  d      \  }}t        j                  | j                  | j                  d      \  }}t        j                  | j                  | j                  d      \  }}t        j                  | j                  | j                  d      \  }}t	        ||| j
                         t	        ||| j
                         t        ||k7         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         y )	Nr   r   r   r  |	&	@|	&	gҏGg?g@-pL?)r)   brunnermunzelXYr   significantr   )	r+   u1r   u2r   u3r  u4p4s	            r/   test_brunnermunzel_one_sidedz.TestBrunnerMunzel.test_brunnermunzel_one_sided  s6   %%dffdff&IB%%dffdff)LB%%dffdff)LB%%dffdff&IBBD,<,<=BD,<,<=bB 2$($4$4	6B 3$($4$4	6B 2$($4$4	6B 3$($4$4	6B 5$($4$4	6B 3$($4$4	6r1   c                    t        j                  | j                  | j                  d      \  }}t        j                  | j                  | j                  d      \  }}t	        ||| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         y )Nr,  r   r  r  r   ҏGw?r)   r  r  r  r   r  r+   r  r   r  r   s        r/   test_brunnermunzel_two_sidedz.TestBrunnerMunzel.test_brunnermunzel_two_sided  s    %%dffdff+NB%%dffdff+NBBD,<,<=B 2$($4$4	6B 3$($4$4	6B 5$($4$4	6r1   c                 x   t        j                  | j                  | j                        \  }}t        j                  | j                  | j                        \  }}t	        ||| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         y )Nr  r  r  r  r  r  s        r/   test_brunnermunzel_defaultz,TestBrunnerMunzel.test_brunnermunzel_default  s    %%dffdff5B%%dffdff5BBD,<,<=B 2$($4$4	6B 3$($4$4	6B 5$($4$4	6r1   c                     d}d}t        |dv       t        t        t        j                  | j
                  | j                  ||       y )Nr   r  r+  r   r  r   r)   r  r  r  r+   r   distributions      r/   $test_brunnermunzel_alternative_errorz6TestBrunnerMunzel.test_brunnermunzel_alternative_error  sA    #CCDj**ffff!"	$r1   c                    t        j                  | j                  | j                  d      \  }}t        j                  | j                  | j                  d      \  }}t	        ||| j
                         t	        |d| j
                         t	        |d| j
                         t	        |d| j
                         y )Nnormal)r  r  r  r  g "H[?r  r  s        r/   $test_brunnermunzel_distribution_normz6TestBrunnerMunzel.test_brunnermunzel_distribution_norm  s    %%dffdff8LB%%dffdff8LBBD,<,<=B 2$($4$4	6B 3$($4$4	6B 5$($4$4	6r1   c                     d}d}t        |dv       t        t        t        j                  | j
                  | j                  ||       y )Nr,  r   )r  r  r  r  s      r/   %test_brunnermunzel_distribution_errorz7TestBrunnerMunzel.test_brunnermunzel_distribution_error  s@    !?23j**ffff!"	$r1   c                 *   t        j                  | j                  g       \  }}t        j                  g | j                        \  }}t        j                  g g       \  }}t	        t        j                  |             t	        t        j                  |             t	        t        j                  |             t	        t        j                  |             t	        t        j                  |             t	        t        j                  |             y r  )r)   r  r  r  r   r'   r;  )r+   r  r   r  r   r  r  s          r/   test_brunnermunzel_empty_imputz0TestBrunnerMunzel.test_brunnermunzel_empty_imput  s    %%dffb1B%%b$&&1B%%b"-Br1   N)r2   r3   r4   r'   ra   masked_invalidr   r  r  r  r  r  r  r  r  r  r  r5   r1   r/   r  r    s    
aAq!RVVQAq!Q266; 	<A
aAq"&&!Q1aAFGAK6.66	$	6	$
r1   r  )NNgHz>)=r   r   rN  numpyr'   r   numpy.mara   r   r   scipy.stats.mstatsr   r)   scipycommon_testsr   r   r	   r  numpy.ma.testutilsr
   r   r   r   r   r   r   numpy.testingr   scipy.statsr   r   r?   rB   rD   r   r   r   rT  r  r  r  r  r  r'  r*  r,  rV  rX  ri  rm  ro  r  r  r  r  r  r  r  r  r  r5   r1   r/   <module>r     sw        # # #  -  *E E E , %- -*!!93 93x!3 !3H9 9,u6 u6p	u: u:pV/ V/r& &RA A*4 4@-9 -9`F, J1 J1Z8:.8*E\8 \8~6 6.2 .2b6 6Y- Y-x\- \-~@- @-F7 70kI kI\c cr1   