
    >qj"                     x    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y)
    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                  j                  ddd	g      d
        Zd Zd Zy)TestMGCErrorWarningsz1 Tests errors and warnings derived from MGC.
    c                     t        j                  d      }dgdz  }t        t        t        j
                  ||       t        t        t        j
                  ||       y )N      nparangeassert_raises
ValueErrorr	   multiscale_graphcorrselfxys      Y/opt/rentech/trading_bot/.venv/lib/python3.12/site-packages/scipy/stats/tests/test_mgc.pytest_error_notndarrayz*TestMGCErrorWarnings.test_error_notndarray   sB    IIbMC"Hj%"<"<aCj%"<"<aC    c                     t        j                  d      j                  dd      }|j                  dd      }t        t        t
        j                  ||       y )Nd         
   )r   r   reshaper   r   r	   r   r   s      r   test_error_shapez%TestMGCErrorWarnings.test_error_shape   s@    IIcN""2q)IIb"j%"<"<aCr   c                     t        j                  d      }t        j                  d      }t        t        t        j
                  ||       y )N   r   r   s      r   test_error_lowsamplesz*TestMGCErrorWarnings.test_error_lowsamples   s0    IIaLIIaLj%"<"<aCr   c                 
   t        j                  dt              }t         j                  |d<   t	        t
        t        j                  ||       t        j                  d      }t	        t
        t        j                  ||       y )Nr   )dtyper   )r   r   floatnanr   r   r	   r   r   s      r   test_error_nansz$TestMGCErrorWarnings.test_error_nans    sT    IIb&vv!j%"<"<aCIIbMj%"<"<aCr   c                 v    t        j                  d      }d}t        t        t        j
                  |||       y )Nr   r   compute_distancer   )r   r   r-   s      r   test_error_wrongdisttypez-TestMGCErrorWarnings.test_error_wrongdisttype)   s.    IIbMj%"<"<a'7	9r   reps1c                 r    t        j                  d      }t        t        t        j
                  |||       y )Nr   r/   r   )r   r/   r   s      r   test_error_repsz$TestMGCErrorWarnings.test_error_reps0   s'     IIbMj%"<"<aNr   c                 v    t        j                  d      }d}t        t        t        j
                  |||       y )Nr   r   r3   )r   r   assert_warnsRuntimeWarningr	   r   )r   r   r/   s      r   test_warns_repsz$TestMGCErrorWarnings.test_warns_reps9   s*    IIbM^U%?%?ADQr   c                     t        j                  d      }t        j                  d      t         j                  z  }t	        t
        t        j                  ||       y )Nr   )r   r   onesinfr   r   r	   r   r   s      r   test_error_inftyz%TestMGCErrorWarnings.test_error_infty?   s9    IIbMGGBK"&& j%"<"<aCr   N)__name__
__module____qualname____doc__r   r"   r%   r*   r.   pytestmarkparametrizer4   r8   r<    r   r   r   r   
   sb    DDDD9 [[V
& O	O
RDr   r   c                      e Zd ZdZd ZddZej                  j                  ej                  j                  dg d      d               Z
ej                  j                  ej                  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                  j!                  d      ej                  j"                  d               Zd Zej                  j                  d        Zy)TestMGCStatz) Test validity of MGC test statistic
    c                 L    t         j                  j                  d      | _        y )NixK)r   randomdefault_rngrng)r   s    r   setup_methodzTestMGCStat.setup_methodI   s    99((4r   Nc                    |xs | j                   }|dk(  r<|j                  dd|df      }|d|j                  |j                  df      z  z   }n`|dk(  rt	        j
                  | j                   j                  dd|df            }|t	        j                  t        j                  |z        z  }|t	        j                  t        j                  |z        z  d	| j                   j                  |j                  df      z  z   }n|d
k(  r| j                   j                  |df      }| j                   j                  |df      }	| j                   j                  dd|df      }
| j                   j                  dd|df      }|dz  d|
z  z   dz
  }|	dz  d|z  z   dz
  }nt        d      |dkD  r:| j                   j                  ||dz
  f      }t	        j                  ||fd      }||fS )Nlinearr0      sizeg333333?	nonlinearr   r   g?independence      ?)prP   r$      z3sim_type must be linear, nonlinear, or independence)axis)rJ   uniformrH   rP   r   arraycospisinstandard_normalbinomialr   concatenate)r   sampsdimssim_typerJ   r   r   unifuvu_2v_2
dims_noises                r   _simulationsz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tAv1GJ:Q7A!tr   zsim_type, obs_stat, obs_pvalue))rM   g@%]?ܣ'^P?)rQ   g.?ri   )rR   goz_=pgnL?c                     t         j                  j                  d      }| j                  dd||      \  }}t	        j
                  |||      \  }}}	t        ||       t        ||       y )N   	=gL r   rN   r_   r`   ra   rJ   random_stater   rH   rI   rh   r	   r   r   
r   ra   obs_stat
obs_pvaluerJ   r   r   statpvalue_s
             r   	test_onedzTestMGCStat.test_onedo   se     ii##J/  sX3 O1  44QLfah'
+r   )rM   gxO?ri   )rQ   g	W?g3m?c                     t         j                  j                  d      }| j                  dd||      \  }}t	        j
                  |||      \  }}}	t        ||       t        ||       y )Nrk   r   r   rl   rm   ro   rp   s
             r   
test_fivedzTestMGCStat.test_fived   se     ii##J/  sX3 O1  44QLfah'
+r   c                    | j                   j                  ddd      }| j                   j                  d      }t        j                  ||| j                         \  }}}t        |dd	       t        |d
d	       | j                   j                  d      }t        j                  ||d| j                         \  }}}t        |dd	       t        |d
d	       y )Nr   rS   )r   r   rO   )P   r   rm         ?rN   significantMbP?T)
is_twosamprn   )rJ   r]   r\   r	   r   r   r   r   r   rs   rt   ru   s         r   test_twosampzTestMGCStat.test_twosamp   s     HHc3X6HH$$'$2  44QQfaD#15FEq9 HH$$($3  44QdBF((LfaD#15FEq9r   c                     | j                  ddd      \  }}t        j                  ||d| j                        \  }}}t	        |dd       t	        |d	d       y )
Nr   rN   rM   r_   r`   ra   rU   )workersrn   
ףp=
?r|   r~   )rh   r	   r   rJ   r   r   s         r   test_workerszTestMGCStat.test_workers   s]       sX F1  44Q1BF((LfaD$A6FEq9r   c                     | j                  ddd      \  }}t        j                  ||d      \  }}}t        |dd       t        |dd       y )	Nr   rN   rM   r   rm   r   r|   r~   )rh   r	   r   r   r   s         r   test_random_statezTestMGCStat.test_random_state   sS       sX F1  44QJfaD$A6FEq9r   c                     | j                  ddd      \  }}t        ||d      }t        ||d      }t        j                  ||d d      \  }}}t	        |dd	       t	        |d
d	       y )Nr   rN   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   sw       s[ I1a;/a;/$)$>$>uePTLM%O!	; 	Iu!<KA>r   r   c                     | j                  ddd      \  }}t        j                  ||d      \  }}}t        |d       y )Nr   rN   rM   r   rm   g'^P?)rh   r	   r   r   )r   r   r   ru   rt   s        r   test_pvalue_literaturez"TestMGCStat.test_pvalue_literature   sE       sX F1 11!QQG61'r   c                     d}t        j                  |      j                  dd      }t        ||      }t        j                  ||f      }t        j                  ||d       }t        |j                  d       t        |j                  d       y )N   r0   rN   r,   g        r{   )
r   r   r!   r   zerosr	   r   r   	statisticrt   )r   nr   r   r   ress         r   %test_zero_distance_matrix_index_errorz1TestMGCStat.test_zero_distance_matrix_index_error   sv     IIaL  Q' a !Q  ((Ms+

C(r   c                     | j                  ddd      \  }}t        j                  ||d      }t        |j                  |j
                         y )Nr   rN   rM   r   rm   )rh   r	   r   r   rs   r   )r   r   r   r   s       r   
test_aliaszTestMGCStat.test_alias   sE       sX F1((AA>SXXs}}-r   )r   rN    N)r=   r>   r?   r@   rK   rh   rA   rB   xslowrC   rv   rx   r   r   r   r   	fail_slowslowr   r   r   rD   r   r   rF   rF   F   sf   5!F [[[[= @ , , [[[[= 	35	@ , , [[: :& [[: : [[: : [[
? 
? [[2[[(  ()" [[. .r   rF   )rA   r   r   r   r6   numpyr   numpy.testingr   r   r   scipy.spatial.distancer   scipyr	   r   rF   rD   r   r   <module>r      s3     A  L L ( 9D 9Dxc. c.r   