U
    f»{jY-  ã                   @   sh  d dl m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Zd dl	Z	d dl
mZmZmZ d dlmZmZmZmZ d dlm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$ ej%d
d�d Z&dd„ Z'edd„ ƒZ(e	j)j*ej+edd„ ƒƒƒZ,dddgZ-dd„ Z.e	j) /de0e1e-ƒƒ¡dd„ ƒZ2d%dd„Z3dd„ Z4dd „ Z5d!d"„ Z6d#d$„ Z7dS )&é    )ÚpartialN©Úpath)ÚdatasetsÚread_labels_from_annotÚwrite_labels_to_annot)ÚtestingÚfetch_infant_templateÚfetch_phantomÚfetch_dataset)Ú_set_montage_coreg_path)Úbase)Ú_manifest_check_downloadÚ	_mne_path)Úrequires_good_networkÚget_subjects_dirÚ
ArgvSetterÚ_plÚuse_log_levelÚcatch_loggingÚhashfuncF©ÚdownloadZsubjectsc              	   C   s”  dD ]�}|  d¡r ttj|ƒ}n
tt|ƒ}t|jdd�ƒdkr`t| ¡ tƒsPt‚t 	|¡s~t‚n| ¡ dkspt‚t 	|¡r~t‚t
d|t 	|¡f ƒ qt| ƒ}| d|¡ tj}t|jdd�ƒdksÈt‚| ¡ d	ksØt‚| ¡ dksèt‚| d
|¡ |jddd� ttj ddd¡ƒt |d¡k�s(t‚tdƒdk�s:t‚tƒ  tƒ }| d¡�sVt‚| dt| d ƒ¡ tjtdd�� tjdd� W 5 Q R X dS )zTest simple dataset functions.)ÚsampleZsomatoZspm_facer   ZopmZbst_rawZbst_auditoryZbst_restingZ
multimodalZbst_phantom_ctfZbst_phantom_elektaZkilowordZmtrfZphantom_4dbtiZvisual_92_categoriesZfieldtrip_cmcÚbstFr   Ú.Nz%s: %sZMNE_DATASETS_SAMPLE_PATHÚ Ú_MNE_FAKE_HOME_DIRZSUBJECTS_DIR)ZraisingÚfooÚbarZmne_datazMNE-fsaverage-dataZMNE_DATAzas specified by MNE_DAT©Úmatch)Ú
startswithÚgetattrr   Z
brainstormÚstrÚ	data_pathÚ
isinstanceÚget_versionÚAssertionErrorÚhas_datasetÚprintÚsetenvr   ZdelenvÚutilsÚ	_get_pathÚopÚjoinr   r   ÚendswithÚpytestÚraisesÚFileNotFoundErrorr   )Útmp_pathÚmonkeypatchZdnameZdatasetÚtempdirÚsd© r8   ú_/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mne/datasets/tests/test_datasets.pyÚtest_datasets_basic   s8    


ÿ
r:   c              	      s’  t tˆ ƒdd�}| ¡ � tjjf ddi|—Ž}W 5 Q R X t |¡sHt‚t 	t 
|d¡¡s^t‚t d¡rlt‚tj ¡ dks~t‚tj d¡dks’t‚| dtˆ ƒ¡ tjtd	d
�� tjjf ddi|—Ž}W 5 Q R X ||ksÞt‚| ¡ \}}d|ksöt‚t d¡�st‚tj ¡ dk�st‚ˆ d d }t|dƒ�}	|	 d¡ W 5 Q R X t d¡�sVt‚tj ¡ dk�sjt‚tjjf ddi|—Ž | ¡ \}}d|k�sšt‚| tjdd¡ t d¡�sºt‚tj ¡ dk�sÎt‚tjjf ddi|—Ž | ¡ \}}d|k�sþt‚| tjdd¡ t d¡�rt‚d‰‡ ‡fdd„}
| tjd|
¡ tjtˆd
�� tjjf |Ž W 5 Q R X | ¡ \}}t d|tj¡�sŽt|ƒ‚dS )z&Test dataset URL and version handling.T)r   ÚverboseZupdate_pathFr   ZfakeNr   znon-standard configr    ZDownloadingz0.0r   zversion.txtÚwz0.1r   zout of dateZ_FAKE_VERSIONz0.2z*Correctly trying to download newer versionc                    s@   |   |¡}| j| }d|ks t‚tˆ ƒt|ƒks4t‚tˆƒ‚d S )Nzfoo.tgz)Úget_urlÚabspathr(   r$   ÚRuntimeError)ÚselfÚfnameZ
downloaderÚ	processorÚurlÚ	full_path©r4   Zwant_msgr8   r9   Ú_error_downloadt   s
    

z'test_downloads.<locals>._error_downloadÚfetchz.* 0\.1 .*out of date.* 0\.2.*)Údictr$   Údisabledr   Z_faker%   r.   Úisdirr(   Úisfiler/   r)   r'   r,   Ú_get_versionr+   r1   ZwarnsÚRuntimeWarningZ
readouterrÚopenÚwriteÚsetattrZ_fetchÚpoochZPoochr2   r?   Úrer!   Ú	MULTILINE)r4   r5   ZcapsysÚkwargsr   Únew_pathÚoutÚ_rA   ÚfidrF   r8   rE   r9   Útest_downloadsD   sN    
  rY   c           	      C   sh  t | ƒ}t t |d¡¡ t t |dd¡¡ t t |dd¡¡ dD ]0}t t tddd| ¡t |ddd| ¡¡ qFtt |ddd¡dƒ� W 5 Q R X t	j
|d� td	ƒ� t	j|d� W 5 Q R X dD ]"}t t |ddd
| ¡¡sÊt‚qÊtddd|d�}tf ddi|—Ž}t|fdddœ|—Ž t |ddd¡}t|ƒ}|dd… d }t|ƒ}||k�sdt‚dS )zTest fetching parcellations.Z	fsaverageÚlabelZsurf)ZlhZrhz%s.whitezlh.aparc_sub.annotÚwb©Úsubjects_dir)z--accept-hcpmmp-licensez%s.aparc_sub.annotZbothF)ÚsubjectÚhemiÚsortr]   ÚparcZHCPMMP1ZHCPMMP1_roundz./left.fsaverage164.label.gii)ra   Z
table_namezlh.HCPMMP1.annotNiúÿÿÿz_round.annot)r$   ÚosÚmkdirr.   r/   ÚshutilÚcopyfiler]   rN   r   Zfetch_aparc_sub_parcellationr   Zfetch_hcp_mmp_parcellationrK   r(   rH   r   r   r   )	r4   Zthis_subjects_dirr_   rT   ÚlabelsÚorigÚfirstÚnewÚsecondr8   r8   r9   Útest_fetch_parcellations‚   sN    þÿÿ

ÿÿÿþþrk   zfoo/foo.txtzfoo/bar.txtzfoo/baz.txtc                 C   sb   t  ||¡}t |d¡�@}| dd¡� W 5 Q R X tD ]}| |d¡� W 5 Q R X q6W 5 Q R X d S )Nr<   zfoo/)r.   r/   ÚzipfileÚZipFilerN   Ú_zip_fnames)rC   r   rA   Z
known_hashZzipfr8   r8   r9   Ú_fake_zip_fetchª   s    
ro   Ún_havec              
   C   sÔ  |  tdt¡ t t| ƒd¡}t t| ƒd¡}t|dƒ�}tD ]}| d| ¡ q>W 5 Q R X |t	t
tƒd ƒkstt‚t |¡r‚t‚|dkr²t t |d¡¡ t t |d¡¡s²t‚tD ]}t t ||¡¡r¶t‚q¶td	|… D ]"}tt ||¡dƒ� W 5 Q R X qÞtƒ �0}td
ƒ� d }}	t||||	ƒ W 5 Q R X W 5 Q R X | ¡ }d| }
d|
t|
ƒf |k�sht‚dD ].}|
dk�rŠ||k�s˜t‚n||k�slt‚�qlt |¡�s¬t‚tD ]}t t ||¡¡�s°t‚�q°d	S )zTest our manifest downloader.ÚretrieveÚemptyzmanifest.txtr<   z%s
é   r   r   NTr   é   z%d file%s missing from)zExtracting missingzSuccessfully )rP   rQ   ro   r.   r/   r$   rN   rn   rO   ÚrangeÚlenr(   rJ   rb   ÚmakedirsrK   r   r   r   Úgetvaluer   )r4   rp   r5   ÚdestinationÚmanifest_pathrX   rA   ÚlogrC   Úhash_Z	n_missingZwantr8   r8   r9   Útest_manifest_check_download´   s<    
"
r}   c           	      C   s¾   |d kr8|  d¡d   d¡d }||ks,t‚||ks8t‚|| ksDt‚t|ƒdksTt‚|rºt| ƒ�T}|D ]H}| ¡ }|sxqft ||¡}tjt 	|¡dd� t|dƒ� W 5 Q R X qfW 5 Q R X d S )	Nú/éÿÿÿÿr   r   é    T)Úexist_okr[   )
Úsplitr(   rv   rN   Ústripr.   r/   rb   rw   Údirname)	rz   ry   rC   r|   ÚnameÚ
fake_filesrX   r   rA   r8   r8   r9   Ú	_fake_mcdÙ   s     
r‡   c              	   C   sD   |  tdt¡ td| d� tjtdd�� td| d� W 5 Q R X dS )zTest fetch_infant_template.r   Z12mor\   zInvalid value forr    Z0moN)rP   Úinfant_baser‡   r	   r1   r2   Ú
ValueError©r4   r5   r8   r8   r9   Útest_infantí   s    r‹   c              	   C   sB   |  tdttddd�¡ td| d� t | d d d ¡s>t‚d	S )
zTest phantom data downloading.r   Zphantom_otaniemiT)r…   r†   Zotaniemir\   ZmrizT1.mgzN)rP   Úphantom_baser   r‡   r
   r.   rK   r(   rŠ   r8   r8   r9   Útest_phantomõ   s    ÿÿr�   c                 C   s@   t dddt | d¡dd�}t|ddd� | d d  ¡ s<t‚dS )	z>Test downloading an uncompressed file with our fetch function.ÚlicensezGhttps://raw.githubusercontent.com/mne-tools/mne-python/main/LICENSE.txtzLICENSE.foor   N)Zdataset_namerC   Úarchive_nameZfolder_nameÚhashT)r   Zforce_update)rH   r.   r/   r   Úis_filer(   )r4   Zdataset_dictr8   r8   r9   Útest_fetch_uncompressed_file  s    
úr’   c               	   C   s˜   t dƒ} t| ƒdkst‚tjdd��  | d dtj› d�ks@t‚W 5 Q R X t| d ƒdks^t‚td|  ƒdksrt‚tjtdd�� d|   W 5 Q R X dS )zTest our Path wrapping.r   r   zpathlib\.Path objectr    Úmezcan only concatenate strN)	r   r$   r(   r1   Zdeprecated_callr.   Úsepr2   Ú	TypeErrorr   r8   r8   r9   Útest_mne_path  s    $r–   )NF)8Ú	functoolsr   rb   r   r.   rR   rd   rl   rQ   r1   Zmner   r   r   Zmne.datasetsr   r	   r
   r   Zmne.datasets._fsaverage.baser   Zmne.datasets._infantr   rˆ   Zmne.datasets._phantomrŒ   Zmne.datasets.utilsr   r   Z	mne.utilsr   r   r   r   r   r   r   r%   r]   r:   rY   ÚmarkZslowtestZrequires_testing_datark   rn   ro   Zparametrizeru   rv   r}   r‡   r‹   r�   r’   r–   r8   r8   r8   r9   Ú<module>   sB   $)
="


$  ÿ
