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