Control and Measurement Toolkit
COMET makes it easy to control, automate, and emulate scientific instruments.
Providing generic instrument drivers, instrument emulators for testing and utilities for instrumentation applications. Inspired by QCoDeS, Lantz, Slave, FluidLab.
- Generic instrument drivers - communicate with devices over PyVISA-compatible resources.
- Station abstraction - define and manage your entire instrument setup from code or config files.
- Emulators - simulate instruments over TCP sockets or in-process mock resources for testing without hardware.
- Utilities - from parameter handling to time estimations, unit conversions, and filtering tools.
Install from GitHub using pip
pip install https://github.com/hephy-dd/comet/archive/refs/tags/v1.3.0.tar.gz
from comet.station import Station
config = {"instruments": {
"smu": {"resource_name": "GPIB::16", "model": "keithley.k2470"},
"dmm": {"resource_name": "GPIB::18", "model": "keithley.k2700"},
}}
with Station.from_config(config) as station:
print(station.smu.identify())
station.smu.voltage_level = 5.0
print(station.dmm.measure_voltage())
See Station and Drivers for more.
No instruments at hand? COMET comes with a powerful set of emulators using TCP sockets.
# emulators.yaml
emulators:
smu:
module: keithley.k2470
port: 11001
dmm:
module: keithley.k2700
port: 11002
comet-emulator
When using emulators, update the resource_name to point to the local TCP endpoints instead of GPIB addresses:
config = {"instruments": {
"smu": {"resource_name": "TCPIP0::localhost::11001::SOCKET", "model": "keithley.k2470"},
"dmm": {"resource_name": "TCPIP0::localhost::11002::SOCKET", "model": "keithley.k2700"},
}}
See Emulators for more.
📚 Full docs are available at: COMET Documentation
COMET is licensed under the GNU General Public License Version 3.