Skip to content

Commit e423518

Browse files
committed
Support lists in bids_filter containing null or *
1 parent 7032782 commit e423518

File tree

2 files changed

+29
-9
lines changed

2 files changed

+29
-9
lines changed

fmriprep/cli/parser.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,24 @@ def _to_gb(value):
9090
def _drop_sub(value):
9191
return value[4:] if value.startswith("sub-") else value
9292

93-
def _filter_pybids_none_any(dct):
93+
def _process_value(value):
9494
import bids
9595

96-
return {
97-
k: bids.layout.Query.NONE if v is None else (bids.layout.Query.ANY if v == "*" else v)
98-
for k, v in dct.items()
99-
}
96+
if value is None:
97+
return bids.layout.Query.NONE
98+
elif value == "*":
99+
return bids.layout.Query.ANY
100+
else:
101+
return value
102+
103+
def _filter_pybids_none_any(dct):
104+
d = {}
105+
for k, v in dct.items():
106+
if isinstance(v, list):
107+
d[k] = [_process_value(val) for val in v]
108+
else:
109+
d[k] = _process_value(v)
110+
return d
100111

101112
def _bids_filter(value, parser):
102113
from json import JSONDecodeError, loads

fmriprep/config.py

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -493,12 +493,21 @@ def init(cls):
493493
if cls.bids_filters:
494494
from bids.layout import Query
495495

496+
def _process_value(value):
497+
"""Convert string with "Query" in it to Query object."""
498+
if isinstance(value, list):
499+
return [_process_value(val) for val in value]
500+
else:
501+
return (
502+
getattr(Query, value[7:-4])
503+
if not isinstance(value, Query) and "Query" in value
504+
else value
505+
)
506+
496507
# unserialize pybids Query enum values
497508
for acq, filters in cls.bids_filters.items():
498-
cls.bids_filters[acq] = {
499-
k: getattr(Query, v[7:-4]) if not isinstance(v, Query) and "Query" in v else v
500-
for k, v in filters.items()
501-
}
509+
for k, v in filters.items():
510+
cls.bids_filters[acq][k] = _process_value(v)
502511

503512
if "all" in cls.debug:
504513
cls.debug = list(DEBUG_MODES)

0 commit comments

Comments
 (0)