From 5461d1f1dbae13dae4d10e3f876abf7750ab5173 Mon Sep 17 00:00:00 2001 From: Gregory Ashton <gregory.ashton@ligo.org> Date: Tue, 9 Apr 2019 22:12:39 -0500 Subject: [PATCH] Fix sample_to_posterior bug: makes the priors optional --- bilby/core/result.py | 18 +++++++++++++----- test/result_test.py | 11 +++++++++++ 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/bilby/core/result.py b/bilby/core/result.py index aaf0a81df..a4630475f 100644 --- a/bilby/core/result.py +++ b/bilby/core/result.py @@ -983,6 +983,17 @@ class Result(object): fig.savefig(filename, dpi=dpi) plt.close(fig) + @staticmethod + def _add_prior_fixed_values_to_posterior(posterior, priors): + if priors is None: + return posterior + for key in priors: + if isinstance(priors[key], DeltaFunction): + posterior[key] = priors[key].peak + elif isinstance(priors[key], float): + posterior[key] = priors[key] + return posterior + def samples_to_posterior(self, likelihood=None, priors=None, conversion_function=None): """ @@ -1005,11 +1016,8 @@ class Result(object): except ValueError: data_frame = pd.DataFrame( self.samples, columns=self.search_parameter_keys) - for key in priors: - if isinstance(priors[key], DeltaFunction): - data_frame[key] = priors[key].peak - elif isinstance(priors[key], float): - data_frame[key] = priors[key] + data_frame = self._add_prior_fixed_values_to_posterior( + data_frame, priors) data_frame['log_likelihood'] = getattr( self, 'log_likelihood_evaluations', np.nan) if self.log_prior_evaluations is None: diff --git a/test/result_test.py b/test/result_test.py index 7648b9708..a18a44ac6 100644 --- a/test/result_test.py +++ b/test/result_test.py @@ -266,6 +266,17 @@ class TestResult(unittest.TestCase): df = pd.read_csv(filename) self.assertTrue(np.allclose(self.result.posterior.values, df.values)) + def test_samples_to_posterior_simple(self): + self.result.posterior = None + x = [1, 2, 3] + y = [4, 6, 8] + self.result.samples = np.array([x, y]).T + self.result.samples_to_posterior() + self.assertTrue(all(self.result.posterior['x'] == x)) + self.assertTrue(all(self.result.posterior['y'] == y)) + self.assertTrue(np.all( + None == self.result.posterior.log_likelihood.values)) + def test_samples_to_posterior(self): self.result.posterior = None x = [1, 2, 3] -- GitLab