U
    f»{j,  ã                   @   sÔ  d Z ddlZddlmZ ddlZddlZddlZddl	m
Z
 ddlZddl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mZmZmZmZmZmZmZmZm Z m!Z! ej"dd	�Z"e #e"d
d¡Z$e #e"d
dd¡Z%e #e$d¡Z&e #e$d¡Z'e #e"dddd¡Z(e)ddd�Z*ej+dd„ ƒZ,ej+ej- .dd¡dd„ ƒƒZ/dd„ Z0ej+dd„ ƒZ1dd „ Z2d!d"„ Z3d#d$„ Z4eƒ ej+d%d&„ ƒƒZ5d'd(„ Z6d)d*„ Z7d+d,„ Z8ej+d-d.„ ƒZ9ej- .d/d0d1d2d3d4d5d6d7d8d9d:d;g¡d<d=„ ƒZ:dS )>zTest check utilities.é    N)ÚPath)Úread_vectorview_selection)Útesting)Úpick_channels_covÚ_picks_to_idx)Úcheck_random_stateÚ_check_fnameÚcheck_fnameÚ_suggestÚ_check_subjectÚ_check_info_invÚ_check_optionÚBunchÚcheck_versionÚ
_path_likeÚ_validate_typeÚ_on_missingÚrequires_nibabelÚ_safe_inputÚ_check_ch_locsF)ÚdownloadZMEGÚsamplezsample_audvis_trunc_raw.fifzsample_audvis_trunc_raw-eve.fifz%sample_audvis_trunc-meg-vol-7-fwd.fifZsubjectsZmrizaseg.mgzg»½×Ùß|û=gê-�™—‘=)ÚgradÚmagc              	   C   sn  t  ttd¡ t  ttd¡ ttdƒƒ | d }t|dƒ� W 5 Q R X t 	|¡sTt
‚t|ddd� t |¡j}t |d¡ tj d	¡s®t jtd
d�� t|ddd� W 5 Q R X t ||¡ t |¡ t 	|¡rÒt
‚t  ttdddd¡ t  ttdd¡ t  ttdd¡ t  ttdd¡ tdƒ d¡ tdƒ d¡ ttj d¡ƒ d¡ tddƒ�rjttj d¡ƒ d¡ dS )zTest checking functions.Úfooé   z./fooÚwbÚreadT)Ú	overwriteZ
must_existr   Úwinzread permissions©Úmatchz
tets-dip.x© )z.fifNÚnumpyz1.17)ÚpytestÚraisesÚ
ValueErrorr   Ú	TypeErrorr   r   ÚopenÚopÚisfileÚAssertionErrorÚosÚstatÚst_modeÚchmodÚsysÚplatformÚ
startswithÚPermissionErrorÚremoveÚIOErrorr	   r   ÚchoiceÚnpÚrandomZRandomStater   Zdefault_rng)Útmp_pathÚfnameZ
orig_permsr"   r"   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/utils/tests/test_check.pyÚ
test_check    s2    

r<   Úsuffix)z_meg.fifz_eeg.fifz	_ieeg.fifz_meg.fif.gzz_eeg.fif.gzz_ieeg.fif.gzc                 C   sD   |t  t¡ d| ¡ }tj t¡ dd¡}| |¡ tj |¡ dS )z*Test checking for valid filename suffixes.z_raw.fifr   gš™™™™™¹?N)	r)   ÚbasenameÚ	fname_rawÚreplaceÚmneÚioÚread_raw_fifÚcropÚsave)r=   r9   Z	new_fnameÚrawr"   r"   r;   Útest_check_fname_suffixes?   s    
rG   c            
         sÂ   t  t¡} t jjtdd�‰ t  t¡}d\}}}tdƒ}t j	ˆ j
d|d�}|ddd… }ˆ  ‡ fdd	„|D ƒ¡ ~ˆ j
 ¡  t jˆ ||||dd
dtd�	}t j|ddd�}t j|ddd�}	||	|| fS )zRead in data used in tests.T)Úpreload)r   gš™™™™™¹¿ç333333Ã?zLeft-temporal)ÚmegZ	selectionNé   c                    s   g | ]}ˆ j | ‘qS r"   ©Úch_names©Ú.0Úii©rF   r"   r;   Ú
<listcomp>Y   s     z_get_data.<locals>.<listcomp>)Nç        )ZprojZbaselinerH   ÚrejectrS   )ÚtminÚtmaxg{®Gáz„?rI   )rA   Zread_forward_solutionÚ	fname_fwdrB   rC   r?   Zread_eventsÚfname_eventr   Z
pick_typesÚinfoÚpick_channelsZnormalize_projZEpochsrT   Zcompute_covariance)
ÚforwardÚeventsZevent_idrU   rV   Zleft_temporal_channelsÚpicksÚepochsÚ	noise_covÚdata_covr"   rQ   r;   Ú	_get_dataK   s(    



ÿ
  ÿra   c                     s–  t ƒ \‰‰ ‰} ˆjd ˆ jks"t‚ˆjd ˆjks6t‚ˆj ¡ }|d dd… |d< t|| ˆd�}ddg|ksrt‚ˆ  ¡ }|jd |d< tˆj| |d�}d|ks¤t‚ˆ ¡ }|jd |d< tˆj| |d�}d|ksÖt‚ˆj ¡ }d	|d
 d d< t|| ˆd�}d|k�st‚ˆ ‡fdd„tdƒD ƒ¡ tˆ ‡ fdd„tddƒD ƒd�‰ tˆ‡fdd„tddƒD ƒd�‰tˆj| ˆˆ d�}t	tddƒƒ|k�s’t‚dS )zBTest checks for common channels across fwd model and cov matrices.rM   r   é   Zbads©r_   rK   r   ©r`   i-  ÚchsÚkindc                    s   g | ]}ˆ j | ‘qS r"   rL   rN   )r^   r"   r;   rR   ‰   s     z'test_check_info_inv.<locals>.<listcomp>é
   c                    s   g | ]}ˆ j | ‘qS r"   rL   rN   rd   r"   r;   rR   Š   s   ÿé   é   )Úincludec                    s   g | ]}ˆ j | ‘qS r"   rL   rN   rc   r"   r;   rR   Œ   s   ÿé   é   )r_   r`   N)
ra   rY   rM   r+   Úcopyr   rZ   Úranger   Úlist)r[   Z	info_badsr]   Zdata_cov_badsZnoise_cov_badsZinfo_refr"   )r`   r^   r_   r;   Útest_check_info_invh   s<    

ÿ
ÿ

ÿrp   c               	   C   s®   dddg} t dd| ƒst‚t dd| ƒs*t‚t dd| ƒs:t‚t dddgƒsLt‚d}tjt|d�� t dd| ƒspt‚W 5 Q R X d}tjt|d�� t dddgƒs t‚W 5 Q R X d	S )
zATest checking the value of a parameter against a list of options.ZvalidZgoodÚokÚoptionznInvalid value for the 'option' parameter. Allowed values are 'valid', 'good', and 'ok', but got 'bad' instead.r    ÚbadzcInvalid value for the 'option' parameter. The only allowed value is 'valid', but got 'bad' instead.N)r   r+   r$   r%   r&   )Zallowed_valuesÚmsgr"   r"   r;   Útest_check_option“   s    
ru   c                  C   sN   t tƒ} ttƒ}tdd�}t| ƒdks*t‚t|ƒdks:t‚t|ƒdksJt‚dS )zTest _path_like().Úbar)r   TFN)ÚstrÚbase_dirr   Údictr   r+   )Zstr_pathZpathlib_pathZno_pathr"   r"   r;   Útest_path_likeª   s    
rz   c                	   C   s2   t ddƒ tjtdd�� t ddƒ W 5 Q R X dS )zTest _validate_type.r   zint-liker    FN)r   r$   r%   r'   r"   r"   r"   r;   Útest_validate_typeµ   s    
r{   c                  C   sP   t  t¡} td| ƒ}|dks t‚td| ƒ}|dks6t‚td| ƒ}|dksLt‚dS )zTest suggestions.Ú zLeft-cerebellumz' Did you mean 'Left-Cerebellum-Cortex'?zCerebellum-Cortexzc Did you mean one of ['Left-Cerebellum-Cortex', 'Right-Cerebellum-Cortex', 'Left-Cerebral-Cortex']?N)rA   Zget_volume_labels_from_asegÚ	fname_mgzr
   r+   )ÚnamesZsugr"   r"   r;   Útest_suggest¼   s    



r   c               	   C   s~   d} t jt| d�� td| ƒ W 5 Q R X t jt| d�� td| ƒ W 5 Q R X td| ƒ t jtdd�� td| ƒ W 5 Q R X dS )	zTest _on_missing.Útestr    ÚraiseÚwarnÚignorez,Invalid value for the 'on_missing' parameterr   N)r$   r%   r&   r   ZwarnsÚRuntimeWarning©rt   r"   r"   r;   Útest_on_missingÉ   s    
ÿr†   c                 C   s
   t ƒ ‚d S )N)ÚEOFErrorr…   r"   r"   r;   Ú_matlab_input×   s    rˆ   c              	   C   sP   |   tjjdt¡ tjtdd�� tddd� W 5 Q R X tddd�dksLt	‚dS )	zTest _safe_input.ÚinputzCould not use inputr    ZwhateverZnothing)Zalt)ZuseN)
ÚsetattrrA   ÚutilsÚcheckrˆ   r$   r%   ÚRuntimeErrorr   r+   )Úmonkeypatchr"   r"   r;   Útest_safe_inputÛ   s    r�   c                  C   sÔ   t j t¡} t| d�st‚dgddgdfD ]}t| |d�s*t‚q*dD ]}t| |d�sDt‚qDt| dd�}|D ]}tj| d	 | d
 dd…< qjt| |d�dksžt‚t| dd�dks²t‚t| d�sÀt‚t| dd�sÐt‚dS )zTest _check_ch_locs behavior.)rY   r   r   N)rY   r]   )rJ   r   r   Úeeg)rY   Úch_typer�   re   Úlocrb   Fr   )	rA   rB   Z	read_infor?   r   r+   r   r7   Únan)rY   r]   r‘   Z	picks_eegÚidxr"   r"   r;   Útest_check_ch_locsã   s    r•   zversion, want, have_unstripped)z1.23.0.dev0+782.g1168868df6z1.23F)z1.9.0.dev0+1485.b06254ez1.9F)z3.6.0.dev1651+g30d6161406z3.6F)z1.1.dev0z1.1F)z0.56.0dev0+39.gef1ba4c10z0.56F)z	9.1.0.rc1z9.1F)z0.3dev0z0.3F)z
0.2.2.dev0z0.2.2F)z3.2.2+150.g1e93bd5dz3.2.2T)ú1.2.3r–   T)ú1.2r—   T)Ú1r˜   Tc           	         sà   |  tjjd‡ fdd„¡ tˆ |ddd�\}}|ˆ ks:t‚||ksFt‚td|dd�\}}|sht|ˆ fƒ‚d	d
„ }|ˆ ƒrždˆ ks„t‚dˆ ks�t‚|ˆ ksªt‚n|ˆ ksªt‚d|ks¶t‚d|ksÂt‚| d¡rÐt‚||ƒsÜt‚dS )zTest that stripping dev works.Úimport_modulec                    s
   t ˆ d�S )N)Ú__version__)r   )Úx©Úversionr"   r;   Ú<lambda>  ó    z test_strip_dev.<locals>.<lambda>FT)ÚstripÚreturn_versionr   )r¡   c                 S   s8   zdd„ |   d¡D ƒ W n tk
r.   Y dS X dS d S )Nc                 S   s   g | ]}t |ƒ‘qS r"   )Úint)rO   r›   r"   r"   r;   rR     s     z8test_strip_dev.<locals>.looks_stable.<locals>.<listcomp>Ú.FT)Úsplitr&   rœ   r"   r"   r;   Úlooks_stable  s
    z$test_strip_dev.<locals>.looks_stableÚdevÚrcr£   N)rŠ   rA   r‹   rŒ   r   r+   Úendswith)	r�   ZwantZhave_unstrippedrŽ   Zgot_have_unstrippedZsame_versionZhaveZsimpler_versionr¥   r"   rœ   r;   Útest_strip_dev   s:     
þ   ÿ
  ÿ
r©   );Ú__doc__r,   Úos.pathÚpathr)   r0   r#   r7   r$   Úpathlibr   rA   r   Zmne.datasetsr   Zmne.io.pickr   r   Z	mne.utilsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   Z	data_pathÚjoinrx   r?   rX   rW   r}   ry   rT   Zrequires_testing_datar<   ÚmarkZparametrizerG   ra   rp   ru   rz   r{   r   r†   rˆ   r�   r•   r©   r"   r"   r"   r;   Ú<module>   sl   D
ÿ
*
ò