o
    Ö­j¦$  ã                   @   s–   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
„ d
ƒZdd„ Zddd„Zdd„ Z		 ddd„ZdS )é    N)Ústatsé   )Ú_get_pvalueÚ	_rankdataÚ_SimpleNormal)Ú
_morestats)Ú_broadcast_arrays©Ú_get_wilcoxon_distr)Ú
_lazywhereÚ_get_nanc                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚWilcoxonDistributionc                 C   s4   t  |¡jtdd�}|| _dd„ t  |¡D ƒ| _d S )NF©Úcopyc                 S   s   i | ]}|t |ƒ“qS © r	   )Ú.0Únir   r   úR/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/_wilcoxon.pyÚ
<dictcomp>   s    z1WilcoxonDistribution.__init__.<locals>.<dictcomp>)ÚnpÚasarrayÚastypeÚintÚnÚuniqueÚ_dists)Úselfr   r   r   r   Ú__init__   s   zWilcoxonDistribution.__init__c                 C   s   | j | }|d |d …  ¡ S ©Nr   ©r   Úsum©r   Úkr   Úpmfsr   r   r   Ú_cdf1   s   
zWilcoxonDistribution._cdf1c                 C   ó   t j| jtgd�||ƒS ©N)Úotypes)r   Ú	vectorizer$   Úfloat©r   r"   r   r   r   r   Ú_cdf   ó   zWilcoxonDistribution._cdfc                 C   s   | j | }||d …  ¡ S )Nr   r!   r   r   r   Ú_sf1   s   
zWilcoxonDistribution._sf1c                 C   r%   r&   )r   r(   r-   r)   r*   r   r   r   Ú_sf   r,   zWilcoxonDistribution._sfc                 C   s   | j | j d  d S )Nr   é   )r   ©r   r   r   r   Úmean    s   zWilcoxonDistribution.meanc                 C   s8   t  |¡jtdd�}|  ¡ }t j|jt jd�}|||fS )NFr   )Údtype)r   r   r   r   r1   ÚemptyÚshapeÚfloat64©r   r"   ÚmnÚoutr   r   r   Ú_prep#   s   
zWilcoxonDistribution._prepc                    ó8   ˆ   |¡\}}}t||k|ˆ jfˆ j‡ fdd„d�d S )Nc                    s   dˆ   | d |¡ S r   )r.   ©r"   r   r0   r   r   Ú<lambda>,   ó    z*WilcoxonDistribution.cdf.<locals>.<lambda>©Úf2r   )r9   r   r   r+   r6   r   r0   r   Úcdf)   ó   
ÿÿzWilcoxonDistribution.cdfc                    r:   )Nc                    s   dˆ   | d |¡ S r   )r+   r;   r0   r   r   r<   1   r=   z)WilcoxonDistribution.sf.<locals>.<lambda>r>   r   )r9   r   r   r.   r6   r   r0   r   Úsf.   rA   zWilcoxonDistribution.sfN)Ú__name__Ú
__module__Ú__qualname__r   r$   r+   r-   r.   r1   r9   r@   rB   r   r   r   r   r      s    r   c              
   C   s  t  |¡d }d}t  |jt j¡r|jdkrt|ƒ‚d}z#|d u r)t  | ¡} | }nt| |f|d�\} }| | }t  ||d¡}W n t j	yQ }	 zt|ƒ|	‚d }	~	ww d}|d urf| j
| |j
| krft|ƒ‚d}t  |jt j¡rv| t j¡}t  |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  |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`)©Úaxiséÿÿÿÿz3`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`.rR   rP   é2   )r   r   Ú
issubdtyper2   ÚintegerÚndimÚ
ValueErrorr   ÚmoveaxisÚ	AxisErrorr4   r   r5   ÚfloatingÚstrÚlowerÚ
isinstancer   ÚPermutationMethodr    )ÚxÚyÚzero_methodÚ
correctionÚalternativeÚmethodrG   ÚmessageÚdÚeÚzero_methodsÚcorrectionsÚalternativesÚmethodsÚoutput_zÚn_zeror   r   r   Ú_wilcoxon_iv4   s`   

€ÿrn   rJ   c                 C   s¨  | dk}|dkr| j d s|  ¡ } tj| |< t | ¡}tj|dd�}| jd | }tt| ƒddd�\}}tj| dk| dd�}	tj| dk | dd�}
|dk 	¡ }|d	krgtj|| dd�d
 }|	|7 }	|
|7 }
||d  d }||d  d| d  }|dkr§|jdd�}|||d  d 8 }|||d  d| d  8 }d||j	dd�df< |d | jdd�}||d
 8 }t 
|d ¡}|dv rÉ|	| | }ntj}|	|
||||fS )Nr   rJ   Ú	WRITEABLErH   rF   ÚaverageT)Úreturn_tiesrK   é   g      ð?g      Ð?g       @rI   é   é   )rR   rP   )Úflagsr   r   ÚnanÚisnanr    r4   r   ÚabsÚanyÚsqrt)rf   rd   ra   Úi_zerosÚi_nanÚn_nanÚcountÚrÚtÚr_plusÚr_minusÚhas_tiesÚr_zero_2r7   Úserm   Útie_correctÚzr   r   r   Ú_wilcoxon_statistict   s<   


rˆ   c                 C   s"   |dkrdS |dkrdS t  | ¡S )NrN   r   rM   rH   )r   Úsign)r‡   rc   r   r   r   Ú_correction_sign³   s
   
rŠ   TrO   rP   c              	      sî  t | |ˆ||ˆ |ƒ}|\}‰}}‰ }}	}
|jdkr-t|ƒ}tj||d�}ˆ dkr+||_|S t|ˆ ˆƒ\}}}}}}ˆ dkrT|sF|
dksFd‰ n|jd dkrRt 	¡ ‰ nd‰ ˆ dkrq|rgt
||ƒ}||d | 8 }t|tƒ |td	�}nXˆ dkr¯t|ƒ}|d
kr†| t |¡¡}nC|dkr“| t |¡¡}n6dt | t |¡¡| t |¡¡¡ }t |dd¡}ntj|f‡ ‡fdd„fddiˆ  ¡ ¤|ddœ¤Žj}|dkrÓt ||¡n|}|dkrãˆ dkrãt |¡ n|}tj||d d�}|	rõ|d |_|S )Nr   )Ú	statisticÚpvaluerR   rP   rQ   rH   é   g      à?)ÚxprM   rN   rr   r   c                    s   t | ˆ ˆƒd S )Nr   )rˆ   )rf   ©rd   ra   r   r   r<   ø   s    z_wilcoxon_nd.<locals>.<lambda>Úpermutation_typeÚsamples)rc   rG   rO   r   )rn   Úsizer   r   ÚWilcoxonResultÚ
zstatisticrˆ   r4   r   r^   rŠ   r   r   r   r   r@   ÚceilrB   ÚfloorÚminimumÚclipÚpermutation_testÚ_asdictrŒ   rx   )r_   r`   ra   rb   rc   rd   rG   Útemprf   rl   rm   ÚNaNÚresr�   r‚   r…   r‡   r~   rƒ   r‰   ÚpÚdistr‹   r   r�   r   Ú_wilcoxon_nd¼   sb   
ÿ	

ÿÿþþýý 
r    )rJ   )NrJ   TrO   rP   r   )Únumpyr   Úscipyr   Ú	_stats_pyr   r   r   Ú r   Ú_axis_nan_policyr   Ú
_hypotestsr
   Úscipy._lib._utilr   r   r   rn   rˆ   rŠ   r    r   r   r   r   Ú<module>   s    )
@?	ÿ