
    5[g.                        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Zd' Zy)(    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y)TestTieCorrectc                 |    t        j                  g t         j                        }t        |      }t	        |d       y)z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfrankscs      V/var/www/html/bid-api/venv/lib/python3.12/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       y)z;A single element requires no correction, should return 1.0.r   r   Nr   r   s      r   test_onezTestTieCorrect.test_one   s,    #bjj1uQr   c                     t        j                  d      }t        |      }t        |d       t        j                  d      }t        |      }t        |d       y)z*Arrays with no ties require no correction.       @r         @N)r   aranger   r   r   s      r   test_no_correctionz!TestTieCorrect.test_no_correction   sD    		#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	        ||       y	)
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!   sZ    )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           	          d\  }}t        j                  t        j                  |      |      }|j                  }t	        t        |            }t        |d||dz  |z
  z  t        |dz  |z
        z  z
         y )N)i     r   r#   )r   repeatr   r&   r   r   r   float)r   ntiekanouts         r   test_overflowzTestTieCorrect.test_overflowD   sg    aIIbiilD)FF!%S#T1Wt^ 4uQTAX FFGr   N)__name__
__module____qualname__r   r   r    r,   r6    r   r   r
   r
   
   s    !"FHr   r
   c                   :   e Zd Zd Zej
                  j                  ddg      ej
                  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
                  j                  dddg      ej
                  j                  d eee            d               Zej
                  j                  d ed            ej
                  j                  de      d               Zd Zd Zd Zy)TestRankDatac                 "   t        j                  g t              }t        |      }t	        |t        j                  g t         j
                               t        g       }t	        |t        j                  g t         j
                               y)z0stats.rankdata([]) should return an empty array.r   Nr   r   intr   r   r   )r   r3   rs      r   r   zTestRankData.test_emptyN   sV    HHRs#QK1bhhr<=RL1bhhr<=r   shape)r         axisNr#   c                     t        j                  |t              }t        ||      }|dn|}t	        |j
                  |       t	        |j                  t         j                         y )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   sK     HHU#&QT"!%5QWWn-QWWbjj)r   c                 ,   dg}t        j                  |t              }t        |      }t	        |t        j                  dgt         j
                               t        |      }t	        |t        j                  dgt         j
                               y)z/Check stats.rankdata with an array of length 1.d   r   r   Nr>   )r   datar3   r@   s       r   r   zTestRankData.test_one_   sa    uHHT%QK1bhhuBJJ?@TN1bhhuBJJ?@r   c                    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        ||       |j                  dd	      }t	        |      }t        ||       y
)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   88O2::>HHT%QK1h'TN1h'#885RZZHHHT%QK1h'TN1h''88:"**MHHT%QK1h'TN1h'ii1oSM1h'r   c                    d d fd}fd}d }t        |||      fd}g d} |t        j                  j                  |d	              |t        j                  j                  |d	      j	                  d
             t        j
                  g dd
      } |t        j                  j                  |d	      j	                  d
             y )Nc                 Z    | D cg c]  dt        fd| D              z    c}S c c}w )NrB   c              3   (   K   | ]	  }|k    y wNr:   .0ijs     r   	<genexpr>zMTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<genexpr>        -1aAE1   sumr3   r]   s    `r   min_rankz:TestRankData.test_rankdata_object_string.<locals>.min_rank   s+    789q!A-1---q999s   (c                 T    | D cg c]  t        fd| D               c}S c c}w )Nc              3   (   K   | ]	  }|k    y wrY   r:   rZ   s     r   r^   zMTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<genexpr>   s     *1Qr`   ra   rc   s    `r   max_rankz:TestRankData.test_rankdata_object_string.<locals>.max_rank   s&    456AqC***A666s   %c                 \     t        |       D cg c]	  \  }}||f c}}      S c c}}w rY   )	enumerate)r3   r\   xrd   s      r   ordinal_rankz>TestRankData.test_rankdata_object_string.<locals>.ordinal_rank   s,    	!=1aV=>>=s   (
c                 r    t         |        |             D cg c]  \  }}||z   dz   c}}S c c}}w )Nr   )zip)r3   r\   r]   rg   rd   s      r   average_rankz>TestRankData.test_rankdata_object_string.<locals>.average_rank   s8    .1(1+x{.KL.KdaQUcM.KLLLs   3c                     t        j                  |       }| D cg c]  dt        fd|D              z    c}S c c}w )NrB   c              3   (   K   | ]	  }|k    y wrY   r:   rZ   s     r   r^   zOTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<genexpr>   r_   r`   )r   uniquerb   )r3   br]   s     `r   
dense_rankz<TestRankData.test_rankdata_object_string.<locals>.dense_rank   s8    		!A789q!A-1---q999s   =)minmaxordinalaveragedensec                 X    dD ]$  }t        | |      }t        | |   |              & y )N)rt   ru   rx   rv   rw   methodr   r   )r3   r{   r5   rankfs      r   check_ranksz=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   rB   rC   gX9v@r#   gT㥛 	@r   )dictr   randomchoiceastyper   )	r   rk   rn   rs   r~   valrg   rd   r}   s	         @@@r   test_rankdata_object_stringz(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                    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       y )Nl            l           r   r   r   l)r   r   uint64r   r   int64)r   rL   r@   s      r   test_large_intzTestRankData.test_large_int   s    xx(		:TN1sCj)xx(9TN1sCj)xx):TN1sCj)r   c                     dD ]C  }t        j                  |t              }t        |      }d|dz   z  }t	        |||z  d|z         E y )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   sK    )A771C(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        ||       y )
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   sU    ""$	d#2y)!#%	d#2y)r   )rw   rt   ru   rx   rv   r   r   rB   zmethod, dtypec                     d}t        j                  |      }t        |||      }t        |j                  |       t        |j
                  |       y )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   s@     xxT&t4QWWe$QWWe$r   r{   c                    d}t         j                  j                  d      }|j                  |      }|j                  |      dk  }|j                  |      dk  }|j                  |      dk  }t         j                  ||<   t         j                   ||<   ||   t         j                  z
   d fd}	t        |||d	      }
 |	|||
      }t        |
|       y )N)rS         im)r&   g?g?c                     t        j                  |       }t        j                  |       }| |    }t        ||      }||| <   t         j                  ||<   |S rY   )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   sQ    --"CAaR5L<0CCGVVCFJr   c                 <    t        j                  fd||       S )Nc                      |       S rY   r:   )r3   r{   r   s    r   <lambda>zITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1Hr   )r   apply_along_axis)r3   r{   rD   r   s    ` r   	rank_omitz7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s    &&'H'+Q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     ii##H-JJEJ"JJEJ"S(JJEJ"S(JJEJ"S(vv!w!	!rvv		0 q&t?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	       y )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    BFFAArvv 	8DtGBBFFBBG	I8DtLFFBFFBFFBFFBFFBFFFFBFFBFF4	5r   c                 .   ddddt         j                  t         j                  g}t        j                  t        d      5  t        |d       d d d        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        t        j                  t        d      5  t        |dd
       d d d        y # 1 sw Y   xY w# 1 sw Y   HxY w# 1 sw Y   y xY w)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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$    C3)C?D3C<?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       y )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RVVRVV,8D[AFFBFFBFFBFFBFFBFFK	M BFFAArvv 	8Dq[I///1	2 	8Dq[IVVRVVRVV4VVRVVRVV4)+	,r   )r7   r8   r9   r   r   markparametrizerangerI   r   r,   r   r   r   r   r   methodsr   r   r   dtypesrm   r   r   r   r   r   r:   r   r   r<   r<   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   r<   rw   rt   ru   rx   rv   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                  T    t         D ]  \  } }}t        | |      }t        ||       ! y )Nrz   )_casesr   r   )valuesr{   r)   r@   s       r   
test_casesr   O  s)    $* 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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	9299S$/0M'
T(r   