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')]),