-
Notifications
You must be signed in to change notification settings - Fork 8
/
README.Rmd
150 lines (105 loc) · 4.28 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# NMproject <a href='https://tsahota.github.io/NMproject/'><img src='man/figures/logo.svg' align="right" height="139" /></a>
<!-- badges: start -->
[![CRAN status](https://www.r-pkg.org/badges/version/NMproject)](https://CRAN.R-project.org/package=NMproject)
[![R-CMD-check](https://github.com/tsahota/NMproject/workflows/R-CMD-check/badge.svg)](https://github.com/tsahota/NMproject/actions)
[![Codecov test coverage](https://codecov.io/gh/tsahota/NMproject/branch/master/graph/badge.svg)](https://app.codecov.io/gh/tsahota/NMproject?branch=master)
[![Lifecycle: maturing](https://img.shields.io/badge/lifecycle-maturing-blue.svg)](https://lifecycle.r-lib.org/articles/stages.html)
<!-- badges: end -->
Script based 'NONMEM' model development in RStudio intended for intermediate to advanced R users.
- NONMEM code library
- End-to-end script based model development workflows
- Scale to groups of runs and complex workflows
- 100% flexibility through tracked manual edits to model files
- Customisable to multiple infrastructure types
## Prerequisites
- PsN >= 4.4.8
- NONMEM installed with valid license
- RStudio
## Installation
You can install the released version of NMproject from [CRAN](https://CRAN.R-project.org) with:
```{r eval = FALSE}
install.packages("NMproject")
```
To install the latest version of NMproject from [GitHub](https://github.com/):
```{r eval = FALSE}
if(!require("devtools")) install.packages("devtools")
devtools::install_github("tsahota/NMproject")
```
To install a specific release (e.g. v0.5.1) on [GitHub](https://github.com/)
use the following command:
```{r eval = FALSE}
devtools::install_github("tsahota/[email protected]")
```
Load the package with
```{r eval = FALSE}
library(NMproject)
```
## Getting started with NMproject
Two options:
1. Running the
[demo](https://tsahota.github.io/NMproject/articles/articles/NMproject.html#demo-1)
is easiest way to familiarise your with NMproject.
2. Reading the website [vignette](https://tsahota.github.io/NMproject/articles/articles/NMproject.html).
## Code snippets
Use of pipes, `%>%`, make it easy to code sequences of operations to model
objects.
Following snippet adds covariates to model object, `m2`:
- create a separate child control file
- add a covariate relationship to it (using PsN SCM syntax)
- run
```{r eval=FALSE}
m2WT <- m2 %>% child(run_id = "m2WT") %>%
add_cov(param = "CL", cov = "WT", state = "power") %>%
run_nm()
```
Graphical RStudio 'Addins' exist for reviewing the changes that functions like
`add_cov()` make before execution and performing `nm_tran()` checks.
For more complex operations use fully tracked manual edits.
Apply fully customisable diagnostic reports to one or multiple objects with
`nm_render()` like so:
```{r eval = FALSE}
c(m1, m2) %>% nm_render("Scripts/basic_gof.Rmd")
## Saves html diagnostic reports in "Results" directory
```
The template `Scripts/basic_gof.Rmd` can also be run as an R notebook for
interactively customising to your specific model evaluation criteria.
Here's a snippet for producing PPCs and VPCs:
- create a new (child) control stream
- updating initial estimates to final estimates
- convert it to a simulation control file
- run
- generate customised PPCs and VPCs from the outputs
```{r eval=FALSE}
m2s <- m2 %>% child(run_id = "m2s") %>%
update_parameters(m2) %>%
convert_to_simulation(subpr = 50) %>%
run_nm()
m2s %>% nm_render("Scripts/basic_vpc.Rmd")
m2s %>% nm_render("Scripts/basic_ppc.Rmd")
```
Advanced functionality enables groups of runs to be handled with the same
concise syntax (no loops). For example:
- create 5 child runs
- Randomly perturb the initial estimates of \$THETA and \$OMEGA
- run them all in their own subdirectory for tidiness.
```{r eval = FALSE}
m1rep <- m1 %>% child(run_id = 1:5) %>%
init_theta(init = rnorm(init, mean = init, sd = 0.3)) %>%
init_omega(init = runif(init, min = init/2, max = init*2)) %>%
run_in("Models/m1_perturb_inits") %>%
run_nm()
```
See the website [vignette](https://tsahota.github.io/NMproject/articles/articles/NMproject.html) for more
examples