
    (ph.                        S SK rS SKJrJr  S SKrS SKJr  S SKJ	r	J
r
  S SKJr   " S S5      r " S S	5      r/ / S
/ 4P/ S/ 4P/ S/ 4P/ S/ 4P/ S/ 4PS/S
S/4PS/SS/4PS/SS/4PS/SS/4PS/SS/4P/ SQS
/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS
/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS
/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS/ SQ4P/ SQS
/ SQ4P/ SQS/ S Q4P/ SQS/ S!Q4P/ SQS/ S"Q4P/ SQS/ S#Q4PS$/S%-  S\R                  " SS&5      4P7rS' rg)(    N)assert_equalassert_array_equal)skip_xp_invalid_arg)rankdata
tiecorrect)np_longc                   2    \ rS rSrS rS rS rS rS rSr	g)	TestTieCorrect
   c                 x    [         R                  " / [         R                  S9n[        U5      n[	        US5        g)z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfrankscs      N/var/www/html/venv/lib/python3.13/site-packages/scipy/stats/tests/test_rank.py
test_emptyTestTieCorrect.test_empty   s*    2::.uQ    c                 z    [         R                  " S/[         R                  S9n[        U5      n[	        US5        g)z;A single element requires no correction, should return 1.0.r   r   Nr   r   s      r   test_oneTestTieCorrect.test_one   s,    #bjj1uQr   c                     [         R                  " S5      n[        U5      n[        US5        [         R                  " S5      n[        U5      n[        US5        g)z*Arrays with no ties require no correction.       @r         @N)r   aranger   r   r   s      r   test_no_correction!TestTieCorrect.test_no_correction   sD    		#uQ		#uQr   c                    [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnUR                  nSUS-  U-
  US-  U-
  -  -
  n[	        X%5        [         R                  " / SQ5      n[        U5      nSnSnUR                  nSUS-  U-
  US-  U-
  -   US-  U-
  -  -
  n[	        X%5        g	)
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_basicTestTieCorrect.test_basic!   sR    )uJJ!Q$(q!tax00Q! )uJJ!Q$(q!tax00Q! -.uJJ!Q$(q!tax00Q! 23uJJ2q52:"a%"*5!Q$(CCQ!r   c           	          Su  p[         R                  " [         R                  " U5      U5      nUR                  n[	        [        U5      5      n[        USX!S-  U-
  -  [        US-  U-
  5      -  -
  5        g )N)i     r   r'   )r   repeatr"   r*   r   r   r   float)r   ntiekanouts         r   test_overflowTestTieCorrect.test_overflowD   sc    IIbiilD)FF!%S#1Wt^ 4uQTAX FFGr    N)
__name__
__module____qualname____firstlineno__r   r   r#   r0   r;   __static_attributes__r=   r   r   r
   r
   
   s    !"FHr   r
   c                   B   \ rS rSrS r\R                  R                  SS/5      \R                  R                  SS/\" S5      Q5      S 5       5       r	S	 r
S
 r\S 5       rS rS rS r/ SQr\R&                  /\/S-  -   r\R                  R                  SSS/5      \R                  R                  S\" \\5      5      S 5       5       r\R                  R                  S\" S5      5      \R                  R                  S\5      S 5       5       rS rS rS rSrg)TestRankDataL   c                    [         R                  " / [        S9n[        U5      n[	        U[         R                  " / [         R
                  S95        [        / 5      n[	        U[         R                  " / [         R
                  S95        g)z0stats.rankdata([]) should return an empty array.r   Nr   r   intr   r   r   )r   r8   rs      r   r   TestRankData.test_emptyN   sV    HHRs#QK1bhhr<=RL1bhhr<=r   shape)r         axisNr'   c                     [         R                  " U[        S9n[        X2S9nUc  SOUn[	        UR
                  U5        [	        UR                  [         R                  5        g )Nr   rN   )r   )r   emptyrH   r   r   rK   r   r   )r   rK   rN   r8   rI   expected_shapes         r   test_empty_multidim TestRankData.test_empty_multidimV   sI     HHU#&Q"!%5QWWn-QWWbjj)r   c                     S/n[         R                  " U[        S9n[        U5      n[	        U[         R                  " S/[         R
                  S95        [        U5      n[	        U[         R                  " S/[         R
                  S95        g)z/Check stats.rankdata with an array of length 1.d   r   r   NrG   )r   datar8   rI   s       r   r   TestRankData.test_one_   sa    uHHT%QK1bhhuBJJ?@TN1bhhuBJJ?@r   c                    / SQn[         R                  " / SQ[         R                  S9n[         R                  " U[        S9n[	        U5      n[        XB5        [	        U5      n[        XB5        / SQn[         R                  " / SQ[         R                  S9n[         R                  " U[        S9n[	        U5      n[        XB5        [	        U5      n[        XB5        / SQn[         R                  " / SQ[         R                  S9n[         R                  " U[        S9n[	        U5      n[        XB5        [	        U5      n[        XB5        UR                  SS	5      n[	        U5      n[        XB5        g
)zBasic tests of stats.rankdata.)rV   r   2   )r!   r   r    r   )(   r      r   rZ   )r)   r(   r!   r(         @)   r^   r^   r   r   r   )r]   r]   r]   r    r    r    rM   r'   N)r   r   r   rH   r   r   reshape)r   rW   r-   r8   rI   a2ds         r   r0   TestRankData.test_basich   s   88O2::>HHT%QK1'TN1'#885RZZHHHT%QK1'TN1''88:"**MHHT%QK1'TN1'ii1oSM1'r   c                   ^^^ S mS mU4S jnUU4S jnS n[        TTUX#S9mU4S jn/ SQnU" [        R                  R                  US	5      5        U" [        R                  R                  US	5      R	                  S
5      5        [        R
                  " / SQS
S9nU" [        R                  R                  US	5      R	                  S
5      5        g )Nc                 b   ^ U  V^s/ s H  mS[        U4S jU  5       5      -   PM     sn$ s  snf )NrL   c              3   ,   >#    U  H	  oT:  v   M     g 7fNr=   .0ijs     r   	<genexpr>MTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<genexpr>        -1aE1   sumr8   ri   s    `r   min_rank:TestRankData.test_rankdata_object_string.<locals>.min_rank   s+    789q!A-1---q999s   ",c                 \   ^ U  V^s/ s H  m[        U4S jU  5       5      PM     sn$ s  snf )Nc              3   ,   >#    U  H	  oT:*  v   M     g 7fre   r=   rf   s     r   rj   MTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<genexpr>   s     *1Qrm   rn   rp   s    `r   max_rank:TestRankData.test_rankdata_object_string.<locals>.max_rank   s&    456AqC***A666s   )c                 ^   > T" [        U 5       VVs/ s H  u  pX!4PM
     snn5      $ s  snnf re   )	enumerate)r8   rh   xrq   s      r   ordinal_rank>TestRankData.test_rankdata_object_string.<locals>.ordinal_rank   s(    	!=aV=>>=s   )
c                 t   > [        T" U 5      T" U 5      5       VVs/ s H  u  pX-   S-  PM     snn$ s  snnf )Nr    )zip)r8   rh   ri   rv   rq   s      r   average_rank>TestRankData.test_rankdata_object_string.<locals>.average_rank   s4    .1(1+x{.KL.KdaQUcM.KLLLs   4c                    ^ [         R                  " U 5      nU  V^s/ s H  mS[        U4S jU 5       5      -   PM     sn$ s  snf )NrL   c              3   ,   >#    U  H	  oT:  v   M     g 7fre   r=   rf   s     r   rj   OTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   rl   rm   )r   uniquero   )r8   bri   s     `r   
dense_rank<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s8    		!A789q!A-1---q999s   "A)minmaxordinalaveragedensec                 T   > S H!  n[        XS9n[        UTU   " U 5      5        M#     g )N)r   r   r   r   r   methodr   r   )r8   r   r:   rankfs      r   check_ranks=TestRankData.test_rankdata_object_string.<locals>.check_ranks   s+    Eq0"3fa(89 Fr   )	foobarquxxyzabcefgaceqweqaz   object)r   rL   rM   gX9v@r'   gT㥛 	@r   )dictr   randomchoiceastyper   )	r   r{   r   r   r   valrv   rq   r   s	         @@@r   test_rankdata_object_string(TestRankData.test_rankdata_object_string   s    	:	7	?	M	: x)=	:
 NBII$$S#./BII$$S#.55h?@hh1BBII$$S#.55h?@r   c                 x   [         R                  " SS/[         R                  S9n[        U5      n[	        USS/5        [         R                  " SS/[         R
                  S9n[        U5      n[	        USS/5        [         R                  " SS/[         R
                  S9n[        U5      n[	        USS/5        g )Nl            l           r   r   r    l)r   r   uint64r   r   int64)r   rW   rI   s      r   test_large_intTestRankData.test_large_int   s    xx(		:TN1sCj)xx(9TN1sCj)xx):TN1sCj)r   c                     S HA  n[         R                  " U[        S9n[        U5      nSUS-   -  n[	        X4U-  SU-  5        MC     g )N)i'  i i@B r   g      ?rL   ztest failed with n=%d)r   onesrH   r   r   )r   r9   rW   rI   expected_ranks        r   test_big_tieTestRankData.test_big_tie   sI    )A771C(DA1q5MMq$"66:<	 *r   c                     / SQ/ SQ/n/ SQ/ SQ/n[        USS9n[        X25        / SQ/ SQ/n[        US	S9n[        XT5        g )
N)r   rM   rL   )   rM   rM   )r   r(   r   )r    r(   r    r   rP   r   r!   r    )r!   r(   r(   rL   r   )r   rW   	expected0r0	expected1r1s         r   	test_axisTestRankData.test_axis   sQ    ""$	d#2)!#%	d#2)r   )r   r   r   r   r   r   r   rL   zmethod, dtypec                     Sn[         R                  " U5      n[        XRUS9n[        UR                  U5        [        UR
                  U5        g )N)r'   r   )r   rN   )r   zerosr   r   rK   r   )r   rN   r   r   rK   rW   rI   s          r   test_size_0_axisTestRankData.test_size_0_axis   s>     xxTt4QWWe$QWWe$r   r   c                   ^ Sn[         R                  R                  S5      nUR                  US9nUR                  US9S:  nUR                  US9S:  nUR                  US9S:  n[         R                  XV'   [         R                  * XW'   XX   [         R                  -
    S mU4S jn	[        XRUSS	9n
U	" XRUS
9n[        X5        g )N)r^         im)r*   g?g?c                     [         R                  " U 5      n[         R                  " U 5      nX)    n[        XA5      nXRU) '   [         R                  X#'   U$ re   )r   
zeros_likeisnanr   nan)r8   r   r:   rh   a_compressedress         r   rank_1d_omit:TestRankData.test_nan_policy_omit_3d.<locals>.rank_1d_omit   sI    --"CAR5L<0CGVVCFJr   c                 >   >^ [         R                  " UU4S jX 5      $ )Nc                    > T" U T5      $ re   r=   )r8   r   r   s    r   <lambda>ITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r8   r   rN   r   s    ` r   	rank_omit7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+0 0r   omitrN   
nan_policyrP   )r   r   RandomStater   infr   r   )r   rN   r   rK   rngr8   rh   ri   r7   r   r   res0r   s               @r   test_nan_policy_omit_3d$TestRankData.test_nan_policy_omit_3d   s     ii##H-JJEJ"JJEJ"S(JJEJ"S(JJEJ"S(vvw	rvv		0 qt?.3%r   c                    S[         R                  S/SS[         R                  // SQ/n[        [        US SS9S[         R                  S	S
S[         R                  SSS/	5        [        [        US SS9[         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  [         R                  /	5        g )Nr   r'   r   rM   rL   rM   rM   r   r   r   g      @g      @r)   r    	propagater   r   r   r   r   rW   s     r   test_nan_policy_2d_axis_none)TestRankData.test_nan_policy_2d_axis_none   s    BFFAArvv 	8DtGBBFFBBG	I8DtLFFBFFBFFBFFBFFBFFFFBFFBFF4	5r   c                 .   SSSS[         R                  [         R                  /n[        R                  " [        SS9   [        USS9  S S S 5        S[         R                  S/S	S[         R                  /[         R                  SS//n[        R                  " [        SS9   [        USSS
9  S S S 5        [        R                  " [        SS9   [        USSS
9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NM= f! , (       d  f       g = f)Nr   rM   r'   zThe input contains nan)matchraiser   r   r   rL   )r   r   pytestraises
ValueErrorr   r   s     r   test_nan_policy_raise"TestRankData.test_nan_policy_raise   s    1aRVVRVV,]]:-EFTg. G BFFAArvvA  ]]:-EFTg6 G ]]:-EFTg6 GF GF GF GFs#   C$"C5D$
C25
D
Dc           	      L   SSSS[         R                  [         R                  /n[        [        USS9[         R                  [         R                  [         R                  [         R                  [         R                  [         R                  /5        S[         R                  S/SS[         R                  // SQ/n[        [        USSS	9S
[         R                  [         R                  /S[         R                  [         R                  /S[         R                  [         R                  //5        [        [        US
SS	9[         R                  [         R                  [         R                  /[         R                  [         R                  [         R                  // SQ/5        g )Nr   rM   r'   r   r   r   r   r   r   rL   )rL   r&   r&   r   r   s     r   test_nan_policy_propagate&TestRankData.test_nan_policy_propagate  s   1aRVVRVV,8D[AFFBFFBFFBFFBFFBFFK	M BFFAArvv 	8Dq[I///1	2 	8Dq[IVVRVVRVV4VVRVVRVV4)+	,r   r=   )r>   r?   r@   rA   r   r   markparametrizerangerS   r   r0   r   r   r   r   r   methodsr   r   r   dtypesr~   r   r   r   r   r   rB   r=   r   r   rD   rD   L   s:   > [[Wyk2[[Vd%6U1X%67* 8 3*A(< A AB*<
* <Gjj\WIaK'F[[VaV,[[_c'6.BC% D -% [[VU1X.[[Xw/& 0 /&<	57",r   rD   r   r   r   r   r   rV   r   )rV   rV   rV   )r    r    r    )r   r   r   )r!   r!   r!   )r   r    r!   )rV   ,  r   r   )rV   r   r   r   )r   r&   r)   r&   )r   r    r)   r    )r   r!   r)   r!   )r   r    r!   r    )r   r    r)   r!   )rV   r   r   r   rV   )r(         @r]   r   r(   )r   r!   r]   r!   r   )r    r)   r]   r)   r    )r   r    r!   r    r   )r   r!   r]   r)   r    r   r\   g      ?@c                  L    [          H  u  pn[        XS9n[        X25        M     g )Nr   )_casesr   r   )valuesr   r-   rI   s       r   
test_casesr   O  s#    $* V+1' %+r   )numpyr   numpy.testingr   r   r   scipy.conftestr   scipy.statsr   r   scipy._lib._utilr   r
   rD   r"   r   r   r=   r   r   <module>r      s    :  . , $?H ?HD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77'
8 5"679'
: 7$89;'
< 9&:;='
@ 	+DEA'
B '@AC'
D '@AE'
F )BCG'
H 	+DEI'
L 	TBY	299S$/0M'
T(r   