This repository contains results from parameter estimation on the first gravitational-waves events detected by LIGO, as presented by Vitale et al. PRL 119, 251103 (2017) arXiv:1707.04637.
You're more than welcome to use this data for your research! We kindly ask you to cite our paper:
@ARTICLE{2017PhRvL.119y1103V,
author = {{Vitale}, S. and {Gerosa}, D. and {Haster}, C.-J. and {Chatziioannou}, K. and
{Zimmerman}, A.},
title = "{Impact of Bayesian Priors on the Characterization of Binary Black Hole Coalescences}",
journal = {Physical Review Letters},
archivePrefix = "arXiv",
eprint = {1707.04637},
primaryClass = "gr-qc",
year = 2017,
month = dec,
volume = 119,
number = 25,
eid = {251103},
pages = {251103},
doi = {10.1103/PhysRevLett.119.251103},
adsurl = {http://adsabs.harvard.edu/abs/2017PhRvL.119y1103V},
}
You can also cite this repository specifically, with its DOI:
If you need help with this, feel free to contact Salvo, Davide, Carl, Katerina or Aaron.
Each hdf5
file contains posteriors samples obtained using the 8 priors described in Vitale et al, PRL 119, 251103 (2017).
The posteriors describes analysis on data available from the LIGO Open Science Center. LIGO and Virgo have released posteriors for the O1 events here, those are equivalent to our P1 prior runs, except for the method used to estimate the power spectral density (see below).
The hdf5
file contains three groups:
priors
posteriors
PSD
(that is, power spectral density).
In turn, the priors and posteriors groups contain 8 subgroups, one for each of the priors P1...P8 of our paper.
So for example (using python):
import h5py
data=h5py.File('GW150914.hdf5','r')
data['posteriors']['P1']
gives you access to the posterior distributions obtained using the P1 prior (that is the same prior used by the LIGO and Virgo collaborations).
We release the 15 parameters on which a compact binary coalescence signal from a precessing binary in quasi-circular orbits depends. Those are (see LVC, PRL 116, 241102):
mc
(chirp mass, in solar masses)q
(mass ratio, in the range [0,1])a1
(dimensionless spin for the most massive object, in the range [0,0.89])a2
(dimensionless spin for the least massive object, in the range [0,0.89])tilt1
(angle between the spin and the orbital angular momentum for the most massive object, at 20Hz, in rads)tilt2
(angle between the spin and the orbital angular momentum for the least massive object, at 20Hz, in rads)phi12
(difference of spins azimuthal angles in the plane of the orbit, at 20Hz, in rads)phi_jl
(angle between the total and orbital angular momentum, in rads)distance
(luminosity distance, Mpc)psi
(polarization angle, at 20Hz, rads)phase
(coalescence phase, rads)time
(gps arrival time at the geocenter, secs)ra
(right ascension, rads)dec
(declination, rads)theta_jn
(angle between the total angular momentum and the line of sight, rads)
We also release some useful derived parameters:
chi_eff
(effective inspiral spin, in the range [-0.89,0.89])chi_p
(precessing spin, in the range [0,0.89], at 20Hz)m1
(mass of the most massive object, Msun)m2
(mass of the least massive object, Msun)final_spin
(spin of the final black hole, dimensionless)final_mass
(mass of the final black hole, Msun)
The final mass and spins are derived from the component mass and spins using the fits of Healy et al. (2014), valid for spins aligned with the orbital angular momentum. Given that we provide posteriors for the two component masses and all spins degrees of freedom, the user can use their favorite prescription to calculate final mass and spin.
All masses above are in the detector frame. We convert them to source-frame masses by dividing by (1+z). We provide the following supplementary parameters:
m1_source
(source-frame m1, Msun)m2_source
(source-frame m2, Msun)mc_source
(source-frame chirp mass, Msun)final_mass_source
(source-frame mass of the final black hole, Msun)redshift
The redshift is obtained from the gravitational-wave luminosity distance, assuming a Planck 2015 cosmology. The values of the cosmological parameters are stored as attributes of the posteriors
group:
for (k,v) in data['posteriors'].attrs.iteritems():
print k,v
omega_matter 0.3065
omega_lambda 0.6935
hnot 67.9
omega_k 0.0
w2 0.0
w1 0.0
w0 -1.0
Finally, we release the log likelihood and the log prior
logl
(natural logarithm of the likelihood)logp
(natural logarithm of the prior)
The units of each parameter are given as attribute of the corresponding dataset. For example, the following command produces a plot of the luminosity distance posterior of GW150914 obtained with the prior P3:
import pylab as plt
data=h5py.File('GW150914.hdf5','r')
dist=data['posteriors']['P3']['distance']
units=dist.attrs['units']
plt.hist(dist,50)
plt.xlabel('Distance [%s]'%units)
plt.ylabel('PDF')
These posteriors were obtained using the nested sampling flavor of LALInference.
The nested sampling computes the evidence of the data under the signal hypothesis, that is the likelihood marginalized over all parameters.
We report the natural log of the evidence of the signal hypothesis under all priors as an attribute of the posterior/PX group
, e.g.
lognat_signal_evidence=data['posteriors']['P1'].attrs['signal_evidence']
and the natural log of the noise hypothesis
lognat_noise_evidence=data['posteriors']['P1'].attrs['noise_evidence']
The (natural log of the) Bayes Factor signal vs noise (e.g LVC, PRL 116, 241102, Table I) can thus be calculated as
BayesSN=lognat_signal_evidence-lognat_noise_evidence
Finally, the natural log of the Bayes factor between two different priors can be obtained as e.g.
p1_signev=data['posteriors']['P1'].attrs['signal_evidence']
p5_signev=data['posteriors']['P5'].attrs['signal_evidence']
BayesP1P5=p1_signev-p5_signev # = 3.84
which shows P1 is favoured by the data
The priors
group contains samples drawn from the priors P1..P8 (each in the corresponding group).
To access e.g. the chi_eff P8 prior for GW150914
chi_eff_prior=data['priors']['P8']['chi_eff']
Finally, the PSD
group contains one group for each of the interferometers used in the analysis, H and L.
The PSD were generated with the BayesWave algorithm Littenberg and Cornish, PRD 91, 084034
There are two datasets for each interferometer,
frequency
power_spectrum
Those will be different for different events, but the same for all priors.
Thus, to plot the power spectrum used in the analysis of GW150914:
h1psd=data['PSD']['H1']
l1psd=data['PSD']['L1']
plt.loglog(h1psd['frequency'],h1psd['power_spectrum'],'r',label='H')
plt.loglog(l1psd['frequency'],l1psd['power_spectrum'],'b',label='L')