Overview

Drivers

The drivers subpackage’s purpose is to provide relatively high-level ‘drivers’ for interfacing with lab equipment. Currently it (fully or partially) supports:

  • Tektronix TDS300 and MSO/DPO4000 series oscilloscopes
  • Tektronix AFG3000 series arbitrary function generators
  • Thorlabs DCx class USB cameras
  • NI DAQmx compatible DAQ devices
  • Attocube ECC100 controller and associated translation stages and goniometers

Drivers are planned for:

  • Thorlabs PM100x series optical power meters
  • Newport 1830-C optical power meter
  • Thorlabs APT motion control systems (e.g. T-Cube motor controllers)

It should be pretty easy to write drivers for other VISA-compatible devices via PyVISA. Driver submissions are greatly appreciated!


Plotting

The plotting module provides or aims to provide

  • Unit-aware plotting functions as a drop-in replacement for pyplot
  • Easy slider-plots

Fitting

The fitting module is a good place for curating ‘standard’ fitting tools for common cases like

  • Triple-lorentzian cavity scans
  • Ringdown traces (exponential decay)

It should also provide optional unit-awareness.


Optics

The optics module is a repository for useful optics code. Currently it focuses on using numerical ABCD matrices to manipulate and visualize paraxial gaussian beams. For example, it can be used to easily specify the elements of an optical cavity, solve for the supported modes, and plot the tangential and sagittal spot size throughout the beam path.


Tools

The tools module is used for full-fledged scripts and programs that may make use of all of the other modules above. A good example would be a script that pulls a trace from the scope, auto-fits a ringdown curve, and saves both the raw data and fit parameters to files in a well-organized directory structure.