An open API service indexing awesome lists of open source software.

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

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 pksensi logo

[![lifecycle](https://img.shields.io/badge/lifecycle-stable-brightgreen.svg)](https://www.tidyverse.org/lifecycle/#experimental)
[![R-CMD-check](https://github.com/nanhung/pksensi/workflows/R-CMD-check/badge.svg)](https://github.com/nanhung/pksensi/actions)
[![Codecov test coverage](https://codecov.io/gh/nanhung/pksensi/branch/master/graph/badge.svg)](https://codecov.io/gh/nanhung/pksensi?branch=master)
![CRAN downloads](https://cranlogs.r-pkg.org/badges/pksensi)

**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

Workflow of sensitivity analysis

**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.