Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

129 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPM Containers

This repository provides github action workflows for automatic docker and singularity image creation. They are triggered by releasing a new SPM version.

Containers

The containers are hosted on the GitHub Container Registry

docker pull ghcr.io/spm/spm-docker:docker-matlab-latest
docker pull ghcr.io/spm/spm-docker:docker-octave-latest
singularity pull oras://ghcr.io/spm/spm-docker:singularity-matlab-latest
singularity pull oras://ghcr.io/spm/spm-docker:singularity-octave-latest

Usage

For example, to start SPM with its graphical user interface, use the following:

xhost +local:docker  
docker run -ti --rm -e DISPLAY=$DISPLAY -v /tmp:/tmp -v /tmp/.X11-unix:/tmp/.X11-unix ghcr.io/spm/spm-docker:docker-matlab-latest fmri

If the container's root filesystem is mounted as read only (--read-only flag), you need to bind mount an extra volume:

-v /tmp/.matlab:/root/.matlab

Testing

The containers run SPM Standalone headless, with no X server. The whole unit test suite can be run in one shot:

docker run --rm ghcr.io/spm/spm-docker:docker-matlab-latest test

Some tests need the data from the private spm/spm-tests-data repository. Without it they report as Incomplete, which is not a failure. To supply it, bind mount a checkout over the tests/data directory inside the container (NN is the SPM major version, e.g. 26):

docker run --rm \
  -v /path/to/spm-tests-data:/opt/spm/spmNN_mcr/spmNN/tests/data \
  ghcr.io/spm/spm-docker:docker-matlab-latest test

Why the octave image only gets a smoke test

spm_tests is built on matlab.unittest, which GNU Octave does not provide, and it has no Octave code path. Separately, the bin/spm-octave launcher ends with a waitfor loop over open figures, so a test that leaves a figure behind would hang the container indefinitely. Running the suite under Octave needs both of those addressed in the SPM repository first.

Technology

Docker

Docker is a container technology, performing operating-system-level virtualisation.

Singularity

Singularity is another container technology that performs operating-system-level virtualization. One of the main uses of Singularity is to bring containers and reproducibility to scientific computing and HPC.

SPM Containers Creation

The official SPM Dockerfiles:

The singularity sif images are created from the docker images.

Documentation

Check the SPM online documentation.

See also

Neurodesk

https://www.neurodesk.org/

Neurodocker

https://github.com/ReproNim/neurodocker
https://hub.docker.com/r/kaczmarj/neurodocker/

SPM BIDS-App

https://github.com/BIDS-Apps/SPM`](https://github.com/BIDS-Apps/SPM)
https://hub.docker.com/r/bids/spm/

MATLAB Dockerfile

https://github.com/mathworks-ref-arch/matlab-dockerfile

Singularity

SingularityCE User Guide

sudo singularity build spm12.sif spm12-octave.def
singularity exec spm12.sif
./spm12.sif --help

(how to install singularity on Ubuntu)

Docker Hub (deprecated)

SPM Docker images used to be hosted on Docker Hub but this is now deprecated and the GitHub Packages Container Registry should be used instead.

docker pull spmcentral/spm:latest
docker pull spmcentral/spm:octave

Packages

Used by

Contributors

Languages