1313from __future__ import print_function , division , unicode_literals , absolute_import
1414
1515import os
16- #import itertools
1716
1817from ... import logging
1918from ..base import (TraitedSpec , File , traits ,
2019 InputMultiPath , OutputMultiPath , isdefined )
21- from .base import FSCommand , FSTraitedSpec
20+ from .base import (FSCommand , FSTraitedSpec , FSCommandOpenMP ,
21+ FSTraitedSpecOpenMP )
2222
2323__docformat__ = 'restructuredtext'
2424iflogger = logging .getLogger ('interface' )
2525
2626
27- class RobustTemplateInputSpec (FSTraitedSpec ):
27+ class RobustTemplateInputSpec (FSTraitedSpecOpenMP ):
2828 # required
29- in_files = InputMultiPath (File (exists = True ), mandatory = True , argstr = '--mov %s' ,
30- desc = 'input movable volumes to be aligned to common mean/median template' )
29+ in_files = InputMultiPath (
30+ File (exists = True ), mandatory = True , argstr = '--mov %s' ,
31+ desc = 'input movable volumes to be aligned to common mean/median '
32+ 'template' )
3133 out_file = File ('mri_robust_template_out.mgz' , mandatory = True ,
3234 usedefault = True , argstr = '--template %s' ,
3335 desc = 'output template volume (final mean/median image)' )
34- auto_detect_sensitivity = traits .Bool (argstr = '--satit' , xor = ['outlier_sensitivity' ], mandatory = True ,
35- desc = 'auto-detect good sensitivity (recommended for head or full brain scans)' )
36- outlier_sensitivity = traits .Float (argstr = '--sat %.4f' , xor = ['auto_detect_sensitivity' ], mandatory = True ,
37- desc = 'set outlier sensitivity manually (e.g. "--sat 4.685" ). Higher values mean ' +
38- 'less sensitivity.' )
36+ auto_detect_sensitivity = traits .Bool (
37+ argstr = '--satit' , xor = ['outlier_sensitivity' ], mandatory = True ,
38+ desc = 'auto-detect good sensitivity (recommended for head or full '
39+ 'brain scans)' )
40+ outlier_sensitivity = traits .Float (
41+ argstr = '--sat %.4f' , xor = ['auto_detect_sensitivity' ], mandatory = True ,
42+ desc = 'set outlier sensitivity manually (e.g. "--sat 4.685" ). Higher '
43+ 'values mean less sensitivity.' )
3944 # optional
40- transform_outputs = InputMultiPath (File (exists = False ),
41- argstr = '--lta %s' ,
42- desc = 'output xforms to template (for each input)' )
43- intensity_scaling = traits .Bool (default_value = False ,
44- argstr = '--iscale' ,
45- desc = 'allow also intensity scaling (default off)' )
46- scaled_intensity_outputs = InputMultiPath (File (exists = False ),
47- argstr = '--iscaleout %s' ,
48- desc = 'final intensity scales (will activate --iscale)' )
49- subsample_threshold = traits .Int (argstr = '--subsample %d' ,
50- desc = 'subsample if dim > # on all axes (default no subs.)' )
51- average_metric = traits .Enum ('median' , 'mean' , argstr = '--average %d' ,
52- desc = 'construct template from: 0 Mean, 1 Median (default)' )
53- initial_timepoint = traits .Int (argstr = '--inittp %d' ,
54- desc = 'use TP# for spacial init (default random), 0: no init' )
55- fixed_timepoint = traits .Bool (default_value = False , argstr = '--fixtp' ,
56- desc = 'map everthing to init TP# (init TP is not resampled)' )
57- no_iteration = traits .Bool (default_value = False , argstr = '--noit' ,
58- desc = 'do not iterate, just create first template' )
59- initial_transforms = InputMultiPath (File (exists = True ),
60- argstr = '--ixforms %s' ,
61- desc = 'use initial transforms (lta) on source' )
62- in_intensity_scales = InputMultiPath (File (exists = True ),
63- argstr = '--iscalein %s' ,
64- desc = 'use initial intensity scales' )
45+ transform_outputs = InputMultiPath (
46+ File (exists = False ), argstr = '--lta %s' ,
47+ desc = 'output xforms to template (for each input)' )
48+ intensity_scaling = traits .Bool (
49+ default_value = False , argstr = '--iscale' ,
50+ desc = 'allow also intensity scaling (default off)' )
51+ scaled_intensity_outputs = InputMultiPath (
52+ File (exists = False ), argstr = '--iscaleout %s' ,
53+ desc = 'final intensity scales (will activate --iscale)' )
54+ subsample_threshold = traits .Int (
55+ argstr = '--subsample %d' ,
56+ desc = 'subsample if dim > # on all axes (default no subs.)' )
57+ average_metric = traits .Enum (
58+ 'median' , 'mean' , argstr = '--average %d' ,
59+ desc = 'construct template from: 0 Mean, 1 Median (default)' )
60+ initial_timepoint = traits .Int (
61+ argstr = '--inittp %d' ,
62+ desc = 'use TP# for spacial init (default random), 0: no init' )
63+ fixed_timepoint = traits .Bool (
64+ default_value = False , argstr = '--fixtp' ,
65+ desc = 'map everthing to init TP# (init TP is not resampled)' )
66+ no_iteration = traits .Bool (
67+ default_value = False , argstr = '--noit' ,
68+ desc = 'do not iterate, just create first template' )
69+ initial_transforms = InputMultiPath (
70+ File (exists = True ), argstr = '--ixforms %s' ,
71+ desc = 'use initial transforms (lta) on source' )
72+ in_intensity_scales = InputMultiPath (
73+ File (exists = True ), argstr = '--iscalein %s' ,
74+ desc = 'use initial intensity scales' )
75+
6576
6677class RobustTemplateOutputSpec (TraitedSpec ):
6778 out_file = File (
@@ -72,7 +83,7 @@ class RobustTemplateOutputSpec(TraitedSpec):
7283 File (exists = True ), desc = "output final intensity scales" )
7384
7485
75- class RobustTemplate (FSCommand ):
86+ class RobustTemplate (FSCommandOpenMP ):
7687 """ construct an unbiased robust template for longitudinal volumes
7788
7889 Examples
@@ -92,8 +103,10 @@ class RobustTemplate(FSCommand):
92103 >>> template.cmdline #doctest: +NORMALIZE_WHITESPACE +ALLOW_UNICODE
93104 'mri_robust_template --satit --average 0 --fixtp --mov structural.nii functional.nii --inittp 1 --noit --template T1.nii --subsample 200'
94105
95- >>> template.inputs.transform_outputs = ['structural.lta', 'functional.lta']
96- >>> template.inputs.scaled_intensity_outputs = ['structural-iscale.txt', 'functional-iscale.txt']
106+ >>> template.inputs.transform_outputs = ['structural.lta',
107+ ... 'functional.lta']
108+ >>> template.inputs.scaled_intensity_outputs = ['structural-iscale.txt',
109+ ... 'functional-iscale.txt']
97110 >>> template.cmdline #doctest: +NORMALIZE_WHITESPACE +ALLOW_UNICODE
98111 'mri_robust_template --satit --average 0 --fixtp --mov structural.nii functional.nii --inittp 1 --noit --template T1.nii --iscaleout structural-iscale.txt functional-iscale.txt --subsample 200 --lta structural.lta functional.lta'
99112
@@ -151,9 +164,11 @@ class FuseSegmentationsInputSpec(FSTraitedSpec):
151164 must include the corresponding norm file for all given timepoints \
152165 as well as for the current subject" )
153166
167+
154168class FuseSegmentationsOutputSpec (TraitedSpec ):
155169 out_file = File (exists = False , desc = "output fused segmentation file" )
156170
171+
157172class FuseSegmentations (FSCommand ):
158173
159174 """ fuse segmentations together from multiple timepoints
0 commit comments