Input Types

Types

Name

Meaning

autoprotocol-python type

aliquot

A single aliquot.

Well

aliquot+

Several aliquots.

WellGroup

aliquot++

Groups of multiple aliquots.

list(WellGroup)

container

A single container.

Container

container+

Several containers.

list(Container)

integer, decimal

An integral or decimal number, respectively.

int, float

acceleration, mass_concentration, amount_concentration, frequency, flowrate, temperature, time, volume

A dimensioned value.

Unit

bool

True or false.

bool

string

A string.

str

group

A group of related inputs.

dict

group+

Groups of groups of related inputs.

list of dicts

choice

A list of options that renders as a dropdown menu

list of dicts

group-choice

A list of options that render another set of inputs when selected

Combination, see details below.

thermocycle

Groups of thermocycle cycles with groups of steps.

Combination, see details below.

csv, csv_table

Bulk input from a comma-separated values (CSV) file.

list of dicts, see details below.

Manifest UI mapping

Demonstrated below are the input types and parameters to construct the manifest. All input types have a "label," "type," "description," and "required" field. The choice and group-choice input types do not have the "required" fieldThe "required" field accepts a boolean value that indicates if this input type must be completed.

Aliquots

"sample": {
  "type": "aliquot",
  "label": "...",
  "required": true,
  "description": "...",
}
"sample": {
  "type": "aliquot+",
  "label": "...",
  "required": true,
  "description": "...."
},
"compounds": {
  "type": "aliquot++",
  "label": "List of compounds.",
  "required": true,
  "description": "..."
},
Implementation of the aliquot input type.

Containers

"sample": {
  "type": "container",
  "label": "...",
  "required": true,
  "description": "...",
}
"samples": {
  "type": "container+",
  "label": "Destination(s) from Your Inventory",
  "required": true,
  "description": "Select destination(s) from your inventory."
}
Implementation of Container+

Dimensional Values, Strings, and Integers

Please note, acceleration, mass_concentration, amount_concentration, frequency, flowrate, temperature, time, and volume are just extensions of an integer or string.

"input": {
  "type": "volume",
  "label": "...",
  "default": "10:microliter",
  "description": "....",
  "required": true,
},
"id": {
  "type": "string",
  "label": "...",
  "default": "example",
  "required": true,
  "description": "..."
}
"number": {
  "type": "integer",
  "label": "your_label",
  "default": "5",
  "required": true,
  "description": "number of your input"
}
Implementation of integer, string, and value

Please note that wavelength was used in example, but any dimension can be used.

Boolean

"boolean_box": {
  "type": "bool",
  "default": false,
  "label": "your_label",
  "required": true,
  "description": "Is false until assigned true"
},
Implementation of boolean.

Note that the default for this boolean selector is set to "true."

Group and Group+

"sample": {
  "type": "group",
  "label": "...",
  "required": true,
  "description": "...",
  "inputs": {
    "group1": {
      "label": "your_label",
      "type": "another_type",
      "default": "00",
    },
    "group2": {
      "label": "your_label",
      "type": "another_type",
      "default": "00",
    }
  }
}
"samples": {
  "type": "group+",
  "label": "...",
  "required": true,
  "description": "...",
  "inputs": {
    "sample": {
      "type": "...",
      "label": "...",
      "description": "..."
    },
    "sample2": {
      "type": "...",
      "description": "...",
      "label": "..."
    }
    ... (ability to add more groups)
  }
}
Implementation of Group+.

Similar to Group but with ability to add more groups

Choice and Group-Choice

# One drop-down choice
"source": {
  "type": "choice",
  "label": "Choose ...",
  "default": "value1",
  "description": "...",
  "options": [
    {
      "value": "value1",
      "name": "..."
    },
    {
      "value": "...",
      "name": "..."
    }
  ]
}
# List of options, each provides unique set of inputs
"source": {
  "type": "group-choice",
  "label": "your_label",
  "description": "...",
  "default": "this_must_match",
  "options": [
    {
      "value": "this_must_match",
      "name": "your_name",
      "inputs": {
        "name": {
          "type": "group+",
          "label": "...",
          "inputs": {
            "source": {
              "type": "...",
              "label": "..."
            },
            "name1": {
              "type": "...",
              "label": "..."
            },
            "name2": {
              "type": "...",
              "label": "..."
            }
          }
        }
      }
    }
    ]
  }
Implementation of Choice.

Group-Choice provides ability to add more groups with choice functionality.

Thermocycle

"therm": {
  "label": "Thermocycling Parameters",
  "description": "Vendor specific defaults for the chosen polymerase are filled in below, you can make any changes to the thermocycle protocol by changing temperatures and durations or adding or removing steps or groups below.",
  "type": "thermocycle",
  "required": true,
  "default": [
    {
      "cycles": 1,
      "steps": [
        {
          "temperature": "98:celsius",
          "duration": "30:second"
        }
      ]
    },
    {
      "cycles": 30,
      "steps": [
        {
          "temperature": "98:celsius",
          "duration": "10:second"
        },
        {
          "temperature": "60:celsius",
          "duration": "60:second"
        },
        {
          "temperature": "72:celsius",
          "duration": "120:second"
        }
      ]
    },
    ... (more cycles can be added here)
  ]
}
},
Implementation of Thermocycle

CSV Table

"drugs":{
  "type": "csv-table",
  "label": "...",
  "required": true,
  "template": {
    "header": ["header1", "header2", "header3", "header4"],
    "keys": ["key1", "key2", "key3", "key4"],
    "col_type": ["integer", "string", "container", "aliquot"],
    "rows": [["0", "1", "2"],
             ["0", "1", "2"]],
    "label": "..."
  }
}
"bulk_upload": {
  "type": "csv",
  "label": "...",
  "required": true,
  "template": {
    "label": "...",
    "header": [
      "sample_name",
      "sample_volume",
      "sample_well"
    ],
    "rows": [
      [
        "compound_1",
        "00:microliter",
        "A1"
      ],
      [
        "compound_2",
        "00:microliter",
        "A2"
      ]
    ]
  }
}
Implementation of CSV Table upload