13
13
from __future__ import print_function , division , unicode_literals , absolute_import
14
14
15
15
import os
16
- #import itertools
17
16
18
17
from ... import logging
19
18
from ..base import (TraitedSpec , File , traits ,
20
19
InputMultiPath , OutputMultiPath , isdefined )
21
- from .base import FSCommand , FSTraitedSpec
20
+ from .base import (FSCommand , FSTraitedSpec , FSCommandOpenMP ,
21
+ FSTraitedSpecOpenMP )
22
22
23
23
__docformat__ = 'restructuredtext'
24
24
iflogger = logging .getLogger ('interface' )
25
25
26
26
27
- class RobustTemplateInputSpec (FSTraitedSpec ):
27
+ class RobustTemplateInputSpec (FSTraitedSpecOpenMP ):
28
28
# 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' )
31
33
out_file = File ('mri_robust_template_out.mgz' , mandatory = True ,
32
34
usedefault = True , argstr = '--template %s' ,
33
35
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.' )
39
44
# 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
+
65
76
66
77
class RobustTemplateOutputSpec (TraitedSpec ):
67
78
out_file = File (
@@ -72,7 +83,7 @@ class RobustTemplateOutputSpec(TraitedSpec):
72
83
File (exists = True ), desc = "output final intensity scales" )
73
84
74
85
75
- class RobustTemplate (FSCommand ):
86
+ class RobustTemplate (FSCommandOpenMP ):
76
87
""" construct an unbiased robust template for longitudinal volumes
77
88
78
89
Examples
@@ -92,8 +103,10 @@ class RobustTemplate(FSCommand):
92
103
>>> template.cmdline #doctest: +NORMALIZE_WHITESPACE +ALLOW_UNICODE
93
104
'mri_robust_template --satit --average 0 --fixtp --mov structural.nii functional.nii --inittp 1 --noit --template T1.nii --subsample 200'
94
105
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']
97
110
>>> template.cmdline #doctest: +NORMALIZE_WHITESPACE +ALLOW_UNICODE
98
111
'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'
99
112
@@ -151,9 +164,11 @@ class FuseSegmentationsInputSpec(FSTraitedSpec):
151
164
must include the corresponding norm file for all given timepoints \
152
165
as well as for the current subject" )
153
166
167
+
154
168
class FuseSegmentationsOutputSpec (TraitedSpec ):
155
169
out_file = File (exists = False , desc = "output fused segmentation file" )
156
170
171
+
157
172
class FuseSegmentations (FSCommand ):
158
173
159
174
""" fuse segmentations together from multiple timepoints
0 commit comments