A structured overview over Python lab automation packages.
Presentation improvements are WIP.
Name | Description | Link | License | Activity | Version | Project focus | Test framework | Communication types | Transport layers | Procedures? | GUI? | GUI library | Units? | Unit library | Instrument categories? | Remarks | Collected by |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
hardware-control | Python framework to control hardware; includes device drivers for supported hardware and QT5-based GUI widgets | repo | BSD-3-Clause-LBNL | rather a new project |
@dominecf | ||||||||||||
pymodaq | simplifies the interaction with detector and actuator hardware to go straight to the data acquisition | repo | CeCILL-B | ||||||||||||||
Experimentor | flexible package for experiment control and automation | repo | |||||||||||||||
i3py | repo | ✗ | ✔ | pint | evolved from Lantz |
||||||||||||
nidaqmx-python | repo | ||||||||||||||||
Crappy | software canvas for developing experimental tests in a versatile and accessible way | repo | |||||||||||||||
Instrumental | controlling lab hardware | repo /docs | cameras, DAQs, oscilloscopes, spectrometers, and more | VISA, serial, NiceLib/cffi, ... | ✗ | ✔ | pint | Facets similar to lantz feats, nice object-oriented autodetection |
|||||||||
bluesky | A data collection interface; or an experiment specification and orchestration engine | repo /docs | end-to-end data acquisition and analysis solution that leverages data science libraries | pytest | ✔ | ✗ | @bilderbuchi | ||||||||||
pyLabLib | device control and experiment automation | repo /docs | GPL-3.0 | ||||||||||||||
micro-manager | GUI that communicates with microscope equipment through a device abstraction layer | repo | BSD / LGPL | automated microscopes | DLL, COM | ✔ | ✔ | java | ✔ | this repo describes ongoing plans for an overhaul of the hardware interface side |
|||||||
Qcodes | Scientific measurement library for instruments, experiments, and live-plotting and saving results | repo | qbits | unittest | ✗ | ✔ | |||||||||||
openhtf | The open-source hardware testing framework. | repo | Apache 2.0 | ✔ | ✔ | Web | ✔ | @doingbla | |||||||||
Salve | micro framework designed to simplify instrument communication and control | repo | GPL | ||||||||||||||
labdrivers | Python package for controlling laboratory equipment (mostly with GPIB) | repo /docs | MIT | pytest | VISA, GPIB, TCP/IP | ✔ | ✗ | ✗ | @pbnjeff89 | ||||||||
ssmdevices | a library of python instrument driver wrappers implemented in labbench (mostly for RF and communication testing) | repo /docs | NIST (https://github.com/usnistgov/ssmdevices/blob/master/LICENSE.md) | Library of instrument and lab equipment driver wrappers, mostly dealing with RF and communication | pytest | visa, telnet, subprocesses, custom API | visa/ivi (via pyvisa), serial, usbhid, telnet | Dan Kuester <daniel.kuester@nist.gov> | |||||||||
qudi | tools for operating multi-instrument and multi-computer laboratory experiments | repo | |||||||||||||||
test framework | repo | ||||||||||||||||
Communication layer | micro framework designed to simplify instrument communication | repo | |||||||||||||||
Lantz | automation and instrumentation toolkit | repo /docs | BSD-3? | unittest | messagebased, dll | PyVisa,pyserial, PyGPIB, usbtmc | ✗ | ✔ | Qt | ✔ | pint | @bilderbuchi | |||||
pico-python | Python library for PicoTech Picoscope oscilloscopes | repo | MIT | Python wrapper for the Picoscope dll | DLL | USB | ✗ | ✗ | ✗ | ✗ | Requires the driver of the manufacturer, available for Windows, Mac, Linux |
@bmoneke | |||||
ScopeFoundry | platform for controlling custom laboratory experiments and visualizing scientific data | repo /docs | BSD 3-Clause | ✔ | @dominecf | ||||||||||||
pyLabInstruments | wrapper around instruments controlled via usb or serial interface | repo | N/A | Agilent 3320A + Tektronix TPS2024B | |||||||||||||
measureSequences | focus on Quantum Design Sequence file parsing and running, totally abstract | repo | Abstract software Sequence parsing/running scheme | ✔ | ✔ | pyQt | Does not do hardware communication |
||||||||||
PyTrinamic | Python package for TRINAMIC motor cards | repo | MIT | Python API for TINAMIC modules | proprietary protocol | USB, RS232, RS485, CAN, RTMI | ✗ | ✗ | ✗ | ✔ | @bmoneke | ||||||
labbench | base library for python laboratory automation to simplify the process of developing an experimental procedure into clear, concise, explainable, and reusable code | repo /docs | NIST (https://github.com/usnistgov/labbench/blob/master/LICENSE.md) | Supporting library for development of instrument libraries and automation scripts | pytest | visa, telnet, subprocesses, custom | visa/ivi (via pyvisa), serial, usbhid, telnet | object-oriented abstraction approach |
Dan Kuester <daniel.kuester@nist.gov> | ||||||||
Ophyd | Python/EPICS-based device abstraction (in the future also other protocols) | repo /docs | A hardware abstraction layer | pytest | ✗ | @bilderbuchi | |||||||||||
PyGMI | can take measurements with instruments connected over GPIB, RS232, ethernet or USB using Pyvisa and PySerial | repo | |||||||||||||||
Atomize | A modular open source software for working with scientific devices and combining them into spectrometer. | repo | MIT | working with scientific devices and combining them into spectrometer | @FilipDominec | ||||||||||||
pyserial | repo | low-level library | |||||||||||||||
Pyvisa | A Python package with bindings to the "Virtual Instrument Software Architecture" VISA library. | repo /docs | MIT | low-level library | ✗ | ✗ | |||||||||||
pyinstruments | central reference point - documentation only | repo | |||||||||||||||
home assistant | Open source home automation that puts local control and privacy first. Powered by a worldwide community of tinkerers and DIY enthusiasts. | repo /docs | Apache License 2.0 | non-scientific hardware | |||||||||||||
Qtlab | code to simplify computer-controlled measurements. It provides some basic GUI functionality and makes scripting quite easy. | repo | |||||||||||||||
python-ivi | repo | low-level library | |||||||||||||||
Pymeasure | Scientific measurement library for instruments, experiments, and live-plotting | repo /docs | MIT | pytest | Serial, GPIB-USB, VISA | ✔ | ✔ | Qt | ✗ | @bilderbuchi | |||||||
taurus-scada | control and data acquisition CLIs and GUIs in scientific/industrial environments | repo | LGPL | ✔ | @bruyant | ||||||||||||
Cryostat-GUI | Scientific measurement library for instruments, experiments, live-plotting, saving results | repo | MIT | pyvisa (GPIB, serial) | ✗ | ✔ | pyQt | ✗ | ✔ | currently rather specific, just recently reinvented the wheel… |
|||||||
PyMeasRF | Drivers for some RF related test equipment | repo | MIT | @dominecf | |||||||||||||
Auspex | running physics experiments | repo | |||||||||||||||
InstrumentKit | Python package for interacting with laboratory equipment over various buses. | repo /docs | AGPL-v3 | Connection- and vendor-agnostic API for instruments | pytest | messagebased,...(?) | Serial, GPIB-USB, sockets, VISA, unix files, usbtmc, vxi11 over ethernet | ✗ | ✗ | ✔ | pint | ✔ | @bilderbuchi | ||||
yaq | Yet Another AcQuisition | repo /docs | LGPL-3.0 | @dominecf | |||||||||||||
ITOM | open source software suite for operating measurement systems, laboratory automation and data evaluation | repo | |||||||||||||||
PLACE | open-source (P)ython package for (L)aboratory (A)utomation, (C)ontrol, and (E)xperimentation | repo /docs | LGPL-3.0 | ✔ | |||||||||||||
Pythics | used for simple interfaces to laboratory instrument or numerical simulations | repo | |||||||||||||||
Fixate | library for testing real stuff | repo | |||||||||||||||
PyExpLabSys | This project contains various python code useful in experimental labs, such as equipment drivers, data logging and network data exchange components. | repo /docs | GPL-3.0 License | ||||||||||||||
JISA | Standardised instrument control, data handling and simple GUI creation library for making experiment control programs. | repo | AGPL-3.0 | n/a | ✔ | intended as LabView replacement |
FilipDominec | ||||||||||
acq4 | for patch clamp ephys / optogenetics / imaging experiments in neurophysiology | repo /docs | MIT | @dominecf | |||||||||||||
pylabinstrument | N/A | repo | N/A | mostly optics |
Note: The original version of the table lived at https://ethercalc.net/1anmq248ktu6