diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..ec1eb30 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,127 @@ +# Generated by: Neurodocker version 0.7.0+0.gdc97516.dirty +# Latest release: Neurodocker version 0.8.0 +# Timestamp: 2022/04/11 12:55:39 UTC +# +# 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 + +FROM python:3.9.12-slim-buster + +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"] + +RUN apt-get update -qq \ + && apt-get install -y -q --no-install-recommends \ + build-essential \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY ["glmsingle", "setup.py", "MANIFEST.in", "README.md", "requirements.txt", "/glmsingle/"] + +WORKDIR /glmsingle + +RUN pip install . + +RUN pip install jupyterlab + +EXPOSE 8888 + +RUN test "$(getent passwd neuro)" || useradd --no-user-group --create-home --shell /bin/bash neuro +USER neuro + +WORKDIR /home/neuro + +COPY ["examples", "/home/neuro/examples"] + +RUN echo '{ \ + \n "pkg_manager": "apt", \ + \n "instructions": [ \ + \n [ \ + \n "base", \ + \n "python:3.9.12-slim-buster" \ + \n ], \ + \n [ \ + \n "install", \ + \n [ \ + \n "build-essential" \ + \n ] \ + \n ], \ + \n [ \ + \n "copy", \ + \n [ \ + \n "glmsingle", \ + \n "setup.py", \ + \n "MANIFEST.in", \ + \n "README.md", \ + \n "requirements.txt", \ + \n "/glmsingle/" \ + \n ] \ + \n ], \ + \n [ \ + \n "workdir", \ + \n "/glmsingle" \ + \n ], \ + \n [ \ + \n "run", \ + \n "pip install ." \ + \n ], \ + \n [ \ + \n "run", \ + \n "pip install jupyterlab" \ + \n ], \ + \n [ \ + \n "expose", \ + \n [ \ + \n "8888" \ + \n ] \ + \n ], \ + \n [ \ + \n "user", \ + \n "neuro" \ + \n ], \ + \n [ \ + \n "workdir", \ + \n "/home/neuro" \ + \n ], \ + \n [ \ + \n "copy", \ + \n [ \ + \n "examples", \ + \n "/home/neuro/examples" \ + \n ] \ + \n ] \ + \n ] \ + \n}' > /neurodocker/neurodocker_specs.json diff --git a/Makefile b/Makefile index 75e39ce..da543b0 100644 --- a/Makefile +++ b/Makefile @@ -113,4 +113,48 @@ coverage-python: ## check code coverage quickly with the default Python install: clean ## install the package to the active Python's site-packages python setup.py install -################################################################################ \ No newline at end of file +################################################################################ + +################################################################################ +# DOCKER + +.PHONY: Dockerfile glmsingle.def +Dockerfile: + docker run --rm repronim/neurodocker:0.7.0 generate docker \ + --base python:3.9.12-slim-buster \ + --pkg-manager apt \ + --install "build-essential" \ + --copy glmsingle setup.py MANIFEST.in README.md requirements.txt /glmsingle/ \ + --workdir /glmsingle \ + --run "pip install ." \ + --run "pip install jupyterlab" \ + --expose 8888 \ + --user neuro \ + --workdir /home/neuro \ + --copy examples /home/neuro/examples > Dockerfile + +docker_build: Dockerfile + docker build . -t glmsingle:latest + +docker_run: docker_build + mkdir -p $$PWD/tmp + docker run -it --rm \ + --publish 8888:8888 \ + --volume $$PWD/tmp:/home/neuro/tmp \ + glmsingle:latest \ + jupyter-lab --no-browser --ip 0.0.0.0 + +glmsingle.def: + docker run --rm repronim/neurodocker:0.7.0 generate singularity \ + --base python:3.9.12-slim-buster \ + --pkg-manager apt \ + --install "build-essential" \ + --copy glmsingle setup.py MANIFEST.in README.md requirements.txt /home/glmsingle/ \ + --workdir /glmsingle \ + --run "pip install ." \ + --user neuro \ + --workdir /home/neuro \ + --copy examples /home/neuro/examples > glmsingle.def + +singularity_build: glmsingle.def + sudo singularity build glmsingle.sif glmsingle.def \ No newline at end of file diff --git a/Singularity b/Singularity new file mode 100644 index 0000000..c883429 --- /dev/null +++ b/Singularity @@ -0,0 +1,113 @@ +# Generated by: Neurodocker version 0.7.0+0.gdc97516.dirty +# Latest release: Neurodocker version 0.8.0 +# Timestamp: 2022/04/28 15:50:25 UTC +# +# 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 + +FROM python:3.9.12-slim-buster + +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"] + +RUN apt-get update -qq \ + && apt-get install -y -q --no-install-recommends \ + build-essential \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +COPY ["glmsingle", "setup.py", "MANIFEST.in", "README.md", "requirements.txt", "/glmsingle/"] + +WORKDIR /glmsingle + +RUN pip install . + +RUN test "$(getent passwd neuro)" || useradd --no-user-group --create-home --shell /bin/bash neuro +USER neuro + +WORKDIR /home/neuro + +COPY ["examples", "/home/neuro/examples"] + +RUN echo '{ \ + \n "pkg_manager": "apt", \ + \n "instructions": [ \ + \n [ \ + \n "base", \ + \n "python:3.9.12-slim-buster" \ + \n ], \ + \n [ \ + \n "install", \ + \n [ \ + \n "build-essential" \ + \n ] \ + \n ], \ + \n [ \ + \n "copy", \ + \n [ \ + \n "glmsingle", \ + \n "setup.py", \ + \n "MANIFEST.in", \ + \n "README.md", \ + \n "requirements.txt", \ + \n "/glmsingle/" \ + \n ] \ + \n ], \ + \n [ \ + \n "workdir", \ + \n "/glmsingle" \ + \n ], \ + \n [ \ + \n "run", \ + \n "pip install ." \ + \n ], \ + \n [ \ + \n "user", \ + \n "neuro" \ + \n ], \ + \n [ \ + \n "workdir", \ + \n "/home/neuro" \ + \n ], \ + \n [ \ + \n "copy", \ + \n [ \ + \n "examples", \ + \n "/home/neuro/examples" \ + \n ] \ + \n ] \ + \n ] \ + \n}' > /neurodocker/neurodocker_specs.json diff --git a/glmsingle.def b/glmsingle.def new file mode 100644 index 0000000..e90f83f --- /dev/null +++ b/glmsingle.def @@ -0,0 +1,127 @@ +# Generated by: Neurodocker version 0.7.0+0.gdc97516.dirty +# Latest release: Neurodocker version 0.8.0 +# Timestamp: 2022/04/28 16:02:27 UTC +# +# 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 + +Bootstrap: docker +From: python:3.9.12-slim-buster + +%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 + +apt-get update -qq +apt-get install -y -q --no-install-recommends \ + build-essential +apt-get clean +rm -rf /var/lib/apt/lists/* + +cd /glmsingle + +pip install . + +test "$(getent passwd neuro)" || useradd --no-user-group --create-home --shell /bin/bash neuro +su - neuro + +cd /home/neuro + +echo '{ +\n "pkg_manager": "apt", +\n "instructions": [ +\n [ +\n "base", +\n "python:3.9.12-slim-buster" +\n ], +\n [ +\n "user", +\n "root" +\n ], +\n [ +\n "_header", +\n { +\n "version": "generic", +\n "method": "custom" +\n } +\n ], +\n [ +\n "install", +\n [ +\n "build-essential" +\n ] +\n ], +\n [ +\n "copy", +\n [ +\n "glmsingle", +\n "setup.py", +\n "MANIFEST.in", +\n "README.md", +\n "requirements.txt", +\n "/home/glmsingle/" +\n ] +\n ], +\n [ +\n "workdir", +\n "/glmsingle" +\n ], +\n [ +\n "run", +\n "pip install ." +\n ], +\n [ +\n "user", +\n "neuro" +\n ], +\n [ +\n "workdir", +\n "/home/neuro" +\n ], +\n [ +\n "copy", +\n [ +\n "examples", +\n "/home/neuro/examples" +\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" + +%files +glmsingle setup.py +examples /home/neuro/examples + +%runscript +/neurodocker/startup.sh "$@" diff --git a/requirements.txt b/requirements.txt index b0de2fa..6daf04e 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,8 @@ -numpy -scipy -sklearn -matplotlib -tqdm -fracridge -nibabel -h5py +fracridge>=1.4.3 +h5py>=3.1.0 +matplotlib>=3.3.4 +nibabel>=3.2.2 +numpy>=1.17.0 +scikit-learn>=0.23.2 +scipy>=1.5.4 +tqdm>=4.63.1 \ No newline at end of file diff --git a/setup.py b/setup.py index 731c9c2..3847fc8 100644 --- a/setup.py +++ b/setup.py @@ -28,5 +28,6 @@ packages=find_packages(), include_package_data=True, zip_safe=False, - install_requires=requires + install_requires=requires, + python_requires='>=3.6' )