From e3a658a4cbb38b6e7013559faab0c6484f2a3274 Mon Sep 17 00:00:00 2001
From: Francisco Javier Hernandez
 <francisco.hernandez@ldas-pcdev5.ligo.caltech.edu>
Date: Tue, 4 Sep 2018 01:57:46 -0700
Subject: [PATCH] simplified bns example and deleted not used spins

---
 .../binary_neutron_star_example.py            | 64 ++++++-------------
 tupak/gw/source.py                            | 27 +++-----
 2 files changed, 27 insertions(+), 64 deletions(-)

diff --git a/examples/injection_examples/binary_neutron_star_example.py b/examples/injection_examples/binary_neutron_star_example.py
index 8da23e285..0b27f3942 100644
--- a/examples/injection_examples/binary_neutron_star_example.py
+++ b/examples/injection_examples/binary_neutron_star_example.py
@@ -22,11 +22,9 @@ np.random.seed(88170235)
 
 # We are going to inject a binary neutron star waveform.  We first establish a dictionary of parameters that
 # includes all of the different waveform parameters, including masses of the two black holes (mass_1, mass_2),
-# spins of both black holes (a_1,a_2) , etc. Take into account the the waveform approximants TaylorF2 and 
-# IMRPHenomD_NRTidal can only handle aligned spins, so the parameters tilt_1, tilt_2, phi_12, phi_jl must be
-# set to 0.
-injection_parameters = dict(mass_1=1.5, mass_2=1.3, a_1=0.0, a_2=0.0, tilt_1=0.0, tilt_2=0.0, phi_12=0.0, phi_jl=0,
-                            luminosity_distance=50., iota=0.4, psi=2.659, phase=1.3, geocent_time=1126259642.413,
+# spins of both black holes (a_1,a_2) , etc. 
+injection_parameters = dict(mass_1=1.5, mass_2=1.3, a_1=0.0, a_2=0.0, luminosity_distance=50., 
+                            iota=0.4, psi=2.659, phase=1.3, geocent_time=1126259642.413,
                             ra=1.375, dec=-1.2108, lambda1=400, lambda2=450)
 
 # Set the duration and sampling frequency of the data segment that we're going to inject the signal into. For the 
@@ -49,60 +47,36 @@ 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 and start at 40 Hz.
-H1 = tupak.gw.detector.get_empty_interferometer('H1')
-H1.minimum_frequency = 40
-H1.set_strain_data_from_power_spectral_density(sampling_frequency=sampling_frequency, duration=duration,
-                                               start_time = start_time)
-H1.inject_signal(parameters=injection_parameters,
-        injection_polarizations=hf_signal,
-        waveform_generator=waveform_generator)
-
-H1.save_data(outdir, label=label)
-H1.plot_data(signal=H1.get_detector_response(hf_signal,injection_parameters), outdir=outdir, label=label)
-
-
-#second interferometer
-L1 = tupak.gw.detector.get_empty_interferometer('L1')
-L1.minimum_frequency = 40
-L1.set_strain_data_from_power_spectral_density(sampling_frequency=sampling_frequency, duration=duration,
-                                               start_time = start_time)
-L1.inject_signal(parameters=injection_parameters,
-        injection_polarizations=hf_signal,
-        waveform_generator=waveform_generator)
-
-L1.save_data(outdir, label=label)
-L1.plot_data(signal=L1.get_detector_response(hf_signal,injection_parameters), outdir=outdir, label=label)
-
-#third interferometer
-V1 = tupak.gw.detector.get_empty_interferometer('V1')
-V1.minimum_frequency = 40
-V1.set_strain_data_from_power_spectral_density(sampling_frequency=sampling_frequency, duration=duration,
-                                               start_time = start_time)
-V1.inject_signal(parameters=injection_parameters,
-        injection_polarizations=hf_signal,
-        waveform_generator=waveform_generator)
-
-V1.save_data(outdir, label=label)
-V1.plot_data(signal=V1.get_detector_response(hf_signal,injection_parameters), outdir=outdir, label=label)
-IFOs = np.array([H1,L1,V1])
+interferometers = tupak.gw.detector.InterferometerList(['H1', 'L1', 'V1'])
+for interferometer in interferometers:
+    interferometer.minimum_frequency = 40
+interferometers.set_strain_data_from_power_spectral_densities(
+    sampling_frequency=sampling_frequency, duration=duration,
+    start_time = start_time)
+interferometers.inject_signal(parameters=injection_parameters, waveform_generator=waveform_generator)
+
 
 #priors
 priors = tupak.gw.prior.BBHPriorSet()
+priors.pop('tilt_1')
+priors.pop('tilt_2')
+priors.pop('phi_12')
+priors.pop('phi_jl')
 priors['lambda1'] = tupak.prior.Uniform(0, 3000, '$\\Lambda_1$')
 priors['lambda2'] = tupak.prior.Uniform(0, 3000, '$\\Lambda_2$')
 priors['mass_1'] = tupak.prior.Uniform(1, 2, '$m_1$')
 priors['mass_2'] = tupak.prior.Uniform(1, 2, '$m_2$')
-for key in ['a_1', 'a_2', 'tilt_1', 'tilt_2', 'phi_12', 'phi_jl', 'psi',
-           'geocent_time','ra','dec','iota','luminosity_distance','phase']:
+for key in ['a_1', 'a_2', 'psi','geocent_time','ra','dec',
+            'iota','luminosity_distance','phase']:
     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=interferometers, waveform_generator=waveform_generator,
                                               time_marginalization=False, phase_marginalization=False,
                                               distance_marginalization=False, prior=priors)
 
 # Run sampler.  In this case we're going to use the `nestle` sampler
-result = tupak.run_sampler(likelihood=likelihood, priors=priors, sampler='nestle', npoints=500,
+result = tupak.run_sampler(likelihood=likelihood, priors=priors, sampler='nestle', npoints=1000,
                            injection_parameters=injection_parameters, outdir=outdir, label=label)
 
 result.plot_corner()
diff --git a/tupak/gw/source.py b/tupak/gw/source.py
index b8f70fa77..38ae719a2 100644
--- a/tupak/gw/source.py
+++ b/tupak/gw/source.py
@@ -254,7 +254,7 @@ def supernova_pca_model(
     return {'plus': h_plus, 'cross': h_cross}
 
 def lal_binary_neutron_star(
-        frequency_array, mass_1, mass_2, luminosity_distance, a_1, tilt_1, phi_12, a_2, tilt_2, phi_jl,
+        frequency_array, mass_1, mass_2, luminosity_distance, a_1, a_2,
         iota, phase, ra, dec, geocent_time, psi, lambda1, lambda2, **kwargs):
     """ A Binary Black Hole waveform model using lalsimulation
 
@@ -269,17 +269,9 @@ def lal_binary_neutron_star(
     luminosity_distance: float
         The luminosity distance in megaparsec
     a_1: float
-        Dimensionless primary spin magnitude
-    tilt_1: float
-        Primary tilt angle. TaylorF2 and IMRPhenomD_NRTidal only handle aligned spin, set this value to 0
-    phi_12: float
-        TaylorF2 and IMRPhenomD_NRTidal only handle aligned spin, set this value to 0
+        Dimensionless spin magnitude
     a_2: float
         Dimensionless secondary spin magnitude. 
-    tilt_2: float
-        Secondary tilt angle. TaylorF2 and IMRPhenomD_NRTidal only handle aligned spin, set this value to 0
-    phi_jl: float
-        TaylorF2 and IMRPhenomD_NRTidal only handle aligned spin, set this value to 0
     iota: float
         Orbital inclination
     phase: float
@@ -319,15 +311,12 @@ def lal_binary_neutron_star(
     mass_1 = mass_1 * utils.solar_mass
     mass_2 = mass_2 * utils.solar_mass
 
-    if tilt_1 == 0 and tilt_2 == 0 and phi_12 == 0 and phi_jl==0:
-        spin_1x = 0
-        spin_1y = 0
-        spin_1z = a_1
-        spin_2x = 0
-        spin_2y = 0
-        spin_2z = a_2
-    else:
-        raise ValueError('The waveform approximants TaylorF2 and IMRPhenomD_NRTidal only support aligned spins')
+    spin_1x = 0
+    spin_1y = 0
+    spin_1z = a_1
+    spin_2x = 0
+    spin_2y = 0
+    spin_2z = a_2
 
     longitude_ascending_nodes = 0.0
     eccentricity = 0.0
-- 
GitLab