예제 #1
0
def test_robustregister():
    filelist, outdir, cwd = create_files_in_directory()

    reg = freesurfer.RobustRegister()

    # make sure command gets called
    yield assert_equal, reg.cmd, 'mri_robust_register'

    # test raising error with mandatory args absent
    yield assert_raises, ValueError, reg.run

    # .inputs based parameters setting
    reg.inputs.source_file = filelist[0]
    reg.inputs.target_file = filelist[1]
    reg.inputs.auto_sens = True
    yield assert_equal, reg.cmdline, (
        'mri_robust_register '
        '--satit --lta %s_robustreg.lta --mov %s --dst %s' %
        (filelist[0][:-4], filelist[0], filelist[1]))

    # constructor based parameter setting
    reg2 = freesurfer.RobustRegister(source_file=filelist[0],
                                     target_file=filelist[1],
                                     outlier_sens=3.0,
                                     out_reg_file='foo.lta',
                                     half_targ=True)
    yield assert_equal, reg2.cmdline, (
        'mri_robust_register --halfdst %s_halfway.nii --lta foo.lta '
        '--sat 3.0000 --mov %s --dst %s' %
        (os.path.join(outdir, filelist[1][:-4]), filelist[0], filelist[1]))
    clean_directory(outdir, cwd)
예제 #2
0
def test_robustregister(create_files_in_directory):
    filelist, outdir = create_files_in_directory

    reg = freesurfer.RobustRegister()
    cwd = os.getcwd()

    # make sure command gets called
    assert reg.cmd == "mri_robust_register"

    # test raising error with mandatory args absent
    with pytest.raises(ValueError):
        reg.run()

    # .inputs based parameters setting
    reg.inputs.source_file = filelist[0]
    reg.inputs.target_file = filelist[1]
    reg.inputs.auto_sens = True
    assert reg.cmdline == ("mri_robust_register --satit --lta "
                           "%s/%s_robustreg.lta --mov %s --dst %s" %
                           (cwd, filelist[0][:-4], filelist[0], filelist[1]))

    # constructor based parameter setting
    reg2 = freesurfer.RobustRegister(
        source_file=filelist[0],
        target_file=filelist[1],
        outlier_sens=3.0,
        out_reg_file="foo.lta",
        half_targ=True,
    )
    assert reg2.cmdline == (
        "mri_robust_register --halfdst %s_halfway.nii --lta foo.lta "
        "--sat 3.0000 --mov %s --dst %s" %
        (os.path.join(outdir, filelist[1][:-4]), filelist[0], filelist[1]))
예제 #3
0
def create_align_to_anatomy_workflow(name='align_to_anatomy',
                                     format_string='inplane_to_anatomy'):

    align_to_anatomy = pe.Workflow(name=name)

    inputs = pe.Node(interface=util.IdentityInterface(
        fields=['inplane_file', 'anatomy_file']),
                     name='inputs')
    strip = pe.Node(interface=fs.ReconAll(),
                    name='strip')  #FIXME: reconall interface barfs if rerun
    strip.inputs.directive = 'autorecon1'
    strip.inputs.flags = '-nowsgcaatlas'

    register = pe.Node(interface=fs.RobustRegister(), name='register')
    register.inputs.auto_sens = True
    #register.inputs.init_orient = True #FIXME: disabled due to bug in binary
    convert_xfm = pe.Node(interface=nmutil.LtaToXfm(), name='convert_xfm')
    rename_xfm = pe.Node(interface=util.Rename(format_string),
                         name='rename_xfm')
    rename_xfm.inputs.keep_ext = True
    outputs = pe.Node(
        interface=util.IdentityInterface(fields=['xfm_file', 'strip_file']),
        name='outputs')

    align_to_anatomy.connect(inputs, 'inplane_file', strip, 'T1_files')
    align_to_anatomy.connect(strip, 'brainmask', register, 'source_file')
    align_to_anatomy.connect(inputs, 'anatomy_file', register, 'target_file')
    align_to_anatomy.connect(register, 'out_reg_file', convert_xfm, 'in_file')
    align_to_anatomy.connect(convert_xfm, 'out_file', rename_xfm, 'in_file')
    align_to_anatomy.connect(rename_xfm, 'out_file', outputs, 'xfm_file')
    align_to_anatomy.connect(strip, 'brainmask', outputs, 'strip_file')

    return align_to_anatomy