From c20bd29f428a4fe57edb77c3ac1c652e032b3dd0 Mon Sep 17 00:00:00 2001 From: Sylvia Biscoveanu <sylvia.biscoveanu@ligo.org> Date: Wed, 23 Dec 2020 00:07:46 -0600 Subject: [PATCH] Only adds ultranest information gain if num_live_points is designated. Will later add information_gain property for ultranest.ReactiveNestedSampler runs. --- bilby/core/result.py | 10 +++++++--- bilby/core/sampler/cpnest.py | 1 + bilby/core/sampler/dynesty.py | 1 + bilby/core/sampler/nestle.py | 1 + bilby/core/sampler/ultranest.py | 2 ++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/bilby/core/result.py b/bilby/core/result.py index d604e52d1..9964ee5ca 100644 --- a/bilby/core/result.py +++ b/bilby/core/result.py @@ -238,8 +238,9 @@ class Result(object): sampler_kwargs=None, injection_parameters=None, meta_data=None, posterior=None, samples=None, nested_samples=None, log_evidence=np.nan, - log_evidence_err=np.nan, log_noise_evidence=np.nan, - log_bayes_factor=np.nan, log_likelihood_evaluations=None, + log_evidence_err=np.nan, information_gain=np.nan, + log_noise_evidence=np.nan, log_bayes_factor=np.nan, + log_likelihood_evaluations=None, log_prior_evaluations=None, sampling_time=None, nburn=None, num_likelihood_evaluations=None, walkers=None, max_autocorrelation_time=None, use_ratio=None, @@ -269,6 +270,8 @@ class Result(object): An array of the output posterior samples and the unweighted samples log_evidence, log_evidence_err, log_noise_evidence, log_bayes_factor: float Natural log evidences + information_gain: float + The Kullback-Leibler divergence log_likelihood_evaluations: array_like The evaluations of the likelihood for each sample point num_likelihood_evaluations: int @@ -321,6 +324,7 @@ class Result(object): self.use_ratio = use_ratio self.log_evidence = log_evidence self.log_evidence_err = log_evidence_err + self.information_gain = information_gain self.log_noise_evidence = log_noise_evidence self.log_bayes_factor = log_bayes_factor self.log_likelihood_evaluations = log_likelihood_evaluations @@ -573,7 +577,7 @@ class Result(object): 'log_noise_evidence', 'log_bayes_factor', 'priors', 'posterior', 'injection_parameters', 'meta_data', 'search_parameter_keys', 'fixed_parameter_keys', 'constraint_parameter_keys', - 'sampling_time', 'sampler_kwargs', 'use_ratio', + 'sampling_time', 'sampler_kwargs', 'use_ratio', 'information_gain', 'log_likelihood_evaluations', 'log_prior_evaluations', 'num_likelihood_evaluations', 'samples', 'nested_samples', 'walkers', 'nburn', 'parameter_labels', 'parameter_labels_with_unit', diff --git a/bilby/core/sampler/cpnest.py b/bilby/core/sampler/cpnest.py index 25183bd07..14a3bd3cb 100644 --- a/bilby/core/sampler/cpnest.py +++ b/bilby/core/sampler/cpnest.py @@ -132,6 +132,7 @@ class Cpnest(NestedSampler): self.result.nested_samples['weights'] = np.exp(log_weights) self.result.log_evidence = out.NS.state.logZ self.result.log_evidence_err = np.sqrt(out.NS.state.info / out.NS.state.nlive) + self.result.information_gain = out.NS.state.info return self.result def _verify_kwargs_against_default_kwargs(self): diff --git a/bilby/core/sampler/dynesty.py b/bilby/core/sampler/dynesty.py index 22811bccb..237bebd9c 100644 --- a/bilby/core/sampler/dynesty.py +++ b/bilby/core/sampler/dynesty.py @@ -401,6 +401,7 @@ class Dynesty(NestedSampler): sorted_samples=self.result.samples) self.result.log_evidence = out.logz[-1] self.result.log_evidence_err = out.logzerr[-1] + self.result.information_gain = out.information[-1] def _run_nested_wrapper(self, kwargs): """ Wrapper function to run_nested diff --git a/bilby/core/sampler/nestle.py b/bilby/core/sampler/nestle.py index 0b97daf72..73f88f1cb 100644 --- a/bilby/core/sampler/nestle.py +++ b/bilby/core/sampler/nestle.py @@ -74,6 +74,7 @@ class Nestle(NestedSampler): sorted_samples=self.result.samples) self.result.log_evidence = out.logz self.result.log_evidence_err = out.logzerr + self.result.information_gain = out.h self.calc_likelihood_count() return self.result diff --git a/bilby/core/sampler/ultranest.py b/bilby/core/sampler/ultranest.py index 9fa12578d..7e2cbcd69 100644 --- a/bilby/core/sampler/ultranest.py +++ b/bilby/core/sampler/ultranest.py @@ -366,6 +366,8 @@ class Ultranest(NestedSampler): self.result.nested_samples = nested_samples self.result.log_evidence = out["logz"] self.result.log_evidence_err = out["logzerr"] + if self.kwargs["num_live_points"] is not None: + self.result.information_gain = np.power(out["logzerr"], 2) * self.kwargs["num_live_points"] self.result.outputfiles_basename = self.outputfiles_basename self.result.sampling_time = datetime.timedelta(seconds=self.total_sampling_time) -- GitLab