Update the waveform.cbc module to use the new PyGrav waveform interface
PyGrav
The waveforms group of the LSC is currently developing a new and improved version of a Python waveform simulation interface that is considerably more flexible than the lalsimulation version that came before it. Ideally, we would update our waveform simulation module to interface with this new package so that our data generation workflow to produce SPIIR templates (parameter sampling, waveform simulation, (whitening), iir approximation) is a lot cleaner and easier to use.
See the following links for a reference:
- PyGrav repository: https://git.ligo.org/waveforms/new-waveforms-interface
- New Waveform Interface update from waveforms group: https://dcc.ligo.org/LIGO-G2201564
Batched/Vectorised Waveform Simulation
One of the core benefits of using this module is the fact that they advertise "batched waveform simulation" - this is the only remaining bottleneck to generating fast on-the-fly (i.e. at run-time rather than pre-computed) end-to-end (sample parameters --> cbc waveform simulation --> projected detector-frame strains (--> SNRs)) simulation of interferometer time series data in Python.
Currently, lalsimulation can only simulate waveforms in Python one at a time per process (instead of being batched or "vectorised" using multithreaded C under the hood - a.k.a NumPy). Batched waveform generation would lay the groundwork for an orders of magnitude improvement in the way that we generate millions of waveform samples for training ML models. We discuss this further in this issue.