PXS Software needs
Because the Princeton Axion Search is a new lab at the university, we have had to develop the infrastruture that enables the scientific research. We strongly value flexibility and control, so we opt for open source or homebrew solutions whenever possible. Particularly in the context of a research lab, designing systems that work across various operating systems, integrate with numerous decades of technology, and can are maintainable has proven to be an excellent opportunity to learn about system design.
Open-Source Tools
We self-host a Gitlab instance as the primary private repository for our lab. This gives our repositories the privacy we need for research, advanced development tools, and centralized documentation with a Wiki. Setting this up for the lab gave me inspiration to set up a gitlab instance in my homelab to have another sandbox to learn and dive deeper into Gitlab’s tools. Some of these projects can be seen under my personal projects.
We also benefit from open source tools for our data storage and visualization. We use InfluxDB as a time-series database, and visualize the data using Grafana.
Automation Scripts
To minimize our experiment downtime, we need to have robust automation scripts that can ensure the system is consistently prepared for the day’s work. We are able to distribute our logic across python and shell scripts to have greater isolation in the case of failure, and seamlessly integrate our design with the system-level logic in the control computers.
We need these control scripts to work across various computers that may be using different years of Ubuntu distributions, and integrate with different types of hardware perphials including GPIB, USB, 1GBe, Direct Serial, and 10GBe SFP+. Shell scripting and our self-hosted respository has been immensly useful in creating seamless ways to compile drivers for new systems, or whenever the headers update on our Linux computers. We also have to be able to adapt our scripts to batch scripts for the control computers that are required to be Windows in order to accomodate vendor software.
Data Processing
The Princeton Axion Search has data rates that come at vastly different scales. Cryogenic housekeeping, even when analyzing several days, can be processed with python and local computing resources. In contrast, the direct digitization of our microwave output is on the order of GB/sec. The digital sythensis requires the use of Field Programmable Gate Arrays (FGPA), which we can use as a preliminary digital filter to trim our output to managable data volumes.
Broader Skills
For the Princeton Axion Search, the software development skills have grown beyond the standard expectations of tabletop-scale laboratory work. This work has required getting comfortable working across hardware, firmware, and software on Linux and Windows operating systems. I have found a real personal passion in tinkering with computing infrastucture at all scales, which I have been able to explore through my personal side projects.
Related Work
This software infrastructure supports all aspects of the Princeton Axion Search (PXS) experiment, working in conjunction with cryogenics, microwave electronics, and other experimental systems.