R/parEstimationLBodeSSmWeighted.R

Defines functions parEstimationLBodeSSmWeighted

# $Id$

parEstimationLBodeSSmWeighted <-function(cnolist,	model, ode_parameters=NULL,
                                         indices=NULL,	maxeval=Inf,
                                         maxtime=100, ndiverse=NULL,
                                         dim_refset=NULL,	local_solver=NULL,
                                         time=1,	verbose=0,
                                         transfer_function=3, reltol=1e-4,
                                         atol=1e-3,	maxStepSize=Inf,
                                         maxNumSteps=100000,
                                         maxErrTestsFails=50,	nan_fac=1,
                                         lambda_tau=0, lambda_k=0, bootstrap=F,
                                         SSpenalty_fac=0, 
                                         SScontrolPenalty_fac=0,
                                         boot_seed=sample(1:10000,1)){
  
  if (class(cnolist)=="CNOlist"){cnolist = compatCNOlist(cnolist)}
  if(!require(MEIGOR)) stop("MEIGOR (essR) package not found.
                            SSm not available. Install the MEIGOR package and 
                            load it or try the Genetic Algorithm optimiser
                            instead.");
  
  
  checkSignals(CNOlist=cnolist,model=model)
  
  adjMat=incidence2Adjacency(model);
  if(is.null(ode_parameters)){
    ode_parameters=createLBodeContPars(model,random=TRUE);
  }
  if(is.null(indices))indices <- indexFinder(cnolist,model,verbose=FALSE);
  
  #Check if essR is installed
  dummy_f<-function(x){
    return(0);
  }
  problem<-list(f=dummy_f,x_L=rep(0),x_U=c(1));
  opts<-list();
  opts$maxeval=0;
  opts$maxtime=0;
  
  val=essR(problem,opts)
  
  problem=list();
  problem$f <- 
    getLBodeContObjFunctionWeighted(cnolist=cnolist,
                                    model=model,
                                    ode_parameters=ode_parameters,
                                    indices=indices,
                                    time=time,
                                    verbose=verbose,
                                    transfer_function=transfer_function,
                                    reltol=reltol,
                                    atol=atol,
                                    maxStepSize=maxStepSize,
                                    maxNumSteps=maxNumSteps,
                                    maxErrTestsFails=maxErrTestsFails,
                                    nan_fac=nan_fac,
                                    lambda_tau=lambda_tau,
                                    lambda_k=lambda_k,
                                    bootstrap=bootstrap,
                                    SSpenalty_fac=SSpenalty_fac,
                                    SScontrolPenalty_fac=SScontrolPenalty_fac,
                                    boot_seed=boot_seed);
  problem$x_L <- ode_parameters$LB[ode_parameters$index_opt_pars];
  problem$x_U <- ode_parameters$UB[ode_parameters$index_opt_pars];
  problem$x_0<- ode_parameters$parValues[ode_parameters$index_opt_pars];
  problem$int_var =0;
  problem$bin_var =0;
  opts=list();
  opts$maxeval=maxeval;
  opts$maxtime=maxtime;
  if(!is.null(local_solver))opts$local_solver=local_solver;
  if(!is.null(ndiverse))opts$ndiverse=ndiverse;      
  if(!is.null(dim_refset))opts$dim_refset=dim_refset;  
  results=MEIGOR::essR(problem,opts);
  ode_parameters$parValues[ode_parameters$index_opt_pars]=results$xbest;
  ode_parameters$ssm_results=results;
  return(ode_parameters);	
}

Try the CNORfeeder package in your browser

Any scripts or data that you put into this service are public.

CNORfeeder documentation built on Nov. 8, 2020, 11:11 p.m.