U
    f»{j…  ã                   @   sò   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
mZ d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlmZ ejd	d
�Ze eddd¡Zed d d Zed d d Zejdd„ ƒZejdd„ ƒZeejdd„ ƒƒZdS )é    N)Úassert_array_equalÚassert_allcloseÚassert_equal)Úhann)Úread_source_estimate)Útesting)Úlinear_regressionÚlinear_regression_raw)ÚRawArray)Úrequires_sklearnF)ÚdownloadZMEGÚsamplezsample_audvis_trunc-meg-lh.stczsample_audvis_trunc_raw.fifzsample_audvis_trunc_raw-eve.fifc               	   C   sX  d\} }t ddd�}tj t¡}t t¡dd… }tj|||| |ddd	�}t 	t
|jƒ¡}|j|d
�}|jdd…dd…f  tj¡}d|dd…df< |dd…df  d8  < tjtdd�� t||ddgƒ}	W 5 Q R X |	 ¡ D ]$\}
}|D ]}t|jj|jjƒ qêqÞt tt||g|¡ ttƒ dd¡}|||g}dd„ |D ƒ}tjdd�� t||dt
|ƒ… ƒ}W 5 Q R X t||dt
|ƒ… ƒ}| ¡ D ]Ž}t |j j¡ !¡ �s¨t"‚|j jdk !¡ �s¾t"‚|j jdk !¡ �sÔt"‚t |j#j¡ !¡ �sìt"‚|j#jdk !¡ �st"‚|j#jdk !¡ �sŒt"‚�qŒ|D ]2}t$|| || ƒD ]\}}t%|j|jƒ �q6�q dS )z'Test Ordinary Least Squares Regression.)gš™™™™™É¿ç      à?é   é   )Zaud_lZaud_rNé
   T)Nr   )ZprojÚbaseline)Úpicksr   znon-data)ÚmatchZ	interceptZaudg{®Gáz”?c                 s   s   | ]
}|V  qd S )N© )Ú.0Úsr   r   ú^/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/stats/tests/test_regression.pyÚ	<genexpr>;   s     z"test_regression.<locals>.<genexpr>Úignore)Úinvalid)&ÚdictÚmneÚioÚread_raw_fifÚ	raw_fnameÚread_eventsÚevent_fnameÚEpochsÚnpZarangeÚlenÚch_namesÚaverageÚeventsZastypeZfloat64ÚpytestZwarnsÚRuntimeWarningr   Úitemsr   ÚdataÚshapeÚraisesÚ
ValueErrorr   Ú	stc_fnameÚcropZerrstateÚvaluesÚisfiniteZp_valÚallÚAssertionErrorZmlog10_p_valÚzipr   )ÚtminÚtmaxÚevent_idÚrawr(   Úepochsr   ZevokedZdesign_matrixZlmZ	predictorÚ
parametersÚvalueZstcZstc_listZstc_genZlm1Zlm2ÚvalÚkZv1Zv2r   r   r   Útest_regression   sH    ÿÿ
 r@   c            	   
   C   s*  d\} }t jjtdd�}| ¡  |j ¡ � d|jd< W 5 Q R X t  t¡}t	ddd�}| 
|jd	d… ¡}t j|||| |d	d	d
�}t|||| |d	d�}| ¡ D ]"}t|| j||  ¡ jdd� qž|d }|d |d< t tt|||| |¡ ||d< tt|ƒƒ|d	d	…df< tjtt|||| |dd� d	S )z9Test regression without overlap correction, on real data.)gš™™™™™¹¿r   T)Zpreloadé€   Zsfreqr   r   )Zaudio_lZaudio_rN)r   Úreject)r7   r8   rB   gVçž¯Ò<)Zrtol)r   r   )r   r   r   )Zdecim)r   r   r   r    Z
apply_projÚinfoZ_unlockr!   r"   r   Zpick_channelsr&   r#   r	   Úkeysr   r,   r'   r)   r.   r/   Úranger%   )	r7   r8   r:   r(   r9   r;   ZrevokedsZcondZold_latencyr   r   r   Ú%test_continuous_regression_no_overlapP   sP    
 ÿ þ
 ÿ    ÿ
    ÿrF   c                     sP  t  d¡} dddddddd	g}t  t|ƒd
ft¡}d|dd…df< ||dd…df< d| |dd…df < tdƒ}t  | |¡dt| ƒ… } t| t jdd…f t 	ddd¡ƒ}t
|t||ddidd�d j ¡ ƒ ddlm‰  ‡ fdd„}t
|t||d|d�d j ¡ ƒ ‡ fdd„}tjtt|||d� tjtt||dd� tjtt||dd� dS )z(Test regression with overlap correction.i † iè  iÄ	  i¸  iˆ  i‚  iX  iR  i@  é   r   Nr   r   g      ð?ée   éd   Zeeg)r7   ©Úridge_regressionc                    s   ˆ | |ddd�S ©Ng        Zcholesky)ÚalphaÚsolverr   ©ÚXÚyrJ   r   r   rN   �   s    z7test_continuous_regression_with_overlap.<locals>.solver)r7   rN   Ú1c                    s   ˆ | |ddd�j S rL   )ÚTrO   rJ   r   r   ÚsolT•   s    z5test_continuous_regression_with_overlap.<locals>.solT)rN   Úerr)r$   Zzerosr%   Úintr   Zconvolver
   Znewaxisr   Zcreate_infor   r	   r,   ÚflattenZsklearn.linear_modelrK   r)   r.   r/   Ú	TypeError)ÚsignalÚtimesr(   Zeffectr:   rN   rT   r   rJ   r   Ú'test_continuous_regression_with_overlap{   sB    
"   ÿÿ   ÿÿÿr[   ) Úos.pathÚpathÚopÚnumpyr$   Znumpy.testingr   r   r   r)   Zscipy.signalr   r   r   Zmne.datasetsr   Zmne.stats.regressionr   r	   Zmne.ior
   Z	mne.utilsr   Z	data_pathÚjoinr0   r    r"   Zrequires_testing_datar@   rF   r[   r   r   r   r   Ú<module>   s.   
ÿ
2
*