Skip to main content
Travis-CI build status Coveralls code coverage Documentation PyPI version Python versions

InstrumentKit is an open source Python library designed to help the end-user get straight into communicating with their equipment via a PC. InstrumentKit aims to accomplish this by providing a connection- and vendor-agnostic API. Users can freely swap between a variety of connection types (ethernet, gpib, serial, usb) without impacting their code. Since the API is consistent across similar instruments, a user can, for example, upgrade from their 1980’s multimeter using GPIB to a modern Keysight 34461a using ethernet with only a single line change.

Supported means of communication are:

  • Galvant Industries GPIBUSB adapter (open_gpibusb)

  • Serial (open_serial)

  • Sockets (open_tcpip)

  • VISA (open_visa)

  • Read/write from unix files (open_file)

  • USBTMC (open_usbtmc)

  • VXI11 over Ethernet (open_vxi11)

There is planned support for HiSLIP someday, but a good Python HiSLIP library will be needed first.

If you have any problems or have code you wish to contribute back to the project please feel free to open an issue or a pull request!

Installation

The instruments package can be installed from this repository by the following means:

From Git:

$ git clone git@github.com:Galvant/InstrumentKit.git
$ cd InstrumentKit
$ python setup.py install

From Github using pip:

$ pip install -e git+https://www.github.com/Galvant/InstrumentKit.git#egg=instrumentkit

From pypi using pip:

$ pip install instrumentkit

Usage Example

To open a connection to a generic SCPI-compatible multimeter using a Galvant Industries’ GPIBUSB adapter:

>>> import instruments as ik
>>> inst = ik.generic_scpi.SCPIMultimeter.open_gpibusb("/dev/ttyUSB0", 1)

From there, various built-in properties and functions can be called. For example, the instrument’s identification information can be retrieved by calling the name property:

>>> print(inst.name)

Or, since in the demo we connected to an SCPIMultimeter, we can preform multimeter-specific tasks, such as switching functions, and taking a measurement reading:

>>> reading = inst.measure(inst.Mode.voltage_dc)
>>> print("Value: {}, units: {}".format(reading.magnitude, reading.units))

Due to the sheer number of commands most instruments support, not every single one is included in InstrumentKit. If there is a specific command you wish to send, one can use the following functions to do so:

>>> inst.sendcmd("DATA") # Send command with no response
>>> resp = inst.query("*IDN?") # Send command and retrieve response

Python Version Compatibility

At this time, Python 2.7, 3.5, 3.6, and 3.7 are supported. Should you encounter any problems with this library that occur in one version or another, please do not hesitate to let us know.

Documentation

You can find the project documentation at our ReadTheDocs pages located at http://instrumentkit.readthedocs.org/en/latest/index.html

Contributing

The InstrumentKit team always welcome additional contributions to the project. However, we ask that you please review our contributing developer guidelines which can be found in the documentation. We also suggest that you look at existing classes which are similar to your work to learn more about the structure of this project.

To run the tests against all supported version of Python, you will need to have the binary for each installed, as well as any requirements needed to install numpy under each Python version. On Debian/Ubuntu systems this means you will need to install the python-dev package for each version of Python supported (python2.7-dev, python3.7-dev, etc).

With the required system packages installed, all tests can be run with tox:

$ pip install tox
$ tox

License

All code in this repository is released under the AGPL-v3 license. Please see the license folder for more information.

Release files for instrumentkit 0.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for instrumentkit 0.6.0
File Size Uploaded
instrumentkit-0.6.0.tar.gz 193.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for instrumentkit 0.6.0
File Interpreter ABI Platform
instrumentkit-0.6.0-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 488.4 kB

Release files / instrumentkit-0.6.0.tar.gz

Download URL instrumentkit-0.6.0.tar.gz
Size 193.9 kB
Tags Source
SHA-256 checksum
How to use checksums
489969b04bc6de57753b01ff160125d5793d006b730cb787f8b50f71a02c0f0d
BLAKE2b-256 checksum
How to use checksums
1bd44b30c3655e481acb4abce0051b81f75c3e4c3b70a05b27ff52abcfe68419
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.1

Release files / instrumentkit-0.6.0-py2.py3-none-any.whl

Download URL instrumentkit-0.6.0-py2.py3-none-any.whl
Size 294.5 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
855c6e00655c6280945ef8573c3e46dc8cd63bbbe068b7f7a0ddd5b59aaffe39
BLAKE2b-256 checksum
How to use checksums
80e454e954f289413668252fd93253cff2f16520b6a79a67691a2296b4e15d60
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.7.1
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page