U
    f»{jf  ã                   @   s:   d Z ddlZddlZddlZdd„ ZedkZer6eƒ  dS )aY  Compute SSP/PCA projections for EOG artifacts.

Examples
--------
.. code-block:: console

    $ mne compute_proj_eog -i sample_audvis_raw.fif -a \
                           --l-freq 1 --h-freq 35 \
                           --rej-grad 3000 --rej-mag 4000 --rej-eeg 100

or

.. code-block:: console

    $ mne compute_proj_eog -i sample_audvis_raw.fif -a \
                           --l-freq 1 --h-freq 35 \
                           --rej-grad 3000 --rej-mag 4000 --rej-eeg 100 \
                           --proj sample_audvis_ecg-proj.fif

to exclude ECG artifacts from projection computation.
é    Nc            %      C   s   ddl m}  | tƒ}|jdddddd� |jd	d
dddd� |jdddddd� |jddddddd� |jddddddd� |jddddd dd� |jd!d"dd#d$d� |jd%d&dd'd(d� |jd)d*dd+d$d� |jd,d-dd.d/d� |jd0d1d2d3d4d5� |jd6d7d8d9d:d;d<� |jd=d>d?d@d5� |jdAdBddCdDd� |jdEdFdGddHd$d� |jdIdJddKdLd� |jdMdNddOdPd� |jdQdRddSdTd� |jdUdVddWdXd� |jdYdZd9d[d;d<� |jd\d]d9d^d;d<� |jd_d`dad@d5� |jdbdcdddded� |jdfdgdhd@d5� |jdidjddkdld� |jdmdndodpdqd@d� | ¡ \}}|j}|d@k�rP| ¡  t d$¡ |j	}|j
}|j}|j}|j}	|j}
|j}|j}|j}|j}|j}|j}|j}tdrt|jƒ dst|jƒ dtt|jƒ dtt|jƒ du�}|j}|j}|j}|j}|j }|j!}|j"}|j#}|d@k	�rFt$|dvƒ�}dwdx„ | %¡ D ƒ}W 5 Q R X t&dy| ƒ ng }| 'dz¡�sb| 'd{¡�rp|d@d|… }n|d@d}… }|d~ }|�r”|d }n|d€ }t(j)j*||d��} |d@k	�rÄt(j) *|¡}!n| }!d@}"t(j+j,| |!|||||	|
||||||"||||||||d;d‚�\}#}$|  -¡  |d@k	�r$|! -¡  |d@k	�rHt&dƒ| ƒ t( .|¡|# }#t/|t0ƒ�rlt1j2 3|¡�rlt1 4|¡ t&d„| ƒ t( 5||#¡ t&d…| ƒ t( 6||$¡ d@S )†zRun command.r   )Úget_optparserz-iz--inÚraw_inzInput raw FIF fileÚFILE)ÚdestÚhelpÚmetavarz--tminÚtminÚfloatzTime before event in secondsgš™™™™™É¿)r   Útyper   Údefaultz--tmaxÚtmaxzTime after event in secondsgš™™™™™É?z-gz--n-gradÚn_gradÚintz&Number of SSP vectors for gradiometersé   z-mz--n-magÚn_magz'Number of SSP vectors for magnetometersz-ez--n-eegÚn_eegzNumber of SSP vectors for EEGz--l-freqÚl_freqz"Filter low cut-off frequency in Hzé   z--h-freqÚh_freqz#Filter high cut-off frequency in Hzé#   z--eog-l-freqÚ
eog_l_freqz?Filter low cut-off frequency in Hz used for EOG event detectionz--eog-h-freqÚ
eog_h_freqz@Filter high cut-off frequency in Hz used for EOG event detectioné
   z-pz	--preloadÚpreloadz7Temporary file used during computation (to save memory)T)r   r   r   z-az	--averageÚaverageÚ
store_truezCompute SSP after averagingF)r   Úactionr   r   z--projÚprojz$Use SSP projections from a fif file.Nz--filtersizeÚfilter_lengthz#Number of taps to use for filteringi   z-jz--n-jobsÚn_jobsz!Number of jobs to run in parallelz
--rej-gradÚrej_gradzBGradiometers rejection parameter in fT/cm (peak to peak amplitude)iÐ  z	--rej-magÚrej_magz@Magnetometers rejection parameter in fT (peak to peak amplitude)i¸  z	--rej-eegÚrej_eegu7   EEG rejection parameter in ÂµV (peak to peak amplitude)é2   z	--rej-eogÚrej_eogu7   EOG rejection parameter in ÂµV (peak to peak amplitude)g    eÍÍAz	--avg-refÚavg_refzAdd EEG average reference projz	--no-projÚno_projz5Exclude the SSP projectors currently in the fiff filez--badÚ	bad_fnamez5Text file containing bad channels list (one per line)z
--event-idÚevent_idzID to use for eventsiæ  z--event-rawÚraw_event_fnamez#raw file to use for event detectionz--tstartÚtstartz-Start artifact detection after tstart secondsg        z-cz	--channelÚch_nameÚstringz&Custom EOG channel(s), comma separatedg‚vIhÂ%<=gVçž¯Ò<g�íµ ÷Æ°>)ZgradÚmagZeegZeogÚrc                 S   s   g | ]}|  ¡ ‘qS © )Úrstrip)Ú.0Úwr/   r/   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/commands/mne_compute_proj_eog.pyÚ
<listcomp>‘   s     zrun.<locals>.<listcomp>zBad channels read : %sz_raw.fifz-raw.fifiøÿÿÿéüÿÿÿz_eog-eve.fifz_eog_avg-proj.fifz_eog-proj.fif)r   )ÚrawÚ	raw_eventr   r   r   r   r   r   r   r   r   r   ÚrejectÚflatÚbadsr%   r&   r(   r   r   r*   r+   Úcopyz#Including SSP projections from : %szWriting EOG projections in %szWriting EOG events in %s)7Zmne.commands.utilsr   Ú__file__Ú
add_optionÚ
parse_argsr   Ú
print_helpÚsysÚexitr   r   r   r   r   r   r   r   r   r   r   r   r   Údictr	   r    r!   r"   r$   r%   r&   r'   r(   r   r)   r*   r+   ÚopenÚ	readlinesÚprintÚendswithÚmneÚioZread_raw_fifZpreprocessingZcompute_proj_eogÚcloseZ	read_projÚ
isinstanceÚstrÚosÚpathÚexistsÚremoveZ
write_projZwrite_events)%r   ÚparserÚoptionsÚargsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r8   r%   r&   r'   r(   Z
proj_fnamer)   r*   r+   Zfidr:   ÚprefixZeog_event_fnameZeog_proj_fnamer6   r7   r9   ZprojsÚeventsr/   r/   r3   Úrun   s~   
 ÿ
 ÿ
 ÿþþ ÿ
þ
þ
þ
þ
þþþ
þ ÿ
þ
þ
þ
þ
þ
þþ
 ÿ ÿ
þþ

ý


                ù
	


rU   Ú__main__)Ú__doc__rL   r@   rG   rU   Ú__name__Zis_mainr/   r/   r/   r3   Ú<module>   s    )