Hey all! We are scoping a plate reader to buy and integrate with our STARlet running PLR. I see from documentation and this forum that folks have integrated ClarioSTAR and Cytation 5. We may go for a simpler model (only need absorbance and incubating) but I am not sure what the right requirements are for understanding if a plate reader is compatible with PLR. What does it look like to integrate a new plate reader type with PLR? What should we look out for that would make it a deal breaker for integrating? Open to any suggestions on models too!
There are no “requirements to be compatible with PLR”, we can work with any device. (Obviously, this device has to be integrated before you can actually use it with PLR.) If manufacturer software can talk to the device and perform all operations, we can do the same. It is just a matter of sending the same USB commands and parsing the responses.
Since we already have a front end, it would just be writing a new backend. You can choose what you want to support, but a full integration for a plate reader requires the following functions:
async def open(self) -> None:
async def close(self) -> None:
async def read_luminescence(self, plate: Plate, focal_height: float) -> List[List[float]]:
async def read_absorbance(self, plate: Plate, wavelength: int) -> List[List[float]]:
self,
plate: Plate,
excitation_wavelength: int,
emission_wavelength: int,
focal_height: float,
) -> List[List[float]]:
(from pylabrobot/plate_reading/backend.py)
To implement these functions, run a certain operation from the OEM software while capturing the USB traffic with usbpcap. Then, analyze the pcap file and see which commands perform an operation. For example, which bytes are sent in open and close? Likely one packet will stand out and be different, and that is probably the command. Then verify this by sending the command from python and seeing if the machine does what you want it to.
For reading data, read a plate while capturing the data using usbpcap. Then see how the data/bytes you read converts to the numbers you see for each well.
Plate readers are conceptually simple machines (just open/close/read) so a perfect first reverse engineering project.
I’m happy to go on a call / visit when you get the plate reader and show you exactly how this works.
Got it - so on the “backend” side (i.e. hooking up to PLR), there should not be any major blockers. This may be a more hardware question but are there any considerations on the physical integration side? For example, the gripper has to be able to reach the plate reader and turn the plate in the right orientation.
I will definitely take you up on this offer!
of course, you have to make sure you have some way of getting plates in and out of it. do you have an iswap arm on your starlet? when the machine is turned off you can freely move it around and see how far it reaches. most automation machines have a plate holder that sort of moves out of the machine (like cytation), but for some (like the vspin centrifuge) we directly move a plate into the centrifuge (nothing comes out).