summaryrefslogtreecommitdiff
path: root/posts/hardware-control.md
blob: ea243c094ebd0a55e25f84bd0ad0ebaf04f19da7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
title: hardware-control
date: 2021-05-16
tags: instrumental python roundup

This post is a roundup of open source hardware control projects that I know of.
Each of these projects allows users to communicate with instrumental hardware.

| project | notes |
| :------ | :---- |
| [acq4](http://www.acq4.org/) | Python. Neurophysiology. Built on ZeroMQ. |
| [Auspex](https://github.com/BBN-Q/Auspex) | Python. |
| [Basil](https://github.com/SiLab-Bonn/basil) | Python and Verilog. Implements low-level serial standards. |
| [Bluesky](https://blueskyproject.io/) | Python. The future, I hope.  |
| [comedi](http://comedi.org/) | Linux kernal drivers. |
| [CRAPPY](https://github.com/LaboratoireMecaniqueLille/crappy) | Python. |
| [Cryostat-GUI](https://github.com/Cryostat-GUI/Cryostat-GUI) | Python. |
| [Daiquri](https://ui.gitlab-pages.esrf.fr/daiquiri-landing/about) | A web-based framework for data acquisition. |
| [DataLog](https://github.com/SeanDS/datalog) | Python. For PicoTech "PicoLog" hardware. |
| [datalogd](https://datalogd.readthedocs.io) | Python. Datalogging daemon with some sensor support. |
| [devicely](https://hpi-dhc.github.io/devicely/) | Python. Health sensor data. |
| [DOOCS](https://doocs-web.desy.de/index.html) | Multilingual framework from DESY. [Hardware support](https://ttfinfo.desy.de/DOOCSWiki/Wiki.jsp?page=Device%20Driver#section-Device+Driver-DeviceDriver). |
| [EPICS](https://epics.anl.gov/) | Multilingual framework. [Supported hardware](https://epics.anl.gov/modules/manufacturer.php). |
| [Exopy](http://exopy.readthedocs.io/) | Python. |
| [GDA](http://www.opengda.org/) | Generic data acquisiton. Some sort of framework. |
| [Experimentor](https://github.com/aquilesC/experimentor) | Python. Opinionated, clean. By [python for the lab](https://www.pythonforthelab.com/) team.
| [Hardware-Control](https://bitbucket.org/berkeleylab/hardware-control/src/main/) | Python. See [JOSS review](https://github.com/openjournals/joss-reviews/issues/2688). |
| [IIO](https://www.kernel.org/doc/html/v4.14/driver-api/iio/intro.html) | Linux subsystem with impressive sensor support. |
| [Instrbuilder](https://lucask07.github.io/instrbuilder/build/html/) | Python, Bluesky. See [JOSS](https://doi.org/10.21105/joss.01172) and [IEEE](https://doi.org/10.1109/TIM.2019.2914711) papers. |
| [Instrumental](https://instrumental-lib.readthedocs.io/) | Python. [Supported hardware](https://instrumental-lib.readthedocs.io/en/stable/overview.html#drivers). |
| [InstrumentKit](https://instrumentkit.readthedocs.io/en/latest/intro.html) | Python. Just a collection of [hardware enablement classes](https://instrumentkit.readthedocs.io/en/latest/apiref/index.html). |
| [ImSwitch](https://github.com/kasasxav/ImSwitch) | Python. [Supported hardware](https://imswitch.readthedocs.io/en/latest/imcontrol-setups.html). |
| [itom](https://itom.bitbucket.io/index.html) | C++ with Python scripting. [Supported hardware.](https://itom.bitbucket.io/plugins.html) |
| [Karabo](https://in.xfel.eu/readthedocs/docs/karabo/en/latest/index.html#) | Multilingual framework from XFEL. See [publication](https://docs.xfel.eu/alfresco/d/a/workspace/SpacesStore/5be9f069-3d70-4625-bde1-f1c7ca06eaed/Karabo%20Overview%202013.pdf).
| [labdrivers](https://labdrivers.readthedocs.io/en/latest/) | Python. |
| [Lantz](https://github.com/lantzproject) | Python. Project seems to be on life support. |
| [libiio](https://wiki.analog.com/resources/tools-software/linux-software/libiio) | C. Library for interfacing with IIO devices. |
| [magdynlab](https://github.com/Vrekrer/magdynlab) | Python. Brazilian Center for Physics Research.
| [micro-manager](https://micro-manager.org/) | C++. Impressive, see [whitepaper](https://github.com/nicost/uScopeControl/blob/master/Software%20for%20Microscopy%20Workshop%20WhitePaper.pdf) and [class reference](https://valelab4.ucsf.edu/~MM/doc/MMCore/html/class_c_m_m_core.html). |
| [Mjolnir](https://github.com/project-mjolnir) | Python. IoT architecture for scientific sensor networks. |
| [MX](http://mx.iit.edu/) | Full data acquisition and control system. |
| [MXCuBE](https://github.com/mxcube) | Python. Macromolecular Xtal Custom Beamline Environment. |
| [nidaqmx-python](https://github.com/ni/nidaqmx-python) | Official Python API for interacting with NI-DAQmx. |
| [nimi-python](https://github.com/ni/nimi-python) | Official Python API for NI Modular Drivers. |
| [picosdk-python](https://github.com/picotech/picosdk-python-wrappers) | Python. Official support for [PicoScope](https://www.picotech.com/products/oscilloscope) devices. |
| [PLACE](https://github.com/PALab/place) | Python. |
| [Py-Hardware-Support](https://ddietze.github.io/Py-Hardware-Support/index.html) | Python. Small project implementing a few camera drivers. |
| [pyacq](https://github.com/pyacq/pyacq) | Python. Built on ZeroMQ. |
| [pyadi-iio](https://github.com/analogdevicesinc/pyadi-iio) | Python. For IIO hardware from Analog Devices. |
| [Pychron](https://github.com/NMGRL/pychron) | Python. Focus on noble gas mass spectrometry. |
| [pycomedi](https://github.com/wking/pycomedi) | Python. Interface to [comedi](http://comedi.org/) |
| [PyDAQmx](https://pythonhosted.org/PyDAQmx/) | Python. Interface to NI DAQmx. |
| [PyFixate](https://github.com/PyFixate/Fixate) | Python. |
| [PyMeasure](https://pymeasure.readthedocs.io) | Python. [Supported hardware](https://pymeasure.readthedocs.io/en/latest/api/instruments/index.html). Large community. |
| [PyMoDAQ](https://pymodaq.cnrs.fr) | Python. Developed within French [CNRS](https://www.cnrs.fr/en/cnrs). Seems popular. |
| [Pythics](https://github.com/dursobr/Pythics) | Python. |
| [python-ivi](https://github.com/python-ivi/python-ivi) | Python. Classes defined by IVI foundation. |
| [python-microscopy](http://www.python-microscopy.org/) | Python. [Supported hardware](http://www.python-microscopy.org/doc/supported_hardware.html). |
| [python-seabreeze](https://python-seabreeze.readthedocs.io/) | Python. Interface to Ocean Optics spectrometers. |
| [python-usbtmc](https://github.com/python-ivi/python-usbtmc) | Python. Pure Python USBTMC driver. |
| [PyVISA](https://github.com/pyvisa/pyvisa) | Python. VISA. |
| [React AS](https://accelconf.web.cern.ch/cyclotrons2019/papers/tha03.pdf) | React automation studio, GUI for EPICS. |
| [REP-instrumentat...](https://github.com/ptomato/REP-instrumentation) | Python. Collection of hardware enablement classes. |
| [Qcodes](http://qcodes.github.io/Qcodes/index.html) | Python. [Supported hardware](https://qcodes.github.io/Qcodes/api/generated/qcodes.instrument_drivers.html). |
| [Qudi](https://github.com/Ulm-IQO/qudi) | Python. Spectroscopy focused. |
| [QTLab](https://github.com/heeres/qtlab) | Python. Inspiration for Qcodes. |
| [Sardana](https://sardana-controls.org/) | Supervision, Control and Data Acquisition. |
| [ScopeFoundry](http://www.scopefoundry.org/) | Python. Ducktyped extensible hardware interface. |
| [SFGacquisition](https://github.com/GeigerGroup/SFGacquisition) | Python. Small group project, abandoned. |
| [storm-control](https://github.com/ZhuangLab/storm-control) | Python. Monolithic software for STORM experiments. |
| [Subdue](https://pythonhosted.org/subdue/) | Python. [Supported hardware](https://pythonhosted.org/subdue/supported_devices/) |
| [TACO](http://www.esrf.eu/Infrastructure/Computing/TACO) | Parent of Tango |
| [Tango](https://www.tango-controls.org/) | Multilingual framework. "500+ device classes". |
| [thorpy](https://github.com/UniNE-CHYN/thorpy) | Python. Thorlabs APT serial interface. |
| [thorlabs_apt](https://github.com/qpit/thorlabs_apt) | Python. Thorlabs APT dll interface. |
| [thorlabs-apt-prot..](https://gitlab.com/yaq/thorlabs-apt-protocol) | Python. Thorlabs APT serial interface, [sans I/O](https://sans-io.readthedocs.io/index.html). |
| [TRSpectrometer](https://gitlab.com/ptapping/trspectrometer) | Python. Time-resolved spectroscopy focus. |
| [usbq](https://usbq.org/) | A Python-based framework for monitoring USB. |
| [Virgo](https://github.com/0xCoto/Virgo) | Python. Radio astronomy. Built on top of GNU Radio. |
| [Xi-CAM](https://xi-cam.readthedocs.io/) | Plugin based GUI framework with synchotron focus. |
| [yaq](https://yaq.fyi) | Multilingual framework. Built with love by me šŸ„°! |
| [Zorg](https://zorg.github.io/) | Python. Framework for robotics with hardware abstraction. |

The folks at LabPy are maintaining their own [catalog](https://github.com/LabPy/labpy-discussion/issues/23).

The folks over at python-data-acquisition also have a list of [existing-packages](https://github.com/python-data-acquisition/meta/blob/master/existing_packages.md).

[PyInstruments](https://github.com/pyinstruments/pyinstruments) is a central reference point for the various Python-based experimental data collection frameworks.

Readers may also be interested in [EPICS: A Control System Software Co-Development Success Story](https://epics.anl.gov/EpicsDocumentation/EpicsGeneral/epics_success.html).

Readers may also be interested in the [Open Process Automationā„¢ Forum](https://www.opengroup.org/forum/open-process-automation-forum).