Summary of what happened:
I am running fMRIprep over a BIDS dataset and have gotten errors for over half the subjects on errors related to FreeSurfer. Some of the subjects have multiple sessions so I’m not sure if that’s related to these errors. The successful runs typically only have 1 run in their /anat
folder. I am using fMRIprep v23.2.0 and Freesurfer v7.3.2,.
Command used (and if a helper script was used, a link to the helper script or the command generated):
Here’s my run command:
singularity run \
--cleanenv \
--containall \
-B ${TEMPLATEFLOW_DIR}:/opt/templateflow \
-B ${bids_root_dir}:/bids \
-B ${target_dir}:/out \
-B ${work_dir}:/work \
-B ${FS_LICENSE}:/license.txt \
$fmriprep_path \
/bids \
/out \
participant \
--participant-label $subj \
--skip-bids-validation \
--omp-nthreads 20 \
--mem_mb 350000 \
--fs-license-file $bids_root_dir/derivatives/freesurfer_license.txt \
--bids-filter-file $bids_root_dir/code/bids_filter.json \
--work-dir /scratch/groups/kpohl/data/work/ \
--output-spaces MNI152NLin2009cAsym:res-2 func \
--stop-on-first-crash \
--verbose \
Version:
23.2.0
Environment (Docker, Singularity / Apptainer, custom installation):
Singularity
Data formatted according to a validatable standard? Please provide the output of the validator:
PASTE VALIDATOR OUTPUT HERE
Relevant log outputs (up to 20 lines):
The first error occurs within the recon-all -autorecon1 command, specifically in the Talairach transformation:
--src: orig.mgz src image (geometry).
--trg: /opt/freesurfer/average/mni305.cor.mgz trg image (geometry).
--inmni: transforms/talairach.xfm input MNI/XFM transform.
--outlta: transforms/talairach.xfm.lta output LTA.
--s: fsaverage subject name
--ltavox2vox: output LTA as VOX_TO_VOX transform.
LTA read, type : 1
0.92433 -0.11243 0.14324 11.01506;
0.16067 -1.09314 15.85526 788.03479;
0.07971 2.21911 -11.43803 -597.01575;
0.00000 0.00000 0.00000 1.00000;
setting subject to fsaverage
Writing LTA to file transforms/talairach.xfm.lta...
lta_convert successful.
/out/sourcedata/freesurfer/sub-61/mri/transforms /out/sourcedata/freesurfer/sub-61/mri
/out/sourcedata/freesurfer/sub-61/mri
#--------------------------------------------
#@# Talairach Failure Detection Fri Mar 1 08:07:31 PST 2024
/out/sourcedata/freesurfer/sub-61/mri
talairach_afd -T 0.005 -xfm transforms/talairach.xfm
ERROR: talairach_afd: Talairach Transform: transforms/talairach.xfm ***FAILED*** (p=0.0000, pval=0.0000 < threshold=0.0050)
Manual Talairach alignment may be necessary, or
include the -notal-check flag to skip this test,
making sure the -notal-check flag follows -all
or -autorecon1 in the command string.
See:
http://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/Talairach
INFO: Retrying Talairach align using 3T-based atlas...
#--------------------------------------------
#@# Talairach Fri Mar 1 08:07:31 PST 2024
/out/sourcedata/freesurfer/sub-61/mri
mri_nu_correct.mni --no-rescale --i orig.mgz --o orig_nu.mgz --ants-n4 --n 1 --proto-iters 1000 --distance 50
/usr/bin/bc
/out/sourcedata/freesurfer/sub-61/mri
/opt/freesurfer/bin/mri_nu_correct.mni
--no-rescale --i orig.mgz --o orig_nu.mgz --ants-n4 --n 1 --proto-iters 1000 --distance 50
nIters 1
mri_nu_correct.mni 7.3.2
Linux sh03-13n05.int 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Fri Mar 1 08:07:31 PST 2024
tmpdir is ./tmp.mri_nu_correct.mni.115008
cd /out/sourcedata/freesurfer/sub-61/mri
AntsN4BiasFieldCorrectionFs -i orig.mgz -o ./tmp.mri_nu_correct.mni.115008/nu0.mgz --dtype uchar
AntsN4BiasFieldCorrectionFs done
mri_convert ./tmp.mri_nu_correct.mni.115008/nu0.mgz orig_nu.mgz --like orig.mgz --conform
mri_convert ./tmp.mri_nu_correct.mni.115008/nu0.mgz orig_nu.mgz --like orig.mgz --conform
reading from ./tmp.mri_nu_correct.mni.115008/nu0.mgz...
TR=0.00, TE=0.00, TI=0.00, flip angle=0.00
i_ras = (-1, -9.24047e-10, -1.16415e-10)
j_ras = (-1.74623e-10, 1.49012e-08, -1)
k_ras = (-2.77942e-09, 1, 1.49012e-08)
INFO: transform src into the like-volume: orig.mgz
writing to orig_nu.mgz...
Fri Mar 1 08:10:23 PST 2024
mri_nu_correct.mni done
talairach_avi --i orig_nu.mgz --xfm transforms/talairach.auto.xfm --atlas 3T18yoSchwartzReactN32_as_orig
talairach_avi log file is transforms/talairach_avi.log...
mv -f /out/sourcedata/freesurfer/sub-61/mri/talsrcimg_to_3T18yoSchwartzReactN32_as_orig_t4_vox2vox.txt /out/sourcedata/freesurfer/sub-61/mri/transforms/talsrcimg_to_3T18yoSchwartzReactN32_as_orig_t4_vox2vox.txt
Started at Fri Mar 1 08:10:23 PST 2024
Ended at Fri Mar 1 08:10:54 PST 2024
talairach_avi done
cp transforms/talairach.auto.xfm transforms/talairach.xfm
lta_convert --src orig.mgz --trg /opt/freesurfer/average/mni305.cor.mgz --inxfm transforms/talairach.xfm --outlta transforms/talairach.xfm.lta --subject fsaverage --ltavox2vox
7.3.2
--src: orig.mgz src image (geometry).
--trg: /opt/freesurfer/average/mni305.cor.mgz trg image (geometry).
--inmni: transforms/talairach.xfm input MNI/XFM transform.
--outlta: transforms/talairach.xfm.lta output LTA.
--s: fsaverage subject name
--ltavox2vox: output LTA as VOX_TO_VOX transform.
LTA read, type : 1
0.53527 0.65987 -3.08316 -133.94702;
-0.78485 0.30994 -4.63404 -235.27417;
-0.33244 0.75488 0.01389 -1.38382;
0.00000 0.00000 0.00000 1.00000;
setting subject to fsaverage
Writing LTA to file transforms/talairach.xfm.lta...
lta_convert successful.
/out/sourcedata/freesurfer/sub-61/mri/transforms /out/sourcedata/freesurfer/sub-61/mri
/out/sourcedata/freesurfer/sub-61/mri
#--------------------------------------------
#@# Talairach Failure Detection Fri Mar 1 08:10:56 PST 2024
/out/sourcedata/freesurfer/sub-61/mri
talairach_afd -T 0.005 -xfm transforms/talairach.xfm
ERROR: talairach_afd: Talairach Transform: transforms/talairach.xfm ***FAILED*** (p=0.0000, pval=0.0000 < threshold=0.0050)
Manual Talairach alignment may be necessary, or
include the -notal-check flag to skip this test,
making sure the -notal-check flag follows -all
or -autorecon1 in the command string.
See:
http://surfer.nmr.mgh.harvard.edu/fswiki/FsTutorial/Talairach
INFO: Trying MINC mritotal to perform Talairach align...
#--------------------------------------------
#@# Talairach Fri Mar 1 08:10:56 PST 2024
/out/sourcedata/freesurfer/sub-61/mri
mri_nu_correct.mni --no-rescale --i orig.mgz --o orig_nu.mgz --ants-n4 --n 1 --proto-iters 1000 --distance 50
/usr/bin/bc
/out/sourcedata/freesurfer/sub-61/mri
/opt/freesurfer/bin/mri_nu_correct.mni
--no-rescale --i orig.mgz --o orig_nu.mgz --ants-n4 --n 1 --proto-iters 1000 --distance 50
nIters 1
mri_nu_correct.mni 7.3.2
Linux sh03-13n05.int 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Fri Mar 1 08:10:56 PST 2024
tmpdir is ./tmp.mri_nu_correct.mni.115470
cd /out/sourcedata/freesurfer/sub-61/mri
AntsN4BiasFieldCorrectionFs -i orig.mgz -o ./tmp.mri_nu_correct.mni.115470/nu0.mgz --dtype uchar
AntsN4BiasFieldCorrectionFs done
mri_convert ./tmp.mri_nu_correct.mni.115470/nu0.mgz orig_nu.mgz --like orig.mgz --conform
mri_convert ./tmp.mri_nu_correct.mni.115470/nu0.mgz orig_nu.mgz --like orig.mgz --conform
reading from ./tmp.mri_nu_correct.mni.115470/nu0.mgz...
TR=0.00, TE=0.00, TI=0.00, flip angle=0.00
i_ras = (-1, -9.24047e-10, -1.16415e-10)
j_ras = (-1.74623e-10, 1.49012e-08, -1)
k_ras = (-2.77942e-09, 1, 1.49012e-08)
INFO: transform src into the like-volume: orig.mgz
writing to orig_nu.mgz...
Fri Mar 1 08:13:49 PST 2024
mri_nu_correct.mni done
talairach --i orig_nu.mgz --xfm transforms/talairach.auto.xfm
/out/sourcedata/freesurfer/sub-61/mri
/opt/freesurfer/bin/talairach
--i orig_nu.mgz --xfm transforms/talairach.auto.xfm
talairach 7.3.2
Linux sh03-13n05.int 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Fri Mar 1 08:13:49 PST 2024
tmpdir is transforms/tmp.talairach.115702
/out/sourcedata/freesurfer/sub-61/mri
mri_convert orig_nu.mgz transforms/tmp.talairach.115702/src.mnc
mri_convert orig_nu.mgz transforms/tmp.talairach.115702/src.mnc
reading from orig_nu.mgz...
TR=0.00, TE=0.00, TI=0.00, flip angle=0.00
i_ras = (-1, -9.24047e-10, -1.16415e-10)
j_ras = (-1.74623e-10, 1.49012e-08, -1)
k_ras = (-2.77942e-09, 1, 1.49012e-08)
writing to transforms/tmp.talairach.115702/src.mnc...
--------------------------------------------
mritotal -verbose -debug -clobber -modeldir /opt/freesurfer/mni/bin/../share/mni_autoreg -protocol icbm transforms/tmp.talairach.115702/src.mnc transforms/talairach.auto.xfm
spawn: exec of mincinfo failed: No such file or directory
mritotal: crashed while running mincinfo (termination status=65280)
ERROR: mritotal failed, see transforms/talairach.log
More information:
I have verified that the /anat
raw files for each subject have the same parameters, e.g. 2D T1-weighted. Previously, I noticed some subjects had both 2D and 3D T1-weighted images so I filtered those out by manually renaming the 3D filenames to include an acquisition and excluded them using a bids_filter file (criteria below):
{
"t1w": {
"datatype": "anat",
"acquisition": null,
"suffix": "T1w"
}
}
I have searched for existing solutions and they seem to all rely on running Freesurfer independently, but that would take a significant time to do for the number of subjects and data I have. Checking here to make sure I’m not missing anything critical before I pivot to another pipeline.