Skip to main content

A hardware agnostic platform for lab automation

Project description

PyLabRobot

Docs | Forum | Installation | Getting started

What is PyLabRobot?

PyLabRobot is a hardware agnostic, pure Python library for liquid handling robots and other lab automation equipment. Read the paper in Device.

Liquid handling robots

PyLabRobot provides a layer of general-purpose abstractions over robot functions, with various device drivers for communicating with different kinds of robots. Right now we only have drivers for Hamilton, Tecan and Opentrons liquid handling robots, but we will soon have drivers for many more. The Hamiton and Tecan backends provide an interactive firmware interface that works on Windows, macOS and Linux. The Opentrons driver is based on the Opentrons HTTP API. We also provide a browser-based Visualizer which can visualize the state of the deck during a run, and testing backends which do not require access to a robot.

Here's a quick example showing how to move 100uL of liquid from well A1 to A2 using firmware on Hamilton STAR (this will work on any operating system!):

from pylabrobot import LiquidHandler
from pylabrobot.liquid_handling.backends import STAR
from pylabrobot.resources import Deck

deck = Deck.load_from_json_file("hamilton-layout.json")
lh = LiquidHandler(backend=STAR(), deck=deck)
await lh.setup()

await lh.pick_up_tips(lh.deck.get_resource("tip_rack")["A1"])
await lh.aspirate(lh.deck.get_resource("plate")["A1"], vols=100)
await lh.dispense(lh.deck.get_resource("plate")["A2"], vols=100)
await lh.return_tips()

To run the same procedure on an Opentrons, change the following lines:

- from pylabrobot.liquid_handling.backends import STAR
+ from pylabrobot.liquid_handling.backends import OpentronsBackend

- deck = Deck.load_from_json_file("hamilton-layout.json")
+ deck = Deck.load_from_json_file("opentrons-layout.json")

- lh = LiquidHandler(backend=STAR(), deck=deck)
+ lh = LiquidHandler(backend=OpentronsBackend(host="x.x.x.x"), deck=deck)

Or Tecan (also works on any operating system!):

- from pylabrobot.liquid_handling.backends import STAR
+ from pylabrobot.liquid_handling.backends import EVO

- deck = Deck.load_from_json_file("hamilton-layout.json")
+ deck = Deck.load_from_json_file("tecan-layout.json")

- lh = LiquidHandler(backend=STAR(), deck=deck)
+ lh = LiquidHandler(backend=EVO(), deck=deck)

Plate readers

PyLabRobot also provides a layer of general-purpose abstractions for plate readers, currently with just a driver for the ClarioStar. This driver works on Windows, macOS and Linux. Here's a quick example showing how to read a plate using the ClarioStar:

from pylabrobot.plate_reading import PlateReader, ClarioStar

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

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

data = await pr.read_luminescence()

Resources

Documentation

docs.pylabrobot.org

Support

Citing

If you use PyLabRobot in your research, please cite the following:

@article{WIERENGA2023100111,
  title = {PyLabRobot: An open-source, hardware-agnostic interface for liquid-handling robots and accessories},
  journal = {Device},
  volume = {1},
  number = {4},
  pages = {100111},
  year = {2023},
  issn = {2666-9986},
  doi = {https://doi.org/10.1016/j.device.2023.100111},
  url = {https://www.sciencedirect.com/science/article/pii/S2666998623001709},
  author = {Rick P. Wierenga and Stefan M. Golas and Wilson Ho and Connor W. Coley and Kevin M. Esvelt},
  keywords = {laboratory automation, open source, standardization, liquid-handling robots},
}

Disclaimer: PyLabRobot is not officially endorsed or supported by any robot manufacturer. If you use a firmware driver such as the STAR driver provided here, you do so at your own risk. Usage of a firmware driver such as STAR may invalidate your warranty. Please contact us with any questions.

Developed for the Sculpting Evolution Group at the MIT Media Lab

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PyLabRobot-0.1.6.tar.gz (286.7 kB view details)

Uploaded Source

Built Distribution

PyLabRobot-0.1.6-py3-none-any.whl (338.8 kB view details)

Uploaded Python 3

File details

Details for the file PyLabRobot-0.1.6.tar.gz.

File metadata

  • Download URL: PyLabRobot-0.1.6.tar.gz
  • Upload date:
  • Size: 286.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for PyLabRobot-0.1.6.tar.gz
Algorithm Hash digest
SHA256 9cf81ad2b16512d9be99cbbb445eff7787c5875337af64849731e51ec40cb9dd
MD5 3351e11095b5ea4a621174271e35e46a
BLAKE2b-256 07f7dae6de0a3d8f7736078a18d04f1df8ff326da316ea4fddb75bc849e97b81

See more details on using hashes here.

File details

Details for the file PyLabRobot-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: PyLabRobot-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 338.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.12

File hashes

Hashes for PyLabRobot-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 47ed7d92d90551df14721befbb6ee7a9e528f6a21a270f73118e8a87ab23f93a
MD5 2fd7e1f135d164d26f6170386c2ed9d6
BLAKE2b-256 a193b97ad819fe9d59a5dcc2a7116db7e3492bd7fdc167a389bf76b8662aee5a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page