Questions about Input Domain Error and Usage of Eccentric Waveform Approximants

Hello, I am an undergraduate student working on a project about GW, and I met some problems when I was trying to replicate LIGO’s results for GW190521 with parallel bilby and SEOBNR waveforms.

In my analysis, I applied the priors from GWTC2.1 via Zenodo, which I had successfully used with IMRPhenomXPHM and NRSur7dq4 directly to SEOBNRv4PHM. I set the reference frequency and minimum frequency of the waveform to 11 Hz, with a maximum frequency of 512 Hz and a sampling rate of 1024 Hz. However, I encountered an XLAL Error, specifically an Input Domain Error.
For example:
XLAL Error - XLALSimIMRSpinPrecEOBWaveformAll: Intitial frequency is too high, the limit is 5.9523220274
XLAL Error - XLALSimIMRSpinPrecEOBWaveform (/home/conda/feedstock_root/build_artifacts/lalsimulation-split_1655125056255/work/lib/LALSimIMRSpinPrecEOBv4P.c:949): Input domain error
XLAL Error - XLALSimInspiralChooseTDWaveform (/home/conda/feedstock_root/build_artifacts/lalsimulation-split_1655125056255/work/lib/LALSimInspiral.c:1232): Internal function call failed: Input domain error
XLAL Error - XLALSimInspiralTD (/home/conda/feedstock_root/build_artifacts/lalsimulation-split_1655125056255/work/lib/LALSimInspiral.c:2770): Internal function call failed: Input domain error
XLAL Error - XLALSimInspiralFD (/home/conda/feedstock_root/build_artifacts/lalsimulation-split_1655125056255/work/lib/LALSimInspiral.c:3021): Internal function call failed: Input domain error
14:06 bilby WARNING : Evaluating the waveform failed with error: Internal function call failed: Input domain error
The parameters were {‘mass_1’: 3.8091012145306735e+32, ‘mass_2’: 2.5359647991946067e+32, ‘spin_1’: (-0.06276776212672577, -0.06257253424489016, 0.02720899652995396), ‘spin_2’: (-0.24425532398084737, -0.006407378269556524, 0.14880372503320358), ‘luminosity_distance’: 2.0084181278763156e+26, ‘iota’: 0.8024391791545143, ‘phase’: 0.0, ‘eccentricity’: 0.0, ‘start_frequency’: 11}
Likelihood will be set to -inf.

This error perplexed me because the same settings worked well for IMRPhenomXPHM and NRSur7dq4 (though initially, some errors about fmin occurred), yielding consistent results. However, they seem incompatible with SEOBNRv4PHM. I am uncertain whether this is due to inherent differences in the parameter spaces of these waveform models or whether SEOBNR waveforms require specifically set priors.

Furthermore, I noticed that when using NRSur7dq4 with Parallel Bilby, some errors existed initially, as mentioned before. However, as the process continued, no further errors occurred, and the result agreed well with that of IMRPhenomXPHM and GWTC-2. In contrast, with Bilby, my process was stopped directly upon encountering an error, preventing me from completing the computation. Thus, I wonder whether encountering errors during sampling is a common occurrence in PE that can be ignored.

Moreover, I am unable to use SEOBNRv5PHM, SEOBNRv5EHM, and SEOBNRv5HM with both Bilby and Parallel Bilby. I couldn’t find these models after reinstalling LALSuite following the installation of PySEOBNR. I followed the installation requirements for PySEOBNR and reinstalled LALSuite via Conda in an environment where Bilby and Parallel Bilby had already been installed. I suppose I may have missed some important documentation about the installation or simply installed it incorrectly, or do I need to recompile the codes of bilby and pbilby?

Thanks in advance for your help.

PS: The following is my prior on GW190521

a_1 = Uniform(minimum=0, maximum=0.99, name=‘a_1’, latex_label=‘$a_1$’, unit=None, boundary=None)
a_2 = Uniform(minimum=0, maximum=0.99, name=‘a_2’, latex_label=‘$a_2$’, unit=None, boundary=None)
chirp_mass = bilby.gw.prior.UniformInComponentsChirpMass(minimum=50, maximum=150, name=‘chirp_mass’, latex_label=‘$\mathcal{M}$’, unit=‘$M_{\odot}$’, boundary=None)
geocent_time = Uniform(minimum=1242442967.359473, maximum=1242442967.5594728, name=‘geocent_time’, latex_label=‘$t_c$’, unit=‘$s$’, boundary=None)
luminosity_distance = PowerLaw(alpha=2, minimum=100, maximum=10000, name=‘luminosity_distance’, latex_label=‘$d_L$’, unit=‘Mpc’, boundary=None)
total_mass = Constraint(minimum=60, maximum=400, name=‘total_mass’, latex_label=‘$M$’, unit=None)
mass_1 = Constraint(minimum=30, maximum=200, name=‘mass_1’, latex_label=‘$m_1$’, unit=None)
mass_2 = Constraint(minimum=30, maximum=200, name=‘mass_2’, latex_label=‘$m_2$’, unit=None)
mass_ratio = bilby.gw.prior.UniformInComponentsMassRatio(minimum=0.167, maximum=1.0, name=‘mass_ratio’, latex_label=‘$q$’, unit=None, boundary=None)
phase = Uniform(minimum=0, maximum=6.283185307179586, name=‘phase’, latex_label=‘$\phi$’, unit=None, boundary=‘periodic’)
phi_12 = Uniform(minimum=0, maximum=6.283185307179586, name=‘phi_12’, latex_label=‘$\Delta\phi$’, unit=None, boundary=‘periodic’)
phi_jl = Uniform(minimum=0, maximum=6.283185307179586, name=‘phi_jl’, latex_label=‘$\phi_{JL}$’, unit=None, boundary=‘periodic’)
psi = Uniform(minimum=0, maximum=3.141592653589793, name=‘psi’, latex_label=‘$\psi$’, unit=None, boundary=‘periodic’)
theta_jn = Sine(minimum=0, maximum=3.141592653589793, name=‘theta_jn’, latex_label=‘$\theta_{JN}$’, unit=None, boundary=None)
tilt_1 = Sine(minimum=0, maximum=3.141592653589793, name=‘tilt_1’, latex_label=‘$\theta_1$’, unit=None, boundary=None)
tilt_2 = Sine(minimum=0, maximum=3.141592653589793, name=‘tilt_2’, latex_label=‘$\theta_2$’, unit=None, boundary=None)
time_jitter = Uniform(minimum=-0.001953125, maximum=0.001953125, name=None, latex_label=None, unit=None, boundary=‘periodic’)
azimuth = Uniform(minimum=0, maximum=6.283185307179586, name=None, latex_label=‘$\epsilon$’, unit=None, boundary=‘periodic’)
zenith = Sine(minimum=0, maximum=3.141592653589793, name=None, latex_label=‘$\kappa$’, unit=None, boundary=None)

Hi @CalTNG I am taking a guess here, but the mass values you show seem really high. I think mass values are typically in solar masses, and this one seems to be 1032.

The aspect that @jonah mentioned is likely not the issue and is intended behaviour: the bilby priors expect masses to be input in units of Msun, but it internally converts the mass into kg while calling lalsimulation. The error itself comes from lalsimulation, which is why it prints the number in units of kg.

IMO the key error here is the following:

XLAL Error - XLALSimIMRSpinPrecEOBWaveformAll: Intitial frequency is too high, the limit is 5.9523220274

This means that for the given combination of masses (also printed in the error statement but in units of kg), EOB waveforms need the initial frequency to be equal to or lower than 5.9523220274. There are a couple of reasons for this behaviour, which are documented here.

I would imagine that the easiest way to fix this is by constraining the mass of the event to be in a narrower range.

Concerning the errors with NRSur7dq4 popping up in bilby but not in parallel_bilby, I suspect the issue is that you do not have catch_waveform_errors=True in your waveform_arguments. Could you add this and re-check? Note that using this option will also artifically shrink your prior, since the likelihood at all points not in the validity regime of the approximant will be set to zero.

About using the new EOB v5 models, you need to use the gwsignal_binary_black_hole source model if you aren’t already doing so. Apart from that, it is difficult to say why this isn’t working without looking at an example script.

2 Likes

Thanks for response! I have tried to set catch_waveform_errors True and it works. It seems that the clusters I use simply detect for errors and kill the programs once they pop out, and that the default setting of it in pbilby is True while in bilby it is False, which take account for the difference.
However, I am still not sure that these sampling errors are common situations for PE, which do not affects the result of PE. At least it will slow down the calculation, right? Besides, given that the prior I found in Zenodo for both IMRPhenom and NR Surrogate are the same, why didn’t LIGO use a restricted prior that won’t have any issue on these three waveforms? Is it because there are certain difference between EOB and IMRPhenom waveforms that make it difficult to do so, for which we have to set a specific prior for EOB waveforms.

Thanks for reply! As @aditya says, I believe that they are in units of kg, and the mass1 should be 190 Msun while mass2 should be 126 Msun. They are too big to be the right values of the component masses, but still these bad samplings really disturb me and slow down the calculation =(