
    Ug!                         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dS )    N)stats   )_get_pvalue	_rankdata_SimpleNormal)
_morestats)_broadcast_arrays_get_wilcoxon_distr)
_lazywhere_get_nanc                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )WilcoxonDistributionc                     t          j        |                              t          d          }|| _        d t          j        |          D             | _        d S )NFcopyc                 .    i | ]}|t          |          S  r
   ).0nis     T/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/scipy/stats/_wilcoxon.py
<dictcomp>z1WilcoxonDistribution.__init__.<locals>.<dictcomp>   s#    JJJrr.r22JJJ    )npasarrayastypeintnunique_dists)selfr   s     r   __init__zWilcoxonDistribution.__init__   sJ    JqMM  5 11JJRYq\\JJJr   c                 Z    | j         |         }|d |dz                                            S Nr   r    sumr!   kr   pmfss       r   _cdf1zWilcoxonDistribution._cdf1   s+    {1~FQUF|!!!r   c                 X     t          j        | j        t          g          ||          S N)otypes)r   	vectorizer*   floatr!   r(   r   s      r   _cdfzWilcoxonDistribution._cdf   s'    7r|DJw7771===r   c                 T    | j         |         }||d                                          S )Nr%   r'   s       r   _sf1zWilcoxonDistribution._sf1   s#    {1~ABBx||~~r   c                 X     t          j        | j        t          g          ||          S r,   )r   r.   r3   r/   r0   s      r   _sfzWilcoxonDistribution._sf   s'    6r|DIug666q!<<<r   c                 ,    | j         | j         dz   z  dz  S )Nr      )r   )r!   s    r   meanzWilcoxonDistribution.mean!   s    v!$q((r   c                     t          j        |                              t          d          }|                                 }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$   sS    JqMM  5 11YY[[hqwbj111"czr   c                                            |          \  }}}t          ||k    | j        f j         fd          d         S )Nc                 <    d                     | dz   |          z
  S r$   )r5   r(   r   r!   s     r   <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>-   s    !dhhqsA.>.>*> r   f2r   )rA   r   r   r1   r>   s   `   r   cdfzWilcoxonDistribution.cdf*   sZ    ZZ]]
2s!r'Atv;	>>>>@ @ @@BD 	Dr   c                                            |          \  }}}t          ||k    | j        f j         fd          d         S )Nc                 <    d                     | dz
  |          z
  S r$   )r1   rD   s     r   rE   z)WilcoxonDistribution.sf.<locals>.<lambda>2   s    !dii!Q.?.?*? r   rF   r   )rA   r   r   r5   r>   s   `   r   sfzWilcoxonDistribution.sf/   sZ    ZZ]]
2s!r'Atv;????A A AACE 	Er   N)__name__
__module____qualname__r"   r*   r1   r3   r5   r8   rA   rH   rK   r   r   r   r   r      s        K K K
" " "> > >  = = =) ) )  D D D
E E E E Er   r   c                    t          j        |          d         }d}t          j        |j        t           j                  r|j        dk    rt          |          d}	 |t          j        |           } | }nt          | |f|          \  } }| |z
  }t          j        ||d          }n'# t           j	        $ r}	t          |          |	d }	~	ww xY wd}|+| j
        |         |j
        |         k    rt          |          d}t          j        |j        t           j                  r|                    t           j                  }t          j        |j        t           j                  st          |          t          |                                          }h d	}
d
|
 d}||
vrt          |          ddh}d| d}||vrt          |          t          |                                          }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k              }|dk    r|j
        d         dk    r|sd}nd}t          j        |dk              }|dk    r|dk    rd}t+          j        dd           |dk    r4|dv r0||j        k    r%|j        dk    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 ) Nr   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`.r\   rZ   2   r[   z^Exact p-value calculation does not work if there are zeros. Switching to normal approximation.   )
stacklevel)rT   rS   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   
issubdtyper:   integerndim
ValueErrorr	   moveaxis	AxisErrorr<   r   r=   floatingstrlower
isinstancer   PermutationMethodr&   anywarningswarnsize)xyzero_method
correctionalternativemethodrQ   messagedezero_methodscorrectionsalternativesmethodsoutput_zn_zero	has_zeross                    r   _wilcoxon_ivr   5   s   :dBD*G=RZ00 "DINN!!!LG	)9
1AAA$aV$777DAqAAK4$$< ) ) )!!q() DG}!'$-77!!!LG	}QWbj)) !HHRZ  ="+.. "!!!k""((**K000L=l===G,&&!!!-K;[;;;G$$!!!k""((**K333L=l===G,&&!!!fe566 &---?g ? ? ?  W%%%))ttuH VAF$$$Fvz""I72;"YFFFVAF^^Fzzf'' B!"	$ 	$ 	$ 	$ 	({.AAA!&  QVaZZAFaKK C D D 	D 	172;( 2 2GTUVVVVk:{FD(JJs   A
B) )C8CCrT   c                 |   | dk    }|dk    r0| j         d         s|                                 } t          j        | |<   t          j        |           }t          j        |d          }| j        d         |z
  }t          t          |           dd          \  }}t          j        | dk    |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    rS|                    d          }|||dz   z  dz  z  }|||dz   z  d|z  dz   z  z  }d||	                    d          df<   |dz  |z
                      d          }||d
z  z  }t          j
        |dz            }||z
  |z  }||	|||fS )Nr   rT   	WRITEABLErR   rP   averageT)return_tiesrU   r^   g      ?g      ?g       @rS         )flagsr   r   nanisnanr&   r<   r   absrl   sqrt)rw   rr   i_zerosi_nann_nancountrtr_plusr_minusr_zero_2r?   ser~   tie_correctzs                   r   _wilcoxon_statisticr      s   AvGh w{# 	AV'
HQKKEF5r"""EGBK%ESVVYD999DAqVQUaKb)))Ffa!eq[r***Gh 6'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                 J    |dk    rdS |dk    rdS t          j        |           S )NrX   r   rW   rR   )r   sign)r   rt   s     r   _correction_signr      s0    iq			rwqzzr   TrY   rZ   c           	         t          | |||||          }|\  }}}}}}	|j        dk    r4t          |          }
t          j        |
|
          }|dk    r|
|_        |S t          |          \  }}}}}|dk    rC|rt          ||          }||dz  |z  z  }t          |t                      |t                    }n|dk    rt          |          }|dk    r(|                    t          j        |                    }n|dk    r(|                    t          j        |                    }nd	t          j        |                    t          j        |                    |                    t          j        |                              z  }t          j        |dd
          }n5t%          j        |ffdfddi|                                |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pvaluer\   g      ?)xpr[   rW   rX   r^   r   c                 0    t          |           d         S )Nr   )r   )rw   rr   s    r   rE   z_wilcoxon_nd.<locals>.<lambda>   s    /;??B r   permutation_typesamplesrR   )rt   rQ   rY   r   )r   ro   r   r   WilcoxonResult
zstatisticr   r   r   r   r   r   rH   ceilrK   floorminimumclipr   permutation_test_asdictr   r   )rp   rq   rr   rs   rt   ru   rQ   temprw   r}   NaNresr   r   r   r   r   r   pdistr   s     `                  r   _wilcoxon_ndr      s|    1k:{FDQQDFJCA{JVT8v{{qkk'#cBBBX CN
$7;$G$G!FGRE 	!#A{33Db A=??KB???	7		#E** &  ))AAI%%(())AABJtwwrx'7'788#xx88: : :A1a  AA"DBBBB. .&.*0..*:*:. $". . . . /5 	
 0;K/G/G
67+++VI"k11f6H6H

qA

#i"
F
F
FC 2Jr   )rT   )NrT   TrY   rZ   r   )rm   numpyr   scipyr   	_stats_pyr   r   r    r   _axis_nan_policyr	   
_hypotestsr   scipy._lib._utilr   r   r   r   r   r   r   r   r   r   <module>r      s*              < < < < < < < < < <       / / / / / / + + + + + + 1 1 1 1 1 1 1 1&E &E &E &E &E &E &E &ERNK NK NKb2) 2) 2) 2)j   >B>?2 2 2 2 2 2r   