
    _Mh                         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          Z G d d	          ZdS )
    N)raiseswarns)assert_approx_equalassert_allcloseassert_equal)cdist)statsc                       e Zd ZdZd Zd Zd Zd Zd Ze	j
                            ddd	g          d
             Zd Zd ZdS )TestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                     t          j        d          }dgdz  }t          t          t          j        ||           t          t          t          j        ||           d S )N      nparangeassert_raises
ValueErrorr	   multiscale_graphcorrselfxys      Z/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/scipy/stats/tests/test_mgc.pytest_error_notndarrayz*TestMGCErrorWarnings.test_error_notndarray   sN    IbMMC"Hj%"<aCCCj%"<aCCCCC    c                     t          j        d                              dd          }|                    dd          }t          t          t
          j        ||           d S )Nd         
   )r   r   reshaper   r   r	   r   r   s      r   test_error_shapez%TestMGCErrorWarnings.test_error_shape   sO    IcNN""2q))IIb"j%"<aCCCCCr   c                     t          j        d          }t          j        d          }t          t          t          j        ||           d S )N   r   r   s      r   test_error_lowsamplesz*TestMGCErrorWarnings.test_error_lowsamples   s9    IaLLIaLLj%"<aCCCCCr   c                    t          j        dt                    }t           j        |d<   t	          t
          t          j        ||           t          j        d          }t	          t
          t          j        ||           d S )Nr   )dtyper   )r   r   floatnanr   r   r	   r   r   s      r   test_error_nansz$TestMGCErrorWarnings.test_error_nans    sb    Ib&&&v!j%"<aCCCIbMMj%"<aCCCCCr   c                 x    t          j        d          }d}t          t          t          j        |||           d S )Nr   r   )compute_distancer   )r   r   r,   s      r   test_error_wrongdisttypez-TestMGCErrorWarnings.test_error_wrongdisttype)   sD    IbMMj%"<a'7	9 	9 	9 	9 	9 	9r   reps1c                 t    t          j        d          }t          t          t          j        |||           d S )Nr   r.   r   )r   r.   r   s      r   test_error_repsz$TestMGCErrorWarnings.test_error_reps0   s3     IbMMj%"<aNNNNNNr   c                 x    t          j        d          }d}t          t          t          j        |||           d S )Nr   r   r2   )r   r   assert_warnsRuntimeWarningr	   r   )r   r   r.   s      r   test_warns_repsz$TestMGCErrorWarnings.test_warns_reps9   s6    IbMM^U%?ADQQQQQQr   c                     t          j        d          }t          j        d          t           j        z  }t	          t
          t          j        ||           d S )Nr   )r   r   onesinfr   r   r	   r   r   s      r   test_error_inftyz%TestMGCErrorWarnings.test_error_infty?   s@    IbMMGBKK"& j%"<aCCCCCr   N)__name__
__module____qualname____doc__r   r"   r%   r*   r-   pytestmarkparametrizer3   r7   r;    r   r   r   r   
   s         D D DD D DD D DD D D9 9 9 [V
&  O O	 O
R R RD D D D Dr   r   c                   6   e Zd ZdZddZej        j        ej                            dg d          d                         Z	ej        j        ej                            dd	d
g          d                         Z
ej        j        d             Zej        j        d             Zej        j        d             Zej        j        d             Zej                            d          ej        j        d                         Zej        j        d             ZdS )TestMGCStatz) Test validity of MGC test statistic
    r       c                 *   |dk    rSt           j                            dd|df          }|dt           j                            |j        df          z  z   }nr|dk    rt          j        t           j                            dd|df                    }|t          j        t           j        |z            z  }|t          j        t           j        |z            z  d	t           j                            |j        df          z  z   }n|d
k    rt           j        	                    dd|df          }t           j        	                    dd|df          }t           j        
                    dd|df          }	t           j        
                    dd|df          }
|dz  d|	z  z   dz
  }|dz  d|
z  z   dz
  }nt          d          |dk    r?t           j        	                    dd||dz
  f          }t          j        ||fd          }||fS )Nlinearr/   rF   sizeg333333?	nonlinearr   r   g?independence      ?)prK   r$      z3sim_type must be linear, nonlinear, or independence)axis)r   randomuniformrandom_samplerK   arraycospisinnormalbinomialr   concatenate)r   sampsdimssim_typer   r   unifuvu_2v_2
dims_noises               r   _simulationszTestMGCStat._simulationsI   s   x	!!"auaj!99AC")11{1CCCCAA $$8BI--a%-DDEEDrvbedl+++Arut|,,,RY,,161+,>>>?AA ''	  AUAJ 77A	  AUAJ 77A)$$Q#UAJ$??C)$$Q#UAJ$??C!aeaA!aeaAA  , - - - !88))!QeT!V_)EEJ:Q777A!tr   zsim_type, obs_stat, obs_pvalue))rI   
ףp=
?MbP?)rL   w/?rg   )rM   gUN@g(\?c                     t           j                            d           |                     dd|          \  }}t	          j        ||          \  }}}t          ||d           t          ||d           d S )NNa r   rF   r\   r]   r^   significantr   rR   seedre   r	   r   r   	r   r^   obs_stat
obs_pvaluer   r   statpvalue_s	            r   	test_onedzTestMGCStat.test_onedk   s     		x      sX FF1  4Q::faD(::::FJA>>>>>>r   )rI   gZd;O?rg   )rL   g~jt?gʡE?c                     t           j                            d           |                     dd|          \  }}t	          j        ||          \  }}}t          ||d           t          ||d           d S )Nrj   r   r   rk   rF   rl   rn   rp   s	            r   
test_fivedzTestMGCStat.test_fived|   s     		x      sX FF1  4Q::faD(::::FJA>>>>>>r   c                    t           j                            d           t           j                            ddd          }t           j                            ddd          }t          j        ||          \  }}}t          |d	d
           t          |dd
           t           j                            ddd          }t          j        ||d          \  }}}t          |d	d
           t          |dd
           d S )Nrj   r   rN   )r   r   rJ   r   rF   )P   r   g      ?rl   rg   T)
is_twosamp)r   rR   ro   rZ   rY   r	   r   r   r   r   r   rs   rt   ru   s         r   test_twosampzTestMGCStat.test_twosamp   s   
	x    IsCh77IQ00  4Q::faD#15555FEq9999 IQ11  4QdKKKfaD#15555FEq999999r   c                     t           j                            d           |                     ddd          \  }}t	          j        ||d          \  }}}t          |dd	           t          |d
d	           d S )Nrj   r   rF   rI   rk   rP   )workersrf   rl   rg   rn   r|   s         r   test_workerszTestMGCStat.test_workers   s    
	x      sX FF1  4Q1EEEfaD$A6666FEq999999r   c                     |                      ddd          \  }}t          j        ||d          \  }}}t          |dd           t          |dd           d S )	Nr   rF   rI   rk   random_staterf   rl   rg   )re   r	   r   r   r|   s         r   test_random_statezTestMGCStat.test_random_state   sq       sX FF1  4QJJJfaD$A6666FEq999999r   c                 B   t           j                            d           |                     ddd          \  }}t	          ||d          }t	          ||d          }t          j        ||d d          \  }}}t          |d	d
           t          |dd
           d S )Nrj   r   rF   rL   rk   	euclidean)metric)r,   r   rh   rl   rg   )r   rR   ro   re   r   r	   r   r   )r   r   r   distxdisty	stat_distpvalue_distru   s           r   test_dist_permzTestMGCStat.test_dist_perm   s    
	x     s[ II1a;///a;///$)$>uePTLM%O %O %O!	; 	Iu!<<<<KA>>>>>>r   r   c                     t           j                            d           |                     ddd          \  }}t	          j        ||d          \  }}}t          |d           d S )Nrj   r   rF   rI   rk   r   g'^P?)r   rR   ro   re   r	   r   r   )r   r   r   ru   rt   s        r   test_pvalue_literaturez"TestMGCStat.test_pvalue_literature   sm     		x      sX FF1 1!QQGGG61'''''r   c                     t           j                            d           |                     ddd          \  }}t	          j        ||d          }t          |j        |j                   d S )Nrj   r   rF   rI   rk   r   )	r   rR   ro   re   r	   r   r   rs   	statistic)r   r   r   ress       r   
test_aliaszTestMGCStat.test_alias   sg    
	x      sX FF1(AA>>>SXs}-----r   N)r   rF   rG   )r<   r=   r>   r?   re   r@   rA   xslowrB   rv   rx   r}   r   r   r   	fail_slowslowr   r   rC   r   r   rE   rE   F   s               D [[= @ @ @  
	? 	?  	? [[=!$@  	? 	?	  
	? [: : :( [	: 	: 	: [: : : [? ? ? [2[( (  ( [. . . . .r   rE   )r@   r   r   r   r5   numpyr   numpy.testingr   r   r   scipy.spatial.distancer   scipyr	   r   rE   rC   r   r   <module>r      s     A A A A A A A A     L L L L L L L L L L ( ( ( ( ( (      9D 9D 9D 9D 9D 9D 9D 9DxS. S. S. S. S. S. S. S. S. S.r   