Opentrons makes robots for biologists.
Our mission is to provide the scientific community with a common platform to easily share protocols and reproduce each other's work. Our robots automate experiments that would otherwise be done by hand, allowing our users to spend more time pursuing answers to the 21st century’s most important questions, and less time pipetting.
This repository contains the source code for the Opentrons API and OT App. We'd love for you to to explore, hack, and build upon them!
The Opentrons API is a simple framework designed to make writing automated biology lab protocols easy.
We've designed it in a way we hope is accessible to anyone with basic computer and wetlab skills. As a bench scientist, you should be able to code your automated protocols in a way that reads like a lab notebook.
pipette.aspirate(tube_1).dispense(tube_2)
That is how you tell the Opentrons robot to pipette its max volume from one tube to another. Learn more here:
Easily upload a protocol, calibrate positions, and run your experiment from your computer.
We love contributors! Here is the best way to work with us:
-
Filing a bug report. We will fix these as quickly as we can, and appreciate your help uncovering bugs in our code.
-
Submit a pull request with any new features you've added to a branch of the API or App. We will reach out to talk with you about integration testing and launching it into our product!
For more information, please read the contributing guide.
If you want to build the platform and play with the latest development version we are working on before it is launched, here are the steps:
Your computer will need the following tools installed to be able to develop with the Opentrons platform:
-
macOS 10.11+, Linux, or Windows 10 with Cygwin
-
Python 3.5.3 - pyenv is optional, but recommended
# pyenv on macOS: install with shared framework option env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 3.5.3 # pyenv on Linux: install with shared library option env PYTHON_CONFIGURE_OPTS="--enable-shared" pyenv install 3.5.3
-
Node v8 LTS (Carbon) - nvm is optional, but recommended
# nvm on macOS and Linux # installs version from .nvmrc ("8") nvm install && nvm use
-
yarn - JavaScript package manager
-
GNU Make - we use Makefiles to manage our builds
Once you're set up, clone the repository, install all project dependencies, and run the tests to get started:
git clone https://github.com/Opentrons/opentrons.git
cd opentrons
make install
make test
To run the Opentrons API in development mode:
Install the dependencies and API itself.
# change into the API directory
$ cd api
# verify API is working by printing the version
python -c 'import opentrons; print(opentrons.__version__)'
# run API with virtual robot
ENABLE_VIRTUAL_SMOOTHIE=true make dev
# run API with robot's motor driver connected via USB to UART cable
make dev
You may also test and lint the API code:
make test
If you'd like to test your code on a real robot, you can push and run your current API code to that robot with:
make push
See the App README for instructions.
Enjoy!