RIFT+Asimov: Simple Workflow
Note
This is a living document. RIFT and Asimov interfaces evolve on few-month timescales. Always cross-check with the latest authoritative references linked in the References section.
This section describes the practical processes for deploying RIFT analyses using the asimov framework.
RIFT+Asimov Workflow
The deployment of a RIFT analysis in asimov follows a hierarchical “Blueprint” pattern. Instead of defining every single parameter for every event, settings are split into Common Defaults and Analysis-Specific Specifications.
The final configuration applied to rift.ini is a merge of these two layers. rift.ini is a Jinja2 template (see Label to Argument Mapping (rift.ini)) that maps Asimov YAML labels to RIFT command-line arguments.
1. The Common Defaults (Infrastructure Layer)
The Common Defaults define the environment and hardware requirements that remain constant across different physics models. These are typically stored in a global configuration file, such as production-pe-o4b.yaml.
Example Configuration Block:
kind: configuration
pipelines:
rift:
scheduler:
osg: True
accounting group: ligo.dev.o4.cbc.pe.rift
request memory: 1024
singularity image: /cvmfs/singularity.opensciencegrid.org/james-clark/research-projects-rit/rift:test
gpu architectures:
- Tesla K10.G1.8GB
- Tesla P100-PCIE-16GB
sampler:
cip:
fitting method: rf
explode jobs auto: True
ile:
n eff: 10
jobs per worker: 100
What this defines:
Cluster Access: Tells
asimovto use OSG and which accounting group to bill.Environment: Specifies the base Singularity image that contains the RIFT binaries.
Hardware Target: Ensures the jobs are scheduled on nodes with compatible GPUs.
Global Sampler Logic: Sets the default fitting method (Random Forest) and effective sample target.
Note
The cip label maps to command-line arguments for the cip sampler tool. See util_ConstructIntrinsicPosterior_GenericCoordinates.
The ile label maps to command-line arguments for integrate_likelihood_extrinsic_batchmode. See integrate_likelihood_extrinsic_batchmode.
2. The Analysis Specification (Physics Layer)
The Analysis Specification describes the specific physics, waveform model, and analysis strategy. These are defined in analysis-specific files (e.g., analysis_rift_SEOBNRv5PHM.yaml).
Example Configuration Block:
kind: analysis
name: rift-v5EHM-calmarg
pipeline: RIFT
waveform:
approximant: SEOBNRv5EHM
reference frequency: 10
likelihood:
start frequency: 10
assume:
- eccentric
- nonprecessing
scheduler:
osg: True
singularity image: osdf:///igwn/cit/staging/richard.oshaughnessy/rift_containers/rift_container_ros_seobnr_20250527.sif
sampler:
cip:
sampling method: AV
request disk: "4G"
ile:
sampling method: AV
manual extra args:
- --use-gwsignal
What this defines:
Physics Model: Switches the approximant to
SEOBNRv5EHMand sets the start frequency.Analysis Constraints: Explicitly enables eccentricity and disables precession.
Specialized Resources: Overrides the base image with a model-specific container (e.g., from osdf:///).
Sampler Refinement: Switches the sampling method to
AVand increases requested disk space to accommodate the specific model’s requirements.
The Merge Process
When a user executes the asimov apply command, the framework merges these two blueprints. The Analysis Specification takes precedence over the Common Defaults.
Pedagogical Example of the Merge:
Setting |
Common Default |
Analysis Spec |
Final Result (Applied to |
|---|---|---|---|
|
|
|
|
|
|
|
|
|
(Not Specified) |
|
|
|
|
(Not Specified) |
|
Label to Argument Mapping (rift.ini)
rift.ini uses Jinja2 templating to map Asimov YAML labels to RIFT command-line arguments. For example:
YAML
sampler: ile: n eff: 10→rift.ini[ile] n-eff=10→ passed as--n-eff 10tointegrate_likelihood_extrinsic_batchmodeYAML
sampler: cip: fitting method: rf→rift.ini[cip] fitting-method=rf→ passed as--fitting-method rftocip
The authoritative rift.ini template is located at:
MonteCarloMarginalizeCode/Code/RIFT/asimov/rift.ini in this repository.
Example of Asimov+RIFT: Full project + analysis setup
To deploy a full analysis for a specific event (e.g., S240426s), follow this complete sequence adapted from the Asimov GW150914 tutorial.
Pre-Analysis Setup (Mandatory Prerequisites)
Create project directory:
mkdir S240426s-analysis cd S240426s-analysis
Initialize Asimov project:
asimov init "S240426s RIFT Analysis"
Apply infrastructure blueprint (defaults for all analyses):
asimov apply -f https://git.ligo.org/asimov/data/-/raw/main/defaults/production-pe.yaml
Apply priors blueprint:
asimov apply -f https://git.ligo.org/asimov/data/-/raw/main/defaults/production-pe-priors.yaml
Add event metadata (using event blueprint):
asimov apply -f https://git.ligo.org/asimov/data/-/raw/main/events/gwtc-2-1/GW150914_095045.yaml
Apply physics/analysis blueprint:
asimov apply -f analyses/rift-bbh/analysis_rift_SEOBNRv5PHM.yaml -e S240426s
Asimov Workflow Execution
Build the analysis (generate configuration and DAG):
asimov manage build
Submit to cluster:
asimov manage submit
Monitor progress (or use
asimov startfor automated monitoring):asimov monitor # OR for automated monitoring: asimov start
This process ensures that infrastructure changes (like upgrading a base container) can be applied globally across all analyses by editing a single defaults file, while physics changes remain isolated to their respective analysis blueprints.
References
RIFT GitHub Repository: oshaughnessy-junior/research-projects-rit
ILE (Integrate Likelihood Extrinsic) Documentation: integrate_likelihood_extrinsic_batchmode
CIP Sampler Documentation: util_ConstructIntrinsicPosterior_GenericCoordinates
cbcflow Documentation: cbcflow
Asimov Documentation: asimov
Example YAML Configs: Refer to Asimov configuration directories for infrastructure and physics blueprints
rift.ini Template: MonteCarloMarginalizeCode/Code/RIFT/asimov/rift.ini
Authoritative YAML Examples: defaults/, analyses/, and precursors/ directories