This release contains code for the main Dingo functionality, including generating training sets, training, and inference. It is based on the paper https://arxiv.org/abs/2106.12594.
Code structure
* The code has been split into `core` and `gw` components, with the `core` component contain neural-network code, as well as generic sampling code not specific to gravitational waves (GWs). The `gw` component contains GW-specific code, including waveform and noise generation.
* There are command-line scripts (e.g., `dingo_generate_dataset`, `dingo_train`, `dingo_analyze_event`) to execute the main Dingo tasks. These typically take as arguments `.yaml` files containing the settings for the run. Example settings files are contained in the [examples](/examples) folder.
Additional components
Beyond the ideas contained in https://arxiv.org/abs/2106.12594, this code has
* Importance sampling. This uses the GW likelihood and prior to assign importance weights to Dingo samples. Since GNPE networks do not provide the log probability, it trains an additional unconditional flow to model the distribution of generated Dingo samples. Time and phase marginalisation are also implemented for the likelihood.
* Additional GNPE functionality, in particular factoring out the TaylorF2 phase to simplify the data representation. (So far, this does not seem to give a performance improvement.)
Main components still missing
* Documentation
* Tutorials
* Improved phase marginalisation for higher-mode importance sampling
* Integration with LVK software pipelines