17
17
... fieldmap_image="fieldmap.nii",
18
18
... )
19
19
>>> task.cmdline # doctest: +ELLIPSIS
20
- 'eddy --imain input.nii --mask brain.nii --acqp params.txt --index index.txt \
21
- --bvecs input.bvec --bvals input.bval --field fieldmap.nii --out eddy ...'
20
+ 'eddy --imain= input.nii --mask= brain.nii --acqp= params.txt --index= index.txt \
21
+ --bvecs= input.bvec --bvals= input.bval --field= fieldmap.nii --out= eddy ...'
22
22
"""
23
23
24
24
__all__ = ["Eddy" ]
@@ -37,41 +37,59 @@ class EddySpec(ShellSpec):
37
37
38
38
# Parameters that specify input files.
39
39
input_image : PathLike = field (
40
- metadata = {"help_string" : "input image as a 4D volume" , "mandatory" : True , "argstr" : "--imain" }
40
+ metadata = {
41
+ "help_string" : "input image as a 4D volume" ,
42
+ "mandatory" : True ,
43
+ "argstr" : "--imain={input_image}" ,
44
+ }
41
45
)
42
46
43
47
brain_mask : PathLike = field (
44
- metadata = {"help_string" : "brain mask as a single volume image" , "mandatory" : True , "argstr" : "--mask" }
48
+ metadata = {
49
+ "help_string" : "brain mask as a single volume image" ,
50
+ "mandatory" : True ,
51
+ "argstr" : "--mask={brain_mask}" ,
52
+ }
45
53
)
46
54
47
55
encoding_file : PathLike = field (
48
56
metadata = {
49
57
"help_string" : "acquisition parameters for the diffusion protocol" ,
50
58
"mandatory" : True ,
51
- "argstr" : "--acqp" ,
59
+ "argstr" : "--acqp={encoding_file} " ,
52
60
}
53
61
)
54
62
55
63
index_file : PathLike = field (
56
64
metadata = {
57
65
"help_string" : "mapping from volume index to encoding parameters" ,
58
66
"mandatory" : True ,
59
- "argstr" : "--index" ,
67
+ "argstr" : "--index={index_file} " ,
60
68
}
61
69
)
62
70
63
71
bvec_file : PathLike = field (
64
- metadata = {"help_string" : "diffusion directions" , "mandatory" : True , "argstr" : "--bvecs" }
72
+ metadata = {
73
+ "help_string" : "diffusion directions" ,
74
+ "mandatory" : True ,
75
+ "argstr" : "--bvecs={bvec_file}" ,
76
+ }
65
77
)
66
78
67
- bval_file : PathLike = field (metadata = {"help_string" : "diffusion weighting" , "mandatory" : True , "argstr" : "--bvals" })
79
+ bval_file : PathLike = field (
80
+ metadata = {
81
+ "help_string" : "diffusion weighting" ,
82
+ "mandatory" : True ,
83
+ "argstr" : "--bvals={bval_file}" ,
84
+ }
85
+ )
68
86
69
- fieldmap_image : PathLike = field (metadata = {"help_string" : "fieldmap image" , "argstr" : "--field" })
87
+ fieldmap_image : PathLike = field (metadata = {"help_string" : "fieldmap image" , "argstr" : "--field={fieldmap_image} " })
70
88
71
89
fieldmap_matrix : PathLike = field (
72
90
metadata = {
73
91
"help_string" : "rigid-body transformation matrix from fieldmap to first input volume" ,
74
- "argstr" : "--field_mat" ,
92
+ "argstr" : "--field_mat={fieldmap_matrix} " ,
75
93
"requires" : {"fieldmap_image" },
76
94
}
77
95
)
@@ -82,15 +100,19 @@ class EddySpec(ShellSpec):
82
100
83
101
# Parameters specifying names of output-files.
84
102
output_basename : str = field (
85
- default = "eddy" , metadata = {"help_string" : "basename for output files" , "argstr" : "--out" }
103
+ default = "eddy" ,
104
+ metadata = {
105
+ "help_string" : "basename for output files" ,
106
+ "argstr" : "--out={output_basename}" ,
107
+ },
86
108
)
87
109
88
110
# Parameters specifying how eddy should be run.
89
111
first_level_model : str = field (
90
112
default = "quadratic" ,
91
113
metadata = {
92
114
"help_string" : "model for the magnetic field generated by Eddy currents" ,
93
- "argstr" : "--flm" ,
115
+ "argstr" : "--flm={first_level_model} " ,
94
116
"allowed_values" : {"movement" , "linear" , "quadratic" , "cubic" },
95
117
},
96
118
)
@@ -99,7 +121,7 @@ class EddySpec(ShellSpec):
99
121
default = "none" ,
100
122
metadata = {
101
123
"help_string" : "model for how diffusion gradients generate Eddy currents" ,
102
- "argstr" : "--slm" ,
124
+ "argstr" : "--slm={second_level_model} " ,
103
125
"allowed_values" : {"none" , "linear" , "quadratic" },
104
126
},
105
127
)
@@ -108,12 +130,16 @@ class EddySpec(ShellSpec):
108
130
default = 0 ,
109
131
metadata = {
110
132
"help_string" : "filter width used for pre-conditioning data prior to estimating distortions" ,
111
- "argstr" : "--fwhm" ,
133
+ "argstr" : "--fwhm={fwhm} " ,
112
134
},
113
135
)
114
136
115
137
num_iterations : int = field (
116
- default = 5 , metadata = {"help_string" : "number of iterations for eddy" , "argstr" : "--niter" }
138
+ default = 5 ,
139
+ metadata = {
140
+ "help_string" : "number of iterations for eddy" ,
141
+ "argstr" : "--niter={num_iterations}" ,
142
+ },
117
143
)
118
144
119
145
fill_empty_planes : bool = field (metadata = {"help_string" : "detect and fill empty planes" , "argstr" : "--fep" })
@@ -122,23 +148,34 @@ class EddySpec(ShellSpec):
122
148
default = "spline" ,
123
149
metadata = {
124
150
"help_string" : "interpolation method for the estimation phase" ,
125
- "argstr" : "--interp" ,
151
+ "argstr" : "--interp={interpolation} " ,
126
152
"allowed_values" : {"spline" , "trilinear" },
127
153
},
128
154
)
129
155
130
156
resampling : str = field (
131
157
default = "jac" ,
132
- metadata = {"help_string" : "final resampling strategy" , "argstr" : "--resamp" , "allowed_values" : {"jac" , "lsr" }},
158
+ metadata = {
159
+ "help_string" : "final resampling strategy" ,
160
+ "argstr" : "--resamp={resampling}" ,
161
+ "allowed_values" : {"jac" , "lsr" },
162
+ },
133
163
)
134
164
135
165
num_voxels : int = field (
136
166
default = 1000 ,
137
- metadata = {"help_string" : "number of voxels to use for GP hyperparameter estimation" , "argstr" : "--nvoxhp" },
167
+ metadata = {
168
+ "help_string" : "number of voxels to use for GP hyperparameter estimation" ,
169
+ "argstr" : "--nvoxhp={num_voxels}" ,
170
+ },
138
171
)
139
172
140
173
fudge_factor : int = field (
141
- default = 10 , metadata = {"help_string" : "fudge factor for Q-space smoothing during estimation" , "argstr" : "--ff" }
174
+ default = 10 ,
175
+ metadata = {
176
+ "help_string" : "fudge factor for Q-space smoothing during estimation" ,
177
+ "argstr" : "--ff={fudge_factor}" ,
178
+ },
142
179
)
143
180
144
181
# Parameters for outlier replacement (ol)
@@ -147,67 +184,81 @@ class EddySpec(ShellSpec):
147
184
outlier_num_stdevs : int = field (
148
185
metadata = {
149
186
"help_string" : "number of times off the standard deviation to qualify as outlier" ,
150
- "argstr" : "--ol_nstd" ,
187
+ "argstr" : "--ol_nstd={outlier_num_stdevs} " ,
151
188
"requires" : {"replace_outliers" },
152
189
}
153
190
)
154
191
155
192
outlier_num_voxels : int = field (
156
193
metadata = {
157
194
"help_string" : "minimum number of voxels in a slice to qualify for outlier detection" ,
158
- "argstr" : "--ol_nvox" ,
195
+ "argstr" : "--ol_nvox={outlier_num_voxels} " ,
159
196
"requires" : {"replace_outliers" },
160
197
}
161
198
)
162
199
163
200
outlier_type : str = field (
164
201
metadata = {
165
202
"help_string" : "type of outliers detected" ,
166
- "argstr" : "--ol_type" ,
203
+ "argstr" : "--ol_type={outlier_type} " ,
167
204
"allowed_values" : {"both" , "gw" , "sw" },
168
205
"requires" : {"replace_outliers" },
169
206
}
170
207
)
171
208
172
- multiband_factor : int = field (metadata = {"help_string" : "multiband factor" , "argstr" : "--mb" })
209
+ multiband_factor : int = field (metadata = {"help_string" : "multiband factor" , "argstr" : "--mb={multiband_factor} " })
173
210
174
211
multiband_offset : int = field (
175
- metadata = {"help_string" : "multiband slice offset" , "argstr" : "--mb_offs" , "requires" : {"multiband_factor" }}
212
+ metadata = {
213
+ "help_string" : "multiband slice offset" ,
214
+ "argstr" : "--mb_offs={multiband_offset}" ,
215
+ "requires" : {"multiband_factor" },
216
+ }
176
217
)
177
218
178
219
# Parameters for intra-volume movement correction (s2v)
179
220
movement_prediction_order : int = field (
180
- default = 0 , metadata = {"help_string" : "order of movement prediction model" , "argstr" : "--mporder" }
221
+ default = 0 ,
222
+ metadata = {
223
+ "help_string" : "order of movement prediction model" ,
224
+ "argstr" : "--mporder={movement_prediction_order}" ,
225
+ },
181
226
)
182
227
183
228
s2v_num_iterations : int = field (
184
- metadata = {"help_string" : "number of iterations for s2v movement estimation" , "argstr" : "--s2v_niter" }
229
+ metadata = {
230
+ "help_string" : "number of iterations for s2v movement estimation" ,
231
+ "argstr" : "--s2v_niter={s2v_num_iterations}" ,
232
+ }
185
233
)
186
234
187
235
s2v_lambda : float = field (
188
- metadata = {"help_string" : "weighting of regularization for s2v movement estimation" , "argstr" : "--s2v_lambda" }
236
+ metadata = {
237
+ "help_string" : "weighting of regularization for s2v movement estimation" ,
238
+ "argstr" : "--s2v_lambda={s2v_lambda}" ,
239
+ }
189
240
)
190
241
191
242
s2v_interpolation : str = field (
192
243
metadata = {
193
244
"help_string" : "interpolation method for s2v movement estimation." ,
194
- "argstr" : "--s2v_interp" ,
245
+ "argstr" : "--s2v_interp={s2v_interpolation} " ,
195
246
"allowed_values" : {"spline" , "trilinear" },
196
247
}
197
248
)
198
249
199
250
slice_grouping_file : PathLike = field (
200
251
metadata = {
201
252
"help_string" : "file containing slice grouping information" ,
202
- "argstr" : "--slspec" ,
253
+ "argstr" : "--slspec={slice_grouping_file} " ,
203
254
"xor" : {"slice_timing_file" },
204
255
}
205
256
)
206
257
207
258
slice_timing_file : PathLike = field (
208
259
metadata = {
209
260
"help_string" : "file containing slice timing information" ,
210
- "argstr" : "--json" ,
261
+ "argstr" : "--json={slice_timing_file} " ,
211
262
"xor" : {"slice_grouping_file" },
212
263
}
213
264
)
@@ -223,23 +274,23 @@ class EddySpec(ShellSpec):
223
274
mbs_num_iterations : int = field (
224
275
metadata = {
225
276
"help_string" : "number of iterations for MBS field estimation" ,
226
- "argstr" : "--mbs_niter" ,
277
+ "argstr" : "--mbs_niter={mbs_num_iterations} " ,
227
278
"requires" : {"estimate_move_by_susceptibility" },
228
279
}
229
280
)
230
281
231
282
mbs_lambda : int = field (
232
283
metadata = {
233
284
"help_string" : "weighting of regularization for MBS field estimation" ,
234
- "argstr" : "--mbs_lambda" ,
285
+ "argstr" : "--mbs_lambda={mbs_lambda} " ,
235
286
"requires" : {"estimate_move_by_susceptibility" },
236
287
}
237
288
)
238
289
239
290
mbs_knot_spacing : int = field (
240
291
metadata = {
241
292
"help_string" : "knot-spacing for MBS field estimation" ,
242
- "argstr" : "--mbs_ksp" ,
293
+ "argstr" : "--mbs_ksp={mbs_knot_spacing} " ,
243
294
"requires" : {"estimate_move_by_susceptibility" },
244
295
}
245
296
)
@@ -249,7 +300,9 @@ class EddySpec(ShellSpec):
249
300
metadata = {"help_string" : "bypass checks for data shelling" , "argstr" : "--data_is_shelled" }
250
301
)
251
302
252
- random_seed : int = field (metadata = {"help_string" : "random seed for voxel selection" , "argstr" : "--initrand" })
303
+ random_seed : int = field (
304
+ metadata = {"help_string" : "random seed for voxel selection" , "argstr" : "--initrand={random_seed}" }
305
+ )
253
306
254
307
save_cnr_maps : bool = field (metadata = {"help_string" : "save shell-wise CNR maps" , "argstr" : "--cnr_maps" })
255
308
0 commit comments