MURFI (multivariate and univariate real-time functional imaging) is a software package for real-time processing of functional brain images for neuroscience applications. At the moment murfi is fMRI-centric, but we plan to add support for other imaging modalities.
This is an open-source release of the MURFI platform (see LICENSE for details).
For using MURFI with Siemens scanners, a proprietary data transfer sequence called vsend can be obtained via a C2P agreement, or murfi can be configured to read 3D DICOMs exported in real-time to a shared folder. Alternatively, for non-Siemens scanners or for your own Siemens functors, Murfi will accept data over TCPIP conformant with the following structured information:
https://github.com/gablab/murfi2/blob/master/src/io/RtExternalSenderImageInfo.h
If you use MURFI in your own research, please cite:
Oliver Hinds, Satrajit Ghosh, Todd W Thompson, Julie J Yoo, Susan Whitfield-Gabrieli, Christina Triantafyllou, John D E Gabrieli (2011) Computing moment-to-moment BOLD activation for real-time neurofeedback. Neuroimage 54: 1. 361-368 Jan
http://dx.doi.org/10.1016/j.neuroimage.2010.07.060
-
Install apptainer >= 1.3.0 or SingularityCE >= 4.0.0
-
Download murfi as a pre-built singularity image:
singularity pull oras://ghcr.io/gablab/murfi-sif:latest
curl -L -o murfi_example_data.tgz 'https://www.dropbox.com/scl/fi/orklnabmriean1piyzbxi/murfi_example_data_v2.tgz?rlkey=eymtgx7f7ni6l6ctcc7a0buk0&st=64y08rmc&dl=0'
tar xzvf murfi_example_data.tgz
MURFI_SUBJECTS_DIR=. MURFI_SUBJECT_NAME=murfi_example_data singularity run murfi-sif_latest.sif murfi -f murfi_example_data/conf/neurofeedback-vsend.xml
In another terminal (in the same directory as the above terminal):
singularity exec murfi-sif_latest.sif servenii4d murfi_example_data/nii/0.nii.gz $(hostname)
rm -rf tmp; mkdir -p tmp/murfi_input && MURFI_SUBJECTS_DIR=. MURFI_SUBJECT_NAME=murfi_example_data singularity run murfi-sif_latest.sif murfi -f murfi_example_data/conf/neurofeedback-dicom.xml
In another terminal (in the same directory as the above terminal):
singularity exec murfi-sif_latest.sif servedicoms murfi_example_data/dcm tmp/murfi_input
Versions of murfi are stored as docker and singularity images on ghcr.io. All available singularity versions are listed here and the corresponding docker images are here.
In addition, the base docker image that contains the OS (currently Ubuntu 24.04) and dependencies that must be compiled from source is built each day and pushed to ghcr.io. Each daily base image (as well as the base image that was used to build released versions) are listed here.
- libace
- freeglut
- libgsl
- vxl
- qt5
- libniftiio
On recent Ubuntu distros, the following command will install all dependencies except vxl:
sudo apt-get install \
build-essential \
curl \
cmake \
libace-dev \
libgsl-dev \
libnifti-dev \
libboost-filesystem-dev \
qtbase5-dev \
qtchooser \
qt5-qmake \
qtbase5-dev-tools \
libqt5opengl5-dev
To install vxl, use the following commands:
curl -fsSL https://github.com/vxl/vxl/archive/v3.5.0.tar.gz | tar xz --strip-components 1 \
&& mkdir build \
&& cd build \
&& cmake -DBUILD_TESTING=OFF -DCMAKE_INSTALL_PREFIX=/usr .. \
&& make -j $(nproc) \
&& sudo make install \
&& rm -rf build \
&& if [ -d /usr/include/vxlinclude/vxlcoreinclude/vxlvnl/ ]; then ln -s /usr/include/vxlinclude/vxlcoreinclude/vxlvnl/ /usr/include/vxlinclude/vxlcoreinclude/vnl; fi
cd <path to toplevel murfi directory>
make -j$(nproc)
sudo ln -sf bin/murfi /usr/bin
This project was partially funded by several sponsors:
- DARPA
- NIH
- McGovern Institute Neurotechnology Development Grant