
    Yh#%                         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c 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)_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     g/var/www/tools.fuzzalab.pt/emblema-extractor/venv/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-   r2   r.   r/   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   r7   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          j        ||k    | j        f j         fd          d         S )Nc                 <    d                     | dz   |          z
  S r#   )r4   r'   r   r    s     r   <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>/   s    TXXac1--- r   r   )r@   xpxapply_wherer   r0   r=   s   `   r   cdfzWilcoxonDistribution.cdf*   sV    ZZ]]
2sGa[I----/ / 023 	3r   c                                            |          \  }}}t          j        ||k    | j        f j         fd          d         S )Nc                 <    d                     | dz
  |          z
  S r#   )r0   rC   s     r   rD   z)WilcoxonDistribution.sf.<locals>.<lambda>6   s    TYYqsA... r   r   )r@   rE   rF   r   r4   r=   s   `   r   sfzWilcoxonDistribution.sf1   sV    ZZ]]
2sGa[H....0 0 134 	4r   N)__name__
__module____qualname__r!   r)   r0   r2   r4   r7   r@   rG   rJ   r   r   r   r   r      s        K K K
" " "> > >  = = =) ) )  3 3 34 4 4 4 4r   r   c                 J   t          j        |          d         }d}t          j        |j        t           j                  r|j        dk    rt          |          d}t          t           dd           pt           j        j	        }	 |t          j        |           } | }	nt          | |f|          \  } }| |z
  }	t          j        |	|d          }	n# |$ r}
 ||          |
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k    r|	j        d         dk    rd}|	|||||||fS )Nr   z`axis` must be an integer.r   z<`axis` must be compatible with the shape(s) of `x` (and `y`)	AxisError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
asymptoticz`method` must be one of z- or an instance of `stats.PermutationMethod`.r\   rZ   2   )r   r   
issubdtyper9   integerndim
ValueErrorgetattr
exceptionsrO   r	   moveaxisr;   r   r<   floatingstrlower
isinstancer   PermutationMethodr%   )xyzero_method
correctionalternativemethodrQ   messagerO   dezero_methodscorrectionsalternativesmethodsoutput_zn_zeros                    r   _wilcoxon_ivry   9   s   :dBD*G=RZ00 "DINN!!!LGK..I"-2II	(9
1AAA$aV$777DAqAAK4$$ ( ( (i  a'( 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 &111?g ? ? ?  W%%%--tt5H
 VAF^^FAGBK",,k:{FD(FRRs   A
C C&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    	                                }|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            }|dv r	|	|z
  |z  }nt          j        }|	|
||||fS )Nr   rT   	WRITEABLErR   rP   averageT)return_tiesrU      g      ?g      ?g       @rS         )r\   rZ   )flagsr   r   nanisnanr%   r;   r   absanysqrt)rq   ro   rl   i_zerosi_nann_nancountrtr_plusr_minushas_tiesr_zero_2r>   serx   tie_correctzs                     r   _wilcoxon_statisticr   z   s/   AvGh w{# 	AV'
HQKKEF5r"""EGBK%ESVVYD999DAqVQUaKb)))Ffa!eq[r***GQ||~~H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 '''b[BF7B5(22r   c                 J    |dk    rdS |dk    rdS t          j        |           S )NrX   r   rW   rR   )r   sign)r   rn   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    r2|s	|
dk    sdn'|j        d         dk    rt          j	                    nd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          }n6t          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\   rZ   r[   rR      g      ?)xprW   rX   r~   r   c                 2    t          |           d         S )Nr   )r   )rq   ro   rl   s    r   rD   z_wilcoxon_nd.<locals>.<lambda>   s    /6;GGJ r   permutation_typesamples)rn   rQ   rY   r   )ry   sizer   r   WilcoxonResult
zstatisticr   r;   r   ri   r   r   r   r   r   rG   ceilrJ   floorminimumclippermutation_test_asdictr   r   )rj   rk   rl   rm   rn   ro   rQ   temprq   rw   rx   NaNresr   r   r   r   r   r   r   pdistr   s     `  `                 r   _wilcoxon_ndr      s    1k:{FDQQDNRKA{JVT8Vv{{qkk'#cBBB\!! CN
.A	6;/ /+FGRE8  	"FQJJFFWR[B
 ,..FF "F 	!#A{33Db A=??KB???	7		#E** &  ))AAI%%(())AABJtwwrx'7'788#xx88: : :A1a  AA"DJJJJJ. .&.*0..*:*:. $". . . . /5 	
 0;K/G/G
67+++VI"k11f6L6L

STA

#i"
F
F
FC 2Jr   )rT   )NrT   TrY   rZ   r   )numpyr   scipyr   	_stats_pyr   r   r    r   _axis_nan_policyr	   
_hypotestsr   scipy._lib._utilr   scipy._lib.array_api_extra_libarray_api_extrarE   r   ry   r   r   r   r   r   r   <module>r      s1             < < < < < < < < < <       / / / / / / + + + + + + % % % % % % ( ( ( ( ( ( ( ( (*4 *4 *4 *4 *4 *4 *4 *4Z>S >S >SB<3 <3 <3 <3~   >B>?G G G G G Gr   