@@ -182,8 +182,14 @@ def init_smriprep_wf(
182
182
183
183
name = f'sub-{ subject_id } _wf'
184
184
if session_ids :
185
- if isinstance (session_ids , str ):
186
- ses_str = session_ids
185
+ ses_str = session_ids
186
+ if isinstance (session_ids , list ):
187
+ if len (session_ids ) == 1 :
188
+ ses_str = session_ids [0 ]
189
+ else :
190
+ from smriprep .utils .misc import hash_list
191
+
192
+ ses_str = hash_list (session_ids , digest_size = 2 )
187
193
188
194
name = f'sub-{ subject_id } _ses-{ ses_str } _wf'
189
195
@@ -358,7 +364,9 @@ def init_single_subject_wf(
358
364
'flair' : [],
359
365
}
360
366
else :
361
- subject_data = collect_data (layout , subject_id , bids_filters = bids_filters )[0 ]
367
+ subject_data = collect_data (
368
+ layout , subject_id , session_id = session_id , bids_filters = bids_filters
369
+ )[0 ]
362
370
363
371
if not subject_data ['t1w' ]:
364
372
raise Exception (
@@ -492,9 +500,17 @@ def _prefix(subject_id, session_id=None):
492
500
"""Create FreeSurfer subject ID."""
493
501
if not subject_id .startswith ('sub-' ):
494
502
subject_id = f'sub-{ subject_id } '
495
- if session_id and not isinstance (session_id , list ):
496
- # For now, drop ses label if multiple sessions
497
- if not session_id .startswith ('ses-' ):
498
- session_id = f'ses-{ session_id } '
499
- subject_id = f'{ subject_id } _{ session_id } '
503
+
504
+ if session_id :
505
+ ses_str = session_id
506
+ if isinstance (session_id , list ):
507
+ if len (session_id ) == 1 :
508
+ ses_str = session_id [0 ]
509
+ else :
510
+ from smriprep .utils .misc import hash_list
511
+
512
+ ses_str = f'multi{ hash_list (session_id , digest_size = 2 )} '
513
+ if not ses_str .startswith ('ses-' ):
514
+ ses_str = f'ses-{ ses_str } '
515
+ subject_id += f'_{ ses_str } '
500
516
return subject_id
0 commit comments