diff --git a/CHANGELOG.md b/CHANGELOG.md index a5f45836dce4a12637061f1cb292e722de210f1c..a0df9f9ff5290dc48f1cbea656c28751bbe158f7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ Changes currently on master, but not under a tag. - Adds plotting of the prior on 1D marginal distributions of corner plots - Adds a method to plot time-domain GW data - Hyperparameter estimation now enables the user to provide the single event evidences +- Add nested samples to nestle output - Prior and child classes now implement the \_\_eq\_\_ magic method for comparisons ### Changes @@ -34,6 +35,7 @@ Changes currently on master, but not under a tag. re-instantiate the Prior in most cases - Users can now choose to overwrite existing result files, rather than creating a .old file. +- Make likelihood values stored in the posterior correct for dynesty and nestle ### Removed - Removes the "--detectors" command line argument (not a general CLI requirement) diff --git a/tupak/core/sampler/dynesty.py b/tupak/core/sampler/dynesty.py index ada5d3b21628b8fc68280ba9fcd86e77354fa0a7..dd84e473b9de6d1614ebe5d58614df736c911bed 100644 --- a/tupak/core/sampler/dynesty.py +++ b/tupak/core/sampler/dynesty.py @@ -131,14 +131,16 @@ class Dynesty(Sampler): # self.result.sampler_output = out weights = np.exp(out['logwt'] - out['logz'][-1]) - self.result.samples = dynesty.utils.resample_equal( - out.samples, weights) - self.result.log_likelihood_evaluations = out.logl - self.result.log_evidence = out.logz[-1] - self.result.log_evidence_err = out.logzerr[-1] + self.result.samples = dynesty.utils.resample_equal(out.samples, weights) self.result.nested_samples = DataFrame( out.samples, columns=self.search_parameter_keys) self.result.nested_samples['weights'] = weights + self.result.nested_samples['log_likelihood'] = out.logl + idxs = [np.unique(np.where(self.result.samples[ii] == out.samples)[0]) + for ii in range(len(out.logl))] + self.result.log_likelihood_evaluations = out.logl[idxs] + self.result.log_evidence = out.logz[-1] + self.result.log_evidence_err = out.logzerr[-1] if self.plot: self.generate_trace_plots(out) diff --git a/tupak/core/sampler/nestle.py b/tupak/core/sampler/nestle.py index 4d6cd8a1f37640c359f81590ca580ce1705bed18..34486e682287dfb03c0c3df1a4a764a3ea077836 100644 --- a/tupak/core/sampler/nestle.py +++ b/tupak/core/sampler/nestle.py @@ -1,4 +1,5 @@ import numpy as np +from pandas import DataFrame from .base_sampler import Sampler @@ -69,7 +70,13 @@ class Nestle(Sampler): self.result.sampler_output = out self.result.samples = nestle.resample_equal(out.samples, out.weights) - self.result.log_likelihood_evaluations = out.logl + self.result.nested_samples = DataFrame( + out.samples, columns=self.search_parameter_keys) + self.result.nested_samples['weights'] = out.weights + self.result.nested_samples['log_likelihood'] = out.logl + idxs = [np.unique(np.where(self.result.samples[ii] == out.samples)[0]) + for ii in range(len(out.logl))] + self.result.log_likelihood_evaluations = out.logl[idxs] self.result.log_evidence = out.logz self.result.log_evidence_err = out.logzerr return self.result