@@ -242,6 +242,14 @@ def collect_data(
242242 ...
243243 ValueError: Conflicting entities for "session" found: madeup // retest
244244
245+ >>> bids_root, _ = collect_data(
246+ ... str(datadir / 'ds114'),
247+ ... '01',
248+ ... bids_validate=False,
249+ ... session_id=None,
250+ ... bids_filters={'t1w': {'session': 'retest'}})
251+ >>> bids_root['t1w'] # doctest: +ELLIPSIS
252+ ['.../ds114/sub-01/ses-retest/anat/sub-01_ses-retest_T1w.nii.gz']
245253 """
246254 if isinstance (bids_dir , BIDSLayout ):
247255 layout = bids_dir
@@ -251,11 +259,12 @@ def collect_data(
251259 if not queries :
252260 queries = copy .deepcopy (DEFAULT_BIDS_QUERIES )
253261
262+ session_id = session_id or Query .OPTIONAL
254263 layout_get_kwargs = {
255264 'return_type' : 'file' ,
256265 'subject' : participant_label ,
257266 'extension' : ['.nii' , '.nii.gz' ],
258- 'session' : session_id or Query . OPTIONAL ,
267+ 'session' : session_id ,
259268 }
260269
261270 reserved_entities = [('subject' , participant_label ), ('session' , session_id )]
@@ -264,6 +273,8 @@ def collect_data(
264273 for acq , entities in bids_filters .items ():
265274 # BIDS filters will not be able to override subject / session entities
266275 for entity , param in reserved_entities :
276+ if param == Query .OPTIONAL :
277+ continue
267278 if entity in entities and listify (param ) != listify (entities [entity ]):
268279 raise ValueError (
269280 f'Conflicting entities for "{ entity } " found: { entities [entity ]} // { param } '
0 commit comments