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