
    (ph                     x    S SK r S SK JrJr  S SKrS SKJrJ	r	J
r
  S SKJr  S SKJr   " S S5      r " S S	5      rg)
    N)raiseswarns)assert_approx_equalassert_allcloseassert_equal)cdist)statsc                       \ rS rSrSrS rS rS rS rS r	\
R                  R                  SS	S
/5      S 5       rS rS rSrg)TestMGCErrorWarnings
   z0Tests errors and warnings derived from MGC.
    c                     [         R                  " S5      nS/S-  n[        [        [        R
                  X5        [        [        [        R
                  X!5        g )N      nparangeassert_raises
ValueErrorr	   multiscale_graphcorrselfxys      M/var/www/html/venv/lib/python3.13/site-packages/scipy/stats/tests/test_mgc.pytest_error_notndarray*TestMGCErrorWarnings.test_error_notndarray   s>    IIbMC"Hj%"<"<aCj%"<"<aC    c                     [         R                  " S5      R                  SS5      nUR                  SS5      n[        [        [
        R                  X5        g )Nd         r   )r   r   reshaper   r   r	   r   r   s      r   test_error_shape%TestMGCErrorWarnings.test_error_shape   s>    IIcN""2q)IIb"j%"<"<aCr   c                     [         R                  " S5      n[         R                  " S5      n[        [        [        R
                  X5        g )N   r   r   s      r   test_error_lowsamples*TestMGCErrorWarnings.test_error_lowsamples   s.    IIaLIIaLj%"<"<aCr   c                    [         R                  " S[        S9n[         R                  US'   [	        [
        [        R                  X5        [         R                  " S5      n[	        [
        [        R                  X5        g )Nr   )dtyper   )r   r   floatnanr   r   r	   r   r   s      r   test_error_nans$TestMGCErrorWarnings.test_error_nans    sP    IIb&vv!j%"<"<aCIIbMj%"<"<aCr   c                 p    [         R                  " S5      nSn[        [        [        R
                  XUS9  g )Nr   r   )compute_distancer   )r   r   r0   s      r   test_error_wrongdisttype-TestMGCErrorWarnings.test_error_wrongdisttype)   s,    IIbMj%"<"<a'7	9r   reps1c                 l    [         R                  " S5      n[        [        [        R
                  X"US9  g )Nr   r3   r   )r   r3   r   s      r   test_error_reps$TestMGCErrorWarnings.test_error_reps0   s%     IIbMj%"<"<aNr   c                 p    [         R                  " S5      nSn[        [        [        R
                  XUS9  g )Nr   r   r7   )r   r   assert_warnsRuntimeWarningr	   r   )r   r   r3   s      r   test_warns_reps$TestMGCErrorWarnings.test_warns_reps9   s(    IIbM^U%?%?DQr   c                     [         R                  " S5      n[         R                  " S5      [         R                  -  n[	        [
        [        R                  X5        g )Nr   )r   r   onesinfr   r   r	   r   r   s      r   test_error_infty%TestMGCErrorWarnings.test_error_infty?   s7    IIbMGGBK"&& j%"<"<aCr    N)__name__
__module____qualname____firstlineno____doc__r   r#   r'   r-   r1   pytestmarkparametrizer8   r=   rB   __static_attributes__rD   r   r   r   r   
   sb    DDDD9 [[V
& O	O
RDr   r   c                      \ rS rSrSrSS jr\R                  R                  \R                  R                  S/ SQ5      S 5       5       r
\R                  R                  \R                  R                  SSS/5      S	 5       5       r\R                  R                  S
 5       r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R                  S 5       r\R                  R!                  S5      \R                  R"                  S 5       5       r\R                  R                  S 5       rSrg)TestMGCStatF   z(Test validity of MGC test statistic
    c                    US:X  aR  [         R                  R                  SSUS4S9nUS[         R                  R                  UR                  S4S9-  -   nGOoUS:X  a  [         R
                  " [         R                  R                  SSUS4S95      nU[         R                  " [         R                  U-  5      -  nU[         R                  " [         R                  U-  5      -  S	[         R                  R                  UR                  S4S9-  -   nOUS
:X  a  [         R                  R                  SSUS4S9n[         R                  R                  SSUS4S9n[         R                  R                  SSUS4S9n	[         R                  R                  SSUS4S9n
US-  SU	-  -   S-
  nUS-  SU
-  -   S-
  nO[        S5      eUS:  a9  [         R                  R                  SSXS-
  4S9n[         R                  " XK4SS9nXE4$ )Nlinearr4      sizeg333333?	nonlinearr   r   g?independence      ?)prU   r&      z3sim_type must be linear, nonlinear, or independence)axis)r   randomuniformrandom_samplerU   arraycospisinnormalbinomialr   concatenate)r   sampsdimssim_typer   r   unifuvu_2v_2
dims_noises               r   _simulationsTestMGCStat._simulationsI   s   x		!!"auaj!9AC"))11{1CCCA $88BII--a%-DEDrvvbeedl++Aruut|,,RYY,,1661+,>>?A '		  AUAJ 7A		  AUAJ 7A))$$Q#UAJ$?C))$$Q#UAJ$?C!aeaA!aeaA  , - - !8))!Qe!V_)EJQ7Atr   zsim_type, obs_stat, obs_pvalue))rR   
ףp=
?MbP?)rV   w/?rr   )rW   gUN@g(\?c                     [         R                  R                  S5        U R                  SSUS9u  pE[        R
                  " XE5      u  pgn[        XbSS9  [        XsSS9  g )NNa r   rS   rf   rg   rh   significantr   r\   seedro   r	   r   r   	r   rh   obs_stat
obs_pvaluer   r   statpvalue_s	            r   	test_onedTestMGCStat.test_onedk   sY     			x    sX F  44Q:aD:FA>r   )rR   gZd;O?rr   )rV   g~jt?gʡE?c                     [         R                  R                  S5        U R                  SSUS9u  pE[        R
                  " XE5      u  pgn[        XbSS9  [        XsSS9  g )Nru   r   r   rv   rS   rw   ry   r{   s	            r   
test_fivedTestMGCStat.test_fived|   sY     			x    sX F  44Q:aD:FA>r   c                    [         R                  R                  S5        [         R                  R                  SSSS9n[         R                  R	                  SSSS9n[
        R                  " X5      u  p4n[        US	SS
9  [        USSS
9  [         R                  R	                  SSSS9n[
        R                  " XSS9u  p4n[        US	SS
9  [        USSS
9  g )Nru   r   rX   )r   r   rT   r   rS   )P   r   g      ?rw   rr   T)
is_twosamp)r   r\   rz   rd   rc   r	   r   r   r   r   r   r~   r   r   s         r   test_twosampTestMGCStat.test_twosamp   s    
		x  IIsCh7IIQ0  44Q:aD#15FEq9 IIQ1  44QdKaD#15FEq9r   c                     [         R                  R                  S5        U R                  SSSS9u  p[        R
                  " XSS9u  p4n[        USSS	9  [        US
SS	9  g )Nru   r   rS   rR   rv   rZ   )workersrq   rw   rr   ry   r   s         r   test_workersTestMGCStat.test_workers   s]    
		x    sX F  44Q1EaD$A6FEq9r   c                     U R                  SSSS9u  p[        R                  " XSS9u  p4n[        USSS9  [        USSS9  g )	Nr   rS   rR   rv   random_staterq   rw   rr   )ro   r	   r   r   r   s         r   test_random_stateTestMGCStat.test_random_state   sM       sX F  44QJaD$A6FEq9r   c                     [         R                  R                  S5        U R                  SSSS9u  p[	        XSS9n[	        X"SS9n[
        R                  " X4S SS9u  pVn[        US	SS
9  [        USSS
9  g )Nru   r   rS   rV   rv   	euclidean)metric)r0   r   rs   rw   rr   )r   r\   rz   ro   r   r	   r   r   )r   r   r   distxdisty	stat_distpvalue_distr   s           r   test_dist_permTestMGCStat.test_dist_perm   s{    
		x   s[ Ia;/a;/$)$>$>uPTLM%O!	 	Iu!<KA>r   r   c                     [         R                  R                  S5        U R                  SSSS9u  p[        R
                  " XSS9u  p4n[        US5        g )Nru   r   rS   rR   rv   r   g'^P?)r   r\   rz   ro   r	   r   r   )r   r   r   r   r   s        r   test_pvalue_literature"TestMGCStat.test_pvalue_literature   sQ     			x    sX F 11!QG1'r   c                     [         R                  R                  S5        U R                  SSSS9u  p[        R
                  " XSS9n[        UR                  UR                  5        g )Nru   r   rS   rR   rv   r   )	r   r\   rz   ro   r	   r   r   r~   	statistic)r   r   r   ress       r   
test_aliasTestMGCStat.test_alias   sQ    
		x    sX F((A>SXXs}}-r   rD   N)r   rS    )rE   rF   rG   rH   rI   ro   rJ   rK   xslowrL   r   r   r   r   r   r   	fail_slowslowr   r   rM   rD   r   r   rO   rO   F   sZ    D [[[[= @ 
	? 	? [[[[=!$@ 	?	 
	? [[: :( [[	: 	: [[: : [[? ? [[2[[(  ( [[. .r   rO   )rJ   r   r   r   r;   numpyr   numpy.testingr   r   r   scipy.spatial.distancer   scipyr	   r   rO   rD   r   r   <module>r      s3     A  L L ( 9D 9DxS. S.r   