What will be the format for input data in testing this year? For example, will individual patient data be categorized into separate folders, or will all patient images be placed in the same folder? Also, could you please explain the difference between Docker and MLCube, as well as their input/output (I/O) mechanisms?
Created by Yu-Chuan Chen RightPunch Hi @RightPunch, I can give you an answer about MLCubes.
MLCubes are light-weight container wrappers, that aim to provide a consistent and explicit interface for interacting with containers. This interface is defined inside the `mlcube.yaml` file, where you can see what tasks can be executed by an MLCube, as well as the inputs/outputs for each task. The mechanism behind IO are container volumes. Because of this, all inputs and outputs have to be either files or folders, which by default are expected to be found in the `workspace` folder. Inputs and outputs are passed to the container as CLI arguments, which should be picked up by the entrypoint script.
Here's a quick demonstration of the relation between MLCubes and Docker. With the following `mlcube.yaml` (simplified for demonstration purposes)
```yaml
name: MLCube name
description: MLCube Description
platform:
accelerator_count: 0
docker:
image: repo/img:tag
tasks:
task_name:
parameters:
inputs: {
input_param: input_folder
}
outputs: {
output_file: {type: file, default: output.txt}
}
```
And running
```bash
mlcube run --task=task_name
```
The following docker command is executed behind the scenes
```bash
docker run --volume path/to/workspace/input_folder:/mlcube_io0 --volume /path/to/workspace:/mlcube_io1 repo/img:tag task_name --input_param=/mlcube_io0 --output_file=/mlcube_io1/output.txt
```
You can learn more about this on [MLCube's documentation](https://mlcommons.github.io/mlcube/) and on MedPerf's documentation about [writing Model MLCubes](https://docs.medperf.org/mlcubes/mlcube_models/).
Hope this helps!
@RightPunch ,
Sorry for the delayed response! For a given task, you will be given all cases of a dataset organized into separate folders, ergo, your model will be responsible for iterating through those cases.
For example, say you are submitting to Adult Glioma, the mounted input data will look like this:
```bash
.
??? BraTS-GLI-00000-000
? ??? BraTS-GLI-00000-000-t1c.nii.gz
? ??? BraTS-GLI-00000-000-t1n.nii.gz
? ??? BraTS-GLI-00000-000-t2f.nii.gz
? ??? BraTS-GLI-00000-000-t2w.nii.gz
??? BraTS-GLI-00001-000
? ??? BraTS-GLI-00001-000-t1c.nii.gz
? ??? BraTS-GLI-00001-000-t1n.nii.gz
? ??? BraTS-GLI-00001-000-t2f.nii.gz
? ??? BraTS-GLI-00001-000-t2w.nii.gz
??? BraTS-GLI-00002-000
...
```
For your second question, someone from MedPerf will answer.
Hope this helps!