o
    Ö­j.  ã                   @   sn  d dl Zd dlmZmZ d dlZd dlmZ d dlm	Z	m
Z
 d dlmZ G dd„ dƒZG dd	„ d	ƒZg g d
g f‘g dg f‘g dg f‘g dg f‘g dg f‘dgd
dgf‘dgddgf‘dgddgf‘dgddgf‘dgddgf‘g d¢d
g d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢d
g d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢d
g d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢dg d¢f‘g d¢d
g d¢f‘g d¢dg d ¢f‘g d¢dg d!¢f‘g d¢dg d"¢f‘g d¢dg d#¢f‘d$gd% de dd&¡f‘R Zd'd(„ ZdS ))é    N)Úassert_equalÚassert_array_equal)Úskip_xp_invalid_arg)ÚrankdataÚ
tiecorrect)Únp_longc                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestTieCorrectc                 C   s&   t jg t jd�}t|ƒ}t|dƒ dS )z9An empty array requires no correction, should return 1.0.©Údtypeç      ð?N©ÚnpÚarrayÚfloat64r   r   ©ÚselfÚranksÚc© r   úX/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_rank.pyÚ
test_empty   s   zTestTieCorrect.test_emptyc                 C   s(   t jdgt jd�}t|ƒ}t|dƒ dS )z;A single element requires no correction, should return 1.0.r   r	   Nr   r   r   r   r   Útest_one   s   zTestTieCorrect.test_onec                 C   s<   t  d¡}t|ƒ}t|dƒ t  d¡}t|ƒ}t|dƒ dS )z*Arrays with no ties require no correction.ç       @r   ç      @N)r   Úaranger   r   r   r   r   r   Útest_no_correction   s   


z!TestTieCorrect.test_no_correctionc                 C   s,  t  g d¢¡}t|ƒ}d}|j}d|d | |d |   }t||ƒ t  g d¢¡}t|ƒ}d}|j}d|d | |d |   }t||ƒ t  g d¢¡}t|ƒ}d}|j}d|d | |d |   }t||ƒ t  g d¢¡}t|ƒ}d}d}|j}d|d | |d |  |d |   }t||ƒ d	S )
z8Check a few basic examples of the tie correction factor.)r   ç      @r   r   r   é   )ç      ø?r   r   )r   r   r   r   r   )r   r   ç      @r   r   N)r   r   r   Úsizer   )r   r   r   ÚTÚNÚexpectedÚT1ÚT2r   r   r   Ú
test_basic!   s2   


(zTestTieCorrect.test_basicc                 C   sZ   d\}}t  t  |¡|¡}|j}tt|ƒƒ}t|d||d |  t|d | ƒ  ƒ d S )N)iÐ  é   r   r   )r   Úrepeatr   r    r   r   r   Úfloat)r   ÚntieÚkÚaÚnÚoutr   r   r   Útest_overflowD   s
   .zTestTieCorrect.test_overflowN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r&   r/   r   r   r   r   r   
   s    	#r   c                   @   s   e Zd Zdd„ Zej ddg¡ej ddgedƒ¢¡dd	„ ƒƒZd
d„ Z	dd„ Z
edd„ ƒZdd„ Zdd„ Zdd„ Zg d¢Zejgegd  Zej dddg¡ej deeeƒ¡dd„ ƒƒZej dedƒ¡ej de¡dd„ ƒƒZd d!„ Zd"d#„ Zd$d%„ ZdS )&ÚTestRankDatac                 C   sN   t jg td�}t|ƒ}t|t jg t jd�ƒ tg ƒ}t|t jg t jd�ƒ dS )z0stats.rankdata([]) should return an empty array.r	   N©r   r   Úintr   r   r   )r   r,   Úrr   r   r   r   N   s
   zTestRankData.test_emptyÚshape)r   é   é   ÚaxisNr   c                 C   sH   t j|td�}t||d�}|d u rdn|}t|j|ƒ t|jt jƒ d S )Nr	   ©r:   )r   )r   Úemptyr5   r   r   r7   r
   r   )r   r7   r:   r,   r6   Úexpected_shaper   r   r   Útest_empty_multidimV   s
   z TestRankData.test_empty_multidimc                 C   sX   dg}t j|td�}t|ƒ}t|t jdgt jd�ƒ t|ƒ}t|t jdgt jd�ƒ dS )z/Check stats.rankdata with an array of length 1.éd   r	   r   Nr4   )r   Údatar,   r6   r   r   r   r   _   s   zTestRankData.test_onec                 C   s  g d¢}t jg d¢t jd�}t j|td�}t|ƒ}t||ƒ t|ƒ}t||ƒ g d¢}t jg d¢t jd�}t j|td�}t|ƒ}t||ƒ t|ƒ}t||ƒ g d¢}t jg d¢t jd�}t j|td�}t|ƒ}t||ƒ t|ƒ}t||ƒ | dd	¡}t|ƒ}t||ƒ d
S )zBasic tests of stats.rankdata.)r?   é
   é2   )r   r   r   r	   )é(   rA   é   rA   rB   )r   r   r   r   ç      @)é   rF   rF   rA   rA   rA   )rE   rE   rE   r   r   r   r9   r   N)r   r   r   r5   r   r   Úreshape)r   r@   r#   r,   r6   Úa2dr   r   r   r&   h   s0   





zTestRankData.test_basicc                    s°   dd„ ‰dd„ ‰ ‡fdd„}‡ ‡fdd„}d	d
„ }t ˆˆ |||d�‰‡fdd„}g d¢}|tj |d¡ƒ |tj |d¡ d¡ƒ tjg d¢dd�}|tj |d¡ d¡ƒ d S )Nc                    ó   ‡ fdd„ˆ D ƒS )Nc                    ó&   g | ]‰ d t ‡ fdd„ˆD ƒƒ ‘qS )r8   c                 3   ó   � | ]}|ˆ k V  qd S ©Nr   ©Ú.0Úi©Újr   r   Ú	<genexpr>Š   ó   € zXTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>.<genexpr>©Úsum©rN   ©r,   rP   r   Ú
<listcomp>Š   ó   & zNTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>r   rW   r   rW   r   Úmin_rank‰   ó   z:TestRankData.test_rankdata_object_string.<locals>.min_rankc                    rI   )Nc                    s"   g | ]‰ t ‡ fd d„ˆD ƒƒ‘qS )c                 3   s   � | ]}|ˆ kV  qd S rL   r   rM   rP   r   r   rR   �   rS   zXTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>.<genexpr>rT   rV   rW   rP   r   rX   �   s   " zNTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>r   rW   r   rW   r   Úmax_rankŒ   r[   z:TestRankData.test_rankdata_object_string.<locals>.max_rankc                    s   ˆ dd„ t | ƒD ƒƒS )Nc                 S   s   g | ]\}}||f‘qS r   r   )rN   rO   Úxr   r   r   rX   �   s    zRTestRankData.test_rankdata_object_string.<locals>.ordinal_rank.<locals>.<listcomp>)Ú	enumeraterW   )rZ   r   r   Úordinal_rank�   s   z>TestRankData.test_rankdata_object_string.<locals>.ordinal_rankc                    s   dd„ t ˆ| ƒˆ | ƒƒD ƒS )Nc                 S   s   g | ]
\}}|| d  ‘qS )r   r   )rN   rO   rQ   r   r   r   rX   “   s    zRTestRankData.test_rankdata_object_string.<locals>.average_rank.<locals>.<listcomp>)ÚziprW   )r\   rZ   r   r   Úaverage_rank’   s   z>TestRankData.test_rankdata_object_string.<locals>.average_rankc                    s   t  | ¡‰ ‡ fdd„| D ƒS )Nc                    rJ   )r8   c                 3   rK   rL   r   rM   rP   r   r   rR   —   rS   zZTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>.<genexpr>rT   rV   ©ÚbrP   r   rX   —   rY   zPTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>)r   ÚuniquerW   r   rb   r   Ú
dense_rank•   s   
z<TestRankData.test_rankdata_object_string.<locals>.dense_rank)ÚminÚmaxÚordinalÚaverageÚdensec                    s,   dD ]}t | |d�}t|ˆ | | ƒƒ qd S )N)rf   rg   rj   rh   ri   ©Úmethod©r   r   )r,   rl   r.   )Úrankfr   r   Úcheck_ranksœ   s   þz=TestRankData.test_rankdata_object_string.<locals>.check_ranks)	ÚfooÚbarÚquxÚxyzÚabcÚefgÚaceÚqweÚqazéÈ   Úobject)r   r8   r9   gX9´Èv¾@r   gTã¥›Ä 	@r	   )Údictr   ÚrandomÚchoiceÚastyper   )r   r_   ra   re   ro   Úvalr   )r\   rZ   rn   r   Útest_rankdata_object_string†   s   ÿz(TestRankData.test_rankdata_object_stringc                 C   s‚   t jddgt jd�}t|ƒ}t|ddgƒ t jddgt jd�}t|ƒ}t|ddgƒ t jddgt jd�}t|ƒ}t|ddgƒ d S )Nl            l           r	   r   r   lüÿÿÿÿÿÿÿ)r   r   Úuint64r   r   Úint64)r   r@   r6   r   r   r   Útest_large_int¨   s   zTestRankData.test_large_intc                 C   sD   dD ]}t j|td�}t|ƒ}d|d  }t||| d| ƒ qd S )N)i'  i † i@B r	   g      à?r8   ztest failed with n=%d)r   Úonesr5   r   r   )r   r-   r@   r6   Úexpected_rankr   r   r   Útest_big_tieµ   s   
ÿüzTestRankData.test_big_tiec                 C   s`   g d¢g d¢g}g d¢g d¢g}t |dd�}t||ƒ g d¢g d¢g}t |d	d�}t||ƒ d S )
N)r   r9   r8   )é   r9   r9   )r   r   r   )r   r   r   r   r;   ©r   r   r   )r   r   r   r8   rm   )r   r@   Ú	expected0Úr0Ú	expected1Úr1r   r   r   Ú	test_axis½   s   ÿÿ
ÿzTestRankData.test_axis)ri   rf   rg   rj   rh   r‡   r   r8   zmethod, dtypec                 C   s8   d}t  |¡}t|||d�}t|j|ƒ t|j|ƒ d S )N)r   r   )rl   r:   )r   Úzerosr   r   r7   r
   )r   r:   rl   r
   r7   r@   r6   r   r   r   Útest_size_0_axisÌ   s
   
zTestRankData.test_size_0_axisrl   c                    s°   d}t j d¡}|j|d�}|j|d�dk }|j|d�dk }|j|d�dk }t j||< t j ||< || t j  dd„ ‰ ‡ fdd	„}	t|||d
d�}
|	|||d�}t|
|ƒ d S )N)rF   é   é   iŠôm)r    gš™™™™™Ù?gš™™™™™¹?c                 S   s@   t  | ¡}t  | ¡}| |  }t||ƒ}||| < t j||< |S rL   )r   Ú
zeros_likeÚisnanr   Únan)r,   rl   r.   rO   Úa_compressedÚresr   r   r   Úrank_1d_omitã   s   





z:TestRankData.test_nan_policy_omit_3d.<locals>.rank_1d_omitc                    s   t  ‡ ‡fdd„|| ¡S )Nc                    s
   ˆ| ˆ ƒS rL   r   rW   )rl   r—   r   r   Ú<lambda>í   s   
 zITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>)r   Úapply_along_axis)r,   rl   r:   ©r—   rk   r   Ú	rank_omitì   s   ÿz7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omitÚomit©r:   Ú
nan_policyr;   )r   r|   ÚRandomStater”   Úinfr   r   )r   r:   rl   r7   Úrngr,   rO   rQ   r+   r›   r–   Úres0r   rš   r   Útest_nan_policy_omit_3dÕ   s   
	z$TestRankData.test_nan_policy_omit_3dc                 C   s„   dt jdgddt jgg d¢g}tt|d dd�dt jd	d
dt jdddg	ƒ tt|d dd�t jt jt jt jt jt jt jt jt jg	ƒ d S )Nr   r   r‡   r9   ©r8   r9   r9   rœ   r�   r   g      @g      @r   r   Ú	propagate©r   r”   r   r   ©r   r@   r   r   r   Útest_nan_policy_2d_axis_noneõ   s   

þÿÿÿz)TestRankData.test_nan_policy_2d_axis_nonec                 C   sî   ddddt jt jg}tjtdd�� t|dd� W d   ƒ n1 s"w   Y  dt jdgd	dt jgt jddgg}tjtdd�� t|ddd
� W d   ƒ n1 sQw   Y  tjtdd�� t|ddd
� W d   ƒ d S 1 spw   Y  d S )Nr   r9   r   éþÿÿÿzThe input contains nan)ÚmatchÚraise©rž   r‡   r�   r8   )r   r”   ÚpytestÚraisesÚ
ValueErrorr   r§   r   r   r   Útest_nan_policy_raise   s   ÿ


þÿ"ÿz"TestRankData.test_nan_policy_raisec                 C   sÎ   ddddt jt jg}tt|dd�t jt jt jt jt jt jgƒ dt jdgddt jgg d¢g}tt|ddd	�d
t jt jgdt jt jgdt jt jggƒ tt|d
dd	�t jt jt jgt jt jt jgg d¢gƒ d S )Nr   r9   r   r©   r¥   r¬   r‡   r¤   r�   r8   )r8   r   r   r¦   r§   r   r   r   Útest_nan_policy_propagate  s(   ÿ

þþÿþÿz&TestRankData.test_nan_policy_propagate)r0   r1   r2   r   r­   ÚmarkÚparametrizeÚranger>   r   r&   r   r€   rƒ   r†   r�   Úmethodsr   r   r   Údtypesr`   r�   r£   r¨   r°   r±   r   r   r   r   r3   L   s.    	
!r3   ri   rf   rg   rj   rh   r?   r   )r?   r?   r?   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r?   é,  ry   rˆ   )r?   ry   r·   ry   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r?   ry   r·   ry   r?   )r   ç      @rE   r¸   r   )r   r   rE   r   r   )r   r   rE   r   r   )r   r   r   r   r   )r   r   rE   r   r   rA   rD   g      ?@c                  C   s*   t D ]\} }}t| |d�}t||ƒ qd S )Nrk   )Ú_casesr   r   )Úvaluesrl   r#   r6   r   r   r   Ú
test_casesO  s   þr»   )Únumpyr   Únumpy.testingr   r   r­   Úscipy.conftestr   Úscipy.statsr   r   Úscipy._lib._utilr   r   r3   r   r¹   r»   r   r   r   r   Ú<module>   s’    B Zþýüûúø	÷
öõôòñðïîìëêéèæåäãâ à!ß"Þ#Ý$Ü&Ú*