Summary of what happened:
We’ve been processing multi-echo data through fMRIprep and Tedana and everything has gone “smooth” so far. There was a hiccup during the initial fMRIPrep that due to something (I can’t quite remember the reason but it was recommended by the fMRIPrep team) we ended up needing to skip bids-validation due to an issue with the latest version of fMRIPrep. We successfully created our custom confounds and are trying to get XCP-D running but we’re coming into some weird errors that I have a feeling is related to this BIDS issue. Is there a way to skip the BIDS validation in XCP_D if it does it?
Command used (and if a helper script was used, a link to the helper script or the command generated):
The commands used are a bit weird because we needed to run this off of IBM’s bsub system which is not ideal for a lot of neuroimaging purposes. To make XCP-D work we had to create two seperate scripts, one for setting up and calling the run and the other for actually calling XCP-D within the docker image.
#!/bin/sh
# ----------- System Environment Variables-------------- #
# Grab passed in subject
export SUBJECT=$1
# Define storage allocations areas of interest
# Alter the XCP_D entry point to be /bin/bash so it cooperated with bsub and XCP_D
# is not automatically called upon entering the docker image without options.
export LSF_DOCKER_ENTRYPOINT=/bin/bash
export LSF_DOCKER_PRESERVE_ENVIRONMENT=true
# -------- Call to bsub to run the bsub file ------------ #
export OUTPUT_DIR=${STORAGE_ALLOCATION}moochie/analysis/CARE/ME_XCP_kirk_data/
export LSF_DOCKER_VOLUMES="/storage1/fs1/perlmansusan/Active:/storage1/fs1/perlmansusan/Active /scratch1/fs1/perlmansusan:/scratch1/fs1/perlmansusan ${FMRIPREP_DIR}:/fmriprep ${OUTPUT_DIR}:/output ${LICENSE_DIR}:/freesurfer ${CONFOUND_DIR}:/custom_confounds /home/$USER:/home/$USER"
bsub -J $SUBJECT-xcp_d-kirk -oo logs/xcp_d/$SUBJECT-xcp_d-kirk.log -g /$USER/preprocessing < xcp-d_bsub_kirk.sh
# LSBATCH: User input
#!/bin/sh
#BSUB -G compute-perlmansusan
#BSUB -q general
#BSUB -m general
#BSUB -a 'docker(pennlinc/xcp_d:latest)'
#BSUB -n 16
#BSUB -R 'rusage[mem=26GB] select[mem>25000 && tmp>250]'
TMP_DIR=`ls /tmp/`
cd /fmriprep
mkdir /tmp/$TMP_DIR/scratch
mkdir /tmp/$TMP_DIR/output
ls /fmriprep
/usr/local/miniconda/bin/xcp_d /fmriprep /tmp/$TMP_DIR/output participant \
--participant-label sub-$SUBJECT \
-w /tmp/$TMP_DIR/scratch \
--low-mem \
--fs-license-file $LICENSE_DIR\license.txt \
--mode none \
--input-type fmriprep \
--file-format nifti \
--despike y \
-p none \
-c /custom_confounds \
--smoothing 0 \
--motion-filter-type none \
-r 40 \
-f 0.3 \
--min-time 0 \
--output-type censored \
--min-coverage 0.25 \
--abcc-qc y \
--combine-runs n\
--linc-qc y \
--warp-surfaces-native2std n
cp -r /tmp/$TMP_DIR/output/ /output/
Version:
docker image pennlinc/xcp_d:latest(0.9.1?)
Environment (Docker, Singularity / Apptainer, custom installation):
We ran this on LSF bsub system using the XCP-D docker image.
Data formatted according to a validatable standard? Please provide the output of the validator:
We had to skip during fMRIPrep validation due to an error with the fmriprep version we were using, this was recommended by the fMRIPrep creator’s due to the specific error we encountered. However all subjects (~180) were processed through fMRIprep and Tedana successfully without errors. That being said
Relevant log outputs (up to 20 lines):
Atlas 'MIDB' requires CIFTI processing. Skipping atlas.
Atlas 'MyersLabonte' requires CIFTI processing. Skipping atlas.
Custom confounds were provided, but --nuisance-regressors was set to none. Overriding the 'none' value and setting to 'custom'.
Traceback (most recent call last):
File "/usr/local/miniconda/bin/xcp_d", line 8, in <module>
sys.exit(main())
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/cli/run.py", line 27, in main
parse_args(args=sys.argv[1:])
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/cli/parser.py", line 868, in parse_args
config.from_dict({})
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/config.py", line 664, in from_dict
execution.load(settings, init=initialize("execution"), ignore=ignore)
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/config.py", line 237, in load
cls.init()
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/config.py", line 478, in init
cls._layout = BIDSLayout(
File "/usr/local/miniconda/lib/python3.10/site-packages/bids/layout/layout.py", line 177, in __init__
_indexer(self)
File "/usr/local/miniconda/lib/python3.10/site-packages/bids/layout/index.py", line 148, in __call__
all_bfs, all_tag_dicts = self._index_dir(self._layout._root, self._config)
File "/usr/local/miniconda/lib/python3.10/site-packages/bids/layout/index.py", line 208, in _index_dir
_, dirnames, filenames = next(path.fs.walk(path.path))
StopIteration: ('/fmriprep', [], [])