data("simpleExample", package="MEIGOR")
initial_pars = createLBodeContPars(model, LB_n=1, LB_k=0.1, LB_tau=0.01, UB_n=5, UB_k=0.9, UB_tau=10, random=TRUE)
simData = plotLBodeFitness(cnolist, model, initial_pars, reltol=1e-05, atol=1e-03, maxStepSize=0.01)
f_bayesFit <- function(position, params=initial_pars, exp_var=opts$exp_var) {
# convert from log
params$parValues = 10^position
ysim = getLBodeDataSim(cnolist=cnolist, model=model,
ode_parameters=params)
data_as_vec = unlist(cnolist$valueSignals)
sim_as_vec = unlist(ysim)
# set nan (NAs) to 0
sim_as_vec[is.na(sim_as_vec)] = 0
sim_as_vec[is.nan(sim_as_vec)]= 0
return(sum((data_as_vec-sim_as_vec)^2/(2*exp_var^2)))
}
prior_mean = log10(initial_pars$parValues)
prior_var = 10
opts <- list("model"=NULL, "estimate_params"=NULL,"initial_values"=NULL,
"tspan"=NULL, "step_fn"=NULL, "likelihood_fn"=NULL,
"prior_fn"=NULL, "nsteps"=NULL, "use_hessian"=FALSE,
"rtol"=NULL, "atol"=NULL, "norm_step_size"=0.75,
"hessian_period"=25000, "hessian_scale"=0.085,
"sigma_adj_interval"=NULL, "anneal_length"=NULL,
"T_init"=10, "accept_rate_target"=0.3, "sigma_max"=1,
"sigma_min"=0.25, "sigma_step"=0.125, "thermo_temp"=1, "seed"=NULL)
opts$nsteps = 2000
opts$likelihood_fn = f_bayesFit
opts$use_hessian = TRUE
opts$hessian_period = opts$nsteps/10
opts$model = list(parameters=list(name=initial_pars$parNames,
value=initial_pars$parValues))
opts$estimate_params = initial_pars$parValues
opts$exp_var = 0.01
res = runBayesFit(opts)
initial_pars$parValues = cur_params(output=res, options=opts)
Run the code above in your browser using DataLab