##----------------------------------------------------------------------------##
## txpExportGui tests
##----------------------------------------------------------------------------##
test_that("We reproduce GUI results", {
# Get expected results from GUI output
resExpected <- read.csv(file.path("guiFiles", "gui_test_results.csv"), check.names = FALSE)
resExpected <- resExpected[order(resExpected$Name), -c(2:5)]
names(resExpected) <- c('score', sapply(strsplit(names(resExpected)[-1], '!'), '[', 1))
##------------------------------##
# Using txpImportGui
##------------------------------##
# Load data and model
expect_warning({
gui1 <- txpImportGui(file.path("guiFiles", "gui_test_data.csv"))
})
# Compute scores
expect_silent({
res1 <- txpCalculateScores(gui1$model, gui1$input)
})
# Compare ToxPi Scores
expect_equal(
txpScores(res1),
resExpected$score,
ignore_attr = TRUE
)
# Compare Slice Scores
expect_equal(
as.data.frame(txpSliceScores(res1, adjusted = FALSE)),
resExpected[,-1],
ignore_attr = TRUE
)
##------------------------------##
# Using output from txpExportGui
##------------------------------##
# Export model, suppress expected warnings about containing negative values
data_exported <- tempfile()
expect_silent({
suppressWarnings(
txpExportGui(
fileName = data_exported,
input = gui1$input,
model = gui1$model,
id.var = 'Name',
fills = gui1$fills
)
)
})
# Load data and model
expect_silent({
gui2 <- txpImportGui(data_exported)
})
# Compute scores
expect_silent({
res2 <- txpCalculateScores(gui2$model, gui2$input)
})
# Compare ToxPi Scores
expect_equal(
txpScores(res2),
resExpected$score,
ignore_attr = TRUE
)
# Compare Slice Scores
expect_equal(
as.data.frame(txpSliceScores(res2, adjusted = FALSE)),
resExpected[,-1],
ignore_attr = TRUE
)
##------------------------------##
# Manually created model
##------------------------------##
# Create model
input <- read.csv(file.path("guiFiles", "gui_test_data.csv"), skip = 40, check.names = FALSE, stringsAsFactors = FALSE)
slices <- TxpSliceList()
nFn <- 10
for ( i in 1:nFn ) {
fn <- switch(
i,
function(x) x, # 1: linear(x)
function(x) as.integer(x != 0), # 2: hit count
function(x) ifelse(x <= 0, NA, -log10(x)), # 3: -log10(x)
function(x) ifelse(x <= 0, NA, -log10(x) + log10(max(x, na.rm = TRUE))), # 4: -log10(x)+log10(max(x))
function(x) ifelse(x <= 0, NA, -log10(x) + 6), # 5: -log10(x)+6
function(x) ifelse(x <= 0, NA, -log(x)), # 6: -ln(x)
function(x) ifelse(x <= 0, NA, log10(x)), # 7: log10(x)
function(x) sqrt(x), # 8: sqrt(x)
function(x) (x - mean(x, na.rm = TRUE))/sd(x, na.rm = TRUE), # 9: zscore(x)
function(x) (x - min(x, na.rm = TRUE))/diff(range(x, na.rm = TRUE)), # 10: uniform(x)
function(x) x # default
)
addSlices <- TxpSliceList(
b = TxpSlice(c("y1a", "y1b"), TxpTransFuncList(fn, fn)),
a = TxpSlice("y1a", TxpTransFuncList(fn)),
d = TxpSlice(c("y2a", "y2b"), TxpTransFuncList(fn, fn)),
c = TxpSlice("y2a", TxpTransFuncList(fn))
)
names(addSlices) <- paste0('Slice', i, c('_1ab', '_1a', '_2ab', '_2a'))
slices <- c(slices, addSlices)
}
expect_warning({
model <- TxpModel(
txpSlices = slices,
txpWeights = rep(c(2,1,2,1), nFn)
)
})
# Compute scores
expect_silent({
res3 <- txpCalculateScores(model, input, negative.value.handling = 'missing')
})
# Compare ToxPi Scores
expect_equal(
txpScores(res3),
resExpected$score,
ignore_attr = TRUE
)
# Compare Slice Scores
expect_equal(
as.data.frame(txpSliceScores(res3, adjusted = FALSE)),
resExpected[,-1],
ignore_attr = TRUE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.