caffsim
R package: Simulation of Plasma Caffeine Concentrations by Using Population Pharmacokinetic Model
Simulate plasma caffeine concentrations using population
pharmacokinetic model described in Lee, Kim, Perera, McLachlan and Bae
(2015) doi:10.1007/s00431-015-2581-x and the package was published
doi:10.12793/tcp.2017.25.3.141.
install.pacakges(" devtools" )
devtools :: install_github(" asancpt/caffsim" )
# Simply create single dose dataset
caffsim :: caffPkparam(Weight = 20 , Dose = 200 , N = 20 )
# Simply create multiple dose dataset
caffsim :: caffPkparamMulti(Weight = 20 , Dose = 200 , N = 20 , Tau = 12 )
Create a PK dataset for caffeine single dose
library(caffsim )
MyDataset <- caffPkparam(Weight = 20 , Dose = 200 , N = 20 )
head(MyDataset )
subjid
Tmax
Cmax
AUC
Half_life
CL
V
Ka
Ke
1
0.9858664
15.006075
115.44184
4.594639
1.732474
11.48643
3.2719387
0.1508280
2
3.8148250
7.699503
107.02942
6.354802
1.868645
17.13545
0.5169846
0.1090514
3
0.8826191
12.147005
107.60372
5.491894
1.858672
14.72962
4.0586205
0.1261860
4
0.2567103
13.950749
139.11091
6.730028
1.437702
13.96215
20.7765914
0.1029713
5
1.1563495
8.302007
65.44492
4.587332
3.056005
20.22931
2.6177408
0.1510682
6
1.2026953
9.445008
55.68603
3.130858
3.591565
16.22609
2.0869246
0.2213451
Create a dataset for concentration-time curve
MyConcTime <- caffConcTime(Weight = 20 , Dose = 200 , N = 20 )
head(MyConcTime )
Subject
Time
Conc
1
0.0
0.000000
1
0.1
4.129452
1
0.2
7.174502
1
0.3
9.410497
1
0.4
11.042950
1
0.5
12.225252
Create a concentration-time curve
Create plots for publication (according to the amount of caffeine)
cowplot
package is required
# install.packages("cowplot") # if you don't have it
library(cowplot )
MyPlotPub <- lapply(
c(seq(100 , 800 , by = 100 )),
function (x ) caffPlotMulti(caffConcTime(20 , x , 20 )) +
theme(legend.position = " none" ) +
labs(title = paste0(" Single Dose " , x , " mg" )))
plot_grid(MyPlotPub [[1 ]], MyPlotPub [[2 ]],
MyPlotPub [[3 ]], MyPlotPub [[4 ]],
MyPlotPub [[5 ]], MyPlotPub [[6 ]],
MyPlotPub [[7 ]], MyPlotPub [[8 ]],
labels = LETTERS [1 : 8 ], ncol = 2 , nrow = 4 )
Create a PK dataset for caffeine multiple doses
MyDatasetMulti <- caffPkparamMulti(Weight = 20 , Dose = 200 , N = 20 , Tau = 12 )
head(MyDatasetMulti )
subjid
TmaxS
CmaxS
AUCS
AI
Aavss
Cavss
Cmaxss
Cminss
1
0.9548818
14.35410
78.14388
1.068908
72.79768
6.511990
19.08368
1.230238
2
1.1467783
11.52173
89.29910
1.187191
108.04592
7.441592
16.31939
2.573172
3
0.6768031
16.69770
136.35979
1.250128
124.04012
11.363316
22.85721
4.573316
4
0.7753311
14.44837
119.92576
1.251847
124.46355
9.993813
20.06162
4.036002
5
0.2400863
13.36207
65.42138
1.081913
77.33312
5.451782
15.22267
1.152520
6
0.6535510
10.73536
76.56109
1.183885
107.17374
6.380091
14.06610
2.184791
Create a dataset for concentration-time curve
MyConcTimeMulti <- caffConcTimeMulti(Weight = 20 , Dose = 200 , N = 20 , Tau = 12 , Repeat = 10 )
head(MyConcTimeMulti )
Subject
Time
Conc
1
0.0
0.000000
1
0.1
4.915431
1
0.2
8.455652
1
0.3
10.989413
1
0.4
12.786772
1
0.5
14.045507
Create a concentration-time curve
caffPlotMulti(MyConcTimeMulti )
Create plots for publication (according to dosing interval)
cowplot
package is required
# install.packages("cowplot") # if you don't have it
library(cowplot )
MyPlotMultiPub <- lapply(
c(seq(4 , 32 , by = 4 )),
function (x ) caffPlotMulti(caffConcTimeMulti(20 , 250 , 20 , x , 15 )) +
theme(legend.position = " none" ) +
labs(title = paste0(" q" , x , " hr" )))
plot_grid(MyPlotMultiPub [[1 ]], MyPlotMultiPub [[2 ]],
MyPlotMultiPub [[3 ]], MyPlotMultiPub [[4 ]],
MyPlotMultiPub [[5 ]], MyPlotMultiPub [[6 ]],
MyPlotMultiPub [[7 ]], MyPlotMultiPub [[8 ]],
labels = LETTERS [1 : 8 ], ncol = 2 , nrow = 4 )