Longitudinal QSIPrep pipeline (Combined T1w vs independent sessions) for an ongoing dataset

Hello,

I am setting up a pipeline for a longitudinal DTI study using QSIPrep, and I could use some advice on the best approach.

Currently, my dataset is a work in progress:

  • Some subjects already have two sessions (baseline and follow-up).

  • Other subjects only have one session right now, but their second session will be acquired and added in the future.

So far, I ran QSIPrep on a few of the subjects with two sessions at the same time, and I noticed it automatically created a combined T1w template for them. On the other hand, for the subjects with only one session, I just processed that single session normally.

My main question is about the best way to handle this moving forward to avoid processing biases. Does creating that combined T1w template make a significant difference for longitudinal DTI metrics? Or does it not matter too much if I just process every single session independently (e.g., treating session 1 and session 2 as completely separate runs) to keep the preprocessing perfectly uniform across my whole dataset as it grows?

For context, here are the two Docker commands I have been testing (one for the full subject, one for single sessions):

Bash

# Command for subjects with both sessions (generates combined T1w)

nohup docker run --rm \
-e ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=9 \
-e OMP_NUM_THREADS=9 \
-e MRTRIX_NTHREADS=9 \
-v /home/ax/QSIPrep_DTI:/data:ro \
-v /home/ax/QSIPrep_output_TOPUP:/out_topup \
-v /home/ax/QSIPrep_work_TOPUP:/work_topup \
-v /home/ax/license.txt:/opt/freesurfer/license.txt:ro \
pennlinc/qsiprep:latest \
/data /out_topup participant \
--participant-label S037 \
--skip-bids-validation \
--fs-license-file /opt/freesurfer/license.txt \
--work-dir /work_topup \
--output-resolution 1.3 \
--nprocs 18 \
--omp-nthreads 9 \
--mem 23000 > qsiprep_log_topup.txt 2>&1 &

# Command for subjects with only one session
nohup docker run --rm \
-e ITK_GLOBAL_DEFAULT_NUMBER_OF_THREADS=9 \
-e OMP_NUM_THREADS=9 \
-e MRTRIX_NTHREADS=9 \
-v /home/ax/QSIPrep_DTI:/data:ro \
-v /home/ax/QSIPrep_output_TOPUP:/out_topup \
-v /home/ax/QSIPrep_work_TOPUP:/work_topup \
-v /home/ax/license.txt:/opt/freesurfer/license.txt:ro \
pennlinc/qsiprep:latest \
/data /out_topup participant \
--participant-label S045 \
--session-id 1 \
--skip-bids-validation \
--fs-license-file /opt/freesurfer/license.txt \
--work-dir /work_topup \
--output-resolution 1.3 \
--nprocs 18 \
--omp-nthreads 9 \
--mem 23000 > qsiprep_log_topup.txt 2>&1 &

Hi @AxCurry30,

It shouldn’t. T1w is primarily used for registration purposes.

Some of this depends on the nature of your dataset. But in general I would prefer processing everything at the end using longitudinal subject average T1w, unless there is so much time between scans that an average T1w is not meaningful. That way, all your timepoints within a subject will be best aligned to each other.

If you really are worried about keeping your processing consistent across the length of the study, then you shouldn’t use qsiprep:latest and instead specify a version. We actively develop QSIPrep and if we release a software update then latest gets assigned to that newest version.

Best,
Steven

1 Like