Here are the description for each of the fields in the example above:
* **schema_version:** specifies which schema version must be used to validate the file content.
* **schema_version:** specifies which schema version must be used to validate the file content.
* **api_version:** specifies the version of the API implemented by the algorithm.
* **type:** specifies the type of the algorithm. Depending on that, the execution model will change.
* **type:** specifies the type of the algorithm. Depending on that, the execution model will change.
* **language:** specifies the language in which the algorithm is implemented.
* **language:** specifies the language in which the algorithm is implemented.
* **splittable:** indicates, whether the algorithm can be parallelized into chunks or not.
* **splittable:** indicates, whether the algorithm can be parallelized into chunks or not.
* **parameters:** lists the parameters of the algorithm, describing both default values and their types.
* **parameters:** lists the parameters of the algorithm, describing both default values and their types.
* **groups:** gives information about the inputs and outputs of the algorithm. They are provided into a list of dictionary, each element in this list being associated to a database *channel*. The group, which contains outputs, is the *synchronization channel*. By default, a loop is automatically performed by the BEAT framework on the synchronization channel, and user-code must not loop on this group. In contrast, it is the responsibility of the user to load data from the other groups. This is described in more details in the following subsections.
* **groups:** gives information about the inputs and outputs of the algorithm. They are provided into a list of dictionary, each element in this list being associated to a database *channel*. The group, which contains outputs, is the *synchronization channel*. By default, a loop is automatically performed by the BEAT framework on the synchronization channel, and user-code must not loop on this group. In contrast, it is the responsibility of the user to load data from the other groups. This is described in more details in the following subsections.
* **description:** is optional and gives a short description of the algorithm.
...
...
@@ -363,6 +397,71 @@ The platform will call this method only once as it is its responsibility to load