Table of Contents

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).

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


Back to FAQ