Skip to content
Snippets Groups Projects

start to split the likelihood into bitesize chunks

Merged Colm Talbot requested to merge modularise_likelihood into master
1 file
+ 24
18
Compare changes
  • Side-by-side
  • Inline
+ 24
18
@@ -6,30 +6,36 @@ class Likelihood:
self.interferometers = interferometers
self.source = source
def get_interferometer_signal(self, waveform_polarizations, interferometer):
h = []
for mode in waveform_polarizations:
det_response = interferometer.antenna_response(
self.source.ra, self.source.dec,
self.source.geocent_time, self.source.psi, mode)
h.append(waveform_polarizations[mode] * det_response)
signal = np.sum(h, axis=0)
time_shift = interferometer.time_delay_from_geocenter(
self.source.ra, self.source.dec,
self.source.geocent_time)
signal *= np.exp(-1j * 2 * np.pi * time_shift * self.source.frequency_array)
return signal
def log_likelihood(self):
log_l = 0
waveform_polarizations = self.source.frequency_domain_strain()
for interferometer in self.interferometers:
h = []
for mode in waveform_polarizations:
det_response = interferometer.antenna_response(
self.source.ra, self.source.dec,
self.source.geocent_time, self.source.psi, mode)
h.append(waveform_polarizations[mode] * det_response)
signal_ifo = np.sum(h, axis=0)
time_shift = interferometer.time_delay_from_geocenter(
self.source.ra, self.source.dec,
self.source.geocent_time)
signal_ifo *= np.exp(-1j*2*np.pi*time_shift*self.source.frequency_array)
log_l += self.log_likelihood_interferometer(waveform_polarizations, interferometer)
return log_l.real
log_l -= 4. / self.source.time_duration * np.vdot(
interferometer.data - signal_ifo,
(interferometer.data - signal_ifo) / (
interferometer.power_spectral_density_array))
def log_likelihood_interferometer(self, waveform_polarizations, interferometer):
signal_ifo = self.get_interferometer_signal(waveform_polarizations, interferometer)
log_l = - 4. / self.source.time_duration * np.vdot(interferometer.data - signal_ifo,
(interferometer.data - signal_ifo)
/ interferometer.power_spectral_density_array)
return log_l.real
Loading