import os
import nipype.interfaces.spm as spm
import nipype.pipeline.engine as pe
import nipype.interfaces.io as nio
from nipype import SelectFiles, IdentityInterface, DataSink
from nipype.interfaces.matlab import MatlabCommand
MatlabCommand.set_default_paths(’//usr/local/MATLAB/R2012b/SPM/spm12b’)
MatlabCommand.set_default_matlab_cmd(“matlab -nodesktop -nosplash”)
participantDir = ‘/home/Output’
participant_list = [‘fp1’, ‘fp2’ …]
session_list = [‘test1’, ‘test2’]
infosource = pe.Node(interface=IdentityInterface(fields=[‘participant_list’, ‘session_list’]),
name = “infosource”, base_dir=participantDir)
infosource.iterables = [(‘participant_list’, participant_list),
(‘session_list’, session_list)]
templates = {“T1”: os.path.join(participantDir, “{participant_list}/t1/t1.nii”),
“epi”: os.path.join(participantDir, “{participant_list}/{session_list}/{session_list}.nii”)}
selectfiles = pe.Node(SelectFiles(templates), name=“selectfiles”, base_dir= participantDir)
datasink = pe.Node(interface=DataSink(),
name = “datasink”)
datasink.base_dir = participantDir
DataSink output substitutions
substitutions = [(‘participant_list’, ‘’),
(‘session_list’, ‘’)]
datasink.inputs.substitutions = substitutions
Realign
realign = pe.Node(interface=spm.Realign(register_to_mean = True),
name=‘realign’)
preprocess = pe.Workflow(name=‘preproc’)
preprocess.connect([(infosource, selectfiles, [(‘participant_list’, ‘participant_list’),
(‘session_list’, ‘session_list’)]),
(selectfiles, realign, [(‘epi’, ‘in_files’)]),
(realign, datasink, [(‘mean_image’, ‘realign.mean’),
(‘realignment_parameters’, ‘realign.parameters’)])])
preprocess.run()
I get a lot of output information and crash files. It seems that it is looking in the wrong directory.
/tmp/tmpjG5LYz/preproc/_participant_list_fp1_session_list_test1/selectfiles/fp1/test1/test1.nii
So, basically, whyy is it using this directory /tmp/tmp…/preproc/_participant_list_fp1_session_list_test1/selectfiles?
The absolute last part seems ok, namely /fp1/test1/test1.nii.