The Build Process¶

The pipelines which Asimov is designed to operate with typically use a configuration file to store the settings which will be required for the analysis, and may need access to a number of other auxilliary files.

Asimov is capable of generating or retrieving all of these files for the various pipelines it provides support for.

This document provides an overview of how an analysis is built, with pointers to the documentation for the individual steps.

Production metadata¶

Each analysis handled by asimov is handled as an individual Production, and metadata about the production and its assosciated Event are recorded in the ledger for the event.

An example of an event ledger might look something like this, which is for GW150914:

calibration:
  H1: C01_offline/calibration/H1.dat
  L1: C01_offline/calibration/L1.dat
data:
  channels:
    H1: H1:DCS-CALIB_STRAIN_C02
    L1: L1:DCS-CALIB_STRAIN_C02
  frame-types:
    H1: H1_HOFT_C02
    L1: L1_HOFT_C02
event time: 1126259462.391
gid: G190047
interferometers:
- H1
- L1
name: GW150914
priors:
  amp order: 1
  chirp-mass:
  - 21.418182160215295
  - 41.97447913941358
  component:
  - 1
  - 1000
  distance:
  - 10
  - 10000
  q:
  - 0.05
  - 1.0
productions:
- ProdF0:
    comment: Bayeswave PSD job
    pipeline: bayeswave
    status: ready
- ProdF1:
    approximant: IMRPhenomXPHM
    comment: Bilby PSD job
    needs:
    - ProdF0
    pipeline: bilby
    status: ready
- ProdF2:
    approximant: SEOBNRv4PHM
    comment: RIFT job
    needs:
    - ProdF0
    pipeline: rift
    status: ready
psds:
  2048:
    H1: C01_offline/psds/2048/H1-psd.dat
    L1: C01_offline/psds/2048/L1-psd.dat
quality:
  lower-frequency:
    H1: 20
    L1: 20
  psd-length: 4
  reference-frequency: 20
  sample-rate: 2048
  segment-length: 4
  start-frequency: 13.333333333333334
  upper-frequency: 896
  window-length: 4
repository: git@git.ligo.org:pe/O1/GW150914
working directory: /home/daniel.williams/events/O3/o3a/run_directories/GW150914

This ledger file contains all of the information required to set up three analyses; a Bayeswave analysis (to produce the PSD files for the other analyses), a bilby analysis, and a RIFT analysis.

The metadata contained in sections such as quality and priors is then used to create the configuration files for each pipeline using a template. Individual productions can overwrite the event metadata for any of the templatable values, allowing asimov, for example, to set up two analyses with different sample-rates.

asimov build¶

The command line utility asimov build is used to construct pipeline configurations by combining a configuration template for the pipeline with data from the production ledger.

This runs the Production.make_config() method, which determines the pipeline from the ledger. If a template is provided in the metadata for the production (under the template value) then this template is used to construct the configuration file. Otherwise the appropriate pipeline configuration template is used (e.g. bilby.template for the bilby configuration).

Metadata is then substituted into the configuration file, and the final file is committed to the event’s repository, under than production’s name. For example, a production called Prod1 will produce an ini file called Prod1.ini.

This step does not require pipeline-specific code, and so it uses only code from the asimov.event module. This allows configurations to be generated in environments which do not have the pipelines installed.

The next step is then used to invoke pipeline-specific code.

asimov submit¶

Once a configuration has been generated it can be used to generate an htcondor DAG file for execution on a cluster.

The process for this step is different for each analysis pipeline. An object for that pipeline is then created with the metadata from the production.

First asimov submit determines the correct pipeline for the production from the pipeline value in the ledger.

First the build_dag method is called on the pipeline object. In general each pipeline will then execute the pipeline construction utility and any additional steps required to build a DAG file (for bilby, for example, the bilby_pipe tool is used to produce the DAG.

The second step performs the submission of the DAG to the cluster. The submit_dag method is called on the pipeline object. In general a pipeline will first run its before_submit method, which can be used by the pipeline to download any additional files, for example. Then the DAG file is submitted to the htcondor submit node using the condor_submit_dag tool. The cluster id for the submitted DAG is then retrieved, and stored in the manifest under the job id value for the production.

© Copyright 2020-2024, Daniel Williams.
Created using Sphinx 7.2.6.