@@ -353,6 +353,7 @@ def test_mcflirt(setup_flirt):
353353def test_fnirt (setup_flirt ):
354354
355355 tmpdir , infile , reffile = setup_flirt
356+ os .chdir (tmpdir )
356357 fnirt = fsl .FNIRT ()
357358 assert fnirt .cmd == 'fnirt'
358359
@@ -404,64 +405,81 @@ def test_fnirt(setup_flirt):
404405 fnirt .run ()
405406 fnirt .inputs .in_file = infile
406407 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
407416
408417 # 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 :
423438 fnirt = fsl .FNIRT (in_file = infile ,
424439 ref_file = reffile ,
425- ** {name : infile })
440+ ** {name : arg })
426441
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 ' \
429444 '--logout=%s ' \
430- '--ref=%s --iout=%s' % (settings , infile , infile , log ,
445+ '--ref=%s --iout=%s' % (settings , infile , log ,
431446 reffile , iout )
432447 elif name in ('refmask_file' ):
433448 cmd = 'fnirt --in=%s ' \
434449 '--logout=%s --ref=%s ' \
435- '%s%s ' \
450+ '%s ' \
436451 '--iout=%s' % (infile , log ,
437452 reffile ,
438- settings , infile ,
453+ settings ,
439454 iout )
440455 elif name in ('in_intensitymap_file' , 'inwarp_file' , 'inmask_file' , 'jacobian_file' ):
441456 cmd = 'fnirt --in=%s ' \
442- '%s%s ' \
457+ '%s ' \
443458 '--logout=%s --ref=%s ' \
444459 '--iout=%s' % (infile ,
445- settings , infile ,
460+ settings ,
446461 log ,
447462 reffile ,
448463 iout )
449464 elif name in ('log_file' ):
450465 cmd = 'fnirt --in=%s ' \
451- '%s%s --ref=%s ' \
466+ '%s --ref=%s ' \
452467 '--iout=%s' % (infile ,
453- settings , infile ,
468+ settings ,
454469 reffile ,
455470 iout )
456471 else :
457472 cmd = 'fnirt --in=%s ' \
458- '--logout=%s %s%s ' \
473+ '--logout=%s %s ' \
459474 '--ref=%s --iout=%s' % (infile , log ,
460- settings , infile ,
475+ settings ,
461476 reffile , iout )
462477
463478 assert fnirt .cmdline == cmd
464479
480+ if name == 'out_intensitymap_file' :
481+ assert fnirt ._list_outputs ()['out_intensitymap_file' ] == [
482+ intmap_image , intmap_txt ]
465483
466484@pytest .mark .skipif (no_fsl (), reason = "fsl is not installed" )
467485def test_applywarp (setup_flirt ):
0 commit comments