A modular and extensible plugin architecture to control experiment hardware using the labscript suite.
The labscript suite supports a range of commercial and open-source hardware, and is modular by design. Adding support for new devices involves writing Python functions for a well-defined set of primitives to program instructions, and transition between buffered I/O and manual states. See the documentation for more details on adding new devices.
The following devices have been implemented in the labscript suite:†
-
AlazarTech PCI Express Digitizers (e.g. ATS9462; PR #41)
-
LightCrafter DMD Digital Micro-mirror Device (PR #43)
-
MOGLabs Agile RF Synthesizers (ARF/XRF)
-
National Instruments Data Acquisition (DAQmx) devices:
- cDAQ-9184 CompactDAQ Chassis
- PCI 6251 Multifunction I/O Device
- PCI 6533/6534 High-Speed Digital Pattern I/O
- PCI-6713 Analog Output Device
- PCI-6733 Analog Output Device
- PCI-DIO-32HS High-Speed Digital I/O
- PCIe-6363 Multifunction I/O Device
- PCIe-6738 Analog Output Device
- PXI-6733 PXI Analog Output Module
- PXIe-6361 PXI Multifunction I/O Module
- PXIe-6535 PXI Digital I/O Module
- PXIe-6738 PXI Analog Output Module
- USB-6008 Multifunction I/O Device
- USB-6229 Multifunction I/O Device
- USB-6343 Multifunction I/O Device
- Quicksyn FSW-0010 Microwave Synthesizer (formerly PhaseMatrix)
Note: Since v2.5.0 (June 2019),
labscript_devices.NI_DAQmx
can be used to automatically generate a labscript device class for any NI-DAQmx device! (PR #56) -
NovaTech DDS9m 170MHz Four Channel Direct Digital Synthesized Signal Generator (see blog post)
-
OpalKelly XEM3001 FPGA Boards used by the Cicero control system (PR #50)
-
PineBlaster Open-source Digital Pattern Generator
-
PrawnBlaster Open-source pseudoclock based on the $4 Raspberry Pi Pico
-
SpinCore Programmable Pulse Generators and Direct Digital Synthesis
- PulseBlasterDDS-II-300-AWG
- PulseBlasterESR-PRO
- PulseBlasterESR-CompactPCI
- PulseBlaster e.g. SP2 Model: PB24-100-32k
- PulseBlasterUSB
-
Zaber Motion Controllers, e.g. linear translation stages (PR #85)
The following cameras are implemented by subclassing labscript_devices.Camera
, a Python-based camera server which can be controlled directly from blacs.
- FLIR cameras (e.g. FlyCapture 2) using the free PyCapture2 API (PR #71)
- Andor cameras (PR #80)
- Basler pylon (PRs #69 and #74).
- Any camera compatible with National Instruments IMAQdx (PRs #70, #72, #73, #77, #79, #83).
- This includes most cameras compliant with the GigE Vision interface standard, such as Allied Vision cameras.
† We do not endorse the use of any particular hardware.
labscript-devices is distributed as a Python package on PyPI and Anaconda Cloud, and should be installed with other components of the labscript suite. Please see the installation guide for details.