@@ -2347,3 +2347,104 @@ class Warp(AFNICommand):
2347
2347
_cmd = '3dWarp'
2348
2348
input_spec = WarpInputSpec
2349
2349
output_spec = AFNICommandOutputSpec
2350
+
2351
+
2352
+ class QwarpPlusMinusInputSpec (CommandLineInputSpec ):
2353
+ source_file = File (
2354
+ desc = 'Source image (opposite phase encoding direction than base image).' ,
2355
+ argstr = '-source %s' ,
2356
+ mandatory = True ,
2357
+ exists = True ,
2358
+ copyfile = False )
2359
+ base_file = File (
2360
+ desc = 'Base image (opposite phase encoding direction than source image).' ,
2361
+ argstr = '-base %s' ,
2362
+ mandatory = True ,
2363
+ exists = True ,
2364
+ copyfile = False )
2365
+ pblur = traits .List (traits .Float (),
2366
+ desc = 'The fraction of the patch size that'
2367
+ 'is used for the progressive blur by providing a '
2368
+ 'value between 0 and 0.25. If you provide TWO '
2369
+ 'values, the first fraction is used for '
2370
+ 'progressively blurring the base image and the '
2371
+ 'second for the source image.' ,
2372
+ argstr = '-pblur %s' ,
2373
+ minlen = 1 ,
2374
+ maxlen = 2 )
2375
+ blur = traits .List (traits .Float (),
2376
+ desc = "Gaussian blur the input images by (FWHM) voxels "
2377
+ "before doing the alignment (the output dataset "
2378
+ "will not be blurred). The default is 2.345 (for "
2379
+ "no good reason). Optionally, you can provide 2 "
2380
+ "values, and then the first one is applied to the "
2381
+ "base volume, the second to the source volume. A "
2382
+ "negative blur radius means to use 3D median "
2383
+ "filtering, rather than Gaussian blurring. This "
2384
+ "type of filtering will better preserve edges, "
2385
+ "which can be important in alignment." ,
2386
+ argstr = '-blur %s' ,
2387
+ minlen = 1 ,
2388
+ maxlen = 2 )
2389
+ noweight = traits .Bool (
2390
+ desc = 'If you want a binary weight (the old default), use this option.'
2391
+ 'That is, each voxel in the base volume automask will be'
2392
+ 'weighted the same in the computation of the cost functional.' ,
2393
+ argstr = '-noweight' )
2394
+ minpatch = traits .Int (
2395
+ desc = "Set the minimum patch size for warp searching to 'mm' voxels." ,
2396
+ argstr = '-minpatch %d' )
2397
+ nopadWARP = traits .Bool (
2398
+ desc = 'If for some reason you require the warp volume to'
2399
+ 'match the base volume, then use this option to have the output'
2400
+ 'WARP dataset(s) truncated.' ,
2401
+ argstr = '-nopadWARP' )
2402
+
2403
+
2404
+ class QwarpPlusMinusOutputSpec (TraitedSpec ):
2405
+ warped_source = File (
2406
+ desc = 'Undistorted source file.' ,
2407
+ exists = True )
2408
+ warped_base = File (
2409
+ desc = 'Undistorted base file.' ,
2410
+ exists = True )
2411
+ source_warp = File (
2412
+ desc = "Field suceptibility correction warp (in 'mm') for source image." ,
2413
+ exists = True )
2414
+ base_warp = File (
2415
+ desc = "Field suceptibility correction warp (in 'mm') for base image." ,
2416
+ exists = True )
2417
+
2418
+
2419
+ class QwarpPlusMinus (CommandLine ):
2420
+ """A version of 3dQwarp for performing field susceptibility correction
2421
+ using two images with opposing phase encoding directions.
2422
+
2423
+ For complete details, see the `3dQwarp Documentation.
2424
+ <https://afni.nimh.nih.gov/pub/dist/doc/program_help/3dQwarp.html>`_
2425
+
2426
+ Examples
2427
+ ========
2428
+
2429
+ >>> from nipype.interfaces import afni
2430
+ >>> qwarp = afni.QwarpPlusMinus()
2431
+ >>> qwarp.inputs.source_file = 'sub-01_dir-LR_epi.nii.gz'
2432
+ >>> qwarp.inputs.nopadWARP = True
2433
+ >>> qwarp.inputs.base_file = 'sub-01_dir-RL_epi.nii.gz'
2434
+ >>> qwarp.cmdline # doctest: +ALLOW_UNICODE
2435
+ '3dQwarp -prefix Qwarp.nii.gz -plusminus -base sub-01_dir-RL_epi.nii.gz -nopadWARP -source sub-01_dir-LR_epi.nii.gz'
2436
+ >>> res = warp.run() # doctest: +SKIP
2437
+
2438
+ """
2439
+ _cmd = '3dQwarp -prefix Qwarp.nii.gz -plusminus'
2440
+ input_spec = QwarpPlusMinusInputSpec
2441
+ output_spec = QwarpPlusMinusOutputSpec
2442
+
2443
+ def _list_outputs (self ):
2444
+ outputs = self .output_spec ().get ()
2445
+ outputs ['warped_source' ] = os .path .abspath ("Qwarp_PLUS.nii.gz" )
2446
+ outputs ['warped_base' ] = os .path .abspath ("Qwarp_MINUS.nii.gz" )
2447
+ outputs ['source_warp' ] = os .path .abspath ("Qwarp_PLUS_WARP.nii.gz" )
2448
+ outputs ['base_warp' ] = os .path .abspath ("Qwarp_MINUS_WARP.nii.gz" )
2449
+
2450
+ return outputs
0 commit comments