Skip to content

Commit

Permalink
Merge pull request #5 from adivijaykumar/relbin_kruthi
Browse files Browse the repository at this point in the history
Removed log_likelihood_ratio_approx and also removed factor of 2 in compute_summary_data
  • Loading branch information
adivijaykumar authored Nov 9, 2020
2 parents bb5dd5f + 2a1dd91 commit e7bf340
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 31 deletions.
4 changes: 2 additions & 2 deletions bilby/gw/conversion.py
Original file line number Diff line number Diff line change
Expand Up @@ -815,8 +815,8 @@ def _generate_all_cbc_parameters(sample, defaults, base_conversion,
logger.info(
"Generation of {} parameters failed with message {}".format(
key, e))
if likelihood is not None:
compute_snrs(output_sample, likelihood)
# if likelihood is not None:
# compute_snrs(output_sample, likelihood)
return output_sample


Expand Down
44 changes: 15 additions & 29 deletions bilby/gw/likelihood.py
Original file line number Diff line number Diff line change
Expand Up @@ -1471,14 +1471,12 @@ def __init__(self, interferometers, waveform_generator,
self.maximum_likelihood_parameters = initial_parameters
self.setup_bins()
logger.info('Bin setup completed. Number of bins = {}'.format(len(self.bin_freqs) - 1))

self.set_fiducial_waveforms(self.initial_parameters)
logger.info("Initial fiducial waveforms set up")

self.compute_summary_data()

# # self.find_maximum_likelihood_waveform(self.initial_parameters, self.parameter_bounds, max_iters=1)
# # maxl_logl = self.log_likelihood_ratio_approx(None, parameter_dictionary=self.maximum_likelihood_parameters)
logger.info("Summary Data Obtained")
#self.find_maximum_likelihood_waveform(self.initial_parameters, self.parameter_bounds, iterations=1)
# maxl_logl = self.log_likelihood_ratio_approx(None, parameter_dictionary=self.maximum_likelihood_parameters)
# maxl_logl = self.log_likelihood_ratio_approx()
# print(maxl_logl)

Expand Down Expand Up @@ -1538,20 +1536,6 @@ def log_likelihood(self):
return self.log_likelihood_ratio_relative_binning() + self.noise_log_likelihood()

def log_likelihood_ratio_relative_binning(self):

logl = self.log_likelihood_ratio_approx()
# print('relative binning value = %s' % logl)
# print('actual value = %s' %
# self.log_likelihood_ratio_full(self.parameters))

return logl

def log_likelihood_ratio_approx(self):

# if not parameter_dictionary:
# parameter_dictionary = self.get_parameter_dictionary_from_list(
# parameter_list)

d_inner_h = 0.
optimal_snr_squared = 0.
complex_matched_filter_snr = 0.
Expand All @@ -1572,12 +1556,14 @@ def log_likelihood_ratio_approx(self):
# print('logl in inner calculation = ', log_l)
return float(log_l.real)


def find_maximum_likelihood_waveform(self, initial_parameter_guess,
parameter_bounds, max_iters=10,
parameter_bounds, iterations=10,
likelihood_threshold=1):
prev_log_likelihood = -np.inf
for i in range(max_iters):
for i in range(iterations):
print("iter: %s" % i)
print("length of parameter_bounds", len(parameter_bounds))
log_likelihood = self.get_best_fit_parameters(
self.get_parameter_list_from_dictionary(parameter_bounds),
atol=1e-10, maxiter=10) # change back to 500, no input
Expand All @@ -1593,17 +1579,18 @@ def find_maximum_likelihood_waveform(self, initial_parameter_guess,

prev_log_likelihood = log_likelihood

print("Max iters reached. Stopping.")
print("Max iteration reached. Stopping.")
return

def get_best_fit_parameters(self, initial_parameter_bounds, maxiter=500,
atol=1e-10):
# Walk uphill using differential evolution from scipy.
print('computing maxL parameters...')
print('par bounds',initial_parameter_bounds)
output = differential_evolution(
self.log_likelihood_ratio_approx,
self.log_likelihood_ratio_relative_binning,
bounds=initial_parameter_bounds, atol=atol,
maxiter=maxiter, seed=0)
maxiter=maxiter)
best_fit = output['x']
log_likelihood = -output['fun']

Expand Down Expand Up @@ -1646,27 +1633,26 @@ def compute_summary_data(self):
interferometer.frequency_domain_strain[mask],
self.per_detector_fiducial_waveforms[interferometer.name][mask],
interferometer.power_spectral_density_array[mask],
self.waveform_generator.duration) / 2
self.waveform_generator.duration)
b0 = noise_weighted_inner_product(
self.per_detector_fiducial_waveforms[interferometer.name][mask],
self.per_detector_fiducial_waveforms[interferometer.name][mask],
interferometer.power_spectral_density_array[mask],
self.waveform_generator.duration) / 2
self.waveform_generator.duration)
a1 = noise_weighted_inner_product(
interferometer.frequency_domain_strain[mask] * factor,
self.per_detector_fiducial_waveforms[interferometer.name][mask],
interferometer.power_spectral_density_array[mask],
self.waveform_generator.duration) / 2
self.waveform_generator.duration)
b1 = noise_weighted_inner_product(
self.per_detector_fiducial_waveforms[interferometer.name][mask] * factor,
self.per_detector_fiducial_waveforms[interferometer.name][mask],
interferometer.power_spectral_density_array[mask],
self.waveform_generator.duration) / 2
self.waveform_generator.duration)

summary_data[interferometer.name] = dict(a0=a0, a1=a1, b0=b0, b1=b1)

self.summary_data = summary_data
logger.info("Summary Data Obtained")

def compute_relative_ratio(self, parameter_dictionary, interferometer):

Expand Down

0 comments on commit e7bf340

Please sign in to comment.