o
    Ö­j  ã                   @   sl   d dl Z d dl mZmZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlmZ G dd„ dƒZG dd	„ d	ƒZdS )
é    N)ÚraisesÚwarns)Úassert_approx_equalÚassert_allcloseÚassert_equal)Úcdist)Ústatsc                   @   sb   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Ze	j
 dddg¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                 C   s8   t  d¡}dgd }tttj||ƒ tttj||ƒ d S )Né   é   ©ÚnpÚarangeÚassert_raisesÚ
ValueErrorr   Úmultiscale_graphcorr©ÚselfÚxÚy© r   úW/var/www/html/CropPilot/venv/lib/python3.10/site-packages/scipy/stats/tests/test_mgc.pyÚtest_error_notndarray   s   

z*TestMGCErrorWarnings.test_error_notndarrayc                 C   s2   t  d¡ dd¡}| dd¡}tttj||ƒ d S )Néd   é   é   é
   )r   r   Úreshaper   r   r   r   r   r   r   r   Útest_error_shape   s   z%TestMGCErrorWarnings.test_error_shapec                 C   s(   t  d¡}t  d¡}tttj||ƒ d S )Né   r   r   r   r   r   Útest_error_lowsamples   s   

z*TestMGCErrorWarnings.test_error_lowsamplesc                 C   sF   t jdtd�}t j|d< tttj||ƒ t  d¡}tttj||ƒ d S )Nr
   )Údtyper   )r   r   ÚfloatÚnanr   r   r   r   r   r   r   r   Útest_error_nans    s
   

z$TestMGCErrorWarnings.test_error_nansc                 C   ó&   t  d¡}d}tttj|||d� d S )Nr
   r   )Úcompute_distancer   )r   r   r&   r   r   r   Útest_error_wrongdisttype)   s
   

ÿz-TestMGCErrorWarnings.test_error_wrongdisttypeÚrepséÿÿÿÿÚ1c                 C   s"   t  d¡}tttj|||d� d S )Nr
   ©r(   r   )r   r(   r   r   r   r   Útest_error_reps0   s   
z$TestMGCErrorWarnings.test_error_repsc                 C   r%   )Nr
   r   r+   )r   r   Úassert_warnsÚRuntimeWarningr   r   )r   r   r(   r   r   r   Útest_warns_reps9   s   
z$TestMGCErrorWarnings.test_warns_repsc                 C   s.   t  d¡}t  d¡t j }tttj||ƒ d S )Nr
   )r   r   ÚonesÚinfr   r   r   r   r   r   r   r   Útest_error_infty?   s   
z%TestMGCErrorWarnings.test_error_inftyN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r    r$   r'   ÚpytestÚmarkÚparametrizer,   r/   r2   r   r   r   r   r	   
   s    	þ
r	   c                   @   sÊ   e Zd ZdZddd„Zejjej dg d¢¡d	d
„ ƒƒZ	ejjej dddg¡dd„ ƒƒZ
ejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZejjdd„ ƒZej d¡ejjdd„ ƒƒZejjdd„ ƒZdS )ÚTestMGCStatz) Test validity of MGC test statistic
    r   é   Ú c                 C   sp  |dkrt jjdd|dfd�}|dt jj|jdfd�  }n||dkrQt  t jjdd|dfd�¡}|t  t j| ¡ }|t  t j| ¡ d	t jj|jdfd�  }nI|d
kr–t jj	dd|dfd�}t jj	dd|dfd�}t jj
dd|dfd�}	t jj
dd|dfd�}
|d d|	  d }|d d|
  d }ntdƒ‚|dkr´t jj	dd||d fd�}t j||fdd�}||fS )NÚlinearr)   r;   ©Úsizeg333333Ó?Ú	nonlinearr   r   gš™™™™™Ù?Úindependenceç      à?)Úpr?   r   é   z3sim_type must be linear, nonlinear, or independence)Úaxis)r   ÚrandomÚuniformÚrandom_sampler?   ÚarrayÚcosÚpiÚsinÚnormalÚbinomialr   Úconcatenate)r   ÚsampsÚdimsÚsim_typer   r   ÚunifÚuÚvÚu_2Úv_2Ú
dims_noiser   r   r   Ú_simulationsI   s*   ÿzTestMGCStat._simulationszsim_type, obs_stat, obs_pvalue))r=   ç
×£p=
ï?çü©ñÒMbP?)r@   çw¾Ÿ/ÝÄ?r[   )rA   gUÁ¨¤N@ƒ¿gö(\�Âõè?c           	      C   sR   t j d¡ | jdd|d�\}}t ||¡\}}}t||dd� t||dd� d S )NéNa¼ r   r;   ©rP   rQ   rR   ©Úsignificant©r   rF   ÚseedrY   r   r   r   ©	r   rR   Úobs_statÚ
obs_pvaluer   r   ÚstatÚpvalueÚ_r   r   r   Ú	test_onedk   s
   zTestMGCStat.test_oned)r=   gZd;ßO�Ç?r[   )r@   gÛù~j¼t“?gÁÊ¡E¶ó½?c           	      C   sR   t j d¡ | jdd|d�\}}t ||¡\}}}t||dd� t||dd� d S )Nr]   r   r   r^   r;   r_   ra   rc   r   r   r   Ú
test_fived|   s
   zTestMGCStat.test_fivedc                 C   s¦   t j d¡ t jjdddd�}t jjdddd�}t ||¡\}}}t|d	dd
� t|ddd
� t jjdddd�}tj||dd�\}}}t|d	dd
� t|ddd
� d S )Nr]   r   rB   )r   r   r>   r   r;   )éP   r   g      ð?r_   r[   T)Ú
is_twosamp)r   rF   rb   rN   rM   r   r   r   ©r   r   r   rf   rg   rh   r   r   r   Útest_twosampŒ   s   zTestMGCStat.test_twosampc                 C   sV   t j d¡ | jdddd�\}}tj||dd�\}}}t|ddd	� t|d
dd	� d S )Nr]   r   r;   r=   r^   rD   )ÚworkersrZ   r_   r[   ra   rm   r   r   r   Útest_workers¡   s
   zTestMGCStat.test_workersc                 C   sJ   | j dddd�\}}tj||dd�\}}}t|ddd� t|ddd� d S )	Nr   r;   r=   r^   ©Úrandom_staterZ   r_   r[   )rY   r   r   r   rm   r   r   r   Útest_random_state­   s   zTestMGCStat.test_random_statec                 C   st   t j d¡ | jdddd�\}}t||dd�}t||dd�}tj||d dd�\}}}t|d	dd
� t|ddd
� d S )Nr]   r   r;   r@   r^   Ú	euclidean)Úmetric)r&   rr   r\   r_   r[   )r   rF   rb   rY   r   r   r   r   )r   r   r   ÚdistxÚdistyÚ	stat_distÚpvalue_distrh   r   r   r   Útest_dist_perm·   s   þzTestMGCStat.test_dist_permr
   c                 C   sD   t j d¡ | jdddd�\}}tj||dd�\}}}t|dƒ d S )Nr]   r   r;   r=   r^   rq   gœî£'^P?)r   rF   rb   rY   r   r   r   )r   r   r   rh   rg   r   r   r   Útest_pvalue_literatureÅ   s   z"TestMGCStat.test_pvalue_literaturec                 C   sB   t j d¡ | jdddd�\}}tj||dd�}t|j|jƒ d S )Nr]   r   r;   r=   r^   rq   )	r   rF   rb   rY   r   r   r   rf   Ú	statistic)r   r   r   Úresr   r   r   Ú
test_aliasÑ   s   zTestMGCStat.test_aliasN)r   r;   r<   )r3   r4   r5   r6   rY   r7   r8   Úxslowr9   ri   rj   rn   rp   rs   rz   Ú	fail_slowÚslowr{   r~   r   r   r   r   r:   F   s2    
"þ


	


r:   )r7   r   r   r   r-   Únumpyr   Únumpy.testingr   r   r   Úscipy.spatial.distancer   Úscipyr   r	   r:   r   r   r   r   Ú<module>   s    <