Source code for ForMoSA.nested_sampling.nested_prior_functions
from scipy.special import ndtri
import numpy as np
# ----------------------------------------------------------------------------------------------------------------------
[docs]
def uniform_prior(prior_fct_arg, theta):
'''
Uniform prior for nested sampling.
Args:
prior_fct_arg (list): Two-values list with uniform prior boundaries.
theta (list): Parameter values randomly picked by the nested sampling
Returns:
- Evaluated (float): Evaluated prior
Author: Simon Petrus
'''
arg1 = float(prior_fct_arg[0])
arg2 = float(prior_fct_arg[1])
return (arg2 - arg1) * theta + arg1
[docs]
def loguniform_prior(prior_fct_arg, theta):
'''
LogUniform prior for nested sampling.
Args:
prior_fct_arg (list): Two-values list with loguniform prior boundaries.
theta (list): Parameter values randomly picked by the nested sampling
Returns:
- Evaluated (float): Evaluated prior
Author: Simon Petrus
'''
arg1 = float(prior_fct_arg[0])
arg2 = float(prior_fct_arg[1])
if arg1 <=0 or arg2 <= 0:
print('WARNING : You cannot use negative priors with "loguniform_prior"')
exit()
return np.exp(np.log(arg1) + theta * (np.log(arg2) - np.log(arg1))) #arg1 * arg2 / ( (arg2 - arg1 ) * theta + arg1)
[docs]
def gaussian_prior(prior_fct_arg, theta):
'''
Gaussian prior for nested sampling.
Args:
prior_fct_arg (list): Two-values list with uniform prior boundaries.
theta (list): Parameter values randomly picked by the nested sampling
Returns:
- Evaluated (float): Evaluated prior
Author: Simon Petrus
'''
arg1 = float(prior_fct_arg[0])
arg2 = float(prior_fct_arg[1])
return arg1 + arg2 * ndtri(theta)