def CompPrior(X,MCPar):
prior=np.ones((X.shape[0],1))
log_prior=np.zeros((X.shape[0],1))
for ii in xrange(0,X.shape[0]):
if (MCPar.Prior[0:9]=='Prior_CRN'):
# Uniform prior for Ninh
prior[ii,0] = 1.0/(MCPar.ub[0,MCPar.idx_unif2]-MCPar.lb[0,MCPar.idx_unif2])
log_prior[ii,0]=np.log(prior[ii,0])
# Uniform prior for Age
prior[ii,0] = 1.0/(MCPar.ub[0,MCPar.idx_unif1]-MCPar.lb[0,MCPar.idx_unif1])
log_prior[ii,0]=np.log(prior[ii,0])
if (MCPar.Prior[10]=='1'): # Gaussian prior for erosion rate
prior[ii,0] = prior[ii,0]*norm.pdf(X[ii,MCPar.idx_norm],MCPar.pmu,MCPar.psd)
log_prior[ii,0]+=np.log(prior[ii,0])
else: # Uniform prior for erosion rate
prior[ii,0] = prior[ii,0]*(1.0/(MCPar.ub[0,MCPar.idx_unif0]-MCPar.lb[0,MCPar.idx_unif0]))
log_prior[ii,0]+=np.log(prior[ii,0])
# Check log_p for inf
if np.isinf(log_prior[ii,0])==True:
log_prior[ii,0]=1e-200
else: # Uniform prior for every variable
for jj in xrange(0,MCPar.n):
prior[ii,0] = prior[ii,0]*(1.0/(MCPar.ub[0,jj]-MCPar.lb[0,jj]))
log_prior[ii,0]+=np.log(prior[ii,0])
return prior, log_prior
评论列表
文章目录