o
    EbM                  
   @   s  d dl Zd dlZdd Zdd Zi dddgdg dd	g d
dg ddg ddg ddg ddg ddg ddg ddg ddg ddg ddg d d!g d"d#g d$d%g d&g d'g d(g d)g d*g d+g d,g d-g d.d/ZdS )0    Nc           
      C   s   i }t d| d D ]E}g }t|d }||d  d }tjd|dD ]}|d dkr>t|| }|| |||  q#tj|dd\}}	t|	||< q	|S )aY  
    Generate counts of the Wilcoxon ranksum statistic r_plus (sum of
    ranks of positive differences). For fixed n, simulate all possible states
    {0, 1}**n and compute the sum of the ranks over the indices that are equal
    to one (positive differences).
    Return a dictionary that maps n=3,...N to the corresponding list of counts
          r   r   repeatr   T)Zreturn_counts)	rangenparange	itertoolsproductsumappenduniquelist)
Nres_dictnresranksMxrank_sum_Zcnt r   </usr/lib/python3/dist-packages/scipy/stats/_wilcoxon_data.py_generate_wilcoxon_exact_table   s   
r   c                 C   s   i }t d| d D ]H}t|d }t||d  d }tj|d td}tjd|dD ]}|d dkrEtt|| }||  d7  < q,t|t	| ||< q	|S )zo
    Same functionality as _generate_wilcoxon_exact_table, but about 20% faster,
    but harder to follow.
    r   r   )Zdtyper   r   r   )
r   r   r	   intZzerosr
   r   r   r   Zflip)r   r   r   r   r   r   r   r   r   r   r   #_generate_wilcoxon_exact_table_fast%   s   r   r   r   )r   r   r   r      )r   r   r   r   r   r   r      )r   r   r   r   r   r   r   r   r   r   r      )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      )r   r   r   r   r   r   r   r   r   r    r    r    r    r   r   r   r   r   r   r   r   r      )r   r   r   r   r   r   r   r    r    r!   r"   r"      r#   r#   r#   r#   r"   r"   r!   r    r    r   r   r   r   r   r   r   r#   )%r   r   r   r   r   r   r   r    r!   r"   r#   	   
            r(   r(      r(   r(   r(   r'   r&   r%   r$   r#   r"   r!   r    r   r   r   r   r   r   r   r$   ).r   r   r   r   r   r   r   r    r!   r#   r$   r%   r'   r(                  r.         r0   r0   r0   r/   r.   r.   r-   r,   r+   r*   r(   r'   r%   r$   r#   r!   r    r   r   r   r   r   r   r   r%   )8r   r   r   r   r   r   r   r    r!   r#   r%   r&   r(   r*   r+      r/               !   #   $   &   '   r:   (   r;   r:   r:   r9   r8   r7   r6   r5   r4   r3   r2   r/   r1   r+   r*   r(   r&   r%   r#   r!   r    r   r   r   r   r   r   r   r&   )Cr   r   r   r   r   r   r   r    r!   r#   r%   r'   r)      r-   r/             r7   r:   +   .   1   5   8   ;   >   @   B   D   E   rJ   F   rJ   rJ   rI   rH   rG   rF   rE   rD   rC   rB   rA   r@   r:   r7   r?   r>   r=   r/   r-   r<   r)   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r'   )Or   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r+   r1   r2   r3   r5   r8   r;   -   3   rD   =   C   H   N   T   Y   ^   d   h   l   q   s   v   y   z   {   |   r]   r\   r[   rZ   rY   rX   rW   rV   rU   rT   rS   rR   rQ   rP   rO   rN   rD   rM   rL   r;   r8   r5   r3   r2   r1   r+   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r(   )\r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r.   r=   r4   r6   r:   ,   2   9   rG   G   O   W   _   rV   rX   r[                                                   ru   rt   rs   rr   rq   rp   ro   rn   rm   rl   rk   rj   ri   rh   rg   rf   r[   rX   rV   re   rd   rc   rb   rG   ra   r`   r_   r:   r6   r4   r=   r.   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r)   )jr   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/         r7   )   /   6   rF   rK   rc   rS   c   n   r\                  ro                !  .  ;  H  S  ^  i  q  y            r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ro   r   r   r   r~   r}   r\   r|   r{   rS   rc   rK   rF   rz   ry   rx   r7   rw   rv   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r*   )yr   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r5   r8   r@   rB   ra   rH   K   U   a   m   r\                            4  J  a  z            	    4  J  ]  p                    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   r   r   r   r   r   r   r   r\   r   r   r   r   rH   ra   rB   r@   r8   r5   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r<   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   %   r_   rM   rE   rJ   rc   Z   g   u            r              2  N  m  r           <  b          (  P  w          1  Q  q              
      !  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   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rc   rJ   rE   rM   r_   r   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   r+   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rL   4   rN   rb   R   rT   rW   r]   rg                    7  W  r         r   L  }  r       X      r   M  r       V         c      $  `      	  <  m        	  "	  ;	  M	  [	  f	  j	  r  r  r  r  r  r  r  r  r  r  r
  r	  r  r  r  r  r  r  r  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rg   r]   rW   rT   r   rb   rN   r   rL   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rC   rF   I   rR   r   p      r~   r   rm           r   R  w  r       .  e      r   a      E      I      j    :          a	  	  F
  
  ,      {    O      x    *  {      N          +  B  S  Y  rM  rL  rK  rJ  rI  rH  rG  rF  rE  rD  rC  rB  rA  r@  r?  r>  r=  r<  r;  r:  r9  r8  r7  r6  r5  r4  r3  r2  r1  r0  r/  r.  r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r   r"  r!  r   r  r  r  r   r  r  r   r  r  r  rm   r   r~   r  r  r   rR   r  rF   rC   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   ?   J   V   r{   rY   r      r         r   r   @  h        )  c      /  ~    )      U    :    6    G    q	  
  
  U      c  r>  r@    P        ]  !      d        >      .    W    ^    >      D              i   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r~  r}  r|  r{  rz  ry  rx  rw  rv  ru  rt  rs  rr  r@  r>  rq  rp  ro  rn  rm  rl  rk  rj  ri  rh  rg  rf  re  rd  rc  rb  ra  r`  r_  r^  r]  r\  r[  rZ  rY  rX  rW  rV  rU  rT  r   r   rS  rR  r   rQ  r   rY   r{   rP  rO  rN  rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   r   rd   e   r            r   r   r   )  O  r         O  r     &  y    4                S    	  l
  1  ro                      *  ]        a      K!  "  #  @%  &  '  *)  p*  +  ,  $.  Q/  w0  1  2  3  4  5  i6  67  7  8  C9  9  M:  :  ;  P;  ;  ;  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  ro  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r   r  r  r   r   r   r  r  r  r   r  rd   r   rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   L   X   f   w   r   ri   rl   r        3  [  r     r   r  o  r     \            
    <    r  Z	  %
  
            3  p      z    u      _  !   !  #  %  '  )  +  -  /  2  G4  6  8  ;  I=  ?  A  *D  vF  H  J  ?M  tO  Q  S  U  W  Y  [  ]  _  Da  b  zd  e  Ng  h  i  j  k  l  Vm  m  on  n  o  ,o  r1  r0  r/  r.  r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r	  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r  r   r  r  r  r  r   rl   ri   r   r  r  r  r  rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   r  rS   r   x      r              r   e        D      -      _    Y      &      h	  G
  4  1  A  b      5    '    l  3          /"  i$  &  r  +  L.  1  3  6  9  <  ?  2C  F  I  rM  Q  T  YX  \  _  c  g  k  o  s  w  {    陃  镇  鉋  y  \  0    鰞  P    V  鯬          鮻  A            M          J      r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r~  r}  r|  r{  rz  ry  rx  rw  rv  ru  rt  rs  rr  rq  rp  ro  rn  rm  rl  rk  rj  ri  rh  rg  rf  re  rd  rc  rb  ra  r`  r_  r^  r  r]  r\  r[  rZ  rY  rX  rW  rV  rU  rT  rS  rR  rQ  rP  rO  rN  rM  rL  rK  rJ  rI  rH  rG  rF  rE  rD  rC  rB  rA  r@  r?  r>  r=  r<  r;  r:  r9  r8  r   r7  r6  r5  r4  r   r3  r2  r   rS   r  rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   (  r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   r  rS   rV   r[   rg      r   rr   r     A  r         V      M            A      e  :	  !
    &  F  |    )    8              _"  $  '  Q*  ?-  P0  3  6  i:  >  A  E  J  TN  R  cW  )\  a  (f  ek  p  Lv  {  ǁ  鸇  ͍    N  齠  B    隴  b  >  +  !  "  ,  7  D  S  W  U J +   Y# ) F0 6 < B TH M GS lX Y] b zf j n 6r u x _{ }  Á @ l ? 龅 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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   rr   r   r  rg   r[   rV   rS   r  rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   (-  r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   r  rS   rV   r\         rm           F  s      r   r       h    C    M      A      	  
      <        D        6    
!  #  |&  y)  ,  /  3  87  %;  K?  C  5H  M  	R  LW  \  b  h  n  Lu  |    [    鶙  ġ    鱲  醻        i      R    (! , 7 C |O k[ }g s  H 鳘   闱    P      7+ 6 A L mW a k u & ?  < & 阨 靯 2 D     < =   
  i, r{  rz  ry  rx  rw  rv  ru  rt  rs  rr  rq  rp  ro  rn  rm  rl  rk  rj  ri  rh  rg  rf  re  rd  rc  rb  ra  r`  r_  r^  r]  r\  r[  rZ  rY  rX  rW  rV  rU  rT  rS  rR  rQ  rP  rO  rN  rM  rL  rK  rJ  rI  rH  rG  rF  rE  rD  rC  rB  rA  r@  r?  r>  r=  r<  r;  r:  r9  r8  r7  r6  r5  r4  r3  r2  r1  r0  r/  r.  r-  r,  r+  r*  r)  r(  r'  r&  r%  r$  r#  r"  r!  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r   r
  r	  r  r  r  r  r  rm   r  r  r\   rV   rS   r  rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   (F  r   r   r   r   r   r   r   r    r!   r#   r%   r'   r*   r,   r/   r3   r?   r9   rA   rz   rG   r  rS   rV   r\            rt      r   r   x      (  q      r^    c    {        _  F	  @
  P  y        &          %    =!  $  '  L*  -  b1  C5  e9  =  fB  QG  L  Q  W  ]  Id  k  #r  y  d  鐉      b    A      -    >      & 5 C IS c 1s ̃ ͔ 4  9     * > [S *h 5} t  钽 Z J N b + A W m  љ 隯 2    , n- KA T g Wz c   ?    C A z  ) w3 < D K bR W \ ;` c d e r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r^  r  r  r  r  r  r  r  r   r   r  rt   r~  r}  r|  r\   rV   rS   r  rG   rz   rA   r9   r?   r3   r/   r,   r*   r'   r%   r#   r!   r    r   r   r   r   r   r   r   )r,   r-   r1   r.   r/   r0   r2   r=   )Znumpyr   r
   r   r   ZCOUNTSr   r   r   r   <module>   sb    		 '/9E 