U
    f»{j½  ã                   @   sT   d dl Zd dlmZmZmZ d dlmZ d dlZd dl	m
Z
mZ dd„ Zdd„ ZdS )	é    N)Úassert_almost_equalÚassert_allcloseÚassert_array_equal)Ústats)Úfdr_correctionÚbonferroni_correctionc                  C   s$   d} t | ƒ\}}| ¡ dks t‚dS )z(Test that p-values are never exceed 1.0.)gš™™™™™É?gÍÌÌÌÌÌì?ç      ð?N)r   ÚmaxÚAssertionError)ÚpÚ_Zp_corrected© r   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/stats/tests/test_multi_comp.pyÚtest_bonferroni_pval_clip
   s    r   c                  C   s$  t j d¡} |  ddd¡}|dd…dd…df  d7  < d}t |d¡\}}|jd }|j| }tj 	d| |d	 ¡}t
||ƒ\}}	tj 	d||  |d	 ¡}
|	jd
ks¬t‚|jd
ksºt‚t|	|d jd	d�ƒ |	|k }t||ƒ t  |¡}t||d	ƒ t||dd�\}}|jd
k�st‚|jd
k�s*t‚t  t  |¡| ¡}d| ¡ d   k�r^dk�sdn t‚||  k�r||
k�s‚n t‚tjtt||dd� t  t|dd�d dk¡�s¶t‚t||dd�\}}t  t  |¡| ¡}d| ¡ d   k�rüdk�sn t‚||  k�r|
k�s n t‚dS )z?Test pval correction for multi comparison (FDR and Bonferroni).r   é
   iè  Né2   g      @gš™™™™™©?r   é   é   i'  )r	   Zindep)ÚalphaÚmethodg     @J@Zblah)r   )r   Znegcorr)ÚnpÚrandomZRandomStateZrandnr   Zttest_1sampÚshapeÚsizeÚtZppfr   Úndimr
   r   Zclipr   Zmeanr   r   ÚminÚabsÚsumÚpytestZraisesÚ
ValueErrorÚall)ÚrngÚXr   ÚTZpvalZ	n_samplesZn_testsZthresh_uncorrectedZreject_bonferroniZpval_bonferroniZthresh_bonferroniZreject_expectedZfwerZ
reject_fdrZpval_fdrZ
thresh_fdrr   r   r   Útest_multi_pval_correction   s:    



& &r%   )Únumpyr   Znumpy.testingr   r   r   Zscipyr   r   Z	mne.statsr   r   r   r%   r   r   r   r   Ú<module>   s   