Experiment Definition (--expdef)#

SIERRA is capable of reading --expdef-template from a number of formats via --expdef plugins. Before diving into the details of the plugins, it is important to clarify terminology around the different components in files passed to --expdef-template:

  • Attribute - The value part of a <key, value> pair within an --expdef-template which maps to a native primitive such as a bool, int, or string. Attributes cannot contain other attributes.

  • Element - The value part of a <key, value> pair within an --expdef-template which maps to a sub-tree of configuration. Thus, elements can contain other elements, as well as attributes (depending on markup format).

  • Tag - The key part of a <key, value> pair within an --expdef-template which maps either to an element or an attribute.

The differences between these components is best illustrated with some simple examples:

<menu id="file" value="File">
 <popup>
   <menuitem value="New" onclick="CreateNewDoc()" />
   <menuitem value="Open" onclick="OpenDoc()" />
   <menuitem value="Close" onclick="CloseDoc()" />
 </popup>
</menu>
{"menu": {
   "id": "file",
   "value": "File",
   "popup": {
     "menuitem": [
       {"value": "New", "onclick": "CreateNewDoc()"},
       {"value": "Open", "onclick": "OpenDoc()"},
       {"value": "Close", "onclick": "CloseDoc()"}
      ]
   }
}}
menu:
  id: file
  value: File
  popup:
    menuitem:
       - value: New
         onclick: CreateNewDoc()
       - value: Open
         onclick: OpenDoc()
       - value: Close
         onclick: CloseDoc()

In the above, {menu, popup, menuitem} are tags, and each identify unique elements. {id, value, onclick} are tags identifying attributes.

With that understanding in place, the supported formats that come with SIERRA are:

Additional formats can be supported via Experiment Definition Files (--expdef).