diff --git a/tupak/prior.py b/tupak/prior.py index a46430fdbf46c587a2e2a854d858f7c6c6eed5f5..a1c8665acae05f56b7605fbce4357b9cf188da2f 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):