## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(echo = TRUE, message=FALSE, eval=FALSE)
require(ubiquity)
require(deSolve)
require(ggplot2)
require(foreach)
require(doParallel)
require(rhandsontable)

## ----eval=FALSE---------------------------------------------------------------
# library(ubiquity)
# fr = workshop_fetch(section="Estimation", overwrite=TRUE)

## ----results="hide", message=FALSE--------------------------------------------
# library(ubiquity)
# system_new(file_name="system.txt", system_file="adapt", overwrite = TRUE)
# cfg = build_system(system_file = "system.txt")

## ----results="hide", message=FALSE--------------------------------------------
# system_fetch_template(cfg, template="Estimation")

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# flowctl = 'estimate'
# archive_results = TRUE
# analysis_name = 'parent_d1030'

## ----results="hide", echo=TRUE------------------------------------------------
# pnames = c('Vp', 'Vt', 'CLp', 'Q')
# cfg = system_select_set(cfg, "default", pnames)

## ----results="hide", echo=TRUE------------------------------------------------
# cfg=system_set_option(cfg, group  = "simulation",
#                            option = "output_times",
#                            seq(0,100,1))

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cfg = system_load_data(cfg, dsname     = "pm_data",
#                             data_file  = system.file("ubinc", "csv",
#                                                      "pm_data.csv",
#                                                      package = "ubiquity"))

## ----results="hide", echo=FALSE-----------------------------------------------
# dataset = read.csv(system.file("ubinc", "csv", "pm_data.csv", package = "ubiquity"))

## ----echo=FALSE, fig.align="center"-------------------------------------------
# rhandsontable(dataset, width=400, height=200)

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cfg = system_clear_cohorts(cfg)

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cohort = list(
#   name         = "dose_10",
#   cf           = list(DOSE      = c(10)),
#   inputs       = NULL,
#   outputs      = NULL,
#   dataset      = "pm_data")
# 

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cohort[["inputs"]][["bolus"]] = list()
# cohort[["inputs"]][["bolus"]][["Mpb"]] = list(TIME=NULL, AMT=NULL)
# cohort[["inputs"]][["bolus"]][["Mpb"]][["TIME"]] = c( 0) # hours
# cohort[["inputs"]][["bolus"]][["Mpb"]][["AMT"]]  = c(10) # mpk
# 

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cohort[["outputs"]][["Parent"]] = list()
# 
# # Mapping to data set
# cohort[["outputs"]][["Parent"]][["obs"]] = list(
#          time           = "TIME",
#          value          = "PT",
#          missing        = -1)
# 
# # Mapping to system file
# cohort[["outputs"]][["Parent"]][["model"]] = list(
#          time           = "hours",
#          value          = "Cpblood",
#          variance       = "1")
# 
# # Plot formatting
# cohort[["outputs"]][["Parent"]][["options"]] = list(
#          marker_color   = "black",
#          marker_shape   = 1,
#          marker_line    = 2 )

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cohort[["outputs"]][["Parent"]][["options"]] = list(
#          marker_color   = "black",
#          marker_shape   = 1,
#          marker_line    = 2 )

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cfg = system_define_cohort(cfg, cohort)

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cohort = list(
#   name         = "dose_30",
#   cf           = list(DOSE      = c(30)),
#   dataset      = "pm_data",
#   inputs       = NULL,
#   outputs      = NULL)
# 
# # Bolus inputs for the cohort
# cohort[["inputs"]][["bolus"]] = list()
# cohort[["inputs"]][["bolus"]][["Mpb"]] = list(TIME=NULL, AMT=NULL)
# cohort[["inputs"]][["bolus"]][["Mpb"]][["TIME"]] = c( 0) # hours
# cohort[["inputs"]][["bolus"]][["Mpb"]][["AMT"]]  = c(30) # mpk
# 
# 
# # Defining Parent output
# cohort[["outputs"]][["Parent"]] = list()
# 
# # Mapping to data set
# cohort[["outputs"]][["Parent"]][["obs"]] = list(
#          time           = "TIME",
#          value          = "PT",
#          missing        = -1)
# 
# # Mapping to system file
# cohort[["outputs"]][["Parent"]][["model"]] = list(
#          time           = "hours",
#          value          = "Cpblood",
#          variance       = "1")
# 
# # Plot formatting
# cohort[["outputs"]][["Parent"]][["options"]] = list(
#          marker_color   = "red",
#          marker_shape   = 2,
#          marker_line    = 2 )
# cfg = system_define_cohort(cfg, cohort)

## ----echo=FALSE, message=FALSE, warning=FALSE, results="hide"-----------------
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "control",
#                              value  = list(trace  = TRUE,
#                                            maxit  = 10,
#                                            REPORT = 10))

## ----echo=TRUE, message=FALSE, warning=FALSE, results="hide"------------------
# pest = system_estimate_parameters(cfg,
#                                   flowctl         = flowctl,
#                                   analysis_name   = analysis_name,
#                                   archive_results = archive_results)

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# cfg=system_set_option(cfg, group  = "simulation",
#                            option = "output_times",
#                            seq(0,100,5))

## ----results="hide", echo=TRUE, warning=FALSE---------------------------------
# erp = system_simulate_estimation_results(pest = pest, cfg = cfg)
# 

## ----results="hide", echo=TRUE, warning=FALSE, fig.align="center", fig.width=2----
# plot_opts = c()
# plot_opts$outputs$Parent$yscale       = 'log'

## ----results="hide", echo=TRUE, warning=FALSE, message=FALSE------------------
# plinfo = system_plot_cohorts(erp, plot_opts, cfg, analysis_name=analysis_name)

## ----echo=FALSE---------------------------------------------------------------
# # Creating a reduced form of the estimation output to save it and use less disk space
# estout = list()
# estout$tc =  plinfo$timecourse$Parent
# estout$op =  plinfo$obs_pred$Parent
# ggsave(filename="Estimation-parent-tc.png", plot=estout$tc, height=4, width=7, units="in", dpi=72)
# ggsave(filename="Estimation-parent-op.png", plot=estout$op, height=4, width=7, units="in", dpi=72)

## ----results="hide", echo=TRUE, eval=FALSE------------------------------------
# cfg = system_rpt_read_template(cfg, template="PowerPoint")
# cfg = system_rpt_estimation(cfg=cfg, analysis_name=analysis_name)
# system_rpt_save_report(cfg=cfg,
#  output_file=file.path("output",paste(analysis_name, "-report.pptx", sep="")))

## ----results="hide", echo=TRUE, eval=FALSE------------------------------------
# cfg = system_rpt_read_template(cfg, template="Word")
# cfg = system_rpt_estimation(cfg=cfg, analysis_name=analysis_name)
# system_rpt_save_report(cfg=cfg,
# output_file=file.path("output",paste(analysis_name, "-report.docx", sep="")))

## ----results="hide", echo=TRUE, eval=FALSE------------------------------------
# pnames = c('Vp',
#            'Vt',
#            'Vm',
#            'CLp',
#            'Q',
#            'CLm',
#            'slope_parent',
#            'slope_metabolite');
# 
# cfg = system_select_set(cfg, "default", pnames)

## ----results="hide", echo=TRUE, eval=FALSE------------------------------------
# cohort = list(
#   name         = "dose_10",
#   cf           = list(DOSE      = c(10)),
#   inputs       = NULL,
#   outputs      = NULL,
#   dataset      = "pm_data")
# 
# 
# # Bolus inputs for the cohort
# cohort[["inputs"]][["bolus"]] = list()
# cohort[["inputs"]][["bolus"]][["Mpb"]] = list(TIME=NULL, AMT=NULL)
# cohort[["inputs"]][["bolus"]][["Mpb"]][["TIME"]] = c( 0) # hours
# cohort[["inputs"]][["bolus"]][["Mpb"]][["AMT"]]  = c(10) # mpk
# 
# 
# # Defining Parent output
# cohort[["outputs"]][["Parent"]] = list()
# 
# # Mapping to data set
# cohort[["outputs"]][["Parent"]][["obs"]] = list(
#          time           = "TIME",
#          value          = "PT",
#          missing        = -1)
# 
# # Mapping to system file
# cohort[["outputs"]][["Parent"]][["model"]] = list(
#          time           = "hours",
#          value          = "Cpblood",
#          variance       = "slope_parent*PRED^2")
# 
# # Plot formatting
# cohort[["outputs"]][["Parent"]][["options"]] = list(
#          marker_color   = "black",
#          marker_shape   = 1,
#          marker_line    = 1 )
# 
# # Defining Metabolite output
# cohort[["outputs"]][["Metabolite"]] = list()
# 
# # Mapping to data set
# cohort[["outputs"]][["Metabolite"]][["obs"]] = list(
#          time           = "TIME",
#          value          = "MT",
#          missing        = -1)
# 
# # Mapping to system file
# cohort[["outputs"]][["Metabolite"]][["model"]] = list(
#          time           = "hours",
#          value          = "Cmblood",
#          variance       = "slope_metabolite*PRED^2")
# 
# # Plot formatting
# cohort[["outputs"]][["Metabolite"]][["options"]] = list(
#          marker_color   = "blue",
#          marker_shape   = 1,
#          marker_line    = 1 )
# 
# cfg = system_define_cohort(cfg, cohort)

## ----eval=FALSE---------------------------------------------------------------
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "method",
#                              value  = "SANN")

## ----eval=FALSE---------------------------------------------------------------
# library(pso)
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "optimizer",
#                              value  = "pso")
# 
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "method",
#                              value  = "psoptim")

## ----eval=FALSE---------------------------------------------------------------
# library(GA)
# 
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "optimizer",
#                              value  = "ga")
# 
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "method",
#                              value  = "ga")
# 
# cfg = system_set_option(cfg, group  = "estimation",
#                              option = "control",
#                              value  = list(maxiter   = 10000,
#                                            optimArgs = list(method  = "Nelder-Mead",
#                                                             maxiter = 1000)))

## ----eval=FALSE---------------------------------------------------------------
# cfg = system_load_data(cfg, dsname     = "nm_pm_data",
#                             data_file  = system.file("ubinc", "csv",
#                                                      "nm_data.csv",
#                                                      package = "ubiquity"))
# cfg = system_clear_cohorts(cfg);

## ----eval=FALSE---------------------------------------------------------------
# filter = list()
# filter$DOSE = c(10, 30)

## ----eval=FALSE---------------------------------------------------------------
# OBSMAP = list()
# OBSMAP$PT = list(variance     = 'slope_parent*PRED^2',
#                  CMT          =  1,
#                  output       = 'Cpblood',
#                  missing      =  -1 )
# 
# OBSMAP$MT = list(variance     = 'slope_metabolite*PRED^2',
#                  CMT          =  2,
#                  output       = 'Cmblood',
#                  missing      =  -1 )

## ----eval=FALSE---------------------------------------------------------------
# INPUTMAP = list()
# INPUTMAP$bolus$Mpb$CMT_NUM             =  1

## ----eval=FALSE---------------------------------------------------------------
# cfg = system_define_cohorts_nm(cfg,
#                                DS       = 'nm_pm_data',
#                                col_ID   = 'ID',   col_CMT  = 'CMT', col_DV   = 'DV',
#                                col_TIME = 'TIME', col_AMT  = 'AMT', col_RATE = 'RATE',
#                                col_EVID = 'EVID', col_GROUP= 'DOSE',
#                                filter   =  filter,
#                                INPUTS   =  INPUTMAP,
#                                OBS      =  OBSMAP,
#                                group    =  FALSE)

## ----echo=FALSE, comment='', message=TRUE, eval=TRUE--------------------------
cat(readLines(system.file("ubinc", "systems","system-adapt.txt", package="ubiquity")), sep="\n")