Skip to content

Commit b824128

Browse files
committed
Add ExpertOptions interface to freesurfer.utils
1 parent a905434 commit b824128

File tree

2 files changed

+113
-2
lines changed

2 files changed

+113
-2
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT
2+
from __future__ import unicode_literals
3+
from ..utils import ExpertOptions
4+
5+
6+
def test_ExpertOptions_inputs():
7+
input_map = dict(mri_aparc2aseg=dict(),
8+
mri_ca_label=dict(),
9+
mri_ca_normalize=dict(),
10+
mri_ca_register=dict(),
11+
mri_edit_wm_with_aseg=dict(),
12+
mri_em_register=dict(),
13+
mri_fill=dict(),
14+
mri_mask=dict(),
15+
mri_normalize=dict(),
16+
mri_pretess=dict(),
17+
mri_remove_neck=dict(),
18+
mri_segment=dict(),
19+
mri_segstats=dict(),
20+
mri_tessellate=dict(),
21+
mri_watershed=dict(),
22+
mris_anatomical_stats=dict(),
23+
mris_ca_label=dict(),
24+
mris_fix_topology=dict(),
25+
mris_inflate=dict(),
26+
mris_make_surfaces=dict(),
27+
mris_register=dict(),
28+
mris_smooth=dict(),
29+
mris_sphere=dict(),
30+
mris_surf2vol=dict(),
31+
mrisp_paint=dict(),
32+
out_file=dict(usedefault=True,
33+
),
34+
talairach=dict(),
35+
)
36+
inputs = ExpertOptions.input_spec()
37+
38+
for key, metadata in list(input_map.items()):
39+
for metakey, value in list(metadata.items()):
40+
assert getattr(inputs.traits()[key], metakey) == value
41+
42+
43+
def test_ExpertOptions_outputs():
44+
output_map = dict(out_file=dict(),
45+
)
46+
outputs = ExpertOptions.output_spec()
47+
48+
for key, metadata in list(output_map.items()):
49+
for metakey, value in list(metadata.items()):
50+
assert getattr(outputs.traits()[key], metakey) == value

nipype/interfaces/freesurfer/utils.py

Lines changed: 63 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
import shutil
1919

2020
from ...utils.filemanip import fname_presuffix, split_filename
21-
from ..base import (TraitedSpec, File, traits, OutputMultiPath, isdefined,
22-
CommandLine, CommandLineInputSpec)
21+
from ..base import (TraitedSpec, BaseInterface, File, traits, OutputMultiPath,
22+
isdefined, CommandLine, CommandLineInputSpec)
2323
from .base import (FSCommand, FSTraitedSpec,
2424
FSScriptCommand, FSScriptOutputSpec,
2525
FSTraitedSpecOpenMP, FSCommandOpenMP)
@@ -2879,3 +2879,64 @@ def _list_outputs(self):
28792879
outputs = self._outputs().get()
28802880
outputs["out_file"] = os.path.abspath(self.inputs.out_file)
28812881
return outputs
2882+
2883+
2884+
class ExpertOptionsInputSpec(TraitedSpec):
2885+
talairach = traits.String(desc="Flags to pass to talairach commands")
2886+
mri_normalize = traits.String(desc="Flags to pass to mri_normalize commands")
2887+
mri_watershed = traits.String(desc="Flags to pass to mri_watershed commands")
2888+
mri_em_register = traits.String(desc="Flags to pass to mri_em_register commands")
2889+
mri_ca_normalize = traits.String(desc="Flags to pass to mri_ca_normalize commands")
2890+
mri_ca_register = traits.String(desc="Flags to pass to mri_ca_register commands")
2891+
mri_remove_neck = traits.String(desc="Flags to pass to mri_remove_neck commands")
2892+
mri_ca_label = traits.String(desc="Flags to pass to mri_ca_label commands")
2893+
mri_segstats = traits.String(desc="Flags to pass to mri_segstats commands")
2894+
mri_mask = traits.String(desc="Flags to pass to mri_mask commands")
2895+
mri_segment = traits.String(desc="Flags to pass to mri_segment commands")
2896+
mri_edit_wm_with_aseg = traits.String(desc="Flags to pass to mri_edit_wm_with_aseg commands")
2897+
mri_pretess = traits.String(desc="Flags to pass to mri_pretess commands")
2898+
mri_fill = traits.String(desc="Flags to pass to mri_fill commands")
2899+
mri_tessellate = traits.String(desc="Flags to pass to mri_tessellate commands")
2900+
mris_smooth = traits.String(desc="Flags to pass to mri_smooth commands")
2901+
mris_inflate = traits.String(desc="Flags to pass to mri_inflate commands")
2902+
mris_sphere = traits.String(desc="Flags to pass to mris_sphere commands")
2903+
mris_fix_topology = traits.String(desc="Flags to pass to mris_fix_topology commands")
2904+
mris_make_surfaces = traits.String(desc="Flags to pass to mris_make_surfaces commands")
2905+
mris_surf2vol = traits.String(desc="Flags to pass to mris_surf2vol commands")
2906+
mris_register = traits.String(desc="Flags to pass to mris_register commands")
2907+
mrisp_paint = traits.String(desc="Flags to pass to mrisp_paint commands")
2908+
mris_ca_label = traits.String(desc="Flags to pass to mris_ca_label commands")
2909+
mris_anatomical_stats = traits.String(desc="Flags to pass to mris_anatomical_stats commands")
2910+
mri_aparc2aseg = traits.String(desc="Flags to pass to mri_aparc2aseg commands")
2911+
out_file = File("expert.opts", usedefault=True, desc="Output expert options file")
2912+
2913+
2914+
class ExpertOptionsOutputSpec(TraitedSpec):
2915+
out_file = File(exists=False, desc="Output expert options file")
2916+
2917+
2918+
class ExpertOptions(BaseInterface):
2919+
"""
2920+
Creates expert options file
2921+
https://surfer.nmr.mgh.harvard.edu/fswiki/recon-all#ExpertOptionsFile
2922+
"""
2923+
input_spec = ExpertOptionsInputSpec
2924+
output_spec = ExpertOptionsOutputSpec
2925+
2926+
def _list_outputs(self):
2927+
outputs = self._outputs().get()
2928+
outputs["out_file"] = os.path.abspath(self.inputs.out_file)
2929+
return outputs
2930+
2931+
def _run_interface(self, runtime):
2932+
out_file = self.inputs.out_file
2933+
2934+
lines = []
2935+
for binary, args in self.inputs.get().items():
2936+
if binary == 'out_file' or not isdefined(args):
2937+
continue
2938+
lines.append('{} {}\n'.format(binary, args))
2939+
2940+
with open(out_file, 'w') as fobj:
2941+
fobj.write(''.join(lines))
2942+
return runtime

0 commit comments

Comments
 (0)