Implement instance conversor between PyHamilton-LabOP (Laboratory protocol writing Language)

Hello Everyone! Hope you guys are having a wonderful day.

I’m a contributor for LabOP (Laboratory Open Protocol Language) that have spent the last months working with PyHamilton and I thought I could contribute to it by implementing a conversor from LabOP(GitHub - Bioprotocols/labop: Laboratory Open Protocol (LabOP) Language) protocols into PyHamilton protocols. One of the biggest advantages is that with this whoever wants to operate the robot doesn’t have to go through the process of learning the robot commands as they will be organized in classes operating at a higher stance (Eg: protocol steps).

Here´s an example:
When you write a protocol in PyHamilton, you usually organize the steps in classes like the add_reagent pointed by the arrow below. In this case the robot commands are the tip_pick_up,aspirate and dispense.

If we were to write the same protocol in LabOP we would still have to input things like the Labware location, the Liquid classes and the volume to be aspirated but we would only have to call a single function called `transfer. This function would act in the same way as the class does by calling all the necessary robot commands for the execution but the user writing the protocol wouldn’t need to know the commands to run it. Does that make sense?

The LabOP working group has already done a similar conversion but for OPENTRONS machines. You can check it out here. (labop/opentrons_specialization.py at main · Bioprotocols/labop · GitHub)

Anyways, I wanted to know what do you guys think and if it’s a good idea maybe we can work on it together.

Cheers,

Luiza

2 Likes

That’s a really good idea, I’m glad to see someone is working on this

This sounds like a HAL layer to abstract away the driver layer (PyHamilton). The PytomatedLiquidHandling project I am working on already has a HAL layer where you can “load” devices via yaml configuration files. Each HAL object has a user defined unique ID. The idea is that you can easily swap HAL objects depending on device integration or even system integration by working solely with the unique IDs.

Nonetheless great idea! I hope to see this implemented. More layers of abstraction would surely make writing protocols simpler.