Does BIDS support uneven number of sessions in a dataset?

My lab has a longitudinal dataset, with only ~20% of subjects having completed time-point 2.
In addition, several subjects have multiple sessions for time point 1. Some of these were re-scans due to scanning troubles; others were administered another version of the same task.
The number of sessions is not equal across subjects: some have 2 to 3 sessions at time-point 1, most have only 1.

Does BIDS allow an uneven number of sessions across subjects? (e.g. ses-tp01a, ses-tp01b, etc.)
If not, if a subject was given multiple sessions at time-point 1, would I have to decide after conversion which scans I would include, and collapse these into ses-tp01?

As long as your session naming is consistent, that should be fine in theory. However, unless I’m mistaken, it sounds like what you’re describing is multiple runs in a session, as opposed to multiple sessions in a timepoint. Make sure that it wouldn’t make more sense to have those two or three sessions be coded as runs, while the time point gets the session label.

For example, ses-tp01_run-1 or _run-2 or _run-3.

Apologies for the ambiguity. I mean multiple sessions in a single timepoint.

E.g. subject comes in for time-point 1 scan. Scanner has an issue when running diffusion protocol (timepoint 1, session-1). They come back a couple months later, get a new anatomical and new diffusion scan (timepoint 1, session-2). There is some data we use from both sessions.

Another example:
Subject comes in for 1 version of an fMRI task (timepoint 1, session-1), comes back a few months later to recieve the same fMRI task, but slightly different design (timepoint 1, session-2). N.B. MOST subjects have only one session in timepoint 1.

Understood. BIDS definitely would support different # sessions between subjects. In this case, you might want to consider having all session labels have an a/b suffix, even though most subjects will only have an a. This way, there will be more consistency (that is, everyone who has done timepoint 1 will have a tp01a label).

It is also possible that it would still be more “BIDSy” to have one session per time point, and include everything as different runs. However, since apps like fMRIPrep/QSIPrep may work with all data in a session (such as when making templates), this may not be ideal, especially if this is developmental data when few months can have nontrivial effects on brain shape/function.

Maybe someone who works on BIDS can chime in, but if you’re mainly considered about “will it pass the BIDS-validator”, I think either option would work. In either case, good documentation outside of data storage will be important to keep everything organized!

Hope this helps,