Skip to content
Snippets Groups Projects
Commit 76f3d359 authored by Colm Talbot's avatar Colm Talbot
Browse files

Merge branch 'sky-frame-conversion-fall-back' into 'master'

DEV: sky frame conversion fall back to ra/dec

See merge request !1186
parents 02512a63 01bd5b64
No related branches found
No related tags found
1 merge request!1186DEV: sky frame conversion fall back to ra/dec
Pipeline #482001 passed with warnings
......@@ -1112,21 +1112,55 @@ class GravitationalWaveTransient(Likelihood):
else:
raise ValueError("Unable to parse reference frame {}".format(frame))
def get_sky_frame_parameters(self):
time = self.parameters['{}_time'.format(self.time_reference)]
def get_sky_frame_parameters(self, parameters=None):
"""
Generate ra, dec, and geocenter time for :code:`parameters`
This method will attempt to convert from the reference time and sky
parameters, but if they are not present it will fall back to ra and dec.
Parameters
==========
parameters: dict, optional
The parameters to be converted.
If not specified :code:`self.parameters` will be used.
Returns
=======
dict: dictionary containing ra, dec, and geocent_time
"""
if parameters is None:
parameters = self.parameters
time = parameters.get(f'{self.time_reference}_time', None)
if time is None and "geocent_time" in parameters:
logger.warning(
f"Cannot find {self.time_reference}_time in parameters. "
"Falling back to geocent time"
)
if not self.reference_frame == "sky":
ra, dec = zenith_azimuth_to_ra_dec(
self.parameters['zenith'], self.parameters['azimuth'],
time, self.reference_frame)
try:
ra, dec = zenith_azimuth_to_ra_dec(
parameters['zenith'], parameters['azimuth'],
time, self.reference_frame)
except KeyError:
if "ra" in parameters and "dec" in parameters:
ra = parameters["ra"]
dec = parameters["dec"]
logger.warning(
"Cannot convert from zenith/azimuth to ra/dec falling "
"back to provided ra/dec"
)
else:
raise
else:
ra = self.parameters["ra"]
dec = self.parameters["dec"]
if "geocent" not in self.time_reference:
ra = parameters["ra"]
dec = parameters["dec"]
if "geocent" not in self.time_reference and f"{self.time_reference}_time" in parameters:
geocent_time = time - self.reference_ifo.time_delay_from_geocenter(
ra=ra, dec=dec, time=time
)
else:
geocent_time = self.parameters["geocent_time"]
geocent_time = parameters["geocent_time"]
return dict(ra=ra, dec=dec, geocent_time=geocent_time)
@property
......
......@@ -216,8 +216,9 @@ class RelativeBinningGravitationalWaveTransient(GravitationalWaveTransient):
)
def set_fiducial_waveforms(self, parameters):
_fiducial = parameters["fiducial"]
parameters = parameters.copy()
parameters["fiducial"] = 1
parameters.update(self.get_sky_frame_parameters(parameters=parameters))
self.fiducial_polarizations = self.waveform_generator.frequency_domain_strain(
parameters)
......@@ -236,8 +237,6 @@ class RelativeBinningGravitationalWaveTransient(GravitationalWaveTransient):
wf[interferometer.frequency_array > self.maximum_frequency] = 0
self.per_detector_fiducial_waveforms[interferometer.name] = wf
parameters["fiducial"] = _fiducial
def find_maximum_likelihood_parameters(self, parameter_bounds,
iterations=5, maximization_kwargs=None):
if maximization_kwargs is None:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment