====== fMRIPrep ======
**Development Paused**
- resource required is too high for limited time of usefulness on Rocket
> fMRIPrep is a NiPreps (NeuroImaging PREProcessing toolS) application (www.nipreps.org) for the preprocessing of task-based and resting-state functional MRI (fMRI).
* https://fmriprep.org/en/stable/index.html
===== Installation ======
You do **not** need Docker or other container tools in order to use fMRIPrep. The installation is quite simple using standard Python //venv// tools, as available on our HPC facilities.
#!/bin/bash
DEST_DIR=/nobackup/njps3/fmriprep
# Load software modules needed to build
echo "Loading HPC software modules..."
module load Python/3.11.3-GCCcore-12.3.0
module load CMake
module load Autoconf
module load Automake
module load GCC
echo "- Ok"
echo ""
# Create virtual environment to install dependencies
echo "Creating installation folder..."
python -m venv ${DEST_DIR}
mkdir -p ${DEST_DIR}/downloads
echo "- Your fmriprep software will all be installed under: ${DEST_DIR}"
echo "- Downloads will all be stored under: ${DEST_DIR}/downloads"
echo ""
echo "Activate new installation folder environment..."
echo "- Before: python was `which python3`"
echo "- Before: pip was `which pip3`"
source ${DEST_DIR}/bin/activate
echo "- After: python is now `which python3`"
echo "- After: pip is now `which pip3`"
echo ""
# Install fmriprep dependencies
echo "Installing requirements..."
echo "- This may take a while......."
echo ""
############################################
# FSL
############################################
echo "Downloading FSL..."
cd ${DEST_DIR} ; wget -nc -q https://fsl.fmrib.ox.ac.uk/fsldownloads/fslconda/releases/fslinstaller.py -O ${DEST_DIR}/downloads/fslinstaller.py
if [ -s "$DEST_DIR/downloads/fslinstaller.py" ]
then
echo "- Running FSL installation..."
echo "- Ok"
echo ""
else
echo "- ERROR - Cannot run FSL installation..."
exit 1
fi
############################################
# ANTS
############################################
echo "Downloading ANTs..."
cd ${DEST_DIR} ; git clone -q https://github.com/ANTsX/ANTs.git
if [ -d "${DEST_DIR}/ANTs" ]
then
echo "- Running ANTs installation..."
#mkdir ants-build
#cd ants-build
#cmake -DCMAKE_INSTALL_PREFIX=${DEST_DIR} ../ANTs
#make -j 4
#cd ANTS-build
#make install
echo "- Ok"
echo ""
else
echo "- ERROR - Cannot run ANTs installation..."
exit 1
fi
############################################
# Motif - needed for AFNI
############################################
echo "Downloading Motif..."
cd ${DEST_DIR} ; wget -nc -q https://sourceforge.net/projects/motif/files/Motif%202.3.8%20Source%20Code/motif-2.3.8.tar.gz/download -O ${DEST_DIR}/downloads/motif.tgz
if [ -s "${DEST_DIR}/downloads/motif.tgz" ]
then
if [ -s "${DEST_DIR}/lib/libXm.so.4.0.4" ]
then
echo "- Motif already installed at ${DEST_DIR}/lib/libXm.so.4.0.4"
echo "- Ok"
echo ""
else
if [ -s "${DEST_DIR}/motif-2.3.8/README" ]
then
echo "- Motif src already unpacked"
else
echo "- Unpacking Motif src..."
cd ${DEST_DIR} && tar xfz ${DEST_DIR}/downloads/motif.tgz
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - Unpacking Motif src failed..."
exit 1
fi
fi
echo "- Installing Motif..."
module purge
module load Autoconf
module load GCC
module load make
module load X11
module load flex
cd ${DEST_DIR}/motif-2.3.8 && ./configure --prefix=${DEST_DIR}
# THe old Motif package has loads of bugs, here is one that stops it compiling:
# https://www.linuxquestions.org/questions/linux-enterprise-47/error-when-compling-motif-4175669180/
# https://bugs.gentoo.org/592868
# Inject "%option main" to the top of wmluiltok.l
# To fix the compile bug referenced above
grep "option main" tools/wml/wmluiltok.l 2>/dev/null
if [ "$?" = "0" ]
then
echo "- Already patched with compile fix..."
else
echo "- Adding compile fix patch..."
sed -i '1s/^/%option main\n /' tools/wml/wmluiltok.l
fi
make && make install
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
fi
else
echo "- ERROR - Cannot run Motif installation..."
exit 1
fi
############################################
# AFNI
############################################
echo "Downloading AFNI..."
cd ${DEST_DIR} ; wget -nc -q https://afni.nimh.nih.gov/pub/dist/tgz/afni_src.tgz -O ${DEST_DIR}/downloads/afni_src.tgz
if [ -s "${DEST_DIR}/downloads/afni_src.tgz" ]
then
if [ -s "${DEST_DIR}/bin/afni" ]
then
echo "- AFNI already installed at ${DEST_DIR}/bin/afni"
echo "- Ok"
echo ""
else
if [ -s "${DEST_DIR}/afni_src/Makefile.linux_openmp_64" ]
then
echo "- AFNI src already unpacked"
else
echo "- Unpacking AFNI src..."
cd ${DEST_DIR} && tar xfz ${DEST_DIR}/downloads/afni_src.tgz
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - Unpacking AFI src failed..."
exit 1
fi
fi
echo "- Running AFNI installation..."
cd afni_src
module purge
module load GCC
module load make
module load X11
#module load motif
# The makefile is a bit broken.
# It has a hardcoded to call /usr/bin/gcc ...
# It has a non-standard parameter to gcc '-V'
cat Makefile.linux_openmp_64 | \
sed 's/\/usr\/bin\/gcc/gcc/g' | \
sed 's/\-V\ 34//g' > Makefile.rocket
make -f Makefile.rocket vastness
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
fi
else
echo "- ERROR - Cannot run AFNI installation..."
exit 1
fi
############################################
# Freesurfer
############################################
echo "Downloading Freesurfer (this takes a long time)..."
cd ${DEST_DIR} ; wget -nc -q https://surfer.nmr.mgh.harvard.edu/pub/dist/freesurfer/7.4.1/freesurfer-linux-centos7_x86_64-7.4.1.tar.gz -O ${DEST_DIR}/downloads/freesurfer.tgz
if [ -s "${DEST_DIR}/downloads/freesurfer.tgz" ]
then
echo "- Running Freesurfer installation..."
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
else
echo "- ERROR - Cannot run Freesurfer installation..."
exit 1
fi
##########################################
# glibc_2.18 for deno
# deno has a dependency on >=glibc2.18 - which is
# newer than Rocket has. For Comet or other
# newer platforms, this is NOT needed.
##########################################
echo "Downloading glibc (for deno runtime)..."
cd ${DEST_DIR} ; wget -nc -q https://ftp.gnu.org/gnu/glibc/glibc-2.41.tar.gz -O ${DEST_DIR}/downloads/glibc-2.41.tar.gz
if [ -s "${DEST_DIR}/glibc-2.41.tar.gz" ]
then
if [ -s "${DEST_DIR}/lib/libc.so" ]
then
echo "- glibc is already installed at ${DEST_DIR}/lib/libc.so"
echo "- Ok"
echo ""
else
echo "- Running glibc installation..."
echo "- LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
echo "- PWD: `pwd`"
module purge
module load Python/3.11.3-GCCcore-12.3.0
module load CMake
module load Autoconf
module load Automake
module load GCC
module load make
tar xfz ${DEST_DIR}/downloads/glibc-2.41.tar.gz
cd ${DEST_DIR}/glibc-2.41
mkdir build
cd build
../configure --prefix=${DEST_DIR}/glibc
make -j4
make install
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
fi
else
echo "- ERROR - Cannot run glibc installation..."
exit 1
fi
##########################################
# deno
##########################################
echo "Downloading deno..." ; wget -nc -q https://github.com/denoland/deno/releases/download/v2.3.3/deno-x86_64-unknown-linux-gnu.zip -O ${DEST_DIR}/downloads/deno.zip
if [ -s "${DEST_DIR}/downloads/deno.zip" ]
then
if [ -x "${DEST_DIR}/bin/deno" ]
then
echo "- deno is already installed at ${DEST_DIR}/bin/deno"
echo "- Ok"
echo ""
else
echo "- Unzipping deno..."
cd ${DEST_DIR} && unzip ${DEST_DIR}/downloads/deno.zip && mv -fv ${DEST_DIR}/deno ${DEST_DIR}/bin/deno
chmod +x ${DEST_DIR}/bin/deno
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
fi
else
echo "- ERROR - Cannot unzip deno..."
exit 1
fi
##########################################
# bids-validator
###########################################
echo "Installing bids-validator..."
module purge
module load Python/3.11.3-GCCcore-12.3.0
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${DEST_DIR}/glibc
echo "- LD_LIBRARY_PATH: $LD_LIBRARY_PATH"
pip3 install bids-validator-deno
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - Cannot install bids-validator"
exit 1
fi
##########################################
# Connectome-workbench
##########################################
echo "Downloading connectome-workbench..."
cd ${DEST_DIR} ; wget -nc -q https://www.humanconnectome.org/storage/app/media/workbench/workbench-rh_linux64-v2.0.1.zip -O ${DEST_DIR}/downloads/workbench.zip
if [ -s "${DEST_DIR}/downloads/workbench.zip" ]
then
echo "- Running connectome-workbench installation..."
if [ "$?" = "0" ]
then
echo "- Ok"
echo ""
else
echo "- ERROR - installation failed..."
exit 1
fi
else
echo "- ERROR - Cannot run connectome-workbench installation..."
exit 1
fi
== Testing ==
===== Using Flower =====
----
[[:faq:index|Back to FAQ]]