Published June 2, 2026 | Version v0.1
Journal article Open

Waveform systematics in GW231028: improved analysis and model-consistent results

  • 1. Dalian University of Technology

Description

GW231028 TFD Calibration Analysis

This repository contains the analysis script and input files needed to reproduce the calibration-included time-frequency-domain parameter-estimation runs for GW231028_153006 (GW231028b).

The main script is:

  • tfd_calib.py

The repository should also include the following input files in the working directory from which the script is executed:

  • GW231028b_calibration_envelope_H1.dat

  • GW231028b_calibration_envelope_L1.dat

  • Mine_offsource_acf_psd_GW231028b_10-1024Hz_block32s_acf1-0s_biased_v0.npy

Purpose

The script performs Bayesian parameter estimation for GW231028b using bilby, dynesty, detector calibration uncertainty, and several waveform approximants. It loads the event strain data and PSD estimate, applies a bandpass filter and Tukey window, attaches calibration spline models to the H1 and L1 interferometers, and runs a gravitational-wave transient likelihood.

The paper mainly uses results with lower frequency cutoffs of 10 Hz and 20 Hz.

Requirements

The script was written for a Python environment with gravitational-wave analysis packages installed, including:

  • python 3.10

  • bilby    : 2.7.1
  • numpy    : 2.2.6
  • scipy    : 1.13.1
  • astropy  : 6.1.7
  • pycbc    : 2.8.2
  • lalsuite : 7.7.0

The waveform data required by LALSuite must be available locally. In the script, LAL_DATA_PATH is set relative to the user's home directory:

~/Allthing/Data/lalsuite-waveform-data/waveform_data

If your waveform data are stored elsewhere, update the LAL_DATA_PATH assignment in Data/tfd_calib.py before running the analysis.

Input Files

The script expects the strain and PSD file:

Mine_offsource_acf_psd_GW231028b_10-1024Hz_block32s_acf1-0s_biased_v0.npy

This file should contain a Python dictionary with at least the following entries:

  • psd_average['pycbc_psd']

  • strain_data_around_event

The calibration envelope files are loaded separately for each detector:

GW231028b_calibration_envelope_H1.dat
GW231028b_calibration_envelope_L1.dat

These are used to construct detector-specific calibration priors.

Usage

Run the script from the directory containing the input .dat and .npy files.

The script requires two command-line arguments:

  • --flow: lower frequency cutoff in Hz

  • --approx: waveform approximant

Allowed waveform approximants are:

  • NRSur7dq4

  • IMRPhenomXPHM-SpinTaylor

  • IMRPhenomXO4a

The main analyses in the paper use --flow 10 and --flow 20.

Example runs:

python Data/tfd_calib.py --flow 10 --approx NRSur7dq4
python Data/tfd_calib.py --flow 20 --approx NRSur7dq4
python Data/tfd_calib.py --flow 10 --approx IMRPhenomXPHM-SpinTaylor
python Data/tfd_calib.py --flow 20 --approx IMRPhenomXPHM-SpinTaylor
python Data/tfd_calib.py --flow 10 --approx IMRPhenomXO4a
python Data/tfd_calib.py --flow 20 --approx IMRPhenomXO4a

 

Output

For each run, output is written to:

TFD_results-v1/f<flow>Hz_d8s_<approximant>_calib/

For example:

TFD_results-v1/f10Hz_d8s_NRSur7dq4_calib/
TFD_results-v1/f20Hz_d8s_IMRPhenomXO4a_calib/

The sampler is run with resume=True, so interrupted or restarted jobs will continue from existing checkpoint files when available.

The script also saves a corner plot for selected parameters:

<outdir>/<label>_part_corner.pdf

where the plotted parameters are:

  • redshifted chirp mass

  • mass ratio

  • luminosity distance

  • inclination angle theta_jn

Notes for Reproducibility

The script uses:

  • sampling frequency: 1024 Hz

  • segment duration: 8 s

  • detectors: H1 and L1

  • event reference time: GPS 1382542224.2

  • 10 calibration spline nodes per detector

  • dynesty with 1000 live points

Because the sampler is stochastic and computationally expensive, exact wall time and posterior samples may vary slightly depending on hardware, software versions, random seeds, and parallelization settings.

Citation

If you use this code or the accompanying input files, please cite the associated paper and the Zenodo record for this repository.

Files

Files (36.1 MB)

Name Size Download all
md5:c0f4c46a3e2ab8579b7b42960d746eda
36.0 kB Download
md5:df385181f152900aff56b2d0d7fceb48
36.1 kB Download
md5:8fd30e51c5ddf052b4df06cce4f3b026
36.0 MB Download
md5:3170d4d921d2d4f5609b04733dd2d846
7.0 kB Download

Additional details

Software

Programming language
Python
Development Status
Active