
    9ih1                         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	  S SK
JrJr  S SKJrJr   " S S5      r\" \R                  5       " S	 S
5      5       rg)    N)assert_equalassert_array_equal)stats)skip_xp_invalid_arg)rankdata
tiecorrect)xp_assert_equalmake_xp_test_casec                   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      [/var/www/html/land-doc-ocr/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%   r2   r=   __static_attributes__r?   r   r   r   r   
   s    !"FHr   r   c                      \ rS rSrS<S j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\R                  R                  S/ SQ5      S 5       rS r/ SQr\R                  R                  SSS/5      \R                  R                  S\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/ 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/ S0QS/ S1Q4P/ S0QS/ S2Q4P/ S0QS/ S3Q4P/ S0QS/ S4Q4P/ S0QS / S5Q4PS6/S7-  S \R4                  " S"S85      4P7r\R                  R                  S9\5      S: 5       rS;rg	)=TestRankDataL   averagec                    U(       a  UR                  S5      R                  $ US:X  a  UR                  S5      R                  $ UR                  S5      R                  $ )Nr   rH      )asarrayr   )r   methodhas_nansxps       r   desired_dtypeTestRankData.desired_dtypeO   sG    ::b>''''-y'8rzz"~##Qbjjm>Q>QQr   c           
          UR                  / UR                  S9n[        U5      n[        X1R                  / U R	                  US9S95        g)z;stats.rankdata of empty array should return an empty array.r   rN   NrK   int64r   r	   rO   )r   rN   r:   rs       r   r   TestRankData.test_emptyT   sD    JJrJ*QK::b0B0Bb0B0I:JKr   c                     [        / 5      n[        U[        R                  " / 5      5        [        / SQ5      n[	        U/ SQ5        g )N(   r      r   2   r+   r*   r#   r*         @)r   r   r   r   r   )r   rU   s     r   	test_listTestRankData.test_listZ   s3    RL1bhhrl+)*Q12r   shape)r   rJ      axisNr)   c           
          UR                  XR                  S9n[        XBS9nUc  SOUn[        XSR                  X`R	                  US9S95        g )Nr   rb   )r   rR   )emptyrT   r   r	   rO   )r   r`   rb   rN   r:   rU   expected_shapes          r   test_empty_multidim TestRankData.test_empty_multidimb   sO     HHU((H+Q"!%588N:L:LPR:L:S8TUr   c           
          S/nUR                  X!R                  S9n[        U5      n[        XAR                  S/U R	                  US9S95        g)z/Check stats.rankdata with an array of length 1.d   r   r   rR   NrS   )r   rN   datar:   rU   s        r   r   TestRankData.test_onej   sK    uJJt88J,QK::se43E3E3E3L:MNr   c                    U R                  US9n/ SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        / SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        / SQnUR                  / SQUS9nUR                  X1R                  S9n[        U5      n[	        Xd5        UR                  US	5      n[        U5      n[	        Xd5        g
)zBasic tests of stats.rankdata.rR   )rj   r   r[   )r#   r   r"   r   rX   r\   )   rn   rn   r   r   r   )r]   r]   r]   r"   r"   r"   )ra   r)   N)rO   rK   rT   r   r	   reshape)r   rN   rO   rk   r/   r:   rU   a2ds           r   r2   TestRankData.test_basicq   s    **b*1::o]:CJJt88J,QK$#::7}:MJJt88J,QK$'::<M:RJJt88J,QK$ jjF#SM$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 )NrJ   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r:   ry   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ru   r?   rv   s     r   rz   MTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<genexpr>   s     *1Qr}   r~   r   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 ru   )	enumerate)r:   rx   xr   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)r:   rx   ry   r   r   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 )NrJ   c              3   ,   >#    U  H	  oT:  v   M     g 7fru   r?   rv   s     r   rz   OTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   r|   r}   )r   uniquer   )r:   bry   s     `r   
dense_rank<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s8    		!A789q!A-1---q999s   "A)minmaxordinalrH   densec                 T   > S H!  n[        XS9n[        UTU   " U 5      5        M#     g )N)r   r   r   r   rH   rL   )r   r   )r:   rL   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   rJ   ra   gX9v@r)   gT㥛 	@r   )dictr   randomchoiceastyper   )	r   r   r   r   r   valr   r   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           
          [        US5      (       aO  UR                  SS/UR                  S9n[        U5      n[	        X1R                  SS/U R                  US9S95        UR                  SS/UR                  S9n[        U5      n[	        X1R                  SS/U R                  US9S95        UR                  SS/UR                  S9n[        U5      n[	        X1R                  SS/U R                  US9S95        g )	Nuint64l            l           r   r   r"   rR   l)hasattrrK   r   r   r	   rO   rT   )r   rN   rk   rU   s       r   test_large_intTestRankData.test_large_int   s    2x  ::ug.bii:@DAAzz3*D<N<NRT<N<UzVWzz5'*"((z;TN::sCj8J8Jb8J8Q:RSzz5(+288z<TN::sCj8J8Jb8J8Q:RSr   r;   )i'  i i@B c                     UR                  U5      n[        U5      nSUS-   -  nUR                  XS-  U R                  US9S9n[	        XF5        g )Ng      ?rJ   rR   r   )onesr   rK   rO   r	   )r   r;   rN   rk   rU   expected_rankrefs          r   test_big_tieTestRankData.test_big_tie   sP    wwqzTNq1ujj-T5G5G25G5NjOr   c                     UR                  / SQ/ SQ/5      nUR                  / SQ/ SQ/5      n[        USS9n[        XC5        UR                  / SQ/ SQ/5      n[        US	S9n[        Xe5        g )
N)r   ra   rJ   )   ra   ra   )r   r*   r   )r"   r*   r"   r   rd   r   r#   r"   )r#   r*   r*   rJ   )rK   r   r	   )r   rN   rk   	expected0r0	expected1r1s          r   	test_axisTestRankData.test_axis   sc    zz9i01JJ}=>	d#&JJn=>	d#&r   )rH   r   r   r   r   r   rJ   rL   c                     SnU R                  X#S9nUR                  U5      n[        XbUS9n[        UR                  U5        [        UR
                  U5        [        XsR                  XES95        g )N)r)   r   rR   )rL   rb   r   )rO   zerosr   r   r`   r   r	   re   )r   rb   rL   rN   r`   rO   rk   rU   s           r   test_size_0_axisTestRankData.test_size_0_axis   sd     **6*9xxTt4QWWe$QWWm,88E8?@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)rn         im)r,   g?g?c                     [         R                  " U 5      n[         R                  " U 5      nX)    n[        XA5      nXRU) '   [         R                  X#'   U$ ru   )r   
zeros_likeisnanr   nan)r:   rL   r<   rx   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      $ ru   r?   )r:   rL   r   s    r   <lambda>ITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r:   rL   rb   r   s    ` r   	rank_omit7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+0 0r   omitrb   
nan_policyrd   )r   r   RandomStater   infr   r   )r   rb   rL   r`   rngr:   rx   ry   r9   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   ra   rJ   ra   ra   r   r   r   g      @g      @r+   r"   	propagater   r   r   r   r   rk   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   ra   r)   zThe input contains nan)matchraiser   r   r   rJ   )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   ra   r)   r   r   r   r   r   r   rJ   )rJ   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   rj   r   )rj   rj   rj   )r"   r"   r"   )r   r   r   )r#   r#   r#   )r   r"   r#   )rj   ,  r   r   )rj   r   r   r   )r   r(   r+   r(   )r   r"   r+   r"   )r   r#   r+   r#   )r   r"   r#   r"   )r   r"   r+   r#   )rj   r   r   r   rj   )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   rZ   g      ?@casec                     Uu  p4n[        UR                  U5      US9nUR                  XPR                  XBS9S9n[        Xg5        g )Nr   rR   r   )r   rK   rO   r	   )r   r   rN   valuesrL   r/   rU   r   s           r   
test_casesTestRankData.test_casesT  sG    #' RZZ'7jj););F);)JjKr   r?   )rH   F)r@   rA   rB   rC   rO   r   r^   r   markparametrizerangerg   r   r2   r   r   r   r   r   methodsr   r   r   r   r   r   r$   _rankdata_casesr   rD   r?   r   r   rF   rF   L   s   R
L3 [[Wyk2[[Vd%6U1X%67V 8 3VO%6 A ABT [[S":;  < 	' ;G[[VaV,[[Xw/A 0 -A [[VU1X.[[Xw/& 0 /&<	57",&'	Y' 
UB' 
UB	'
 
Wb' 
Y' 	C5!' u' u' #' 	C5!' 
)_5' 
%1'  
%1!'" 
'?3#'$ 
)_5%'( 
)_5)'* 
%1+', 
%1-'. 
'?3/'0 
)_51'4 
y*>?5'6 
u&:;7'8 
u&:;9': 
w(<=;'< 
y*>?='@ 
#I/HIA'B 
#E+DEC'D 
#E+DEE'F 
#G-FGG'H 
#I/HII'L Iryyd34M'OR [[V_5  6 r   rF   )numpyr   numpy.testingr   r   r   scipyr   scipy.conftestr   scipy.statsr   r   scipy._lib._array_apir	   r
   r   rF   r?   r   r   <module>r     sL     :   . , D?H ?HD 5>>"L  L  #L r   