
    -ii                          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      `/var/www/html/bet.cuttalo.com/ml/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                   <   e Zd 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
    c                 N    t           j                            d          | _        d S )NixK)r   randomdefault_rngrng)r   s    r   setup_methodzTestMGCStat.setup_methodI   s    9((44r   r       Nc                    |p| j         }|dk    r?|                    dd|df          }|d|                    |j        df          z  z   }nP|dk    rt	          j        | j                             dd|df                    }|t	          j        t          j        |z            z  }|t	          j        t          j        |z            z  d	| j                             |j        df          z  z   }n|d
k    r| j         	                    |df          }| j         	                    |df          }	| j         
                    dd|df          }
| j         
                    dd|df          }|dz  d|
z  z   dz
  }|	dz  d|z  z   dz
  }nt          d          |dk    r8| j         	                    ||dz
  f          }t	          j        ||fd          }||fS )Nlinearr/   rK   sizeg333333?	nonlinearr   r   g?independence      ?)prP   r$      z3sim_type must be linear, nonlinear, or independence)axis)rI   uniformrG   rP   r   arraycospisinstandard_normalbinomialr   concatenate)r   sampsdimssim_typerI   r   r   unifuvu_2v_2
dims_noises                r   _simulationszTestMGCStat._simulationsL   s   oTXxB
33AC#**161+*6666AA $$8DH,,Q
,CCDDDrvbedl+++Arut|,,,TX__161+_6667AA ''((uaj(99A((uaj(99A(##AE1:#>>C(##AE1:#>>C!aeaA!aeaAA  , - - - !8811tAv1GGJ:Q777A!tr   zsim_type, obs_stat, obs_pvalue))rN   g@%]?ܣ'^P?)rQ   g.?ri   )rR   goz_=pgnL?c                     t           j                            d          }|                     dd||          \  }}t	          j        |||          \  }}}	t          ||           t          ||           d S )N   	=gL r   rK   r_   r`   ra   rI   random_stater   rG   rH   rh   r	   r   r   
r   ra   obs_stat
obs_pvaluerI   r   r   statpvalue_s
             r   	test_onedzTestMGCStat.test_onedo   s~     i##J//  sX3 OO1  4QLLLfah'''
+++++r   )rN   gxO?ri   )rQ   g	W?g3m?c                     t           j                            d          }|                     dd||          \  }}t	          j        |||          \  }}}	t          ||           t          ||           d S )Nrk   r   r   rl   rm   ro   rp   s
             r   
test_fivedzTestMGCStat.test_fived   s~     i##J//  sX3 OO1  4QLLLfah'''
+++++r   c                    | j                             ddd          }| j                             d          }t          j        ||| j                   \  }}}t          |dd	           t          |d
d	           | j                             d          }t          j        ||d| j                   \  }}}t          |dd	           t          |d
d	           d S )Nr   rS   )r   r   rO   )P   r   rm   g      ?rK   significantMbP?T)
is_twosamprn   )rI   r]   r\   r	   r   r   r   r   r   rs   rt   ru   s         r   test_twosampzTestMGCStat.test_twosamp   s     Hc3X66H$$'$22  4QQQQfaD#15555FEq9999 H$$($33  4QdBF(L L LfaD#15555FEq999999r   c                     |                      ddd          \  }}t          j        ||d| j                  \  }}}t	          |dd           t	          |d	d           d S )
Nr   rK   rN   r_   r`   ra   rU   )workersrn   
ףp=
?r{   r}   )rh   r	   r   rI   r   r   s         r   test_workerszTestMGCStat.test_workers   s       sX FF1  4Q1BF(L L L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   rK   rN   r   rm   r   r{   r}   )rh   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                    |                      ddd          \  }}t          ||d          }t          ||d          }t          j        ||d d          \  }}}t	          |dd	           t	          |d
d	           d S )Nr   rK   rQ   r   	euclidean)metric)r,   rn   gw/?r{   r}   )rh   r   r	   r   r   )r   r   r   distxdisty	stat_distpvalue_distru   s           r   test_dist_permzTestMGCStat.test_dist_perm   s       s[ II1a;///a;///$)$>uePTLM%O %O %O!	; 	Iu!<<<<KA>>>>>>r   r   c                     |                      ddd          \  }}t          j        ||d          \  }}}t          |d           d S )Nr   rK   rN   r   rm   g'^P?)rh   r	   r   r   )r   r   r   ru   rt   s        r   test_pvalue_literaturez"TestMGCStat.test_pvalue_literature   sW       sX FF1 1!QQGGG61'''''r   c                     |                      ddd          \  }}t          j        ||d          }t          |j        |j                   d S )Nr   rK   rN   r   rm   )rh   r	   r   r   rs   	statistic)r   r   r   ress       r   
test_aliaszTestMGCStat.test_alias   sS       sX FF1(AA>>>SXs}-----r   )r   rK   rL   N)r<   r=   r>   r?   rJ   rh   r@   rA   xslowrB   rv   rx   r   r   r   r   	fail_slowslowr   r   rC   r   r   rE   rE   F   s        5 5 5! ! ! !F [[= @ @ @  , ,  , [[= 	35	@  , ,  , [: : :& [: : : [: : : [
? 
? 
? [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R. R. R. R. R. R. R. R. R. R.r   