Ë
    ÏÍ:j�+  ã                   óÂ   — 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ZmZmZmZmZmZ d dlmc 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)Ú_get_nan)Úarray_namespaceÚ
xp_promoteÚxp_sizeÚis_jaxÚ	is_marrayÚ_count_nonmaskedc                   ó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      új/home/mcse/projects/srt_converter/srt-converter-venv/lib/python3.12/site-packages/scipy/stats/_wilcoxon.pyÚ__init__zWilcoxonDistribution.__init__   sN   € Ü�J‰J�q‹M× Ñ ¤¨5Ð Ó1ˆØˆŒÜ=?¿Y¹YÀq»\ÖJ°r�rÔ.¨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‰~ˆØ�F�Q˜‘Uˆ|×ÑÓ!Ð!ó    c                 ó\   —  t        j                  | j                  t        g¬«      ||«      S ©N)Úotypes)r   Ú	vectorizer)   Úfloat©r   r'   r   s      r    Ú_cdfzWilcoxonDistribution._cdf   s"   € Ø7Œr�|‰|˜DŸJ™J´¨wÔ7¸¸1Ó=Ð=r*   c                 óF   — | j                   |   }||d  j                  «       S )Nr$   r&   s       r    Ú_sf1zWilcoxonDistribution._sf1   s!   € Ø�{‰{˜1‰~ˆØ�A�Bˆx�|‰|‹~Ðr*   c                 ó\   —  t        j                  | j                  t        g¬«      ||«      S r,   )r   r.   r3   r/   r0   s      r    Ú_sfzWilcoxonDistribution._sf    s"   € Ø6Œr�|‰|˜DŸI™I¬u¨gÔ6°q¸!Ó<Ð<r*   c                 ó@   — | j                   | j                   dz   z  dz  S )Nr   é   )r   )r   s    r    ÚmeanzWilcoxonDistribution.mean#   s   € Ø�v‰v˜Ÿ™ !™Ñ$ qÑ(Ð(r*   c                 óÞ   — t        j                  |«      j                  t        d¬«      }| j	                  «       }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&   sN   € Ü�J‰J�q‹M× Ñ ¤¨5Ð Ó1ˆØ�Y‰Y‹[ˆÜ�h‰h�q—w‘w¤b§j¡jÔ1ˆØ�"�cˆzÐr*   c                 óœ   ‡ — ‰ j                  |«      \  }}}t        j                  ||k  |‰ j                  f‰ j                  ˆ fd„«      d   S )Nc                 ó4   •— d‰j                  | dz   |«      z
  S r#   )r5   ©r'   r   r   s     €r    ú<lambda>z*WilcoxonDistribution.cdf.<locals>.<lambda>1   s   ø€ ˜˜TŸX™X a¨¡c¨1Ó-Ñ-€ r*   © )rB   ÚxpxÚapply_wherer   r1   r?   s   `   r    ÚcdfzWilcoxonDistribution.cdf,   sL   ø€ Ø—Z‘Z “]‰
ˆˆ2ˆsÜ�‰Ø�‰G�a˜Ÿ™�[Ø�I‰IÛ-ó/ð 02ñ3ð 	3r*   c                 óœ   ‡ — ‰ j                  |«      \  }}}t        j                  ||k  |‰ j                  f‰ j                  ˆ fd„«      d   S )Nc                 ó4   •— d‰j                  | dz
  |«      z
  S r#   )r1   rE   s     €r    rF   z)WilcoxonDistribution.sf.<locals>.<lambda>8   s   ø€ ˜˜TŸY™Y q¨¡s¨AÓ.Ñ.€ r*   rG   )rB   rH   rI   r   r5   r?   s   `   r    ÚsfzWilcoxonDistribution.sf3   sL   ø€ Ø—Z‘Z “]‰
ˆˆ2ˆsÜ�‰Ø�‰G�a˜Ÿ™�[Ø�H‰HÛ.ó0ð 13ñ4ð 	4r*   N)Ú__name__Ú
__module__Ú__qualname__r!   r)   r1   r3   r5   r8   rB   rJ   rM   rG   r*   r    r   r      s0   „ òKò
"ò>òò=ò)òò3ó4r*   r   c           	      ó&  — t        | |«      }t        | |d|¬«      \  } }t        j                  |«      d   }d}t        j                  |j
                  t        j                  «      r|j                  dk7  rt        |«      ‚t        |«      }d}t        t        dd «      xs t        j                  j                  }		 |€| }
nt        | |f||¬«      \  } }| |z
  }
|j                  |
|d	«      }
d
}|�*| j                  |   |j                  |   k7  rt        |«      ‚d}|j!                  |
j
                  d«      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-        |«      rt#        |«      dv rd}t        |«      ‚t/        |«      r|dk7  s|dk7  rd}t        |«      ‚|j1                  |
dk(  d ¬«      }|dk(  r|
j                  d	   dkD  rd}|
||||||||f	S # |	$ r} |	|«      |‚d }~ww xY w)NT)Úforce_floatingÚxprG   z`axis` must be an integer.r   z<`axis` must be compatible with the shape(s) of `x` (and `y`)Ú	AxisError)ÚaxisrS   éÿÿÿÿz3`x` and `y` must have the same length along `axis`.z<`x` (and `y`, if provided) must be an array of real numbers.zreal floating>   ÚprattÚwilcoxÚzsplitz`zero_method` must be one of ú.Fz`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`   >   r^   r_   z€When using `wilcoxon` with `jax.numpy` arrays, `method` must be either 'asymptotic' or an instance of `stats.PermutationMethod`.rY   zMOnly `method='asymptotic'`/`zero_method='zsplit'` is compatible with MArrays.©rU   r^   é2   )r   r   r   r   Ú
issubdtyper;   ÚintegerÚndimÚ
ValueErrorr   ÚgetattrÚ
exceptionsrT   r	   Úmoveaxisr=   ÚisdtypeÚstrÚlowerÚ
isinstancer   ÚPermutationMethodr   r   Úcount_nonzero)ÚxÚyÚzero_methodÚ
correctionÚalternativeÚmethodrU   rS   ÚmessagerT   ÚdÚeÚzero_methodsÚcorrectionsÚalternativesÚmethodsÚoutput_zÚn_zeros                     r    Ú_wilcoxon_ivr   ;   sÄ  € Ü	˜˜AÓ	€BÜ�a˜¨4°BÔ7�D€A€qä�:‰:�dÓ˜BÑ€DØ*€GÜ�=‰=˜Ÿ™¤R§Z¡ZÔ0°D·I±IÀ²NÜ˜Ó!Ð!Üˆt‹9€DàL€GÜœ˜K¨Ó.ÒI´"·-±-×2IÑ2I€Ið(Øˆ9Ø‰Aä$ a¨ V°$¸2Ô>‰DˆAˆqØ�A‘ˆAØ�K‰K˜˜4 Ó$ˆð D€GØ€}˜Ÿ™ ™¨!¯'©'°$©-Ò7Ü˜Ó!Ð!àL€GØ�:‰:�a—g‘g˜Ô/Ü˜Ó!Ð!ä�kÓ"×(Ñ(Ó*€KÚ0€LØ-¨l¨^¸1Ð=€GØ˜,Ñ&Ü˜Ó!Ð!à˜�-€KØ,¨[¨M¸Ð;€GØ˜Ñ$Ü˜Ó!Ð!ä�kÓ"×(Ñ(Ó*€KÚ3€LØ-¨l¨^¸1Ð=€GØ˜,Ñ&Ü˜Ó!Ð!ä�fœe×5Ñ5Ô6Ú1ˆØ-¨g¨Yð 7?ð ?ˆà˜Ñ Ü˜WÓ%Ð%Ø Ò-‰t°5€Häˆb„z”c˜&“kÐ%6Ñ6ðVˆä˜Ó!Ð!ä�„}˜& LÒ0°KÀ8Ò4Kð#ˆä˜Ó!Ð!ð
 ×Ñ˜a 1™f¨4ÐÓ0€FØ�Ò˜AŸG™G B™K¨"Ò,Øˆàˆk˜: {°F¸DÀ(ÈFÐTVÐVÐVøðk ò (Ù˜Ó  aÐ'ûð(ús   Â<0I= É=JÊ	JÊJc                óP  — | j                   }| dk(  }|dk(  r3t        j                  | «      |   j                  |j                  d¬«      } |j                  | «      }|j                  |j                  |d¬«      |«      }t        | d¬«      |z
  }t        |j                  | «      dd|¬«      \  }	}
}|j                  |	|d	¬«      |j                  ||d	¬«      }}	|j                  |j                  | dkD  |«      |	z  d¬«      }|j                  |j                  | dk  |«      |	z  d¬«      }|j                  |dk(  «      }|d
k(  rw|j                  |j                  ||«      |	z  d¬«      dz  }t        j                  |«      d   j                  |«      }t        j                  |«      d   j                  |«      }||dz   z  dz  }||dz   z  d|z  dz   z  }|dk(  rù|j                  |j                  |d¬«      |«      }t        j                  |«      d   j                  ||dz   z  dz  «      }t        j                  |«      d   j                  ||dz   z  d|z  dz   z  «      }|j                  |«      }t        j                  |«      d   j                  |j                  |d¬«      «      }t        j                  |«      |   j                  d«      }|j                  |dz  |z
  d¬«      }|j!                  ||dz  z
  dz  «      }|dv r	||z
  |z  }n|j                  }||||||fS )Nr   rX   Tr   rV   ra   Úaverage)Úreturn_tiesrS   FrY   é   .g      ð?g      Ð?g       @rW   ).r   g        é   é   )r`   r^   )r;   rH   ÚatÚsetÚnanÚisnanr   ro   r   r   Úabsr%   ÚanyÚaddÚsubtractÚ
zeros_likeÚsqrt)rw   ru   rr   rS   r;   Úi_zerosÚi_nanÚn_nanÚcountÚrÚ_ÚtÚr_plusÚr_minusÚhas_tiesÚr_zero_2r@   Úser~   Ú	t_i_zerosÚtie_correctÚzs                         r    Ú_wilcoxon_statisticrŸ   †   s  € Ø�G‰G€EØ�A‰v€Gà�hÒô
 �F‰F�1‹I�gÑ×"Ñ" 2§6¡6°Ð"Ó5ˆà�H‰H�Q‹K€EØ�I‰I�b×&Ñ& u°2Ð&Ó6¸Ó>€EÜ˜Q RÔ(¨5Ñ0€Eä˜Ÿ™˜q›	 9¸$À2ÔF�G€A€qˆ!Ø�9‰9�Q˜ Eˆ9Ó*¨B¯I©I°a¸ÀU¨IÓ,K€q€Aà�V‰V�B—I‘I˜a !™e UÓ+¨aÑ/°bˆVÓ9€FØ�f‰f�R—Y‘Y˜q 1™u eÓ,¨qÑ0°rˆfÓ:€Gà�v‰v�a˜1‘f‹~€Hà�hÒð —6‘6˜"Ÿ)™) G¨UÓ3°aÑ7¸b�6ÓAÀAÑEˆÜ—‘˜“ Ñ$×(Ñ(¨Ó2ˆÜ—&‘&˜“/ #Ñ&×*Ñ*¨8Ó4ˆà	�%˜"‘*Ñ	 Ñ	$€BØ	�%˜"‘*Ñ	  e¡¨b¡Ñ	1€Bà�gÒð —‘˜2×+Ñ+¨G¸"Ð+Ó=¸uÓEˆÜ�V‰V�B‹Z˜‰_×%Ñ% f°¸±Ñ&<¸tÑ&CÓDˆÜ�V‰V�B‹Z˜‰_×%Ñ% f°¸±Ñ&<ÀÀVÁÈbÑ@PÑ&QÓRˆð
 —M‘M 'Ó*ˆ	Ü—F‘F˜9Ó% fÑ-×1Ñ1°"·&±&¸Àr°&Ó2JÓKˆ	Ü�F‰F�1‹I�iÑ ×$Ñ$ RÓ(ˆà—&‘&˜˜A™ ™¨�&Ó+€KØ	�‰�"�{ 1‘}Ñ$¨Ñ*Ó	+€Bð Ð'Ñ'Ø�b‰[˜BÑ‰à�F‰Fˆà�7˜B  5¨(Ð2Ð2r*   c                 ó<   — |dk(  ry|dk(  ry|j                  | «      S )Nr\   r   r[   rV   )Úsign)rž   rt   rS   s      r    Ú_correction_signr¢   Ç   s&   € Ø�iÒØØ	˜Ò	Øà�w‰w�q‹zÐr*   c           	      óÖ  ‡‡‡— t        | |‰||‰|«      }|\	  }Š}}Š}}	}
Št        |«      dk(  r2t        |‰¬«      }t        j                  ||¬«      }‰dk(  r||_        |S t        |‰‰‰¬«      \  }}}}}}‰dk(  r3|s|
dkD  sdŠn)|j                  d   dk  rt        j                  «       ŠndŠ‰dk(  rV|r;t        ||‰¬«      }t        j                  |«      d	   j                  |d
z  |z  «      }t        |t        «       |‰¬«      }�nH‰dk(  �rt!        |«      }t#        j$                  |«      }|dk(  r%|j'                  t#        j(                  |«      «      }nž|dk(  r%|j+                  t#        j,                  |«      «      }ntdt#        j.                  |j+                  t#        j,                  |«      «      |j'                  t#        j(                  |«      «      «      z  }t#        j0                  |dd«      }‰j%                  ||j2                  ¬«      }n<t        j4                  |fˆˆˆfd„fddi‰j7                  «       ¤|ddœ¤Žj8                  }|dk(  r‰j/                  ||«      n|}|dk(  r‰dk(  r‰j;                  |«       n|}|j<                  dk(  r|d   n|}|j<                  dk(  r|d   n|}t        j                  ||¬«      }|	r|j<                  dk(  r|d   n||_        |S )Nr   ©rS   )Ú	statisticÚpvaluer`   r^   r_   rV   é   .g      à?r[   r\   rƒ   r   r:   c                 ó(   •— t        | ‰‰‰¬«      d   S )Nr¤   r   )rŸ   )rw   rU   ru   rS   rr   s     €€€r    rF   z_wilcoxon_nd.<locals>.<lambda>  s   ø€ Ô"5°a¸ÀÐQSÔ"TÐUVÑ"W€ r*   Úpermutation_typeÚsamples)rt   rU   r]   rG   )r   r   r   r   ÚWilcoxonResultÚ
zstatisticrŸ   r=   r   rn   r¢   rH   r†   r�   r   r   r   r   r   rJ   ÚceilrM   ÚfloorÚminimumÚclipr;   Úpermutation_testÚ_asdictr¦   rŠ   re   )rp   rq   rr   rs   rt   ru   rU   Útemprw   r}   r~   ÚNaNÚresr—   r˜   r›   rž   r“   r™   r¡   ÚpÚdistÚ	r_plus_npr¥   rS   s     `  `                  @r    Ú_wilcoxon_ndr¹   Ð   sÄ  ú€ ô ˜˜1˜k¨:°{ÀFÈDÓQ€DØRVÑO€A€{�J ¨V°T¸8ÀVÈRäˆqƒz�Q‚Ü�q˜RÔ ˆÜ×'Ñ'°#¸cÔBˆØ�\Ò!Ø ˆCŒNØˆ
ä.AØ	ˆ6�; 2ô/Ñ+€FˆG�R˜˜E 8ð �ÒÙ˜F QšJØ‰FØ�W‰W�R‰[˜BÒô
 ×,Ñ,Ó.‰Fð "ˆFà�ÒÙÜ# A {°rÔ:ˆDÜ—‘�q“	˜#‘×'Ñ'¨¨s©
°R©Ó8ˆAÜ˜œ=›?¨K¸BÔ?ŠØ	�7Ó	Ü# EÓ*ˆô —J‘J˜vÓ&ˆ	Ø˜&Ò Ø—‘œŸ™ Ó+Ó,‰AØ˜IÒ%Ø—‘œŸ™ Ó+Ó,‰Aà”B—J‘J˜tŸw™w¤r§x¡x°	Ó':Ó;Ø#Ÿx™x¬¯©°	Ó(:Ó;ó=ñ =ˆAä—‘˜˜1˜aÓ ˆAØ�J‰J�q §¡ˆJÓ(‰ä×"Ñ"àˆDÕWñ.ð 'ð.ð +1¯.©.Ó*:ð.ð $¨"ó	.÷ /5©fð	 	
ð 0;¸KÒ/G�—
‘
˜6 7Ô+ÈV€IØ" kÒ1°fÀÒ6Lˆ�‰�‹‰
ÐST€Aà!*§¡°1Ò!4�	˜"’¸)€IØ—‘˜1’ˆˆ"Š !€AÜ
×
#Ñ
#¨iÀÔ
B€CÙØ"#§&¡&¨A¢+˜˜2š°1ˆŒØ€Jr*   )rX   )NrX   Tr]   r^   r   ) Únumpyr   Úscipyr   Ú	_stats_pyr   r   r   Ú r   Ú_axis_nan_policyr	   Ú
_hypotestsr
   Úscipy._lib._utilr   Úscipy._lib._array_apir   r   r   r   r   r   Úscipy._external.array_api_extraÚ	_externalÚarray_api_extrarH   r   r   rŸ   r¢   r¹   rG   r*   r    ú<module>rÅ      s\   ðÛ å ß <Ñ <Ý Ý /Ý +Ý %÷@÷ @ç -Ð -÷*4ñ *4òZHWóV>3òBð >BØ>?ôLr*   