From 44ada1c526080d21bf8b75bc67f24c44b5dc776c Mon Sep 17 00:00:00 2001
From: Colm Talbot <colm.talbot@ligo.org>
Date: Fri, 21 Sep 2018 13:30:20 +1000
Subject: [PATCH] update example syntax

---
 examples/injection_examples/basic_tutorial.py | 16 ++++++------
 .../change_sampled_parameters.py              |  1 -
 .../create_your_own_source_model.py           | 14 +++++------
 ...reate_your_own_time_domain_source_model.py | 25 ++++++-------------
 .../injection_examples/eccentric_inspiral.py  | 19 +++++++-------
 .../how_to_specify_the_prior.py               | 12 +++++----
 .../marginalized_likelihood.py                | 16 ++++++------
 .../plot_time_domain_data.py                  |  2 +-
 .../sine_gaussian_example.py                  | 12 +++++----
 .../supernova_example/supernova_example.py    | 20 +++++++--------
 10 files changed, 63 insertions(+), 74 deletions(-)

diff --git a/examples/injection_examples/basic_tutorial.py b/examples/injection_examples/basic_tutorial.py
index a8575e17b..2c18ef1c3 100644
--- a/examples/injection_examples/basic_tutorial.py
+++ b/examples/injection_examples/basic_tutorial.py
@@ -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)
 
diff --git a/examples/injection_examples/change_sampled_parameters.py b/examples/injection_examples/change_sampled_parameters.py
index 010e87530..106ace05c 100644
--- a/examples/injection_examples/change_sampled_parameters.py
+++ b/examples/injection_examples/change_sampled_parameters.py
@@ -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'])
diff --git a/examples/injection_examples/create_your_own_source_model.py b/examples/injection_examples/create_your_own_source_model.py
index 604a513ef..8ee965ab9 100644
--- a/examples/injection_examples/create_your_own_source_model.py
+++ b/examples/injection_examples/create_your_own_source_model.py
@@ -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,
diff --git a/examples/injection_examples/create_your_own_time_domain_source_model.py b/examples/injection_examples/create_your_own_time_domain_source_model.py
index be48be57a..b1f814c6e 100644
--- a/examples/injection_examples/create_your_own_time_domain_source_model.py
+++ b/examples/injection_examples/create_your_own_time_domain_source_model.py
@@ -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,
diff --git a/examples/injection_examples/eccentric_inspiral.py b/examples/injection_examples/eccentric_inspiral.py
index 79bdf8088..f4077b640 100644
--- a/examples/injection_examples/eccentric_inspiral.py
+++ b/examples/injection_examples/eccentric_inspiral.py
@@ -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)
diff --git a/examples/injection_examples/how_to_specify_the_prior.py b/examples/injection_examples/how_to_specify_the_prior.py
index 450250db6..51b7877dd 100644
--- a/examples/injection_examples/how_to_specify_the_prior.py
+++ b/examples/injection_examples/how_to_specify_the_prior.py
@@ -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',
diff --git a/examples/injection_examples/marginalized_likelihood.py b/examples/injection_examples/marginalized_likelihood.py
index b91cee3e1..8c05d0f97 100644
--- a/examples/injection_examples/marginalized_likelihood.py
+++ b/examples/injection_examples/marginalized_likelihood.py
@@ -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)
 
diff --git a/examples/injection_examples/plot_time_domain_data.py b/examples/injection_examples/plot_time_domain_data.py
index a0b1a61a8..37a0868c8 100644
--- a/examples/injection_examples/plot_time_domain_data.py
+++ b/examples/injection_examples/plot_time_domain_data.py
@@ -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,
diff --git a/examples/injection_examples/sine_gaussian_example.py b/examples/injection_examples/sine_gaussian_example.py
index 8761cf6b3..aba408184 100644
--- a/examples/injection_examples/sine_gaussian_example.py
+++ b/examples/injection_examples/sine_gaussian_example.py
@@ -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,
diff --git a/examples/supernova_example/supernova_example.py b/examples/supernova_example/supernova_example.py
index 86ba46c80..2365bd55e 100644
--- a/examples/supernova_example/supernova_example.py
+++ b/examples/supernova_example/supernova_example.py
@@ -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(
-- 
GitLab