
    ^j+                         d dl Zd dlmZ ddlmZmZmZ ddlm	Z	 ddl
mZ ddlmZ d dlmZ d d	lmZmZmZmZmZmZ d dlmc mZ  G d
 d      Zd ZddZd Z	 	 ddZy)    N)stats   )_get_pvalue	_rankdata_SimpleNormal)
_morestats)_broadcast_arrays)_get_wilcoxon_distr)_get_nan)array_namespace
xp_promotexp_sizeis_jax	is_marray_count_nonmaskedc                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)WilcoxonDistributionc                     t        j                  |      j                  t        d      }|| _        t        j
                  |      D ci c]  }|t        |       c}| _        y c c}w )NFcopy)npasarrayastypeintnuniquer
   _dists)selfr   nis      N/opt/ringagent/.cad-venv/lib/python3.12/site-packages/scipy/stats/_wilcoxon.py__init__zWilcoxonDistribution.__init__   sN    JJqM  5 1=?YYq\Jrr.r22JJs   	A%c                 L    | j                   |   }|d |dz    j                         S Nr   r   sumr   kr   pmfss       r    _cdf1zWilcoxonDistribution._cdf1   s(    {{1~FQU|!!    c                 \     t        j                  | j                  t        g      ||      S N)otypes)r   	vectorizer)   floatr   r'   r   s      r    _cdfzWilcoxonDistribution._cdf   s"    7r||DJJw71==r*   c                 F    | j                   |   }||d  j                         S )Nr$   r&   s       r    _sf1zWilcoxonDistribution._sf1   s!    {{1~ABx||~r*   c                 \     t        j                  | j                  t        g      ||      S r,   )r   r.   r3   r/   r0   s      r    _sfzWilcoxonDistribution._sf    s"    6r||DIIug6q!<<r*   c                 @    | j                   | j                   dz   z  dz  S )Nr      )r   )r   s    r    meanzWilcoxonDistribution.mean#   s    vv!$q((r*   c                     t        j                  |      j                  t        d      }| j	                         }t        j
                  |j                  t         j                        }|||fS )NFr   dtype)r   r   r   r   r8   emptyshapefloat64r   r'   mnouts       r    _prepzWilcoxonDistribution._prep&   sN    JJqM  5 1YY[hhqwwbjj1"czr*   c                       j                  |      \  }}}t        j                  ||k  | j                  f j                   fd      d   S )Nc                 4    dj                  | dz   |      z
  S r#   )r5   r'   r   r   s     r    <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>1   s    TXXac1-- r*    )rB   xpxapply_wherer   r1   r?   s   `   r    cdfzWilcoxonDistribution.cdf,   sL    ZZ]
2sGa[II-/ 023 	3r*   c                       j                  |      \  }}}t        j                  ||k  | j                  f j                   fd      d   S )Nc                 4    dj                  | dz
  |      z
  S r#   )r1   rE   s     r    rF   z)WilcoxonDistribution.sf.<locals>.<lambda>8   s    TYYqsA.. r*   rG   )rB   rH   rI   r   r5   r?   s   `   r    sfzWilcoxonDistribution.sf3   sL    ZZ]
2sGa[HH.0 134 	4r*   N)__name__
__module____qualname__r!   r)   r1   r3   r5   r8   rB   rJ   rM   rG   r*   r    r   r      s0    K
">=)34r*   r   c           	      &   t        | |      }t        | |d|      \  } }t        j                  |      d   }d}t        j                  |j
                  t        j                        r|j                  dk7  rt        |      t        |      }d}t        t        dd       xs t        j                  j                  }		 || }
nt        | |f||      \  } }| |z
  }
|j                  |
|d	      }
d
}|*| j                  |   |j                  |   k7  rt        |      d}|j!                  |
j
                  d      st        |      t#        |      j%                         }h d}d| d}||vrt        |      ddh}d| d}||vrt        |      t#        |      j%                         }h d}d| d}||vrt        |      t'        |t(        j*                        sh d}d| d}||vrt        |      |dk(  rdnd}t-        |      rt#        |      dv rd}t        |      t/        |      r|dk7  s|dk7  rd}t        |      |j1                  |
dk(  d       }|dk(  r|
j                  d	   dkD  rd}|
||||||||f	S # |	$ r} |	|      |d }~ww xY w)NT)force_floatingxprG   z`axis` must be an integer.r   z<`axis` must be compatible with the shape(s) of `x` (and `y`)	AxisError)axisrS   z3`x` and `y` must have the same length along `axis`.z<`x` (and `y`, if provided) must be an array of real numbers.zreal floating>   prattwilcoxzsplitz`zero_method` must be one of .Fz`correction` must be one of >   lessgreater	two-sidedz`alternative` must be one of >   autoexact
asymptoticz`method` must be one of z- or an instance of `stats.PermutationMethod`.r`   >   r^   r_   zWhen using `wilcoxon` with `jax.numpy` arrays, `method` must be either 'asymptotic' or an instance of `stats.PermutationMethod`.rY   zMOnly `method='asymptotic'`/`zero_method='zsplit'` is compatible with MArrays.rU   r^   2   )r   r   r   r   
issubdtyper;   integerndim
ValueErrorr   getattr
exceptionsrT   r	   moveaxisr=   isdtypestrlower
isinstancer   PermutationMethodr   r   count_nonzero)xyzero_method
correctionalternativemethodrU   rS   messagerT   dezero_methodscorrectionsalternativesmethodsoutput_zn_zeros                     r    _wilcoxon_ivr   ;   s   	A	Ba4B7DAq::dBD*G==RZZ0DIIN!!t9DLGK.I"--2I2II(9A$aV$2>DAqAAKK4$ DG}!''$-7!!LG::agg/!!k"((*K0L-l^1=G,&!!-K,[M;G$!!k"((*K3L-l^1=G,&!!fe5561-gY 7? ? W%%-t5Hbzc&k%66V!!}&L0K84K#!!
 a1f40FAGGBK",k:{FD(FTVVVk  ( a'(s   <0I= =J	JJc                P   | j                   }| dk(  }|dk(  r3t        j                  |       |   j                  |j                  d      } |j                  |       }|j                  |j                  |d      |      }t        | d      |z
  }t        |j                  |       dd|      \  }	}
}|j                  |	|d	      |j                  ||d	      }}	|j                  |j                  | dkD  |      |	z  d      }|j                  |j                  | dk  |      |	z  d      }|j                  |dk(        }|d
k(  rw|j                  |j                  ||      |	z  d      dz  }t        j                  |      d   j                  |      }t        j                  |      d   j                  |      }||dz   z  dz  }||dz   z  d|z  dz   z  }|dk(  r|j                  |j                  |d      |      }t        j                  |      d   j                  ||dz   z  dz        }t        j                  |      d   j                  ||dz   z  d|z  dz   z        }|j                  |      }t        j                  |      d   j                  |j                  |d            }t        j                  |      |   j                  d      }|j                  |dz  |z
  d      }|j!                  ||dz  z
  dz        }|dv r	||z
  |z  }n|j                  }||||||fS )Nr   rX   Tr   rV   ra   average)return_tiesrS   FrY      .g      ?g      ?g       @rW   ).r   g              )r`   r^   )r;   rH   atsetnanisnanr   ro   r   r   absr%   anyaddsubtract
zeros_likesqrt)rw   ru   rr   rS   r;   i_zerosi_nann_nancountr_tr_plusr_minushas_tiesr_zero_2r@   ser~   	t_i_zerostie_correctzs                         r    _wilcoxon_statisticr      s   GGEAvGh
 FF1Ig""266"5HHQKEIIb&&u2&6>EQR(50Eq	9$2FGAq!99QE9*BIIaUI,KqAVVBIIa!eU+a/bV9FffRYYq1ue,q0rf:Gvva1f~Hh 66"))GU3a7b6AAE$((2&&/#&**84	%"*		$B	%"*	eb	1Bg 2++G"+=uEVVBZ_%%f&<t&CDVVBZ_%%f&<Vb@P&QR
 MM'*	FF9%f-11"&&r&2JK	FF1Ii $$R(&&A&+K	"{1}$*	+B ''b[BFF7B5(22r*   c                 <    |dk(  ry|dk(  ry|j                  |       S )Nr\   r   r[   rV   )sign)r   rt   rS   s      r    _correction_signr      s&    i		wwqzr*   c           	         t        | ||||      }|\	  }}}}}	}
t        |      dk(  r2t        |      }t        j                  ||      }dk(  r||_        |S t        |      \  }}}}}}dk(  r3|s|
dkD  sdn)|j                  d   dk  rt        j                         nddk(  rV|r;t        ||      }t        j                  |      d	   j                  |d
z  |z        }t        |t               |      }nHdk(  rt!        |      }t#        j$                  |      }|dk(  r%|j'                  t#        j(                  |            }n|dk(  r%|j+                  t#        j,                  |            }ntdt#        j.                  |j+                  t#        j,                  |            |j'                  t#        j(                  |                  z  }t#        j0                  |dd      }j%                  ||j2                        }n<t        j4                  |ffdfddij7                         |ddj8                  }|dk(  rj/                  ||      n|}|dk(  rdk(  rj;                  |       n|}|j<                  dk(  r|d   n|}|j<                  dk(  r|d   n|}t        j                  ||      }|	r|j<                  dk(  r|d   n||_        |S )Nr   rS   )	statisticpvaluer`   r^   r_   rV      .g      ?r[   r\   r   r   r:   c                 (    t        |       d   S )Nr   r   )r   )rw   rU   ru   rS   rr   s     r    rF   z_wilcoxon_nd.<locals>.<lambda>  s    "5aQS"TUV"W r*   permutation_typesamples)rt   rU   r]   rG   )r   r   r   r   WilcoxonResult
zstatisticr   r=   r   rn   r   rH   r   r   r   r   r   r   r   rJ   ceilrM   floorminimumclipr;   permutation_test_asdictr   r   re   )rp   rq   rr   rs   rt   ru   rU   temprw   r}   r~   NaNresr   r   r   r   r   r   r   pdist	r_plus_npr   rS   s     `  `                  @r    _wilcoxon_ndr      s    1k:{FDQDRVOA{JVT8VRqzQqR ''#cB\! CN
.A	6;2/+FGRE8 FQJFWWR[B
 ,,.F "F#A{r:Dq	#''s
R8A=?KB?	7	#E* JJv&	& +,AI%+,ABJJtwwrxx	':;#xx	(:;= =A1a AJJqJ(""DW. '. +1..*:. $"	. /5f	 	
 0;K/G

67+VI"k1f6L
STA!*1!4	")I1"!A

#
#i
BC"#&&A+21Jr*   )rX   )NrX   Tr]   r^   r   ) numpyr   scipyr   	_stats_pyr   r   r    r   _axis_nan_policyr	   
_hypotestsr
   scipy._lib._utilr   scipy._lib._array_apir   r   r   r   r   r   scipy._external.array_api_extra	_externalarray_api_extrarH   r   r   r   r   r   rG   r*   r    <module>r      s\      < <  / + %@ @ - -*4 *4ZHWV>3B >B>?Lr*   