
    tf?                         d dl Z d dlZd dlmZ ddl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)
_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      _/var/www/html/software/conda/envs/higlass/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(   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   r2   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   )r/   r!   r   r   s     r   <lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>-   s    !dhhqsA.>*> r$   f2 )r;   r
   r   r+   r8   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$   r@   rB   )r;   r
   r   r/   r8   s   `   r   sfzWilcoxonDistribution.sf/   sG    ZZ]
2s!r'Atvv;?AACE 	Er$   N)__name__
__module____qualname__r   r#   r+   r-   r/   r2   r;   rC   rF   rB   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) NrB   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`.rW   rU   2   rV   z^Exact p-value calculation does not work if there are zeros. Switching to normal approximation.   )
stacklevel)rO   rN   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   
issubdtyper4   integerndim
ValueErrorr   moveaxis	AxisErrorr6   r   r7   floatingstrlower
isinstancer   PermutationMethodr   anywarningswarnsize)xyzero_method
correctionalternativemethodrL   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   rO   	WRITEABLErM   rK   averageT)return_tiesrP   rY   g      ?g      ?g       @rN         )flagsr   r   nanisnanr   r6   r   absrg   sqrt)rr   rm   i_zerosi_nann_nancountrtr_plusr_minusr_zero_2r9   sery   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 )NrS   r   rR   rM   )r   sign)r   ro   s     r   _correction_signr      s&    i		wwqzr$   c           	         t        | |||||      }|\  }}}}}}	|j                  dk(  r0t        |      }
t        j                  |
|
      }|dk(  r|
|_        |S t        |      \  }}}}}|dk(  r5|rt        ||      }||dz  |z  z  }t        |t        j                  |      }n|dk(  rt        |      }|dk(  r|j                  |      }n|dk(  r|j                  |      }ndt        j                  |j                  |      |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pvaluerW   g      ?rV   rR   rS   rY   r   c                 "    t        |       d   S )Nr   )r   )rr   rm   s    r   r?   z_wilcoxon_nd.<locals>.<lambda>   s    /;?B r$   permutation_typesamplesrM   )ro   rL   rT   rB   )r{   rj   r   r   WilcoxonResult
zstatisticr   r   r   r   normr   rC   rF   r   minimumclippermutation_test_asdictr   r   )rk   rl   rm   rn   ro   rp   rL   temprr   rx   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5::{3	7	#E*&  AI%ABJJtwwv0@AAA1a A""DB.&.*0..*:. $". /5f 	
 0;K/G

67+VI"k1f6H
qA

#
#i"
FC2Jr$   )rO   )NrO   TrT   rU   r   )rh   numpyr   scipyr   	_stats_pyr   r    r   _axis_nan_policyr   
_hypotestsr	   scipy._lib._utilr
   r   r   r{   r   r   r   rB   r$   r   <module>r      sK       -  / + 1&E &ERNKb2)j >B>?*r$   