Skip to content

Commit

Permalink
ENH: Create fieldmap registration report
Browse files Browse the repository at this point in the history
  • Loading branch information
effigies committed Aug 30, 2023
1 parent 2a8abf5 commit 4f6b565
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 1 deletion.
7 changes: 6 additions & 1 deletion fmriprep/workflows/bold/fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,7 @@ def init_bold_fit_wf(
])
# fmt:on
else:
fmapreg_buffer.inputs.boldref2fmap_xform = boldref2fmap_xform
fmapreg_buffer.inputs.boldref2fmap_xfm = boldref2fmap_xform

unwarp_wf = init_unwarp_wf(
free_mem=config.environment.free_mem,
Expand Down Expand Up @@ -380,6 +380,11 @@ def init_bold_fit_wf(
(unwarp_wf, regref_buffer, [
('outputnode.corrected_mask', 'boldmask'),
]),
(fmap_select, func_fit_reports_wf, [("fmap_ref", "inputnode.fmap_ref")]),
(fmapreg_buffer, func_fit_reports_wf, [
("boldref2fmap_xfm", "inputnode.boldref2fmap_xfm"),
]),
(unwarp_wf, func_fit_reports_wf, [("outputnode.fieldmap", "inputnode.fieldmap")]),
])
# fmt:on
else:
Expand Down
50 changes: 50 additions & 0 deletions fmriprep/workflows/bold/outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ def init_func_fit_reports_wf(
from niworkflows.interfaces.reportlets.registration import (
SimpleBeforeAfterRPT as SimpleBeforeAfter,
)
from sdcflows.interfaces.reportlets import FieldmapReportlet

workflow = pe.Workflow(name=name)

Expand All @@ -198,9 +199,12 @@ def init_func_fit_reports_wf(
"sdc_boldref",
"coreg_boldref",
"boldref2anat_xfm",
"boldref2fmap_xfm",
"t1w_preproc",
"t1w_mask",
"t1w_dseg",
"fieldmap",
"fmap_ref",
# May be missing
"subject_id",
"subjects_dir",
Expand Down Expand Up @@ -267,6 +271,40 @@ def init_func_fit_reports_wf(
# After: Resampled boldref with white matter mask

if sdc_correction:
fmapref_boldref = pe.Node(
ApplyTransforms(
dimension=3,
default_value=0,
float=True,
invert_transform_flags=[True],
interpolation="LanczosWindowedSinc",
),
name="fmapref_boldref",
mem_gb=1,
)

# SDC1
sdcreg_report = pe.Node(
FieldmapReportlet(
reference_label="BOLD reference",
moving_label="Fieldmap reference",
show="both",
),
name="sdecreg_report",
mem_gb=0.1,
)

ds_sdcreg_report = pe.Node(
DerivativesDataSink(
base_directory=output_dir,
desc="sdcreg",
suffix="bold",
datatype="figures",
dismiss_entities=("echo",),
),
name="ds_sdcreg_report",
)

# SDC2
sdc_report = pe.Node(
SimpleBeforeAfter(
Expand All @@ -291,6 +329,18 @@ def init_func_fit_reports_wf(

# fmt:off
workflow.connect([
(inputnode, fmapref_boldref, [
('fmap_ref', 'input_image'),
('coreg_boldref', 'reference_image'),
('boldref2fmap_xfm', 'transforms'),
]),
(inputnode, sdcreg_report, [
('sdc_boldref', 'reference'),
('fieldmap', 'fieldmap')
]),
(fmapref_boldref, sdcreg_report, [('output_image', 'moving')]),
(inputnode, ds_sdcreg_report, [('source_file', 'source_file')]),
(sdcreg_report, ds_sdcreg_report, [('out_report', 'in_file')]),
(inputnode, sdc_report, [
('sdc_boldref', 'before'),
('coreg_boldref', 'after'),
Expand Down

0 comments on commit 4f6b565

Please sign in to comment.