Getting Started
HyperPipe is an adaptive parameter estimation pipeline designed for generic, simulation-based inference.
Basics: The Iterative Loop
The pipeline performs inference by iteratively improving the posterior distribution through a three-step cycle:
Evaluation: The marginalized likelihood is evaluated on a grid of parameters using a user-provided executable.
- Posterior Computation: The posterior is computed via Monte Carlo integration, which generates two new grids for the next iteration:
A posterior grid based directly on the MC integral.
A “puffed” grid that expands the search area to ensure the posterior isn’t skewed by the initial guess.
Iteration: Steps 1 and 2 are repeated for the desired number of iterations.
To run HyperPipe, you need: - An executable that calculates the likelihood for a set of parameters. - An initial parameter grid (standard RIFT format). - Exploration ranges (min/max) for each parameter.
Demo & Prototypes
Before building your own pipeline, explore the demo environment. This contains example executables and a Makefile that serves as the primary template for creating run directories.
Demo Path: MonteCarloMarginalizeCode/Code/demo/hyperpipe
We strongly recommend using the demo Makefile as a starting point for your own executable paths and parameter settings.
Running Your First Pipeline
The standard workflow involves creating a run directory and submitting a Condor DAG.
Create the Run Directory: Use the
create_eos_posterior_pipeline.pyscript. This tool prepares the SUB files (with script references and arguments) and constructs the DAG.Example command: .. code-block:: console
- $ create_eos_posterior_pipeline
–marg-event-exe-list-file pwd/args_marg_eos_exe.txt –marg-event-args-list-file pwd/args_marg_eos.txt –eos-post-args pwd/args_eos_post.txt –eos-post-exe which util_ConstructEOSPosterior.py –puff-exe which util_HyperparameterPuffball.py –puff-args pwd/args_puff.txt –input-grid initial_grid.dat –n-samples-per-job 1000 –use-full-submit-paths –working-dir pwd –event-file pwd/my_event_A.txt –n-iterations 5 –eos-post-explode-jobs 5
Submit the Workflow: HyperPipe requires an HTCondor environment. Submit the generated DAG:
$ condor_submit_dag marginalize_hyperparameters.dag
Monitor Progress: The workflow consists of worker MARG jobs (physics evaluation) and fitting/posterior jobs (distribution estimation). Monitor the queue with:
$ watch condor_q
Pipeline Stages
Whether launched via the modern YAML config or the legacy args-file interface, the DAG executes the following stages:
- MARG / MARG_PUFF
Invokes the marg driver(s) over batches of the hyperparameter grid.
- CON / CON_PROD
Consolidates per-chunk output files.
CON_PRODjoins multiple events into a single combined result (default: multiply likelihoods).- UNIFY
Merges results from all previous iterations into the growing cumulative grid stored in
all.marg_net.- EOS_POST
Runs
util_ConstructEOSPosterior.pyto perform MC integration oflikelihood × priorand draw a new posterior sample.- PUFF
Runs
util_HyperparameterPuffball.py(or a tracer updater) to widen coverage beyond the posterior modes.- TEST
Runs
convergence_test_sampleson the last two iterations’ grids. If the convergence metric falls below threshold, the DAG halts.