def init_single_subject_wf( opts: ArgumentParser, layout: BIDSLayout, run_uuid: str, work_dir: str, output_dir: str, name: str, subject_id: str, reportlets_dir: str, ): import nilearn if name in ('single_subject_wf', 'single_subject_test_wf'): # for documentation purposes subject_data = { 'bold': ['/completely/made/up/path/sub-01_task-nback_bold.nii.gz'] } else: subject_data = collect_data(layout, subject_id, None)[0] workflow = Workflow(name=name) workflow.base_dir = work_dir workflow.__desc__ = """ Results included in this manuscript come from processing performed using *atlasTransform* {atlasTransform_ver} (@atlasTransform1; @atlasTransform; RRID:some.id), which is based on *Nipype* {nipype_ver} (@nipype1; @nipype2; RRID:SCR_002502). """.format(atlasTransform_ver=__version__, nipype_ver=nipype_ver) workflow.__postdesc__ = """ Many internal operations of *atlasTransform* use *Nilearn* {nilearn_ver} [@nilearn, RRID:SCR_001362]. ### Copyright Waiver The above boilerplate text was automatically generated by fMRIPrep with the express intention that users should copy and paste this text into their manuscripts *unchanged*. It is released under the [CC0]\ (https://creativecommons.org/publicdomain/zero/1.0/) license. ### References """.format(nilearn_ver=nilearn.version.__version__) inputnode = pe.Node(niu.IdentityInterface(fields=['subjects_dir']), name='inputnode') # # # require_masks = opts.source_format == 'bold' # bidssrc = pe.Node(BIDSPlusDataGrabber(subject_data=subject_data, require_masks=False), # name='bidssrc') # # # bids_info = pe.Node(BIDSInfo( # # bids_dir=layout.root, bids_validate=False), name='bids_info') # # summary = pe.Node(SubjectSummary(), # name='summary', run_without_submitting=True) # # about = pe.Node(AboutSummary(version=__version__, # command=' '.join(sys.argv)), # name='about', run_without_submitting=True) # # ds_report_summary = pe.Node( # DerivativesDataSink(base_directory=reportlets_dir, # desc='summary', keep_dtype=True), # name='ds_report_summary', run_without_submitting=True) # # ds_report_about = pe.Node( # DerivativesDataSink(base_directory=reportlets_dir, # desc='about', keep_dtype=True), # name='ds_report_about', run_without_submitting=True) # Preprocessing of T1w (includes registration to MNI) # workflow.connect([ # # (bidssrc, bids_info, [('bold', 'in_file')]), # (inputnode, summary, [('subjects_dir', 'subjects_dir')]), # (bidssrc, summary, [('t1w', 't1w'), # ('t2w', 't2w'), # ('bold', 'bold')]), # # (bids_info, summary, [('subject', 'subject_id')]), # (bidssrc, ds_report_summary, [('bold', 'source_file')]), # # (summary, ds_report_summary, [('out_report', 'in_file')]), # (bidssrc, ds_report_about, [('bold', 'source_file')]), # (about, ds_report_about, [('out_report', 'in_file')]), # ]) # Overwrite ``out_path_base`` of smriprep's DataSinks for node in workflow.list_node_names(): if node.split('.')[-1].startswith('ds_'): workflow.get_node(node).interface.out_path_base = 'atlasTransform' for i in range(len(subject_data[opts.source])): transform_wf = init_atlas_transform_workflow( nifti=subject_data[opts.source][i], atlas_name=opts.atlas_name, options=opts, bids_dir=str(layout.root), name='atlas_transform_%d_wf' % i) workflow.connect([ (inputnode, transform_wf, [('subjects_dir', 'inputnode.subjects_dir')]), ]) # outputs_wf = init_datasink_wf(bids_root=str(layout.root), output_dir=str(opts.output_dir), atlas_name=opts.atlas_name, name='ds_%d_wf' % i) # # workflow.connect([(transform_wf,outputs_wf,[('outputnode.transformed','inputnode.source_file')])]) # # outputs_wf.inputs.source_file = subject_data['csv'][i] if subject_data.__contains__('mask') else subject_data['bold'][i] # # workflow.connect([(transform_wf, outputs_wf, [ # ('outputnode.transformed', 'inputnode.transformed') # ])]) return workflow