It is possible to add an optional element called 'types', in the application configuration file described at Server Installation , which contains a description of the command line input arguments accepted by the application. If this section of the configuration file has been provided when the application was deployed, the Opal dashboard can render an advanced submission form where the input fields are customized on the inputs arguments.
The types section of the application configuration file is composed of four sections (see the code snippet below):
flags: It can contain a set of 'flag' elements. Each element represents an input flag for the application. These parameters are not ordered and are passed to the application using one or more characters prefixed with one or more dashes. Usually they are used to activate or deactivate some functionality in the application (--verbose).
taggedParams: It can contain a set of parameter elements. These elements are usually formed by a prefix (tag) and an input parameter (-input <filename>). They can appear in any order on the command line. The 'separator' element contains the character that will be used to separate the tag from the actual value (i.e. for -input=<file_name> the separator is '=', for -input <file_name> the separator is ' ')
untaggedParams: It can contain a set of parameter elements. Each element is used to define an input parameter. The only difference with taggedParameters is that they are not prefixed by a tag. For this reason their order on the command line is relevant.
groups: It can contain a set of 'group' elements. Each element defines a new group of parameters, which will be displayed together on the submission form.
These elements give the possibility to group together several parameters that have a similar functionality.
For a detailed description of flag, param, and group tag see below.
flag: every flag element is used to define an input flag of the application. The following elements can be nested inside this:
id: this element is required and it contains an internal unique identifier which represents this flag
tag: this required element contains the string that is used as a tag for this argument.
default: this element can contain only 'true' or 'false'. It specifies if this flag should be automatically selected or not.
textDesc: this element can contain an explanation of what is the functionality of this flag
<types> <!-- list of flags --> <flags> <flag> <id>verbose</id> <tag>--verbose</tag> <textDesc>Provide verbose output</textDesc> <default>true</default> </flag> ... </flags> |
param: The param element can be used to define a tagged or an untagged parameter depending from where it is nested. It can contain the following nested elements:
id: this element is required and it contains an internal unique identifier which represents this parameter
tag: this required element contains the string that is used as a tag for this argument. If this parameter is untagged this field must be empty
default: this element can contain the default value for this parameters (if present this value will be copied into the corresponding input box)
paramType: this is a required element which specify what is the type for this parameter. Its values can be: INT , BOOL, FLOAT, STRING, FILE , and URL
ioType: when the paramType tag is FILE this element must be present and is used to specify if the file is an input or an output. Its possible values are: INPUT, OUTPUT, and INOUT
required: this element can only contain the value 'true' or 'false' and it specifies if this parameters is mandatory or not. If it is not specified the default is false.
value: this element can be repeated multiple times. If present it means that this parameter can assume only the values enumerated in this tags
semanticType: this element is currently ignored, it will be used in future for sematic validation.
textDesc: this element should contain an explanation of what is the functionality of this tag
<!-- list of tagged parameters --> <taggedParams> <separator>=</separator> <param> <id>forcefield</id> <tag>--ff</tag> <paramType>STRING</paramType> <required>true</required> <value>AMBER</value> <value>CHARMM</value> <value>PARSE</value> <value>TYL06</value> <default>AMBER</default> <textDesc>The forcefield to use -- currently AMBER, CHARMM, PARSE, and TYL06 are supported. </textDesc> </param> ... </taggedParams> <!-- list of untagged parameters, in order --> <untaggedParams> <param> <id>inFile</id> <paramType>FILE</paramType> <ioType>INPUT</ioType> <!-- <required>true</required> --> <textDesc>The PDB input file.</textDesc> </param> ... </untaggedParams> |
group: The group element is used to define groups of parameters. It can contain the following nested element:
name: this element contains the internal name for this group
elements: this element contains the list of parameters and flags that are part of this group
required: if this element is true, it means that all the elements belonging to this group are mandatory (it can only be true or false and the default is false)
exclusive: this element can specify if only one of the parameters belonging to this group can be selected mutually exclusively (it can be true or false)
semanticType: this element is currently ignored, it will be used in future for sematic validation.
textDesc: this element contains a textual description that will be rendered as a header in the submission form for this group of parameters
<groups> <group> <name>inputParam</name> <elements>inFile inId</elements> <required>true</required> <exclusive>true</exclusive> <textDesc>Input file to be used (choose one of the two options)</textDesc> </group> ... </groups> </types> |
For the Opal configuration described in Sample Application Configuration File, the following advanced submission form is generated: