gw.likelihood.StationaryGaussianGWLikelihood

gw.likelihood.StationaryGaussianGWLikelihood(
    wfg_kwargs,
    wfg_domain,
    data_domain,
    event_data,
    t_ref=None,
    time_marginalization_kwargs=None,
    phase_marginalization_kwargs=None,
    calibration_marginalization_kwargs=None,
    phase_grid=None,
    use_base_domain=False,
    frequency_update=None,
)

Implements GW likelihood for stationary, Gaussian noise.

Parameters

Name Type Description Default
wfg_kwargs dict Waveform generator parameters (at least approximant and f_ref). required
wfg_domain dingo.gw.domains.Domain Domain used for waveform generation. This can potentially deviate from the final domain, having a wider frequency range needed for waveform generation. required
data_domain UniformFrequencyDomain | MultibandedFrequencyDomain Domain object for event data. required
event_data dict GW data. Contains strain data in event_data[“waveforms”] and asds in event_data[“asds”]. required
t_ref Optional[float] Reference time; true geocent time for GW is t_ref + theta[“geocent_time”]. None
time_marginalization_kwargs Optional[dict] Time marginalization parameters. If None, no time marginalization is used. None
calibration_marginalization_kwargs Optional[dict] Calibration marginalization parameters. If None, no calibration marginalization is used. None
phase_marginalization_kwargs Optional[dict] Phase marginalization parameters. If None, no phase marginalization is used. None
use_base_domain bool When the domain is a MultibandedFrequencyDomain, whether to use the associated base UniformFrequencyDomain for likelihood computations. False
frequency_update Optional[dict[str, float | dict[str, float | list[float]]]] Specifies settings for updating the frequency range example: {‘minimum_frequency’: {‘H1’: 30., ‘L1’: 20.}, maximum_frequency: 1024.} None

Attributes

Name Description
asd
calibration_marginalization_kwargs
log_Zn
phase_grid
phase_marginalization
pm_approx_22_mode
psi
time_marginalization
use_base_domain
whiten
whitened_strains

Methods

Name Description
d_inner_h_complex Calculate the complex inner product (d | h(theta)) between the stored data d
d_inner_h_complex_multi Calculate the complex inner product (d | h(theta)) between the stored data d
initialize_time_marginalization Initialize time marginalization. Time marginalization can be performed via FFT,
log_likelihood
log_likelihood_phase_grid

d_inner_h_complex

gw.likelihood.StationaryGaussianGWLikelihood.d_inner_h_complex(theta)

Calculate the complex inner product (d | h(theta)) between the stored data d and a simulated waveform with given parameters theta.

Parameters

Name Type Description Default
theta dict Parameters at which to evaluate h. required

Returns

Name Type Description
complex Inner product

d_inner_h_complex_multi

gw.likelihood.StationaryGaussianGWLikelihood.d_inner_h_complex_multi(
    theta,
    num_processes=1,
)

Calculate the complex inner product (d | h(theta)) between the stored data d and a simulated waveform with given parameters theta. Works with multiprocessing.

Parameters

Name Type Description Default
theta pd.DataFrame Parameters at which to evaluate h. required
num_processes int Number of parallel processes to use. 1

Returns

Name Type Description
complex Inner product

initialize_time_marginalization

gw.likelihood.StationaryGaussianGWLikelihood.initialize_time_marginalization(
    t_lower,
    t_upper,
    n_fft=1,
)

Initialize time marginalization. Time marginalization can be performed via FFT, which is super fast. However, this limits the time resolution to delta_t = 1/self.data_domain.f_max. In order to allow for a finer time resolution we compute the time marginalized likelihood n_fft via FFT on a grid of n_fft different time shifts [0, delta_t, 2delta_t, …, (n_fft-1)delta_t] and average over the time shifts. The effective time resolution is thus

delta_t_eff = delta_t / n_fft = 1 / (f_max * n_fft).

Note: Time marginalization in only implemented for uniform time priors.

Parameters

Name Type Description Default
t_lower Lower time bound of the uniform time prior. required
t_upper Upper time bound of the uniform time prior. required
n_fft Size of grid for FFT for time marginalization. 1

log_likelihood

gw.likelihood.StationaryGaussianGWLikelihood.log_likelihood(theta)

log_likelihood_phase_grid

gw.likelihood.StationaryGaussianGWLikelihood.log_likelihood_phase_grid(
    theta,
    phases=None,
)