Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Remove non-alphanumeric characters from workflow names and output entities" #443

Merged
merged 1 commit into from
May 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions sdcflows/fieldmaps.py
Original file line number Diff line number Diff line change
Expand Up @@ -446,8 +446,7 @@ def get_workflow(self, set_inputs=True, **kwargs):
return self._wf

# Override workflow name
clean_bids_id = re.sub(r'[^a-zA-Z0-9]', '', self.bids_id)
kwargs["name"] = f"wf_{clean_bids_id}"
kwargs["name"] = f"wf_{self.bids_id}"

if self.method in (EstimatorType.MAPPED, EstimatorType.PHASEDIFF):
from .workflows.fit.fieldmap import init_fmap_wf
Expand Down
11 changes: 4 additions & 7 deletions sdcflows/workflows/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
# https://www.nipreps.org/community/licensing/
#
"""Estimate fieldmaps for :abbr:`SDC (susceptibility distortion correction)`."""
import re

from nipype import logging
from nipype.pipeline import engine as pe
from nipype.interfaces import utility as niu
Expand Down Expand Up @@ -108,7 +106,6 @@ def init_fmap_preproc_wf(
)

for n, estimator in enumerate(estimators, 1):
clean_bids_id = re.sub(r'[^a-zA-Z0-9]', '', estimator.bids_id)
est_wf = estimator.get_workflow(
omp_nthreads=omp_nthreads,
debug=debug,
Expand All @@ -119,15 +116,15 @@ def init_fmap_preproc_wf(
]

out_map = pe.Node(
niu.IdentityInterface(fields=out_fields), name=f"out_{clean_bids_id}"
niu.IdentityInterface(fields=out_fields), name=f"out_{estimator.bids_id}"
)
out_map.inputs.fmap_id = estimator.bids_id

fmap_derivatives_wf = init_fmap_derivatives_wf(
output_dir=str(output_dir),
write_coeff=True,
bids_fmap_id=estimator.bids_id,
name=f"fmap_derivatives_wf_{clean_bids_id}",
name=f"fmap_derivatives_wf_{estimator.bids_id}",
)
fmap_derivatives_wf.inputs.inputnode.source_files = source_files
fmap_derivatives_wf.inputs.inputnode.fmap_meta = [
Expand All @@ -138,15 +135,15 @@ def init_fmap_preproc_wf(
output_dir=str(output_dir),
fmap_type=str(estimator.method).rpartition(".")[-1].lower(),
bids_fmap_id=estimator.bids_id,
name=f"fmap_reports_wf_{clean_bids_id}",
name=f"fmap_reports_wf_{estimator.bids_id}",
)
fmap_reports_wf.inputs.inputnode.source_files = source_files

if estimator.method not in (EstimatorType.MAPPED, EstimatorType.PHASEDIFF):
fields = INPUT_FIELDS[estimator.method]
inputnode = pe.Node(
niu.IdentityInterface(fields=fields),
name=f"in_{clean_bids_id}",
name=f"in_{estimator.bids_id}",
)
# fmt:off
workflow.connect([
Expand Down
8 changes: 2 additions & 6 deletions sdcflows/workflows/fit/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@

def init_sdcflows_wf():
"""Create a multi-subject, multi-estimator *SDCFlows* workflow."""
import re

from nipype.pipeline.engine import Workflow
from niworkflows.utils.bids import collect_participants

Expand All @@ -53,8 +51,6 @@ def init_sdcflows_wf():

for subject, sub_estimators in estimators_record.items():
for estim in sub_estimators:
clean_bids_id = re.sub(r'[^a-zA-Z0-9]', '', estim.bids_id)

estim_wf = estim.get_workflow(
omp_nthreads=config.nipype.omp_nthreads,
sloppy=False,
Expand All @@ -65,7 +61,7 @@ def init_sdcflows_wf():
output_dir=config.execution.output_dir,
bids_fmap_id=estim.bids_id,
write_coeff=True,
name=f"fmap_derivatives_{clean_bids_id}",
name=f"fmap_derivatives_{estim.bids_id}",
)

source_paths = [
Expand All @@ -80,7 +76,7 @@ def init_sdcflows_wf():
fmap_type=estim.method,
output_dir=config.execution.output_dir,
bids_fmap_id=estim.bids_id,
name=f"fmap_reports_{clean_bids_id}",
name=f"fmap_reports_{estim.bids_id}",
)
reportlets_wf.inputs.inputnode.source_files = source_paths

Expand Down
6 changes: 2 additions & 4 deletions sdcflows/workflows/outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,6 @@
# https://www.nipreps.org/community/licensing/
#
"""Writing out outputs."""
import re

from nipype.pipeline import engine as pe
from nipype.interfaces import utility as niu
from niworkflows.interfaces.bids import DerivativesDataSink as _DDS
Expand Down Expand Up @@ -79,7 +77,7 @@ def init_fmap_reports_wf(

custom_entities = custom_entities or {}
if bids_fmap_id:
custom_entities["fmapid"] = re.sub(r'[^a-zA-Z0-9]', '', bids_fmap_id)
custom_entities["fmapid"] = bids_fmap_id.replace("_", "")

workflow = pe.Workflow(name=name)
inputnode = pe.Node(
Expand Down Expand Up @@ -158,7 +156,7 @@ def init_fmap_derivatives_wf(
"""
custom_entities = custom_entities or {}
if bids_fmap_id:
custom_entities["fmapid"] = re.sub(r'[^a-zA-Z0-9]', '', bids_fmap_id)
custom_entities["fmapid"] = bids_fmap_id.replace("_", "")

workflow = pe.Workflow(name=name)
inputnode = pe.Node(
Expand Down
6 changes: 1 addition & 5 deletions sdcflows/workflows/tests/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,7 @@
"""Test the base workflow."""
from pathlib import Path
import os
import re

import pytest

from sdcflows import fieldmaps as fm
from sdcflows.utils.wrangler import find_estimators
from sdcflows.workflows.base import init_fmap_preproc_wf
Expand Down Expand Up @@ -58,8 +55,7 @@ def test_fmap_wf(tmpdir, workdir, outdir, bids_layouts, dataset, subject):
if estimator.method != fm.EstimatorType.PEPOLAR:
continue

clean_bids_id = re.sub(r'[^a-zA-Z0-9]', '', estimator.bids_id)
inputnode = wf.get_node(f"in_{clean_bids_id}")
inputnode = wf.get_node(f"in_{estimator.bids_id}")
inputnode.inputs.in_data = [str(f.path) for f in estimator.sources]
inputnode.inputs.metadata = [f.metadata for f in estimator.sources]

Expand Down
Loading