diff --git a/tupak/prior.py b/tupak/prior.py index 99f7f6fd48829d4d5132461cac47930f353e1a5a..aa487856e8be6081ddd64ebb6ce6fc835ffeed15 100644 --- a/tupak/prior.py +++ b/tupak/prior.py @@ -135,6 +135,11 @@ class Uniform(Prior): in_prior = (val >= self.minimum) & (val <= self.maximum) return 1 / self.support * in_prior + def lnprob(self, val): + """Return the log-prior probability of val""" + in_prior = (val >= self.minimum) & (val <= self.maximum) + return -np.log(self.support) * in_prior + class DeltaFunction(Prior): """Dirac delta function prior, this always returns peak.""" @@ -186,6 +191,12 @@ class PowerLaw(Prior): return np.nan_to_num(val ** self.alpha * (1 + self.alpha) / (self.maximum ** (1 + self.alpha) - self.minimum ** (1 + self.alpha))) * in_prior + def lnprob(self, val): + in_prior = (val >= self.minimum) & (val <= self.maximum) + normalising = (1+self.alpha)/(self.maximum ** (1 + self.alpha) + - self.minimum ** (1 + self.alpha)) + return self.alpha * val * np.log(normalising) * in_prior + class Cosine(Prior): @@ -249,6 +260,9 @@ class Gaussian(Prior): """Return the prior probability of val""" return np.exp(-(self.mu - val)**2 / (2 * self.sigma**2)) / (2 * np.pi)**0.5 / self.sigma + def lnprob(self, val): + return -0.5*((self.mu - val)**2 / self.sigma**2 + np.log(2 * np.pi * self.sigma**2)) + class TruncatedGaussian(Prior): """