From 6be834f20968d80359037253a54f5c58c746594b Mon Sep 17 00:00:00 2001
From: Colm Talbot <colm.talbot@ligo.org>
Date: Fri, 8 Jun 2018 10:12:00 +1000
Subject: [PATCH] fix evidence storage and printing when noise evidence is nan

---
 tupak/core/result.py  | 19 ++++++++++++-------
 tupak/core/sampler.py |  6 ++++--
 2 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/tupak/core/result.py b/tupak/core/result.py
index d5da239e2..a5440ef10 100644
--- a/tupak/core/result.py
+++ b/tupak/core/result.py
@@ -54,13 +54,18 @@ class Result(dict):
     def __repr__(self):
         """Print a summary """
         if hasattr(self, 'samples'):
-            return ("nsamples: {:d}\n"
-                    "log_noise_evidence: {:6.3f}\n"
-                    "log_evidence: {:6.3f} +/- {:6.3f}\n"
-                    "log_bayes_factor: {:6.3f} +/- {:6.3f}\n"
-                    .format(len(self.samples), self.log_noise_evidence, self.log_evidence,
-                            self.log_evidence_err, self.log_bayes_factor,
-                            self.log_evidence_err))
+            if hasattr(self, 'log_noise_evidence'):
+                return ("nsamples: {:d}\n"
+                        "log_noise_evidence: {:6.3f}\n"
+                        "log_evidence: {:6.3f} +/- {:6.3f}\n"
+                        "log_bayes_factor: {:6.3f} +/- {:6.3f}\n"
+                        .format(len(self.samples), self.log_noise_evidence, self.log_evidence,
+                                self.log_evidence_err, self.log_bayes_factor,
+                                self.log_evidence_err))
+            else:
+                return ("nsamples: {:d}\n"
+                        "log_evidence: {:6.3f} +/- {:6.3f}\n"
+                        .format(len(self.samples), self.log_evidence, self.log_evidence_err))
         else:
             return ''
 
diff --git a/tupak/core/sampler.py b/tupak/core/sampler.py
index 2ea3ad08c..5e2d26e0f 100644
--- a/tupak/core/sampler.py
+++ b/tupak/core/sampler.py
@@ -574,12 +574,14 @@ def run_sampler(likelihood, priors=None, label='label', outdir='outdir',
         else:
             result = sampler._run_external_sampler()
 
-        result.log_noise_evidence = likelihood.noise_log_likelihood()
         if sampler.use_ratio:
+            result.log_noise_evidence = likelihood.noise_log_likelihood()
             result.log_bayes_factor = result.log_evidence
             result.log_evidence = result.log_bayes_factor + result.log_noise_evidence
         else:
-            result.log_bayes_factor = result.log_evidence - result.log_noise_evidence
+            if likelihood.noise_log_likelihood() is not np.nan:
+                result.log_noise_evidence = likelihood.noise_log_likelihood()
+                result.log_bayes_factor = result.log_evidence - result.log_noise_evidence
         if injection_parameters is not None:
             result.injection_parameters = injection_parameters
             if conversion_function is not None:
-- 
GitLab