📓 Jon's Lab Notebook

2020 December 4 • Friday ‒ 2020 December 8 • Tuesday

  • c-pac

Neurodocker

I built a few test Docker images to check out Neurodocker, and here’s a quick rundown of what I found:

Can use a script like

#!/bin/bash

FROM=neurodebian:bionic-non-free
PKG=apt

# versions
AFNI=latest
ANTS=2.3.4
C3D=1.0.0
FREESURFER=7.1.1-min
FSL=5.0.11

ARGS="-b $FROM -p $PKG \
  --convert3d version=$C3D install_path=/opt/c3d \
  --afni version=$AFNI install_path=/opt/afni \
  --fsl version=$FSL install_path=/usr/lib/fsl/${FSL::3} \
  --ants version=$ANTS method=source install_path=/usr/lib/ants \
  --freesurfer version=$FREESURFER \
  "  

docker run --rm repronim/neurodocker:master generate docker $ARGS > neurodocker.Dockerfile $ARGS

docker run --rm repronim/neurodocker:master generate singularity $ARGS > neurodocker.Singularity $ARGS

to generate a Dockerfile and Singularity recipe like

# Generated by: Neurodocker version 0.7.0+25.gf104933.dirty
# Latest release: Neurodocker version 0.7.0
# 
# Thank you for using Neurodocker. If you discover any issues
# or ways to improve this software, please submit an issue or
# pull request on our GitHub repository:
# 
#     https://github.com/ReproNim/neurodocker
# 
# Timestamp: 2020/12/08 17:40:39 UTC

FROM neurodebian:bionic-non-free

USER root

ARG DEBIAN_FRONTEND="noninteractive"

ENV LANG="en_US.UTF-8" \
    LC_ALL="en_US.UTF-8" \
    ND_ENTRYPOINT="/neurodocker/startup.sh"
RUN export ND_ENTRYPOINT="/neurodocker/startup.sh" \
    && apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           apt-utils \
           bzip2 \
           ca-certificates \
           curl \
           locales \
           unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen \
    && dpkg-reconfigure --frontend=noninteractive locales \
    && update-locale LANG="en_US.UTF-8" \
    && chmod 777 /opt && chmod a+s /opt \
    && mkdir -p /neurodocker \
    && if [ ! -f "$ND_ENTRYPOINT" ]; then \
         echo '#!/usr/bin/env bash' >> "$ND_ENTRYPOINT" \
    &&   echo 'set -e' >> "$ND_ENTRYPOINT" \
    &&   echo 'export USER="${USER:=`whoami`}"' >> "$ND_ENTRYPOINT" \
    &&   echo 'if [ -n "$1" ]; then "$@"; else /usr/bin/env bash; fi' >> "$ND_ENTRYPOINT"; \
    fi \
    && chmod -R 777 /neurodocker && chmod a+s /neurodocker

ENTRYPOINT ["/neurodocker/startup.sh"]

ENV C3DPATH="/opt/c3d" \
    PATH="/opt/c3d/bin:$PATH"
RUN echo "Downloading Convert3D ..." \
    && mkdir -p /opt/c3d \
    && curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
    | tar -xz -C /opt/c3d --strip-components 1

ENV PATH="/opt/afni:$PATH" \
    AFNI_PLUGINPATH="/opt/afni"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           ed \
           gsl-bin \
           libglib2.0-0 \
           libglu1-mesa-dev \
           libglw1-mesa \
           libgomp1 \
           libjpeg62 \
           libxm4 \
           multiarch-support \
           netpbm \
           tcsh \
           xfonts-base \
           xvfb \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb \
    && dpkg -i /tmp/toinstall.deb \
    && rm /tmp/toinstall.deb \
    && curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb \
    && dpkg -i /tmp/toinstall.deb \
    && rm /tmp/toinstall.deb \
    && apt-get install -f \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && gsl2_path="$(find / -name 'libgsl.so.19' || printf '')" \
    && if [ -n "$gsl2_path" ]; then \
         ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0"; \
    fi \
    && ldconfig \
    && echo "Downloading AFNI ..." \
    && mkdir -p /opt/afni \
    && curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
    | tar -xz -C /opt/afni --strip-components 1

ENV FSLDIR="/usr/lib/fsl/5.0" \
    PATH="/usr/lib/fsl/5.0/bin:$PATH" \
    FSLOUTPUTTYPE="NIFTI_GZ" \
    FSLMULTIFILEQUIT="TRUE" \
    FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh" \
    FSLWISH="/usr/lib/fsl/5.0/bin/fslwish" \
    FSLLOCKDIR="" \
    FSLMACHINELIST="" \
    FSLREMOTECALL="" \
    FSLGECUDAQ="cuda.q"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           bc \
           dc \
           file \
           libfontconfig1 \
           libfreetype6 \
           libgl1-mesa-dev \
           libgl1-mesa-dri \
           libglu1-mesa-dev \
           libgomp1 \
           libice6 \
           libxcursor1 \
           libxft2 \
           libxinerama1 \
           libxrandr2 \
           libxrender1 \
           libxt6 \
           sudo \
           wget \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && echo "Downloading FSL ..." \
    && mkdir -p /usr/lib/fsl/5.0 \
    && curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
    | tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 \
    && sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT \
    && sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT \
    && sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT \
    && sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT \
    && echo "Installing FSL conda environment ..." \
    && bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0

ENV ANTSPATH="/usr/lib/ants/bin" \
    PATH="/usr/lib/ants/bin:$PATH" \
    LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           cmake \
           g++ \
           gcc \
           git \
           make \
           zlib1g-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /tmp/ants/build \
    && git clone https://github.com/ANTsX/ANTs.git /tmp/ants/source \
    && cd /tmp/ants/source \
    && git fetch --tags \
    && git checkout 2.3.4 \
    && cd /tmp/ants/build \
    && cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source \
    && make -j1 \
    && mkdir -p /usr/lib/ants \
    && mv bin lib /usr/lib/ants/ \
    && mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin \
    && rm -rf /tmp/ants

ENV FREESURFER_HOME="/opt/freesurfer-7.1.1-min" \
    PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           bc \
           libgomp1 \
           libxmu6 \
           libxt6 \
           perl \
           tcsh \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && echo "Downloading FreeSurfer ..." \
    && mkdir -p /opt/freesurfer-7.1.1-min \
    && curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
    | tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 \
    && sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"

ENV C3DPATH="/opt/c3d" \
    PATH="/opt/c3d/bin:$PATH"
RUN echo "Downloading Convert3D ..." \
    && mkdir -p /opt/c3d \
    && curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
    | tar -xz -C /opt/c3d --strip-components 1

ENV PATH="/opt/afni:$PATH" \
    AFNI_PLUGINPATH="/opt/afni"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           ed \
           gsl-bin \
           libglib2.0-0 \
           libglu1-mesa-dev \
           libglw1-mesa \
           libgomp1 \
           libjpeg62 \
           libxm4 \
           multiarch-support \
           netpbm \
           tcsh \
           xfonts-base \
           xvfb \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb \
    && dpkg -i /tmp/toinstall.deb \
    && rm /tmp/toinstall.deb \
    && curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb \
    && dpkg -i /tmp/toinstall.deb \
    && rm /tmp/toinstall.deb \
    && apt-get install -f \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && gsl2_path="$(find / -name 'libgsl.so.19' || printf '')" \
    && if [ -n "$gsl2_path" ]; then \
         ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0"; \
    fi \
    && ldconfig \
    && echo "Downloading AFNI ..." \
    && mkdir -p /opt/afni \
    && curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
    | tar -xz -C /opt/afni --strip-components 1

ENV FSLDIR="/usr/lib/fsl/5.0" \
    PATH="/usr/lib/fsl/5.0/bin:$PATH" \
    FSLOUTPUTTYPE="NIFTI_GZ" \
    FSLMULTIFILEQUIT="TRUE" \
    FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh" \
    FSLWISH="/usr/lib/fsl/5.0/bin/fslwish" \
    FSLLOCKDIR="" \
    FSLMACHINELIST="" \
    FSLREMOTECALL="" \
    FSLGECUDAQ="cuda.q"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           bc \
           dc \
           file \
           libfontconfig1 \
           libfreetype6 \
           libgl1-mesa-dev \
           libgl1-mesa-dri \
           libglu1-mesa-dev \
           libgomp1 \
           libice6 \
           libxcursor1 \
           libxft2 \
           libxinerama1 \
           libxrandr2 \
           libxrender1 \
           libxt6 \
           sudo \
           wget \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && echo "Downloading FSL ..." \
    && mkdir -p /usr/lib/fsl/5.0 \
    && curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
    | tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 \
    && sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT \
    && sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT \
    && sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT \
    && sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT \
    && echo "Installing FSL conda environment ..." \
    && bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0

ENV ANTSPATH="/usr/lib/ants/bin" \
    PATH="/usr/lib/ants/bin:$PATH" \
    LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           cmake \
           g++ \
           gcc \
           git \
           make \
           zlib1g-dev \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && mkdir -p /tmp/ants/build \
    && git clone https://github.com/ANTsX/ANTs.git /tmp/ants/source \
    && cd /tmp/ants/source \
    && git fetch --tags \
    && git checkout 2.3.4 \
    && cd /tmp/ants/build \
    && cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source \
    && make -j1 \
    && mkdir -p /usr/lib/ants \
    && mv bin lib /usr/lib/ants/ \
    && mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin \
    && rm -rf /tmp/ants

ENV FREESURFER_HOME="/opt/freesurfer-7.1.1-min" \
    PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
RUN apt-get update -qq \
    && apt-get install -y -q --no-install-recommends \
           bc \
           libgomp1 \
           libxmu6 \
           libxt6 \
           perl \
           tcsh \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && echo "Downloading FreeSurfer ..." \
    && mkdir -p /opt/freesurfer-7.1.1-min \
    && curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
    | tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 \
    && sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"

RUN echo '{ \
    \n  "pkg_manager": "apt", \
    \n  "instructions": [ \
    \n    [ \
    \n      "base", \
    \n      "neurodebian:bionic-non-free" \
    \n    ], \
    \n    [ \
    \n      "convert3d", \
    \n      { \
    \n        "version": "1.0.0", \
    \n        "install_path": "/opt/c3d" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "afni", \
    \n      { \
    \n        "version": "latest", \
    \n        "install_path": "/opt/afni" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "fsl", \
    \n      { \
    \n        "version": "5.0.11", \
    \n        "install_path": "/usr/lib/fsl/5.0" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "ants", \
    \n      { \
    \n        "version": "2.3.4", \
    \n        "method": "source", \
    \n        "install_path": "/usr/lib/ants" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "freesurfer", \
    \n      { \
    \n        "version": "7.1.1-min" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "convert3d", \
    \n      { \
    \n        "version": "1.0.0", \
    \n        "install_path": "/opt/c3d" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "afni", \
    \n      { \
    \n        "version": "latest", \
    \n        "install_path": "/opt/afni" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "fsl", \
    \n      { \
    \n        "version": "5.0.11", \
    \n        "install_path": "/usr/lib/fsl/5.0" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "ants", \
    \n      { \
    \n        "version": "2.3.4", \
    \n        "method": "source", \
    \n        "install_path": "/usr/lib/ants" \
    \n      } \
    \n    ], \
    \n    [ \
    \n      "freesurfer", \
    \n      { \
    \n        "version": "7.1.1-min" \
    \n      } \
    \n    ] \
    \n  ] \
    \n}' > /neurodocker/neurodocker_specs.json
# Generated by: Neurodocker version 0.7.0+25.gf104933.dirty
# Latest release: Neurodocker version 0.7.0
# 
# Thank you for using Neurodocker. If you discover any issues
# or ways to improve this software, please submit an issue or
# pull request on our GitHub repository:
# 
#     https://github.com/ReproNim/neurodocker
# 
# Timestamp: 2020/12/08 17:40:52 UTC

Bootstrap: docker
From: neurodebian:bionic-non-free

%post
su - root

export ND_ENTRYPOINT="/neurodocker/startup.sh"
apt-get update -qq
apt-get install -y -q --no-install-recommends \
    apt-utils \
    bzip2 \
    ca-certificates \
    curl \
    locales \
    unzip
apt-get clean
rm -rf /var/lib/apt/lists/*
sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen
dpkg-reconfigure --frontend=noninteractive locales
update-locale LANG="en_US.UTF-8"
chmod 777 /opt && chmod a+s /opt
mkdir -p /neurodocker
if [ ! -f "$ND_ENTRYPOINT" ]; then
  echo '#!/usr/bin/env bash' >> "$ND_ENTRYPOINT"
  echo 'set -e' >> "$ND_ENTRYPOINT"
  echo 'export USER="${USER:=`whoami`}"' >> "$ND_ENTRYPOINT"
  echo 'if [ -n "$1" ]; then "$@"; else /usr/bin/env bash; fi' >> "$ND_ENTRYPOINT";
fi
chmod -R 777 /neurodocker && chmod a+s /neurodocker

echo "Downloading Convert3D ..."
mkdir -p /opt/c3d
curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    ed \
    gsl-bin \
    libglib2.0-0 \
    libglu1-mesa-dev \
    libglw1-mesa \
    libgomp1 \
    libjpeg62 \
    libxm4 \
    multiarch-support \
    netpbm \
    tcsh \
    xfonts-base \
    xvfb
apt-get clean
rm -rf /var/lib/apt/lists/*
curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
apt-get install -f
apt-get clean
rm -rf /var/lib/apt/lists/*
gsl2_path="$(find / -name 'libgsl.so.19' || printf '')"
if [ -n "$gsl2_path" ]; then
  ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0";
fi
ldconfig
echo "Downloading AFNI ..."
mkdir -p /opt/afni
curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    bc \
    dc \
    file \
    libfontconfig1 \
    libfreetype6 \
    libgl1-mesa-dev \
    libgl1-mesa-dri \
    libglu1-mesa-dev \
    libgomp1 \
    libice6 \
    libxcursor1 \
    libxft2 \
    libxinerama1 \
    libxrandr2 \
    libxrender1 \
    libxt6 \
    sudo \
    wget
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FSL ..."
mkdir -p /usr/lib/fsl/5.0
curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 
sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT
sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT
sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT
sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT
echo "Installing FSL conda environment ..."
bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0


apt-get update -qq
apt-get install -y -q --no-install-recommends \
    cmake \
    g++ \
    gcc \
    git \
    make \
    zlib1g-dev
apt-get clean
rm -rf /var/lib/apt/lists/*
mkdir -p /tmp/ants/build
git clone https://github.com/ANTsX/ANTs.git /tmp/ants/source
cd /tmp/ants/source
git fetch --tags
git checkout 2.3.4
cd /tmp/ants/build
cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source
make -j1
mkdir -p /usr/lib/ants
mv bin lib /usr/lib/ants/
mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin
rm -rf /tmp/ants

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    bc \
    libgomp1 \
    libxmu6 \
    libxt6 \
    perl \
    tcsh
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FreeSurfer ..."
mkdir -p /opt/freesurfer-7.1.1-min
curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 
sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"

echo "Downloading Convert3D ..."
mkdir -p /opt/c3d
curl -fsSL --retry 5 https://sourceforge.net/projects/c3d/files/c3d/1.0.0/c3d-1.0.0-Linux-x86_64.tar.gz/download \
| tar -xz -C /opt/c3d --strip-components 1

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    ed \
    gsl-bin \
    libglib2.0-0 \
    libglu1-mesa-dev \
    libglw1-mesa \
    libgomp1 \
    libjpeg62 \
    libxm4 \
    multiarch-support \
    netpbm \
    tcsh \
    xfonts-base \
    xvfb
apt-get clean
rm -rf /var/lib/apt/lists/*
curl -sSL --retry 5 -o /tmp/toinstall.deb http://mirrors.kernel.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
curl -sSL --retry 5 -o /tmp/toinstall.deb http://snapshot.debian.org/archive/debian-security/20160113T213056Z/pool/updates/main/libp/libpng/libpng12-0_1.2.49-1%2Bdeb7u2_amd64.deb
dpkg -i /tmp/toinstall.deb
rm /tmp/toinstall.deb
apt-get install -f
apt-get clean
rm -rf /var/lib/apt/lists/*
gsl2_path="$(find / -name 'libgsl.so.19' || printf '')"
if [ -n "$gsl2_path" ]; then
  ln -sfv "$gsl2_path" "$(dirname $gsl2_path)/libgsl.so.0";
fi
ldconfig
echo "Downloading AFNI ..."
mkdir -p /opt/afni
curl -fsSL --retry 5 https://afni.nimh.nih.gov/pub/dist/tgz/linux_openmp_64.tgz \
| tar -xz -C /opt/afni --strip-components 1

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    bc \
    dc \
    file \
    libfontconfig1 \
    libfreetype6 \
    libgl1-mesa-dev \
    libgl1-mesa-dri \
    libglu1-mesa-dev \
    libgomp1 \
    libice6 \
    libxcursor1 \
    libxft2 \
    libxinerama1 \
    libxrandr2 \
    libxrender1 \
    libxt6 \
    sudo \
    wget
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FSL ..."
mkdir -p /usr/lib/fsl/5.0
curl -fsSL --retry 5 https://fsl.fmrib.ox.ac.uk/fsldownloads/fsl-5.0.11-centos6_64.tar.gz \
| tar -xz -C /usr/lib/fsl/5.0 --strip-components 1 
sed -i '$iecho Some packages in this Docker container are non-free' $ND_ENTRYPOINT
sed -i '$iecho If you are considering commercial use of this container, please consult the relevant license:' $ND_ENTRYPOINT
sed -i '$iecho https://fsl.fmrib.ox.ac.uk/fsl/fslwiki/Licence' $ND_ENTRYPOINT
sed -i '$isource $FSLDIR/etc/fslconf/fsl.sh' $ND_ENTRYPOINT
echo "Installing FSL conda environment ..."
bash /usr/lib/fsl/5.0/etc/fslconf/fslpython_install.sh -f /usr/lib/fsl/5.0


apt-get update -qq
apt-get install -y -q --no-install-recommends \
    cmake \
    g++ \
    gcc \
    git \
    make \
    zlib1g-dev
apt-get clean
rm -rf /var/lib/apt/lists/*
mkdir -p /tmp/ants/build
git clone https://github.com/ANTsX/ANTs.git /tmp/ants/source
cd /tmp/ants/source
git fetch --tags
git checkout 2.3.4
cd /tmp/ants/build
cmake -DBUILD_SHARED_LIBS=ON /tmp/ants/source
make -j1
mkdir -p /usr/lib/ants
mv bin lib /usr/lib/ants/
mv /tmp/ants/source/Scripts/* /usr/lib/ants/bin
rm -rf /tmp/ants

apt-get update -qq
apt-get install -y -q --no-install-recommends \
    bc \
    libgomp1 \
    libxmu6 \
    libxt6 \
    perl \
    tcsh
apt-get clean
rm -rf /var/lib/apt/lists/*
echo "Downloading FreeSurfer ..."
mkdir -p /opt/freesurfer-7.1.1-min
curl -fsSL --retry 5 https://dl.dropbox.com/s/c3earkfhhvdyuo4/freesurfer-7.1.1-min.tgz \
| tar -xz -C /opt/freesurfer-7.1.1-min --strip-components 1 
sed -i '$isource "/opt/freesurfer-7.1.1-min/SetUpFreeSurfer.sh"' "$ND_ENTRYPOINT"

echo '{
\n  "pkg_manager": "apt",
\n  "instructions": [
\n    [
\n      "base",
\n      "neurodebian:bionic-non-free"
\n    ],
\n    [
\n      "user",
\n      "root"
\n    ],
\n    [
\n      "_header",
\n      {
\n        "version": "generic",
\n        "method": "custom"
\n      }
\n    ],
\n    [
\n      "convert3d",
\n      {
\n        "version": "1.0.0",
\n        "install_path": "/opt/c3d"
\n      }
\n    ],
\n    [
\n      "afni",
\n      {
\n        "version": "latest",
\n        "install_path": "/opt/afni"
\n      }
\n    ],
\n    [
\n      "fsl",
\n      {
\n        "version": "5.0.11",
\n        "install_path": "/usr/lib/fsl/5.0"
\n      }
\n    ],
\n    [
\n      "ants",
\n      {
\n        "version": "2.3.4",
\n        "method": "source",
\n        "install_path": "/usr/lib/ants"
\n      }
\n    ],
\n    [
\n      "freesurfer",
\n      {
\n        "version": "7.1.1-min"
\n      }
\n    ],
\n    [
\n      "convert3d",
\n      {
\n        "version": "1.0.0",
\n        "install_path": "/opt/c3d"
\n      }
\n    ],
\n    [
\n      "afni",
\n      {
\n        "version": "latest",
\n        "install_path": "/opt/afni"
\n      }
\n    ],
\n    [
\n      "fsl",
\n      {
\n        "version": "5.0.11",
\n        "install_path": "/usr/lib/fsl/5.0"
\n      }
\n    ],
\n    [
\n      "ants",
\n      {
\n        "version": "2.3.4",
\n        "method": "source",
\n        "install_path": "/usr/lib/ants"
\n      }
\n    ],
\n    [
\n      "freesurfer",
\n      {
\n        "version": "7.1.1-min"
\n      }
\n    ]
\n  ]
\n}' > /neurodocker/neurodocker_specs.json

%environment
export LANG="en_US.UTF-8"
export LC_ALL="en_US.UTF-8"
export ND_ENTRYPOINT="/neurodocker/startup.sh"
export C3DPATH="/opt/c3d"
export PATH="/opt/c3d/bin:$PATH"
export PATH="/opt/afni:$PATH"
export AFNI_PLUGINPATH="/opt/afni"
export FSLDIR="/usr/lib/fsl/5.0"
export PATH="/usr/lib/fsl/5.0/bin:$PATH"
export FSLOUTPUTTYPE="NIFTI_GZ"
export FSLMULTIFILEQUIT="TRUE"
export FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh"
export FSLWISH="/usr/lib/fsl/5.0/bin/fslwish"
export FSLLOCKDIR=""
export FSLMACHINELIST=""
export FSLREMOTECALL=""
export FSLGECUDAQ="cuda.q"
export ANTSPATH="/usr/lib/ants/bin"
export PATH="/usr/lib/ants/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
export FREESURFER_HOME="/opt/freesurfer-7.1.1-min"
export PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"
export C3DPATH="/opt/c3d"
export PATH="/opt/c3d/bin:$PATH"
export PATH="/opt/afni:$PATH"
export AFNI_PLUGINPATH="/opt/afni"
export FSLDIR="/usr/lib/fsl/5.0"
export PATH="/usr/lib/fsl/5.0/bin:$PATH"
export FSLOUTPUTTYPE="NIFTI_GZ"
export FSLMULTIFILEQUIT="TRUE"
export FSLTCLSH="/usr/lib/fsl/5.0/bin/fsltclsh"
export FSLWISH="/usr/lib/fsl/5.0/bin/fslwish"
export FSLLOCKDIR=""
export FSLMACHINELIST=""
export FSLREMOTECALL=""
export FSLGECUDAQ="cuda.q"
export ANTSPATH="/usr/lib/ants/bin"
export PATH="/usr/lib/ants/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lib/ants/lib:$LD_LIBRARY_PATH"
export FREESURFER_HOME="/opt/freesurfer-7.1.1-min"
export PATH="/opt/freesurfer-7.1.1-min/bin:$PATH"

%runscript
/neurodocker/startup.sh "$@"

hyper realistic pen highlighter by Matt Pi
Interesting Times theme made with by Álvaro