a
    BCCf-                  $   @   s"  d dl Zd dlmZmZ d dlZd dlmZmZ d dl	m
Z
 G dd dZG dd dZ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$ dedd%ffZd&d' ZdS )(    N)assert_equalassert_array_equal)rankdata
tiecorrect)np_longc                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestTieCorrectc                 C   s&   t jg t jd}t|}t|d dS )z9An empty array requires no correction, should return 1.0.dtype      ?Nnparrayfloat64r   r   selfranksc r   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/scipy/stats/tests/test_rank.py
test_empty   s    zTestTieCorrect.test_emptyc                 C   s(   t jdgt jd}t|}t|d dS )z;A single element requires no correction, should return 1.0.r
   r   Nr   r   r   r   r   test_one   s    zTestTieCorrect.test_onec                 C   s<   t d}t|}t|d t d}t|}t|d dS )z*Arrays with no ties require no correction.       @r
         @N)r   aranger   r   r   r   r   r   test_no_correction   s    


z!TestTieCorrect.test_no_correctionc                 C   s,  t g d}t|}d}|j}d|d | |d |   }t|| t g d}t|}d}|j}d|d | |d |   }t|| t g d}t|}d}|j}d|d | |d |   }t|| t g d}t|}d}d}|j}d|d | |d |  |d |   }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expectedZT1ZT2r   r   r   
test_basic    s2    


(zTestTieCorrect.test_basicc                 C   sZ   d\}}t t ||}|j}tt|}t|d||d |  t|d |    d S )N)i     r
   r   )r   repeatr   r   r   r   r   float)r   Zntiekanoutr   r   r   test_overflowC   s
    zTestTieCorrect.test_overflowN)__name__
__module____qualname__r   r   r   r#   r+   r   r   r   r   r   	   s
   	#r   c                   @   s   e Zd Zdd Zejddgejddgeddd	 Zd
d Z	dd Z
dd Zdd Zdd Zdd Zg dZejgegd  Zejdddgejdeeedd Zejdedejdedd Zd d! Zd"d# Zd$d% ZdS )&TestRankDatac                 C   sN   t jg td}t|}t|t jg t jd tg }t|t jg t jd dS )z0stats.rankdata([]) should return an empty array.r   Nr   r   intr   r   r   )r   r(   rr   r   r   r   M   s
    zTestRankData.test_emptyshape)r         axisNr   c                 C   sH   t j|td}t||d}|d u r&dn|}t|j| t|jt j d S )Nr   r6   )r   )r   emptyr1   r   r   r3   r	   r   )r   r3   r6   r(   r2   Zexpected_shaper   r   r   test_empty_multidimU   s
    z TestRankData.test_empty_multidimc                 C   sX   dg}t j|td}t|}t|t jdgt jd t|}t|t jdgt jd dS )z/Check stats.rankdata with an array of length 1.d   r   r
   Nr0   )r   datar(   r2   r   r   r   r   ^   s    zTestRankData.test_onec                 C   s  g d}t jg dt jd}t j|td}t|}t|| t|}t|| g d}t jg dt jd}t j|td}t|}t|| t|}t|| g d}t jg dt jd}t j|td}t|}t|| t|}t|| |dd	}t|}t|| d
S )zBasic tests of stats.rankdata.)r:   
   2   )r   r
   r   r   )(   r<      r<   r=   )r   r   r   r         @)   rA   rA   r<   r<   r<   )r@   r@   r@   r   r   r   r5   r   N)r   r   r   r1   r   r   Zreshape)r   r;   r"   r(   r2   Za2dr   r   r   r#   g   s0    





zTestRankData.test_basicc                    s   dd dd  fdd} fdd}d	d
 }t  |||dfdd}g d}|tj|d |tj|dd tjg ddd}|tj|dd d S )Nc                    s    fdd D S )Nc                    s&   g | ] d t  fddD  qS )r4   c                 3   s   | ]}| k V  qd S Nr   .0ijr   r   	<genexpr>       zXTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>.<genexpr>sumrD   r(   rF   r   
<listcomp>   rI   zNTestRankData.test_rankdata_object_string.<locals>.min_rank.<locals>.<listcomp>r   rM   r   rM   r   min_rank   s    z:TestRankData.test_rankdata_object_string.<locals>.min_rankc                    s    fdd D S )Nc                    s"   g | ] t  fd dD qS )c                 3   s   | ]}| kV  qd S rB   r   rC   rF   r   r   rH      rI   zXTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>.<genexpr>rJ   rL   rM   rF   r   rN      rI   zNTestRankData.test_rankdata_object_string.<locals>.max_rank.<locals>.<listcomp>r   rM   r   rM   r   max_rank   s    z:TestRankData.test_rankdata_object_string.<locals>.max_rankc                    s    dd t | D S )Nc                 S   s   g | ]\}}||fqS r   r   )rD   rE   xr   r   r   rN      rI   zRTestRankData.test_rankdata_object_string.<locals>.ordinal_rank.<locals>.<listcomp>)	enumeraterM   )rO   r   r   ordinal_rank   s    z>TestRankData.test_rankdata_object_string.<locals>.ordinal_rankc                    s   dd t |  | D S )Nc                 S   s   g | ]\}}|| d  qS )r   r   )rD   rE   rG   r   r   r   rN      rI   zRTestRankData.test_rankdata_object_string.<locals>.average_rank.<locals>.<listcomp>)ziprM   )rP   rO   r   r   average_rank   s    z>TestRankData.test_rankdata_object_string.<locals>.average_rankc                    s   t |   fdd| D S )Nc                    s&   g | ] d t  fddD  qS )r4   c                 3   s   | ]}| k V  qd S rB   r   rC   rF   r   r   rH      rI   zZTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>.<genexpr>rJ   rL   brF   r   rN      rI   zPTestRankData.test_rankdata_object_string.<locals>.dense_rank.<locals>.<listcomp>)r   uniquerM   r   rV   r   
dense_rank   s    
z<TestRankData.test_rankdata_object_string.<locals>.dense_rank)minmaxordinalaveragedensec                    s,   dD ]"}t | |d}t| | |  qd S )N)rZ   r[   r^   r\   r]   methodr   r   )r(   r`   r*   )rankfr   r   check_ranks   s    z=TestRankData.test_rankdata_object_string.<locals>.check_ranks)	ZfoobarZquxZxyzabcZefgZaceZqweZqaz   object)r   r4   r5   gX9v@r   gT㥛 	@r   )dictr   randomchoiceZastyper   )r   rS   rU   rY   rc   valr   )rP   rO   rb   r   test_rankdata_object_string   s    z(TestRankData.test_rankdata_object_stringc                 C   s   t jddgt jd}t|}t|ddg t jddgt jd}t|}t|ddg t jddgt jd}t|}t|ddg d S )Nl            l           r   r
   r   l)r   r   Zuint64r   r   Zint64)r   r;   r2   r   r   r   test_large_int   s    zTestRankData.test_large_intc                 C   sD   dD ]:}t j|td}t|}d|d  }t||| d|  qd S )N)i'  i i@B r   g      ?r4   ztest failed with n=%d)r   Zonesr1   r   r   )r   r)   r;   r2   Zexpected_rankr   r   r   test_big_tie   s    
zTestRankData.test_big_tiec                 C   s`   g dg dg}g dg dg}t |dd}t|| g dg dg}t |d	d}t|| d S )
N)r   r5   r4   )   r5   r5   )r
   r   r
   )r   r   r   r   r7   r
   r   r   )r   r   r   r4   ra   )r   r;   Z	expected0Zr0Z	expected1r1r   r   r   	test_axis   s    
zTestRankData.test_axis)r]   rZ   r[   r^   r\   ro   r   r4   zmethod, dtypec                 C   s8   d}t |}t|||d}t|j| t|j| d S )N)r   r   )r`   r6   )r   Zzerosr   r   r3   r	   )r   r6   r`   r	   r3   r;   r2   r   r   r   test_size_0_axis   s
    
zTestRankData.test_size_0_axisr`   c                    s   d}t jd}|j|d}|j|ddk }|j|ddk }|j|ddk }t j||< t j ||< || t j  dd   fdd	}	t|||d
d}
|	|||d}t|
| d S )N)rA         im)r   g?g?c                 S   s@   t | }t | }| |  }t||}||| < t j||< |S rB   )r   Z
zeros_likeisnanr   nan)r(   r`   r*   rE   Za_compressedresr   r   r   rank_1d_omit   s    





z:TestRankData.test_nan_policy_omit_3d.<locals>.rank_1d_omitc                    s   t  fdd|| S )Nc                    s
   |  S rB   r   rM   )r`   ry   r   r   <lambda>   rI   zITestRankData.test_nan_policy_omit_3d.<locals>.rank_omit.<locals>.<lambda>)r   Zapply_along_axis)r(   r`   r6   ry   r_   r   	rank_omit   s    z7TestRankData.test_nan_policy_omit_3d.<locals>.rank_omitomitr6   
nan_policyr7   )r   ri   ZRandomStaterw   infr   r   )r   r6   r`   r3   rngr(   rE   rG   r'   r|   rx   Zres0r   r{   r   test_nan_policy_omit_3d   s    
	z$TestRankData.test_nan_policy_omit_3dc                 C   s   dt jdgddt jgg dg}tt|d dddt jd	d
dt jdddg	 tt|d 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   ro   r5   r4   r5   r5   r}   r~   r
   g      @g      @r   r   	propagater   rw   r   r   r   r;   r   r   r   test_nan_policy_2d_axis_none   s    

z)TestRankData.test_nan_policy_2d_axis_nonec                 C   s   ddddt jt jg}tjtdd t|dd W d    n1 sD0    Y  dt jdgd	dt jgt jddgg}tjtdd t|ddd
 W d    n1 s0    Y  tjtdd t|ddd
 W d    n1 s0    Y  d S )Nr   r5   r   zThe input contains nan)matchraiser   ro   r~   r4   )r   rw   pytestZraises
ValueErrorr   r   r   r   r   test_nan_policy_raise   s    *


,z"TestRankData.test_nan_policy_raisec                 C   s   ddddt jt jg}tt|d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	d
t jt jgdt jt jgdt jt jgg tt|d
dd	t jt jt jgt jt jt jgg dg d S )Nr   r5   r   r   r   r   ro   r   r~   r4   )r4   r   r   r   r   r   r   r   test_nan_policy_propagate  s(    

z&TestRankData.test_nan_policy_propagate)r,   r-   r.   r   r   markZparametrizeranger9   r   r#   rl   rm   rn   rr   methodsr   r   r   ZdtypesrT   rs   r   r   r   r   r   r   r   r   r/   K   s*   	!r/   r]   rZ   r[   r^   r\   r:   r
   )r:   r:   r:   )r   r   r   )r
   r
   r
   )r   r   r   )r
   r   r   )r:   ,  rf   rp   )r:   rf   r   rf   )r
   r   r   r   )r
   r   r   r   )r
   r   r   r   )r
   r   r   r   )r
   r   r   r   )r:   rf   r   rf   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?   g      ?@c                  C   s*   t D ] \} }}t| |d}t|| qd S )Nr_   )_casesr   r   )valuesr`   r"   r2   r   r   r   
test_casesM  s    r   )numpyr   Znumpy.testingr   r   r   Zscipy.statsr   r   Zscipy._lib._utilr   r   r/   r   r   r   r   r   r   r   <module>   sP   B [*