add_distance_grids demo

The add_distance_grids demo provides a small zero-spin RIFT workflow to configure for luminosity-distance likelihood-grid export. Use it to verify the distance-grid export path before adapting the same options to another RIFT workflow.

The runnable sources are in MonteCarloMarginalizeCode/Code/demo/rift/add_distance_grids. The demo uses the fake-data inputs in .travis/ILE-GPU-Paper/demos and its add_distance_grids.ini records the corresponding configuration.

Generate and configure the DAG

From the demo directory, first check that the CI-style inputs are present:

$ make inputs

Then generate the baseline DAG:

$ make dag

Warning

make dag removes and recreates rundir/ before generating the DAG. Copy any results you need from that directory before rerunning it.

The current make dag recipe is a baseline generator, not a completed distance-grid run: its validate-args check expects an export flag that the recipe does not put in rundir/args_ile.txt. Consequently, stock make dag can stop at that check and does not by itself create a dgrid-producing ILE_extr stage.

Before submitting, configure the pipeline’s final extrinsic ILE stage and its distance-grid export option. For create_event_parameter_pipeline_BasicIteration, this means enabling --last-iteration-extrinsic together with --last-iteration-export-marginal-distance-grid (and supplying the required pipeline configuration, including compatible conversion arguments). Inspect the resulting ILE_extr submit arguments to confirm both --export-marginal-distance-grid and --internal-use-lnL are present. Submit only that correctly configured DAG; the demo never submits automatically.

Validate an output grid

After a correctly configured ILE-extrinsic run completes, locate a producer output under the completed run results. Each ILE evaluation writes <ILE-output>_<event-index>_.dgrid. The exact ILE-output prefix and result-directory nesting are assigned by the DAG, so from the generated run directory discover completed outputs with:

$ find rundir -type f -name '*_*.dgrid' -print

Use one returned path with the loader before reconstruction: the reconstruct_marginal_lnL API accepts the parsed grid table, not a filename. For example:

from RIFT.misc.distance_grid import (
    load_distance_grid,
    reconstruct_marginal_lnL,
)

grid = load_distance_grid("<path printed by find>")
reconstructed = reconstruct_marginal_lnL(grid)

With the default argument, reconstruction uses the stored sampling-distance prior when it is present. Compare the result to the ordinary marginalized likelihood for the same intrinsic point, allowing for that run’s Monte Carlo uncertainty. For a controlled synthetic check, run validate_distance_grid.py from the demo directory; it exercises the Plan-A .dgrid table-level reconstruction path directly. The neighboring validate_distance_slices.py script covers the separate Plan-B .dslice behavior and is out of scope for this demo.

Environment note

LALSuite SWIG/Python memory-leak messages can indicate an incompatible local binding build rather than a distance-grid failure. The demo README describes a known-good environment constraint: changing the local SWIG executable does not alter already-built LAL Python bindings.

Review checklist

Before requesting human review, verify that this page is reachable from the HyperPipe landing-page toctree, retain the Sphinx error-delta result, and have an independent reviewer check the rendered guide against the demo sources.