test_that("PKNCAresults summary", {
# Note that generate.conc sets the random seed, so it doesn't have
# to happen here.
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
myresult <- pk.nca(mydata)
# Testing the summarization
mysummary <- summary(myresult)
expect_true(is.data.frame(mysummary))
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("13.8 [2.51]", "."),
cmax = c(".", "0.970 [4.29]"),
tmax = c(".", "3.00 [2.00, 4.00]"),
half.life = c(".", "14.2 [2.79]"),
aucinf.obs = c(".", "20.5 [6.84]"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
),
info = "simple summary of PKNCAresults performs as expected"
)
tmpconc <- generate.conc(2, 1, 0:24)
tmpconc$conc[tmpconc$ID %in% 2] <- 0
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
# Not capturing the warning due to R bug
# https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17122
# expect_warning(myresult <- pk.nca(mydata),
# regexp="Too few points for half-life calculation")
suppressWarnings(myresult <- pk.nca(mydata))
mysummary <- summary(myresult)
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("13.5 [NC]", "."),
cmax = c(".", "1.00 [NC]"),
tmax = c(".", "4.00, n=1"),
half.life = c(".", "16.1, n=1"),
aucinf.obs = c(".", "21.5 [NC]"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects; n: number of measurements included in summary"
),
info = "summary of PKNCAresults with some missing values results in NA for spread"
)
tmpconc <- generate.conc(2, 1, 0:24)
tmpconc$conc <- 0
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
# Not capturing the warning due to R bug
# https://bugs.r-project.org/bugzilla3/show_bug.cgi?id=17122
# expect_warning(myresult <- pk.nca(mydata),
# regexp="Too few points for half-life calculation")
suppressWarnings(myresult <- pk.nca(mydata))
mysummary <- summary(myresult)
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("NC", "."),
cmax = c(".", "NC"),
tmax = c(".", "NC"),
half.life = c(".", "NC"),
aucinf.obs = c(".", "NC"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
),
info = "summary of PKNCAresults without most results gives NC"
)
mysummary <- summary(myresult,
not_requested = "NR",
not_calculated = "NoCalc"
)
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("NoCalc", "NR"),
cmax = c("NR", "NoCalc"),
tmax = c("NR", "NoCalc"),
half.life = c("NR", "NoCalc"),
aucinf.obs = c("NR", "NoCalc"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
),
info = "Summary respects the not.requested.string and not.calculated.string"
)
mysummary <- summary(myresult,
summarize_n = FALSE,
not_requested = "NR",
not_calculated = "NoCalc"
)
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
auclast = c("NoCalc", "NR"),
cmax = c("NR", "NoCalc"),
tmax = c("NR", "NoCalc"),
half.life = c("NR", "NoCalc"),
aucinf.obs = c("NR", "NoCalc"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation"
),
info = "N is optionally omitted"
)
})
test_that("PKNCAresults summary counts N correctly", {
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose, intervals = data.frame(start = 0, end = c(24, Inf), cmax = TRUE))
myresult <- pk.nca(mydata)
# Testing the summarization
mysummary_two_row <- summary(myresult)
expect_warning(
expect_warning(
mysummary_one_row <- summary(myresult, drop_group = c("ID", "end")),
"Some subjects may have more than one result for cmax"
),
"drop.group including start or end may result in incorrect groupings"
)
expect_equal(mysummary_two_row$N, c("2", "2"))
expect_equal(mysummary_one_row$N, "2")
# No subject identifier
tmpconc <- generate.conc(1, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time)
mydata <- PKNCAdata(myconc, mydose, intervals = data.frame(start = 0, end = c(24, Inf), cmax = TRUE))
myresult <- pk.nca(mydata)
mysummary_one_subject <- summary(myresult)
expect_false("N" %in% names(mysummary_one_subject))
expect_warning(
mysummary_one_subject_askn <- summary(myresult, summarize_n = TRUE),
"summarize_n was requested, but no subject column exists"
)
expect_false("N" %in% names(mysummary_one_subject_askn))
})
test_that("dropping `start` and `end` from groups is allowed with a warning.", {
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
myresult <- pk.nca(mydata)
expect_warning(
current_summary <- summary(myresult, drop_group = c("ID", "start")),
regexp = "drop.group including start or end may result", fixed = TRUE
)
expect_false("start" %in% names(current_summary))
})
test_that("summary.PKNCAresults manages exclusions as missing not as non-existent.", {
# Note that generate.conc sets the random seed, so it doesn't have
# to happen here.
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
myresult <- pk.nca(mydata)
myresult_excluded <-
exclude(
myresult,
reason = "testing",
mask = with(
as.data.frame(myresult),
PPTESTCD %in% "auclast" & ID %in% 1
)
)
myresult_excluded2 <-
exclude(
myresult,
reason = "testing",
mask = with(
as.data.frame(myresult),
PPTESTCD %in% "auclast"
)
)
# Testing the summarization
mysummary <- summary(myresult)
mysummary_excluded <- summary(myresult_excluded)
mysummary_excluded2 <- summary(myresult_excluded2)
expect_equal(
mysummary,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("13.8 [2.51]", "."),
cmax = c(".", "0.970 [4.29]"),
tmax = c(".", "3.00 [2.00, 4.00]"),
half.life = c(".", "14.2 [2.79]"),
aucinf.obs = c(".", "20.5 [6.84]"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
),
info = "simple summary of PKNCAresults performs as expected"
)
expect_equal(
mysummary_excluded,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("14.0, n=1", "."),
cmax = c(".", "0.970 [4.29]"),
tmax = c(".", "3.00 [2.00, 4.00]"),
half.life = c(".", "14.2 [2.79]"),
aucinf.obs = c(".", "20.5 [6.84]"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects; n: number of measurements included in summary"
),
info = "summary of PKNCAresults correctly excludes auclast when requested"
)
expect_equal(
mysummary_excluded2,
as_summary_PKNCAresults(
data.frame(
start = 0,
end = c(24, Inf),
treatment = "Trt 1",
N = "2",
auclast = c("NC", "."),
cmax = c(".", "0.970 [4.29]"),
tmax = c(".", "3.00 [2.00, 4.00]"),
half.life = c(".", "14.2 [2.79]"),
aucinf.obs = c(".", "20.5 [6.84]"),
stringsAsFactors = FALSE
),
caption = "auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
),
info = "summary of PKNCAresults correctly excludes all of auclast when requested"
)
})
test_that("print.summary_PKNCAresults works", {
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
myresult <- pk.nca(mydata)
expect_output(
print(summary(myresult)),
paste(
" start end treatment N auclast cmax tmax half.life.*",
" 0 24 Trt 1 2 13.8 \\[2.51\\] . . ..*",
" 0 Inf Trt 1 2 . 0.970 \\[4.29\\] 3.00 \\[2.00, 4.00\\] 14.2 \\[2.79\\].*",
"",
"Caption: auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation",
sep = "\n"
)
)
})
test_that("summary pretty_name control", {
tmpconc <- generate.conc(2, 1, 0:24)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
myresult <- pk.nca(mydata)
d_units_orig <- pknca_units_table(concu = "ng/mL", doseu = "mg", amountu = "mg", timeu = "hr")
d_units_std <-
pknca_units_table(
concu = "ng/mL", doseu = "mg", amountu = "mg", timeu = "hr",
conversions = data.frame(PPORRESU = "ng/mL", PPSTRESU = "mg/mL")
)
mydata_orig <- PKNCAdata(myconc, mydose, units = d_units_orig)
myresult_units_orig <- pk.nca(mydata_orig)
s_plain <- summary(myresult)
s_pretty <- summary(myresult, pretty_names = TRUE)
s_plain_units <- summary(myresult_units_orig, pretty_names = FALSE)
s_pretty_units <- summary(myresult_units_orig)
expect_equal(
names(s_plain),
c("start", "end", "treatment", "N", "auclast", "cmax", "tmax", "half.life", "aucinf.obs")
)
expect_equal(
names(s_pretty),
c(
"Interval Start", "Interval End", "treatment", "N", "AUClast",
"Cmax", "Tmax", "Half-life", "AUCinf,obs"
)
)
expect_equal(
names(s_plain_units),
c(
"start", "end", "treatment", "N", "auclast (hr*ng/mL)", "cmax (ng/mL)",
"tmax (hr)", "half.life (hr)", "aucinf.obs (hr*ng/mL)"
)
)
expect_equal(
names(s_pretty_units),
c(
"Interval Start", "Interval End", "treatment", "N", "AUClast (hr*ng/mL)",
"Cmax (ng/mL)", "Tmax (hr)", "Half-life (hr)", "AUCinf,obs (hr*ng/mL)"
)
)
# Captions use the pretty_names, if requested
expect_equal(
attr(s_plain, "caption"),
"auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects"
)
expect_equal(
attr(s_pretty, "caption"),
"AUClast, Cmax, AUCinf,obs: geometric mean and geometric coefficient of variation; Tmax: median and range; Half-life: arithmetic mean and standard deviation; N: number of subjects"
)
# Default for pretty_names are kept
expect_equal(
names(s_plain),
names(summary(myresult, pretty_names = FALSE))
)
expect_equal(
names(s_pretty_units),
names(summary(myresult_units_orig, pretty_names = TRUE))
)
})
test_that("roundingSummarize", {
expect_error(
roundingSummarize(1, "foo"),
regexp = "foo is not in the summarization instructions from PKNCA.set.summary"
)
PKNCA.set.summary(name = "lambda.z.n.points", description = "not a real parameter", point = mean, spread = sd, rounding = function(x) round(x, 1))
expect_equal(roundingSummarize(1.2345, "lambda.z.n.points"), "1.2")
PKNCA.set.summary(name = "lambda.z.n.points", description = "not a real parameter", point = mean, spread = sd, rounding = list(round = 1))
expect_equal(roundingSummarize(1.2345, "lambda.z.n.points"), "1.2")
# reset it
PKNCA.set.summary(
name = "lambda.z.n.points",
description = "median and range",
point = business.median,
spread = business.range
)
})
test_that("PKNCAresults summary counts N and n", {
tmpconc <- generate.conc(2, 1, 0:6)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
suppressWarnings(
myresult <- pk.nca(mydata)
)
o_summary <- summary(myresult)
expect_equal(o_summary$half.life, c(".", "85.0, n=1"))
expect_equal(
attr(o_summary, "caption"),
"auclast, cmax, aucinf.obs: geometric mean and geometric coefficient of variation; tmax: median and range; half.life: arithmetic mean and standard deviation; N: number of subjects; n: number of measurements included in summary"
)
})
test_that("summary.PKNCAresults drop_param argument works", {
tmpconc <- generate.conc(2, 1, 0:6)
tmpdose <- generate.dose(tmpconc)
myconc <- PKNCAconc(tmpconc, formula = conc ~ time | treatment + ID)
mydose <- PKNCAdose(tmpdose, formula = dose ~ time | treatment + ID)
mydata <- PKNCAdata(myconc, mydose)
suppressWarnings(
myresult <- pk.nca(mydata)
)
o_summary <- summary(myresult)
expect_true("auclast" %in% names(o_summary))
o_summary_noauclast <- summary(myresult, drop_param = "auclast")
expect_false("auclast" %in% names(o_summary_noauclast))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.