forked from metrumresearchgroup/mrgsolve
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
950 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -15,3 +15,5 @@ Rchecks | |
!package/*.tar.gz | ||
*00_pkg_src | ||
inst/maintenance/unit/tests.md | ||
doc | ||
Meta |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,150 @@ | ||
--- | ||
title: "Event objects" | ||
author: "" | ||
date: "`r Sys.Date()`" | ||
output: | ||
rmarkdown::html_vignette: | ||
toc: true | ||
toc_depth: 1 | ||
number_sections: true | ||
keep_md: true | ||
fig_width: 5 | ||
fig_height: 4 | ||
vignette: > | ||
%\VignetteIndexEntry{Event objects} | ||
%\VignetteEngine{knitr::rmarkdown} | ||
%\VignetteEncoding{UTF-8} | ||
--- | ||
|
||
|
||
```{r setup, echo = FALSE, message = FALSE, warning = FALSE, code = readLines("global.R")} | ||
set.seed(23) | ||
``` | ||
|
||
```{r setup2} | ||
library(mrgsolve) | ||
library(dplyr) | ||
``` | ||
|
||
# Introduction | ||
|
||
Event objects are simple ways to implement PK dosing events into your model | ||
simulation. | ||
|
||
Let's illustrate event objects with a one-compartment, PK model. We read this | ||
model from the `mrgsolve` internal model library. | ||
|
||
```{r,message=FALSE} | ||
mod <- modlib("pk1cmt", end = 216, delta = 0.1) | ||
``` | ||
|
||
# Events | ||
|
||
Events are constructed with the `ev()` function | ||
|
||
```{r} | ||
e <- ev(amt = 100, ii = 24, addl = 6) | ||
``` | ||
|
||
This will implement 100 unit doses every 24 hours for a total of 7 doses. `e` | ||
has class `ev`, but really it is just a data frame | ||
|
||
```{r} | ||
e | ||
``` | ||
|
||
```{r} | ||
as.data.frame(e) | ||
``` | ||
|
||
We can implement this series of doses by passing `e` in as the `events` argument | ||
to `mrgsim` | ||
|
||
```{r} | ||
mod %>% mrgsim(events = e) %>% plot(EV1 + CP ~ time) | ||
``` | ||
|
||
|
||
The events can also be implemented with the `ev` constructor along the | ||
simulation pipeline | ||
|
||
```{r} | ||
mod %>% | ||
ev(amt = 100, ii = 24, addl = 6) %>% | ||
mrgsim %>% | ||
plot(CP ~ time) | ||
``` | ||
|
||
|
||
## Event defaults and expectations | ||
|
||
1. `amt` is required | ||
1. `evid = 0` is forbidden | ||
1. Default `time` is 0 | ||
1. Default `evid` is 1 | ||
1. Default `cmt` is 1 | ||
|
||
Also by default, `rate`, `ss` and `ii` are 0. | ||
|
||
# Combine events | ||
|
||
`mrgsolve` has operators defined that allow you to combine events. Let's first | ||
define some event objects. | ||
|
||
```{r} | ||
e1 <- ev(amt = 500) | ||
e2 <- ev(amt = 250, ii = 24, addl = 4) | ||
e3 <- ev(amt = 500, ii = 24, addl = 0) | ||
e4 <- ev(amt = 250, ii = 24, addl = 4, time = 24) | ||
``` | ||
|
||
|
||
We can combine `e1` and `e3` with a collection operator | ||
|
||
```{r} | ||
c(e1, e4) | ||
``` | ||
|
||
`mrgsolve` also defines a `%then$` operator that lets you execute one event and | ||
`%then%` a second event | ||
```{r} | ||
e3 %then% e2 | ||
``` | ||
|
||
Notice that `e3` has both `ii` and `addl` defined. This is required for | ||
`mrgsolve` to know when to start `e2`. | ||
|
||
|
||
## Combine to create a data set | ||
|
||
We can take several event objects and combine them into a single simulation data | ||
frame with the `as_data_set` function. | ||
|
||
```{r} | ||
e1 <- ev(amt = 100, ii = 24, addl = 6, ID = 1:5) | ||
e2 <- ev(amt = 50, ii = 12, addl = 13, ID = 1:3) | ||
e3 <- ev(amt = 200, ii = 24, addl = 2, ID = 1:2) | ||
``` | ||
|
||
When combined into a data set, we get | ||
* N=5 IDs receiving 100 mg Q24h x7 | ||
* N=3 IDs receiving 50 mg Q12h x 14 | ||
* N=2 IDs receiving 200 mg Q48h x 3 | ||
|
||
```{r} | ||
data <- as_data_set(e1, e2, e3) | ||
data | ||
``` | ||
|
||
To simulate from this data set, we use the `data_set` function. First, let's | ||
load a population PK model | ||
|
||
```{r,message=FALSE} | ||
mod <- modlib("popex") | ||
``` | ||
```{r} | ||
mod %>% data_set(data) %>% mrgsim(end=336) %>% plot("GUT, DV") | ||
``` | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
knitr::opts_chunk$set(message = FALSE, warning = FALSE, comment='.') | ||
options(mrgsolve.soloc = "mrgsolve-builds") |
Oops, something went wrong.