--- title: "Append a model to another" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{Append a model to another} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} editor_options: chunk_output_type: console --- ```{r, echo=FALSE, warning=FALSE, message=FALSE, results='hide'} EXPORT_PNG <- FALSE ``` This vignette shows how a model can be appended to another. This is particularly useful when appending a PD model to a existing PK model. In this vignette, we'll demonstrate how an effect compartment model can be appended to a 2-compartment model. ### Prerequisite The examples below require the package `campismod`. ```{r echo=TRUE, warning=FALSE, message=FALSE} library(campsismod) ``` ### Load your base PK model The following code will load our reference 2-compartment PK model. ```{r} pk_model <- model_suite$pk$`2cpt_fo` ``` ### Load an effect-compartment model The effect-compartment model can be loaded from the model library as follows: ```{r echo=TRUE, warning=FALSE, message=FALSE} pd_model <- model_suite$pd$effect_cmt_model pd_model ``` This PD model has a variable `PK_CONC`, that needs to be linked with the PK concentration. Therefore, we need to adapt it as follows: ```{r} pd_model <- pd_model %>% replace(Equation("PK_CONC", "A_CENTRAL/VC")) ``` ### Append PD model to PK model Appending the PD model to the PK model is done using the `add` function: ```{r} pkpd_model <- pk_model %>% add(pd_model) pkpd_model ``` ### Simulate our PK/PD model Let's now simulate our PK/PD model: ```{r, eval=EXPORT_PNG} library(campsis) dataset <- Dataset(25) %>% add(Bolus(time=0, amount=1000, compartment=1, ii=12, addl=2)) %>% add(Observations(times=0:36)) results <- pkpd_model %>% simulate(dataset=dataset, seed=1) shadedPlot(results, "CONC") ``` ```{r, eval=EXPORT_PNG} shadedPlot(results, "CONC") ``` ```{r, eval=EXPORT_PNG, echo=FALSE, results='hide'} ggplot2::ggsave(filename="resources/pkpd_model_concentration.png", width=7, height=3, dpi=100) ``` ![PK concentration](resources/pkpd_model_concentration.png) ```{r, eval=EXPORT_PNG} shadedPlot(results, "EFFECT") ``` ```{r, eval=EXPORT_PNG, echo=FALSE, results='hide'} ggplot2::ggsave(filename="resources/pkpd_model_effect.png", width=7, height=3, dpi=100) ``` ![Showing the delayed effect](resources/pkpd_model_effect.png)