name='sf_level1files')
#sf_func.iterables = ('kernel',fwhmlist)

# Specify the first level node
level1design = Node(interface=spm.Level1Design(), name="level1design")
level1design.inputs.timing_units = modelspec.inputs.output_units
level1design.inputs.interscan_interval = modelspec.inputs.time_repetition
level1design.inputs.bases = {'hrf': {'derivs': [0, 0]}}

level1estimate = Node(interface=spm.EstimateModel(), name="level1estimate")
level1estimate.inputs.estimation_method = {'Classical': 1}

# Setup the contrast estimation process
contrastestimate = Node(interface=spm.EstimateContrast(),
                        name="contrastestimate")
contrastestimate.overwrite = True

l1pipeline = Workflow(name='level1')
l1pipeline.base_dir = output_dir

ds.inputs.base_directory = op.abspath(output_dir)
ds.substitutions = [('_subj_id', ''), ('_task', ''), ('_t1_', ''),
                    ('_kernel_8', '')]

l1pipeline.connect([
    (info_lvl1, sf_func, [('subj_id', 'subj_id'), ('task', 'task'),
                          ('timept', 'timept'), ('kernel', 'kernel')]),
    (sf_func, modelspec, [('func', 'functional_runs'),
                          ('rp', 'realignment_parameters')]),
    (modelspec, level1design, [('session_info', 'session_info')]),
    (info_lvl1, contrastestimate, [('contrasts', 'contrasts')]),