U
    f»{jd  ã                   @   sà  d dl mZ d dlZd dlZd dlmZmZm	Z	m
Z
 d dlZd dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZmZ d dlmZmZmZm Z m!Z! d dl"m#Z# e $e %e&¡ddd	d
¡Z'e $e'd¡Z(e $e'd¡Z)e $e'd¡Z*e $e'd¡Z+e $e'd¡Z,e $e'd¡Z-e $e'd¡Z.e $e#j/dd�d¡Z0e $e0d¡Z1e $e0d¡Z2e $e'd¡Z3e $e'd¡Z4e $e'd¡Z5dd„ Z6dd„ Z7dd„ Z8dd „ Z9d!d"„ Z:d#d$„ Z;d%d&„ Z<d'd(„ Z=d)d*„ Z>e#j?d+d,„ ƒZ@e#j?d-d.„ ƒZAd/d0„ ZBd1d2„ ZCdS )3é    N)Úassert_array_almost_equalÚassert_array_equalÚassert_equalÚassert_allclose)Úread_eventsÚwrite_eventsÚmake_fixed_length_eventsÚfind_eventsÚpick_eventsÚfind_stim_stepsÚpick_channelsÚread_evokedsÚEpochsÚcreate_infoÚcompute_raw_covarianceÚAnnotations)Úread_raw_fifÚRawArray)Údefine_target_eventsÚmerge_eventsÚAcqParserFIFÚshift_time_eventsÚmatch_event_names)Útestingz..ÚioZtestsÚdataztest-eve.fifztest_raw.fifztest-eve.fif.gzztest-1-eve.fifztest-eve.eveztest-eve-1.eveztest_raw-annot.fifF)ÚdownloadÚmiscztest_elekta_3ch_raw.fifztest_elekta-ave.fifztest-mpr-eve.eveztest-eve-old-style.evec               	   C   s–   t tdd�} dddg| j| j d¡dd…f< tjtdd	�� t| dƒ}W 5 Q R X t	|d | j
d
 ddgƒ t| ddd�}t	|d | j
d
 ddgƒ dS )z%Test fixing stim STI016 for Neuromag.T©Zpreloadr   i€ÿÿúSTI 014Né   ZSTI016©Úmatché   iý  )Z	uint_casti€  )r   Ú	raw_fnameÚ_dataÚch_namesÚindexÚpytestÚwarnsÚRuntimeWarningr	   r   Ú
first_samp)ÚrawÚevents© r.   úS/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/tests/test_event.pyÚtest_fix_stim+   s     r0   c                  C   s2  t tƒ} t | jddgg¡}t t| j|d¡ t tdd�} t	| dƒ}t | jddg¡}t t
| j|d¡ | j| j d |d< |tjdd…f }t t
| j|d¡ | jd |d< t t
| j|d¡ | jd |d< t t
| j|d¡ |  |d¡ t	| dƒ}t|t ||f¡ƒ | j|ddd	� t	| dƒ}t||ƒ dS )
z!Test adding events to a Raw file.r   r#   r   Tr   N©r   r   zSTI FOO)Úreplace)r   r$   ÚnpÚarrayr+   r(   ÚraisesÚRuntimeErrorZ
add_eventsr	   Ú
ValueErrorZn_timesZnewaxisr   Zconcatenate)r,   r-   Zorig_eventsÚ
new_eventsr.   r.   r/   Útest_add_events7   s(    


r9   c                  C   s  dddgdddgdddgdddgg} dddgdddgddd	gddd	gg}dddgdddgddd
gdddgdddgddd
gdddgddd	gddd
gdddgddd	gddd
gg}d|fd|ffD ]L\}}t | ddgd|ƒ}t |ddgd	|ƒ}t |ddddgd
|ƒ}t||ƒ q¼dS )zTest event merging.r#   r   r    é   é
   é   é   é   é"   iÒ  TFN)r   r   )Zevents_origZevents_replacementZevents_no_replacementZreplace_eventsZevents_goodr-   r.   r.   r/   Útest_merge_eventsQ   s8    $ýÿõÿÿr@   c           
   	   C   sd  t tƒ}| d }t||ƒ t |ƒ}t||ƒ t tƒ}t||ƒ t|ƒd }t||ƒ t |ƒ}t||ƒ | d }t||ƒ t |ƒ}t||ƒ tjtdd�� t t	ddd�}W 5 Q R X t||ƒ t t
ƒ}t||ƒ t||d	d
� t |ƒ}t||ƒ | d }t |dd�}t |dgd�}t |dddddgd�}t |dddgd�}t||ƒ t||ƒ t||ƒ | ¡ }t|jd ƒ|dd…df< t||d	d
� t |dd�}t||ƒ t tƒ}t||d	d
� t |ƒ}t||ƒ | d }t||d	d
� t |ƒ}t||ƒ | d }	tjtdd�� t|	|ƒ W 5 Q R X tjtdd�� t |	ƒ W 5 Q R X tjtdd�� t td	d� W 5 Q R X dS )zTest IO for events.zevents-eve.fifz.gzz
events.evezfirst row ofr!   r   Únot_and©ÚmaskÚ	mask_typeT)Ú	overwriter#   ©Úincluder:   r    r=   é   é    ©Úexclude©rG   rK   Néÿÿÿÿ)rC   ztest-bad-name.fifz-eve.fifzNo event_id©Zreturn_event_id)r   Úfnamer   r   Úfname_gzÚstrr(   r)   r*   Úfname_txt_mprÚfname_old_txtr   ÚcopyÚrangeÚshapeÚfname_1r5   r6   )
Ztmp_pathr-   Z
fname_tempÚevents2ÚaÚbÚcÚdZevents3Zfname2r.   r.   r/   Útest_io_eventsq   sf    















r]   c                  C   s„   t tƒ} | jd | j }}ttƒ}ttdd�\}}t||ƒ t dd¡| | }t	|dd…df |dd	� d
ddœ}||ks€t
‚dS )z#Test I/O of MNE-C -annot.fif files.ÚsfreqTrN   r:   rH   Nr   r    ©Úatolié  iê  )zTwo seczThree and four sec)r   Ú	fname_rawÚinfor+   r   Úfname_c_annotr   r3   Úaranger   ÚAssertionError)r,   r^   r+   r-   Zevents_2Zevent_idÚexpectedr.   r.   r/   Útest_io_c_annot»   s    

rg   c                  C   sJ  t tƒ} ttdd�}ddg}dd„ |D ƒ}dtjd< d	tjkrFtjd	= t|ƒ}t| |ƒ t|d
dd�}tj	t
dd�� t td
dd�}W 5 Q R X t||ƒ d|_|j ¡ � d|jd< W 5 Q R X d}t|jd |gd�}t d¡|j|dd…f< d|j|dd…f< tjtt|ddd� tjtt|ddd� tt|dddd�dddgdddggƒ tt|dddd�dddgd
ddgdddggƒ tt|dd
dd�dddggƒ tt|dddd�dddgdddgd
dd
ggƒ tt|dddd�dddgd
ddggƒ tt|dddd�dddggƒ tt|dd
dd�dddgdddgd
dd
ggƒ tt|dddd�dddggƒ d|j|dd…f< tt|ƒtjddd�ƒ d|j|dd…f< tt|ƒtjddd�ƒ d |j|d!d…f< tt|ƒd"dd ggƒ d|j|d#d$…f< d%|j|d$d&…f< d|j|d&d'…f< d%|j|d(f< tt|d)d*�d#ddgd(dd%gd"dd ggƒ tt|dd*�d#ddgd$dd%gd&d%dgd(dd%gd"dd ggƒ tt|ƒd#ddgd$dd%gd(dd%gd"dd ggƒ tt|d+d)d,�d-ddgd(dd%gd"dd ggƒ tt|d+dd,�d.d%dgd/dd%gd-ddgd(dd%gd"dd ggƒ tjtt|d0dd,� tt|d0ddd1�d#ddgd$dd%gd&d%dgd'ddgd(dd%gd2d%dgd"dd gd3d dggƒ tt|d+d4�d.d%dgd-dd%gd(dd%gd"dd ggƒ tt|d)d5d6�d#ddggƒ tt|dd5d6�d#ddgd$dd%gd&d%dggƒ tt|d+d)d5d7�d-ddggƒ tt|d+dd5d7�d.d%dgd/dd%gd-ddggƒ tt|dd8d6�d#ddgd$dd%ggƒ d|j|dd…f< d|j|df< d|j|d#f< d|j|d9d$…f< tt|dd|d:�dddgdddgd#ddgd9ddgd$ddggƒ tt|d!|d;�dddgd#ddgd$ddggƒ tt|d|d;�dddgd9ddgd$ddggƒ t||ƒD ]"\}	}
|
dk	�rF|
tjd<|	 < �qFt d=¡|j|dd>…f< d|j|d#d9…f< d
|j|d&d-…f< d?}t|jd |gd�}d|j|dd…f< |j|dd@…f |j|dd=…f< t|ddA�}| ¡ }|dd…df  d8  < t|d|gdA�} t| ddd… |ƒ t| ddd… |ƒ tdBgddCƒ}t dD¡}t||dEdF�}d=|ddd#…f< dG|dd&d(…f< tt|dBƒdHddGggƒ tt|dBddI�dEdd=gdHddGggƒ ttdd�}|jdd)dJ� tjtdKd�� t|ƒ W 5 Q R X | tdddLƒ¡ tjtdMd�� t|ƒ W 5 Q R X dS )NzTest find events in raw file.Tr   Ú Z_1c                 S   s   g | ]}t  d | ¡‘qS )úMNE_STIM_CHANNEL%s)ÚosÚgetenv)Ú.0Úsr.   r.   r/   Ú
<listcomp>Î   s     z$test_find_events.<locals>.<listcomp>r   ZMNE_STIM_CHANNELZMNE_STIM_CHANNEL_1r    rA   rB   zevents maskedr!   r   éè  r^   r&   rF   rH   NÚ0ÚandZblahr#   )Úshortest_eventrC   rD   r:   r=   )r   r    Zint32)Zdtypeé	   rM   i?8  r;   r<   é   é   rI   é(   F)ÚconsecutiveÚoffset)Úoutputrw   é   é   é   Ústep)ry   rw   rr   é)   i@8  )ry   gü©ñÒMb`?)rw   Úmin_duration)ry   rw   r   gú~j¼t“h?é   )Z	pad_startÚmergeÚstim_channel)r�   r‚   ri   éd   ée   zSTI 015éi   )r‚   ZMYSTIÚstim)r#   ro   é   ©r+   éÈ   é%   )Zinitial_event)Zmegr†   z'stim_channel'Útestzmne.events_from_annotations) r   rO   r   r$   rj   Úenvironr	   r   r(   r)   r*   r   Z_cropped_samprb   Z_unlockr   r3   rd   r%   r5   Ú	TypeErrorr7   Úemptyr   ÚzipZzerosrT   r   r   Z
pick_typesZset_annotationsr   )r-   r,   Z
extra_endsZ	orig_envsrX   Zevents11Zevents22r‚   Zstim_channel_idxrm   ÚoZstim_channel2Zstim_channel2_idxZevents1rb   r   r.   r.   r/   Útest_find_eventsÈ   s¾   




ÿ
ÿþ
ÿþ
ÿ
þ
ÿþ
ÿþ
ÿ
þ
ÿþ
ÿ
þþÿüÿýÿþÿüÿÿ
ÿùþ
ýÿ
ÿþÿ
ÿ
þ
ÿþþÿÿ
ÿüþÿþþÿþþ

ÿ 
ÿr‘   c               	   C   s¼   t  dddgdddgdddgdddgdddgg¡} tt| ddgdd�dddgdddggƒ tt| ddgd�dddgdddggƒ tt| ddgd	d
�dddgdddgdddgdddggƒ dS )z%Test pick events in a events ndarray.r#   r   r:   r    r=   rH   rL   rJ   T)rG   r}   N)r3   r4   r   r
   )r-   r.   r.   r/   Útest_pick_events“  s.    üÿÿÿÿýÿr’   c               	   C   s˜  t tƒ} t| dd�}|jd dks&t‚t| ddd�}t|d dƒ t|dd…df |dd…df | j ƒ | jdd	g \}}|| }t| d|||ƒ}t|jd dƒ t	 
tt| d||d
 |¡ t	 
tt| d¡ t	 
ttdd¡ t	 
tt| d||d¡ tj d¡ dd¡}tddƒ}t||ƒ} t| d| jd	 d�}|d dk�sBt‚t|ƒdk�sTt‚t|dd…dd…f |ƒ} t| d| jd	 d�}|d dk�s”t‚t|ƒdk�s¦t‚t| dd�}t |dd…dd…f ¡}	t|d |	dd� t| ddd�}t|ƒdk�sþt‚t| dddd�}
t|
ƒdk�s t‚t| dddd�}t|ƒdk�sBt‚t|dd…df t |dd…df ¡ƒ t	j
tdd�� t| ddd d� W 5 Q R X dS )!z%Test making events of a fixed length.r#   )Úidr    Frˆ   r1   r   NrM   gü©ñÒMbP?gffffff@znot rawr:   é   Úabcixl  g   `fnc@)ÚdurationiàR  )Ztstepr   gê-�™—q=r_   éˆ   g      à?)r–   Zoverlapi  gÍÌÌÌÌÌì?iK  zoverlap must ber!   gš™™™™™ñ?)r   r$   r   rV   re   r   r   r+   Útimesr(   r5   r7   r�   r3   ÚrandomZRandomStateZrandnr   r   Úlenr   Úcovr   Úunique)r,   r-   Zevents_zeroZtminZtmaxr–   r   rb   r›   rf   Z	events_olZevents_ol_2r.   r.   r/   Útest_make_fixed_length_events§  sT    (  ÿÿ

(r�   c                  C   sZ  t tƒ} ttƒ}t| dd|jd ddddƒ\}}| | dd…d	f dk jd
 }||dd…d	f dk jd
 }||dd…d	f dk jd
 }||| ksšt‚t 	d
d
dgdd
d	gdd
dgdd
dgdd
dgdd
dgdd
dgdd
d	gdd
dgdd
d	gg
¡} dddg}dtj
tj
ddg}t| dd	ddddƒ\}	}
t| dd	dddddƒ\}	}t||ƒ t||
ƒ dS )zTest defining response events.rH   rI   r^   gš™™™™™É?gffffffæ?é*   éc   Nr:   r   r#   iw  iô  ik  r    ro   i_  iL  iÃ  iÜ  iS  g     p—@g     @o@gffffffö?gš™™™™™ù?)r   rO   r   r$   r   rb   rV   re   r3   r4   Únanr   )r-   r,   Zevents_Ú_Zn_targetZn_missZ	n_target_Ztrue_lag_nofillZtrue_lag_fillÚnZ
lag_nofillZlag_fillr.   r.   r/   Útest_define_eventsÞ  s:       ÿ÷


r£   c                  C   sv  t  ttddi¡ t  ttddi¡ t  ttddi¡ ttdd�} t| jƒ}t|ƒsXt‚|j	sbt‚t
t|jƒdƒ t
t|jƒdƒ t
t|jƒdƒ t
t|jƒdƒ |d	 s®t‚ttdd�} | j}|| jksÎt‚t|ƒsÚt‚|j	rät‚t  t|jd
¡ t  t|j| d¡ t  t|jd¡ t
t|ƒdƒ t
t|jƒdƒ t
t|jƒdƒ t
t|jƒdƒ t
t|jƒdƒ |d �srt‚dS )zTest AcqParserFIF.Zacq_parsrh   ZbaaazERFVersion
1Fr   rt   é   zSurprise visualzdoes not existZfoor   r‡   rI   zTest event 5N)r(   r5   r7   r   r   r$   rb   Úreprre   Úcompatr   rš   Ú
categoriesZ_categoriesr-   Z_eventsÚfname_raw_elektaZ	acqparserÚKeyErrorÚ__getitem__Úget_conditionr�   )r,   Úacqpr.   r.   r/   Útest_acqparserý  s4    


r­   c                  C   s  t tdd�} t| jƒ}|jD ]à}| | |¡}t| fddi|—Ž}| ¡ }tt	|d ddd�}| 
¡ }| dg¡ | 
¡ }| d	d
g¡ | 
¡ }	|	 dg¡ | 
¡ }
|
 d	d
g¡ t|j|	jddd� |jddd… |
jksÞt‚t|jddd… |
jddd� qdS )z5Test averaging with AcqParserFIF vs. Elekta software.Tr   Úbaseline)gš™™™™™©¿r   ÚcommentF)r®   ZprojZMEG0111ZMEG2643ZMEG1622r   gVçž¯Ò<)Zrtolr`   NrM   g‚vIhÂ%<=)r   r¨   r   rb   r§   r«   r   Zaverager   Úfname_ave_elektarT   r   r   r   r&   re   )r,   r¬   ÚcatZcondÚepsZevZev_refZev_magZev_gradZ
ev_ref_magZev_ref_gradr.   r.   r/   Útest_acqparser_averaging*  s6    


 ÿ
 ÿ ÿr³   c                  C   s¸   t  dddgdddgdddgg¡} dddg}t| dddd�}t|dd…df |kƒsXt‚t  dddgdddgdddgg¡} dddg}t| ddgddd�}t|dd…df |kƒs´t‚dS )z,Test events latency shift by a given amount.r   r#   r:   r    N)ZidsZtshiftr^   )r3   r4   r   Úallre   )r-   ZEXPECTEDr8   r.   r.   r/   Útest_shift_time_eventsG  s    "
"
rµ   c               
   C   s2  ddddg} ddg}dddg}t | |d�}||ks6t‚ddg}t | |d�}||ksVt‚d}ddg}t | |d�}||kszt‚ddd	gfD ]*}tjtd
d�� t | |d� W 5 Q R X q†d}tjtdd�� t | |d� W 5 Q R X tjtdd��" t | |dd�}|g k�st‚W 5 Q R X t | |dd�}|g k�s.t‚dS )z'Test event name / event group matching.zauditory/leftzauditory/rightzvisual/leftzvisual/rightZauditoryÚleft)Úevent_namesÚkeysé{   iÈ  zkeys must be stringsr!   Z
laboratoryzcould not be foundÚwarn)r·   r¸   Z
on_missingÚignoreN)r   re   r(   r5   r7   r©   r)   r*   )r·   r¸   Zexpected_matchesÚmatchesr.   r.   r/   Útest_match_event_namesT  sF    ü
  ÿ  ÿr½   )DÚos.pathÚpathÚoprj   Únumpyr3   Znumpy.testingr   r   r   r   r(   Zmner   r   r   r	   r
   r   r   r   r   r   r   r   Zmne.ior   r   Z	mne.eventr   r   r   r   r   Zmne.datasetsr   ÚjoinÚdirnameÚ__file__Úbase_dirrO   ra   rP   rW   Z	fname_txtZfname_txt_1rc   Z	data_pathZelekta_base_dirr¨   r°   rR   rS   r$   r0   r9   r@   r]   rg   r‘   r’   r�   r£   Zrequires_testing_datar­   r³   rµ   r½   r.   r.   r.   r/   Ú<module>   sL   8 J L7
,
