Input Types

Types

NameMeaningautoprotocol-python type
aliquotA single aliquot.Well
aliquot+Several aliquots.WellGroup
aliquot++Groups of multiple aliquots.list(WellGroup)
containerA single container.Container
container+Several containers.list(Container)
integer, decimalAn integral or decimal number, respectively.int, float
acceleration, mass_concentration, amount_concentration, frequency, flowrate, temperature, time, volumeA dimensioned value.Unit
boolTrue or false.bool
stringA string.str
groupA group of related inputs.dict
group+Groups of groups of related inputs.list of dicts
choiceA list of options that renders as a dropdown menulist of dicts
group-choiceA list of options that render another set of inputs when selectedCombination, see details below.
thermocycleGroups of thermocycle cycles with groups of steps.Combination, see details below.
csv, csv_tableBulk 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.
713

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+
704

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.

706

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."

229

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

1398

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.

271

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
725

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
703