U
    f»{j˜c  ã                   @   s   d dl mZ d dlmZ 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mZ d dlZd dlmZmZ d dlmZmZ d dl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$ d dl%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z, d dl-m.Z.m/Z/ d dl0m1Z1 e 2¡ Z3e 4e 5¡ ¡Z6e 7e 8e 9e6¡¡d¡Z:e 7e:d¡Z;e 7e:d¡Z<e 7e:d¡Z=e 7e:d¡Z>e 7e:d¡Z?e 7e:d¡Z@e 7e:d¡ZAe 7e:d¡ZBe 7e:d¡ZCe 7e:d¡ZDejEdd�ZEe 7eEdd¡ZFe 7eEdd¡ZGe 7eEdd¡ZHe 7eEdd ¡ZIe 7eEd!d"¡ZJe 7eEd!d#¡ZKe 7eEd!d$¡ZLe 7eEdd%¡ZMe 7eEdd&¡ZNe 7eEdd'¡ZOe 7eEdd(¡ZPd)d*d+gZQd,d-d.d/d0gZRd1d2„ ZSd3d4„ ZTd5d6„ ZUejVd7d8„ ƒZWejVejX Yd9eHeGg¡ejX Yd:d;¡d<d=„ ƒƒƒZZd>d?„ Z[d@dA„ Z\dBdC„ Z]dDdE„ Z^ejVdFdG„ ƒZ_eejX Yd9e=e<g¡dHdI„ ƒƒZ`dJdK„ ZadLdM„ ZbejVejX Yd9eMeLg¡dNdO„ ƒƒZcejVdPdQ„ ƒZddRdS„ ZeejVejX Yd9eMeLg¡dTdU„ ƒƒZfejX YdVejgdWdWdXdYœdZdZd[�ejgdXdXdXdYœdd\d[�ejgdXdXdWdYœd]d^d[�ejgdXdXdWdYœd_d`d[�ejgdXdXdWdYœdadbd[�ejgdWdWdXdYœd dcgddd[�g¡dedf„ ƒZhejVdgdh„ ƒZiejVdidj„ ƒZjejVdkdl„ ƒZkdmdn„ Zldodp„ Zmdqdr„ ZnejX ods¡ejX Ydte=dud dfe?dvd dfeCdwd dfejgeGdwd de3dx�ejgeHdud de3dx�ejgeMdyd de3dx�ejgeFdud dze3dx�g¡d{d|„ ƒƒZpd}d~„ Zqdd€„ Zrd�d‚„ ZsejVdƒd„„ ƒZtdS )…é    )Únullcontext)ÚpartialN)Úassert_array_almost_equalÚassert_array_equalÚassert_equalÚassert_allclose)Úloadmat)Ú
pick_typesÚAnnotations)Úevents_from_annotationsÚread_annotations)Útesting)Úrequires_pandasÚ_record_warnings)Úread_raw_edfÚread_raw_bdfÚread_raw_fifÚedfÚread_raw_gdf)Ú_test_raw_reader)Ú_get_edf_default_event_idÚ_read_annotations_edfÚ_read_chÚ_parse_prefilter_stringÚ_edf_strÚ_read_edf_headerÚ_read_header)Úchannel_indices_by_typeÚget_channel_type_constants)Ú_assert_annotations_equalÚdatazbiosemi.hptsztest.bdfztest.edfzduplicate_channel_labels.edfztest_uneven_samp.edfztest_bdf_eeglab.matztest_edf_eeglab.matztest_uneven_samp.matztest_edf_stim_channel.edfztest_edf_stim_channel.txtF)ÚdownloadÚEDFztest_edf_stim_resamp.edfz$test_edf_overlapping_annotations.edfztest_reduced.edfzSC4001EC-Hypnogram.edfZBDFztest_bdf_stim_channel.bdfzmultiple_annotation_chans.bdfztest_generator_2.bdfztest_generator_2.edfzsubsecond_starttime.edfzchtypes_edf.edfztest_utf8_annotations.edfZREOGZLEOGÚIEOGZEXG1ZEXG5ZEXG8ZM1ÚM2c                  C   s<   t tdd�} | j}t|ƒt| jƒks(t‚|d dks8t‚dS )ú(Test exposure of original channel units.T©ÚpreloadÚA1u   ÂµVN)r   Úedf_pathZ_orig_unitsÚlenÚch_namesÚAssertionError)ÚrawÚ
orig_units© r/   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/io/edf/tests/test_edf.pyÚtest_orig_unitsF   s    r1   c                 C   sœ   t tƒ}|jd dkst‚|jd }|d dk	s4t‚dddddœ}| ¡ D ] \}}|d | |ksJt|ƒ‚qJ| d }| |¡ t|ƒ}|jd dks˜t‚dS )r%   Zsubject_infoNr   ÚX)ÚidZsexÚbirthdayÚnameztest_raw.fif)r   r)   Úinfor,   Z_raw_extrasÚitemsÚsaver   )Útmp_pathr-   Zedf_infoZwantÚkeyÚvalÚfnamer/   r/   r0   Útest_subject_infoP   s    

r=   c               	   C   s  d} t ttttddg| d�}t|jƒdks.t‚t ttdttddg| d�}t|jƒdksZt‚dt|ƒksjt‚t	|j
dd	d
d�}|| \}}ttƒ}|d d }|| }t||dƒ |j
d d d  ¡ sÊt‚|j
d d d  ¡ sät‚|j
d d d  ¡ sþt‚dS )zTest reading raw bdf files.Fr$   r#   )Úinput_fnameÚeogÚmiscÚexcludeÚtest_scalingéG   Z	biosemi64)r>   Zmontager?   r@   rA   rB   ZRawEDFTZbads)ZmegÚeegrA   r    g�íµ ÷Æ°>é   Úchsr   Úlocé   é?   N)r   r   Úbdf_pathr?   r@   r*   r+   r,   Úreprr	   r6   r   Úbdf_eeglab_pathr   Úany)rB   Úraw_pyÚpicksZdata_pyÚ_Z
raw_eeglabZdata_eeglabr/   r/   r0   Útest_bdf_data_   s4     ý  ýrQ   c                 C   s"   t tƒ}|j| d dddd� dS )z%Test EDF with various sampling rates.ztest-raw.fifg333333ó?g      @T)ZtminZtmaxÚ	overwriteN)r   Úbdf_stim_channel_pathr8   )r9   r-   r/   r/   r0   Útest_bdf_crop_save_stim_channel€   s    rT   r<   Ústim_channel)NFÚautoc                 C   s   t t| |dd� dS )zATest EDF with various sampling rates and overlapping annotations.Úerror)r>   rU   ÚverboseN)r   r   )r<   rU   r/   r/   r0   Útest_edf_others‡   s      þrY   c           
   	   C   sž  t ttddgdd�}ttƒ}| ¡ }tt|jƒd t|jƒƒ t | d¡}t	tdƒ�.}| 
dd¡ | ¡ }| 
dd¡ | ¡ }W 5 Q R X t	|d	ƒ�@}| |d
d… ¡ | d¡ | |ddt|d ƒ … ¡ W 5 Q R X tjtdd��* t|dd�}t||jd
d… dd� W 5 Q R X t	|d	ƒ�Z}| |d
d… ¡ |dd… dk�sJt‚| |dd…  dd¡¡ | |dd
… ¡ W 5 Q R X t|ƒ}| ¡ }	t||	ƒ d
S )zTest edf files.z	Ergo-LeftZH10rW   )r>   rA   rX   é   z
broken.edfÚrbr   ÚwbNéì   s   -1      éô   gš™™™™™Ù?z"records .* not match the file size©ÚmatchTr&   é„   )rA   r'   é¸   éÀ   s   36096   ó    ó    )r   r   r)   Úget_datar   r*   r+   ÚopÚjoinÚopenÚseekÚtellÚreadÚwriteÚintÚpytestÚwarnsÚRuntimeWarningr,   Úreplacer   )
r9   r-   rN   r    Zbroken_fnameZfid_inZn_bytesZrbytesZfid_outZdata_newr/   r/   r0   Útest_edf_data_broken”   s<     ÿ
(ÿ"rs   c               	   C   sB   dddg} t jtdd�� ttdd�}W 5 Q R X |j| ks>t‚dS )	z3Test reading edf file with duplicate channel names.zEEG F1-Ref-0z
EEG F2-RefzEEG F1-Ref-1zChannel names are not uniquer_   Fr&   N)ro   rp   rq   r   Úduplicate_channel_labels_pathr+   r,   )ZEXPECTED_CHANNEL_NAMESr-   r/   r/   r0   Ú!test_duplicate_channel_labels_edf·   s    
ru   c              
   C   sL  d}| d }t |dƒ�}| |¡ W 5 Q R X dd„ t|ƒD ƒ}dd„ |ddd	… D ƒ|ddd	…< tjtttt|d
dd	… |ddd	… ƒƒƒtj	d�}t |dƒ�$}t
|ddt|ƒd d	 dd�}W 5 Q R X 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gŽ \}}}	||fD ]8}
t|
gƒ\}}}t||ƒ t||ƒ ||	k�st‚�qdS )úTest parsing the tal channel.ó�   +180Lights offClose door     +180Lights off        +180Close door        +3.1404.20nothing    +1800.225.5Apnea       +123       úannotations.txtr\   c                 S   s   g | ]}|‘qS r/   r/   ©Ú.0Úar/   r/   r0   Ú
<listcomp>Í   s     z)test_parse_annotation.<locals>.<listcomp>c                 S   s   g | ]}|d  ‘qS )é   r/   ry   r/   r/   r0   r|   Î   s     é   NrZ   r   ©Údtyper[   r"   ú<i2ZThis_parameter_is_not_used)Úsubtyper€   ZsampZ
dtype_byteç     €f@ç        ú
Lights offú
Close doorç…ëQ¸	@çÍÌÌÌÌÌ@ÚnothingçÍÌÌÌÌ œ@ç     €9@ÚApnea)ri   rm   ÚbytesÚnpÚarrayÚlistÚmapÚsumÚzipZint64r   r*   r   r   r,   )r9   ÚannotÚ
annot_fileÚfZtal_channel_AÚfidZtal_channel_BZ
want_onsetZwant_durationZwant_descriptionZtal_channelÚonsetÚdurationÚdescriptionr/   r/   r0   Útest_parse_annotationÀ   s6    "*ÿþ  þÿ


r›   c                  C   sf   dddgdddgdddgdddgg} t tdd	�}t|jjƒ}| d
¡ t||dd�\}}t|| ƒ dS )z@Test if events are detected correctly in a typical MNE workflow.éD   r   rZ   éÇ   i   é   i   Tr&   ÚstartF)Úevent_idZuse_roundingN)r   r)   r   Úannotationsrš   Úpopr   r   )ZEXPECTED_EVENTSr-   r    Zevents_from_EFArP   r/   r/   r0   Ú'test_find_events_backward_compatibilityã   s    ý
ÿ
r£   c               	   C   sä   t tdd�} t| jdd�}t|ƒt| jƒd gks6t‚| | d }t t| jdd… d�} | d d }t||ƒ |  	¡  t t
ƒ} t| jdd�}|jdksšt‚| j}t t
| jd�} | j}t||ƒ tjtd	d
�� t tƒ W 5 Q R X dS )z,Test that we can load with no data channels.Tr&   )Ústimr~   r   Néÿÿÿÿ©rA   r   r_   )r   r)   r	   r6   r�   r*   r+   r,   r   ZplotÚedf_overlap_annot_pathÚsizer¡   r   ro   rp   rq   Úedf_annot_only)r-   rO   Z	stim_dataZstim_data_2r”   Zannot_2r/   r/   r0   Útest_no_data_channelsó   s"    

rª   c                 C   sÖ   t  | ¡d  d¡ ¡ }|dkr0t| ddd�}n|dkrFt| ddd�}|dd	d
…f \}}|jdd�}|j|jk 	¡ szt
‚t||jjd	d
… ƒ |jd	ddid�}d|jks°t
‚t|jd	d	…df |jd d ƒ d	S )z!Test EDF/BDF Raw Pandas exporter.r~   Ú.r   TrW   )r'   rX   Úbdfr   Né
   Útime)ÚindexrD   g  @åœ0¢B)r¯   Zscalings)rg   ÚsplitextÚlstripÚlowerr   r   Zto_data_frameÚcolumnsr+   Úallr,   r   r¯   ÚvaluesÚ_data)r<   Úextr-   rP   ÚtimesZdfr/   r/   r0   Útest_to_data_frame  s    r¹   c               
   C   sl   d} t ƒ �}ttƒ W 5 Q R X tdd„ |D ƒƒs8t| ƒ‚dD ]*}tjtdd�� tt|d� W 5 Q R X q<dS )	z Test edf raw reader deprecation.z?`read_raw_edf` is not supposed to trigger a deprecation warningc                 s   s   | ]}|j tkV  qd S )N)ÚcategoryÚDeprecationWarning)rz   Úwr/   r/   r0   Ú	<genexpr>#  s     zBtest_read_raw_edf_stim_channel_input_parameters.<locals>.<genexpr>)zEDF AnnotationszBDF Annotationszstim channel is not supportedr_   ©rU   N)r   r   r)   r´   r,   ro   ÚraisesÚ
ValueError)Z_MSGÚrecwarnZinvalid_stim_parameterr/   r/   r0   Ú/test_read_raw_edf_stim_channel_input_parameters  s    ÿrÂ   c              	   C   s&  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dddg}dddddd	g}dddddd
g}t |||dd�}d}| d }t|dƒ�}| |¡ W 5 Q R X tt|ƒd�\}}	}
t ||	|
dd�}t||ƒ t|dƒ�}tj|dt|ƒd�}W 5 Q R X t|gƒ\}}	}
t ||	|
dd�}t||ƒ dS )rv   rƒ   r   r…   r†   r‡   rˆ   r‰   rŠ   r‹   rŒ   N)r˜   r™   rš   Z	orig_timerw   rx   r\   )r¡   r[   r�   )r€   Úcount)	r
   ri   rm   r   Ústrr   rŽ   Úfromfiler*   )r9   ZEXPECTED_ANNOTATIONSZEXPECTED_ONSETZEXPECTED_DURATIONZEXPECTED_DESCr”   r•   r–   r˜   r™   ÚdescÚ
annotationr—   Zch_datar/   r/   r0   Útest_read_annot+  sB      þ ÿýÿ
ÿrÈ   c                 C   s   t | ƒ}t|jƒdkst‚dS )z9Test IO of annotations from edf and bdf files via regexp.rZ   N)r   r*   r˜   r,   )r<   rÁ   r”   r/   r/   r0   Útest_read_annotationsR  s    rÉ   c                  C   s8   t tƒ} | jd d dkst‚| jd d dks4t‚dS )z%Test if UTF8 annotations can be read.r   rš   úRECORD STARTr~   u   ä»°å�§N)r   Úedf_utf8_annotationsr¡   r,   ©r-   r/   r/   r0   Útest_read_utf8_annotationsZ  s    rÍ   c                  C   sÄ   dg} t | ƒ\}}t|dgƒ t|dgƒ dgd }t |ƒ\}}t|dgd ƒ t|dgd ƒ |dg }t |ƒ\}}t|dgd ƒ t|dgd ƒ dg}t |ƒ\}}t|d	gƒ t|d
gƒ dS )z8Test prefilter strings from header are parsed correctly.zHP: 0Hz LP: 0HzÚ0zHP: 1Hz LP: 30Hzr­   Ú1Z30Ú zHP:0.1Hz LP:75Hz N:50Hzz0.1Z75N)r   r   )Zprefilter_basicÚhighpassÚlowpassZprefilter_normal_multi_chZprefilter_unfiltered_chZprefilter_edf_specs_docr/   r/   r0   Útest_edf_prefilter_parseb  s     

rÓ   c                 C   sò   t  | ¡d dd…  ¡ }|dkr,t| ƒ}n|dkr<t| ƒ}t|jjƒdksPt‚dd„ t	|j
dd� ¡ D ƒ}t|ƒdks|t‚t|ƒ\}}d	d
dddddddddg}| ¡ jdks´t‚|j|ksÂt‚|dddœksÔt‚t|dddgdddggƒ dS )z<Test IO of annotations from edf and bdf files with raw info.r~   Nr   r¬   rZ   c                 S   s   g | ]\}}|r|‘qS r/   r/   ©rz   ÚkÚvr/   r/   r0   r|   ƒ  s    þz'test_load_generator.<locals>.<listcomp>)rO   Z
squarewaveZrampÚpulseZECGÚnoiseú	sine 1 Hzz	sine 8 Hzzsine 8.5 Hzz
sine 15 Hzz
sine 17 Hzz
sine 50 Hz)é   éÀÔ )rÊ   zREC STOPr   rÛ   )rg   r°   r²   r   r   r*   r¡   r˜   r,   r   r6   r7   r   rf   Úshaper+   r   )r<   rÁ   r·   r-   Zfound_typesÚeventsr    r+   r/   r/   r0   Útest_load_generatory  s,    
ÿ   þrÞ   zEXPECTED, test_inputr¤   rD   )ZstAtUsZtRigGerrÙ   rV   )r3   ÚNonerÙ   zsingle stringrZ   z
single intr¥   zsingle int (revers indexing)r~   zint listc                    sX   t ƒ }dd„ | ¡ D ƒ‰ t td¡}t|| d�}‡ fdd„|jd D ƒ}||ksTt‚dS )zTest stim_channel.c                 S   s"   i | ]\}}|d kr|d |“qS ))ÚcsdZchpiÚkindr/   rÔ   r/   r/   r0   Ú
<dictcomp>¢  s     ÿ  z,test_edf_stim_ch_pick_up.<locals>.<dictcomp>ztest_stim_channel.edfr¾   c                    s   i | ]}|d  ˆ |d  “qS )Zch_namerá   r/   )rz   Úch©ZTYPE_LUTr/   r0   râ   §  s      rF   N)r   r7   rg   rh   Údata_dirr   r6   r,   )Z
test_inputZEXPECTEDZ	KIND_DICTr<   r-   Zch_typesr/   rä   r0   Útest_edf_stim_ch_pick_up‘  s    ræ   c                  C   sN   t tƒ} t| jƒdkst‚tjdddddddd	d
dg
dd�}t|| jjƒ dS )z+Test BDF with multiple annotation channels.r­   Zsignal_startzEEG-check#1z
TestStim#1z
TestStim#2z
TestStim#3z
TestStim#4z
TestStim#5z
TestStim#6z
TestStim#7zLigths-Off#1z<U12r   N)	r   Úbdf_multiple_annotations_pathr*   r¡   r,   rŽ   r�   r   rš   )r-   Zdescriptionsr/   r/   r0   Ú%test_bdf_multiple_annotation_channels«  s    
    ýýrè   c                  C   s8   t tƒ} | jd dkst‚t| jd | jd d ƒ dS )zCTest if a lowpass filter of 0Hz is mapped to the Nyquist frequency.éd   zEEG LDAMT_01-REFrÒ   ÚsfreqrZ   N)r   Úedf_stim_resamp_pathr+   r,   r   r6   rÌ   r/   r/   r0   Útest_edf_lowpass_zero·  s    rì   c                  C   s   t tƒ} t| jjddgƒ dS )z-Test reading of sub-second annotation onsets.gAï�! 8ÿ?gƒÞC ð@N)r   Úedf_annot_sub_s_pathr   r¡   r˜   rÌ   r/   r/   r0   Útest_edf_annot_sub_s_onset¿  s    rî   c              	   C   s|  t tdƒ�}t| ¡ ƒ}W 5 Q R X d|dd…< |d tdƒksBt‚t t| ƒd¡}t |dƒ�}| 	|¡ W 5 Q R X t
|ƒ d	|dd…< td
ƒ|d< t |dƒ�}| 	|¡ W 5 Q R X t
|ƒ d|dd…< td
ƒ|d< t |dƒ�}| 	|¡ W 5 Q R X tjtdd�� t
|ƒ W 5 Q R X |dd… dk�s*t‚tdƒ|d< t |dƒ�}| 	|¡ W 5 Q R X tjtdd�� t
|ƒ W 5 Q R X dS )z,Test handling of invalid date in EDF header.r[   s   FEBée   éh   é¬   Ú4ztemp.edfr\   s   APRÚ2zInvalid dater_   rÎ   N)ri   r)   Ú	bytearrayrl   Úordr,   rg   rh   rÄ   rm   r   ro   rp   rq   )r9   r–   r   r<   r/   r/   r0   Útest_invalid_dateÆ  s2    rö   c                   C   s   t tdƒƒdkst‚dS )zTest blank char support.s   1819  i  N)rn   r   r,   r/   r/   r/   r0   Útest_empty_charsð  s    r÷   c                  O   st   t | |Ž\}}|d |d  |d< |d< t|d ƒrl|d d dkrlt|d ƒrl|d d dkrld|d d< ||fS )NrÑ   rÒ   r   z0.000z0.0z10.0)r   r*   )ÚargsÚkwargsÚoutr.   r/   r/   r0   Ú
_hp_lp_revõ  s    
ÿÿrû   z"ignore:.*too long.*:RuntimeWarningzfname, lo, hi, warnsr}   é2   é@   )Zmarksré   Tc           	   	   C   s¼   t | ƒ} t| ƒ}|jd |ks"t‚|jd |ks4t‚| tjdt¡ |rltjt	dd�}|jd d d }}nt
ƒ }|| }}|� t| ƒ}W 5 Q R X |jd |ks¦t‚|jd |ks¸t‚d	S )
zTest HP/LP reversed (gh-8584).rÒ   rÑ   r   zgreater than lowpassr_   rê   g       @r„   N)rÄ   r   r6   r,   Úsetattrr   rû   ro   rp   rq   r   )	r<   ÚloÚhirp   Zmonkeypatchr-   ÚctxZnew_loZnew_hir/   r/   r0   Útest_hp_lp_reversedÿ  s    
r  c               
   C   sB   t ttttddd�fD ]&} tjtdd�� | tƒ W 5 Q R X qdS )z!Test checking of some bad inputs.r/   F)rA   Úinfer_typeszOnly.*txt.*r_   N)	r   r   r   r   r   ro   r¿   ÚNotImplementedErrorÚedf_txt_stim_channel_path)Úfuncr/   r/   r0   Útest_degenerate  s
    ÿr  c                  C   s`   ddddg} t tddddgd�}| D ]}||jks$t‚q$t tdd�}| D ]}||jksHt‚qHdS )zTest exclude parameter.ÚI1ÚI2ÚI3ÚI4r¦   úI[1-4]N)r   r)   r+   r,   )rA   r-   rã   r/   r/   r0   Útest_exclude$  s    r  c               	   C   sŠ   t tddgd�} t| jƒddgks&t‚t tdd�} t| jƒddddgksLt‚t t¡�*}t tddgdd�} t|j	ƒdks|t‚W 5 Q R X d	S )
zTest include parameter.r  r	  )Úincluder  r
  r  )r  rA   z0'exclude' must be emptyif 'include' is assigned.N)
r   r)   Úsortedr+   r,   ro   r¿   rÀ   rÄ   Úvalue)r-   Úer/   r/   r0   Útest_include1  s    r  c               *   C   sj  t tƒ} ddddddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*g*}td+d,„ |  ¡ D ƒƒszt‚| j|ksˆt‚t td-d.�} d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAddddBdCdddDdEdFdGdHdIdJdKdLdMd%d&d'd(d)d*g*}dNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdNdOdOdNdNdNdNdNdNdPdPdNdNdNdNdNdNg*}|  ¡ |k�sVt‚| j|k�sft‚dQS )Rz5Test reading of channel types from EDF channel label.zEEG Fp1-RefzEEG Fp2-Refz
EEG F3-Refz
EEG F4-Refz
EEG C3-Refz
EEG C4-Refz
EEG P3-Refz
EEG P4-Refz
EEG O1-Refz
EEG O2-Refz
EEG F7-Refz
EEG F8-Refz
EEG T7-Refz
EEG T8-Refz
EEG P7-Refz
EEG P8-Refz
EEG Fz-Refz
EEG Cz-Refz
EEG Pz-RefzPOL EzPOL PG1zPOL PG2z
EEG A1-Refz
EEG A2-RefzPOL T1zPOL T2zECG ECG1zECG ECG2z
EEG F9-Refz
EEG T9-Refz
EEG P9-RefzEEG F10-RefzEEG T10-RefzEEG P10-RefzSaO2 X9zSaO2 X10zPOL DC01zPOL DC02zPOL DC03zPOL DC04zPOL $A1zPOL $A2c                 s   s   | ]}|d kV  qdS )rD   Nr/   )rz   Útr/   r/   r0   r½   P  s     z test_ch_types.<locals>.<genexpr>T)r  zFp1-RefzFp2-RefzF3-RefzF4-RefzC3-RefzC4-RefzP3-RefzP4-RefzO1-RefzO2-RefzF7-RefzF8-RefzT7-RefzT8-RefzP7-RefzP8-RefzFz-RefzCz-RefzPz-RefzA1-RefzA2-RefZECG1ZECG2zF9-RefzT9-RefzP9-RefzF10-RefzT10-RefzP10-RefZX9ÚX10rD   ZecgZbioN)r   Úedf_chtypes_pathr´   Zget_channel_typesr,   r+   )r-   ÚlabelsÚtypesr/   r/   r0   Útest_ch_types?  sî                                 ÷                              ú                             ür  )uÚ
contextlibr   Ú	functoolsr   Úos.pathÚpathrg   ÚinspectÚnumpyrŽ   Znumpy.testingr   r   r   r   Zscipy.ior   ro   Zmner	   r
   Zmne.annotationsr   r   Zmne.datasetsr   Z	mne.utilsr   r   Zmne.ior   r   r   r   r   Zmne.io.tests.test_rawr   Zmne.io.edf.edfr   r   r   r   r   r   r   Zmne.io.pickr   r   Zmne.tests.test_annotationsr   Z_pytest_markZtd_markÚgetfileÚcurrentframeÚFILErh   ÚdirnameÚabspathrå   Zmontage_pathrJ   r)   rt   Zedf_uneven_pathrL   Zedf_eeglab_pathZedf_uneven_eeglab_pathZedf_stim_channel_pathr  Z	data_pathrë   r§   Zedf_reducedr©   rS   rç   Ztest_generator_bdfZtest_generator_edfrí   r  rË   r?   r@   r1   r=   rQ   Zrequires_testing_datarT   ÚmarkZparametrizerY   rs   ru   r›   r£   rª   r¹   rÂ   rÈ   rÉ   rÍ   rÓ   rÞ   Úparamræ   rè   rì   rî   rö   r÷   rû   Úfilterwarningsr  r  r  r  r  r/   r/   r/   r0   Ú<module>   s
  $ÿÿÿ

!
þ#	#
'
 ÿ ÿ ÿ ÿ ÿ ÿõ



*




ù	