Dingo (Deep Inference for Gravitational-wave Observations) is a Python program for analyzing gravitational wave data using neural posterior estimation. It dramatically speeds up inference of astrophysical source parameters from data measured at gravitational-wave observatories. Dingo aims to enable the routine use of the most advanced theoretical models in analyzing data, to make rapid predictions for multi-messenger counterparts, and to do so in the context of sensitive detectors with high event rates.
The basic approach of Dingo is to train a neural network to represent the Bayesian posterior conditioned on data. This enables amortized inference: when new data are observed, they can be plugged in and results obtained in a small amount of time. Tasks handled by Dingo include
- building training datasets;
- training normalizing flows to estimate the posterior density;
- performing inference on real or simulated data; and
- verifying and correcting model results using importance sampling.
To install using pip, run the following within a suitable virtual environment:
pip install dingo-gwThis installs Dingo and its runtime dependencies, as specified in
pyproject.toml.
Optional functionality can be enabled via extras, for example:
pip install "dingo-gw[wandb,pyseobnr]"Dingo is also available from the conda-forge repository.
To install using conda, first activate a conda environment, then run:
conda install -c conda-forge dingo-gwIf you would like to make changes to Dingo or contribute to its development, install it from source.
First clone the repository:
git clone git@github.com:dingo-gw/dingo.git
cd dingo-gwWe recommend using uv for development installs, as it
provides fast, reproducible dependency resolution.
Create a virtual environment and install all development dependencies:
uv syncThis installs Dingo in editable mode along with development, documentation, and typing dependencies. To also install optional dependencies, use
uv sync --extra wandb --extra pyseobnrIf you prefer pip, create and activate a virtual environment:
python3 -m venv dingo-venv
source dingo-venv/bin/activateInstall Dingo in editable mode with development tools:
pip install -e ".[dev]"Optional user-facing features can be enabled via extras, for example:
pip install -e ".[dev,wandb]"For instructions on using Dingo, please refer to the documentation.
Dingo is based on the following series of papers:
- https://arxiv.org/abs/2002.07656: 5D toy model
- https://arxiv.org/abs/2008.03312: 15D binary black hole inference
- https://arxiv.org/abs/2106.12594: Amortized inference and group-equivariant neural posterior estimation
- https://arxiv.org/abs/2111.13139: Group-equivariant neural posterior estimation
- https://arxiv.org/abs/2210.05686: Importance sampling
- https://arxiv.org/abs/2211.08801: Noise forecasting
- https://arxiv.org/abs/2407.09602: Binary neutron star inference
Dingo was used also in https://arxiv.org/abs/2404.14286 to find evidence for eccentric binaries.
If you use Dingo in your work, we ask that you please cite at least https://arxiv.org/abs/2106.12594.
Contributors to the code are listed in AUTHORS.md. We thank Charlie Hoy, Vivien Raymond, and Rory Smith for acting as LIGO-Virgo-KAGRA (LVK) review chairs. Dingo makes use of many LVK software tools, including Bilby, bilby_pipe, and LALSimulation, as well as third party tools such as PyTorch and nflows.
For questions or comments please contact Maximilian Dax or Stephen Green.