Skip to main content

Scientific measurement library for instruments, experiments, and live-plotting

Project description

PyMeasure Scientific package

PyMeasure scientific package

PyMeasure makes scientific measurements easy to set up and run. The package contains a repository of instrument classes and a system for running experiment procedures, which provides graphical interfaces for graphing live data and managing queues of experiments. Both parts of the package are independent, and when combined provide all the necessary requirements for advanced measurements with only limited coding.

PyMeasure is currently under active development, so please report any issues you experience to our Issues page.

PyMeasure runs on Python 3.6, 3.7, 3.8 and 3.9, and is tested with continous-integration on Linux, macOS, and Windows. Documentation Status

Quick start

Check out the documentation for the quick start guide, that covers the installation of Python and PyMeasure.

There are a number of examples in the examples directory that can help you get up and running.

Version 0.9 – released 2/7/21

  • PyMeasure is now officially at
  • Python 3.9 is now supported, Python 3.5 removed due to EOL
  • Move to GitHub Actions from TravisCI and Appveyor for CI (@bilderbuchi)
  • New additions to Oxford Instruments ITC 503 (@CasperSchippers)
  • New Agilent 34450A and Keysight DSOX1102G instruments (@theMashUp, @jlarochelle)
  • Improvements to NI VirtualBench (@moritzj29)
  • New Agilent B1500 instrument (@moritzj29)
  • New Keithley 6517B instrument (@wehlgrundspitze)
  • Major improvements to PyVISA compatbility (@bilderbuchi, @msmttchr, @CasperSchippers, @cjermain)
  • New Anapico APSIN12G instrument (@StePhanino)
  • Improvements to Thorelabs Pro 8000 and SR830 (@Mike-HubGit)
  • New SR860 instrument (@StevenSiegl, @bklebel)
  • Fix to escape sequences (@tirkarthi)
  • New directory input for ManagedWindow (@paulgoulain)
  • New TelnetAdapter and Attocube ANC300 Piezo controller (@dkriegner)
  • New Agilent 34450A (@theMashUp)
  • New Razorbill RP100 strain cell controller (@pheowl)
  • Fixes to precision and default value of ScientificInput and FloatParameter (@moritzj29)
  • Fixes for Keithly 2400 and 2450 controls (@pyMatJ)
  • Improvments to Inputs and open_file_externally (@msmttchr)
  • Fixes to Agilent 8722ES (@alexmcnabb)
  • Fixes to QThread cleanup (@neal-kepler, @msmttchr)
  • Fixes to Keyboard interrupt, and parameters (@CasperSchippers)

Version 0.8 – released 3/29/19

  • Python 3.8 is now supported
  • New Measurement Sequencer allows for running over a large parameter space (@CasperSchippers)
  • New image plotting feature for live image measurements (@jmittelstaedt)
  • Improvements to VISA adapter (@moritzj29)
  • Added Tektronix AFG 3000, Keithley 2750 (@StePhanino, @dennisfeng2)
  • Documentation improvements (@mivade)
  • Fix to ScientificInput for float strings (@moritzj29)
  • New validator: strict_discrete_range (@moritzj29)
  • Improvements to Recorder thread joining
  • Migrating the ReadtheDocs configuration to version 2
  • National Instruments Virtual Bench initial support (@moritzj29)

Version 0.7 – released 8/4/19

  • Dropped support for Python 3.4, adding support for Python 3.7
  • Significant improvements to CI, dependencies, and conda environment (@bilderbuchi, @cjermain)
  • Fix for PyQT issue in ResultsDialog (@CasperSchippers)
  • Fix for wire validator in Keithley 2400 (@Fattotora)
  • Addition of source_enabled control for Keithley 2400 (@dennisfeng2)
  • Time constant fix and input controls for SR830 (@dennisfeng2)
  • Added Keithley 2450 and Agilent 33521A (@hlgirard, @Endever42)
  • Proper escaping support in CSV headers (@feph)
  • Minor updates (@dvase)

Version 0.6.1 – released 4/21/19

  • Added Elektronica SM70-45D, Agilent 33220A, and Keysight N5767A instruments (@CasperSchippers, @sumatrae)
  • Fixes for Prologix adapter and Keithley 2400 (@hlgirard, @ronan-sensome)
  • Improved support for SRS SR830 (@CasperSchippers)

Version 0.6 – released 1/14/19

  • New VXI11 Adapter for ethernet instruments (@chweiser)
  • PyQt updates to 5.6.0
  • Added SRS SG380, Ametek 7270, Agilent 4156, HP 34401A, Advantest R3767CG, and Oxford ITC503 instrustruments (@sylkar, @jmittelstaedt, @vik-s, @troylf, @CasperSchippers)
  • Updates to Keithley 2000, Agilent 8257D, ESP 300, and Keithley 2400 instruments (@watersjason, @jmittelstaedt, @nup002)
  • Various minor bug fixes (@thosou)

Version 0.5.1 – released 4/14/18

  • Minor versions of PyVISA are now properly handled
  • Documentation improvements (@Laogeodritt and @ederag)
  • Instruments now have set_process capability (@bilderbuchi)
  • Plotter now uses threads (@dvspirito)
  • Display inputs and PlotItem improvements (@Laogeodritt)

Version 0.5 – released 10/18/17

  • Threads are used by default, eliminating multiprocessing issues with spawn
  • Enhanced unit tests for threading
  • Sphinx Doctests are added to the documentation (@bilderbuchi)
  • Improvements to documentation (@JuMaD)

Version 0.4.6 – released 8/12/17

  • Reverted multiprocessing start method keyword arguments to fix Unix spawn issues (@ndr37)
  • Fixes to regressions in Results writing (@feinsteinben)
  • Fixes to TCP support using cloudpickle (@feinsteinben)
  • Restructing of unit test framework

Version 0.4.5 – released 7/4/17

  • Recorder and Scribe now leverage QueueListener (@feinsteinben)
  • PrologixAdapter and SerialAdapter now handle Serial objects as adapters (@feinsteinben)
  • Optional TCP support now uses cloudpickle for serialization (@feinsteinben)
  • Significant PEP8 review and bug fixes (@feinsteinben)
  • Includes docs in the code distribution (@ghisvail)
  • Continuous integration support for Python 3.6 (@feinsteinben)

Version 0.4.4 – released 6/4/17

  • Fix pip install for non-wheel builds
  • Update to Agilent E4980 (@dvspirito)
  • Minor fixes for docs, tests, and formatting (@ghisvail, @feinsteinben)

Version 0.4.3 – released 3/30/17

  • Added Agilent E4980, AMI 430, Agilent 34410A, Thorlabs PM100, and Anritsu MS9710C instruments (@TvBMcMaster, @dvspirito, and @mhdg)
  • Updates to PyVISA support (@minhhaiphys)
  • Initial work on resource manager (@dvspirito)
  • Fixes for Prologix adapter that allow read-write delays (@TvBMcMaster)
  • Fixes for conda environment on continuous integration

Version 0.4.2 – released 8/23/16

  • New instructions for installing with Anaconda and conda-forge package (thanks @melund!)
  • Bug-fixes to the Keithley 2000, SR830, and Agilent E4408B
  • Re-introduced the Newport ESP300 motion controller
  • Major update to the Keithely 2400, 2000 and Yokogawa 7651 to achieve a common interface
  • New command-string processing hooks for Instrument property functions
  • Updated LakeShore 331 temperature controller with new features
  • Updates to the Agilent 8257D signal generator for better feature exposure

Version 0.4.1 – released 7/31/16

  • Critical fix in for importing instruments (also added to documentation)

Version 0.4 – released 7/29/16

  • Replaced Instrument add_measurement and add_control with measurement and control functions
  • Added validators to allow Instrument.control to match restricted ranges
  • Added mapping to Instrument.control to allow more flexible inputs
  • Conda is now used to set up the Python environment
  • macOS testing in continuous integration
  • Major updates to the documentation

Version 0.3 – released 4/8/16

  • Added IPython (Jupyter) notebook support with significant features
  • Updated set of example scripts and notebooks
  • New PyMeasure logo released
  • Removed support for Python <3.4
  • Changed multiprocessing to use spawn for compatibility
  • Significant work on the documentation
  • Added initial tests for non-instrument code
  • Continuous integration setup for Linux and Windows

Version 0.2 – released 12/16/15

  • Python 3 compatibility, removed support for Python 2
  • Considerable renaming for better PEP8 compliance
  • Added MIT License
  • Major restructuring of the package to break it into smaller modules
  • Major rewrite of display functionality, introducing new Qt objects for easy extensions
  • Major rewrite of procedure execution, now using a Worker process which takes advantage of multi-core CPUs
  • Addition of a number of examples
  • New methods for listening to Procedures, introducing ZMQ for TCP connectivity
  • Updates to Keithley2400 and VISAAdapter

Version 0.1.6 – released 4/19/15

  • Renamed the package to PyMeasure from Automate to be more descriptive about its purpose
  • Addition of VectorParameter to allow vectors to be input for Procedures
  • Minor fixes for the Results and Danfysik8500

Version 0.1.5 – release 10/22/14

  • New Manager class for handling Procedures in a queue fashion
  • New Browser that works in tandem with the Manager to display the queue
  • Bug fixes for Results loading

Version 0.1.4 – released 8/2/14

  • Integrated Results class into display and file writing
  • Bug fixes for Listener classes
  • Bug fixes for SR830

Version 0.1.3 – released 7/20/14

  • Replaced logging system with Python logging package
  • Added data management (Results) and bug fixes for Procedures and Parameters
  • Added pandas v0.14 to requirements for data management
  • Added data listeners, Qt4 and PyQtGraph helpers

Version 0.1.2 – released 7/18/14

  • Bug fixes to LakeShore 425
  • Added new Procedure and Parameter classes for generic experiments
  • Added version number in package

Version 0.1.1 – released 7/16/14

  • Bug fixes to PrologixAdapter, VISAAdapter, Agilent 8722ES, Agilent 8257D, Stanford SR830, Danfysik8500
  • Added Tektronix TDS 2000 with basic functionality
  • Fixed Danfysik communication to handle errors properly

Version 0.1.0 – released 7/15/14

  • Initial release

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for PyMeasure, version 0.9.0
Filename, size File type Python version Upload date Hashes
Filename, size PyMeasure-0.9.0-py3-none-any.whl (301.7 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size PyMeasure-0.9.0.tar.gz (653.6 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page