Coder Social home page Coder Social logo

chonmj / pylabrobot Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pylabrobot/pylabrobot

0.0 0.0 0.0 89.88 MB

A hardware agnostic interface and developer ecosystem for lab automation

Home Page: https://docs.pylabrobot.org

License: MIT License

JavaScript 3.82% Python 94.53% CSS 0.35% Makefile 0.02% HTML 1.28%

pylabrobot's Introduction

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.

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 two Hamilton drivers are Venus, which is derived from the PyHamilton library, and STAR, which is a low-level firmware interface. The Tecan driver is EVO, also a low level, cross platform firmware interface. The Opentrons driver is based on the Opentrons HTTP API. We also provide a simulator which plays the role of a device driver but renders commands in a browser-based deck visualization.

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.get_resource("tip_rack")["A1"])
await lh.aspirate(lh.get_resource("plate")["A1"], vols=100)
await lh.dispense(lh.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.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 preprint:

@article {Wierenga2023.07.10.547733,
	author = {Rick Wierenga and Stefan Golas and Wilson Ho and Connor Coley and Kevin Esvelt},
	title = {PyLabRobot: An Open-Source, Hardware Agnostic Interface for Liquid-Handling Robots and Accessories},
	elocation-id = {2023.07.10.547733},
	year = {2023},
	doi = {10.1101/2023.07.10.547733},
	publisher = {Cold Spring Harbor Laboratory},
	URL = {https://www.biorxiv.org/content/early/2023/07/15/2023.07.10.547733},
	eprint = {https://www.biorxiv.org/content/early/2023/07/15/2023.07.10.547733.full.pdf},
	journal = {bioRxiv}
}

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

pylabrobot's People

Contributors

rickwierenga avatar stefangolas avatar dgretton avatar wilsonh1 avatar michaelbest55 avatar sculptingevolution avatar alex-spaero avatar naikymen avatar marcosfelt avatar dependabot[bot] avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.