From 04902daf1ed4b31a241d4040e3cbb90d9171a408 Mon Sep 17 00:00:00 2001
From: Colm Talbot <colm.talbot@ligo.org>
Date: Fri, 18 May 2018 13:01:21 +1000
Subject: [PATCH] add uniform in log prior, reformat uniform prior

---
 tupak/prior.py | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/tupak/prior.py b/tupak/prior.py
index a46430fdb..a1c8665ac 100644
--- a/tupak/prior.py
+++ b/tupak/prior.py
@@ -123,23 +123,6 @@ class Prior(object):
         return label
 
 
-class Uniform(Prior):
-    """Uniform prior"""
-
-    def __init__(self, minimum, maximum, name=None, latex_label=None):
-        Prior.__init__(self, name, latex_label, minimum, maximum)
-        self.support = maximum - minimum
-
-    def rescale(self, val):
-        Prior.test_valid_for_rescaling(val)
-        return self.minimum + val * self.support
-
-    def prob(self, val):
-        """Return the prior probability of val"""
-        in_prior = (val >= self.minimum) & (val <= self.maximum)
-        return 1 / self.support * in_prior
-
-
 class DeltaFunction(Prior):
     """Dirac delta function prior, this always returns peak."""
 
@@ -191,6 +174,24 @@ class PowerLaw(Prior):
                                                                          - self.minimum ** (1 + self.alpha))) * in_prior
 
 
+class Uniform(PowerLaw):
+    """Uniform prior"""
+
+    def __init__(self, minimum, maximum, name=None, latex_label=None):
+        Prior.__init__(self, name, latex_label, minimum, maximum)
+        self.alpha = 0
+
+
+class LogUniform(PowerLaw):
+    """Uniform prior"""
+
+    def __init__(self, minimum, maximum, name=None, latex_label=None):
+        Prior.__init__(self, name, latex_label, minimum, maximum)
+        self.alpha = -1
+        if self.minimum<=0:
+            logging.warning('You specified a uniform-in-log prior with minimum={}'.format(self.minimum))
+
+
 class Cosine(Prior):
 
     def __init__(self, name=None, latex_label=None, minimum=-np.pi / 2, maximum=np.pi / 2):
-- 
GitLab