Release: Plate reader support in PyLabRobot (starting with CLARIOStar)

Excited to share that PLR now supports a plate reader: the CLARIO Star. (Devices named ‘star’ are good first machines, apparently :)) As with the Hamilton, this API works not only on Windows, but also on Macs and Linux, including using Jupyter Notebooks. It integrates nicely with the rest of the library:

from pylabrobot.plate_reading import PlateReader, ClarioStar

pr = PlateReader(name="plate reader", backend=ClarioStar())
pr.setup()

# Use in combination with a liquid handler
lh.assign_child_resource(pr, location=Coordinate(x, y, z))
lh.move_plate(lh.get_resource("plate"), pr)

data = await pr.read_luminescence()

The current API is very limited, and I’ll have some more work to do to support all parameters, but I’m confident that can be done in the near future.

If you’re interested in contributing, check out this guide: pylabrobot/CONTRIBUTING.md at main · PyLabRobot/pylabrobot · GitHub.

5 Likes

The Tecan Spark plate reader has a SiLA2 driver (https://sila-standard.com), how hard would that be to use via PLR in an analogous approach? And I guess how are you supposed to interface with the CLARIO Star? Direct USB connection?

To be honest I’m not quite sure what the sila driver is, so can’t really speak to the first question. If you have more information there I’d love to learn about it! I will say that PLR will always use a host computer / OS agnostic interface, which would be a requirement for the sila driver to be added to the core library.

And yes, in this case PLR uses a direct USB connection.

Hi @rickwierenga realized I never responded to this. SiLA2 is a gRPC / HTTP2 based remote procedure call standard designed for laboratory automation. The simplest example of a SiLA2 driver is something what like the Tecan Spark has, where it uploads a vendor specific instrument method file to the instrument, executes that method file, and downloads the resulting data.

Better late than never :slight_smile:
If I understand correctly, a server is running somewhere close to the machine to handle these requests. How long would you say it takes to upload protocols + download the results? Fast enough to run many individual commands interactively? How does the server/driver talk to the actual hardware?

Anyway, I’m pretty confident PLR is able to function as a client to make gRPC/HTTP requests.

Yes, the SiLA2 server has to interface with the instrument or piece of equipment. In some cases, instrument vendors have built the SiLA2 server right into the instrument (Promega does this). In most cases, there is an external Desktop PC or NUC which hosts the SiLA server & communicates with the instrument over USB or RS-232, etc.

How long would you say it takes to upload protocols + download the results?

Depends on the method that is being executed.

Fast enough to run many individual commands interactively?

Yes, SiLA2 drivers are being used to control robotic arms. But it depends on how the SiLA2 driver is implemented. The Tecan SPARK SiLA2 driver is very high level. You would need a low level driver to run individual commands. It’s up to the SiLA2 driver writer, at what level they want to implement (or both).

How does the server/driver talk to the actual hardware?

Depends on the implementation. Typically over USB or RS-232, etc. For the Opentrons OT2 that SiLA2 driver works via it’s HTTP interface (you could in theory run the SiLA2 server on the Opentrons OT2 embedded computer)

Anyway, I’m pretty confident PLR is able to function as a client to make gRPC/HTTP requests.
You could homebrew it. Or, could use a SiLA2 python implementation. Python implementation of the SiLA 2 standard — sila2 0.12.1 documentation