In most cases, containerization of a method is a simple and straightforward procedure. We have provided two example cases and, if needed, will help you creating a Docker image of your method. Furthermore, many Docker images are available on the internet to be used as a basis, probably including your favourite programming environment and neuroimaging tools.
Docker can be used to “wrap” your entire segmentation method (including all dependencies and the operating system) into a single container. This container can be run as if it would be a single standalone application, anywhere, on any platform. Because your method and all dependencies are included in the container, the method is guaranteed to run exactly the same all the time.
This is a very popular concept and has been used successfully in previous MICCAI challenges (e.g. the MSSEG challenge and WMH Segmentation Challenge). Docker Hub provides a large overview of existing Docker containers (base images) that can be used to build your own image. Furthermore, many popular programming environments and image analysis methods have Dockerfiles available.
Because your container runs in an isolated environment, the data needs to be mapped into the container. The input data (folders orig and pre) will be mapped into /input, read-only. The output of the method needs to be written into /output, as a file named result.nii.gz.
Computing environment & Resources
The challenge organizers will run your method on all 23 test cases. As you can imagine, we have only limited resources available to process all submissions. Docker can set resource limits on containers. During submission, please give us an indication how many CPUs and how much RAM is needed for you method, and what the resulting computation time will be.
To help you containerize your segmentation method with Docker, we have provided a simple example using python. The set up of this challenge is similar to the WMH Segmentation Challenge and on that website you can also find a matlab example.
If you are unsure whether your method can be containerized or how to proceed, please contact us in advance. We will try to help you with Docker or find other means to submit your method for evaluation.
Your Docker image will be run with the following commands:
CONTAINERID=`docker run --network none -dit -v [TEST-ORIG]:/input/orig:ro -v [TEST-PRE]:/input/pre:ro -v /output mrbrains18/[TEAM-NAME]` docker exec $CONTAINERID [YOUR-COMMAND] docker cp $CONTAINERID:/output [RESULT-TEAM] docker stop $CONTAINERID docker rm -v $CONTAINERID