## ----preliminaries, eval=TRUE, results='hide', include=FALSE, echo=FALSE----
options(width=70, useFancyQuotes="UTF-8", prompt=" ", continue="  ")

## ----installCNOR, eval=FALSE, pgf=TRUE, echo=TRUE-------------------
#  if (!requireNamespace("BiocManager", quietly=TRUE))
#      install.packages("BiocManager")
#  if (!requireNamespace("CNORode", quietly=TRUE))
#  	BiocManager::install("CNORode")

## ----installMEIGOR, eval=FALSE--------------------------------------
#  # MEIGOR is deprecated in Bioc in 3.18
#  #BiocManager::install("MEIGOR")
#  if (!requireNamespace("MEIGOR", quietly=TRUE))
#      remotes::install_github("https://github.com/jaegea/MEIGOR/tree/RELEASE_3_18")

## ----installCNORode2, eval=TRUE-------------------------------------
library(CNORode)

## ----quickstart, eval=TRUE, results='hide'--------------------------
	library(CNORode)
	model=readSIF(system.file("extdata", "ToyModelMMB_FeedbackAnd.sif",
		package="CNORode",lib.loc = .libPaths()));
	cno_data=readMIDAS(system.file("extdata", "ToyModelMMB_FeedbackAnd.csv",
		package="CNORode",lib.loc = .libPaths()));
	cnolist=makeCNOlist(cno_data,subfield=FALSE);

## -------------------------------------------------------------------
	ode_parameters=createLBodeContPars(model, LB_n = 1, LB_k = 0.1,
		LB_tau = 0.01, UB_n = 5, UB_k = 0.9, UB_tau = 10, default_n = 3,
		default_k = 0.5, default_tau = 1, opt_n = TRUE, opt_k = TRUE,
		opt_tau = TRUE, random = FALSE)

## -------------------------------------------------------------------
	print(ode_parameters)

## ----label=plotModelSim,include=TRUE,fig=TRUE-----------------------
modelSim=plotLBodeModelSim(cnolist = cnolist, model, ode_parameters,
 	timeSignals=seq(0,2,0.5));

## ----eval=TRUE, results='hide',fig.keep = "last"--------------------
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)
#Visualize initial solution
simulatedData=plotLBodeFitness(cnolist, model,initial_pars)

## ----eval=TRUE, results='hide',fig.keep = "last"--------------------
paramsGA = defaultParametersGA()
paramsGA$maxStepSize = 1
paramsGA$popSize = 50
paramsGA$iter = 100
paramsGA$transfer_function = 2
paramsGA$monitor = FALSE
opt_pars=parEstimationLBode(cnolist,model,ode_parameters=initial_pars,
	paramsGA=paramsGA)

## ----eval=TRUE, results='hide',fig.keep = "last"--------------------
#Visualize fitted solution
simulatedData=plotLBodeFitness(cnolist, model,ode_parameters=opt_pars)

## ----eval=FALSE, results='hide'-------------------------------------
#  
#  requireNamespace("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)
#  #Visualize initial solution
#  
#  fit_result_ess =
#  	parEstimationLBodeSSm(cnolist = cnolist,
#  						  model = model,
#  						  ode_parameters = initial_pars,
#  						  maxeval = 1e5,
#  						  maxtime = 20,
#  						  local_solver = "DHC",
#  						  transfer_function = 3
#  	)
#  #Visualize fitted solution
#  # simulatedData=plotLBodeFitness(cnolist, model,ode_parameters=fit_result_ess)

## ----label=plotInit,include=TRUE,fig=TRUE---------------------------
	simulatedData=plotLBodeFitness(cnolist, model,
								   initial_pars,
								   transfer_function = 3)

## ----label=plotFinalFit_fit,eval = FALSE----------------------------
#  	simulatedData=plotLBodeFitness(cnolist, model,
#  								   ode_parameters=fit_result_ess,
#  								   transfer_function = 3)

## ----eval=FALSE-----------------------------------------------------
#  library(MEIGOR)
#  f_hepato<-getLBodeContObjFunction(cnolist, model, initial_pars, indices=NULL,
#   time = 1, verbose = 0, transfer_function = 2, reltol = 1e-05, atol = 1e-03,
#  maxStepSize = Inf, maxNumSteps = 1e4, maxErrTestsFails = 50, nan_fac = 1)
#  n_pars=length(initial_pars$LB);
#  
#  problem<-list(f=f_hepato, x_L=initial_pars$LB[initial_pars$index_opt_pars],
#  	x_U=initial_pars$UB[initial_pars$index_opt_pars]);
#  
#  #Source a function containing the options used in the CeSSR publication
#   source(system.file("benchmarks","get_paper_settings.R",package="MEIGOR"))
#  #Set max time as 20 seconds per iteration
#  opts<-get_paper_settings(20);
#  Results<-CeSSR(problem,opts,Inf,Inf,3,TRUE,global_save_list=c('cnolist','model',
#  'initial_pars'))

## ----eval=FALSE-----------------------------------------------------
#  library(CellNOptR)
#  library(CNORode)
#  library(MEIGOR)
#  
#  # MacNamara et al. 2012 case study:
#  data(PKN_ToyPB, package="CNORode")
#  data(CNOlist_ToyPB, package="CNORode")
#  
#  # original and preprocessed network
#  plotModel(pknmodel, cnodata)
#  model = preprocessing(data = cnodata, model = pknmodel,
#                        compression = T, expansion = T)
#  plotModel(model, cnodata)
#  plotCNOlist(CNOlist = cnodata)
#  
#  # set initial parameters
#  ode_parameters=createLBodeContPars(model, LB_n = 1, LB_k = 0,
#                                     LB_tau = 0, UB_n = 4, UB_k = 1,
#                                     UB_tau = 1, default_n = 3, default_k = 0.5,
#                                     default_tau = 0.01, opt_n = FALSE, opt_k = TRUE,
#                                     opt_tau = TRUE, random = TRUE)
#  
#  ## Parameter Optimization
#  # essm
#  paramsSSm=defaultParametersSSm()
#  paramsSSm$local_solver = "DHC"
#  paramsSSm$maxtime = 600;
#  paramsSSm$maxeval = Inf;
#  paramsSSm$atol=1e-6;
#  paramsSSm$reltol=1e-6;
#  paramsSSm$nan_fac=0;
#  paramsSSm$dim_refset=30;
#  paramsSSm$n_diverse=1000;
#  paramsSSm$maxStepSize=Inf;
#  paramsSSm$maxNumSteps=10000;
#  transferFun=4;
#  paramsSSm$transfer_function = transferFun;
#  
#  paramsSSm$lambda_tau=0
#  paramsSSm$lambda_k=0
#  paramsSSm$bootstrap=F
#  paramsSSm$SSpenalty_fac=0
#  paramsSSm$SScontrolPenalty_fac=0
#  
#  # run the optimisation algorithm
#  opt_pars=parEstimationLBode(cnodata,model, method="essm",
#                              ode_parameters=ode_parameters, paramsSSm=paramsSSm)
#  plotLBodeFitness(cnolist = cnodata, model = model,
#                   ode_parameters = opt_pars, transfer_function = 4)
#  
#  # 10-fold crossvalidation using T1 data
#  # We use only T1 data for crossvalidation, because data
#  # in the T0 matrix is not independent.
#  # All rows of data in T0 describes the basal condition.
#  
#  # Crossvalidation produce some text in the command window:
#  library(doParallel)
#  registerDoParallel(cores=3)
#  R=crossvalidateODE(CNOlist = cnodata, model = model,
#                     type="datapoint", nfolds=3, parallel = TRUE,
#                     ode_parameters = ode_parameters, paramsSSm = paramsSSm)