U
    f»{jß  ã                   @   s¸   d Z ddlmZ ddlZddlmZm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
d�Ze edd¡ZdZej dd¡dd„ ƒZdd„ Zejdd„ ƒZdS )zTest reading of NEDF format.é    N)Úassert_allcloseÚassert_array_equal)Úfind_events)ÚFIFF)Úread_raw_nedfÚ_parse_nedf_header)Útesting)Ú_test_raw_readerFT)ÚdownloadÚverboseZnedfztestdata.nedfs˜  
<nedf>
    <NEDFversion>1.3</NEDFversion>
    <NumberOfChannelsOfAccelerometer>%d</NumberOfChannelsOfAccelerometer>
    <EEGSettings>
        <TotalNumberOfChannels>4</TotalNumberOfChannels>
        <EEGSamplingRate>500</EEGSamplingRate>
        <EEGMontage><C>A</C><C>B</C><C>C</C><C>D</C></EEGMontage>
        <NumberOfRecordsOfEEG>11</NumberOfRecordsOfEEG>
    </EEGSettings>
    <STIMSettings/>
</nedf> Únacc)r   é   c              	   C   s  t jtdd�� tt|  ƒ\}}}}}W 5 Q R X |dks<t‚|dksHt‚d}|d |ks\t‚|jd| d  ksrt‚| rœ|jd d	ksˆt‚|d	 j| fksœt‚|d
 jdks®t‚|d
 jdksÀt‚|d
 j	d }|jdksÜt‚|d j|dfksòt‚|d jd|dfk�st‚dS )z.Test NEDF header parsing and dtype extraction.zstim channels.*ignored©Úmatché   é   é   ÚnchanéÈ   r   ÚaccÚdata)é   )é   )ÚeegÚstimZtrigr   r   r   N)
ÚpytestÚwarnsÚRuntimeWarningr   ÚstimhdrÚAssertionErrorÚitemsizeÚnamesÚshapeZsubdtype)r   ÚinfoÚdtZdt_lastZ	n_samplesZn_fullr   Zeegsampledt© r%   úZ/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/io/nedf/tests/test_nedf.pyÚtest_nedf_header_parser#   s$    ÿr'   c                  C   sÈ   d} d}d}ddd| d | |d  | | | ||  d	œ}|  ¡ D ]*\}}tjt|d
�� t|ƒ W 5 Q R X q@dddœ}|  ¡ D ]D\}}tjt|d
��( tjtdd
�� t|ƒ W 5 Q R X W 5 Q R X q~dS )z+Test that invalid headers raise exceptions.s¼   <nedf>
        <NEDFversion>1.3</NEDFversion>
        <EEGSettings>
            %s
            <EEGMontage><C>A</C><C>B</C><C>C</C><C>D</C></EEGMontage>
        </EEGSettings>
    </nedf> s0   <TotalNumberOfChannels>4</TotalNumberOfChannels>s&   <EEGSamplingRate>500</EEGSamplingRate>s   No null terminators\   <a><NEDFversion>1.3</NEDFversion><AdditionalChannelStatus>???</AdditionalChannelStatus></a> s&   <a><NEDFversion>1.3</NEDFversion></a> s	   No nchan.s1   <TotalNumberOfChannels>52</TotalNumberOfChannels>)ÚnullzUnknown additionalúNo EEG channels foundzTotalNumberOfChannels not foundz!= channel countzEEGSamplingRate not foundzNumberOfRecordsOfEEG not foundr   s%   <a><NEDFversion>25</NEDFversion></a> sd   <a><NEDFversion>1.3</NEDFversion><stepDetails><DeviceClass>STARSTIM</DeviceClass></stepDetails></a> )ÚunsupportedZtestedr)   N)Úitemsr   ZraisesÚRuntimeErrorr   r   r   )Ztplr   ÚsrÚhdrr   Zinvalid_hdrZsus_hdrsZsus_hdrr%   r%   r&   Útest_invalid_headers;   s*    

ñýr/   c                  C   sˆ  t tƒ} t| ƒ}|dkst‚t| dd�}t|ƒdks8t‚t|dd…df ddddgƒ |dd…df | jd  }| jd d	ks‚t‚|  d
|d |¡ ¡ }t	|ddd� t	|  ddd¡ ¡ ddd� t	|ddddgƒ | jd j
dksèt‚| jd dksút‚| jd dd… D ].}|d tjk�s$t‚|d tjk�st‚�q| jd d d tjk�sZt‚| jd d d tjk�sxt‚tt td� dS )zTest reading raw NEDF files.i  r   )Zshortest_eventr   Nr   r   Zsfreqiô  ZFp1éd   g/n£¼’?g{®Gáz„?)ZatolZFpzg‹lçû©ñ’?gü©ñÒMb6@gX9´ÈvC@gsh‘í|¿H@g33333“O@Z	meas_dateiã  ZAF7ZchséÿÿÿÿÚkindÚunit)Úfilename)r   ÚeegfileÚlenr   r   r   r#   Úget_dataZmeanr   ÚyearZch_namesr   ZFIFFV_EEG_CHZFIFF_UNIT_VZFIFFV_STIM_CHr	   )ÚrawZnsamplesÚeventsZonsetsZdata_endÚchr%   r%   r&   Útest_nedf_datag   s(    r<   )Ú__doc__Úos.pathÚpathÚopr   Znumpy.testingr   r   Zmner   Zmne.io.constantsr   Zmne.io.nedfr   r   Zmne.datasetsr   Zmne.io.tests.test_rawr	   Z	data_pathZeeg_pathÚjoinr5   r   ÚmarkZparametrizer'   r/   Zrequires_testing_datar<   r%   r%   r%   r&   Ú<module>   s    
,