#OpenTrons Protocol Datastructure ALPHA ###(SUBJECT TO CHANGE)
The OT.One runs jobs based on a JSON datastructure. This "low-level" definiton provides volume, container, and location specific information, describing protocols at the liquid transfer level (as opposed to Barista's higher level description).
It is based loosely on [Transcriptic's Autoprotocol] (https://www.transcriptic.com/platform/#instructions). We modified it to suit platforms beyond Transcriptic's robotic work cells, parsing out the platform specific information into a separate file with information particular to the OT platform. This should empower biodevelopers to easily develop and test protocols on their local machine, and then quickly scale them to "the cloud."
Please send any questions to [email protected]!
Note that
- ALL DISTANCES in Millimeters (mm)
- ALL VOLUMES in Microleters (ul)
The base document 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. The instructions reference the containers.json document.
{
"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.
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. So, 0 = at the liquid surface (default option); -2 = 2mm below the liquid surface; 2 = 2mm above liquid surface. When the machine knows dimensions of container and the liquid volume inside, it dynamically calculates the surface level throughout a job.
The distribute instruction is a one-to-many liquid transfer operation; the "to" field is an array of locations. Distribute commands only use one pipette tip to dispense to multiple locations, so the total transfer volume cannot exceed the volume of a single pipette tip.
"distribute": {
"from": {
"container": "source-bucket",
"location": "A1",
"tip-offset": -2
},
"to": [
{
"container": "plate-1",
"location": "A2",
"volume": 50
},
{
"container": "plate-1",
"location": "A2",
"volume": 50
},
]
}
The consolodate instruction is a many-to-one liquid transfer operation; the "to" field is an array of locations. Consolodate commands only use one pipette tip to aspirate from multiple locations in a "pipeline pipetting" style, so the total transfer volume cannot exceed the volume of a single pipette tip.
"consolodate": {
"from": [
{
"container": "source-bucket",
"location": "A1",
"tip-offset": -2
},
{
"container": "source-bucket",
"location": "A1",
"tip-offset": -2
},
]
"to": {
"container": "plate-1",
"location": "A2",
"volume": 50
}
}
Mix command is not a liquid transfer; it mixes the contents of a well by moving liquid up and down in a pipette tip.
"mix": [
{
"container": "plate-1",
"location": "A1",
"volume" : 50,
"repetitions": 2
},
{
"container": "plate-1",
"location": "B1",
"volume" : 50,
"repetitions": 8
}
]