diff --git a/bilby/gw/likelihood/base.py b/bilby/gw/likelihood/base.py index dca470d2d4946b5ae820ecaa6cff3a019ecb3c08..6faf40fd8d070ea405ae3300735bf5900940357f 100644 --- a/bilby/gw/likelihood/base.py +++ b/bilby/gw/likelihood/base.py @@ -132,6 +132,7 @@ class GravitationalWaveTransient(Likelihood): self.calibration_marginalization = calibration_marginalization self.priors = priors self._check_set_duration_and_sampling_frequency_of_waveform_generator() + self._noise_log_likelihood_value = None self.jitter_time = jitter_time self.reference_frame = reference_frame if "geocent" not in time_reference: @@ -342,7 +343,7 @@ class GravitationalWaveTransient(Likelihood): else: self._prior = None - def noise_log_likelihood(self): + def _calculate_noise_log_likelihood(self): log_l = 0 for interferometer in self.interferometers: mask = interferometer.frequency_mask @@ -353,6 +354,12 @@ class GravitationalWaveTransient(Likelihood): self.waveform_generator.duration) / 2 return float(np.real(log_l)) + def noise_log_likelihood(self): + # only compute likelihood if called for the 1st time + if self._noise_log_likelihood_value is None: + self._noise_log_likelihood_value = self._calculate_noise_log_likelihood() + return self._noise_log_likelihood_value + def log_likelihood_ratio(self): waveform_polarizations = \ self.waveform_generator.frequency_domain_strain(self.parameters)