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

update example syntax

parent 6a36ad63
No related branches found
No related tags found
1 merge request!195Improve conversion / change internal parameter logic
Showing with 63 additions and 74 deletions
......@@ -40,18 +40,16 @@ waveform_generator = tupak.gw.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
parameters=injection_parameters, waveform_arguments=waveform_arguments)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers. In this case we'll use two interferometers
# (LIGO-Hanford (H1), LIGO-Livingston (L1). These default to their design
# sensitivity
IFOs = []
for name in ["H1", "L1"]:
IFOs.append(
tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal,
injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir))
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time']-3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Set up prior, which is a dictionary
# By default we will sample all terms in the signal models. However, this will take a long time for the calculation,
......@@ -68,7 +66,7 @@ for key in ['a_1', 'a_2', 'tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'psi', 'ra', '
priors[key] = injection_parameters[key]
# Initialise the likelihood by passing in the interferometer data (IFOs) and the waveoform generator
likelihood = tupak.gw.GravitationalWaveTransient(interferometers=IFOs, waveform_generator=waveform_generator,
likelihood = tupak.gw.GravitationalWaveTransient(interferometers=ifos, waveform_generator=waveform_generator,
time_marginalization=False, phase_marginalization=False,
distance_marginalization=False, prior=priors)
......
......@@ -35,7 +35,6 @@ waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(
parameter_conversion=
tupak.gw.conversion.convert_to_lal_binary_black_hole_parameters,
waveform_arguments=waveform_arguments)
# hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers.
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1', 'V1', 'K1'])
......
......@@ -29,14 +29,14 @@ waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(duration=dura
sampling_frequency=sampling_frequency,
frequency_domain_source_model=sine_gaussian,
parameters=injection_parameters)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers.
IFOs = [tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal,
injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir)
for name in ['H1', 'L1', 'V1']]
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time'] - 3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Here we define the priors for the search. We use the injection parameters
# except for the amplitude, f0, and geocent_time
......@@ -44,7 +44,7 @@ prior = injection_parameters.copy()
prior['A'] = tupak.core.prior.PowerLaw(alpha=-1, minimum=1e-25, maximum=1e-21, name='A')
prior['f0'] = tupak.core.prior.Uniform(90, 110, 'f')
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(IFOs, waveform_generator)
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(ifos, waveform_generator)
result = tupak.core.sampler.run_sampler(
likelihood, prior, sampler='dynesty', outdir=outdir, label=label,
......
......@@ -36,23 +36,13 @@ waveform = tupak.gw.waveform_generator.WaveformGenerator(duration=duration, samp
time_domain_source_model=time_domain_damped_sinusoid,
parameters=injection_parameters)
hf_signal = waveform.frequency_domain_strain()
#note we could plot the time domain signal with the following code
# import matplotlib.pyplot as plt
# plt.plot(waveform.time_array, waveform.time_domain_strain()['plus'])
# or the frequency-domain signal:
# plt.loglog(waveform.frequency_array, abs(waveform.frequency_domain_strain()['plus']))
# inject the signal into three interferometers
IFOs = [tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal,
injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir)
for name in ['H1', 'L1']]
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time'] - 3)
ifos.inject_signal(waveform_generator=waveform,
parameters=injection_parameters)
# create the priors
prior = injection_parameters.copy()
......@@ -61,9 +51,8 @@ prior['damping_time'] = tupak.core.prior.Uniform(0, 1, r'damping time')
prior['frequency'] = tupak.core.prior.Uniform(0, 200, r'frequency')
prior['phase'] = tupak.core.prior.Uniform(-np.pi / 2, np.pi / 2, r'$\phi$')
# define likelihood
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(IFOs, waveform)
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(ifos, waveform)
# launch sampler
result = tupak.core.sampler.run_sampler(likelihood, prior, sampler='dynesty', npoints=1000,
......
......@@ -40,7 +40,6 @@ waveform_generator = tupak.gw.WaveformGenerator(
frequency_domain_source_model=tupak.gw.source.lal_eccentric_binary_black_hole_no_spins,
parameters=injection_parameters, waveform_arguments=waveform_arguments)
hf_signal = waveform_generator.frequency_domain_strain()
# Setting up three interferometers (LIGO-Hanford (H1), LIGO-Livingston (L1), and
# Virgo (V1)) at their design sensitivities. The maximum frequency is set just
......@@ -49,13 +48,15 @@ hf_signal = waveform_generator.frequency_domain_strain()
minimum_frequency = 10.
maximum_frequency = 128.
IFOs = tupak.gw.detector.InterferometerList(['H1', 'L1', 'V1'])
for IFO in IFOs:
IFO.minimum_frequency = minimum_frequency
IFO.maximum_frequency = maximum_frequency
IFOs.set_strain_data_from_power_spectral_densities(sampling_frequency, duration)
IFOs.inject_signal(waveform_generator=waveform_generator, parameters=injection_parameters)
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
for ifo in ifos:
ifo.minimum_frequency = minimum_frequency
ifo.maximum_frequency = maximum_frequency
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time'] - 3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Now we set up the priors on each of the binary parameters.
priors = dict()
......@@ -71,7 +72,7 @@ priors["phase"] = tupak.core.prior.Uniform(name='phase', minimum=0, maximum=2 *
priors["geocent_time"] = tupak.core.prior.Uniform(1180002600.9, 1180002601.1, name='geocent_time')
# Initialising the likelihood function.
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(interferometers=IFOs,
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(interferometers=ifos,
waveform_generator=waveform_generator, time_marginalization=False,
phase_marginalization=False, distance_marginalization=False,
prior=priors)
......
......@@ -27,12 +27,14 @@ waveform_generator = tupak.gw.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
parameters=injection_parameters, waveform_arguments=waveform_arguments)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers.
IFOs = [tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal, injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir) for name in ['H1', 'L1', 'V1']]
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time'] - 3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Set up prior
# This loads in a predefined set of priors for BBHs.
......@@ -56,7 +58,7 @@ priors['a_2'] = tupak.core.prior.Interped(name='a_2', xx=a_2, yy=p_a_2, minimum=
# Enjoy.
# Initialise GravitationalWaveTransient
likelihood = tupak.GravitationalWaveTransient(interferometers=IFOs, waveform_generator=waveform_generator)
likelihood = tupak.GravitationalWaveTransient(interferometers=ifos, waveform_generator=waveform_generator)
# Run sampler
result = tupak.run_sampler(likelihood=likelihood, priors=priors, sampler='dynesty',
......
......@@ -26,16 +26,14 @@ waveform_generator = tupak.gw.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole, parameters=injection_parameters,
waveform_arguments=waveform_arguments)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers.
IFOs = []
for name in ["H1", "L1", "V1"]:
IFOs.append(
tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal,
injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir))
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time'] - 3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Set up prior
priors = tupak.gw.prior.BBHPriorSet()
......@@ -47,7 +45,7 @@ for key in ['a_1', 'a_2', 'tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'iota', 'ra',
# Note that we now need to pass the: priors and flags for each thing that's being marginalised.
# This is still under development so care should be taken with the marginalised likelihood.
likelihood = tupak.gw.GravitationalWaveTransient(
interferometers=IFOs, waveform_generator=waveform_generator, prior=priors,
interferometers=ifos, waveform_generator=waveform_generator, prior=priors,
distance_marginalization=False, phase_marginalization=True,
time_marginalization=False)
......
......@@ -25,7 +25,7 @@ waveform_generator = tupak.gw.WaveformGenerator(
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.lal_binary_black_hole,
parameters=injection_parameters, waveform_arguments=waveform_arguments)
hf_signal = waveform_generator.frequency_domain_strain()
hf_signal = waveform_generator.frequency_domain_strain(injection_parameters)
H1 = tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
'H1', injection_polarizations=hf_signal,
......
......@@ -29,13 +29,15 @@ waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(duration=dura
sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.sinegaussian,
parameters=injection_parameters)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers. In this case we'll use three interferometers (LIGO-Hanford (H1), LIGO-Livingston (L1),
# and Virgo (V1)). These default to their design sensitivity
IFOs = [tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal, injection_parameters=injection_parameters, duration=duration,
sampling_frequency=sampling_frequency, outdir=outdir) for name in ['H1', 'L1', 'V1']]
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1', 'V1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time']-3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# Set up prior, which is a dictionary
priors = dict()
......@@ -55,7 +57,7 @@ priors['frequency'] = tupak.core.prior.Uniform(30, 1000, 'frequency')
priors['hrss'] = tupak.core.prior.Uniform(1e-23, 1e-21, 'hrss')
# Initialise the likelihood by passing in the interferometer data (IFOs) and the waveoform generator
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(interferometers=IFOs, waveform_generator=waveform_generator)
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(interferometers=ifos, waveform_generator=waveform_generator)
# Run sampler. In this case we're going to use the `dynesty` sampler
result = tupak.core.sampler.run_sampler(likelihood=likelihood, priors=priors, sampler='dynesty', npoints=1000,
......
......@@ -13,7 +13,7 @@ import numpy as np
# Set the duration and sampling frequency of the data segment that we're going to inject the signal into
import tupak.gw.likelihood
time_duration = 3.
duration = 3.
sampling_frequency = 4096.
# Specify the output directory and the name of the simulation.
......@@ -35,19 +35,19 @@ injection_parameters = dict(file_path='MuellerL15_example_inj.txt',
# Create the waveform_generator using a supernova source function
waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(
time_duration=time_duration, sampling_frequency=sampling_frequency,
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.supernova,
parameters=injection_parameters)
hf_signal = waveform_generator.frequency_domain_strain()
# Set up interferometers. In this case we'll use three interferometers
# (LIGO-Hanford (H1), LIGO-Livingston (L1), and Virgo (V1)). These default to
# their design sensitivity
IFOs = [tupak.gw.detector.get_interferometer_with_fake_noise_and_injection(
name, injection_polarizations=hf_signal,
injection_parameters=injection_parameters, time_duration=time_duration,
sampling_frequency=sampling_frequency, outdir=outdir)
for name in ['H1', 'L1', 'V1']]
ifos = tupak.gw.detector.InterferometerList(['H1', 'L1'])
ifos.set_strain_data_from_power_spectral_densities(
sampling_frequency=sampling_frequency, duration=duration,
start_time=injection_parameters['geocent_time']-3)
ifos.inject_signal(waveform_generator=waveform_generator,
parameters=injection_parameters)
# read in from a file the PCs used to create the signal model.
realPCs = np.loadtxt('SupernovaRealPCs.txt')
......@@ -59,7 +59,7 @@ simulation_parameters = dict(
realPCs=realPCs, imagPCs=imagPCs)
search_waveform_generator = tupak.gw.waveform_generator.WaveformGenerator(
time_duration=time_duration, sampling_frequency=sampling_frequency,
duration=duration, sampling_frequency=sampling_frequency,
frequency_domain_source_model=tupak.gw.source.supernova_pca_model,
waveform_arguments=simulation_parameters)
......@@ -85,7 +85,7 @@ priors['geocent_time'] = tupak.core.prior.Uniform(
# Initialise the likelihood by passing in the interferometer data (IFOs) and
# the waveoform generator
likelihood = tupak.gw.likelihood.GravitationalWaveTransient(
interferometers=IFOs, waveform_generator=search_waveform_generator)
interferometers=ifos, waveform_generator=search_waveform_generator)
# Run sampler.
result = tupak.run_sampler(
......
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