2 import pyseobnr.generate_waveform
as pyseob_wf
4 print(
"The pyseobnr package has failed to load, you will not be able to employ SEOBNRv5 approximants.")
6from numpy
import arange
7from astropy.units
import Mpc
8from gwpy.timeseries
import TimeSeries
9from gwpy.frequencyseries
import FrequencySeries
10from lal
import LIGOTimeGPS
12from ..core.waveform
import CompactBinaryCoalescenceGenerator
18 Implements a wrapper for SEOBNRv5EHM
in the pyseob package
23 No parameters required
for initialization.
40 "type":
"aligned_spin",
43 "polarizations":
True,
44 "implemented_domain":
"time",
45 "approximant":
"SEOBNRv5EHM",
47 "conditioning_routines":
"",
51 def _strip_units(self, waveform_dict):
53 for key
in waveform_dict.keys():
54 new_dc[key] = waveform_dict[key].value
57 def _generate_waveform_class(self, **parameters):
68 "warning_secular_bwd_int",
73 for key
in optional_params:
74 val = parameters.pop(key,
None)
76 parameters_extra[key] = val
80 parameters_extra[
"gwsignal_environment"] =
True
95 def _generate_modes(self, **parameters):
98 times, hlm = gen_wf.generate_td_modes()
99 epoch = LIGOTimeGPS(times[0])
103 for k, v
in hlm.items():
104 hlm_lal = TimeSeries(v, times=times, name=k)
105 hlm_dict[k] = hlm_lal
109 def _generate_td_polarizations(self, **parameters):
113 hp, hc = gen_wf.generate_td_polarizations_conditioned_1()
115 hp, hc = gen_wf.generate_td_polarizations()
116 epoch = hp.epoch.gpsSeconds + hp.epoch.gpsNanoSeconds / 1e9
117 times = hp.deltaT * arange(hp.data.length) + epoch
119 TimeSeries(hp.data.data, times=times, name=
"hp"),
120 TimeSeries(hc.data.data, times=times, name=
"hc"),
123 def _generate_fd_polarizations_from_td(self, **parameters):
126 hptilde, hctilde = gen_wf.generate_fd_polarizations()
127 frequencies = hptilde.deltaF * arange(hptilde.data.length)
128 epoch = hptilde.epoch.gpsSeconds + hptilde.epoch.gpsNanoSeconds / 1e9
131 hptilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hp"
134 hctilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hc"
138 def _generate_polarizations(self, **parameters):
145 raise ValueError(
"Generation domain must be 'time' or 'freq'.")
160 Implements a wrapper for SEOBNRv5
in the pyseob package
165 No parameters required
for initialization.
182 "type":
"aligned_spin",
185 "polarizations":
True,
186 "implemented_domain":
"time",
187 "approximant":
"SEOBNRv5HM",
188 "implementation":
"",
189 "conditioning_routines":
"",
193 def _strip_units(self, waveform_dict):
195 for key
in waveform_dict.keys():
196 new_dc[key] = waveform_dict[key].value
199 def _generate_waveform_class(self, **parameters):
201 parameters_extra = {}
207 "postadiabatic_type",
223 for key
in optional_params:
224 val = parameters.pop(key,
None)
226 parameters_extra[key] = val
230 parameters_extra[
"gwsignal_environment"] =
True
243 def _generate_modes(self, **parameters):
246 times, hlm = gen_wf.generate_td_modes()
247 epoch = LIGOTimeGPS(times[0])
251 for k, v
in hlm.items():
252 hlm_lal = TimeSeries(v, times=times, name=k)
253 hlm_dict[k] = hlm_lal
257 def _generate_td_polarizations(self, **parameters):
261 hp, hc = gen_wf.generate_td_polarizations_conditioned_2()
263 hp, hc = gen_wf.generate_td_polarizations()
264 epoch = hp.epoch.gpsSeconds + hp.epoch.gpsNanoSeconds / 1e9
265 times = hp.deltaT * arange(hp.data.length) + epoch
267 TimeSeries(hp.data.data, times=times, name=
"hp"),
268 TimeSeries(hc.data.data, times=times, name=
"hc"),
271 def _generate_fd_polarizations_from_td(self, **parameters):
274 hptilde, hctilde = gen_wf.generate_fd_polarizations()
275 frequencies = hptilde.deltaF * arange(hptilde.data.length)
276 epoch = hptilde.epoch.gpsSeconds + hptilde.epoch.gpsNanoSeconds / 1e9
279 hptilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hp"
282 hctilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hc"
286 def _generate_polarizations(self, **parameters):
293 raise ValueError(
"Generation domain must be 'time' or 'freq'.")
308 Implements a wrapper for SEOBNRv5
in the pyseob package
313 No parameters required
for initialization.
330 "type":
"precessing_spin",
333 "polarizations":
True,
334 "implemented_domain":
"time",
335 "approximant":
"SEOBNRv5PHM",
336 "implementation":
"",
337 "conditioning_routines":
"",
341 def _strip_units(self, waveform_dict):
343 for key
in waveform_dict.keys():
344 new_dc[key] = waveform_dict[key].value
347 def _generate_waveform_class(self, **parameters):
349 parameters_extra = {}
354 "polarizations_from_coprec",
356 "postadiabatic_type",
368 "omega_prec_deviation",
369 "enable_antisymmetric_modes",
370 "antisymmetric_modes_hm",
371 "antisymmetric_modes",
373 for key
in optional_params:
374 val = parameters.pop(key,
None)
376 parameters_extra[key] = val
380 parameters_extra[
"gwsignal_environment"] =
True
393 def _generate_modes(self, **parameters):
396 times, hlm = gen_wf.generate_td_modes()
397 epoch = LIGOTimeGPS(times[0])
401 for k, v
in hlm.items():
402 hlm_lal = TimeSeries(v, times=times, name=k)
403 hlm_dict[k] = hlm_lal
407 def _generate_td_polarizations(self, **parameters):
411 hp, hc = gen_wf.generate_td_polarizations_conditioned_2()
413 hp, hc = gen_wf.generate_td_polarizations()
414 epoch = hp.epoch.gpsSeconds + hp.epoch.gpsNanoSeconds / 1e9
415 times = hp.deltaT * arange(hp.data.length) + epoch
417 TimeSeries(hp.data.data, times=times, name=
"hp"),
418 TimeSeries(hc.data.data, times=times, name=
"hc"),
421 def _generate_fd_polarizations_from_td(self, **parameters):
424 hptilde, hctilde = gen_wf.generate_fd_polarizations()
425 frequencies = hptilde.deltaF * arange(hptilde.data.length)
426 epoch = hptilde.epoch.gpsSeconds + hptilde.epoch.gpsNanoSeconds / 1e9
429 hptilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hp"
432 hctilde.data.data, frequencies=frequencies, epoch=epoch, name=
"hc"
436 def _generate_polarizations(self, **parameters):
443 raise ValueError(
"Generation domain must be 'time' or 'freq'.")
Implements a wrapper for SEOBNRv5EHM in the pyseob package.
def _strip_units(self, waveform_dict)
def generate_td_modes(self, **parameters)
Generate time domain modes given kwargs.
def generate_fd_waveform(self, **parameters)
Generate frequency domain polarizations given kwargs.
def _generate_td_polarizations(self, **parameters)
def _generate_modes(self, **parameters)
def _generate_waveform_class(self, **parameters)
def __init__(self, **kwargs)
Initialize class.
def _generate_fd_polarizations_from_td(self, **parameters)
def generate_td_waveform(self, **parameters)
Generate time domain polarizations given kwargs.
Implements a wrapper for SEOBNRv5 in the pyseob package.
def generate_td_waveform(self, **parameters)
Generate time domain polarizations given kwargs.
def _generate_modes(self, **parameters)
def _generate_waveform_class(self, **parameters)
def generate_fd_waveform(self, **parameters)
Generate frequency domain polarizations given kwargs.
def _generate_fd_polarizations_from_td(self, **parameters)
def _generate_td_polarizations(self, **parameters)
def generate_td_modes(self, **parameters)
Generate time domain modes given kwargs.
def __init__(self, **kwargs)
Initialize class.
def _strip_units(self, waveform_dict)
Implements a wrapper for SEOBNRv5 in the pyseob package.
def __init__(self, **kwargs)
Initialize class.
def _generate_waveform_class(self, **parameters)
def generate_fd_waveform(self, **parameters)
Generate frequency domain polarizations given kwargs.
def generate_td_modes(self, **parameters)
Generate time domain modes given kwargs.
def _strip_units(self, waveform_dict)
def _generate_td_polarizations(self, **parameters)
def generate_td_waveform(self, **parameters)
Generate time domain polarizations given kwargs.
def _generate_fd_polarizations_from_td(self, **parameters)
def _generate_modes(self, **parameters)