From 1b41d4e59249b0c4f78ae3a39c4d41ce009f3e94 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 15:57:56 +0100 Subject: [PATCH 01/13] Update base docker - more metadata --- base/Dockerfile | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 8e90170..7658f7a 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -3,9 +3,10 @@ # FROM neurodebian:jammy -MAINTAINER andrew.davison@unic.cnrs-gif.fr +LABEL org.opencontainers.image.authors="andrew.davison@unic.cnrs-gif.fr,p.gleeson@gmail.com" +LABEL org.opencontainers.image.description="A base Docker image for Python-based computational neuroscience and neurophysiology" -ENV DEBIAN_FRONTEND noninteractive +ENV DEBIAN_FRONTEND=noninteractive ENV LANG=C.UTF-8 RUN apt-get update; apt-get install -y automake libtool build-essential openmpi-bin libopenmpi-dev git vim \ @@ -26,5 +27,5 @@ ENV VENV=$HOME/env/neurosci RUN python3 -m venv $VENV && python3 -m venv --system-site-packages $VENV RUN $VENV/bin/pip3 install --upgrade pip -RUN $VENV/bin/pip3 install parameters quantities neo django==1.8.19 django-tagging future hgapi gitpython sumatra nixio +RUN $VENV/bin/pip3 install parameters quantities neo django-tagging future hgapi gitpython sumatra nixio RUN $VENV/bin/pip3 install --upgrade nose ipython From 4f18bc27642407302b95c902209358ad6a93c342 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 16:14:38 +0100 Subject: [PATCH 02/13] To NRN=8.2.7, BRIAN2=2.9.0 --- simulation/Dockerfile | 9 +++++---- simulationx/Dockerfile | 3 ++- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/simulation/Dockerfile b/simulation/Dockerfile index ddaa2a2..eaa681c 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -3,7 +3,8 @@ # FROM neuralensemble/base -MAINTAINER andrew.davison@unic.cnrs-gif.fr +LABEL org.opencontainers.image.authors="andrew.davison@unic.cnrs-gif.fr,p.gleeson@gmail.com" +LABEL org.opencontainers.image.description="A Docker image for running neuronal network simulations" RUN ln -s /usr/bin/2to3-3.5 $VENV/bin/2to3 @@ -11,8 +12,8 @@ RUN ln -s /usr/bin/2to3-3.5 $VENV/bin/2to3 #### Set versions ENV NEST_VER=3.5 -ENV NRN_VER=8.2.2 -ENV BRIAN2_VER=2.5.4 +ENV NRN_VER=8.2.7 +ENV BRIAN2_VER=2.9.0 ENV PYNN_VER=0.11.0 @@ -43,7 +44,7 @@ RUN mkdir $NEST; \ -DPYTHON_LIBRARY=$VENV/lib/libpython3.8.so \ -DPYTHON_INCLUDE_DIR=/usr/include/python3.8 \ $HOME/packages/$NEST; \ - make -j4; make install + make -j7; make install #### Install NEURON diff --git a/simulationx/Dockerfile b/simulationx/Dockerfile index 5044423..96227fb 100644 --- a/simulationx/Dockerfile +++ b/simulationx/Dockerfile @@ -6,7 +6,8 @@ # FROM neuralensemble/simulation -MAINTAINER andrew.davison@unic.cnrs-gif.fr +LABEL org.opencontainers.image.authors="andrew.davison@unic.cnrs-gif.fr,p.gleeson@gmail.com" +LABEL org.opencontainers.image.description="A Docker image for running neuronal network simulations. This image extends the basic simulation image by adding support for SSH access and Xwindows." USER root From 6149eb7bcf778f929dc3bf7bd4087d78cf1631b9 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 16:23:02 +0100 Subject: [PATCH 03/13] Add test using osb pynnshowcase repo --- .github/workflows/docker-image.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml index ae7dcb7..0aa74df 100644 --- a/.github/workflows/docker-image.yml +++ b/.github/workflows/docker-image.yml @@ -53,3 +53,7 @@ jobs: - name: Print info on docker images run: | docker images + + - name: Test a number of repos from OSB + run: | + docker run -t neuralensemble/osb /bin/bash -c "git clone https://github.com/OpenSourceBrain/PyNNShowcase.git && cd PyNNShowcase && omv find && omv all -V" From a8506b29676c106bb3b688ba8b57b9f59594614d Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 17:10:35 +0100 Subject: [PATCH 04/13] Use latest omv & latest numpy, pandas etc --- .gitignore | 1 + osb/Dockerfile | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 9de5576..098f05a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ /simulationx/runLocal.sh /simulationx/regenerateAll.sh /base/runLocal.sh +.DS_Store diff --git a/osb/Dockerfile b/osb/Dockerfile index d8eef63..f394306 100644 --- a/osb/Dockerfile +++ b/osb/Dockerfile @@ -9,7 +9,8 @@ #FROM neuralensemble/simulationx:py2_pynn094 # For local testing FROM neuralensemble/simulationx -MAINTAINER p.gleeson@gmail.com +LABEL org.opencontainers.image.authors="andrew.davison@unic.cnrs-gif.fr,p.gleeson@gmail.com" +LABEL org.opencontainers.image.description="A Docker image for running neuronal models from Open Source Brain. This image extends the basic simulationx image by adding support for libraries required for OSB models" USER root @@ -23,9 +24,9 @@ RUN /bin/bash -c "source ~/env/neurosci/bin/activate" #### Set versions # This will set the versions of simulators installed with 'omv install ...' -ENV OMV_VER=v0.3.3 +ENV OMV_VER=v0.3.8 -ENV PYNEUROML_VER=1.3.8 +ENV PYNEUROML_VER=1.3.18 ENV NETPYNE_VER=1.0.6 # omv install arbor with 0.9.0 throwing 'Illegal instruction'..? ENV ARBOR_VER=0.8.1 @@ -38,6 +39,7 @@ RUN $VENV/bin/pip install pyNeuroML==$PYNEUROML_VER # will set versions of libNe # Install OMV +RUN $VENV/bin/pip install scipy tables pythran pandas --upgrade RUN $VENV/bin/pip install git+https://github.com/OpenSourceBrain/osb-model-validation@${OMV_VER} RUN sed -i -e s/'\/usr\/bin\/python'/'\/home\/docker\/env\/neurosci\/bin\/python'/g $VENV/bin/omv @@ -109,7 +111,6 @@ USER root RUN which python -RUN $VENV/bin/pip install 'numpy<2.0.0' # as there are still some packages not compliant with this # Some aliases From a4b15d0c0d87e9ae1de124327027802f82ca4dec Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 17:12:36 +0100 Subject: [PATCH 05/13] Also numexpr --- osb/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osb/Dockerfile b/osb/Dockerfile index f394306..308a5d9 100644 --- a/osb/Dockerfile +++ b/osb/Dockerfile @@ -39,7 +39,7 @@ RUN $VENV/bin/pip install pyNeuroML==$PYNEUROML_VER # will set versions of libNe # Install OMV -RUN $VENV/bin/pip install scipy tables pythran pandas --upgrade +RUN $VENV/bin/pip install scipy tables pythran pandas numexpr --upgrade RUN $VENV/bin/pip install git+https://github.com/OpenSourceBrain/osb-model-validation@${OMV_VER} RUN sed -i -e s/'\/usr\/bin\/python'/'\/home\/docker\/env\/neurosci\/bin\/python'/g $VENV/bin/omv From 8fe40716e215107a0706d94b105ae849ec6242ef Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 18:09:47 +0100 Subject: [PATCH 06/13] Test nest=3.7 & pynn=0.12.4 --- simulation/Dockerfile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/simulation/Dockerfile b/simulation/Dockerfile index eaa681c..f87627d 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -11,11 +11,12 @@ RUN ln -s /usr/bin/2to3-3.5 $VENV/bin/2to3 #### Set versions -ENV NEST_VER=3.5 +ENV NEST_VER=3.7 ENV NRN_VER=8.2.7 ENV BRIAN2_VER=2.9.0 -ENV PYNN_VER=0.11.0 +ENV PYNN_VER=0.12.4 +RUN $VENV/bin/pip install scipy tables pythran pandas numexpr --upgrade #### Install NEST From f22e25bcc2ef437e336d9c572b78ec848c2eba32 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 18:33:57 +0100 Subject: [PATCH 07/13] Remove system installs of many py packages --- base/Dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/base/Dockerfile b/base/Dockerfile index 7658f7a..10e10b2 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -9,11 +9,11 @@ LABEL org.opencontainers.image.description="A base Docker image for Python-based ENV DEBIAN_FRONTEND=noninteractive ENV LANG=C.UTF-8 -RUN apt-get update; apt-get install -y automake libtool build-essential openmpi-bin libopenmpi-dev git vim \ +RUN apt-get update +RUN apt-get install -y automake libtool build-essential openmpi-bin libopenmpi-dev git vim \ wget python3 libpython3-dev libncurses5-dev libreadline-dev libgsl0-dev cython3 \ - python3-numpy python3-scipy python3-matplotlib python3-jinja2 python3-mock \ - ipython3 python3-httplib2 python3-docutils python3-yaml \ - subversion python3-venv python3-mpi4py python3-tables python3-h5py cmake zlib1g-dev + ipython3 \ + subversion python3-venv python3-mpi4py cmake zlib1g-dev RUN useradd -ms /bin/bash docker USER docker From a649420dff05c5821c389c4069025fe22efc61c0 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Fri, 13 Jun 2025 18:37:06 +0100 Subject: [PATCH 08/13] update matplotlib also --- simulation/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulation/Dockerfile b/simulation/Dockerfile index f87627d..4c61f35 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -16,7 +16,7 @@ ENV NRN_VER=8.2.7 ENV BRIAN2_VER=2.9.0 ENV PYNN_VER=0.12.4 -RUN $VENV/bin/pip install scipy tables pythran pandas numexpr --upgrade +RUN $VENV/bin/pip install scipy tables pythran pandas numexpr matplotlib --upgrade #### Install NEST From 5152df1fe19687a7dcfd901b7413fafd713f54fb Mon Sep 17 00:00:00 2001 From: pgleeson Date: Sat, 14 Jun 2025 10:47:50 +0100 Subject: [PATCH 09/13] Specify cython better --- base/Dockerfile | 2 +- osb/generateAll.sh | 16 ++++++++++++++++ simulation/Dockerfile | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100755 osb/generateAll.sh diff --git a/base/Dockerfile b/base/Dockerfile index 10e10b2..76540af 100644 --- a/base/Dockerfile +++ b/base/Dockerfile @@ -11,7 +11,7 @@ ENV LANG=C.UTF-8 RUN apt-get update RUN apt-get install -y automake libtool build-essential openmpi-bin libopenmpi-dev git vim \ - wget python3 libpython3-dev libncurses5-dev libreadline-dev libgsl0-dev cython3 \ + wget python3 libpython3-dev libncurses5-dev libreadline-dev libgsl0-dev \ ipython3 \ subversion python3-venv python3-mpi4py cmake zlib1g-dev diff --git a/osb/generateAll.sh b/osb/generateAll.sh new file mode 100755 index 0000000..c49c61a --- /dev/null +++ b/osb/generateAll.sh @@ -0,0 +1,16 @@ +set -e + +cd ../base +./generate.sh + +cd ../simulation +./generate.sh + +cd ../simulationx + +./generate.sh + +cd ../osb + +./generate.sh + diff --git a/simulation/Dockerfile b/simulation/Dockerfile index 4c61f35..fd16e52 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -17,6 +17,7 @@ ENV BRIAN2_VER=2.9.0 ENV PYNN_VER=0.12.4 RUN $VENV/bin/pip install scipy tables pythran pandas numexpr matplotlib --upgrade +RUN $VENV/bin/pip install "cython<3.1.0" #### Install NEST From b9ce069254c697a4edb360acbb7a8200aec05d56 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Sat, 14 Jun 2025 10:47:50 +0100 Subject: [PATCH 10/13] Specify cython better --- osb/generateAll.sh | 16 ++++++++++++++++ simulation/Dockerfile | 1 + 2 files changed, 17 insertions(+) create mode 100755 osb/generateAll.sh diff --git a/osb/generateAll.sh b/osb/generateAll.sh new file mode 100755 index 0000000..c49c61a --- /dev/null +++ b/osb/generateAll.sh @@ -0,0 +1,16 @@ +set -e + +cd ../base +./generate.sh + +cd ../simulation +./generate.sh + +cd ../simulationx + +./generate.sh + +cd ../osb + +./generate.sh + diff --git a/simulation/Dockerfile b/simulation/Dockerfile index 4c61f35..fd16e52 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -17,6 +17,7 @@ ENV BRIAN2_VER=2.9.0 ENV PYNN_VER=0.12.4 RUN $VENV/bin/pip install scipy tables pythran pandas numexpr matplotlib --upgrade +RUN $VENV/bin/pip install "cython<3.1.0" #### Install NEST From da70e58bf875c8d05d3e5f8ce595f71d8027f323 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Mon, 16 Jun 2025 11:28:06 +0100 Subject: [PATCH 11/13] Back to pynn 0.11.0 for now to test the rest --- simulation/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/simulation/Dockerfile b/simulation/Dockerfile index fd16e52..c820346 100644 --- a/simulation/Dockerfile +++ b/simulation/Dockerfile @@ -14,7 +14,7 @@ RUN ln -s /usr/bin/2to3-3.5 $VENV/bin/2to3 ENV NEST_VER=3.7 ENV NRN_VER=8.2.7 ENV BRIAN2_VER=2.9.0 -ENV PYNN_VER=0.12.4 +ENV PYNN_VER=0.11.0 RUN $VENV/bin/pip install scipy tables pythran pandas numexpr matplotlib --upgrade RUN $VENV/bin/pip install "cython<3.1.0" From f365db6d538836041ec577bfce33c55330348db3 Mon Sep 17 00:00:00 2001 From: pgleeson Date: Tue, 17 Jun 2025 11:07:27 +0100 Subject: [PATCH 12/13] Add generate file --- .gitignore | 1 - base/generate.sh | 14 ++++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100755 base/generate.sh diff --git a/.gitignore b/.gitignore index 098f05a..d78bdec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ .idea -/base/generate.sh /simulationx/runLocal.sh /simulationx/regenerateAll.sh /base/runLocal.sh diff --git a/base/generate.sh b/base/generate.sh new file mode 100755 index 0000000..471140b --- /dev/null +++ b/base/generate.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -ex + + +# Set the platform flag if we're on ARM +arch=$(uname -m) +if [[ "$arch" == "arm64" || "$arch" == "aarch64" ]]; then + platform_flag="--platform linux/amd64" +else + platform_flag="" +fi + + +docker build $platform_flag -t neuralensemble/base . From 47d08322a3692921272b5f6bfae0ed6ef9f01002 Mon Sep 17 00:00:00 2001 From: Padraig Gleeson Date: Tue, 29 Jul 2025 13:46:03 +0100 Subject: [PATCH 13/13] Update to latest omv & pyneuroml --- osb/Dockerfile | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/osb/Dockerfile b/osb/Dockerfile index 308a5d9..5cd784d 100644 --- a/osb/Dockerfile +++ b/osb/Dockerfile @@ -24,9 +24,9 @@ RUN /bin/bash -c "source ~/env/neurosci/bin/activate" #### Set versions # This will set the versions of simulators installed with 'omv install ...' -ENV OMV_VER=v0.3.8 +ENV OMV_VER=v0.3.10 -ENV PYNEUROML_VER=1.3.18 +ENV PYNEUROML_VER=1.3.21 ENV NETPYNE_VER=1.0.6 # omv install arbor with 0.9.0 throwing 'Illegal instruction'..? ENV ARBOR_VER=0.8.1 @@ -46,9 +46,6 @@ RUN sed -i -e s/'\/usr\/bin\/python'/'\/home\/docker\/env\/neurosci\/bin\/python # Install jNeuroML, PyLEMS & NeuroML2 -RUN $VENV/bin/omv install jNeuroML -ENV JNML_HOME=$HOME/jnml/jNeuroMLJar - RUN $VENV/bin/omv install jLEMS ENV LEMS_HOME=$HOME/jLEMS