27 import astropy.units
as u
28 from gwpy.timeseries
import TimeSeries
29 from gwpy.frequencyseries
import FrequencySeries
30 except ModuleNotFoundError:
32 warnings.warn(
"Astropy or GwPy not installed")
36 ts = TimeSeries([10,10])
45 pars_dict_td = {
'mass1' : 20.*u.solMass,
46 'mass2' : 30.*u.solMass,
47 'spin1x' : 0.*u.dimensionless_unscaled,
48 'spin1y' : 0.*u.dimensionless_unscaled,
49 'spin1z' : 0.*u.dimensionless_unscaled,
50 'spin2x' : 0.*u.dimensionless_unscaled,
51 'spin2y' : 0.*u.dimensionless_unscaled,
52 'spin2z' : 0.*u.dimensionless_unscaled,
53 'deltaT' : 1./1024.*u.s,
54 'f22_start' : 20.*u.Hz,
56 'distance' : 1000.*u.Mpc,
57 'inclination' : 0.*u.rad,
59 'eccentricity' : 0.*u.dimensionless_unscaled,
60 'longAscNodes' : 0.*u.rad,
61 'meanPerAno' : 0.*u.rad,
64 approximant =
'IMRPhenomTPHM'
67 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
68 hp, hc = wfm.GenerateTDWaveform(pars_dict_td, gen)
69 assert isinstance(hp, TimeSeries)
72 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
73 gwf = wfm.GenerateTDWaveform(pars_dict_td, gen)
79 strain = gwf.strain(
'H1', ra, dec, psi, tgps)
80 assert isinstance(strain, TimeSeries)
83 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
84 hlm = wfm.GenerateTDModes(pars_dict_td, gen)
85 theta, phi = 0.*u.rad, 0*u.rad
86 gwf_0 = hlm(theta, phi)
92 strain = gwf_0.strain(
'H1', ra, dec, psi, tgps)
94 assert isinstance(strain, TimeSeries)
100 pars_dict_fd = {
'mass1' : 20.*u.solMass,
101 'mass2' : 30.*u.solMass,
102 'spin1x' : 0.*u.dimensionless_unscaled,
103 'spin1y' : 0.*u.dimensionless_unscaled,
104 'spin1z' : 0.*u.dimensionless_unscaled,
105 'spin2x' : 0.*u.dimensionless_unscaled,
106 'spin2y' : 0.*u.dimensionless_unscaled,
107 'spin2z' : 0.*u.dimensionless_unscaled,
108 'deltaF' : 0.25*u.Hz,
109 'f22_start' : 20.*u.Hz,
110 'f22_ref' : 20.*u.Hz,
111 'f_max' : 2048.*u.Hz,
112 'distance' : 1000.*u.Mpc,
113 'inclination' : 0.*u.rad,
114 'phi_ref' : 0.*u.rad,
115 'eccentricity' : 0.*u.dimensionless_unscaled,
116 'longAscNodes' : 0.*u.rad,
117 'meanPerAno' : 0.*u.rad,
121 approximant =
'IMRPhenomXPHM'
122 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
123 assert wfm.GenerateFDWaveform(pars_dict_fd, gen)
126 approximant =
'IMRPhenomD_NRTidal'
127 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
128 assert wfm.GenerateFDWaveform(pars_dict_fd, gen)
131 approximant =
'IMRPhenomXPHM'
132 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
133 gwf = wfm.GenerateFDWaveform(pars_dict_fd, gen)
139 strain = gwf.strain(
'H1', ra, dec, psi, 112614532)
141 assert isinstance(strain, FrequencySeries)
144 approximant =
'IMRPhenomXPHM'
145 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
146 hlm = wfm.GenerateFDModes(pars_dict_fd, gen)
148 assert isinstance(hlm[(2,2)], FrequencySeries)
150 gwf_0 = hlm(0.*u.rad, 0.*u.rad)
156 strain = gwf_0.strain(
'H1', ra, dec, psi, tgps)
158 assert isinstance(strain, FrequencySeries)
169 s1x = 0.*u.dimensionless_unscaled
170 s1y = 0.*u.dimensionless_unscaled
171 s1z = 0.*u.dimensionless_unscaled
172 s2x = 0.*u.dimensionless_unscaled
173 s2y = 0.*u.dimensionless_unscaled
174 s2z = 0.*u.dimensionless_unscaled
175 deltaT = 1./1024.*u.s
178 distance = 1.*u.Mpc/(lal.PC_SI*1e6)
179 inclination = 1.3*u.rad
181 eccentricity = 0.*u.dimensionless_unscaled
182 longAscNodes = 0.*u.rad
183 meanPerAno = 0.*u.rad
186 approximant =
'IMRPhenomTPHM'
187 python_dict = {
'mass1' : m1,
199 'distance' : distance,
200 'inclination' : inclination,
201 'eccentricity' : eccentricity,
202 'longAscNodes' : longAscNodes,
203 'meanPerAno' : meanPerAno,
204 'condition' : condition}
205 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
206 hp, hc = wfm.GenerateTDWaveform(python_dict, gen)
207 hp_modes = wfm.GenerateTDModes(python_dict, gen)
208 return hp, hc, hp_modes
215 s1x = 0.*u.dimensionless_unscaled
216 s1y = 0.*u.dimensionless_unscaled
217 s1z = 0.*u.dimensionless_unscaled
218 s2x = 0.*u.dimensionless_unscaled
219 s2y = 0.*u.dimensionless_unscaled
220 s2z = 0.*u.dimensionless_unscaled
222 distance = 1.*u.Mpc/(lal.PC_SI*1e6)
223 inclination = 1.3*u.rad
225 eccentricity = 0.*u.dimensionless_unscaled
226 longAscNodes = 0.*u.rad
227 meanPerAno = 0.*u.rad
235 approximant =
'IMRPhenomXPHM'
237 python_dict_fd = {
'mass1' : m1,
250 'distance' : distance,
251 'inclination' : inclination,
252 'eccentricity' : eccentricity,
253 'longAscNodes' : longAscNodes,
254 'meanPerAno' : meanPerAno,
255 'condition' : condition}
257 gen = wfm.LALCompactBinaryCoalescenceGenerator(approximant)
259 hp, hc = wfm.GenerateFDWaveform(python_dict_fd, gen)
260 hp_modes = wfm.GenerateFDModes(python_dict_fd, gen)
261 return hp, hc, hp_modes
269 hp_mode, hc_mode = hlm(np.pi/3*u.rad, 0.*u.rad)
272 full_sig = hp - 1j*hc
273 full_sig_mode = hp_mode - 1j*hc_mode
276 amp_sum = np.sum(np.abs(full_sig))
277 phase_sum = np.sum(np.unwrap(np.angle(full_sig)))
278 amp_sum_mode = np.sum(np.abs(full_sig_mode))
279 phase_sum_mode = np.sum(np.unwrap(np.angle(full_sig_mode)))
282 if all(isinstance(i, u.Quantity)
for i
in [amp_sum, phase_sum, amp_sum_mode, phase_sum_mode]):
283 amp_sum = amp_sum.value
284 phase_sum = phase_sum.value
285 amp_sum_mode = amp_sum_mode.value
286 phase_sum_mode = phase_sum_mode.value
289 phase_sum = phase_sum
290 amp_sum_mode = amp_sum_mode
291 phase_sum_mode = phase_sum_mode
292 return amp_sum, phase_sum, amp_sum_mode, phase_sum_mode
298 Test that the gwsignal imports are working
303 expected_time_domain_results = np.array([2840580.6974479025, -169050.53344446962, 3878983.3547071503, -164688.3777098978])
304 expected_freq_domain_results = np.array([155285.95927165466, 2322376.861281745, 758571.2935111821, 4117645.756563821])
311 np.testing.assert_allclose(expected_freq_domain_results, expected_freq_domain_results, rtol=1e-6, err_msg=
"GWSignal IMRPhenomXPHM Test Failed")
316 if __name__ ==
'__main__':
317 args = sys.argv[1:]
or [
"-v",
"-rs",
"--junit-xml=junit-gwsignal.xml"]
318 sys.exit(pytest.main(args=[__file__] + args))
def gen_fd_waveform()
Test that gwsignal frequency-domain improts work #########.
def get_amp_phase_sums(hp, hc, hlm)
def gen_td_waveform()
This test is just to check that the gwsignal generate-td-fd-waveforms and the generate-td-fd-modes fu...
def test_lal_fd_gen_tidal()
def test_gwsignal()
Test that the gwsignal imports are working.