The service.ot-builder
is the service layer for working with the Opentrons OT-2 liquid handling robot. It does not actually interface directly with the robot, but instead runs as a standalone web server that is able to generate OT-2 Python protocols that can be uploaded to the OT-2 via the Opentrons App.
The service.ot-builder
works as a unidirectional service - it only handles upstream triggers but does not actually export any data to the service.data-gateway
.
python 3.9
poetry 1.0
-
Install dependencies:
poetry install
-
Start auxiliary containers:
make dependencies
-
Run the server:
make
The web frontend should be accessible at http://localhost:8000/builds.
Environment variables for the server that can be configured can be found in
src/config/config.py
.
Upon receiving a protocol trigger, the service.ot-builder
registers an active OT-2 Python protocol build which can be accessed via the web frontend.
Clicking into a build allows you to select the operational configuration required for the OT-2 to execute the protocol, such as the labware loaded onto the OT-2 deck and their respective locations. See the OT-2 API docs for more info about labware.
Once you have selected the configuration for the protocol you wish to run on the OT-2, you can view a step-by-step simulation of what the OT-2 will execute before downloading the generated protocol file. This allows you to tweak the configuration until you are confident it will work. You can then have the OT-2 execute this protocol file by uploading it via the Opentrons App.
Available protocols can be found under the src/protocols
directory. Each protocol contains a README documenting the required spec
to trigger it.
Examples of protocol triggers for the service.ot-builder
can be found under protocols/examples/ot-builder
.
To implement new protocols that the service.ot-builder
should handle, follow these steps:
- Create a new directory for your protocol under
src/protocols
- Create a
protocol.py
file and write the implementation for your Opentrons Python protocol - Create a
config.py
file, containing the config schema for your protocol. The possible config types can be found insrc/protocols/config.py