From 4994a106525111f83f989a426e49e20f8bafddcc Mon Sep 17 00:00:00 2001 From: Taylor Salo Date: Sat, 4 May 2024 11:13:00 -0400 Subject: [PATCH] Keep working. --- src/fmripost_aroma/interfaces/resampler.py | 2 - src/fmripost_aroma/workflows/base.py | 4 +- src/fmripost_aroma/workflows/resampling.py | 54 ++++++++++++++++++++++ 3 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/fmripost_aroma/workflows/resampling.py diff --git a/src/fmripost_aroma/interfaces/resampler.py b/src/fmripost_aroma/interfaces/resampler.py index 7913064..61a30f8 100644 --- a/src/fmripost_aroma/interfaces/resampler.py +++ b/src/fmripost_aroma/interfaces/resampler.py @@ -3,10 +3,8 @@ from nipype.interfaces.base import ( BaseInterfaceInputSpec, File, - InputMultiObject, SimpleInterface, TraitedSpec, - isdefined, traits, ) diff --git a/src/fmripost_aroma/workflows/base.py b/src/fmripost_aroma/workflows/base.py index 874200e..c6b228c 100644 --- a/src/fmripost_aroma/workflows/base.py +++ b/src/fmripost_aroma/workflows/base.py @@ -40,6 +40,7 @@ from fmripost_aroma import config from fmripost_aroma.interfaces.bids import DerivativesDataSink from fmripost_aroma.interfaces.reportlets import AboutSummary, SubjectSummary +from fmripost_aroma.workflows.resampling import init_resample_raw_wf def init_fmripost_aroma_wf(): @@ -256,7 +257,8 @@ def init_single_subject_wf(subject_id: str): ) bids_info = pe.Node( - BIDSInfo(bids_dir=config.execution.bids_dir, bids_validate=False), name="bids_info" + BIDSInfo(bids_dir=config.execution.bids_dir, bids_validate=False), + name="bids_info", ) summary = pe.Node( diff --git a/src/fmripost_aroma/workflows/resampling.py b/src/fmripost_aroma/workflows/resampling.py new file mode 100644 index 0000000..15d00ad --- /dev/null +++ b/src/fmripost_aroma/workflows/resampling.py @@ -0,0 +1,54 @@ +"""Workflows to resample data.""" + +from nipype.interfaces import utility as niu +from nipype.pipeline import engine as pe + + +def init_resample_raw_wf(bold_file, functional_cache): + """Resample raw BOLD data to MNI152NLin6Asym:res-2mm space.""" + from fmriprep.workflows.bold.stc import init_bold_stc_wf + from niworkflows.engine.workflows import LiterateWorkflow as Workflow + + from fmripost_aroma.interfaces.resampler import Resampler + + workflow = Workflow(name="resample_raw_wf") + + inputnode = pe.Node( + niu.IdentityInterface(fields=["bold_file", "mask_file"]), + name="inputnode", + ) + inputnode.inputs.bold_file = bold_file + inputnode.inputs.mask_file = functional_cache["bold_mask"] + + outputnode = pe.Node( + niu.IdentityInterface(fields=["bold_std", "bold_mask_std"]), + name="outputnode", + ) + + stc_wf = init_bold_stc_wf(name="resample_stc_wf") + workflow.connect([ + (inputnode, stc_wf, [ + ('bold_file', 'inputnode.bold_file'), + ('mask_file', 'inputnode.mask_file'), + ]), + ]) # fmt:skip + + resample_bold = pe.Node( + Resampler(space="MNI152NLin6Asym", resolution="2"), + name="resample_bold", + ) + workflow.connect([ + (stc_wf, resample_bold, [('outputnode.bold_file', 'bold_file')]), + (resample_bold, outputnode, [('output_file', 'bold_std')]), + ]) # fmt:skip + + resample_bold_mask = pe.Node( + Resampler(space="MNI152NLin6Asym", resolution="2"), + name="resample_bold_mask", + ) + workflow.connect([ + (inputnode, resample_bold_mask, [('mask_file', 'bold_file')]), + (resample_bold_mask, outputnode, [('output_file', 'bold_mask_std')]), + ]) # fmt:skip + + return workflow