Skip to content
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Revert "Merge pull request #1 from vferat/fix/mne_watershed_bem"
This reverts commit 1f92bd5, reversing
changes made to 8129ff4.
  • Loading branch information
vferat committed Aug 30, 2019
commit 834df60d1b03c82028a894d0fe27825cca04cb0d
112 changes: 49 additions & 63 deletions nipype/interfaces/mne/base.py
Original file line number Diff line number Diff line change
@@ -1,92 +1,81 @@
# -*- coding: utf-8 -*-
from __future__ import print_function, division, unicode_literals, absolute_import
from __future__ import (print_function, division, unicode_literals,
absolute_import)
from builtins import str, bytes

import os.path as op
import glob

from ... import logging
from ...utils.filemanip import simplify_list
from ..base import traits, File, Directory, TraitedSpec, OutputMultiPath
from ..base import (traits, File, Directory, TraitedSpec, OutputMultiPath)
from ..freesurfer.base import FSCommand, FSTraitedSpec

iflogger = logging.getLogger("nipype.interface")
iflogger = logging.getLogger('nipype.interface')


class WatershedBEMInputSpec(FSTraitedSpec):
subject_id = traits.Str(
argstr="--subject %s",
argstr='--subject %s',
mandatory=True,
desc="Subject ID (must have a complete Freesurfer directory)",
)
desc='Subject ID (must have a complete Freesurfer directory)')
subjects_dir = Directory(
exists=True,
mandatory=True,
usedefault=True,
desc="Path to Freesurfer subjects directory",
)
desc='Path to Freesurfer subjects directory')
volume = traits.Enum(
"T1",
"aparc+aseg",
"aseg",
"brain",
"orig",
"brainmask",
"ribbon",
argstr="--volume %s",
'T1',
'aparc+aseg',
'aseg',
'brain',
'orig',
'brainmask',
'ribbon',
argstr='--volume %s',
usedefault=True,
desc='The volume from the "mri" directory to use (defaults to T1)',
)
desc='The volume from the "mri" directory to use (defaults to T1)')
overwrite = traits.Bool(
True,
usedefault=True,
argstr="--overwrite",
desc="Overwrites the existing files",
)
argstr='--overwrite',
desc='Overwrites the existing files')
atlas_mode = traits.Bool(
argstr="--atlas",
desc="Use atlas mode for registration (default: no rigid alignment)",
)
argstr='--atlas',
desc='Use atlas mode for registration (default: no rigid alignment)')


class WatershedBEMOutputSpec(TraitedSpec):
mesh_files = OutputMultiPath(
File(exists=True),
desc=(
"Paths to the output meshes (brain, inner "
"skull, outer skull, outer skin)"
),
)
desc=('Paths to the output meshes (brain, inner '
'skull, outer skull, outer skin)'))
brain_surface = File(
exists=True, loc="bem/watershed", desc="Brain surface (in Freesurfer format)"
)
exists=True,
loc='bem/watershed',
desc='Brain surface (in Freesurfer format)')
inner_skull_surface = File(
exists=True,
loc="bem/watershed",
desc="Inner skull surface (in Freesurfer format)",
)
loc='bem/watershed',
desc='Inner skull surface (in Freesurfer format)')
outer_skull_surface = File(
exists=True,
loc="bem/watershed",
desc="Outer skull surface (in Freesurfer format)",
)
loc='bem/watershed',
desc='Outer skull surface (in Freesurfer format)')
outer_skin_surface = File(
exists=True,
loc="bem/watershed",
desc="Outer skin surface (in Freesurfer format)",
)
loc='bem/watershed',
desc='Outer skin surface (in Freesurfer format)')
fif_file = File(
exists=True,
loc="bem",
altkey="fif",
desc='"fif" format file for EEG processing in MNE',
)
loc='bem',
altkey='fif',
desc='"fif" format file for EEG processing in MNE')
cor_files = OutputMultiPath(
File(exists=True),
loc="bem/watershed/ws",
altkey="COR",
desc='"COR" format files',
)
loc='bem/watershed/ws',
altkey='COR',
desc='"COR" format files')


class WatershedBEM(FSCommand):
Expand All @@ -100,23 +89,23 @@ class WatershedBEM(FSCommand):
>>> bem.inputs.subject_id = 'subj1'
>>> bem.inputs.subjects_dir = '.'
>>> bem.cmdline
'mne watershed_bem --overwrite --subject subj1 --volume T1'
'mne_watershed_bem --overwrite --subject subj1 --volume T1'
>>> bem.run() # doctest: +SKIP

"""

_cmd = "mne watershed_bem"
_cmd = 'mne_watershed_bem'
input_spec = WatershedBEMInputSpec
output_spec = WatershedBEMOutputSpec
_additional_metadata = ["loc", "altkey"]
_additional_metadata = ['loc', 'altkey']

def _get_files(self, path, key, dirval, altkey=None):
globsuffix = "*"
globprefix = "*"
globsuffix = '*'
globprefix = '*'
keydir = op.join(path, dirval)
if altkey:
key = altkey
globpattern = op.join(keydir, "".join((globprefix, key, globsuffix)))
globpattern = op.join(keydir, ''.join((globprefix, key, globsuffix)))
return glob.glob(globpattern)

def _list_outputs(self):
Expand All @@ -126,13 +115,10 @@ def _list_outputs(self):
output_traits = self._outputs()
mesh_paths = []
for k in list(outputs.keys()):
if k != "mesh_files":
val = self._get_files(
subject_path,
k,
output_traits.traits()[k].loc,
output_traits.traits()[k].altkey,
)
if k != 'mesh_files':
val = self._get_files(subject_path, k,
output_traits.traits()[k].loc,
output_traits.traits()[k].altkey)
if val:
value_list = simplify_list(val)
if isinstance(value_list, list):
Expand All @@ -144,7 +130,7 @@ def _list_outputs(self):
else:
raise TypeError
outputs[k] = out_files
if not k.rfind("surface") == -1:
if not k.rfind('surface') == -1:
mesh_paths.append(out_files)
outputs["mesh_files"] = mesh_paths
outputs['mesh_files'] = mesh_paths
return outputs