Dockerfiles for pharmacometrics-related software: NONMEM and Perl-speaks-NONMEM
Each of these files is intended to help improve reproducible research by enabling the use of Docker images to keep all requirements for execution in a single container.
A dockerfile to build a gfortran-run NONMEM installation. It will
require a NONMEM license file (in the same directory, named
nonmem.lic
). See the instructions in the comments of the file for
how to speed up the run (and minimize download time).
http://www.iconplc.com/innovation/solutions/nonmem/
Due to NONMEM requirements, NONMEM versions older than 7.5.1 will not work with Ubuntu versions after 20.04.
- Copy your nonmem license file (named
nonmen.lic
to the same directory as the Dockerfile. - Have your NONMEM zip file password handy
- See the instructions in the top of the Dockerfile for the command to run.
- For NONMEM, automatic download from Icon may be unreliable (#2). Manual download and serving the file from a local webserver is recommended. (See the top of the Dockerfile for instructions.)
It is recommended to run NONMEM via Perl-speaks-NONMEM (below). To run NONMEM directly, you can run the following command:
docker run --rm --user=$(id -u):$(id -g) -v $(pwd):/data -w /data humanpredictions/nonmem /opt/NONMEM/nm_current/run/nmfe CONTROL.mod CONTROL.res
To update your license file without requiring a rebuild of the Docker image, you can mount a directory containing the license file in the /license directory of your image (note the first -v argument):
docker run --rm --user=$(id -u):$(id -g) -v /opt/NONMEM/license:/opt/NONMEM/nm_current/license -v $(pwd):/data -w /data humanpredictions/nonmem /opt/NONMEM/nm_current/run/nmfe CONTROL.mod CONTROL.res
A dockerfile to build a Perl-speaks-NONMEM (PsN) installation on top of the NONMEM docker image. You must build the NONMEM image first to build the PsN image.
https://github.com/UUPharmacometrics/PsN/
- Install the NONMEM image above (this image starts from that image)
- See the instructions in the top of the Dockerfile for the command to run.
It is recommended to run NONMEM via the dockpsn script. To run the dockpsn command, set it up by copying it to a location in the path:
cp scripts/dockpsn /usr/local/bin/dockpsn
Then you can use it by running it followed by the PsN command of interest:
dockpsn execute CONTROL.mod
To run PsN directly, you can use the following command (substitute
execute
for the PsN command of interest):
docker run --rm --user=$(id -u):$(id -g) -v $(pwd):/data -w /data humanpredictions/psn execute CONTROL.mod
If you use the dockpsn
command, it will look for an updated license
in the /opt/NONMEM/license
directory by default. If none is found
there, it will run with the license used when the image was created.
To update your license file without requiring a rebuild of the Docker image, you can mount a directory containing the license file in the /license directory of your image (note the first -v argument):
docker run --rm --user=$(id -u):$(id -g) -v /opt/NONMEM/license:/opt/NONMEM/nm_current/license -v $(pwd):/data -w /data humanpredictions/psn execute CONTROL.mod
That is automatically done with the dockpsn
command.