PIEC — Python Integrated Experimental Control
PIEC is an open-source Python library that provides infrastructure for laboratory experiment design and operation through a standardized, hierarchical, object-oriented framework. Originally developed at Brown University as a fork of the ferroelectric testing-focused EKPY Python suite, PIEC is designed to be extended to any experimental domain that requires programmable instrument control.
Installation
PIEC requires Python 3.9 or higher:
pip install piec
Quickstart GUI (No Coding Required)
Run the desktop quickstart app to generate and capture waveforms with an interactive graphical interface:
python Measurements/Quickstart/quick_start_local_GUI.py
- Works out of the box in Virtual simulation mode (no hardware required).
- Connect physical instruments with dropdown selection or Autodetect.
- Configure sine, square, or ramp waveforms and view live scope captures.
- Optionally save captured traces directly to CSV.
Prefer running in your browser? Launch the interactive notebook on Binder.
Quickstart in Python
Run a complete ferroelectric hysteresis measurement using virtual instruments:
from piec.drivers.awg.k_81150a import Keysight81150a
from piec.drivers.oscilloscope.k_dsox3024a import KeysightDSOX3024a
from piec.measurement.discrete_waveform import HysteresisLoop
# Connect in virtual simulation mode
awg = Keysight81150a("VIRTUAL")
osc = KeysightDSOX3024a("VIRTUAL")
# Configure, capture, analyze, and display plots
experiment = HysteresisLoop(awg, osc, save_dir=".", show_plots=True)
experiment.run_experiment()
To run on hardware, pass your instrument's VISA address instead of "VIRTUAL", or use autodetection:
from piec.drivers.autodetect import autodetect
awg = autodetect('awg')
scope = autodetect('scope')
For complete driver documentation and advanced measurement workflows, see the User Guide.
Supported Instruments
| Category | Models |
|---|---|
| Arbitrary Waveform Generator | Keysight 81150A, Agilent 33220A, Agilent 33500, Siglent SDG2000X |
| Oscilloscope | Keysight DSOX3024A, Agilent DSOX5000, Rigol DS1000Z, Tektronix TDS2000, Tektronix TDS6604, LeCroy SDA6020 |
| Source Meter | Keithley 2400 |
| Lock-in Amplifier | Stanford Research SR830 |
| Digital Multimeter | Agilent 34410A, Keithley 2000, Keithley 193A |
| Pulser | Berkeley Nucleonics BNC 765 |
| DAQ | MCC USB-231, MCC USB-1208HS |
| DC Calibrator | EDC 522 |
| Stepper Motor | Arduino Stepper (custom serial) |
Contributing
New drivers can be added by implementing a driver subclass alongside its Virtual Instrument, following the Driver Development Guide. New experiment types require implementing a Measurement subclass without modifying existing code.
For general guidelines, see the Contributing Guide.
Support
Issues, bug reports, and feature requests: Issue Tracker
Maintainer: Geo Fratian — geo_fratian@brown.edu
Citation
Please cite this software following the CITATION.cff.
Fratian, G., Qualls, A., Phan, J., Pankaj, R., & Caretta, L. (2026).
PIEC: A Python library for Integrated Experimental Control [Software].
https://github.com/TransluSci/piec
Metadata
Release files for piec 1.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| piec-1.0.3.tar.gz | 153.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| piec-1.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 344.6 kB
Release files / piec-1.0.3.tar.gz
| Download URL | piec-1.0.3.tar.gz |
|---|---|
| Size | 153.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
050bebb3d7a6f8700efeda1eb230f8e1aad1f70acd6bc8fa6dc460125b0308b1
|
|
BLAKE2b-256 checksum How to use checksums |
c69397a40c272e84bfe64f71906121e4e1b9a63cc07f57bf564ee7878dd001b1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|
Release files / piec-1.0.3-py3-none-any.whl
| Download URL | piec-1.0.3-py3-none-any.whl |
|---|---|
| Size | 191.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1a367696724628261efae234c26f5d4d8ab39222483b2fad5f0156b5a2c1643d
|
|
BLAKE2b-256 checksum How to use checksums |
9f7052f0c675960dd33a2182d9ddcd63468c9a39af0194ea0480d31769138624
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.2
|