
    doi                      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      V/var/www/html/land-ocr/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 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                 L    [         R                  R                  S5      U l        g )NixK)r   randomdefault_rngrng)r   s    r   setup_methodTestMGCStat.setup_methodI   s    99((4r   Nc                    U=(       d    U R                   nUS:X  a6  UR                  SSUS4S9nUSUR                  UR                  S4S9-  -   nGOSUS:X  a  [        R
                  " U R                   R                  SSUS4S95      nU[        R                  " [        R                  U-  5      -  nU[        R                  " [        R                  U-  5      -  S	U R                   R                  UR                  S4S9-  -   nOUS
:X  a  U R                   R                  US4S9nU R                   R                  US4S9n	U R                   R                  SSUS4S9n
U 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:  a3  U R                   R                  XS-
  4S9n[        R                  " X\4SS9nXV4$ )Nlinearr4      sizeg333333?	nonlinearr   r   g?independence      ?)pr[   r&      z3sim_type must be linear, nonlinear, or independence)axis)rT   uniformrR   r[   r   arraycospisinstandard_normalbinomialr   concatenate)r   sampsdimssim_typerT   r   r   unifuvu_2v_2
dims_noises                r   _simulationsTestMGCStat._simulationsL   s   oTXXxB
3AC#**1661+*666A $88DHH,,Q
,CDDrvvbeedl++Aruut|,,TXX__1661+_667A '((uaj(9A((uaj(9A((##AE1:#>C((##AE1:#>C!aeaA!aeaA  , - - !811Av1GJQ7Atr   zsim_type, obs_stat, obs_pvalue))rX   g@%]?ܣ'^P?)r\   g.?ru   )r]   goz_=pgnL?c                     [         R                  R                  S5      nU R                  SSXS9u  pV[        R
                  " XVUS9u  pxn	[        Xr5        [        X5        g )N   	=gL r   rY   rj   rk   rl   rT   random_stater   rR   rS   rs   r	   r   r   
r   rl   obs_stat
obs_pvaluerT   r   r   statpvalue_s
             r   	test_onedTestMGCStat.test_onedo   sY     ii##J/  sX O  44QLa'+r   )rX   gxO?ru   )r\   g	W?g3m?c                     [         R                  R                  S5      nU R                  SSXS9u  pV[        R
                  " XVUS9u  pxn	[        Xr5        [        X5        g )Nrw   r   r   rx   ry   r{   r|   s
             r   
test_fivedTestMGCStat.test_fived   sY     ii##J/  sX O  44QLa'+r   c                    U R                   R                  SSSS9nU R                   R                  SS9n[        R                  " XU R                   S9u  p4n[        USSS	9  [        US
SS	9  U R                   R                  SS9n[        R                  " XSU R                   S9u  p4n[        USSS	9  [        US
SS	9  g )Nr   r^   )r   r   rZ   )P   r   ry   g      ?rY   significantMbP?T)
is_twosamprz   )rT   rh   rg   r	   r   r   r   r   r   r   r   r   s         r   test_twosampTestMGCStat.test_twosamp   s     HHc3X6HH$$'$2  44QQaD#15FEq9 HH$$($3  44QdBF((LaD#15FEq9r   c                     U R                  SSSS9u  p[        R                  " XSU R                  S9u  p4n[	        USSS9  [	        US	SS9  g )
Nr   rY   rX   rj   rk   rl   r`   )workersrz   
ףp=
?r   r   )rs   r	   r   rT   r   r   s         r   test_workersTestMGCStat.test_workers   sW       sX F  44Q1BF((L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   rY   rX   r   ry   r   r   r   )rs   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                     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 )Nr   rY   r\   r   	euclidean)metric)r0   rz   gw/?r   r   )rs   r   r	   r   r   )r   r   r   distxdisty	stat_distpvalue_distr   s           r   test_dist_permTestMGCStat.test_dist_perm   sm       s[ Ia;/a;/$)$>$>uPTLM%O!	 	Iu!<KA>r   r   c                 r    U R                  SSSS9u  p[        R                  " XSS9u  p4n[        US5        g )Nr   rY   rX   r   ry   g'^P?)rs   r	   r   r   )r   r   r   r   r   s        r   test_pvalue_literature"TestMGCStat.test_pvalue_literature   s?       sX F 11!QG1'r   c                     U R                  SSSS9u  p[        R                  " XSS9n[        UR                  UR
                  5        g )Nr   rY   rX   r   ry   )rs   r	   r   r   r   	statistic)r   r   r   ress       r   
test_aliasTestMGCStat.test_alias   sA       sX F((A>SXXs}}-r   )rT   )r   rY    N)rE   rF   rG   rH   rI   rU   rs   rJ   rK   xslowrL   r   r   r   r   r   r   	fail_slowslowr   r   rM   rD   r   r   rO   rO   F   sa   5!F [[[[= @ , , [[[[= 	35	@ , , [[: :& [[: : [[: : [[
? 
? [[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R. R.r   