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