https://github.com/nanhung/pksensi
An R package for applying global sensitivity analysis in physiologically based kinetic modeling
https://github.com/nanhung/pksensi
gnu-mcsim pharmacokinetics r r-package rstats sensitivity sensitivity-analysis
Last synced: 2 months ago
JSON representation
An R package for applying global sensitivity analysis in physiologically based kinetic modeling
- Host: GitHub
- URL: https://github.com/nanhung/pksensi
- Owner: nanhung
- License: lgpl-3.0
- Created: 2018-04-24T12:25:27.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-27T17:35:13.000Z (6 months ago)
- Last Synced: 2025-03-09T03:49:04.325Z (2 months ago)
- Topics: gnu-mcsim, pharmacokinetics, r, r-package, rstats, sensitivity, sensitivity-analysis
- Language: R
- Homepage: https://nanhung.github.io/pksensi/
- Size: 2.42 MB
- Stars: 5
- Watchers: 3
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.Rmd
- License: LICENSE
Awesome Lists containing this project
README
---
output: github_document
---```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```# pksensi
[](https://www.tidyverse.org/lifecycle/#experimental)
[](https://github.com/nanhung/pksensi/actions)
[](https://codecov.io/gh/nanhung/pksensi?branch=master)
**pksensi** implements the global sensitivity analysis workflow to investigate the parameter uncertainty and sensitivity in physiologically based kinetic (PK) models, especially the physiologically based pharmacokinetic/toxicokinetic model with multivariate outputs. The package also provides some functions to check the convergence and sensitivity of model parameters.
Through **pksensi**, you can:
- Run sensitivity analysis for PK models in R with script that were written in C or GNU MCSim.
- Decision support: The output results and visualization tools can be used to easily determine which parameters have "non-influential" effects on the model output and can be fixed in following model calibration.
## Installation
You can install the released version of **pksensi** from [CRAN](https://CRAN.R-project.org) with:
``` r
install.packages("pksensi")
```And the development version from [GitHub](https://github.com/) with:
``` r
# install.packages("remotes")
remotes::install_github("nanhung/pksensi")
```- This package includes a function that can help you install GNU MCSim more easily through the function `mcsim_install()`.
- All updated details can be found in [NEWS.md](https://github.com/nanhung/pksensi/blob/master/NEWS.md).
- **NOTE:** Windows users need to install [Rtools40](https://cran.r-project.org/bin/windows/Rtools/) to compile the model code.
## Workflow
**Note:** The parameter correlation (e.g., V~max~ and K~M~ in metabolism) might be an issue in the global sensitivity analysis. If you have experiment data, suggest using small datasets as a sample in Markov Chain Monte Carlo Simulation. Then, check correlation before conducting the sensitivity analysis. The issue will try to address in the future version.
## Example
This is a basic example of applying **pksensi** in one-compartment pbtk model:
```{r example}
library(pksensi)
```### Step 1. Construct 1-cpt pbtk model
```{r}
pbtk1cpt <- function(t, state, parameters) {
with(as.list(c(state, parameters)), {
dAgutlument = - kgutabs * Agutlument
dAcompartment = kgutabs * Agutlument - ke * Acompartment
dAmetabolized = ke * Acompartment
Ccompartment = Acompartment / vdist * BW;
list(c(dAgutlument, dAcompartment, dAmetabolized),
"Ccompartment" = Ccompartment)
})
}
```### Step 2. Define initial conditions, output time steps and variable
```{r}
initState <- c(Agutlument = 10, Acompartment = 0, Ametabolized = 0)
t <- seq(from = 0.01, to = 24.01, by = 1)
outputs <- c("Ccompartment")
```### Step 3. Generate parameter matrix
#### 3.1. (Optional) Extract parameter value from httk package
```{r, message=FALSE, warning=FALSE}
library(httk)
pars1comp <- (parameterize_1comp(chem.name = "acetaminophen"))
```#### 3.2. Set parameter distributions
```{r}
q <- c("qunif", "qunif", "qunif", "qnorm")
q.arg <- list(list(min = pars1comp$Vdist / 2, max = pars1comp$Vdist * 2),
list(min = pars1comp$kelim / 2, max = pars1comp$kelim * 2),
list(min = pars1comp$kgutabs / 2, max = pars1comp$kgutabs * 2),
list(mean = pars1comp$BW, sd = 5))
```#### 3.3. Create parameter matrix
```{r}
set.seed(1234)
params <- c("vdist", "ke", "kgutabs", "BW")
x <- rfast99(params, n = 200, q = q, q.arg = q.arg, replicate = 1)
```### Step 4. Conduct simulation (will take few minutes with more replications)
```{r}
out <- solve_fun(x, time = t, func = pbtk1cpt, initState = initState, outnames = outputs)
```### Step 5. Uncertainty analysis
```{r fig.alt="pksim plot"}
pksim(out) # Use to compare with "real" data (if any)
```### Step 6. Check and visualize the result of sensitivity analysis
```{r fig.alt="autoplot"}
plot(out) # Visualize result
check(out) # Print result to console
```## Citation
```{r, comment = "", echo = FALSE}
citation(package = "pksensi")
```## Reference
Hsieh NH, Reisfeld B, Bois FY, Chiu WA. [Applying a global sensitivity analysis workflow to improve the computational efficiencies in physiologically-based pharmacokinetic modeling](https://www.frontiersin.org/articles/10.3389/fphar.2018.00588/full). Frontiers in Pharmacology 2018 Jun; 9:588.
Hsieh NH, Reisfeld B, Chiu WA. [pksensi: An R package to apply global sensitivity analysis in physiologically based kinetic modeling](https://doi.org/10.1016/j.softx.2020.100609). SoftwareX 2020 Jul; 12:100609.
Hsieh NH, Bois FY, Tsakalozou E, Ni Z, Yoon M, Sun W, Klein M, Reisfeld B, Chiu WA. [A Bayesian population physiologically based pharmacokinetic absorption modeling approach to support generic drug development: application to bupropion hydrochloride oral dosage forms](https://doi.org/10.1007/s10928-021-09778-5). Journal of Pharmacokinetics and Pharmacodynamics 2021 Sep; 22:1-6.