@@ -353,6 +353,7 @@ def test_mcflirt(setup_flirt):
353
353
def test_fnirt (setup_flirt ):
354
354
355
355
tmpdir , infile , reffile = setup_flirt
356
+ os .chdir (tmpdir )
356
357
fnirt = fsl .FNIRT ()
357
358
assert fnirt .cmd == 'fnirt'
358
359
@@ -404,64 +405,81 @@ def test_fnirt(setup_flirt):
404
405
fnirt .run ()
405
406
fnirt .inputs .in_file = infile
406
407
fnirt .inputs .ref_file = reffile
408
+ intmap_basename = '%s_intmap' % fsl .FNIRT .intensitymap_file_basename (infile )
409
+ intmap_image = fsl_name (fnirt , intmap_basename )
410
+ intmap_txt = '%s.txt' % intmap_basename
411
+ # doing this to create the file to pass tests for file existence
412
+ with open (intmap_image , 'w' ):
413
+ pass
414
+ with open (intmap_txt , 'w' ):
415
+ pass
407
416
408
417
# test files
409
- opt_map = {
410
- 'affine_file' : ('--aff=' ),
411
- 'inwarp_file' : ('--inwarp=' ),
412
- 'in_intensitymap_file' : ('--intin=' ),
413
- 'config_file' : ('--config=' ),
414
- 'refmask_file' : ('--refmask=' ),
415
- 'inmask_file' : ('--inmask=' ),
416
- 'field_file' : ('--fout=' ),
417
- 'jacobian_file' : ('--jout=' ),
418
- 'modulatedref_file' : ('--refout=' ),
419
- 'out_intensitymap_file' : ('--intout=' ),
420
- 'log_file' : ('--logout=' )}
421
-
422
- for name , settings in list (opt_map .items ()):
418
+ opt_map = [
419
+ ('affine_file' , '--aff=%s' % infile , infile ),
420
+ ('inwarp_file' , '--inwarp=%s' % infile , infile ),
421
+ ('in_intensitymap_file' , '--intin=%s' % intmap_basename , [intmap_image ]),
422
+ ('in_intensitymap_file' ,
423
+ '--intin=%s' % intmap_basename ,
424
+ [intmap_image , intmap_txt ]),
425
+ ('config_file' , '--config=%s' % infile , infile ),
426
+ ('refmask_file' , '--refmask=%s' % infile , infile ),
427
+ ('inmask_file' , '--inmask=%s' % infile , infile ),
428
+ ('field_file' , '--fout=%s' % infile , infile ),
429
+ ('jacobian_file' , '--jout=%s' % infile , infile ),
430
+ ('modulatedref_file' , '--refout=%s' % infile , infile ),
431
+ ('out_intensitymap_file' ,
432
+ '--intout=%s' % intmap_basename , True ),
433
+ ('out_intensitymap_file' , '--intout=%s' % intmap_basename , intmap_image ),
434
+ ('fieldcoeff_file' , '--cout=%s' % infile , infile ),
435
+ ('log_file' , '--logout=%s' % infile , infile )]
436
+
437
+ for (name , settings , arg ) in opt_map :
423
438
fnirt = fsl .FNIRT (in_file = infile ,
424
439
ref_file = reffile ,
425
- ** {name : infile })
440
+ ** {name : arg })
426
441
427
- if name in ('config_file' , 'affine_file' , 'field_file' ):
428
- cmd = 'fnirt %s%s --in=%s ' \
442
+ if name in ('config_file' , 'affine_file' , 'field_file' , 'fieldcoeff_file' ):
443
+ cmd = 'fnirt %s --in=%s ' \
429
444
'--logout=%s ' \
430
- '--ref=%s --iout=%s' % (settings , infile , infile , log ,
445
+ '--ref=%s --iout=%s' % (settings , infile , log ,
431
446
reffile , iout )
432
447
elif name in ('refmask_file' ):
433
448
cmd = 'fnirt --in=%s ' \
434
449
'--logout=%s --ref=%s ' \
435
- '%s%s ' \
450
+ '%s ' \
436
451
'--iout=%s' % (infile , log ,
437
452
reffile ,
438
- settings , infile ,
453
+ settings ,
439
454
iout )
440
455
elif name in ('in_intensitymap_file' , 'inwarp_file' , 'inmask_file' , 'jacobian_file' ):
441
456
cmd = 'fnirt --in=%s ' \
442
- '%s%s ' \
457
+ '%s ' \
443
458
'--logout=%s --ref=%s ' \
444
459
'--iout=%s' % (infile ,
445
- settings , infile ,
460
+ settings ,
446
461
log ,
447
462
reffile ,
448
463
iout )
449
464
elif name in ('log_file' ):
450
465
cmd = 'fnirt --in=%s ' \
451
- '%s%s --ref=%s ' \
466
+ '%s --ref=%s ' \
452
467
'--iout=%s' % (infile ,
453
- settings , infile ,
468
+ settings ,
454
469
reffile ,
455
470
iout )
456
471
else :
457
472
cmd = 'fnirt --in=%s ' \
458
- '--logout=%s %s%s ' \
473
+ '--logout=%s %s ' \
459
474
'--ref=%s --iout=%s' % (infile , log ,
460
- settings , infile ,
475
+ settings ,
461
476
reffile , iout )
462
477
463
478
assert fnirt .cmdline == cmd
464
479
480
+ if name == 'out_intensitymap_file' :
481
+ assert fnirt ._list_outputs ()['out_intensitymap_file' ] == [
482
+ intmap_image , intmap_txt ]
465
483
466
484
@pytest .mark .skipif (no_fsl (), reason = "fsl is not installed" )
467
485
def test_applywarp (setup_flirt ):
0 commit comments