U
    »mœdçG  ã                   @   sÌ   d dl Z d dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZmZmZmZmZ dZG dd„ dƒZG d	d
„ d
ƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZG dd„ dƒZdS )é    N)Úassert_)ÚFuncData)Ú
kolmogorovÚkolmogiÚsmirnovÚsmirnovi)Ú_kolmogcÚ	_kolmogciÚ_kolmogpÚ	_smirnovcÚ
_smirnovciÚ	_smirnovpg»½×Ùß|Û=c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestSmirnovc                 C   s   t t tdtjƒ¡ƒ d S ©Né   )r   ÚnpÚisnanr   Únan©Úself© r   ú\/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/scipy/special/tests/test_kolmogorov.pyÚtest_nan   s    zTestSmirnov.test_nanc                 C   sz   ddddg}t  |¡}tt|ddtd�jtttgd� d	|d d …d
f  |d d …d
f< tt|ddtd�jtttgd� d S )N)r   çš™™™™™¹?çÍÌÌÌÌÌì?)r   ç      ì?ç      À?)é   r   ç      �?)é   r   ç      `?©r   r   r   ©Zrtol©Zdtypesr   éÿÿÿÿ©	r   Úasarrayr   r   Ú_rtolÚcheckÚintÚfloatr   ©r   Údatasetr   r   r   Ú
test_basic   s    ý
  zTestSmirnov.test_basicc                 C   s�   dd„ t  tddƒtddƒ¡D ƒ}t |¡}tt|ddtd�jt	t
t
gd	� d
|d d …df  |d d …df< tt|ddtd�jt	t
t
gd	� d S )Nc                 S   s   g | ]}|d df‘qS r!   r   ©Ú.0Únr   r   r   Ú
<listcomp>   s     z/TestSmirnov.test_x_equals_0.<locals>.<listcomp>r   é   éò  éü  r!   r"   r#   r   r$   ©Ú	itertoolsÚchainÚranger   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   Útest_x_equals_0   s
    "
  zTestSmirnov.test_x_equals_0c                 C   s�   dd„ t  tddƒtddƒ¡D ƒ}t |¡}tt|ddtd�jt	t
t
gd	� d
|d d …df  |d d …df< tt|ddtd�jt	t
t
gd	� d S )Nc                 S   s   g | ]}|d df‘qS ©r   r   r   r.   r   r   r   r1   &   s     z/TestSmirnov.test_x_equals_1.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   r$   r5   r+   r   r   r   Útest_x_equals_1%   s
    "
  zTestSmirnov.test_x_equals_1c              
   C   s†   ddddddddd	d
g
}t  |¡}tt|ddtd�jtttgd� d|d d …df  |d d …df< tt|ddtd�jtttgd� d S )N©r   ç      à?r=   )r   r=   ç      Ð?)r   r=   g?„UUUUÅ?)é   r=   g      ¸?)é   r=   gyé&1¬¬?)é   r=   güžæ‡EÊ ?)é   r=   g×>«¨“?)é   r=   gÑÜÿÿÿ!‡?)é	   r=   g+ÁËŽß{?)é
   r=   g’³�™4Ûo?r!   r   r"   r#   r   r$   r%   r+   r   r   r   Útest_x_equals_0point5,   s    ÷
  z!TestSmirnov.test_x_equals_0point5c                 C   s”   t jddddd�}t  dgt|ƒ |d| g¡}tt|ddtd�jtt	t	gd	� d|d d …d
f  |d d …d
f< tt
|ddtd�jtt	t	gd	� d S )Nr   r   ée   T©Zendpointr!   r   r"   r#   r$   )r   ÚlinspaceÚcolumn_stackÚlenr   r   r'   r(   r)   r*   r   )r   Úxr,   r   r   r   Útest_n_equals_1=   s
      zTestSmirnov.test_n_equals_1c                 C   sª   t jddddd�}t  d| d¡}t  dgt|ƒ ¡}t  |||g¡}tt|ddtd�j	t
ttgd	� d|d d …d
f  |d d …d
f< tt|ddtd�j	t
ttgd	� d S )Nr=   r   rG   TrH   r   r!   r"   r#   r$   ©r   rI   ÚpowerÚarrayrK   rJ   r   r   r'   r(   r)   r*   r   ©r   rL   Úpr0   r,   r   r   r   Útest_n_equals_2D   s      zTestSmirnov.test_n_equals_2c                 C   sª   t jddddd�}t  d| d¡}t  dgt|ƒ ¡}t  |||g¡}tt|ddtd	�j	t
ttgd
� d|d d …df  |d d …df< tt|ddtd	�j	t
ttgd
� d S )Nçffffffæ?r   é   TrH   r   r!   r   r"   r#   r$   rN   rQ   r   r   r   Útest_n_equals_3M   s      zTestSmirnov.test_n_equals_3c                    sL   d‰ t  ‡ fdd„tdddƒD ƒ¡}t  |¡}tt  |dk¡d| d	� d S )
Nçš™™™™™Ù?c                    s   g | ]}t |ˆ ƒ‘qS r   )r   r.   ©rL   r   r   r1   Z   s     z,TestSmirnov.test_n_large.<locals>.<listcomp>i�  iL  r2   r   zNot all diffs negative %s)Úmsg)r   rP   r8   Údiffr   Úall)r   ZpvalsÚdfsr   rX   r   Útest_n_largeV   s     
zTestSmirnov.test_n_largeN)Ú__name__Ú
__module__Ú__qualname__r   r-   r9   r;   rF   rM   rS   rV   r]   r   r   r   r   r      s   		r   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestSmirnovic                 C   s   t t tdtjƒ¡ƒ d S r   )r   r   r   r   r   r   r   r   r   r   `   s    zTestSmirnovi.test_nanc                 C   s€   dddddddg}t  |¡}tt|dd	td
�jtttgd� d|d d …df  |d d …df< tt|dd	td
�jtttgd� d S )N)r   rW   ç333333ã?)r   rb   rW   )r   ç®Gáz®ï?ç{®Gáz„?)r   rd   rc   )r   r   r   )r   r    r   )rE   g      p=g      î?r!   r   r"   r#   r   ©	r   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   r-   c   s    ú
  zTestSmirnovi.test_basicc                 C   s�   dd„ t  tddƒtddƒ¡D ƒ}t |¡}tt|ddtd�jt	t
t
gd	� d
|d d …d
f  |d d …d
f< tt|ddtd�jt	t
t
gd	� d S )Nc                 S   s   g | ]}|d df‘qS r!   r   r.   r   r   r   r1   r   s     z0TestSmirnovi.test_x_equals_0.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   ©r6   r7   r8   r   r&   r   r   r'   r(   r)   r*   r   r+   r   r   r   r9   q   s
    "
  zTestSmirnovi.test_x_equals_0c                 C   s�   dd„ t  tddƒtddƒ¡D ƒ}t |¡}tt|ddtd�jt	t
t
gd	� d
|d d …d
f  |d d …d
f< tt|ddtd�jt	t
t
gd	� d S )Nc                 S   s   g | ]}|d df‘qS r:   r   r.   r   r   r   r1   y   s     z0TestSmirnovi.test_x_equals_1.<locals>.<listcomp>r   r2   r3   r4   r!   r"   r#   r   rf   r+   r   r   r   r;   x   s
    "
  zTestSmirnovi.test_x_equals_1c                 C   s”   t jddddd�}t  dgt|ƒ |d| g¡}tt|ddtd�jtt	t	gd	� d|d d …df  |d d …df< tt
|ddtd�jtt	t	gd	� d S )
Nr   r   rG   TrH   r!   r   r"   r#   )r   rI   rJ   rK   r   r   r'   r(   r)   r*   r   )r   Úppr,   r   r   r   rM      s
      zTestSmirnovi.test_n_equals_1c                 C   sª   t jddddd�}t  d| d¡}t  dgt|ƒ ¡}t  |||g¡}tt|ddtd�j	t
ttgd	� d|d d …df  |d d …df< tt|ddtd�j	t
ttgd	� d S )
Nr=   r   rG   TrH   r   r!   r"   r#   ©r   rI   rO   rP   rK   rJ   r   r   r'   r(   r)   r*   r   rQ   r   r   r   rS   ‡   s      zTestSmirnovi.test_n_equals_2c                 C   sª   t jddddd�}t  d| d¡}t  dgt|ƒ ¡}t  |||g¡}tt|ddtd	�j	t
ttgd
� d|d d …df  |d d …df< tt|ddtd	�j	t
ttgd
� d S )NrT   r   rU   TrH   r   r!   r   r"   r#   rh   rQ   r   r   r   rV   �   s      zTestSmirnovi.test_n_equals_3c                 C   sp   dd„ }dd„ }ddddd	d
dg}t  |¡}t||ddtd�jtttgd� t||ddtd�jtttgd� d S )Nc                 S   s   t | t| |ƒƒS ©N)r   r   ©r0   rR   r   r   r   Ú_sm_smiš   s    z-TestSmirnovi.test_round_trip.<locals>._sm_smic                 S   s   t | t| |ƒƒS ri   )r   r   rj   r   r   r   Ú	_smc_smci�   s    z/TestSmirnovi.test_round_trip.<locals>._smc_smci)r   rW   rW   )r   rb   rb   )r   r   r   )r   r   r   )r   r   r   )rE   ç+‡ÙÎ÷ï?rm   )rE   ç-Cëâ6?rn   r!   r   r"   r#   )r   r&   r   r'   r(   r)   r*   )r   rk   rl   r,   r   r   r   Útest_round_trip™   s    ú
 zTestSmirnovi.test_round_tripc                 C   sˆ   ddddddddd	d
dg}t  |¡}tt|ddtd�jtttgd� d|d d …df  |d d …df< tt|ddtd�jtttgd� d S )Nr<   )r   r=   gwz°Ðõl×?)r   r>   r=   )r   r=   g<{»œÓ?)r?   r=   gFÝw“rZÐ?)r@   r=   gÎ0 Î?)rA   r=   gÀ0ª@ãËË?)rB   r=   g ´AÐòÉ?)rC   r=   g^×CKfÈ?)rD   r=   g©ôÞµ&Ç?)rE   r=   gê§L4JöÅ?r!   r   r"   r#   r   re   r+   r   r   r   rF   ¬   s     ö
  z"TestSmirnovi.test_x_equals_0point5N)r^   r_   r`   r   r-   r9   r;   rM   rS   rV   ro   rF   r   r   r   r   ra   _   s   		ra   c                   @   sR   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	j
ejdkdd�dd„ ƒZdS )ÚTestSmirnovpc                 C   s   t t tdtjƒ¡ƒ d S r   )r   r   r   r   r   r   r   r   r   r   À   s    zTestSmirnovp.test_nanc                 C   sœ   t  dd¡}t  |t  |d¡t  |d¡g¡}tt|ddtd�jtt	t	gd� t  dd¡}t  |t  |d	¡t  |d¡g¡}tt|ddtd�jtt	t	gd� d S )
Nr   rE   r   r$   r!   r   r"   r#   ç      ð?)
r   ÚarangerJ   Z	full_liker   r   r'   r(   r)   r*   )r   Zn1_10Údataset0Zn2_10Údataset1r   r   r   r-   Ã   s       zTestSmirnovp.test_basicc                 C   s„   t  dd¡}d| }dd|  }| ||d   }|dt  |d ¡d  d 8 }t  |||g¡}tt|ddtd�jtt	t	gd� d S )	Nr   r2   rq   r   r=   r!   r"   r#   )
r   rr   ÚsignrJ   r   r   r'   r(   r)   r*   )r   r0   rL   Zxm1Zpp1rt   r   r   r   Útest_oneminusoneovernÍ   s    z"TestSmirnovp.test_oneminusoneovernc                 C   sf   t  dd¡}d| }|| d  d| |d   }t  |||g¡}tt|ddtd�jtttgd� d S )Nr   r2   r=   r   r!   r"   r#   ©	r   rr   rJ   r   r   r'   r(   r)   r*   ©r   r0   rL   rg   rs   r   r   r   Útest_oneovertwon×   s
    zTestSmirnovp.test_oneovertwonc                 C   sn   dt  dd¡ }d| }|| d  d| |d   d }t  |||g¡}tt|ddtd�jtttgd� d S )	Nr   r   rE   rq   r=   r!   r"   r#   rw   rx   r   r   r   Útest_oneovernß   s
    "zTestSmirnovp.test_oneovernl        zrequires 64-bit platform)Úreasonc                 C   sà   t  dd¡}d| dt  t¡j  }|| d  d| |d   }t  |||g¡}tt|ddtd�j	t
ttgd� d| dt  t¡j  }|| d  d| |d   d }t  |||g¡}tt|ddtd�j	t
ttgd� d S )	Nr   r2   rq   r   r   r!   r"   r#   )r   rr   Zfinfor*   ZepsrJ   r   r   r'   r(   r)   )r   r0   rL   rg   rs   rt   r   r   r   Útest_oneoverncloseç   s     "zTestSmirnovp.test_oneoverncloseN)r^   r_   r`   r   r-   rv   ry   rz   ÚpytestÚmarkZxfailÚsysÚmaxsizer|   r   r   r   r   rp   ¿   s   

ÿrp   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTestKolmogorovc                 C   s   t t ttjƒ¡ƒ d S ri   )r   r   r   r   r   r   r   r   r   r   ù   s    zTestKolmogorov.test_nanc                 C   s2   dddddg}t  |¡}tt|ddtd� ¡  d S )	N)r   rq   )r=   çËœ²£Øî?)çBgR‰{{ê?r=   )r   ç	=ò³¬GÑ?)r   ç —!üE?©r   r   r"   )r   r&   r   r   r'   r(   r+   r   r   r   r-   ü   s    ü
zTestKolmogorov.test_basicc                 C   s¶   t  ddd¡}ddddddd	d
dddddddddddddg}ddddddddd d!d"d#d$d%d&d'd(d)d*d+d,g}t  ||g¡}tt|d-d.td/� ¡  t  ||g¡}tt|d-d.td/� ¡  d S )0Nr   ç       @é   rq   g;îÿÿÿÿï?gCgü{ìÿï?g�”êáÿèï?r‚   g<–Ð[4¨ë?g“UÍOpÂæ?gó|ÂX�iá?gÇ\¯ú"Ù?g
=ò³¬GÑ?gT	“@x¿Æ?g1qVçd¼¼?grlïé}n±?g�S¸í.Q¤?gƒrI;NÀ–?gïl©Pzˆ?g‰�Åh�My?gnã¨«D!i?g…9=ºÍúW?gK—!üE?ç        gl˜AcR5gkC¥ Åa=gz½˜„ã>gþbk g?gQ3¦ÞÄu¢?g§½�._Á?gÚTe`{Ò?g{NÅ,Ý?gœQ¨Ànã?g|á¦)\ç?g«=Ûï!Pê?gÚ1cshì?grÂB0Òí?gÇz$íºî?gl´%ŽýIï?gLZ¥¿žï?gÅt.ýdÍï?gWT»Þæï?gcá"™ôï?gÚü¾÷€úï?r†   r   r"   )r   rI   rJ   r   r   r'   r(   r   )r   rL   r,   Ú	dataset_cr   r   r   Útest_linspace  sZ                ú            úzTestKolmogorov.test_linspacec                 C   sÞ   t jddddd�}t jdddd	d
dddddddddddddddg}dddddddddddddddd
d	dddt jg}t  |d d … |d d … g¡}tt|d!d td"� ¡  t  |d d#… |d d#… g¡}tt|d!d td"� ¡  d S )$Nr   rq   rˆ   TrH   g‰Š£Åºõ?g3É�á”ó?gn¶	o5ò?gÔò	û)ñ?gë(!£”Nð?gýœ¿ÍU#ï?g r¼—ƒÓí?glùé¡ì?gì2|…†ë?rƒ   gKÇ�)|é?g·Åù‘—„è?g2 ¯•‘ç?g�•Ë��æ?gª²¡u¥å?g•ñN¢ä?gÓkÎ<³‰ã?gŽf¿'Gâ?gä&ò¥ à?r‰   gå&ò¥ à?gkùé¡ì?gþœ¿ÍU#ï?go¶	o5ò?g4É�á”ó?gŠŠ£Åºõ?r   r†   r"   r$   )	r   rI   ÚinfrJ   r   r   r'   r(   r	   )r   rR   r,   rŠ   r   r   r   Útest_linspacei  sZ                ú            úzTestKolmogorov.test_linspaceic                 C   s`   dt  dd¡ }t  dddddd	d
ddddddg¡}t  |d| g¡}tt|ddtd� ¡  d S )Nr   r   é   ç–Z¿'Gâ?gõp=Ì9Ü?g=ÙÐ$7ó×?gÜ,^Ž‰5Õ?gÃ–È¤@Ó?gÂÕ1l4ÃÑ?g†QÅG×“Ð?g�%±›Î5Ï?g	B­§y“Í?gZbqÇf-Ì?g�âæKöÊ?gÆ	Nä¥äÉ?gòé"…ñÈ?r†   r"   )r   rr   rP   rJ   r   r   r'   r(   ©r   ÚepsilonrL   r,   r   r   r   Útest_smallx4  s          ýzTestKolmogorov.test_smallxc                 C   s‚   dd„ }dd„ }t jddddd	�}||d
k|dkB  }t  ||g¡}t||ddtd� ¡  t  ||g¡}t||ddtd� ¡  d S )Nc                 S   s   t t| ƒƒS ri   )r   r   ©Z_xr   r   r   Ú_ki_k?  s    z-TestKolmogorov.test_round_trip.<locals>._ki_kc                 S   s   t t| ƒƒS ri   )r	   r   r“   r   r   r   Ú_kci_kcB  s    z/TestKolmogorov.test_round_trip.<locals>._kci_kcr‰   r‡   rˆ   TrH   r   gáz®GáÊ?r†   r   r"   ©r   rI   rJ   r   r'   r(   )r   r”   r•   rL   Zx02Z	dataset02r,   r   r   r   ro   >  s    zTestKolmogorov.test_round_tripN)	r^   r_   r`   r   r-   r‹   r�   r’   ro   r   r   r   r   r�   ø   s   

r�   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTestKolmogic                 C   s   t t ttjƒ¡ƒ d S ri   )r   r   r   r   r   r   r   r   r   r   O  s    zTestKolmogi.test_nanc                 C   s4   ddddddg}t  |¡}tt|ddtd	� ¡  d S )
N)rq   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  s    û
zTestKolmogi.test_basicc                 C   s�   dt  ddd¡ }t  ddddd	d
ddddddddddddg¡}t  d| |g¡}tt|ddtd� ¡  t  ||g¡}tt|ddtd� ¡  d S )Nr=   r   é7   r   rƒ   gzÄa<Õá?gNÊ(¦Û?gœBÃ9|ê×?gáZ"„¶hÕ?g:˜¦Aô‘Ó?gÂi.^ó$Ò?gÚŽ­4æþÐ?gMtþxAÐ?g~ôI÷yÎ?g³^òƒ°Í?gùâcwàË?gÂuz)tÎÊ?g—¶<§ÚÉ?gw(³uRþÈ?gj_#K7È?gvn@Óè�Ç?g2¬n.²ÛÆ?r†   r"   ©	r   rr   rP   rJ   r   r   r'   r(   r	   r�   r   r   r   Útest_smallpcdf]  s,    
          ûzTestKolmogi.test_smallpcdfc                 C   s�   dt  ddd¡ }t  ddddd	d
ddddddddddddg¡}t  ||g¡}tt|ddtd� ¡  t  d| |g¡}tt|ddtd� ¡  d S )Nr=   r   r˜   r   rƒ   gI\%	ãõ?g»ÓúŽI¤ú?gX¼Ôï~=ÿ?g½A^12Ÿ@g§›�k@g	‘é@gd1Ô.–@g[ì{U¹@gNîo[¸\	@gHÍa‘I¤
@gåióÇÓÜ@g¦Ê/a<@gAÑ—†
(@g‘ÂÕï~=@g[5;Ò$@gM Ýú­¦@gHÚ€²$@r†   r"   r™   r�   r   r   r   Útest_smallpsfo  s,    
          ûzTestKolmogi.test_smallpsfc                 C   sB   dd„ }t jddddd�}t  ||g¡}t||dd	td
� ¡  d S )Nc                 S   s   t t| ƒƒS ri   )r   r   )Ú_pr   r   r   Ú_k_ki‚  s    z*TestKolmogi.test_round_trip.<locals>._k_kir   rq   rE   TrH   r†   r   r"   r–   )r   r�   rR   r,   r   r   r   ro   �  s    zTestKolmogi.test_round_tripN)r^   r_   r`   r   r-   rš   r›   ro   r   r   r   r   r—   N  s
   r—   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestKolmogpc                 C   s   t t ttjƒ¡ƒ d S ri   )r   r   r   r
   r   r   r   r   r   r   ‹  s    zTestKolmogp.test_nanc                 C   s>   ddddddddd	d
dg}t  |¡}tt|ddtd� ¡  d S )N)r‰   g       €)gš™™™™™É?g‰ÿ=·¹å½)rW   g¬t˜éé¹¿)rb   g^ÔÞÚ›/õ¿)gš™™™™™é?g!á$®Jú¿)rq   gÔ2ˆ³&ñ¿)g333333ó?guäÍk~;á¿)gffffffö?g”gKk|qÌ¿)gš™™™™™ù?gÿ£”•³¿)gÍÌÌÌÌÌü?g‡?Éüð�–¿)r‡   gzå!üu¿r†   r   r"   )r   r&   r   r
   r'   r(   r+   r   r   r   r-   Ž  s    ö
zTestKolmogp.test_basicN)r^   r_   r`   r   r-   r   r   r   r   rž   Š  s   rž   )r6   r   r}   Únumpyr   Znumpy.testingr   Zscipy.special._testutilsr   Zscipy.specialr   r   r   r   Zscipy.special._ufuncsr   r	   r
   r   r   r   r'   r   ra   rp   r�   r—   rž   r   r   r   r   Ú<module>   s    P`9V<