
     h	,                        d dl Zd dlmZmZ d dlmZmZ d dl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)rankdata
tiecorrectc                   ,    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      W/var/www/html/Sam_Eipo/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_overflowB   sy    aIbillD))F!%%S#T1Wt^ 4uQTAX FFGGGGGr   N)__name__
__module____qualname__r   r   r   r*   r4    r   r   r   r      se              !" !" !"FH H H H Hr   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	g dZ
ej        gej        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   r1   rs      r   r   zTestRankData.test_emptyL   st    HRs###QKK1bhr<<<===RLL1bhr<<<=====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   datar1   r>   s       r   r   zTestRankData.test_oneT   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.)r@   
   2   )r   r   r   r
   )(   rC      rC   rD   )r#   r"   r   r"         @)   rH   rH   rC   rC   rC   )rG   rG   rG   r   r   r      r!   N)r   r   r   r=   r   r   reshape)r   rA   r'   r1   r>   a2ds         r   r*   zTestRankData.test_basic]   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 )   c              3   $   K   | ]
}|k     V  d S Nr8   .0ijs     r   	<genexpr>zXTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>|   s'      %7%7a!e%7%7%7%7%7%7r   sumrS   rU   r1   s    @r   
<listcomp>zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>|   s<    CCCAa#%7%7%7%7Q%7%7%7"7"77CCCr   r8   r1   s   `r   <lambda>z:TestRankData.test_rankdata_object_string.<locals>.<lambda>|   s    CCCCCCC r   c                        fd D             S )Nc                 H    g | ]t          fd D                       S )c              3   $   K   | ]
}|k    V  d S rQ   r8   rR   s     r   rV   zXTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>.<genexpr>}   s'      !4!4Q!q&!4!4!4!4!4!4r   rW   rY   s    @r   rZ   zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>}   s7    @@@c!4!4!4!4!!4!4!444@@@r   r8   r[   s   `r   r\   z:TestRankData.test_rankdata_object_string.<locals>.<lambda>}   s    @@@@a@@@ r   c                 H     d t          |           D                       S )Nc                     g | ]	\  }}||f
S r8   r8   )rS   rT   xs      r   rZ   zNTestRankData.test_rankdata_object_string.<locals>.<lambda>.<locals>.<listcomp>~   s     *K*K*KdaAq6*K*K*Kr   )	enumerate)r1   min_ranks    r   r\   z:TestRankData.test_rankdata_object_string.<locals>.<lambda>~   s&    *K*Kill*K*K*K!L!L r   c                 \    d t           |            |                     D             S )Nc                 $    g | ]\  }}||z   d z  S )r   r8   rR   s      r   rZ   zRTestRankData.test_rankdata_object_string.<locals>.average_rank.<locals>.<listcomp>   s$    LLLdaQUcMLLLr   )zip)r1   max_rankrd   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 )rO   c              3   $   K   | ]
}|k     V  d S rQ   r8   rR   s     r   rV   zZTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>.<genexpr>   s'      --aAE------r   rW   )rS   rU   bs    @r   rZ   zPTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>   s<    999!A----1------999r   )r   unique)r1   rm   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)rp   rq   rt   rr   rs   methodr   r   )r1   rw   r3   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   rO   rI   gX9v@r!   gT㥛 	@r
   )dictr   randomchoiceastyper   )	r   ordinal_rankri   ro   rz   valrh   rd   ry   s	         @@@r   test_rankdata_object_stringz(TestRankData.test_rankdata_object_string{   sA   CC@@LLLL	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   rA   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      ?rO   ztest failed with n=%d)r   onesr=   r   r   )r   r2   rA   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   rI   rO   )   rI   rI   )r   r"   r   )r   r"   r   r   axisr   r   r   )r   r"   r"   rO   rx   )r   rA   	expected0r0	expected1r1s         r   	test_axiszTestRankData.test_axis   s    				"]]"]]$	d###2y)))!\\#^^%	d###2y)))))r   )rs   rp   rq   rt   rr   r   r   r   rO   zmethod, dtypec                     d}t          j        |          }t          |||          }t          |j        |           t          |j        |           d S )N)r!   r   )rw   r   )r   zerosr   r   shaper   )r   r   rw   r   r   rA   r>   s          r   test_size_0_axiszTestRankData.test_size_0_axis   sT     xT&t444QWe$$$QWe$$$$$r   r!   rw   c                     d}t           j                            t          t	          d                              }|                    |          }|                    |          dk     }|                    |          dk     }|                    |          dk     }t           j        ||<   t           j         ||<   ||         t           j        z
   d fd}	t          |||d	          }
 |	|||
          }t          |
|           d S )N)rH         falafel)r$   g?g?c                     t          j        |           }t          j        |           }| |          }t          ||          }||| <   t           j        ||<   |S rQ   )r   
zeros_likeisnanr   nan)r1   rw   r3   rT   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 rQ   r8   )r1   rw   r   s    r   r\   zITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>   s    a1H1H r   )r   apply_along_axis)r1   rw   r   r   s    ` r   	rank_omitz7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omit   s-    &'H'H'H'H'H'+Q0 0 0r   omitr   
nan_policyr   )	r   r   default_rngabshashr   infr   r   )r   r   rw   r   rngr1   rT   rU   r0   r   r   res0r   s               @r   test_nan_policy_omit_3dz$TestRankData.test_nan_policy_omit_3d   s    i##CY$8$899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   rI   rO   rI   rI   r   r   r   g      @g      @r#   r   	propagater   r   r   r   r   rA   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   rI   r!   zThe input contains nan)matchraiser   r   r   rO   )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   rI   r!   r   r   r   r   r   r   rO   )rO   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   N)r5   r6   r7   r   r   r*   r   r   r   r   methodsr   r   int_dtypesr   markparametrizerg   r   ranger   r   r   r   r8   r   r   r:   r:   J   s       > > >A A A( ( (<A A A6* * *< < <
* 
* 
* <;;Gj\RWIaK'F[VaV,,[_cc'6.B.BCC% % DC -,% [VUU1XX..[Xw//& & 0/ /.&<	5 	5 	57 7 7", , , , ,r   r:   rs   rp   rq   rt   rr   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    r#   r    )r   r   r#   r   )r   r   r#   r   )r   r   r   r   )r   r   r#   r   )r@   r   r   r   r@   )r"         @rG   r   r"   )r   r   rG   r   r   )r   r#   rG   r#   r   )r   r   r   r   r   )r   r   rG   r#   r   rC   rF   g      ?@c                  d    t           D ]'\  } }}t          | |          }t          ||           (d S )Nrv   )_casesr   r   )valuesrw   r'   r>   s       r   
test_casesr   =  sG    $* ( ( VF+++1h''''( (r   )numpyr   numpy.testingr   r   scipy.statsr   r   r   r   r:   r   r   r   r8   r   r   <module>r      s       : : : : : : : : , , , , , , , , ?H ?H ?H ?H ?H ?H ?H ?HDF, F, F, F, F, F, F, F,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   