
    5[g                     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      U/var/www/html/bid-api/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   r2   )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parametrizer3   r7   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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ej                  j                  d        Zy)TestMGCStatz) Test validity of MGC test statistic
    c                 F   |dk(  rXt         j                  j                  dd|df      }|dt         j                  j                  |j                  df      z  z   }n||dk(  rt        j
                  t         j                  j                  dd|df            }|t        j                  t         j                  |z        z  }|t        j                  t         j                  |z        z  d	t         j                  j                  |j                  df      z  z   }n|d
k(  rt         j                  j                  dd|df      }t         j                  j                  dd|df      }t         j                  j                  dd|df      }	t         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@t         j                  j                  dd||dz
  f      }t        j                  ||fd      }||fS )Nlinearr/      sizeg333333?	nonlinearr   r   g?independence      ?)prJ   r$      z3sim_type must be linear, nonlinear, or independence)axis)r   randomuniformrandom_samplerJ   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!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))!QeT!V_)EJ:Q7A!tr   zsim_type, obs_stat, obs_pvalue))rG   
ףp=
?MbP?)rK   w/?rf   )rL   gUN@g(\?c                     t         j                  j                  d       | j                  dd|      \  }}t	        j
                  ||      \  }}}t        ||d       t        ||d       y )NNa r   rH   r[   r\   r]   significantr   rQ   seedrd   r	   r   r   	r   r]   obs_stat
obs_pvaluer   r   statpvalue_s	            r   	test_onedzTestMGCStat.test_onedk   sc     			x    sX F1  44Q:faD(:FJA>r   )rG   gZd;O?rf   )rK   g~jt?gʡE?c                     t         j                  j                  d       | j                  dd|      \  }}t	        j
                  ||      \  }}}t        ||d       t        ||d       y )Nri   r   r   rj   rH   rk   rm   ro   s	            r   
test_fivedzTestMGCStat.test_fived|   sc     			x    sX F1  44Q:faD(:FJA>r   c                    t         j                  j                  d       t         j                  j                  ddd      }t         j                  j	                  ddd      }t        j                  ||      \  }}}t        |d	d
       t        |dd
       t         j                  j	                  ddd      }t        j                  ||d      \  }}}t        |d	d
       t        |dd
       y )Nri   r   rM   )r   r   rI   r   rH   )P   r   g      ?rk   rf   T)
is_twosamp)r   rQ   rn   rY   rX   r	   r   r   r   r   r   rr   rs   rt   s         r   test_twosampzTestMGCStat.test_twosamp   s    
		x  IIsCh7IIQ0  44Q:faD#15FEq9 IIQ1  44QdKfaD#15FEq9r   c                     t         j                  j                  d       | j                  ddd      \  }}t	        j
                  ||d      \  }}}t        |dd	       t        |d
d	       y )Nri   r   rH   rG   rj   rO   )workersre   rk   rf   rm   r{   s         r   test_workerszTestMGCStat.test_workers   sc    
		x    sX F1  44Q1EfaD$A6FEq9r   c                     | j                  ddd      \  }}t        j                  ||d      \  }}}t        |dd       t        |dd       y )	Nr   rH   rG   rj   random_statere   rk   rf   )rd   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                    t         j                  j                  d       | j                  ddd      \  }}t	        ||d      }t	        ||d      }t        j                  ||d d      \  }}}t        |d	d
       t        |dd
       y )Nri   r   rH   rK   rj   	euclidean)metric)r,   r   rg   rk   rf   )r   rQ   rn   rd   r   r	   r   r   )r   r   r   distxdisty	stat_distpvalue_distrt   s           r   test_dist_permzTestMGCStat.test_dist_perm   s    
		x   s[ I1a;/a;/$)$>$>uePTLM%O!	; 	Iu!<KA>r   r    c                     t         j                  j                  d       | j                  ddd      \  }}t	        j
                  ||d      \  }}}t        |d       y )Nri   r   rH   rG   rj   r   g'^P?)r   rQ   rn   rd   r	   r   r   )r   r   r   rt   rs   s        r   test_pvalue_literaturez"TestMGCStat.test_pvalue_literature   sW     			x    sX F1 11!QQG61'r   c                     t         j                  j                  d       | j                  ddd      \  }}t	        j
                  ||d      }t        |j                  |j                         y )Nri   r   rH   rG   rj   r   )	r   rQ   rn   rd   r	   r   r   rr   	statistic)r   r   r   ress       r   
test_aliaszTestMGCStat.test_alias   sU    
		x    sX F1((AA>SXXs}}-r   N)r   rH    )r<   r=   r>   r?   rd   r@   rA   xslowrB   ru   rw   r|   r   r   r   	fail_slowslowr   r   rC   r   r   rE   rE   F   sZ    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      s3     A  L L ( 9D 9DxS. S.r   