
    tKg!                         d dl Z 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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)
_lazywhere_get_nanc                   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      Y/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/scipy/stats/_wilcoxon.py__init__zWilcoxonDistribution.__init__   sR    JJqM  5 1=?YYq\J\rr.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)   r.   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   r3   emptyshapefloat64r   r"   mnouts       r   _prepzWilcoxonDistribution._prep$   sN    JJqM  5 1YY[hhqwwbjj1"czr%   c                       j                  |      \  }}}t        ||k  | j                  f j                   fd      d   S )Nc                 4    dj                  | dz   |      z
  S r   )r0   r"   r   r   s     r   <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>-   s    !dhhqsA.>*>r%   f2 )r<   r   r   r,   r9   s   `   r   cdfzWilcoxonDistribution.cdf*   sG    ZZ]
2s!r'Atvv;		>@@BD 	Dr%   c                       j                  |      \  }}}t        ||k  | j                  f j                   fd      d   S )Nc                 4    dj                  | dz
  |      z
  S r   )r,   r?   s     r   r@   z)WilcoxonDistribution.sf.<locals>.<lambda>2   s    !dii!Q.?*?r%   rA   rC   )r<   r   r   r0   r9   s   `   r   sfzWilcoxonDistribution.sf/   sG    ZZ]
2s!r'Atvv;?AACE 	Er%   N)__name__
__module____qualname__r   r$   r,   r.   r0   r3   r<   rD   rG   rC   r%   r   r   r      s2    K
">=)D
Er%   r   c                    t        j                  |      d   }d}t        j                  |j                  t         j                        r|j
                  dk7  rt        |      d}	 |t        j                  |       } | }nt        | |f|      \  } }| |z
  }t        j                  ||d      }d}|*| j                  |   |j                  |   k7  rt        |      d}t        j                  |j                  t         j                        r|j                  t         j                        }t        j                  |j                  t         j                        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        j&                  |dk(  d      }t        j(                  |dkD        }|dk(  r|j                  d   dk  r|sd}nd}t        j&                  |dk(        }|dkD  r|dk(  rd}t+        j,                  dd       |dk(  r<|dv r8||j.                  k(  r)|j.                  dkD  r|j
                  dk(  rt        d      d|j                  d   cxk  rdk  rn n|dk(  rt+        j,                  dd       |||||||fS # t         j                  $ r}	t        |      |	d }	~	ww xY w) NrC   z`axis` must be an integer.r   z<`axis` must be compatible with the shape(s) of `x` (and `y`)axisz3`x` and `y` must have the same length along `axis`.z<`x` (and `y`, if provided) must be an array of real numbers.>   prattwilcoxzsplitz`zero_method` must be one of .TFz`correction` must be one of >   lessgreater	two-sidedz`alternative` must be one of >   autoexactapproxz`method` must be one of z- or an instance of `stats.PermutationMethod`.rX   rV   2   rW   z^Exact p-value calculation does not work if there are zeros. Switching to normal approximation.   )
stacklevel)rP   rO   r   zOzero_method 'wilcox' and 'pratt' do not work if x - y is zero for all elements.
   z/Sample size too small for normal approximation.)r   r   
issubdtyper5   integerndim
ValueErrorr	   moveaxis	AxisErrorr7   r   r8   floatingstrlower
isinstancer   PermutationMethodr    anywarningswarnsize)xyzero_method
correctionalternativemethodrM   messagedezero_methodscorrectionsalternativesmethodsoutput_zn_zero	has_zeross                    r   _wilcoxon_ivr|   5   s*   ::dBD*G==RZZ0DIIN!!LG	)9

1AA$aV$7DAqAAKK4$ DG}!''$-7!!LG	}}QWWbjj)HHRZZ =="++.!!k"((*K0L-l^1=G,&!!-K,[M;G$!!k"((*K3L-l^1=G,&!!fe556--gY 7? ? W%%)tuH VVAF$Fvz"I772;"YFFVVAF^Fzf' B!"	$ 	({.AA!&& QVVaZAFFaK C D 	D 	1772;( 2GTUVk:{FD(JJ} << )!q()s   &AL) )M<MMc                 \   | dk(  }|dk(  r2| j                   d   s| j                         } t        j                  | |<   t        j                  |       }t        j
                  |d      }| j                  d   |z
  }t        t        |       dd      \  }}t        j
                  | dkD  |z  d      }t        j
                  | dk  |z  d      }	|d	k(  r't        j
                  ||z  d      d
z  }
||
z  }|	|
z  }	||dz   z  dz  }||dz   z  d|z  dz   z  }|dk(  rK|j                  d      }|||dz   z  dz  z  }|||dz   z  d|z  dz   z  z  }d||j                  d      df<   |dz  |z
  j                  d      }||d
z  z  }t        j                  |dz        }||z
  |z  }||	|||fS )Nr   rP   	WRITEABLErN   rL   averageT)return_tiesrQ   rZ   g      ?g      ?g       @rO         )flagsr   r   nanisnanr    r7   r   absrh   sqrt)rs   rn   i_zerosi_nann_nancountrtr_plusr_minusr_zero_2r:   serz   tie_correctzs                   r   _wilcoxon_statisticr      s   AvGh ww{#AVV'
HHQKEFF5r"EGGBK%ESVYD9DAqVVQUaKb)Fffa!eq[r*Gh 66'A+B/!3(8	%"*		$B	%"*	eb	1Bg "%
f$t++
f$Vb(899 &''++2+

!"a4!8..b.)K+a-B	b	B	"A7B5((r%   c                 D    |dk(  ry|dk(  ryt        j                  |       S )NrT   r   rS   rN   )r   sign)r   rp   s     r   _correction_signr      s&    i		wwqzr%   c           	      F   t        | |||||      }|\  }}}}}}	|j                  dk(  r0t        |      }
t        j                  |
|
      }|dk(  r|
|_        |S t        |      \  }}}}}|dk(  r6|rt        ||      }||dz  |z  z  }t        |t               |t              }n|dk(  rt        |      }|dk(  r%|j                  t        j                  |            }n|dk(  r%|j                  t        j                  |            }nd	t        j                   |j                  t        j                  |            |j                  t        j                  |                  z  }t        j"                  |dd
      }n:t%        j&                  |ffdfddi|j)                         |ddj*                  }|dk(  rt        j                   ||      n|}|dk(  r|dk(  rt        j,                  |       n|}t        j                  ||d         }|	r
|d   |_        |S )Nr   )	statisticpvaluerX   g      ?)xprW   rS   rT   rZ   r   c                 "    t        |       d   S )Nr   )r   )rs   rn   s    r   r@   z_wilcoxon_nd.<locals>.<lambda>   s    /;?Br%   permutation_typesamplesrN   )rp   rM   rU   rC   )r|   rk   r   r   WilcoxonResult
zstatisticr   r   r   r   r   r   rD   ceilrG   floorminimumclipr   permutation_test_asdictr   r   )rl   rm   rn   ro   rp   rq   rM   temprs   ry   NaNresr   r   r   r   r   r   pdistr   s     `                  r   _wilcoxon_ndr      s    1k:{FDQDFJCA{JVT8vv{qk''#cBX CN
$7;$G!FGRE#A{3Db A=?KB?	7	#E* & )AI%()ABJJtwwrxx'78#xx8: :A1a A""DB.&.*0..*:. $". /5f 	
 0;K/G

67+VI"k1f6H
qA

#
#i"
FC2Jr%   )rP   )NrP   TrU   rV   r   )ri   numpyr   scipyr   	_stats_pyr   r   r    r   _axis_nan_policyr	   
_hypotestsr
   scipy._lib._utilr   r   r   r|   r   r   r   rC   r%   r   <module>r      sN       < <  / + 1&E &ERNKb2)j >B>?2r%   