PyLabLib: Python package for device control and experiment automation
PyLabLib aims to provide support for device control and experiment automation. It interfaces with lots of different devices, including several different camera interfaces, translational stages, oscilloscopes, AWGs, sensors, and more. The interface is implemented in a natural way through Python objects, and is easy to understand. For example, here is a complete script which steps Thorlabs KDC101 stage by 10000 steps ten times, and each time grabs a frame with Andor iXon camera:
from pylablib.devices import Thorlabs, Andor # import the device libraries
import numpy as np # import numpy for saving
# connect to the devices
with Thorlabs.KinesisMotor("27000000") as stage, Andor.AndorSDK2Camera() as cam:
# change some camera parameters
cam.set_exposure(50E-3)
cam.set_roi(0, 128, 0, 128, hbin=2, vbin=2)
# start the stepping loop
images = []
for _ in range(10):
stage.move_by(10000) # initiate a move
stage.wait_move() # wait until it's done
img = cam.snap() # grab a single frame
images.append(img)
np.array(images).astype("<u2").tofile("frames.bin") # save frames as raw binary
The list of the devices is constantly expanding.
Additional utilities are added to simplify data acquisition, storage, and processing:
Simplified data processing utilities: convenient fitting, filtering, feature detection, FFT (mostly wrappers around NumPy and SciPy).
Universal multi-level dictionaries which are convenient for storing heterogeneous data and settings in human-readable format.
Assorted functions for dealing with file system (creating, moving and removing folders, zipping/unzipping, path normalization), network (simplified interface for client and server sockets), strings (conversion of various Python objects to and from string), and more.
Tools for GUI generation and advanced multi-threading built on top of Qt5 (still in development stage: the documentation is incomplete, and the interfaces can change in later versions)
The library only works on Python 3, and has been most extensively tested on Windows 10 with 64-bit Python. Linux is, in principle, supported, but devices which require manufacturer-provided DLLs (mostly cameras) might, potentially, have problems.
Note
This is documentation for the newer 1.x version of the library. The older 0.x documentation can be found at https://pylablib-v0.readthedocs.io/en/latest/ .
Citation
If you found this package useful in your scientific work, you can cite via Zenodo either referencing to the package in general using the DOI 10.5281/zenodo.7324875
, or to a specific version, as found on the Zenodo page.
- Installation
- Devices overview
- Basics of device communication
- Cameras
- Stages
- Basic sensors
- Basic lasers
- M2 Solstis laser
- M2 external mixing module (EMM)
- Toptica iBeam Smart laser
- Sirah Matisse laser
- NKT lasers
- Hubner Cobolt laser
- Tektronix oscilloscopes
- Keithley multimeters
- Rigol laboratory power supplies
- NI DAQmx interface
- Generic AWGs
- Andor Shamrock spectrometers
- Miscellaneous Thorlabs devices
- OZ Optics devices
- Elektro Automatik sources
- Voltcraft multimeters
- Lumel automation electronics
- Omron automation electronics
- Miscellaneous devices
- Generic Windows devices
- Generic protocols
- Data processing
- Data storage
- Various utilities
- Change log
- API reference