PIEC: Physics Instrument Extension & Control
PIEC is a comprehensive, open-source Python framework designed to standardize, automate, and streamline scientific instrumentation and laboratory measurements.
Project Tenets
As a co-founder of the GitHub organization TransluSci, I built PIEC alongside my co-founder Alexander Qualls to address systemic shortcomings in automated lab control. We drove development around three key tenets:
1. Instrument Agnosticism
If you write an experiment control script that requires a certain instrument class, it will run across any manufacturer. Standardized calls like set_timebase translate seamlessly, preventing vendor lock-in and widening the collaboration space.
2. Transparency
Commercial testers (like Radiant) are treated as closed black-boxes. PIEC provides an open-source library of standardized measurements with transparent execution so you know exactly how data is gathered. Hence the name of our organization came to be.
3. Digital twin
All the rage right now, and while not implemented in its entirety, we wanted to have a way to test our drivers and measurements from home. The current implementation ensures that a new measurement can be tested virtually, using the exact instrument calls that the drivers expect and simulated waveforms based on real materials theory tells you how your experiment should react. The goal would be to eventually fully create a digital twin of the instrument parameters themselves, possibly with the noise figures given by the instrument manuals themselves to allow for a comparison between expected result and experimental result. If anyone is interested in helping with this please reach out!
The Origin Story
Act I — The Fork
I spent a long time working on my own personal fork of EKPY during my undergrad and the start of my PhD, adding new custom drivers and better syntax handling. However, as I got deeper into my PhD and I was joined by Alexander Qualls a need for a clean sheet design soon emerged.
Act II — The HZO LabVIEW Debacle
The main motivating factor occurred when we needed to replicate ferroelectric testing on Hafnium Zirconium Oxide (HZO) films from another group. They sent us their LabVIEW code, and despite our lab using identical equipment models, the code simply refused to run! This was just ridiculous and it reinforced my hatred for LabVIEW. I decided to rewrite the entire testing pipeline into Python from scratch, into something I could understand and update to fit my needs. I wanted something that I could share with other labs and guarentee that it would work exactly the way it worked on my system with the ambitious goal of making this equipment model agnostic. Such that any lab with any equivalent equipment (in capability not implementation) would produce the same results every single time.
Act III — Starting Anew
Before starting from a blank slate, I looked at existing solutions (e.g. PyMeasure). While useful in its own right, it missed the features I had come to love from EKPY and didn't resolve the essential tenets we had outlined above. I joined forces with my co-founder Alexander Qualls (we were actually both undergrads in the same lab yet never met until my PhD) and established the TransluSci organization to fix this problem with the eventual goal of getting into the hardware space. We created PIEC - Python Integrated Experimental Control, building a framework centered around strict parameter normalization and virtual instrument modeling for offline verification. Write code once, and experiment for the rest of your PhD (or so we hope).
Quick Start
PIEC is hosted on PyPI. Install the package using pip:
pip install piec