I am using fMRIPrep (v20.0.1) and would have liked to use a custom template for normalization (not uploaded to the templateflow repository). I have followed the steps described in https://fmriprep.readthedocs.io/en/stable/spaces.html#custom-standard-spaces. When I run the code (using a custom template that is structured according to the templateflow structure) I get an error which says that the name of the template (here: ‘tpl-MyCustom’) is not a valid identifier - since it’s not part of a list of predefined templates (the exact error is: ValueError: space identifier “/imports/tpl-MyCustom” is invalid; Valid identifiers are: […]). However, I understood from the documentation that the use of a custom template is already a feature that is available in fMRIPrep 20.0.0. Did I misunderstand the documentation, and is the use of a custom template not yet available in fMRIPrep 20.0.1? If so, when do you think it might be available?
Thanks in advance.
Hi @halmgren - are you running fMRIPrep through a container? If so, is your TemplateFlow directory (where your custom template should be) mounted?
Hi, yes I am running fmriprep through a container (using the fmriprep-docker command), and the templateflow directory is mounted (tried with different directories to be sure).
This is the command I use:
fmriprep-docker [path_to_BIDS_folder] [path_to_output_folder] participant --work-dir [path_to_work_dir] --participant-label 1 --output-spaces [path_to_templateflow_folder]/tpl-MyCustom --fs-license-file [path_to_freesurfer_folder]/license.txt --nthreads 12 --fs-no-reconall
This is the how my templateflow directory looks like:
This is the response I get:
RUNNING: docker run --rm -it -e DOCKER_VERSION_xxx=18.04.0-ce -v [path_to_freesurfer_folder]/license.txt:/opt/freesurfer/license.txt:ro -v [path_to_BIDS_folder]:/data:ro -v [path_to_output_folder]:/out -v [path_to_work_dir]:/scratch -v [path_to_templateflow_folder]/tpl-MyCustom:/imports/tpl-MyCustom:ro poldracklab/fmriprep:20.0.1 /data /out participant --participant-label 1 --nthreads 12 --fs-no-reconall -w /scratch --output-spaces /imports/tpl-MyCustom
And this is the line at which the error occurs:
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/utils/spaces.py”, line 220, in _check_name
‘identifiers are: %s’ % (value, ', '.join(valid)))
I have checked the code as well (i.e. spaces.py), but didn’t find where it allows to include custom templates.
Thanks for the detailed response, the problem is due to a bug in the
fmriprep-docker wrapper and will be fixed in an upcoming release.
@halmgren a new version (20.0.2) is out that should fix the issue
Great, it indeed works now.
Thanks a lot!