Sole engineer — Arecibo Industrial Affiliates Program
Synthetic RFI Generator
Generating the interference radio astronomers need to train against, because the real thing is unlabelled.
Stack
- Python
- NumPy
- SciPy
- pandas
- Matplotlib
Details
- 2024
- Source
Context
Radio telescopes observing in the K-band contend with a steadily worsening interference environment — satellite downlinks, terrestrial transmitters, and consumer hardware that did not exist when much of the observing methodology was established.
Problem
Mitigation techniques need to be evaluated against interference, and evaluating them requires knowing the ground truth. Real observational data contains real RFI, but it is unlabelled: you cannot measure how well a mitigation technique removed interference when you don't know exactly what was there to begin with.
Approach
Generate the interference synthetically, so the ground truth is known by construction. The generator models the characteristics of modern RFI sources relevant to the K-band and injects them into datasets with full knowledge of what was added, where, and at what power.
I built both a GUI and a CLI deliberately. Researchers exploring parameter space want to see the effect of a change immediately, which is a GUI task; generating a large labelled dataset is a scripting task. Serving only one of those would have meant the tool got used for only half of what it is good for.
Impact
Produces labelled K-band datasets for radio astronomy research, giving mitigation work a ground truth to measure against.
What I'd do differently
The RFI source models are hardcoded. Given how quickly the real interference environment changes, they should be data-driven — a researcher should be able to add a new source profile without editing the generator.