@@ -1191,39 +1191,83 @@ class ExtractMainComponent(CommandLine):
1191
1191
1192
1192
1193
1193
class Tkregister2InputSpec (FSTraitedSpec ):
1194
+ target_image = File (exists = True , argstr = "--targ %s" ,
1195
+ xor = ['fstarg' ],
1196
+ desc = 'target volume' )
1197
+ fstarg = traits .Bool (False , argstr = '--fstarg' ,
1198
+ xor = ['target_image' ],
1199
+ desc = 'use subject\' s T1 as reference' )
1200
+
1194
1201
moving_image = File (exists = True , mandatory = True , argstr = "--mov %s" ,
1195
- desc = 'moving volume' )
1202
+ desc = 'moving volume' )
1196
1203
fsl_in_matrix = File (exists = True , argstr = "--fsl %s" ,
1197
- desc = 'fsl-style registration input matrix' )
1198
- subject_id = traits .String (argstr = "--s %s" , mandatory = True ,
1204
+ desc = 'fsl-style registration input matrix' )
1205
+ subject_id = traits .String (argstr = "--s %s" ,
1199
1206
desc = 'freesurfer subject ID' )
1200
- noedit = traits .Bool (True , argstr = "--noedit" , desc = 'do not open edit window (exit)' , usedefault = True )
1201
- reg_file = File (name_template = '%s.dat' , name_source = 'fsl' ,
1202
- mandatory = True , argstr = "--reg %s" ,
1203
- desc = 'freesurfer-style registration file' )
1207
+ noedit = traits .Bool (True , argstr = "--noedit" , usedefault = True ,
1208
+ desc = 'do not open edit window (exit)' )
1209
+ reg_file = File ('register.dat' , usedefault = True ,
1210
+ mandatory = True , argstr = "--reg %s" ,
1211
+ desc = 'freesurfer-style registration file' )
1212
+ reg_header = traits .Bool (False , argstr = '--regheader' ,
1213
+ desc = 'compute regstration from headers' )
1214
+ fstal = traits .Bool (False , argstr = '--fstal' ,
1215
+ xor = ['target_image' , 'moving_image' ],
1216
+ desc = 'set mov to be tal and reg to be tal xfm' )
1217
+ movscale = traits .Float (argstr = '--movscale %f' ,
1218
+ desc = 'adjust registration matrix to scale mov' )
1219
+ fsl = File (exists = True , argstr = '--fsl %s' ,
1220
+ desc = 'use the matrix produced by FSL as initial registration' )
1221
+ xfm = File (exists = True , argstr = '--xfm %s' ,
1222
+ desc = 'use a matrix in MNI coordinates as initial registration' )
1223
+ fsl_out = File (argstr = '--fslregout %s' ,
1224
+ desc = 'compute an FSL-compatible resgitration matrix' )
1204
1225
1205
1226
1206
1227
class Tkregister2OutputSpec (TraitedSpec ):
1207
1228
reg_file = File (exists = True , desc = 'freesurfer-style registration file' )
1229
+ fsl_file = File (desc = 'FSL-style registration file' )
1208
1230
1209
1231
1210
1232
class Tkregister2 (FSCommand ):
1211
- """Use tkregister2 without the manual editing stage to convert
1212
- FSL-style registration matrix (.mat) to FreeSurfer-style registration matrix (.dat)
1233
+ """
1213
1234
1214
1235
Examples
1215
1236
--------
1216
1237
1238
+ Get transform matrix between orig (*tkRAS*) and native (*scannerRAS*)
1239
+ coordinates in Freesurfer. Implements the first step of mapping surfaces
1240
+ to native space in `this guide
1241
+ <http://surfer.nmr.mgh.harvard.edu/fswiki/FsAnat-to-NativeAnat>`_.
1242
+
1217
1243
>>> from nipype.interfaces.freesurfer import Tkregister2
1218
- >>> tk2 = Tkregister2(reg_file='register.dat')
1244
+ >>> tk2 = Tkregister2(reg_file='T1_to_native.dat')
1245
+ >>> tk2.inputs.moving_image = 'T1.mgz'
1246
+ >>> tk2.inputs.target_image = 'structural.nii'
1247
+ >>> tk2.inputs.reg_header = True
1248
+ >>> tk2.cmdline
1249
+ 'tkregister2 --mov T1.mgz --noedit --reg T1_to_native.dat --regheader \
1250
+ --targ structural.nii'
1251
+ >>> tk2.run() # doctest: +SKIP
1252
+
1253
+ The example below uses tkregister2 without the manual editing
1254
+ stage to convert FSL-style registration matrix (.mat) to
1255
+ FreeSurfer-style registration matrix (.dat)
1256
+
1257
+ >>> from nipype.interfaces.freesurfer import Tkregister2
1258
+ >>> tk2 = Tkregister2()
1219
1259
>>> tk2.inputs.moving_image = 'epi.nii'
1220
1260
>>> tk2.inputs.fsl_in_matrix = 'flirt.mat'
1221
- >>> tk2.inputs.subject_id = 'test_subject'
1261
+ >>> tk2.cmdline
1262
+ 'tkregister2 --fsl flirt.mat --mov epi.nii --noedit --reg register.dat'
1222
1263
>>> tk2.run() # doctest: +SKIP
1223
1264
"""
1224
1265
_cmd = "tkregister2"
1225
1266
input_spec = Tkregister2InputSpec
1226
1267
output_spec = Tkregister2OutputSpec
1227
-
1228
1268
1229
-
1269
+ def _list_outputs (self ):
1270
+ outputs = super (Tkregister2 , self )._list_outputs ()
1271
+ if isdefined (self .inputs .fsl_out ):
1272
+ outputs ['fsl_file' ] = op .abspath (self .inputs .fsl_out )
1273
+ return outputs
0 commit comments