diff --git a/examples/open_data_examples/GW150914.py b/examples/open_data_examples/GW150914.py index bac83cf66631f5221582c932abc6701305b0fbdf..07a31db0209fdac49ecaa46ba7a2411b05d0c9bc 100644 --- a/examples/open_data_examples/GW150914.py +++ b/examples/open_data_examples/GW150914.py @@ -36,9 +36,7 @@ prior = tupak.gw.prior.BBHPriorSet(filename='GW150914.prior') # creates the frequency-domain strain. In this instance, we are using the # `lal_binary_black_hole model` source model. We also pass other parameters: # the waveform approximant and reference frequency. -waveform_generator = tupak.WaveformGenerator(duration=interferometers.duration, - sampling_frequency=interferometers.sampling_frequency, - frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole, +waveform_generator = tupak.WaveformGenerator(frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole, waveform_arguments={'waveform_approximant': 'IMRPhenomPv2', 'reference_frequency': 50}) diff --git a/tupak/gw/likelihood.py b/tupak/gw/likelihood.py index 5c87f0d5e110c527b1c8e105d26f984b37737a8e..3b197d9f17ae001a908c6bc7b53564f32d3c15c6 100644 --- a/tupak/gw/likelihood.py +++ b/tupak/gw/likelihood.py @@ -62,6 +62,7 @@ class GravitationalWaveTransient(likelihood.Likelihood): self.distance_marginalization = distance_marginalization self.phase_marginalization = phase_marginalization self.prior = prior + self._check_set_duration_and_sampling_frequency_of_waveform_generator() if self.distance_marginalization: self.check_prior_is_set() @@ -80,6 +81,27 @@ class GravitationalWaveTransient(likelihood.Likelihood): if self.time_marginalization: self.check_prior_is_set() + def _check_set_duration_and_sampling_frequency_of_waveform_generator(self): + """ Check the waveform_generator has the same duration and + sampling_frequency as the interferometers. If they are unset, then + set them, if they differ, raise an error + """ + + attributes = ['duration', 'sampling_frequency', 'start_time'] + for attr in attributes: + wfg_attr = getattr(self.waveform_generator, attr) + ifo_attr = getattr(self.interferometers, attr) + if wfg_attr is None: + logging.debug( + "The waveform_generator {} is None. Setting from the " + "provided interferometers.".format(attr)) + setattr(self.waveform_generator, attr, ifo_attr) + elif wfg_attr != ifo_attr: + logging.warning( + "The waveform_generator {} is not equal to that of the " + "provided interferometers. Overwriting the " + "waveform_generator.".format(attr)) + def check_prior_is_set(self): if self.prior is None: raise ValueError("You can't use a marginalized likelihood without specifying a prior") diff --git a/tupak/gw/waveform_generator.py b/tupak/gw/waveform_generator.py index e5618ac4ddfa3d8c1373f08adb84a6940e4ee372..fdee84a20641452a1476f98e56f56e16cfeedfab 100644 --- a/tupak/gw/waveform_generator.py +++ b/tupak/gw/waveform_generator.py @@ -6,7 +6,7 @@ import numpy as np class WaveformGenerator(object): - def __init__(self, duration, sampling_frequency, start_time=0, frequency_domain_source_model=None, + def __init__(self, duration=None, sampling_frequency=None, start_time=0, frequency_domain_source_model=None, time_domain_source_model=None, parameters=None, parameter_conversion=None, non_standard_sampling_parameter_keys=None, waveform_arguments=None): @@ -14,9 +14,9 @@ class WaveformGenerator(object): Parameters ---------- - sampling_frequency: float + sampling_frequency: float, optional The sampling frequency - duration: float + duration: float, optional Time duration of data start_time: float, optional Starting time of the time array