Automation of Online-Style Replication with Asimov

Usage Guide

For generalised instructions on the usage of Asimov, please see the asimov documentation.

Note

Replication of online analysis requires that you be able to authenticate on GraceDB

To begin, a project may be initialised with e.g.

$ asimov init bilby_online_project

Default Settings

The following settings replicate the online analyses as deployed by GWCelery

kind: configuration
pipelines:
  bilbyonline:
    mass settings:
      # Lower mass bound is inclusive, high is exclusive
      lowspin phenomd bns:
        low mass bound: 0
        high mass bound: 1.465
        settings file: tests/ASIMOV/bns_online_settings.json
        likelihood mode: lowspin_phenomd_fhigh_1024_roq
      phenomp bns:
        low mass bound: 1.465
        high mass bound: 2.243
        settings file: tests/ASIMOV/bbh_online_settings.json
        likelihood mode: phenompv2_bns_roq
      low mass ratio phenomp bbh:
        low mass bound: 2.243
        high mass bound: 12
        settings file: tests/ASIMOV/bbh_online_settings.json
        likelihood mode: low_q_phenompv2_roq
      defaults:
        settings file: tests/ASIMOV/bbh_online_settings.json
        likelihood mode: phenomxphm_roq
postprocessing:
  pesummary:
    accounting group: ligo.dev.o4.cbc.pe.bilby
    cosmology: Planck15
    evolve spins: forwards
    multiprocess: 4
    redshift: exact
    calculate:
    - precessing snr
    skymap samples: 2000

where the contents of the settings files are shown below. If these are contained within a file online_defaults.yaml, they may be applied to an initialised asimov project with

$ asimov apply -f online_defaults.yaml

This includes settings to allow the running of PESummary after the bilby run is complete.

BNS Settings

{
    "summarypages_arguments": {
      "gracedb": "G1234",
      "no_ligo_skymap": true
    },
    "enforce_signal_duration": false,
    "sampler_kwargs": {
      "naccept": 10,
      "nlive": 500,
      "npool": 24,
      "sample": "acceptance-walk"
    },
    "n_parallel": 2,
    "request_cpus": 24,
    "spline_calibration_nodes": 10,
    "request_memory_generation": 8.0
}

BBH Settings

{
  "summarypages_arguments": {
    "gracedb": "G1234",
    "no_ligo_skymap": true
  },
  "enforce_signal_duration": false,
  "sampler_kwargs": {
    "naccept": 60,
    "nlive": 500,
    "npool": 24,
    "sample": "acceptance-walk"
  },
  "n_parallel": 2,
  "request_cpus": 24,
  "spline_calibration_nodes": 10,
  "request_memory_generation": 36.0,
  "request_memory": 16.0
}

Once applied, an event needs at a bare minimum only its GraceDB G-name. An example of a minimal event would be

kind: event
name: G298936

and the subsequent analysis file would be given by

kind: analysis
name: online-test
pipeline: bilbyonline

Assuming these files were named G298936.yaml and online.yaml respectively, these may be applied with

$ asimov apply -f G298936.yaml
$ asimov apply -f online.yaml -e G298936

with the settings file being applied using a similar command to the application of the event file.

Ledger Options

channels

May be given in the event YAML file to determine which set of channels to pull the interferometer data for the event from. This is passed directly to the –channel_dict option of bilby_pipe_gracedb so may be one of the options specified on the :doc: relevant page <gracedb>.

mass settings

A dictionary of dictionaries that maps the relevant settings and likelihood mode for the given mass constraint. These will be evaluated such that the lower bound is inclusive and the higher bound is exclusive. If a defaults key is included, it will be the fallback. Otherwise, an error will be raised if a mass is not within any specified boundary.

name
The name given to that setting constraint.
low mass bound

Low mass edge of applicability of these settings (inclusive).

high mass bound

High mass edge of applicability of these settings (exclusive).

settings file

Path to JSON containing settings for the event.

likelihood mode

Name of the ROQ likelihood that should be used.

API