U
    f»{jc‡  ã                   @   s|  d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
 ddl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 dd	l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*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5 e 6e 7e8¡dddddd¡Z9dd„ Z:dd„ Z;dPdd„Z<dd „ Z=d!d"„ Z>ej?d#d$„ ƒZ@ejA Bd%dd&g¡ejA Bd'dd(g¡d)d*„ ƒƒZCejA Bd+ejDddd,d-�ejDdd.d/d-�ejDd0d1d2d-�ejDdd3d4d-�g¡d5d6„ ƒZEd7d8„ ZFd9d:„ ZGd;d<„ ZHd=d>„ ZIG d?d@„ d@eƒZJdQdBdC„ZKdDdE„ ZLejAjMdFdG„ ƒZNe*ejAjMdHdI„ ƒƒZOdJdK„ ZPdLdM„ ZQdNdO„ ZRdS )Rz.Generic tests that all raw classes should run.é    )Úredirect_stdout)ÚStringION)Úpath)ÚPath)Úassert_allcloseÚassert_array_almost_equalÚassert_array_equalÚassert_array_less)Úconcatenate_rawsÚcreate_infoÚAnnotationsÚ
pick_types)Útesting)Úread_raw_fifÚRawArrayÚBaseRawÚInfoÚ_writing_info_hdf5)Ú_get_scaling)Ú_TempDirÚcatch_loggingÚ
_raw_annotÚ_stamp_to_dtÚobject_diffÚcheck_versionÚrequires_pandasÚ_import_h5io_funcs)Ú_get_valid_units)ÚDigPoint)Ú
Projection)Ú_mult_cal_one)ÚFIFFz..ÚioZtestsÚdataútest_raw.fifc                 C   sB   d}t | d d ƒ}dD ]$}t ||tj¡dk	st||fƒ‚qdS )z,Assert that info['chs'] has named constants.TÚchsr   )z.*FIFFV_COORD_.*z.*FIFFV_COIL_.*z.*FIFF_UNIT_.*z.*FIFF_UNITM_.*N)ÚreprÚreÚmatchÚDOTALLÚAssertionError)ÚinfoZ__tracebackhide__ÚrÚcheck© r.   úT/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/io/tests/test_raw.pyÚassert_named_constants'   s    r0   c               	   C   s    t dgddd�} t| dgddid� tjtdd	��* t dgddd�} t| dgd
did� W 5 Q R X tjtdd	��& t dgddd�} t| dgdd� W 5 Q R X dS )z+Test the error handling for original units.ÚCzéd   Úeeg)Úch_namesÚsfreqZch_typesé   ZnV)Ú
last_sampsZ
orig_unitsz has no associated original unit.©r(   Znot_Czzorig_units must be of type dictTN)r   r   ÚpytestÚraisesÚ
ValueError)r+   r.   r.   r/   Útest_orig_units1   s    r<   Té   c           b   	      sÆ  t ƒ }tj d¡}d}	d|kr,|d }	|d= |�rè| f ddi|—Ž}
t|
ƒ}| d¡dks^t‚| d¡dkspt‚|	dk	r‚|
 |	¡ t 	|d	¡}| 
t t|
jƒd ¡¡dd
… }t |t|
jƒd ¡}ttt|
j|
jd  ƒƒ|
jƒ}td|ƒt|d |ƒtd|ƒtddƒtdƒtd|ƒg}|
jd| k�rX|t|d| ƒt||d ƒtd|d ƒg7 }| f d|i|—Ž| f ddi|—Žg}|D ]F}|
||f \}}|D ]*‰ ˆ ||f \}}t||ƒ t||ƒ �q˜�q€| f ddi|—Ž‰ ˆ  ¡  d } }}d|
k�rd\}}njd|
k�rd\}}nVd|
k�r*d\}}nBd|
k�r>d\}}n.d|
k�rRd\}}nd|
k�sdtdƒ‚d\}}tˆ j|||d�}‡ fdd „|D ƒ}t dt|ƒf¡}|t |jd ¡ }tt|dd|t|ƒd!�dd"�}tˆ jd# ƒdk�sìt‚ˆ  |¡ tˆ jd# ƒdk�st‚ˆ  ¡   ¡  !¡  "|¡}ˆ  ¡  !¡ }| "|¡}| "|d ¡d }t#j$t%d$d%�� | ¡  &|d ¡ "¡  W 5 Q R X | ¡   ¡  "|¡} | ¡   ¡  &|dd… ¡ "¡ \}!}"t tˆ jƒ¡}#t '|ddd… |ddd… t (|#|¡f¡}$t )|$¡}%t*|$|% |#ƒ t*|%|$ |#ƒ ˆ  ¡  &|$¡}&|&j‡ fd&d „|$D ƒk�s>t‚|&jd ˆ j|d  k�s\t‚t|& "dg¡ˆ  "|d ¡ƒ |& ¡  !¡ }'|'j|&jk�s–t‚|'jd |j|d  k�s´t‚t|' "dg¡| "|d ¡d'd(� |'  ¡  "|%dt|ƒ… ¡}(|' ¡   ¡  &dg¡ "¡ d })|'jd |j|d  k�s(t‚|j|j  k�rT| j  k�rT|(jk�sZn t‚~| ¡ }*|*tj+|*ddd)� }*tj,|*|*d*� |�r¸|d+ }+t-|*|+ƒ |d, },t-|,t .|*¡ƒ nd-t .|*¡ }|d.k�rØtj/}-n2|dk�rèd}-n"|dk�s|d/k�st|ƒ‚tj0}-tj1 2|¡}.tj1 2|¡}/tj1 2| ¡}0|-dk	�r€|-|.t|ƒd ƒ�sPt‚|-|/t|ƒd ƒ�sht‚|-|0t|ƒd ƒ�s€t‚t|d0d1�}1t|d |f|1Ž t|"|)f|1Ž t|d |!f|1Ž t||f|1Ž t|| f|1Ž d|
k�ròˆ  ¡  ˆ  ¡   ¡  3¡  "¡ }2ˆ j3dd2� tˆ jd# ƒdk�s$t‚ˆ jd# d d3 }3|3d4 |k�sHt‚|3d3 j|d3 d3 jk�sft‚ttj1 4|d3 d3 ¡d5d6d(� ttj1 4|3d3 ¡d5d6d(� t|3d3 |d3 d3 ƒ ˆ  !¡  "¡ }t|| |d7d(� t||2d7|1d8 d1� n
| f |Ž}
t|
j5ƒ}4t6|
jƒ d9d „ |
jd: D ƒ}5tt7|5ƒƒt|5ƒk�s4t‚|
j8}6|
j9j:t|
ƒk�sPt‚|
jj9j:t|
jƒk�sjt‚t;|
jd; t<dƒt=fƒ�sˆt‚|6 >¡ }7|6 ¡ }8|7d<k �s¦t‚|8d=k�s´t‚t;|
jd; t=ƒ�røt?|
jd; ƒD ]"\}9}:t;|:t@ƒ�sÔt|9|:fƒ‚�qÔ|
jd> };|;dk�	s|;tAd?ƒk�	st‚d@|
j B¡ k�	s2t‚|�	rt| f |
jCŽ}<t7|
j D¡ ƒt7|<j D¡ ƒk�	sft‚t*|
j5|<j5ƒ t 	|dA¡}=tE|
gƒ}
|
jF|=|
j5dB dddC� t 	|dD¡}>t#j$tGdEd%�� |
 F|>¡ W 5 Q R X tH|=ƒ}?t6|?jƒ t7|
j D¡ ƒt7|?j D¡ ƒk�
st‚t|?ddF… d |6ddF… d6dGdH� t|
j5|?j5d6d6dI� tI J|?jdJ ¡�
rTt‚tI J|?jdK ¡�
rjt‚tI J|
jdJ ¡�
r€t‚tI J|
jdK ¡�
r–t‚|?jdL |
jdL k�
s°t‚|
jK}@|
jL}AtE|
 ¡ |
gƒ}B|Bjd|
j k�
sât‚|BjK|@k�
sòt‚|BjL|A |@ |Ad k�st‚t M|BjNjOdMk¡d }C|
jP}DtQ|BjNjR|C |D|dN� |
jdO dk	�rœdPD ](}E|
jdO |E |?jdO |E k�sTt‚�qTt*|
jdO dQ |?jdO dQ ƒ t;|
jNtSƒ�s®t‚tTƒ }FdRd „ |FD ƒ}G|
jUdk	�rt;|
jUtƒ�sàt‚|
jU V¡ D ] \}H}I|I W¡ |Gk�sêt|Hƒ‚�qê|�r(tddS�tddS�f}Jntƒ f}Jt|
jƒ}K| 
|K¡}|JD �]}L| ¡ }M|M X|L¡ t;|M Ydd¡tZƒ�r”t [|Md ¡�r”|Md  dT7  < | f |MŽ}Nt\|Nƒ |Kdk�s´t‚|d|Kd … }O||Kd d… }P|N ¡  &|O¡}Q|N ¡  &|P¡}R|Ndd… \}*}S|Qdd… \}T}U|Rdd… \}V}Wt*|S|Uƒ t*|*|O |Tƒ t*|S|Wƒ t*|*|P |Vƒ �qHt]dUƒ�r¸t^ƒ \}X}Yt 	|dV¡}Zt_|
jƒ� |Y|Z|
jƒ W 5 Q R X t`|X|Zƒƒ}[ta|[|
jƒdWk�s¸t‚|�r~| ¡ }Md}EdXD ]4}Ez||E }\W n tbk
�rø   d}EY nX  �q�qÎt|ƒ�r~|Edk	�s(ttc| D¡ ƒƒ‚t d|\¡}]t e|\¡|M|E< d|Md< tf g¡ }^ztf h|]¡ | f |MŽ}_W 5 tf h|^¡ X |_  ¡  |4dYk�rÂdZD ]4}`ti| |`|ƒ |�rŒ| ¡ }ad|ad< ti| |`|aƒ �qŒ|
S )[aˆ  Test reading, writing and slicing of raw classes.

    Parameters
    ----------
    reader : function
        Function to test.
    test_preloading : bool
        Whether not preloading is implemented for the reader. If True, both
        cases and memory mapping to file are tested.
    test_kwargs : dict
        Test _init_kwargs support.
    boundary_decimal : int
        Number of decimals up to which the boundary should match.
    **kwargs :
        Arguments for the reader. Note: Do not use preload as kwarg.
        Use ``test_preloading`` instead.

    Returns
    -------
    raw : instance of Raw
        A preloaded Raw object.
    r   NÚmontageÚpreloadTú<r6   ú>Úbufferé
   r5   é   i,  r=   r2   Fr3   )Tç¬CÒÑ]r2<Úgrad)rF   ç§Ž¨™ÂWó:Úmag)rH   rG   Úhbo)rI   ç»½×Ùß|Û=Úhbr)rK   rJ   Úfnirs_cw_amplitudezNew channel type necessary?)rL   rJ   )Úmegr3   Úfnirsc                    s   g | ]}ˆ j | ‘qS r.   ©r4   )Ú.0Úpick©Z	other_rawr.   r/   Ú
<listcomp>�   s     z$_test_raw_reader.<locals>.<listcomp>)r#   ZnrowZ	row_namesÚ	col_namesZncol)r#   ZactiveZprojsZloadedr8   c                    s   g | ]}ˆ j | ‘qS r.   rO   )rP   r,   rR   r.   r/   rS   ³   s     rE   ©Úatol)ZaxisZkeepdims)Úoutg €à7yÃACç    €„.AgH¯¼šò×z>ÚlessÚequalz*before != after, likely _mult_cal_one prob©rV   Úerr_msg)Z
projectionr#   rT   ç      ð?g�íµ ÷Æ°>rJ   r\   c                 S   s   g | ]}t |d  ƒ‘qS )Úloc©Úid)rP   Úchr.   r.   r/   rS   þ   s     r%   Údigg     jø@g     jøÀÚ	meas_date©r   r   zGood channelsr$   éÿÿÿÿ)ÚtmaxÚ	overwriteÚbuffer_size_secztest_raw.h5z!raw must end with .fif or .fif.gzé   g#B’¡œÇ;)ÚrtolrV   )rV   rj   ZhighpassZlowpassZkit_system_idúBAD boundary)ÚdecimalZmeas_id)ZsecsZusecsÚversionZmachidc                 S   s   g | ]}|  ¡ ‘qS r.   )Úlower)rP   Úunitr.   r.   r/   rS   N  s     )r?   z-1Zh5iozinfo.h5Ú )ÚfnameZinput_fnameZ
vhdr_fnameZ	pdf_fnameÚ	directoryÚfilenameé2   )ç        ç      à?)jr   ÚnpÚrandomZRandomStater&   Úcountr*   Zset_montageÚopÚjoinZpermutationÚarangeÚlenr4   ÚappendÚminÚintÚroundrh   r+   Ún_timesÚslicer   Zdel_projr   ZonesÚsqrtÚshaper   ÚdictZadd_projÚcopyÚ	load_dataZ
apply_projÚget_datar9   r:   ÚRuntimeErrorrQ   ZconcatenateZ	setdiff1dZargsortr   ZmeanÚabsr	   ÚmedianrY   rZ   ZlinalgZmatrix_rankZset_eeg_referenceZnormÚtimesr0   ÚsetÚ_dataÚ	__class__Ú__name__Ú
isinstanceÚtypeÚlistÚmaxÚ	enumerater   r   Ú_repr_html_Z_init_kwargsÚkeysr
   ÚsaveÚIOErrorr   ÚmathÚisnanÚ
first_sampÚ	last_sampÚwhereÚannotationsÚdescriptionÚ
_last_timer   Úonsetr   r   Z_orig_unitsÚitemsrn   ÚupdateÚgetÚstrÚisfileÚprintr   r   r   r   r   ÚKeyErrorÚsortedÚdirnameÚbasenameÚosÚgetcwdÚchdirÚ_test_raw_crop)bÚreaderZtest_preloadingZtest_kwargsZboundary_decimalÚtest_scalingÚ	test_rankÚkwargsÚtempdirÚrngr>   ÚrawÚrepZbuffer_fnameÚpicksZbndZslicesZ
other_rawsZsl_timeZdata1Ztimes1Zdata2Ztimes2r3   rM   rN   rV   rT   ZprojZdata_load_apply_getÚapplyZdata_apply_getZdata_apply_get_0Zdata_apply_load_getZdata_apply_load_get_0Zdata_apply_load_get_1Z	all_picksZreordÚrevZreorderZreorder_applyZdata_reorder_apply_load_getZdata_reorder_apply_load_get_1r#   ÚmaxvalÚminvalÚcmpZrank_load_apply_getZrank_apply_getZrank_apply_load_getZt_kwÚdirectZ	this_projÚn_sampZidsZ	full_dataZdata_maxZdata_minZdiÚdrc   Úraw2Z	out_fnameZout_fname_h5Zraw3r�   rž   Z
concat_rawÚidxZexpected_bad_boundary_onsetÚkeyZvalid_unitsZvalid_units_lowerZch_namero   Zpreload_kwargsZn_chZpreload_kwargZthese_kwargsZ	whole_rawZpicks_1Zpicks_2Úraw_1Úraw_2r�   Zdata_1Ztimes_1Zdata_2Ztimes_2Z	read_hdf5Z
write_hdf5Zfname_h5Znew_inforq   r¬   Zorig_dirZ	raw_chdirÚt_propZ
use_kwargsr.   rR   r/   Ú_test_raw_readerC   sX   
"
ÿÿ  ÿÿÿ










   ÿ ÿý
ÿ
 ÿ
ý
ÿÿÿÿ
þ
ý



 ÿÿÿ
ÿ  ÿ  ÿ



"

"ÿþ&ÿ



ÿ










rÉ   c                 C   s  | f |Ž}d}||j d  }|| }d|› d| dd¡› �}|d |j d  }| d|¡ t|jƒdkslt‚|j}	d	|j d  }
t|jd
 ||
d� | ¡ | ¡  }}|jd
 d d|j d   }t	|||gƒ}t|j
ƒdksât‚t|jd
 |ƒ t|j|	ƒ | |d ¡ t|j
ƒdk�st‚t|jd
 || |
d� t|j|	| |
d|› �d� | |d ¡ t|j
ƒdk�srt‚t|jd
 || | |
d� t|j|	| | |
d|› �d� | |d ¡ t|j
ƒdk�sÎt‚t|jd
 || d|  |
d� t|j|	| d|  |
d|› �d� d S )Nrt   r5   z	 t_start=z
, preload=r?   Fr6   r   rv   re   rU   rD   ç       @zBase concat, r[   r=   zDropping one, zDropping two, )r+   r¦   Úcropr}   r�   r*   Ú
first_timer   r‡   r
   Z
_filenames)r²   rÈ   rµ   rÆ   rÁ   Zcrop_tZt_startÚextraÚstoprÌ   rV   rÇ   Zraw_3Zt_totZ
raw_concatr.   r.   r/   r±   ¦  sh    
  þ 
 ÿ 
 þ  ÿ  þr±   c              
   G   sh  d}dD ]p}| |d|iŽ}| |d|iŽ}|  |¡ | ¡  |dkrZ|dd…dd…f d }t||dd…dd…f d ƒ qdD ]ä}| |d|iŽ}|dd…dd…f d }dD ]´}dD ]ª}	|jt t |jd ¡¡ddg  }
| ¡  d|
d ¡}|d �r| ¡  | ¡  |
d d¡}|d �r(| ¡  |  |¡ |	�r@| ¡  t||dd…dd…f d ƒ q´q¬q~dS )z<Test concatenation of raw classes that allow not preloading.N©TFr?   r   ))TTrÏ   )FFrv   r6   )	r~   rˆ   r   r�   rw   Zargminr‹   r‡   rË   )r²   Úargsr#   r?   Zraw1rÃ   Zfirst_preloadr¸   ZpreloadsZlast_preloadZt_cropsr.   r.   r/   Ú_test_concatÑ  s6    
 ÿ


rÑ   c                  C   sV   t tƒ} |  | j¡}tt|ƒƒt|ƒks,t‚| j| jdd�}t|t 	t| jƒ¡ƒ dS )úTest indexing of raw times.T)Úuse_roundingN)
r   Ú	raw_fnameÚtime_as_indexr�   r}   rŽ   r*   r   rw   r|   )r¸   Z	orig_indsZnew_indsr.   r.   r/   Útest_time_as_indexñ  s
    rÖ   rc   Úorigr�   i'  c                 C   sd  t tƒ}| dkr| d¡ tjj| ¡ |j|d�}t 	ddgt
¡}| dk	rT||j7 }tj|ddgddg|jd	 d
�}| |¡ | ¡ }t|ƒdks–t‚t|d jƒdks¬t‚|d jd tj|dd… jd dd�ksÚt‚|d jjd |jd ksøt‚t|d jƒdk�st‚|d jd tj|dd… jd dd�k�s@t‚|d jjd |jd k�s`t‚dS )z Test crop by annotations of raw.N)r�   r   ç      ø?r6   rv   ÚaÚbrc   ©r£   Údurationr¡   Ú	orig_timer=   re   çü©ñÒMbP?)Úrelg{®Gázt?)r   rÔ   Úset_meas_dateÚmner"   r   r‰   r+   rw   ÚarrayÚfloatrÌ   r   Úset_annotationsZcrop_by_annotationsr}   r*   r    r�   r9   ZapproxrÜ   r¡   )rc   r�   r¸   r£   ZannotZrawsr.   r.   r/   Útest_crop_by_annotationsÿ  s,    

ü
.0rå   zoffset, originz,times in s. relative to first_samp (default)r_   rÊ   z"times in s. relative to first_sampr6   r]   z!times in s. relative to meas_dateru   z"absolute times in s. relative to 0c                 C   sZ   t ddd�}tt d¡|dd�}| d¡ |j}|j||  d|d�}t|t |j	¡ƒ d	S )
rÒ   rC   ç      $@©r4   r5   ©rC   rC   ©r#   r+   r�   r6   T)rÓ   ÚoriginN)
r   r   rw   Úemptyrà   r�   rÕ   r   r|   r‚   )Úoffsetrê   r+   r¸   Zrelative_timesZindsr.   r.   r/   Útest_time_as_index_ref  s    

þrí   c               	   C   sÎ   t ddƒ} | jjtdƒkst‚| jjd dks2t‚t ddƒ} | jjtdƒksPt‚| jjd dksdt‚tjtdd�� t ddƒ W 5 Q R X t ddƒ} | jjdks¢t‚| jjd dks¶t‚| jj	d dksÊt‚dS )	z1Test the relation between meas_time in orig_time.r6   rØ   )r6   r   r   NzAmbiguous operationr8   çš™™™™™É?)
r   r    rÝ   r   r*   r£   r9   r:   rŠ   rÜ   )r¸   r.   r.   r/   Útest_meas_date_orig_time0  s    


rï   c               	   C   s
  d} dddg}t || d�}tt t|ƒd|  f¡|ƒ}| tddgd	dgd
d�¡ tƒ �,}|jddd�}d}| 	¡  
¡ |ks€t‚W 5 Q R X |jt|ƒdfks t‚tƒ �,}|jddd�}d}| 	¡  
¡ |ksÎt‚W 5 Q R X |jt|ƒdfksît‚t |¡ ¡ dk�st‚dS )z2Test if reject_by_annotation is working correctly.é   ZC3r1   ZC4)r5   rC   r=   é   rD   Úbad)r£   rÜ   r¡   ZomitT)Zreject_by_annotationÚverbosezHOmitting 1024 of 2560 (40.00%) samples, retaining 1536 (60.00%) samples.i   ÚnanzNSetting 1024 of 2560 (40.00%) samples to NaN, retaining 1536 (60.00%) samples.i 
  i   N)r   r   rw   Úzerosr}   rä   r   r   r‰   ÚgetvalueÚstripr*   r…   rœ   Úsum)Úfsr4   r+   r¸   Úlogr#   Úmsgr.   r.   r/   Útest_get_data_rejectO  s$    
ÿrü   c                     sŽ   ddddg} ddddg}ddddg}d	d
„ ‰ ‡ fdd„dD ƒ\}}|  |¡ t|jj| ƒ t|jj|ƒ t|jj|ƒ |jjtdƒksŠt‚dS )z0Test concatenating raw objects with annotations.rØ   rÊ   g      @rî   ru   Údummyrk   zEDGE boundaryc                 S   sF   t t d¡tddd�dd�}| | ¡ |jtdgdgdd d	�d
� |S )Nrè   rC   ræ   rç   ré   rv   rî   rý   rÛ   )r    )r   rw   rë   r   rà   rä   r   )rc   r¸   r.   r.   r/   Úraw_factory~  s    

þ

ý
ztest_5839.<locals>.raw_factoryc                    s   g | ]}ˆ |d fƒ‘qS )r   r.   ©rP   Úx©rþ   r.   r/   rS   ‰  s     ztest_5839.<locals>.<listcomp>)r   r=   rd   N)	r~   r   r    r£   rÜ   r¡   rÝ   r   r*   )ZEXPECTED_ONSETZEXPECTED_DURATIONZEXPECTED_DESCRIPTIONZraw_AZraw_Br.   r  r/   Ú	test_5839g  s    
r  c                  C   sV   d} t d| ƒ}tt dd|  f¡|ƒ}t|ƒ}t d|¡dk	sFt|ƒ‚| ¡ sRt‚dS )zTest repr of Raw.rð   rD   rC   z3<RawArray | 3 x 2560 (10.0 s), ~.* kB, data loaded>N)	r   r   rw   rõ   r&   r'   Úsearchr*   r—   )r5   r+   r¸   r,   r.   r.   r/   Ú	test_repr’  s    
ÿÿÿr  c                       s&   e Zd Zd‡ fdd„	Zdd„ Z‡  ZS )Ú
_RawArangeFNc                    sJ   t tdd„ tddƒD ƒƒddƒ}tƒ j||d|d� t| jƒd	ksFt‚d S )
Nc                 s   s   | ]}t |ƒV  qd S ©N)r§   rÿ   r.   r.   r/   Ú	<genexpr>¡  s     z&_RawArange.__init__.<locals>.<genexpr>r6   é	   g     @�@r3   )iç  )r7   ró   iè  )r   r”   ÚrangeÚsuperÚ__init__r}   r�   r*   )Úselfr?   ró   r+   ©r�   r.   r/   r     s     z_RawArange.__init__c           	      C   sD   t  d|| ft j¡}t  dd¡|t jf ||< t|||||ƒ d S )Né   r6   r  )rw   Úfullrô   r|   Znewaxisr    )	r  r#   rÄ   ÚfiÚstartrÎ   ZcalsZmultÚoner.   r.   r/   Ú_read_segment_file¥  s    z_RawArange._read_segment_file)FN)r‘   Ú
__module__Ú__qualname__r  r  Ú__classcell__r.   r.   r  r/   r  ž  s   r  Fc                 C   s
   t | |ƒS r  )r  )r?   ró   r.   r.   r/   Ú_read_raw_arange«  s    r  c                   C   s   t tddd� dS )zTest _test_raw_reader.FrY   )r³   r´   N)rÉ   r  r.   r.   r.   r/   Útest_test_raw_reader¯  s    r  c               	   C   s²   t tƒjd d } t| ƒ}tƒ }t|ƒ� | ¡  W 5 Q R X | ¡  ¡  	d¡}t
|ƒdks^t‚t d|d ¡dk	s~t|d ƒ‚|d d	ksŽt‚|d
 dksžt‚|d dks®t‚dS )z%Test print output of describe method.r#   r$   Ú
iz  zF<Raw | test_raw.fif, 376 x 14400 (24\.0 s), ~3\.. MB, data not loaded>r   Nr6   zQ ch  name      type  unit         min         Q1     median         Q3        maxr=   zQ  0  MEG 0113  GRAD  fT/cm    -221.80     -38.57      -9.64      19.29     414.67re   uR   375  EOG 061   EOG   ÂµV       -231.41     271.28     277.16     285.66     334.69)r   Ú__file__Úparentr   r   r   Údescriberö   r÷   Úsplitr}   r*   r'   r(   )rq   r¸   ÚfÚsr.   r.   r/   Útest_describe_print´  s$    
þþþr   c               	   C   s˜   t tƒjd d } t| ƒ}|jdd�}|jdks4t‚|j ¡ dddd	d
dddgksVt‚|j	j
dksft‚t|jddd…f  t¡t dddddg¡ƒ dS )z,Test returned data frame of describe method.r#   r$   T)Z
data_frame)éx  r  Únamer“   ro   r   ZQ1rŒ   ZQ3r•   ra   r   rD   Ng  @*c¸½g   ,÷�½g   ,÷p½g   ,÷€=g   k ÌÆ=)r   r  r  r   r  r…   r*   ÚcolumnsÚtolistÚindexr"  r   ZilocZastyperã   rw   râ   )rq   r¸   Zdfr.   r.   r/   Útest_describe_dfÉ  s$      ÿ
üÿr&  c               	   C   sd  t ddƒdkst‚t ddƒdks$t‚t ddƒdks6t‚t dd	ƒd
ksHt‚t ddƒdksZt‚t ddƒdkslt‚t ddƒd
ks~t‚t ddƒdks�t‚t ddƒdks¢t‚ttƒjd d } t| ƒ}t dddg¡}t dddg¡}t dddg¡}| ¡ }|j	dk�st‚t
|d d!…d"f |ƒ |jdgd#d$�}|j	d%k�s:t‚t
|d d!…d"f |ƒ |jdgdd$�}|j	d%k�spt‚t
|d d!…d"f |d ƒ |jdgdd$�}|j	d&k�sªt‚t
|d d!…d"f |d ƒ |jdd'gd#d$�}	|	j	d(k�sæt‚t
|	d d!…d"f |ƒ tjtd)d*�� |jdd+� W 5 Q R X tjtd,d*�� |jdgd-d$� W 5 Q R X |jtdd	dd.�d+�}
|
j	dk�srt‚t
|
d/ d0ƒ t
|
d1 d2ƒ t
|
d3 d4ƒ |jtd5d6�d+�}|j	dk�s¾t‚t
|d d!…d"f |ƒ tjtd,d*�� |jtd7d	dd.�d+� W 5 Q R X tjtd8d*�� |jtd7d	dd9�d+� W 5 Q R X tjtd:d*�� |jdd	dgd+� W 5 Q R X d!S );z-Test the "units" argument of get_data method.r3   ZuVrX   ZdVræ   ZpVg   ¢”mBrH   ZfTg  4&õkCrF   zT/mr6   zT/mmrÞ   zfT/mzfT/cmg  @åœ0¢BÚcsdu   uV/cmÂ²g      Y@r#   r$   gØMfOQ?g%"wxR?gOx¯åIÒ1?gÖDYŠ«?g¿-Å+÷�½g�¼,÷p=gïìü¸S§½)r!  é@8  éýÿÿÿNre   ÚV)rº   Úunits)é<   r(  )éÌ   r(  Zstim)éE   r(  zmore than one channelr8   )r+  zis not a valid unitzfV/cm)rF   rH   r3   )r   re   g^=	€ICÀ)r=   re   gY!ÙjÀ)éþÿÿÿre   gÐûH*S@ZuM)rI   zfT/cVzis not a channel type)Zbad_typerH   r3   zinstance of None, str, or dict)r   r*   r   r  r  r   rw   râ   r‰   r…   r   r9   r:   r;   r†   rª   Ú	TypeError)rq   r¸   ÚlastZlast_eegZ	last_gradZ	data_noneZdata_str_noconvZdata_str_simpleZdata_str_fractionZdata_str_simplestimZ	data_dictZdata_dict_notinr.   r.   r/   Útest_get_data_unitsÝ  sf    ÿÿ  r2  c                  C   sh   t t d¡tjtjdd�} dt| ƒks*t‚t t d¡tjtj	dd�} dt| ƒksTt‚dt| ƒksdt‚dS )zTest printing of DigPoint.rD   r   )r,   Zcoord_frameÚkindÚidentÚmmZvoxelN)
r   rw   r|   r!   ZFIFFV_COORD_HEADZFIFFV_POINT_EEGr&   r*   ZFIFFV_MNE_COORD_MRI_VOXELZFIFFV_POINT_CARDINAL)Zdpr.   r.   r/   Útest_repr_dig_point%  s     ÿ ÿr6  c            
   	   C   s\  t tƒjd d } t| ƒ}d\}}| ¡ }|j||d�}| ||g¡}t|dd…|d |d …f |ƒ |jdd	�}t||ƒ |jd
d�}t||ƒ |jdd||d�}	|	jd dks¸t‚t	j
tdd�� |jdd� W 5 Q R X t	j
tdd�� |jdd� W 5 Q R X t	j
tdd�� |jddgd	� W 5 Q R X t	j
tdd�� |jddgd� W 5 Q R X dS )z1Test tmin and tmax parameters of get_data method.r#   r$   )r6   r  )Útminrf   Nr   r6   éûÿÿÿ)r7  rX   )rf   r=   )r  rÎ   r7  rf   zstart must be .* intr8   )r  zstop must be .* intgffffff@)rÎ   ztmin must be .* floatztmax must be .* float)r   r  r  r   r‰   rÕ   r   r…   r*   r9   r:   r0  )
rq   r¸   r7  rf   Zd1Zd2ZidxsZd3Zd4Zd5r.   r.   r/   Útest_get_data_tmin_tmax1  s*    "

r9  )TTr=   TT)FN)SÚ__doc__Ú
contextlibr   r"   r   r›   r®   r   rz   Úpathlibr   r'   r9   Únumpyrw   Znumpy.testingr   r   r   r	   rá   r
   r   r   r   Zmne.datasetsr   Zmne.ior   r   r   r   r   Zmne.io.baser   Z	mne.utilsr   r   r   r   r   r   r   r   Zmne.io.meas_infor   Zmne.io._digitizationr   Zmne.io.projr   Zmne.io.utilsr    Zmne.io.constantsr!   r{   r¬   r  rÔ   r0   r<   rÉ   r±   rÑ   Zrequires_testing_datarÖ   ÚmarkZparametrizerå   Úparamrí   rï   rü   r  r  r  r  r  Zslowtestr   r&  r2  r6  r9  r.   r.   r.   r/   Ú<module>   s~   ( ÿ
      ÿ
  e+ 
ü
+

H