Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/maint/24.1.x'
Browse files Browse the repository at this point in the history
  • Loading branch information
effigies committed Dec 11, 2024
2 parents b6c7b95 + 433d42d commit 3e77638
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 24 deletions.
29 changes: 19 additions & 10 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,27 +1,36 @@
24.1.2 (To be determined)
=========================
Bug fix release in the 24.1.x series.

* FIX: Ensure fieldmap is resampled correctly in report (#3387)


24.1.1 (October 10, 2024)
=========================
Bug fix release in the 24.1.x series.

Precomputed functional derivatives were not being correctly detected,
and a couple fixes for rare issues.

* FIX: Remove checks for unit zooms and symmetric rotations in template warp (#3376)
* FIX: Stop excluding FS minc_modify_header used during fallback registration (#3372)
* FIX: Repair search for precomputed bold references (#3370)
* FIX: Repair search for precomputed transforms (#3369)
* FIX: Remove checks for unit zooms and symmetric rotations in template warp (#3376)
* FIX: Stop excluding FS minc_modify_header used during fallback registration (#3372)
* FIX: Repair search for precomputed bold references (#3370)
* FIX: Repair search for precomputed transforms (#3369)


24.1.0 (September 16, 2024)
===========================
New feature release in the 24.1.x series.

Handling of gradient echo fieldmaps is improved.

* FIX: Select volumetric dseg.tsv from recent TemplateFlow releases (#3257)
* RF: Adapt to less T1w-centric smriprep (#3333)
* RF: Use acres over vendored data loader (#3323)
* DOC: Add benchmark page (#3312)
* MAINT: Move to tox to simplify test/CI setup (#3326)
* CI: Fix expected outputs for fieldmaps (#3321)
* FIX: Select volumetric dseg.tsv from recent TemplateFlow releases (#3257)
* RF: Adapt to less T1w-centric smriprep (#3333)
* RF: Use acres over vendored data loader (#3323)
* DOC: Add benchmark page (#3312)
* MAINT: Move to tox to simplify test/CI setup (#3326)
* CI: Fix expected outputs for fieldmaps (#3321)


24.0.1 (July 16, 2024)
======================
Expand Down
5 changes: 1 addition & 4 deletions fmriprep/cli/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,6 @@ def _to_gb(value):
units = value[len(digits) :] or 'M'
return int(digits) * scale[units[0]]

def _drop_sub(value):
return value[4:] if value.startswith('sub-') else value

def _process_value(value):
import bids

Expand Down Expand Up @@ -205,7 +202,7 @@ def _slice_time_ref(value, parser):
'--participant_label',
action='store',
nargs='+',
type=_drop_sub,
type=lambda label: label.removeprefix('sub-'),
help='A space delimited list of participant identifiers or a single '
'identifier (the sub- prefix can be removed)',
)
Expand Down
10 changes: 6 additions & 4 deletions fmriprep/reports/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,12 @@ def generate_reports(

if isinstance(subject_list, str):
subject_list = [subject_list]
if isinstance(session_list, str):
session_list = [session_list]

errors = []
for subject_label in subject_list:
subject_label = subject_label.removeprefix('sub-')
# The number of sessions is intentionally not based on session_list but
# on the total number of sessions, because I want the final derivatives
# folder to be the same whether sessions were run one at a time or all-together.
Expand All @@ -95,7 +98,7 @@ def generate_reports(
else:
# Beyond a threshold, we separate the anatomical report from the functional.
bootstrap_file = data.load('reports-spec-anat.yml')
html_report = f'sub-{subject_label.lstrip("sub-")}_anat.html'
html_report = f'sub-{subject_label}_anat.html'

report_error = run_reports(
output_dir,
Expand All @@ -121,12 +124,11 @@ def generate_reports(
subject=subject_label, **filters
)

# Drop ses- prefixes
session_list = [ses[4:] if ses.startswith('ses-') else ses for ses in session_list]
session_list = [ses.removeprefix('ses-') for ses in session_list]

for session_label in session_list:
bootstrap_file = data.load('reports-spec-func.yml')
html_report = f'sub-{subject_label.lstrip("sub-")}_ses-{session_label}_func.html'
html_report = f'sub-{subject_label}_ses-{session_label}_func.html'

report_error = run_reports(
output_dir,
Expand Down
2 changes: 1 addition & 1 deletion fmriprep/utils/bids.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ def validate_input_dir(exec_env, bids_dir, participant_label, need_T1w=True):
# Limit validation only to data from requested participants
if participant_label:
all_subs = {s.name[4:] for s in bids_dir.glob('sub-*')}
selected_subs = {s[4:] if s.startswith('sub-') else s for s in participant_label}
selected_subs = {s.removeprefix('sub-') for s in participant_label}
bad_labels = selected_subs.difference(all_subs)
if bad_labels:
error_msg = (
Expand Down
25 changes: 20 additions & 5 deletions fmriprep/workflows/bold/outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -316,14 +316,26 @@ def init_func_fit_reports_wf(
mem_gb=1,
)

fmap_boldref = pe.Node(
ApplyTransforms(
dimension=3,
default_value=0,
float=True,
invert_transform_flags=[True],
interpolation='LanczosWindowedSinc',
),
name='fmap_boldref',
mem_gb=1,
)

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

Expand Down Expand Up @@ -360,19 +372,23 @@ def init_func_fit_reports_wf(
name='ds_sdc_report',
)

# fmt:off
workflow.connect([
(inputnode, fmapref_boldref, [
('fmap_ref', 'input_image'),
('coreg_boldref', 'reference_image'),
('boldref2fmap_xfm', 'transforms'),
]),
(inputnode, fmap_boldref, [
('fieldmap', 'input_image'),
('coreg_boldref', 'reference_image'),
('boldref2fmap_xfm', 'transforms'),
]),
(inputnode, sdcreg_report, [
('sdc_boldref', 'reference'),
('fieldmap', 'fieldmap'),
('bold_mask', 'mask'),
]),
(fmapref_boldref, sdcreg_report, [('output_image', 'moving')]),
(fmap_boldref, sdcreg_report, [('output_image', 'fieldmap')]),
(inputnode, ds_sdcreg_report, [('source_file', 'source_file')]),
(sdcreg_report, ds_sdcreg_report, [('out_report', 'in_file')]),
(inputnode, sdc_report, [
Expand All @@ -382,8 +398,7 @@ def init_func_fit_reports_wf(
(boldref_wm, sdc_report, [('output_image', 'wm_seg')]),
(inputnode, ds_sdc_report, [('source_file', 'source_file')]),
(sdc_report, ds_sdc_report, [('out_report', 'in_file')]),
])
# fmt:on
]) # fmt:skip

# EPI-T1 registration
# Resample T1w image onto EPI-space
Expand Down

0 comments on commit 3e77638

Please sign in to comment.