The docker image for the course is provided as a tar file here:

Important facts:

  • Download size: approximately 2.4 GB.
  • After loading, the docker image occupies approximately 8.2 GB.
  • Docker image tag after loading: mod-intel-solvers:1.0.1.100-nogurobi.lic
  • The image contains MØD 1.0.1.100.
  • It contains CPLEX, Gurobi libraries/CLI, CBC-CLP, a modified LoLA, PostMØD, Graphviz built from source, the graph-canon command line tool for GraphCanon JSON traces, RDKit, and convenience tools such as emacs, screen, tmux, and pip.
  • It does not contain a Gurobi license file, hence the suffix nogurobi.lic.
  • CPLEX is the default ILP solver inside the image.
  • Gurobi can still be used, but requires either suitable WLS environment variables or a mounted license file.

mød using docker

First, you should install docker on your personal machine (see here ). Make sure you can use docker, e.g. test with the command docker run hello-world.

You can then load the course image with:

docker load -i mod-intel-solvers-1.0.1.100-nogurobi.lic.tar

This has to be done only once.

After the image has been loaded, you can start a container like this:

docker run -it --rm \
  --platform linux/amd64 \
  --hostname docker \
  -v "$(pwd):/workdir" \
  -w /workdir \
  mod-intel-solvers:1.0.1.100-nogurobi.lic

The option --platform linux/amd64 is important on Apple Silicon machines.

When you run MØD in the container, you are usually interested in the output generated in the summary directory, which is accessible from the host system in the directory where you started docker.

If you nevertheless want to force the solver explicitly, you may still set MOD_ILP_SOLVER=CPLEX or use config.ilp.solver="CPLEX" in a Python script, but this is not necessary because CPLEX is the default.

GraphCanon JSON traces

The image also contains graph-canon. For example, download stabilizer-example.dimacs, or create an equivalent DIMACS file inside the container, and generate a JSON trace for the GraphCanon visualizer with:

curl -L -o /tmp/stabilizer-example.dimacs \
  https://ac2026.algochem.techfak.de/Material/Other/stabilizer-example.dimacs

graph-canon \
  --fno-aut-implicit \
  --ftarget-cell f \
  --ftree-traversal dfs \
  -f /tmp/stabilizer-example.dimacs \
  --json /tmp/stabilizer-example.json \
  --tree-dot /tmp/stabilizer-example.dot

Note, that changes within the docker container are not persistent, but you can make persistent changes by committing changes to the container. See any docker introductory material in case you have the need for that.