How is the test data provided to the algorithm container?

The test data is stored in an archive and we run an algorithm job for each of the items in the archive. For each job, the algorithm container is rebuild and we load the data of one archive item into the container at /input/.

How the test data is structured is defined by the algorithm interface(s) configured for your phase. Consider an algorithm that requires a ct-image as input and should output a covid-19-lesion-segmentation as well as a covid-19-probability-score. The mounted file system would look as follows (the output directory will initially be empty, of course, but the algorithm will need to follow this structure when saving outputs):

├── input/
│   │
│   └── images/
│       │
│       └── ct/
│           │
│           └── randomly-generated-uuid.mha
│
└── output/
    │
    ├── images/
    │   │
    │   └── covid-19-lesion-segementation/
    │       │
    │       └── irrelevant-filename.mha
    │
    └── probability-covid-19.json

Each of the subfolders in the input directory contains exactly 1 file since we start one algorithm job per archive item (== case / patient). The algorithm in this case thus reads a single image from /input/images/ct/ and writes the output to /output/images/covid-19-lesion-segmentation/ and /output/probability-covid-19.json.

Behind the scenes, the structure of these directories is determined by the sockets defined for each of the configured algorithm interface(s) for your phase. The above described algorithm has one interface with the specified input and output sockets. Each socket defines the relative path to its value (i.e. the image or file), and that determines the directory structure shown above. You can take a look at the list of available sockets and their relative paths here.

The support team will help you choose the right sockets for your use case and configure algorithm interfaces for your challenge phase accordingly. You can read more about algorithm interfaces here.

Algorithms created for your challenge phase inherit the interface and thus their sockets. That way, these algorithms will be compatible with your configuration. Algorithms can also be run afterwards with data that fits the input sockets.

The input image will have a randomly generated uuid as filename. However, the file names of the input and output images are irrelevant because each input and output is uniquely identified by its socket name and relative path. The value of the uuid is therefore not important.

See also:
Will the images I upload keep their original file names and will the generated outputs from an algorithm have the same name / UUID as the corresponding inputs?