
    _Mh.                        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          Z G 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%z  d ej        dd&          fR Zd' ZdS )(    N)assert_equalassert_array_equal)skip_xp_invalid_arg)rankdata
tiecorrect)np_longc                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestTieCorrectc                     t          j        g t           j                  }t          |          }t	          |d           dS )z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfrankscs      [/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_rank.py
test_emptyzTestTieCorrect.test_empty   s;    2:...uQ    c                     t          j        dgt           j                  }t          |          }t	          |d           dS )z;A single element requires no correction, should return 1.0.r   r   Nr   r   s      r   test_onezTestTieCorrect.test_one   s=    #bj111uQr   c                     t          j        d          }t          |          }t          |d           t          j        d          }t          |          }t          |d           dS )z*Arrays with no ties require no correction.       @r         @N)r   aranger   r   r   s      r   test_no_correctionz!TestTieCorrect.test_no_correction   s\    	#uQ	#uQr   c                    t          j        g d          }t          |          }d}|j        }d|dz  |z
  |dz  |z
  z  z
  }t	          ||           t          j        g d          }t          |          }d}|j        }d|dz  |z
  |dz  |z
  z  z
  }t	          ||           t          j        g d          }t          |          }d}|j        }d|dz  |z
  |dz  |z
  z  z
  }t	          ||           t          j        g d          }t          |          }d}d}|j        }d|dz  |z
  |dz  |z
  z   |dz  |z
  z  z
  }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T2s           r   
test_basiczTestTieCorrect.test_basic!   s    ))uJ!Q$(q!tax00Q!!! ))uJ!Q$(q!tax00Q!!! ---..uJ!Q$(q!tax00Q!!! 22233uJ2q52:"a%"*5!Q$(CCQ!!!!!r   c           	         d\  }}t          j        t          j        |          |          }|j        }t	          t          |                    }t          |d||dz  |z
  z  t          |dz  |z
            z  z
             d S )N)i     r   r#   )r   repeatr   r&   r   r   r   float)r   ntiekanouts         r   test_overflowzTestTieCorrect.test_overflowD   sy    aIbillD))F!%%S#T1Wt^ 4uQTAX FFGGGGGr   N)__name__
__module____qualname__r   r   r    r,   r6    r   r   r
   r
   
   se              !" !" !"FH H H H Hr   r
   c                   b   e Zd Zd Zej                            ddg          ej                            ddg ed                    d                         Zd Z	d	 Z
ed
             Zd Zd Zd Zg dZej        gegdz  z   Zej                            dddg          ej                            d eee                    d                         Zej                            d ed                    ej                            de          d                         Zd Zd Zd ZdS )TestRankDatac                 0   t          j        g t                    }t          |          }t	          |t          j        g t           j                             t          g           }t	          |t          j        g t           j                             dS )z0stats.rankdata([]) should return an empty array.r   Nr   r   intr   r   r   )r   r3   rs      r   r   zTestRankData.test_emptyN   st    HRs###QKK1bhr<<<===RLL1bhr<<<=====r   shape)r         axisNr#   c                     t          j        |t                    }t          ||          }|dn|}t	          |j        |           t	          |j        t           j                   d S )Nr   rD   )r   )r   emptyr?   r   r   rA   r   r   )r   rA   rD   r3   r@   expected_shapes         r   test_empty_multidimz TestRankData.test_empty_multidimV   sc     HU#&&&QT"""!%5QWn---QWbj)))))r   c                 :   dg}t          j        |t                    }t          |          }t	          |t          j        dgt           j                             t          |          }t	          |t          j        dgt           j                             dS )z/Check stats.rankdata with an array of length 1.d   r   r   Nr>   )r   datar3   r@   s       r   r   zTestRankData.test_one_   s    uHT%%%QKK1bhuBJ???@@@TNN1bhuBJ???@@@@@r   c                 j   g d}t          j        g dt           j                  }t          j        |t                    }t	          |          }t          ||           t	          |          }t          ||           g d}t          j        g dt           j                  }t          j        |t                    }t	          |          }t          ||           t	          |          }t          ||           g d}t          j        g dt           j                  }t          j        |t                    }t	          |          }t          ||           t	          |          }t          ||           |                    dd	          }t	          |          }t          ||           d
S )zBasic tests of stats.rankdata.)rK   
   2   )r   r   r   r   )(   rN      rN   rO   )r%   r$   r   r$         @)   rS   rS   rN   rN   rN   )rR   rR   rR   r   r   r   rC   r#   N)r   r   r   r?   r   r   reshape)r   rL   r)   r3   r@   a2ds         r   r,   zTestRankData.test_basich   s   }}8OOO2:>>>HT%%%QKK1h'''TNN1h'''###8555RZHHHHT%%%QKK1h'''TNN1h''''''8:::"*MMMHT%%%QKK1h'''TNN1h'''ii1ooSMM1h'''''r   c                    d d fd}fd}d }t          |||          fd}g d} |t          j                            |d	                      |t          j                            |d	                              d
                     t          j        g dd
          } |t          j                            |d	                              d
                     d S )Nc                        fd D             S )Nc                 N    g | ] d t          fdD                       z   !S )rB   c              3   $   K   | ]
}|k     V  d S Nr:   .0ijs     r   	<genexpr>zXTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>.<genexpr>   '      --aAE------r   sumr\   r^   r3   s    @r   
<listcomp>zNTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>   <    999!A----1------999r   r:   r3   s   `r   min_rankz:TestRankData.test_rankdata_object_string.<locals>.min_rank   s    9999q9999r   c                        fd D             S )Nc                 H    g | ]t          fd D                       S )c              3   $   K   | ]
}|k    V  d S rZ   r:   r[   s     r   r_   zXTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>.<genexpr>   s'      **1Q******r   ra   rc   s    @r   rd   zNTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>   s7    666qC*********666r   r:   rf   s   `r   max_rankz:TestRankData.test_rankdata_object_string.<locals>.max_rank   s    6666A6666r   c                 H     d t          |           D                       S )Nc                     g | ]	\  }}||f
S r:   r:   )r\   r]   xs      r   rd   zRTestRankData.test_rankdata_object_string.<locals>.ordinal_rank.<locals>.<listcomp>   s     ===1aV===r   )	enumerate)r3   rg   s    r   ordinal_rankz>TestRankData.test_rankdata_object_string.<locals>.ordinal_rank   s(    8==	!===>>>r   c                 \    d t           |            |                     D             S )Nc                 $    g | ]\  }}||z   d z  S )r   r:   r[   s      r   rd   zRTestRankData.test_rankdata_object_string.<locals>.average_rank.<locals>.<listcomp>   s$    LLLdaQUcMLLLr   )zip)r3   rk   rg   s    r   average_rankz>TestRankData.test_rankdata_object_string.<locals>.average_rank   s1    LLc((1++xx{{.K.KLLLLr   c                 H    t          j        |           fd| D             S )Nc                 N    g | ] d t          fdD                       z   !S )rB   c              3   $   K   | ]
}|k     V  d S rZ   r:   r[   s     r   r_   zZTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>.<genexpr>   r`   r   ra   )r\   r^   bs    @r   rd   zPTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>   re   r   )r   unique)r3   rx   s    @r   
dense_rankz<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s*    	!A9999q9999r   )minmaxordinalaveragedensec                 r    dD ]2}t          | |          }t          | |         |                      3d S )N)r{   r|   r   r}   r~   methodr   r   )r3   r   r5   rankfs      r   check_ranksz=TestRankData.test_rankdata_object_string.<locals>.check_ranks   sO    E : :q000"3fa(8(89999: :r   )	foobarquxxyzabcefgaceqweqaz   object)r   rB   rC   gX9v@r#   gT㥛 	@r   )dictr   randomchoiceastyper   )	r   rp   rt   rz   r   valrk   rg   r   s	         @@@r   test_rankdata_object_stringz(TestRankData.test_rankdata_object_string   sZ   	: 	: 	:	7 	7 	7	? 	? 	? 	? 	?	M 	M 	M 	M 	M 	M	: 	: 	: x)= = =	: 	: 	: 	: 	:
 NMMBI$$S#..///BI$$S#..55h??@@@h111BBBBI$$S#..55h??@@@@@r   c                    t          j        ddgt           j                  }t          |          }t	          |ddg           t          j        ddgt           j                  }t          |          }t	          |ddg           t          j        ddgt           j                  }t          |          }t	          |ddg           d S )Nl            l           r   r   r   l)r   r   uint64r   r   int64)r   rL   r@   s      r   test_large_intzTestRankData.test_large_int   s    x(	:::TNN1sCj)))x(999TNN1sCj)))x):::TNN1sCj)))))r   c                     dD ]K}t          j        |t                    }t          |          }d|dz   z  }t	          |||z  d|z             Ld S )N)i'  i i@B r   g      ?rB   ztest failed with n=%d)r   onesr?   r   r   )r   r4   rL   r@   expected_ranks        r   test_big_tiezTestRankData.test_big_tie   so    ) 	< 	<A71C(((DA1q5MMq-$"66:< < < <		< 	<r   c                     g dg dg}g dg dg}t          |d          }t          ||           g dg dg}t          |d	          }t          ||           d S )
N)r   rC   rB   )   rC   rC   )r   r$   r   )r   r$   r   r   rF   r   r   r   )r   r$   r$   rB   r   )r   rL   	expected0r0	expected1r1s         r   	test_axiszTestRankData.test_axis   s    				"]]"]]$	d###2y)))!\\#^^%	d###2y)))))r   )r~   r{   r|   r   r}   r   r   rB   zmethod, dtypec                     d}t          j        |          }t          |||          }t          |j        |           t          |j        |           d S )N)r#   r   )r   rD   )r   zerosr   r   rA   r   )r   rD   r   r   rA   rL   r@   s          r   test_size_0_axiszTestRankData.test_size_0_axis   sT     xT&t444QWe$$$QWe$$$$$r   r   c                    d}t           j                            d          }|                    |          }|                    |          dk     }|                    |          dk     }|                    |          dk     }t           j        ||<   t           j         ||<   ||         t           j        z
   d fd}	t          |||d	          }
 |	|||
          }t          |
|           d S )N)rS         im)r&   g?g?c                     t          j        |           }t          j        |           }| |          }t          ||          }||| <   t           j        ||<   |S rZ   )r   
zeros_likeisnanr   nan)r3   r   r5   r]   a_compressedress         r   rank_1d_omitz:TestRankData.test_nan_policy_omit_3d.<locals>.rank_1d_omit   sS    -""CAaR5L<00CCGVCFJr   c                 :    t          j        fd||           S )Nc                      |           S rZ   r:   )r3   r   r   s    r   <lambda>zITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1H1H r   )r   apply_along_axis)r3   r   rD   r   s    ` r   	rank_omitz7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s-    &'H'H'H'H'H'+Q0 0 0r   omitrD   
nan_policyrF   )r   r   RandomStater   infr   r   )r   rD   r   rA   rngr3   r]   r^   r2   r   r   res0r   s               @r   test_nan_policy_omit_3dz$TestRankData.test_nan_policy_omit_3d   s    i##H--JJEJ""JJEJ""S(JJEJ""S(JJEJ""S(v!w!	!rv	 	 		0 	0 	0 	0 	0 q&t???yF...3%%%%%r   c                    dt           j        dgddt           j        gg dg}t          t          |d d          dt           j        d	d
dt           j        dddg	           t          t          |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   rC   rB   rC   rC   r   r   r   g      @g      @r%   r   	propagater   r   r   r   r   rL   s     r   test_nan_policy_2d_axis_nonez)TestRankData.test_nan_policy_2d_axis_none   s    BFAArv		 	8DtGGGBBFBBG	I 	I 	I8DtLLLFBFBFBFBFBFFBFBF4	5 	5 	5 	5 	5r   c                 4   ddddt           j        t           j        g}t          j        t          d          5  t          |d           d d d            n# 1 swxY w Y   dt           j        dgd	dt           j        gt           j        ddgg}t          j        t          d          5  t          |dd
           d d d            n# 1 swxY w Y   t          j        t          d          5  t          |dd
           d d d            d S # 1 swxY w Y   d S )Nr   rC   r#   zThe input contains nan)matchraiser   r   r   rB   )r   r   pytestraises
ValueErrorr   r   s     r   test_nan_policy_raisez"TestRankData.test_nan_policy_raise   s   1aRVRV,]:-EFFF 	/ 	/Tg....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ BFAArvA  ]:-EFFF 	7 	7Tg6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 ]:-EFFF 	7 	7Tg6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s5   AAA(CCC-DDDc           	         ddddt           j        t           j        g}t          t          |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
t           j        t           j        gdt           j        t           j        gdt           j        t           j        gg           t          t          |d
d	          t           j        t           j        t           j        gt           j        t           j        t           j        gg dg           d S )Nr   rC   r#   r   r   r   r   r   r   rB   )rB   r"   r"   r   r   s     r   test_nan_policy_propagatez&TestRankData.test_nan_policy_propagate  s-   1aRVRV,8D[AAAFBFBFBFBFBFK	M 	M 	M BFAArv		 	8Dq[III///1	2 	2 	2 	8Dq[IIIVRVRV4VRVRV4)MM+	, 	, 	, 	, 	,r   )r7   r8   r9   r   r   markparametrizerangerI   r   r,   r   r   r   r   r   methodsr   r   r   dtypesrs   r   r   r   r   r   r:   r   r   r<   r<   L   s       > > > [Wyk22[Vd%6UU1XX%677* * 87 32*A A A( ( (< A A AB* * *< < <
* 
* 
* <;;Gj\WIaK'F[VaV,,[_cc'6.B.BCC% % DC -,% [VUU1XX..[Xw//& & 0/ /.&<	5 	5 	57 7 7", , , , ,r   r<   r~   r{   r|   r   r}   rK   r   )rK   rK   rK   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )rK   ,  r   r   )rK   r   r   r   )r   r"   r%   r"   )r   r   r%   r   )r   r   r%   r   )r   r   r   r   )r   r   r%   r   )rK   r   r   r   rK   )r$         @rR   r   r$   )r   r   rR   r   r   )r   r%   rR   r%   r   )r   r   r   r   r   )r   r   rR   r%   r   rN   rQ   g      ?@c                  d    t           D ]'\  } }}t          | |          }t          ||           (d S )Nr   )_casesr   r   )valuesr   r)   r@   s       r   
test_casesr   O  sG    $* ( ( VF+++1h''''( (r   )numpyr   numpy.testingr   r   r   scipy.conftestr   scipy.statsr   r   scipy._lib._utilr   r
   r<   r   r   r   r:   r   r   <module>r      s       : : : : : : : :  . . . . . . , , , , , , , , $ $ $ $ $ $?H ?H ?H ?H ?H ?H ?H ?HDV, V, V, V, V, V, V, V,r'
B'
 O'
 O	'

 "'
 B'
 
UIu'
 
UEC5'
 
UEC5'
 
UGcU'
 
UIu'
 __i1'
 __e___-'
  __e___-!'
" __g/#'
$ __i1%'
( __i1)'
* __e___-+'
, __e___--'
. __g//'
0 __i11'
4 9&:&:&:;5'
6 5"6"6"677'
8 5"6"6"679'
: 7$8$8$89;'
< 9&:&:&:;='
@ 	+D+D+DEA'
B '@'@'@AC'
D '@'@'@AE'
F )B)B)BCG'
H 	+D+D+DEI'
L 	TBY	929S$//0M'
 '
T( ( ( ( (r   