Manifest Configuration#
From the overview of the Catharsys system, recall that one of the design principles of Catharsys is, to enable the combination of different partial configurations into a set of full configurations. For example, you may want to vary the camera position, the set of objects in the scene, the ego velocity of the camera, etc. Each of these variations has a configuration type associated with it. In the manifest file you declare which configuration types you want to vary, and in the trial file you sepecify a set of actual configurations for each type. See also the manifest file documentation here.
Tag |
Type |
Description |
Value Constraints |
Example |
---|---|---|---|---|
sDTI |
string |
DTI of manifest file. Must be this value. |
|
|
sId |
string |
Id of manifest file. |
|
|
mActions |
dictionary |
Dictionary of actions. See below for more info. |
Action Definition#
The mActions
dictionary defines the configuration data expected per action. Note that every action specified in the launch configuration can reference a different trial file and each trial file in turn references a manifest. The manifest specifies what configuration data type is to be expected for a given id and the trial file specifies the lists of configurations per id.
Every action in the mActions
dictionary must have this form:
"[action name]": {
"sDTI": "manifest/action:1",
"lConfigs": [
"{config declaration dictionary 1}",
"{config declaration dictionary 2}",
"[...]"
],
"lDeps": ["name of action this action depends on"],
}
The elements of the lConfigs
list must be dictionaries with the following elements:
Tag |
Type |
Description |
Value Constraints |
Example |
---|---|---|---|---|
sId |
string |
id name used in trial file to specify list of configurations |
no spaces or special symbals |
“render” |
sDTI |
string |
the DTI of the configurations used |
||
sForm |
string |
configuration data form |
|
|
bAddToPath |
bool |
indicates whether to add the id of the config to the output path |
|
|
bEnabled |
bool |
can be used to filter certain combinations of configs |
|
The sForm
element defines the form in which the configuration data is presented. This can either be a json file (file/json
) or a value (value
) if the values are given directly in the trial file. Note that when the values are passed directly, the DTI value is not checked. However, the action may require certain DTIs to be available. For example, the Blender render action expects there to be a value element with DTI camera-name:1
to specify the camera, if no camera set configuration file is given.
The bEnabled
element can be used to filter certain combinations of configurations. This can be done in conjunction with the configuration id
dictionary (see also here). For example, suppose you have two sets of configurations that are referenced in the manifest and trial files by a
and b
, that is, the sId
given in the manifest for the two configuration types is a
and b
, respectively. By default, if there are a number of configuration files defined in the trial file for a
and b
, the configuration compiler will generate combined configurations for all possible combinations. If you only want to use combined combinations if the configuration ids (the sId
elements in each configuration file) are equal, then you can define the bEnabled
element in the manifest of configuration b
as:
"bEnabled": "$eq{${id:a:cfg-id}, ${id:b:cfg-id}}"
Similarly, you can also place the bEnabled
element in the top level of any configuration file. In this way, you can define a condition per configuration file and not just per configuration file type, as in the manifest.
The lDeps
element is a list of action names, the current action depends on. That means, that the current configuration set is combined with all the combinations of parent configuration.
Example#
Here is an example manifest configuration taken from this example config:
{
"sDTI": "/catharsys/manifest:1.1",
"sId": "${filebasename}",
"mActions": {
"run": {
"sDTI": "manifest/action:1",
"lConfigs": [
{ "sId": "render", "sDTI": "blender/render/output-list:1", "sForm": "file/json", "bAddToPath": false },
{ "sId": "cap", "sDTI": "capture/std:1", "sForm": "file/json", "bAddToPath": false },
{ "sId": "cam", "sDTI": "camera-name:1", "sForm": "value" },
{ "sId": "meta", "sDTI": "meta-test:1", "sForm": "file/json" },
// The type "vars-test:1" is just an arbitrary typename.
// However, the json file referenced in the trial config must use this DTI.
{ "sId": "vars", "sDTI": "vars-test:1", "sForm": "file/json", "bAddToPath": true },
],
"lDeps": []
},
}
}