machineagency / science-jubilee

Controlling Jubilees for Science!
https://science-jubilee.readthedocs.io/
MIT License
24 stars 10 forks source link

πŸ”¬πŸ§ͺ Science Jubilee βš‘βš™οΈ

Controlling Jubilees for Science!

ReadTheDocs

PyPI-Server

Monthly Downloads Twitter Project generated with PyScaffold

Use an open-source toolchanger to do science

This repository hosts files to build and control a Jubilee for scientific applications. The core of the software is a Python interface for Jubilee to navigate labware installed in the machine. We currently provide assembly instructions, control software, and examples for various tools including OT-2 pipettes, syringes, and cameras. While these tools might cater exactly to your planned use case, they most likely will not! We share these files as a starting point rather than an endpoint: we also provide instructions for developing new tools and associated software for controlling them. We hope you will build new tools for your application and contribute them back to the community for others to use and extend πŸ› οΈ

Check out the Documentation to get started!

Overview

Hardware

This repository is designed to be used with the Jubilee platform, outfitted with tools for laboratory automation. Jubilee an open-source & extensible multi-tool motion platformβ€”if that doesn't mean much to you, you can think of it as a 3D printer that can change its tools. You can read about Jubilee more generally at the project page.

Software

The software here is intended to control Jubilee from Python scripts or Jupyter notebooks to design and run experiments. The folders are organized as follows:

calibration/                 # notebooks to support machine & tool setup/calibration
tool_library/                # design files, assembly instructions, & configuration info for all tools & plates
src/
└── science_jubilee/
    β”œβ”€β”€ Machine.py               # jubilee machine driver
    β”œβ”€β”€ tools/
    β”‚   β”œβ”€β”€ configs/             # all tool configs are here
    β”‚   β”œβ”€β”€ Tool.py              # base tool class
    β”‚   └── ...                  # all tool modules are here
    β”œβ”€β”€ decks/
    β”‚   β”œβ”€β”€ configs/             # all deck configs are here
    β”‚   β”œβ”€β”€ Deck.py              # base deck class
    β”‚   └── ...                  # all deck modules are here
    └── labware/
        β”œβ”€β”€ labware_definitions/ # all labware definitions are here
        └── Labware.py           # base labware class

Labware and Wetware

The basic functionality supported by this software is intended to be used with a custom deck which accommodates up to 6 standard sized microplates.

Using science_jubilee

You can import and use science_jubilee modules by importing the modules you need at the top of your python file/notebook. For example, if we want to pipette using a lab automation deck, we might write:

from science_jubilee.Machine import Machine                             # import machine driver
from science_jubilee.decks.LabAutomationDeck import LabAutomationDeck   # import lab automation deck module
from science_jubilee.tools.Pipette import Pipette                       # import pipette module
...                                                                     # you can import other decks/tools here, or make your own!

We can then make use of these modules in our code:

m = Machine()                                                  # connect to your jubilee
deck = m.load_deck(deck_config_name)                           # setup your deck
tip_rack = deck.load_labware(opentrons_96_tiprack_300ul, 0)    # install an opentrons tip rack in slot 0 of the deck
pipette = Pipette(<index>, <name>, <tip_rack>, <config_file>)  # instantiate your pipette tool
m.load_tool(pipette)                                           # configure the pipette for use on the machine
...

Note

This project has been set up using PyScaffold 4.5. For details and usage information on PyScaffold see https://pyscaffold.org/.