Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
 _____       ______            _           _     _____
|  __ \     |  ____|          | |         | |   / ____|
| |__) |   _| |__  __  ___ __ | |     __ _| |__| (___  _   _ ___
|  ___/ | | |  __| \ \/ / '_ \| |    / _` | '_ \\___ \| | | / __|
| |   | |_| | |____ >  <| |_) | |___| (_| | |_) |___) | |_| \__ \
|_|    \__, |______/_/\_\ .__/|______\__,_|_.__/_____/ \__, |___/
        __/ |           | |                             __/ |
       |___/            |_|                            |___/

Python for Experimental Labs System

Documentation Status

About PyExpLabSys

This project contains various python code useful in experimental labs, such as equipment drivers, data logging and network data exchange components.

The project is hosted on Github and documented with Sphinx on the read the docs webpage, with varying documentation levels.

PyExpLabSys is an attempt to share the Python code produced at the SurfCat section at the Technical University of Denmark (DTU). As such, the development is driven by the needs of the department, which means that different components have different levels of maturity.


Support is provided by the authors in their spare time, so we cannot always reply immediately, but we will try to help when we can.

Support is provided via the #PyExpLabSys IRC channel on freenode (WebChat `here <>`__) and issues on the projects projects Github page.

Data logging

The project includes example code showing how to make a continuously running data-logger. The program will set up a number of threaded classes that will collect data in the background and log it to a MySQL database if the values changes more than a given amount or with regular time intervals.


The projects includes two different example of gui-development usefull in an experimental lab. One example show how to make running plot of a measured value. The other example show a functional gui for the Agilent 34410A driver.


The project includes drivers for a number of instruments. Most of the drivers are developed around a catalysis related university laboratory and therefore pertain mostly to ultra high vacuum (UHV), electrochemical and photoelectrochemical research.

Detailed driver descriptions

A few of the drivers have more detailed descriptions in the list below and for the rest, follows a list autogenerated from the module docstring.

  • Agilent 34410A: This driver is currently able to do basic operations such as changing measurement type and read values from the instrument. Currently only the USB interface is supported (through the USBTMC kernel-driver). The driver will most likely also work with the Agilent 34411A and with minor modifications possibly also the 34401A (in that case through the serial interface).
  • CPX400DP: This driver is fairly complete with support for setting and reading back values from the instrument. Currently only the USB interface is tested, but since the USB interface exposes a virtual serial port, most likely the serial interface will work with no problems.
  • Varian XGS600: This driver is not complete but fully functional for reading pressures from the gauge controller through the serial port of the device.
  • nidaq: Not a driver as such (actually all driver functionality comes through NI DAQmx and the nidaqmx-python wrapper for this driver), but serves as an example implementation of how to read out values from instruments that exposes an analog output.

Auto-generated driver descriptions

  • agilent_34410A (doc, source) Driver class for Agilent 34410A DMM
  • agilent_34972A (doc, source) Driver class for Agilent 34972A multiplexer
  • bio_logic (doc, source) This module is a Python implementation of a driver around the EC-lib DLL. It can be used to control at least the SP-150 potentiostat from Bio-Logic under 32 bit Windows.
  • bronkhorst (doc, source) Driver for Bronkhorst flow controllers, including simple test case
  • brooks_s_protocol (doc, source) Driver for Brooks s-protocol
  • cpx400dp (doc, source) Driver for CPX400DP power supply
  • crowcon (doc, source) This module contains a driver for the Vortex gas alarm central
  • dataq_binary (doc, source) DataQ Binary protocol driver
  • dataq_comm (doc, source) Driver for DATAQ dac units
  • edwards_agc (doc, source) Driver and simple test case for Edwards Active Gauge Controler
  • edwards_nxds (doc, source) Driver for Edwards, nXDS pumps
  • epimax (doc, source) Driver for the Epimax PVCi process vacuum controller
  • four_d_systems (doc, source) Drivers for the 4d systems displays
  • freescale_mma7660fc (doc, source) Driver for AIS328DQTR 3 axis accelerometer
  • fug (doc, source) Driver for "fug NTN 140 - 6,5 17965-01-01" power supply Communication via the Probus V serial interface.
  • galaxy_3500 (doc, source) Python interface for Galaxy 3500 UPS. The driver uses the telnet interface of the device.
  • honeywell_6000 (doc, source) Driver for HIH6000 class temperature and humidity sensors
  • inficon_sqm160 (doc, source) Driver for Inficon SQM160 QCM controller
  • innova (doc, source) Driver for the Innova RT 6K UPS
  • intellemetrics_il800 (doc, source) Driver for IL800 deposition controller
  • isotech_ips (doc, source) Driver for ISO-TECH IPS power supply series
  • keithley_2700 (doc, source) Simple driver for Keithley Model 2700
  • keithley_smu (doc, source) Simple driver for Keithley SMU
  • kjlc_pressure_gauge (doc, source) Module contains driver for KJLC 3000 pressure gauge
  • lascar (doc, source) Driver for the EL-USB-RT temperature and humidity USB device from Lascar
  • mks_925_pirani (doc, source) Driver for MKS 925 micro pirani
  • mks_937b (doc, source) Driver for MKS 937b gauge controller
  • mks_g_series (doc, source) Driver for MKS g-series flow controller
  • mks_pi_pc (doc, source) NO DESCRIPTION
  • NGC2D (doc, source) NO DESCRIPTION
  • omega_cn7800 (doc, source) Omega CN7800 Modbus driver. Might also work with other CN units
  • omega_cni (doc, source) This module contains drivers for equipment from Omega. Specifically it contains a driver for the ??? thermo couple read out unit.
  • omega_D6400 (doc, source) Driver for Omega D6400 daq card
  • omegabus (doc, source) Driver for OmegaBus devices
  • omron_d6fph (doc, source) Hint for implementation found at
  • pfeiffer (doc, source) This module contains drivers for the following equipment from Pfeiffer Vacuum:
  • pfeiffer_qmg420 (doc, source) NO DESCRIPTION
  • pfeiffer_qmg422 (doc, source) This module contains the driver code for the QMG422 control box for a pfeiffer mass-spectrometer. The code should in principle work for multiple type of electronics. It has so far been tested with a qme-125 box and a qme-??? box. The module is ment as a driver and has very little function in itself. The module is ment to be used as a sub-module for a large program providing the functionality to actually use the mass-spectrometer.
  • pfeiffer_turbo_pump (doc, source) Self contained module to run a Pfeiffer turbo pump including fall-back text gui and data logging.
  • polyscience_4100 (doc, source) Driver and test case for Polyscience 4100
  • rosemount_nga2000 (doc, source) NO DESCRIPTION
  • scpi (doc, source) Implementation of SCPI standard
  • specs_iqe11 (doc, source) Self contained module to run a SPECS sputter gun including fall-back text gui
  • specs_XRC1000 (doc, source) Self contained module to run a SPECS sputter gun including fall-back text gui
  • srs_sr630 (doc, source) Driver for Standford Research Systems, Model SR630
  • stahl_hv_400 (doc, source) Driver for Stahl HV 400 Ion Optics Supply
  • stmicroelectronics_ais328dq (doc, source) Driver for STMicroelectronics AIS328DQTR 3 axis accelerometer
  • stmicroelectronics_l3g4200d (doc, source) Driver for STMicroelectronics L3G4200D 3 axis gyroscope
  • tenma (doc, source) from __future__ import unicode_literals, print_function
  • vivo_technologies (doc, source) Driver for a Vivo Technologies LS-689A barcode scanner
  • wpi_al1000 (doc, source) This module implements a driver for the AL1000 syringe pump from World Precision Instruments
  • xgs600 (doc, source) Driver class for XGS600 gauge controll


Python for Experimental Lab Systems: Serial drivers, file parsers, data and live sockets



GPL-3.0, GPL-3.0 licenses found

Licenses found






No releases published


No packages published