-
Notifications
You must be signed in to change notification settings - Fork 5
/
cat_conf_output.m
491 lines (441 loc) · 24.5 KB
/
cat_conf_output.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
function [output,output_spm] = cat_conf_output(expert)
%function [output,output_spm] = cat_conf_output(expert)
% writing options for data
% ______________________________________________________________________
%
% Christian Gaser, Robert Dahnke
% Structural Brain Mapping Group (https://neuro-jena.github.io)
% Departments of Neurology and Psychiatry
% Jena University Hospital
% ______________________________________________________________________
% $Id$
%
%#ok<*AGROW>
if ~exist('expert','var')
try
expert = cat_get_defaults('extopts.expertgui');
catch %#ok<CTCH>
expert = 0;
end
end
%------------------------------------------------------------------------
% get default BIDS folder
try
bids_folder = cat_get_defaults('extopts.bids_folder');
catch
bids_folder = fullfile('..','derivatives',cat_version);
end
BIDSfolder = cfg_entry;
BIDSfolder.tag = 'BIDSfolder';
BIDSfolder.name = 'Relative BIDS folder';
BIDSfolder.strtype = 's';
BIDSfolder.num = [1 Inf];
BIDSfolder.val = {bids_folder};
BIDSfolder.help = {'This is the BIDS path relative to the participant level directory (i.e. sub-*). Please note that only relative, but no absolute paths can be defined here.'};
BIDSfolder2 = BIDSfolder;
BIDSfolder2.name = 'Relative folder';
BIDSyes2 = cfg_branch;
BIDSyes2.tag = 'BIDSyes2';
BIDSyes2.name = 'Yes (relative folder)';
BIDSyes2.val = {BIDSfolder2};
BIDSyes2.help = {'Use relative directory structure for storing data although if it is not BIDS conform. This alternative definion based on the depth of the file, controlled here by the repetition of "../" is keeping subdirectories to be more robust in case of a regular but non-BIDS structure without default directory naming "sub-##/ses-##/anat" and similar filenames, e.g. for "../../derivatives/CAT##.#_#" and the following files:';
' ../group-01/sub-01/t1w.nii';
' ../group-01/sub-02/t1w.nii';
'it results in:';
' ../derivatives/CAT##.#_#/group-01/sub-01/t1w.nii';
' ../derivatives/CAT##.#_#/group-01/sub-02/t1w.nii';
'rather than:';
' ../derivatives/CAT##.#_#/t1w.nii';
' ../derivatives/CAT##.#_#/t1w.nii';
'where the relative BIDS folder would also cause conflicts by overwriting results.';
'';
};
BIDSyes = cfg_branch;
BIDSyes.tag = 'BIDSyes';
BIDSyes.name = 'Yes';
BIDSyes.val = {BIDSfolder};
BIDSyes.help = {'Use BIDS directory structure for storing data'};
BIDSno = cfg_const;
BIDSno.tag = 'BIDSno';
BIDSno.name = 'No';
BIDSno.val = {1};
BIDSno.help = {'Use CAT12 default directories for storing data'};
BIDS = cfg_choice;
BIDS.tag = 'BIDS';
BIDS.name = 'Use BIDS directory structure?';
if expert
BIDS.values = {BIDSyes2 BIDSyes BIDSno};
else
BIDS.values = {BIDSyes BIDSno};
end
if cat_get_defaults('extopts.bids_yes')
BIDS.val = {BIDSyes};
else
BIDS.val = {BIDSno};
end
BIDS.help = {'Select prefered output structure to save data.'};
%------------------------------------------------------------------------
surface = cfg_menu;
surface.tag = 'surface';
surface.name = 'Surface and thickness estimation';
surface.labels = {'No','Yes'};
surface.values = {0 1};
surface.def = @(val)cat_get_defaults('output.surface', val{:});
surface.help = {
'Use projection-based thickness (PBT) (Dahnke et al. 2012) to estimate cortical thickness and to create the central cortical surface for left and right hemisphere. Surface reconstruction includes topology correction (Yotter et al. 2011), spherical inflation (Yotter et al.) and spherical registration. Additionally you can also estimate surface parameters such as gyrification, cortical complexity or sulcal depth that can be subsequently analyzed at each vertex of the surface. '
''
'Please note, that surface reconstruction and spherical registration additionally requires about 20-60 min of computation time.'
''
};
if expert == 2
surface.labels = {'No', 'lh + rh (T1w-based)', 'lh + rh + cb (T1w-based)',...
'lh + rh (AMAP-based)', 'lh + rh + cb (AMAP-based)',...
'Thickness estimation (for ROI analysis only)', 'Full'};
surface.values = {0 1 2 , 11 12, 9 22};
surface.help = [surface.help; {
'Cerebellar reconstruction is still in development and is strongly limited due to the high frequency of folding and image properties! '
''
'You can also estimate thickness for ROI analysis only. This takes much less time, but does not allow to take advantage of surface-based registration and smoothing and the extraction of additional surface parameters. Here, the analysis is limited to cortical thickness only in atlas-defined ROIs.'
}];
end
% write specific output surface maps
% 0 none: only surfaces (central,white,pial,sphere,sphere.reg)
% 1 default: + thickness
% 2 expert: + L4myelination, topology defects,
% 3 developer: + WM and CSF thickness, YppRMSEmap?
% 4 debug: + substeps in subdirs
surf_measures = cfg_menu;
surf_measures.tag = 'surf_measures';
surf_measures.name = 'Surface measures';
surf_measures.labels = {'Default','Expert'};
surf_measures.values = {1 2};
surf_measures.val = {1};
surf_measures.hidden = expert<2;
surf_measures.help = {
['Write additional surface measures that are currently under development. ' ...
'The defaults setting include only cortical thickness, whereas the expert level also ' ...
'writes a myelination map (normalized T1 intensity extracted at the layer 4 surface) and ' ...
'a map of topology defects coding the percentage size of the effect. '];
};
if expert == 2
surf_measures.labels = [ surf_measures.labels {'Developer','Debug'}];
surf_measures.values = [ surf_measures.values {3,4}];
surf_measures.val = {3};
surf_measures.help = [ surf_measures.help
{'The developer option further write the gyral and sulcal thickness. '}
];
end
%------------------------------------------------------------------------
native = cfg_menu;
native.tag = 'native';
native.name = 'Native space';
native.labels = {'No','Yes'};
native.values = {0 1};
native.help = {
'The native space option allows you to save a tissue class image (p*) that is in alignment with the original image.'
''
};
warped = cfg_menu;
warped.tag = 'warped';
warped.name = 'Normalized';
warped.labels = {'No','Yes'};
warped.values = {0 1};
warped.help = {'Write image in normalized space without any modulation.'
''
};
dartel = cfg_menu;
dartel.tag = 'dartel';
dartel.name = 'DARTEL export';
if expert
dartel.labels = {'No','Rigid (SPM12 default)','Affine','Both'};
dartel.values = {0 1 2 3};
else
dartel.labels = {'No','Rigid (SPM12 default)','Affine'};
dartel.values = {0 1 2};
end
dartel.help = {
'This option is to export data into a form that can be used with DARTEL. The SPM default is to only apply rigid body transformation. However, a more appropriate option is to apply affine transformation, because the additional scaling of the images requires less deformations to non-linearly register brains to the template.'
''
};
native.def = @(val)cat_get_defaults('output.bias.native', val{:});
warped.def = @(val)cat_get_defaults('output.bias.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.bias.dartel', val{:});
bias = cfg_branch;
bias.tag = 'bias';
bias.name = 'Bias, noise and global intensity corrected T1 image';
if expert
bias.val = {native warped dartel};
else
bias.val = {warped};
end
bias.help = {
'This is the option to save a bias, noise, and global intensity corrected version of the original T1 image. MR images are usually corrupted by a smooth, spatially varying artifact that modulates the intensity of the image (bias). These artifacts, although not usually a problem for visual inspection, can impede automated processing of the images. The bias corrected version should have more uniform intensities within the different types of tissues and can be saved in native space and/or normalised. Noise is corrected by an adaptive non-local mean (NLM) filter (Manjon 2008, Medical Image Analysis 12).'
''
};
bias_spm = bias;
bias_spm.val = {warped dartel};
native.def = @(val)cat_get_defaults('output.las.native', val{:});
warped.def = @(val)cat_get_defaults('output.las.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.las.dartel', val{:});
las = cfg_branch;
las.tag = 'las';
las.name = 'Bias, noise and local intensity corrected T1 image';
las.val = {native warped dartel};
las.hidden = expert<1;
las.help = {
'This is the option to save a bias, noise, and local intensity corrected version of the original T1 image. MR images are usually corrupted by a smooth, spatially varying artifact that modulates the intensity of the image (bias). These artifacts, although not usually a problem for visual inspection, can impede automated processing of the images. The bias corrected version should have more uniform intensities within the different types of tissues and can be saved in native space and/or normalised. Noise is corrected by an adaptive non-local mean (NLM) filter (Manjon 2008, Medical Image Analysis 12).'
''
};
%------------------------------------------------------------------------
jacobianwarped = warped;
jacobianwarped.tag = 'jacobianwarped';
jacobianwarped.name = 'Jacobian determinant';
jacobianwarped.def = @(val)cat_get_defaults('output.jacobian.warped', val{:});
jacobianwarped.help = {
'This is the option to save the Jacobian determinant, which expresses local volume changes. This image can be used in a pure deformation based morphometry (DBM) design. Please note that the affine part of the deformation field is ignored. Thus, there is no need for any additional correction for different brain sizes using ICV.'
''
};
%------------------------------------------------------------------------
native.def = @(val)cat_get_defaults('output.label.native', val{:});
warped.def = @(val)cat_get_defaults('output.label.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.label.dartel', val{:});
label = cfg_branch;
label.tag = 'label';
label.name = 'PVE label image';
label.val = {native warped dartel};
label.hidden = expert<1;
label.help = {
'This is the option to save a labeled version of your segmentations for fast visual comparision. Labels are saved as Partial Volume Estimation (PVE) values with different mix classes for GM-WM (2.5) and GM-CSF (1.5). BG=0, CSF=1, GM=2, WM=3, WMH=4 (if WMHC=3), SL=1.5 (if SLC)'
''
};
labelnative = native;
labelnative.tag = 'labelnative';
labelnative.name = 'PVE label image in native space';
labelnative.def = @(val)cat_get_defaults('output.label.native', val{:});
labelnative.hidden = expert>0;
labelnative.help = {
'This is the option to save a labeled version of your segmentations in native space for fast visual comparision and preprocessing quality control. Labels are saved as Partial Volume Estimation (PVE) values with different mix classes for GM-WM (2.5) and GM-CSF (1.5). BG=0, CSF=1, GM=2, WM=3, WMH=4 (if WMHC=3), SL=1.5 (if SLC)'
''
};
%------------------------------------------------------------------------
modulated = cfg_menu;
modulated.tag = 'mod';
modulated.name = 'Modulated normalized';
if expert
modulated.labels = {'No','Affine + non-linear (SPM12 default)','Non-linear only'};
modulated.values = {0 1 2};
else
modulated.labels = {'No','Yes'};
modulated.values = {0 1};
end
modulated.help = {
'"Modulation" is to compensate for the effect of spatial normalisation. Spatial normalisation causes volume changes due to affine transformation (global scaling) and non-linear warping (local volume change). After modulation the resulting modulated images are preserved for the total amount of grey matter signal in the normalised partitions. Thus, modulated images reflect the tissue volumes before spatial normalisation. However, the user is almost always interested in removing the confound of different brain sizes and there are many ways to apply this correction. In contrast to previous VBM versions I now recommend to use total intracranial volume (TIV) as nuisance parameter in an AnCova model. '
''
'Please note that I do not use the SPM modulation where the original voxels are projected into their new location in the warped images because this method introduces aliasing artifacts. Here, I use the scaling by the Jacobian determinants to generate "modulated" data. '
''
};
native.def = @(val)cat_get_defaults('output.GM.native', val{:});
warped.def = @(val)cat_get_defaults('output.GM.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.GM.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.GM.dartel', val{:});
grey = cfg_branch;
grey.tag = 'GM';
grey.name = 'Grey matter';
grey.help = {'Options to save grey matter images.'
''
};
grey_spm = grey;
if expert
grey.val = {native warped modulated dartel};
grey_spm.val = {warped modulated dartel};
else
grey.val = {native modulated dartel};
grey_spm.val = {modulated dartel};
end
native.def = @(val)cat_get_defaults('output.WM.native', val{:});
warped.def = @(val)cat_get_defaults('output.WM.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.WM.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.WM.dartel', val{:});
white = cfg_branch;
white.tag = 'WM';
white.name = 'White matter';
white.help = {'Options to save white matter images.'
''
};
white_spm = white;
if expert
white.val = {native warped modulated dartel};
white_spm.val = {warped modulated dartel};
else
white.val = {native modulated dartel};
white_spm.val = {modulated dartel};
end
native.def = @(val)cat_get_defaults('output.CSF.native', val{:});
warped.def = @(val)cat_get_defaults('output.CSF.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.CSF.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.CSF.dartel', val{:});
csf = cfg_branch;
csf.tag = 'CSF';
csf.name = 'Cerebro-Spinal Fluid (CSF)';
csf.help = {'Options to save CSF images.'
''
};
csf.hidden = expert<1;
csf_spm = csf;
csf.val = {native warped modulated dartel};
csf_spm.val = {warped modulated dartel};
% head/background tissue classes
native.def = @(val)cat_get_defaults('output.TPMC.native', val{:});
warped.def = @(val)cat_get_defaults('output.TPMC.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.TPMC.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.TPMC.dartel', val{:});
tpmc = cfg_branch;
tpmc.tag = 'TPMC';
tpmc.name = 'Tissue Probability Map Classes';
tpmc.hidden = expert<1;
tpmc.help = {'Option to save the SPM tissue class 4 to 6: p#*.img, wp#*.img and m[0]wp#*.img.'
''
};
tpmc.val = {native warped modulated dartel};
tpmc_spm = tpmc;
tpmc_spm.val = {warped modulated dartel};
% WMH
native.def = @(val)cat_get_defaults('output.WMH.native', val{:});
warped.def = @(val)cat_get_defaults('output.WMH.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.WMH.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.WMH.dartel', val{:});
wmh = cfg_branch;
wmh.tag = 'WMH';
wmh.name = 'White matter hyperintensities (WMHs)';
wmh.val = {native warped modulated dartel};
wmh.hidden = expert<1;
wmh.help = {'WARNING: Please note that the detection of WM hyperintensities (WMHs) is still under development and does not have the same accuracy as approaches that additionally consider FLAIR images (e.g. Lesion Segmentation Toolbox)!'
'Options to save WMH images, if WMHC==3: p7*.img, wp7*.img and m[0]wp7*.img.'
''
};
% stroke lesions
native.def = @(val)cat_get_defaults('output.SL.native', val{:});
warped.def = @(val)cat_get_defaults('output.SL.warped', val{:});
modulated.def = @(val)cat_get_defaults('output.SL.mod', val{:});
dartel.def = @(val)cat_get_defaults('output.SL.dartel', val{:});
sl = cfg_branch;
sl.tag = 'SL';
sl.name = 'Stroke lesions (SLs) - in development';
sl.val = {native warped modulated dartel};
sl.hidden = expert<1;
sl.help = {'WARNING: Please note that the handling of stroke lesions (SLs) is still under development! '
'To save SL images, SLC has to be active and (SLs has to be labeled): p8*.img, wp8*.img and m[0]wp8*.img.'
''
};
% main structure atlas
native.def = @(val)cat_get_defaults('output.atlas.native', val{:});
warped.def = @(val)cat_get_defaults('output.atlas.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.atlas.dartel', val{:});
atlas = cfg_branch;
atlas.tag = 'atlas';
atlas.name = 'Atlas label maps';
if expert < 2
atlas.val = {native};
else
atlas.val = {native warped dartel};
end
atlas.hidden = expert<1;
atlas.help = {
'This option saves the selected atlas maps from the "Process Volume ROIs" dialog in native space. The name of the atlas is prepended to the file name.'
''
'In addition the cat atlas map with major structures is saved.'
''
};
% cortical thickness maps
native.def = @(val)cat_get_defaults('output.ct.native', val{:});
warped.def = @(val)cat_get_defaults('output.ct.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.ct.dartel', val{:});
native.val = {0};
warped.val = {0};
dartel.val = {0};
gmt = cfg_branch;
gmt.tag = 'ct';
gmt.name = 'Cortical Thickness';
gmt.val = {native warped dartel};
gmt.hidden = expert<2;
gmt.help = {
'Options to save cortical thickess maps (experimental).'
''
};
% percentual position maps - uses defaults from thickness
native.def = @(val)cat_get_defaults('output.pp.native', val{:});
warped.def = @(val)cat_get_defaults('output.pp.warped', val{:});
dartel.def = @(val)cat_get_defaults('output.pp.dartel', val{:});
native.val = {0};
warped.val = {0};
dartel.val = {0};
pp = cfg_branch;
pp.tag = 'pp';
pp.name = 'Percentage Position';
pp.val = {native warped dartel};
pp.hidden = expert<1;
pp.help = {
'Options to save percentage position maps (experimental).'
''
};
warps = cfg_menu;
warps.tag = 'warps';
warps.name = 'Deformation Fields';
warps.labels = {
'No'
'Image->Template (forward)'
'Template->Image (inverse)'
'inverse + forward'};
warps.values = {[0 0],[1 0],[0 1],[1 1]};
warps.def = @(val)cat_get_defaults('output.warps', val{:});
warps.help = {
'Deformation fields can be saved to disk, and used by the Deformations Utility and/or applied to coregistered data from other modalities (e.g. fMRI). For spatially normalising images to MNI space, you will need the forward deformation, whereas for spatially normalising (eg) GIFTI surface files, you''ll need the inverse. It is also possible to transform data in MNI space on to the individual subject, which also requires the inverse transform. Deformations are saved as .nii files, which contain three volumes to encode the x, y and z coordinates.'
''
};
rmat = cfg_menu;
rmat.tag = 'rmat';
rmat.name = 'Registration Matrixes';
rmat.labels = {'No','Yes'};
rmat.values = {0 1};
rmat.def = @(val)cat_get_defaults('output.rmat', val{:});
rmat.hidden = expert<1;
rmat.help = {
'Deformation matrixes (affine and rigid) can be saved and used by the SPM Reorient Images Utility and/or applied to coregistered data from other modalities (e.g. fMRI). For normalising images to MNI space, you will need the forward transformation, whereas for normalising (eg) GIFTI surface files, you''ll need the inverse. It is also possible to transform data in MNI space on to the individual subject, which also requires the inverse transform. Transformation are saved as .mat files, which contain the tranformation matrix.'
''
};
%% ------------------------------------------------------------------------
[ROI,sROI] = cat_conf_ROI(expert); % ROI options
output = cfg_branch;
output.tag = 'output';
output.name = 'Writing options';
if expert
output.val = {BIDS surface surf_measures ROI sROI grey white csf gmt pp wmh sl tpmc atlas label labelnative bias las jacobianwarped warps rmat};
else
output.val = {BIDS surface surf_measures ROI grey white csf gmt pp wmh sl tpmc atlas label labelnative bias las jacobianwarped warps rmat};
end
output.help = {
'There are a number of options about what kind of data you like save. The routine can be used for saving images of tissue classes, as well as bias corrected images. The native space option will save a tissue class image (p*) that is in alignment with the original image. You can also save spatially normalised versions - both with (m[0]wp*) and without (wp*) modulation. In the cat toolbox, the voxel size of the spatially normalised versions is 1.5 x 1.5 x 1.5mm as default. The saved images of the tissue classes can directly be used for doing voxel-based morphometry (both un-modulated and modulated). All you need to do is smooth them and do the stats (which means no more questions on the mailing list about how to do "optimized VBM"). Please note that many less-common options are only available in expert mode (e.g. CSF, labels, atlas maps).'
''
'Modulation is to compensate for the effect of spatial normalisation. When warping a series of images to match a template, it is inevitable that volumetric differences will be introduced into the warped images. For example, if one subject''s temporal lobe has half the volume of that of the template, then its volume will be doubled during spatial normalisation. This will also result in a doubling of the voxels labeled grey matter. In order to remove this confound, the spatially normalised grey matter (or other tissue class) is adjusted by multiplying by its relative volume before and after warping. If warping results in a region doubling its volume, then the correction will halve the intensity of the tissue label. This whole procedure has the effect of preserving the total amount of grey matter signal in the normalised partitions.'
''
'A deformation field is a vector field, where three values are associated with each location in the field. The field maps from co-ordinates in the normalised image back to co-ordinates in the original image. The value of the field at co-ordinate [x y z] in the normalised space will be the co-ordinate [x'' y'' z''] in the original volume. The gradient of the deformation field at a co-ordinate is its Jacobian matrix, and it consists of a 3x3 matrix:'
'% / \% | dx''/dx dx''/dy dx''/dz |% | |% | dy''/dx dy''/dy dy''/dz |% | |% | dz''/dx dz''/dy dz''/dz |% \ /'
''
'The value of dx''/dy is a measure of how much x'' changes if y is changed by a tiny amount. The determinant of the Jacobian is the measure of relative volumes of warped and unwarped structures. The modulation step simply involves multiplying by the relative volumes.'};
%%
%------------------------------------------------------------------------
% R1173
%------------------------------------------------------------------------
warped.def = @(val)cat_get_defaults1173('output.jacobian.warped', val{:});
jacobian = cfg_branch;
jacobian.tag = 'jacobian';
jacobian.name = 'Jacobian determinant';
jacobian.val = {warped};
jacobian.help = {
'This is the option to save the Jacobian determinant, which expresses local volume changes. This image can be used in a pure deformation based morphometry (DBM) design. Please note that the affine part of the deformation field is ignored. Thus, there is no need for any additional correction for different brain sizes using ICV.'
''
};
output_spm = output;
output_spm.val = {BIDS surface ROI grey_spm white_spm csf_spm tpmc_spm label bias_spm labelnative jacobianwarped warps};
return
%------------------------------------------------------------------------