I have several files that I wish to gunzip (iteration) but I’m not sure how to connect the SelectFiles
node with the Gunzip
node, and whether there is a better way of doing this in a workflow. Here’s my code:
subject_list = [‘01’,‘02’]
infosource = Node(IdentityInterface(fields=[“subject_id”]), name=“infosource”)
infosource.iterables = [(“subject_id”, subject_list)]
template = {‘f1’: opj(“sub-{subject_id}”, ‘f1.nii.gz’),
‘f2’: opj(“sub-{subject_id}”, ‘f2.nii.gz’),
‘f3’: opj(“sub-{subject_id}”, ‘f3.nii.gz’),
‘f4’: opj(“sub-{subject_id}”, ‘f4.nii.gz’)}
selectfiles = Node(SelectFiles(template, base_directory="/data"), name=‘selectfiles’)
gunzip = MapNode(Gunzip(), iterfield=['in_file'], base_dir=/data/gunzip, name='gunzip')
wf = Workflow(name=“wf”, base_dir="/data")
wf.connect(infosource, “subject_id”, select_files, “subject_id”)
wf.connect(select_files, f1, gunzip, ‘infile’)
wf.connect(select_files, f2, gunzip, ‘infile’)
wf.connect(select_files, f3, gunzip, ‘infile’)
wf.connect(select_files, f4, gunzip, ‘infile’)
wf.run()