3
du                 @   s   d dl jZd dlZddl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mZ ejdZG d	d
 d
eZG dd deZG dd deZdS )    N   )logging)simplify_list   )traitsFile	DirectoryTraitedSpecOutputMultiPath)	FSCommandFSTraitedSpecznipype.interfacec               @   sj   e Zd ZejddddZedddddZejddd	d
ddddddd
Z	ej
dddddZej
dddZdS )WatershedBEMInputSpecz--subject %sTz6Subject ID (must have a complete Freesurfer directory))argstr	mandatorydescz%Path to Freesurfer subjects directory)existsr   
usedefaultr   ZT1z
aparc+asegZasegZbrainorigZ	brainmaskZribbonz--volume %sz;The volume from the "mri" directory to use (defaults to T1))r   r   r   z--overwritezOverwrites the existing files)r   r   r   z--atlasz=Use atlas mode for registration (default: no rigid alignment))r   r   N)__name__
__module____qualname__r   Str
subject_idr   subjects_dirEnumvolumeZBool	overwriteZ
atlas_mode r   r   </tmp/pip-build-7vycvbft/nipype/nipype/interfaces/mne/base.pyr      s8   r   c               @   s|   e Zd ZeeddddZeddddZeddddZeddd	dZeddd
dZ	edddddZ
eeddddddZdS )WatershedBEMOutputSpecT)r   zHPaths to the output meshes (brain, inner skull, outer skull, outer skin))r   zbem/watershedz$Brain surface (in Freesurfer format))r   locr   z*Inner skull surface (in Freesurfer format)z*Outer skull surface (in Freesurfer format)z)Outer skin surface (in Freesurfer format)ZbemZfifz+"fif" format file for EEG processing in MNE)r   r    altkeyr   zbem/watershed/wsZCORz"COR" format files)r    r!   r   N)r   r   r   r
   r   
mesh_filesZbrain_surfaceZinner_skull_surfaceZouter_skull_surfaceZouter_skin_surfaceZfif_fileZ	cor_filesr   r   r   r   r   1   s6   r   c               @   s6   e Zd ZdZdZeZeZddgZ	d
ddZ
dd	 ZdS )WatershedBEMa|  Uses mne_watershed_bem to get information from dicom directories

    Examples
    --------

    >>> from nipype.interfaces.mne import WatershedBEM
    >>> bem = WatershedBEM()
    >>> bem.inputs.subject_id = 'subj1'
    >>> bem.inputs.subjects_dir = '.'
    >>> bem.cmdline
    'mne watershed_bem --overwrite --subject subj1 --volume T1'
    >>> bem.run()  # doctest: +SKIP

    zmne watershed_bemr    r!   Nc       	      C   s>   d}d}t j||}|r|}t j|dj|||f}tj|S )N* )opjoinglob)	selfpathkeyZdirvalr!   Z
globsuffixZ
globprefixZkeydirZglobpatternr   r   r   
_get_filesn   s    zWatershedBEM._get_filesc             C   s   | j  j }| jj}tj|| jj}| j }g }xt|j	 D ]}|dkr>| j
|||j | j|j | j}|r>t|}t|trg }	x<|D ]}
|	jtj|
 qW nt|ttfrtj|}	nt|	||< |jddks>|j|	 q>W ||d< |S )Nr"   Zsurface   )output_specgetinputsr   r&   r'   r   Z_outputslistkeysr,   r   r    r!   r   
isinstanceappendabspathstrbytes	TypeErrorrfind)r)   outputsr   Zsubject_pathZoutput_traitsZ
mesh_pathskvalZ
value_listZ	out_filesvaluer   r   r   _list_outputsw   s4    

zWatershedBEM._list_outputs)N)r   r   r   __doc__Z_cmdr   Z
input_specr   r/   Z_additional_metadatar,   r?   r   r   r   r   r#   Y   s   
	r#   )os.pathr*   r&   r(   r%   r   Zutils.filemanipr   baser   r   r   r	   r
   Zfreesurfer.baser   r   	getLoggerZifloggerr   r   r#   r   r   r   r   <module>   s   

$(