Physics-informed Radiation Operators and Time-series Optimized Networks
This is a library for radiation data inference and visualization! Feed it the runs I bundle in or readings you collect yourself, pull real physical quantities out of raw counts and spectra, and turn the whole thing into organized tables and plots you can actually read.
PROTON has some built in hardware support, though it is important to note that getting your own detectors is not necessary to use PROTON.
PROTON is about using data, not acquiring it. However, using one's own detectors for research or personal projects is a natural extension of PROTON, which is why we offer a built in support for it. PROTON was built to be easily extendable to new devices.
Direct support was built for three detectors (detailed in hardware.md) because they cover distinct kinds of measurements: a geiger counter for polled count rates, a geiger counter pulse device for the per-pulse inter-arrival timing, and a gamma spectrometer for energy spectra. However, general device classes and data_handler.py were built to be easy to modify or extend with new functionality, whether that is a different detector of the same type or a different kind of device entirely. The general classes take data from wheverever you have it, so using PROTON for new detectors is a matter of handling your readings rather than changing anything inside PROTON.
See docs/hardware.md for additional information on the hardware setup (such as detailed examples of wiring, topology, and detector setups)!
Every detector has a record_ script to write a run to a csv, and the pulse detector and the spectrometer each also have a check_ script to confirm the device is connected and running before you commit to a full run. For example, for the pulse detector:
python -m proton.Hardware.Detectors.geiger_pulses.check_pulses --count 20
python -m proton.Hardware.Detectors.geiger_pulses.record_pulses --duration 3600 --name background_room
The spectrometer follows the same check_/record_ pattern; the counts package only has the record_ script. The command details, parameters, wiring, and the Linux setup notes are also in docs/hardware.md.
09/30/2026:
I have been busy balancing work and this project, so updates will likely be more sparse for a little while. Currently, I am working on the FNO implementation. I realized that the anima AI group already has a very nice library for FNO, so I'll use it instead of reinventing the wheel. PROTON itself is still distinctly different even with the use of their FNOs.
I will be updating this throughout the year! Stay tuned!