
    bi(                         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 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_sizec                   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      P/home/cdr/jupyterlab/.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+   r0   r,   r-   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   r5   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    )r2   r$   r   r   s     r   <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>0   s    TXXac1-- r'    )r?   xpxapply_wherer   r.   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    )r.   rB   s     r   rC   z)WilcoxonDistribution.sf.<locals>.<lambda>7   s    TYYqsA.. r'   rD   )r?   rE   rF   r   r2   r<   s   `   r   sfzWilcoxonDistribution.sf2   sL    ZZ]
2sGa[HH.0 134 	4r'   N)__name__
__module____qualname__r   r&   r.   r0   r2   r5   r?   rG   rJ   rD   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}|j-                  |
dk(  d       }|dk(  r|
j                  d	   dkD  rd}|
||||||||f	S # |	$ r} |	|      |d }~ww xY w)NT)force_floatingxprD   z`axis` must be an integer.r   z<`axis` must be compatible with the shape(s) of `x` (and `y`)	AxisError)axisrP   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]   rR   r[   2   )r   r   r   r   
issubdtyper8   integerndim
ValueErrorr   getattr
exceptionsrQ   r	   moveaxisr:   isdtypestrlower
isinstancer   PermutationMethodcount_nonzero)xyzero_method
correctionalternativemethodrR   rP   messagerQ   dezero_methodscorrectionsalternativesmethodsoutput_zn_zeros                     r   _wilcoxon_ivr|   :   sw   	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
 a1f40FAGGBK",k:{FD(FTVVVW  ( a'(s   <0H6 6I	;	II	c                R   | j                   }| dk(  }|dk(  r3t        j                  |       |   j                  |j                  d      } |j                  |       }|j                  |d      }|j                  | j                  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   rU   Tr   rS   r^   average)return_tiesrP   FrV      .g      ?g      ?g       @rT   ).r   g              )r]   r[   )r8   rE   atsetnanisnanrl   r   r:   r   absr"   anyaddsubtract
zeros_likesqrt)rt   rr   ro   rP   r8   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U,EIIaggbkE)51ERVVAY	tCDAq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 )NrY   r   rX   rS   )sign)r   rq   rP   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   rP   )	statisticpvaluer]   r[   r\   rS      .g      ?rX   rY   r   r   r7   c                 (    t        |       d   S )Nr   r   )r   )rt   rr   rP   ro   s    r   rC   z_wilcoxon_nd.<locals>.<lambda>  s    /6;2NqQ r'   permutation_typesamples)rq   rR   rZ   rD   )r|   r   r   r   WilcoxonResult
zstatisticr   r:   r   rk   r   rE   r   r   r   r   r   r   r   rG   ceilrJ   floorminimumclipr8   permutation_test_asdictr   r   rb   )rm   rn   ro   rp   rq   rr   rR   temprt   rz   r{   NaNresr   r   r   r   r   r   r   pdist	r_plus_npr   rP   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Q.&.*0..*:. $". /5f 	
 0;K/G

67+VI"k1f6L
STA!*1!4	")I1"!A

#
#i
BC"#&&A+21Jr'   )rU   )NrU   TrZ   r[   r   )numpyr   scipyr   	_stats_pyr   r   r    r   _axis_nan_policyr	   
_hypotestsr
   scipy._lib._utilr   scipy._lib._array_apir   r   r   scipy._lib.array_api_extra_libarray_api_extrarE   r   r|   r   r   r   rD   r'   r   <module>r      sU      < <  / + % F F ( (*4 *4Z>WB>3B >B>?Kr'   