diff --git a/test/gw_likelihood_test.py b/test/gw_likelihood_test.py index 9c50c0f73569d3b3c807346a98a9d758997b54a7..962829bbd3b445f0878e4152736e05d749fb7bcb 100644 --- a/test/gw_likelihood_test.py +++ b/test/gw_likelihood_test.py @@ -219,10 +219,58 @@ class TestGWTransient(unittest.TestCase): sampling_frequency=self.waveform_generator.sampling_frequency, duration=self.waveform_generator.duration, start_time=self.waveform_generator.start_time, + time_reference="geocent", + reference_frame="sky", lal_version=self.likelihood.lal_version, ) self.assertDictEqual(expected, self.likelihood.meta_data) + def test_reference_frame_agrees_with_default(self): + new_likelihood = bilby.gw.likelihood.GravitationalWaveTransient( + interferometers=self.interferometers, + waveform_generator=self.waveform_generator, + priors=self.prior.copy(), + reference_frame="H1L1" + ) + parameters = self.parameters.copy() + del parameters["ra"], parameters["dec"] + parameters["kappa"] = 1.0 + parameters["eta"] = 1.0 + parameters["ra"], parameters["dec"] = bilby.gw.utils.kappa_eta_to_ra_dec( + kappa=parameters["kappa"], + eta=parameters["eta"], + geocent_time=parameters["geocent_time"], + ifos=bilby.gw.detector.InterferometerList(["H1", "L1"]) + ) + new_likelihood.parameters.update(parameters) + self.likelihood.parameters.update(parameters) + self.assertEqual( + new_likelihood.log_likelihood_ratio(), + self.likelihood.log_likelihood_ratio() + ) + + def test_time_reference_agrees_with_default(self): + new_likelihood = bilby.gw.likelihood.GravitationalWaveTransient( + interferometers=self.interferometers, + waveform_generator=self.waveform_generator, + priors=self.prior.copy(), + time_reference="H1" + ) + ifo = bilby.gw.detector.get_empty_interferometer("H1") + time_delay = ifo.time_delay_from_geocenter( + ra=self.parameters["ra"], + dec=self.parameters["dec"], + time=self.parameters["geocent_time"] + ) + parameters = self.parameters.copy() + parameters["H1_time"] = parameters["geocent_time"] + time_delay + new_likelihood.parameters.update(parameters) + self.likelihood.parameters.update(parameters) + self.assertEqual( + new_likelihood.log_likelihood_ratio(), + self.likelihood.log_likelihood_ratio() + ) + class TestTimeMarginalization(unittest.TestCase): def setUp(self): diff --git a/test/gw_utils_test.py b/test/gw_utils_test.py index c44a65cd2c6328336353df24f2e767c5cbe59bfb..f41e7ca932d9c6336fc6f261e477ea4c104b330d 100644 --- a/test/gw_utils_test.py +++ b/test/gw_utils_test.py @@ -8,6 +8,7 @@ import numpy as np import gwpy import lal import lalsimulation as lalsim +from scipy.stats import ks_2samp import bilby from bilby.gw import utils as gwutils @@ -258,5 +259,35 @@ class TestGWUtils(unittest.TestCase): ) +class TestSkyFrameConversion(unittest.TestCase): + + def setUp(self) -> None: + self.priors = bilby.core.prior.PriorDict() + self.priors["ra"] = bilby.core.prior.Uniform(0, 2 * np.pi) + self.priors["dec"] = bilby.core.prior.Cosine() + self.priors["eta"] = bilby.core.prior.Uniform(0, 2 * np.pi) + self.priors["kappa"] = bilby.core.prior.Sine() + self.priors["time"] = bilby.core.prior.Uniform(-0.1, 0.1) + self.ifos = bilby.gw.detector.InterferometerList(["H1", "L1"]) + self.samples = self.priors.sample(10000) + + def tearDown(self) -> None: + del self.priors + del self.ifos + del self.samples + + def test_conversion_gives_correct_prior(self) -> None: + kappas = self.samples["kappa"] + etas = self.samples["eta"] + times = self.samples["time"] + args = zip(*[ + (kappa, eta, time, self.ifos) + for kappa, eta, time in zip(kappas, etas, times) + ]) + ras, decs = zip(*map(bilby.gw.utils.kappa_eta_to_ra_dec, *args)) + self.assertGreaterEqual(ks_2samp(self.samples["ra"], ras).pvalue, 0.01) + self.assertGreaterEqual(ks_2samp(self.samples["dec"], decs).pvalue, 0.01) + + if __name__ == "__main__": unittest.main()