Hei there,
I’m working on a nuisance GLM in nipype to obtain “cleaned” residuals from a resting-state fmri run. I’m adding nuisance regressors (fmriprep-derived confounds and retroicor regressors) to the GLM but I don’t have any task regressors to convolve. However, in the subject_info that pipes into fsl’s modelspec, I need to specify conditions and onsets. How can I circumvent this? I doesn’t seem to accept empty lists as inputs here…
Help is appreciated! Thanks!
def get_regressors_func(confounds_file,retroicor_file):
import pandas as pd
from nipype.interfaces.base import Bunch
confounds = pd.read_csv(confounds_file, sep='\t')
confounds = confounds.fillna(0)
retroicor = pd.read_csv(retroicor_file, sep='\t', header = None)
retroicor = retroicor.fillna(0)
retroicor = retroicor.add_prefix('retroicor')
subject_info = Bunch(conditions = [],
onsets = [],
durations = [],
regressors = [list(confounds.csf),
list(confounds.white_matter),
list(confounds.framewise_displacement),
list(confounds.dvars), #or use std_dvars?
list(confounds.rot_x),
list(confounds.rot_y),
list(confounds.rot_z),
list(confounds.trans_x),
list(confounds.trans_y),
list(confounds.trans_z)] +
[list(confounds[col] for col in confounds.columns if 'cosine' in col)] +
[list(retroicor[col] for col in retroicor.columns)],
regressor_names = ['csf','wm','fd','dvars','rotx','roty','rotz','transx','transy','transz'] +
[col for col in confounds.columns if 'cosine' in col] +
[col for col in retroicor.columns])
return subject_info
get_regressors = Node(interface=Function(function=get_regressors_func, input_names=['confounds_file','retroicor_file'], output_names=['output_bunch']),
name='get_regressors')