U
    f»{j¼  ã                   @   sD  d dl mZ d dlmZ d dlZd dlmZmZmZ d dl	Z
d dlZd dlZd dlmZmZmZ e
 dddg¡e
 d	d
dg¡e
 d	ddg¡e
 dddg¡e
 dddg¡e
 dddddddg¡e
 dg¡dœZdd„ Zdd „ Zd!d"„ Zej d#d$i fd%i fd%ed&d'�fd%ed(d'�fg¡ej d)d*¡ej d+d d,d-g¡d.d/„ ƒƒƒZdS )0é    )Úpartial)ÚproductN)Úassert_array_almost_equalÚassert_allcloseÚassert_array_less)Ú	f_mway_rmÚf_threshold_mway_rmÚ_map_effectsg%�•C‹@g¸…ëQ¸Î?gj¼t“ü?gTã¥›Ä À?gžï§ÆK7é?g+‡ÙÎÇ?gJ+‡é?gú~j¼t“È?g¯´ŒÔ{Š@g
ô‰<IºÎ?g`“5ê!ü?g‰ê­�­À?gL£uT5é?g$¹ü‡ôÛÇ?g€Ô&Nîç?gÉå?¤ß¾Ê?gúDž$]Ë?g�N]ù,Ïï?g„d¸?g' ‰°áé½?g”jŸŽÇL@g�¨ŒŸå?)Ú
spss_fvalsÚspss_pvals_uncorrectedÚspss_pvals_correctedÚr_fvalsÚr_pvals_uncorrectedÚr_fvals_3wayÚr_fvals_1wayc                 C   s&   t j d¡}| | | ¡ | |¡}|S )zGenerate testing data.é*   )ÚnpÚrandomÚRandomStateÚrandnZreshape)Ú
n_subjectsÚn_conditionsÚrngÚdata© r   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/stats/tests/test_parametric.pyÚgenerate_data%   s     ÿr   c                  C   s²   t ddd�\} }|dgkst‚t dddgd�\} }|ddgksBt‚t ddd�\} }|dddgksdt‚t ddd�\} }|dddd	d
gksŠt‚tjtt dd	d� tjtt ddd� dS )zTest ANOVA effects parsing.é   ÚA)Z	n_factorsÚeffectsúA:Bé   zA*BÚBzA*CÚCzA:Cé   ÚallN)r	   ÚAssertionErrorÚpytestÚraisesÚ
ValueError)Z	selectionÚnamesr   r   r   Útest_map_effects-   s    r+   c                  C   s¶  t j d¡} tddgddgdddgdd	d
gddgƒ}ddgddgddgdœ}|D ]Ô}|\}}}}}|  |||g¡}	t|	|| ||d�\}
}|
dk ¡ sšt‚| ¡ rºd|kd|k@  ¡ sºt‚t	t
||ƒd ƒ}|
j|| ksÞt‚|dkrô|
jdksôt‚t||| |ƒ}|dk ¡ �st‚|j|ksPt‚qPd\}}}}|  ||||g¡}	t|	|| ƒ\}
}|
jdd… |jdd…   k�r†||fk�sŒn t‚|  ||dg¡}	tjtt|	|| d|d� |  |||dg¡}	t|	|| ||d� tddd�}t|ddgƒ\}
}t|
td dƒ t|td dƒ t|
td dƒ t|td dƒ t|ddgdd�\}}t|td dƒ tddd�}t|dddgƒ\}
}t|
td dƒ t|dgdƒ\}
}t|
td dƒ dS ) zTest 2-way anova.r   é   é
   r   é   é   é   r   r"   r    FTr!   )r,   r/   r0   )Ú
correctionr   é   )é   r-   ée   r,   Nr#   )r   r1   é   )r   r   r
   r   r   r   r   r   r3   r   )r   r   r   r   Zrandom_sampler   r%   r&   ÚanyÚlenr	   ÚsizeÚndimr   Úshaper'   r(   r)   r   r   Útest_external)r   Ziter_paramsZ_effectsÚparamsZn_subjZn_obsZn_levelsr   r1   r   ZfvalsZpvalsZ	n_effectsZfvals_Zn_freqsZn_timesZ	test_dataÚ_r   r   r   Útest_f_twoway_rmA   sf    þýÿ
6 ÿ
ÿr>   zkind, kwargsÚ1sampÚindT)Z	equal_varFÚsigma)ç        gü©ñÒMbP?Úseedr   i9  c           
         sà   t j |¡}‡ ‡fdd„}tttjdˆ f ƒfd|iˆ—Ž}| ddd¡}ˆ dkrv|| d	dd¡g}||Ž }||Ž }	n||ƒ}||ƒ}	|d
kr t||	ddd� n<t j	||	ddd�r¶t
‚t||	ddd� tt  |¡t  |	¡ƒ dS )zTest t-test equivalence.c                     sJ   t tjdˆ f ƒ}ˆ dkr0t|fddiˆ—Ž}nt|fˆŽ}|| |Žd S )Nzttest_%sr?   Zpopmeanr   )ÚgetattrÚscipyÚstatsr   )ÚaÚkwÚfÚfunc©ÚkindÚkwargsr   r   Útheirs‹   s
    z test_ttest_equiv.<locals>.theirszttest_%s_no_prA   r!   r,   r3   r@   é   rB   gH¯¼šò×z>g�íµ ÷Æ°>)ZrtolZatolgš™™™™™É?g{®Gáz„?N)r   r   r   r   rD   ÚmnerF   r   r   Zallcloser&   r   Úabs)
rL   rM   rA   rC   r   rN   ZoursÚXÚgotZwantr   rK   r   Útest_ttest_equiv   s&    
ÿÿ
rT   )Ú	functoolsr   Ú	itertoolsr   r'   Znumpy.testingr   r   r   Únumpyr   Zscipy.statsrE   rP   Zmne.stats.parametricr   r   r	   Úarrayr;   r   r+   r>   ÚmarkZparametrizeÚdictrT   r   r   r   r   Ú<module>   sF   ù
î>ü