Skip to content

Commit

Permalink
Fix.
Browse files Browse the repository at this point in the history
  • Loading branch information
tsalo committed Nov 20, 2023
1 parent 302c157 commit 14bddc0
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
36 changes: 36 additions & 0 deletions aslprep/utils/bids.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,3 +309,39 @@ def find_atlas_entities(filename):
out += [suffix, extension]

return tuple(out)


def extract_entities(file_list):
"""Return a dictionary of common entities given a list of files.
TODO: Replace with fMRIPrep import once next is merged and released.
Examples
--------
>>> extract_entities("sub-01/anat/sub-01_T1w.nii.gz")
{'subject': '01', 'suffix': 'T1w', 'datatype': 'anat', 'extension': '.nii.gz'}
>>> extract_entities(["sub-01/anat/sub-01_T1w.nii.gz"] * 2)
{'subject': '01', 'suffix': 'T1w', 'datatype': 'anat', 'extension': '.nii.gz'}
>>> extract_entities(["sub-01/anat/sub-01_run-1_T1w.nii.gz",
... "sub-01/anat/sub-01_run-2_T1w.nii.gz"])
{'subject': '01', 'run': [1, 2], 'suffix': 'T1w', 'datatype': 'anat', 'extension': '.nii.gz'}
"""
from collections import defaultdict

from bids.layout import parse_file_entities
from niworkflows.utils.connections import listify

entities = defaultdict(list)
for e, v in [
ev_pair for f in listify(file_list) for ev_pair in parse_file_entities(f).items()
]:
entities[e].append(v)

def _unique(inlist):
inlist = sorted(set(inlist))
if len(inlist) == 1:
return inlist[0]
return inlist

return {k: _unique(v) for k, v in entities.items()}
2 changes: 1 addition & 1 deletion aslprep/workflows/asl/fit.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
import nibabel as nb
from fmriprep import config
from fmriprep.interfaces.reports import FunctionalSummary
from fmriprep.utils.bids import extract_entities
from fmriprep.workflows.bold.registration import init_bold_reg_wf
from nipype.interfaces import utility as niu
from nipype.pipeline import engine as pe
Expand All @@ -46,6 +45,7 @@
)
from aslprep.interfaces.utility import ReduceASLFiles
from aslprep.utils.asl import select_processing_target
from aslprep.utils.bids import extract_entities # TODO: Replace with fMRIPrep import
from aslprep.workflows.asl.hmc import init_asl_hmc_wf
from aslprep.workflows.asl.outputs import (
init_asl_fit_reports_wf,
Expand Down

0 comments on commit 14bddc0

Please sign in to comment.