Octopus provides ability to create control programmes for laboratory automation using Python 3.9 and Twisted, and real-time remote monitoring over http/websockets for running protocols.
It can provide a command-line interface for interacting with machines using virtual instrument interfaces, or for creating scripted protocols to be run.
It is primarily designed for flow chemistry equipment; it is designed to work by defining parameters to set for each virtual instrument interface, rather than by defining methods to be called.
Blocktopus is a web-based user interface for definind octopus experiments based on the Google Blockly block-based programming environment.
git clone https://github.com/richardingham/octopus.git
cd octopus
mkdir data
- Either, rename
octopus-plugins.txt.example
tooctopus-plugins.txt
and add any plugins you want to use. - Or, create a
plugins
directory and pull any plugins into that directory.
Build and run docker container:
docker build -t "octopus:latest" .
docker run -it -p 8001:8001 -p 9000:9000 -v /app/data:/app/data octopus:latest
Access the interface:
http://127.0.0.1:8001
pyenv local 3.9.5
pip install -r requirements.txt
pip install -r octopus-plugins.txt
yarn install
yarn run build
python octopus/blocktopus/server/server.py --plugins-dir=plugins
Use --help
for all options.
http://127.0.0.1:8001
pyenv local 3.9.5
pip install git+https://github.com/richardingham/octopus.git
$ python -m octopus.console
>>> reactor = vapourtec.R2R4(serial("/dev/ttyUSB0", baudrate = 19200))
>>> reactor.power.value
off
>>> reactor.pump1.target.set(1000)
>>> reactor.power.set("on")
>>> reactor.power.value
on
>>> reactor.pump1.pressure.value
1866
- [Read the full documentation](doc/Octopus Documentation.md)
I recommend the use of GNU screen when running long experiments on a remote computer, to avoid having a network disconnection terminate the experiment. For a good introduction to screen, visit aperiodic.net.
Instrument interfaces are provided via plugins.
A plugin is any python package that provides instruments. These should be installed using pip.
For instruments to be auto-discovered by Blocktopus there should be an entry point to blocktopus_blocks
defined for each block in the setup.py.
See octopus_wpi for an example.
- Gilson - 506C Control Module, 233XL Sample Injector, 402 Syringe Pump, 151 UV/Vis.
- Heidolph - Hei-End Hotplate.
- Kern - PCB Balance
- Knauer - K-120, S-100 HPLC pump.
- [Mettler Toledo](doc/Manufacturer%20-%20Mettler Toledo.md) - Balance, iC IR connector.
- ThalesNano - H-Cube.
- Vapourtec - R2+/R4. (Contact author for access.)
- VICI - Multi-Position Valve.
- World Precision Instruments - Aladdin Syringe Pump.
Drivers for some Phidgets devices are available. Before use, the DLL and API must be installed.
- [Phidgets](doc/Manufacturer - Phidgets.md).