Skip to content

Instantly share code, notes, and snippets.

@Cixelyn
Last active August 29, 2015 14:14
Show Gist options
  • Save Cixelyn/8353ce715bee8e1dc82a to your computer and use it in GitHub Desktop.
Save Cixelyn/8353ce715bee8e1dc82a to your computer and use it in GitHub Desktop.

OpenProtocol ALPHA Spec Sheet (SUBJECT TO CHANGE)

OpenProtocol is a JSON based datastructure that serves as the "low level" specification for OpenTrons protocols.

It is based on Transcriptic's Autoprotocol, which is an excellent open, fully featured datastructure for biology protocols. We modified it to suit our platform, simplifying and customizing it for the OT.One's liquid handling setup. This should empower biodevelopers to easily develop and test protocols on a local machine like the OT.One, and then quickly scale them to "the cloud."

OpenTrons will be delivering a visual protocol builder that will produce OpenProtocol from a drag-and-drop interface with our first robots in April. This will be complemented by a "higher level" specification and more full featured design interface in Summer 2015.

Please send any questions to [email protected] -- we'd love to hear what you think!

Note that

  • ALL DISTANCES in Millimeters (mm)
  • ALL VOLUMES in Microleters (ul)

Document format

The base document to send to the robot is a simple json object containing an array of instructions. Instructions are the bulk of a protocol, describing the steps carried out by the machine during a run. Other sections under development include the container and tool libraries, bed layout, and ingredients list.

{
  "instructions": [instructions]
}

Instructions

Instructions are organized by tool. The OT.One can hold two micropipettes, so protocols will use one of these two tools at the beginning. In the future things like magnetic bead stations, heat plates, and centrifuges will be added as well.

{
  "tool": "p200",
  "groups": [instruction_groups]
}

"Groups" is an ordered array of instruction groups. Each instruction group holds multiple instructions that specify different things depending on the tool. With a pipette, the machine changes pipette tips between each group; instructions in the same group use the same tip.

Transfer Instruction Group

The transfer instruction group is an array of transfer instruction commands. Pipette tips will not be changed between transfer instructions in the same group.

"transfer": [{
  "from": {
    "container": "source-bucket",
    "location": "A1",
    "tip-offset": -2
  },
  "to": {
    "container": "plate-1",
    "location": "B1"
  },
  "volume": 80
}, ...]
  • Containers dimensions and characteristics are specified in "container-lib.json", every container has at least one location inside it, but often more.
  • Tip offset is the distance from the meniscus of the liquid from which the tip draws, 0 = at the liqid surface (defaultoption); -2 = 2mm below the liquid surface; 2 = 2mm above liquid surface. When machine knows dimensions of container and the liquid volume inside, it dynamically calculates the surface level throughout a job.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment