context("prodStack")
test_that("prodStack, no interactive", {
dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
testClass <- function(obj){
class(obj)[1] == "combineWidgets"
}
listArgs <- list(noarg = list(x = dta, interactive = FALSE, areas = "a"),
areas2 = list(x = dta, interactive = FALSE, areas = c("a", "b"))
)
lapply(listArgs, function(X){
re1 <- do.call(prodStack, X)
expect_true(testClass(re1))
})
})
test_that("prodStack, no interactive return error", {
dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
expect_error(prodStack(dta, interactive = FALSE, compare = "areas"))
})
test_that("prodStack, interactive", {
dta <- readAntares(areas = "all", links = "all", showProgress = FALSE)
VV <- prodStack(dta, interactive = FALSE)
expect_true("htmlwidget" %in% class(VV))
})
test_that("prodStack must work with refStudy, if x and refStudy are antaresDataList, ", {
myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myArea <- "a"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
PS3 <- prodStack(x = myData2, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
resCompare <- antaresProcessing::compare(myData2, myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_true(isTRUE(max(resCompare$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#pb timeZine local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
PS3 <- prodStack(x = myData2, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
expect_true(all.equal(resCompare$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#after DR + 5 hours (no change)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if x is a list of antaresDataList and refStudy an antaresDataList, ", {
myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData3 <- readAntares(areas = c("a", "b", "c"), links = "all", showProgress = FALSE)
myData4 <- readAntares(areas = c("a", "b"), links = "all", showProgress = FALSE)
myArea <- "a"
myDataList <- list(myData4, myData3, myData2)
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
PS1_list <- prodStack(x = myDataList, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
resCompare <- antaresProcessing::compare(myDataList[[3]], myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 3)
all.equal(max(resCompare$areas$GAS), max(dataHtmlWidgetPS$neggas, na.rm = TRUE))
#pb timeZone local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData1$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
myData4$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
myData3$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData3$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
PS1_list <- prodStack(x = myDataList, refStudy = myData1, interactive = FALSE, areas = myArea, dateRange = DR)
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 3)
resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
expect_true(all.equal(resCompare$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#after DR + 5 hours (no edit)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
#no change for myData3
resCompare3 <- antaresProcessing::compare(myData3, myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS1_list, widgetsNumber = 2)
expect_true(all.equal(resCompare3$areas[ time == as.Date(DR)[1] & area == myArea, GAS], dataHtmlWidgetPS$neggas[[2]]))
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if x and refStudy are optsH5, ", {
if (.requireRhdf5_Antares(stopP = FALSE)){
skip_if_not(.runProdStackTest)
suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
optsH5 <- setSimulationPath(pathtemp)
myArea <- "b"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
PS3 <- prodStack(x = optsH5,
refStudy = optsH5,
interactive = FALSE,
areas = myArea,
dateRange = DR)
#check that PS1 == PS2 or PS3 == 0
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_equal(0, max(dataHtmlWidgetPS$totalProduction, na.rm = TRUE))
expect_equal(0, max(dataHtmlWidgetPS$gas, na.rm = TRUE))
# with a new Study H5 test if compare prodStack works
## create a new folder h5
pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
pathNewH5 <- file.path(pathInitial, "testH5")
if (!dir.exists(pathNewH5)){
dir.create(pathNewH5)
}
#write the study
#windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
optsData <- antaresRead::setSimulationPath(path = studyPath)
suppressWarnings(writeAntaresH5(path = pathNewH5, opts = optsData,
overwrite = TRUE, supressMessages = TRUE))
pathNewH5File <- file.path(pathNewH5, list.files(pathNewH5))
.h5Antares_edit_variable(
pathH5 = pathNewH5File,
area = myArea,
timeId = 1:40,
antVar = "LIGNITE",
newValue = 15000
)
optsH5New <- setSimulationPath(path = pathNewH5)
PS3 <- prodStack(x = optsH5New, refStudy = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE)
resOptsH5New <- readAntares(opts = optsH5New, areas = myArea, showProgress = FALSE)
expect_equal(resOptsH5New[time == as.Date(DR)[1], LIGNITE], 15000)
resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
expect_equal(resCompareData[timeId == timeId[40], LIGNITE], -24000)
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_equal(resCompareData[timeId == timeId[40], LIGNITE], -dataHtmlWidgetPS$neglignite[[2]])
#no change after timeID > 40
expect_equal(resCompareData[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS$neglignite[[50]])
}
})
test_that("prodStack must work with refStudy, if x is a list of optsH5 and refStudy an optsH5, ", {
if (.requireRhdf5_Antares(stopP = FALSE)){
skip_if_not(.runProdStackTest)
suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
optsH5 <- setSimulationPath(pathtemp)
# with new Studies H5 test if compare prodStack works
## create new folders h5
pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
listFolderToCreate <- c("testH5v2", "testH5v3", "testH5v4")
for (folder in listFolderToCreate){
pathNewH5 <- file.path(pathInitial, folder)
if (!dir.exists(pathNewH5)){
dir.create(pathNewH5)
}
#write the study
#windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
optsData <- antaresRead::setSimulationPath(path = studyPath)
suppressWarnings(
writeAntaresH5(
path = pathNewH5,
opts = optsData,
overwrite = TRUE,
supressMessages = TRUE)
)
}
myArea <- "b"
pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[2]])
pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
newValueLignite <- 100000
.h5Antares_edit_variable(
pathH5 = pathH5FileToEdit,
area = myArea,
timeId = 1:40,
antVar = "LIGNITE",
newValue = newValueLignite
)
optsList <- list()
antaresDataListH5 <- list()
for (i in 1:length(listFolderToCreate)){
pathOptsI <- file.path(pathInitial, listFolderToCreate[[i]])
optsList[[i]] <- setSimulationPath(path = pathOptsI)
antaresDataListH5[[i]] <- readAntares(areas = myArea)
}
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
PS1 <- prodStack(x = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
PS2 <- prodStack(x = optsList, interactive = FALSE, areas = myArea, dateRange = DR)
PS_List <- prodStack(x = optsList, refStudy = optsH5, interactive = FALSE, areas = myArea, dateRange = DR)
#get the data from the h5 file
antaresDataRef <- readAntares(opts = optsH5, areas = myArea)
expect_equal(max(antaresDataListH5[[2]]$LIGNITE), newValueLignite)
expect_equal(max(antaresDataListH5[[1]]$LIGNITE), max(antaresDataRef$LIGNITE))
expect_equal(max(antaresDataListH5[[3]]$LIGNITE), max(antaresDataRef$LIGNITE))
#get the data from htmlwidget
dataHtmlWidgetPS1 <- .get_data_from_htmlwidget(PS_List, widgetsNumber = 1)
dataHtmlWidgetPS2 <- .get_data_from_htmlwidget(PS_List, widgetsNumber = 2)
#compare data
resCompareData1_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[1]])
resCompareData2_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[2]])
expect_equal(resCompareData1_ref[timeId == timeId[40], LIGNITE], -dataHtmlWidgetPS1$lignite[[2]])
expect_equal(resCompareData2_ref[timeId == timeId[40], LIGNITE], dataHtmlWidgetPS2$lignite[[2]])
#no change after timeID > 40
expect_equal(resCompareData1_ref[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS1$lignite[[50]])
expect_equal(resCompareData2_ref[timeId == timeId[90], LIGNITE], -dataHtmlWidgetPS2$lignite[[50]])
}
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x and refStudy are antaresData, ", {
myData1 <- readAntares(areas = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", showProgress = FALSE)
myArea <- "a"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#for debug, dont compare
# PS3 <- prodStack(
# x = myData2,
# dateRange = DR,
# .runApp = FALSE,
# interactive = TRUE,
# h5requestFiltering = list(areas = myArea))
# res <- PS3$init()
# PS3
# #for debug, refStudy but not interactive
# PS3 <- prodStack(
# x = myData2,
# refStudy = myData1,
# dateRange = DR,
# .runApp = FALSE,
# interactive = FALSE,
# areas = myArea)
# PS3
#MWController
PS3 <- prodStack(
x = myData2,
refStudy = myData1,
dateRange = DR,
.runApp = FALSE,
interactive = TRUE,
h5requestFiltering = list(areas = myArea))
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
#get the data from antaresData
resCompare <- antaresProcessing::compare(myData2, myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_true(isTRUE(max(resCompare$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#pb timeZine local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData1[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500, myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS)))
PS3 <- prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
resCompare <- antaresProcessing::compare(myData1, myData2, method = "diff")
PS3$init()
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_true(all.equal(resCompare[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$neggas[[2]])))
#after DR + 5 hours (no change)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x a list of antaresData and refStudy an antaresData, ", {
myData1 <- readAntares(areas = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", showProgress = FALSE)
myData3 <- readAntares(areas = "all", showProgress = FALSE)
myData4 <- readAntares(areas = "all", showProgress = FALSE)
myDataList <- list(myData2, myData3, myData4)
myArea <- "a"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#MWController
PS3 <- prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
#PS3 <- prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR)
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 3)
expect_equal(PS3$ncol, 2)
expect_equal(PS3$nrow, 2)
#get the data from antaresData
resCompare3_1 <- antaresProcessing::compare(myDataList[[2]], myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
expect_true(isTRUE(max(resCompare3_1$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#pb timeZine local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData3[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData3[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
PS3 <- prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 3)
expect_equal(PS3$ncol, 2)
expect_equal(PS3$nrow, 2)
resCompare3_1 <- antaresProcessing::compare(myDataList[[2]], myData2, method = "diff")
PS3$init()
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
expect_true(all.equal(resCompare3_1[ time == as.Date(DR)[1] & area == myArea, GAS ], - (dataHtmlWidgetPS$gas[[2]])))
#after DR + 5 hours (no change)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is an antaresDataList and refStudy an antaresDataList, ", {
myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myArea <- "a"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#MWController
PS3 <- prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
#get the data from antaresData
resCompare2_1 <- antaresProcessing::compare(myData2, myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 1)
expect_true(isTRUE(max(resCompare2_1$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#pb timeZine local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
PS3 <- prodStack(x = myData2, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
resCompare2_1 <- antaresProcessing::compare(myData1, myData2, method = "diff")
PS3$init()
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 1)
expect_true(all.equal(resCompare2_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS$gas[[2]])))
#after DR + 5 hours (no change)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is a list of antaresDataList and refStudy an antaresDataList , ", {
myData1 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData2 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData3 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myData4 <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myDataList <- list(myData4, myData3, myData2)
myArea <- "a"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#MWController
PS3 <- prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 3)
expect_equal(PS3$ncol, 2)
expect_equal(PS3$nrow, 2)
#get the data from antaresData
resCompare2_1 <- antaresProcessing::compare(myDataList[[3]], myData1, method = "diff")
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 3)
expect_true(isTRUE(max(resCompare2_1$areas$GAS) == max(dataHtmlWidgetPS$neggas, na.rm = TRUE)))
#pb timeZine local (PC, Travis, etc)
for (i in 0:5){
timeEditShift <- lubridate::hours(i)
timeEditMinus <- as.Date(DR[1]) - timeEditShift
timeEditPlus <- as.Date(DR[1]) + timeEditShift
myData2$areas[ (time == timeEditMinus | time == timeEditPlus) & area == myArea, GAS := as.integer(GAS + 2500)]
}
#check console
#myData1[ time == as.Date(DR)[1] & area == myArea, ]$GAS
#myData2[ time == as.Date(DR)[1] & area == myArea, ]$GAS
expect_true(isTRUE(all.equal(myData2$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS, myData1$areas[ time == as.Date(DR)[1] & area == myArea, ]$GAS + 2500)))
PS3 <- prodStack(x = myDataList, refStudy = myData1, areas = myArea, dateRange = DR, .runApp = FALSE, interactive = TRUE)
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 3)
expect_equal(PS3$ncol, 2)
expect_equal(PS3$nrow, 2)
resCompare2_1 <- antaresProcessing::compare(myData1, myData2, method = "diff")
resCompare3_1 <- antaresProcessing::compare(myData1, myData3, method = "diff")
PS3$init()
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3, widgetsNumber = 3)
expect_true(all.equal(resCompare2_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS$gas[[2]])))
#no change for myData3
dataHtmlWidgetPS3 <- .get_data_from_htmlwidget(PS3, widgetsNumber = 2)
expect_true(all.equal(resCompare3_1$areas[ time == as.Date(DR)[1] & area == myArea, GAS ], (dataHtmlWidgetPS3$gas[[2]])))
#after DR + 5 hours (no change)
expect_true(all.equal(0, dataHtmlWidgetPS$neggas[[20]]))
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x, refStudy are optsH5 , ", {
if (.requireRhdf5_Antares(stopP = FALSE)){
skip_if_not(.runProdStackTest)
suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
optsH5 <- setSimulationPath(pathtemp)
myArea <- "b"
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#MWController
# test debug prodStack(x = optsH5, refStudy = optsH5, dateRange = DR, h5requestFiltering = list(areas = myArea, mcYears = 2))
PS3 <- prodStack(x = optsH5,
refStudy = optsH5,
dateRange = DR,
h5requestFiltering = list(areas = myArea, mcYears = 2),
.runApp = FALSE,
interactive = TRUE)
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
#check that PS1 == PS2 or PS3 == 0
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_equal(0, max(dataHtmlWidgetPS$totalProduction, na.rm = TRUE))
expect_equal(0, max(dataHtmlWidgetPS$gas, na.rm = TRUE))
# with a new Study H5 test if compare prodStack works
## create a new folder h5
pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
pathNewH5 <- file.path(pathInitial, "testH5")
if (!dir.exists(pathNewH5)){
dir.create(pathNewH5)
}
#write the study
#windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
optsData <- antaresRead::setSimulationPath(path = studyPath)
suppressWarnings(writeAntaresH5(path = pathNewH5, opts = optsData,
overwrite = TRUE, supressMessages = TRUE))
pathNewH5File <- file.path(pathNewH5, list.files(pathNewH5))
.h5Antares_edit_variable(
pathH5 = pathNewH5File,
area = myArea,
timeId = 1:40,
antVar = "LIGNITE",
newValue = 15000,
mcYear = 2
)
optsH5New <- setSimulationPath(path = pathNewH5File)
PS3 <- prodStack(x = optsH5New,
refStudy = optsH5,
dateRange = DR,
h5requestFiltering = list(areas = myArea, mcYears = 2),
.runApp = FALSE,
interactive = TRUE)
res <- PS3$init()
#TEST non interactive for debug
PS_FInt <- prodStack(x = optsH5New,
refStudy = optsH5,
mcYearh5 = 2,
interactive = FALSE,
areas = myArea,
dateRange = DR)
dataHtmlWidgetPSFint <- .get_data_from_htmlwidget(PS_FInt)
expect_equal(-23000, min(dataHtmlWidgetPSFint$totalProduction, na.rm = TRUE))
expect_equal(0, max(dataHtmlWidgetPSFint$neggas, na.rm = TRUE))
expect_equal(23000, max(dataHtmlWidgetPSFint$neglignite, na.rm = TRUE))
res <- PS3$init()
expect_true(is(PS3, "MWController"))
expect_equal(PS3$ncharts, 1)
expect_equal(PS3$ncol, 1)
expect_equal(PS3$nrow, 1)
resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE, mcYears = 2)
resOptsH5New <- readAntares(opts = optsH5New, areas = myArea, showProgress = FALSE, mcYears = 2)
#timeId for time = "2018-04-24 00:00:00 UTC" ? timeId = 2713
timeIdVal <- 2713
expect_equal(resOptsH5New[timeId == timeIdVal, LIGNITE], 15000)
expect_equal(resOptsH5Old[timeId == timeIdVal, LIGNITE], 38000)
resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
expect_equal(resCompareData[timeId == timeIdVal, LIGNITE], -23000)
dataHtmlWidgetPS <- .get_data_from_htmlwidget(PS3)
expect_equal(resCompareData[timeId == timeIdVal, LIGNITE], -dataHtmlWidgetPS$neglignite[[1]])
#no change after timeID > 40
expect_equal(resCompareData[timeId == (timeIdVal + 90), LIGNITE], -dataHtmlWidgetPS$neglignite[[50]])
}
})
test_that("prodStack must work with refStudy, if interactive is set to TRUE and if x is a list of optsH5 and refStudy optsH5 , ", {
if (.requireRhdf5_Antares(stopP = FALSE)){
skip_if_not(.runProdStackTest)
suppressMessages(writeAntaresH5(pathtemp, opts = opts, overwrite = TRUE))
optsH5 <- setSimulationPath(pathtemp)
# with new Studies H5 test if compare prodStack works
## create new folders h5
pathInitial <- file.path(dirname(pathtemp), basename(pathtemp))
listFolderToCreate <- c("testH5v2", "testH5v3", "testH5v4")
for (folder in listFolderToCreate){
pathNewH5 <- file.path(pathInitial, folder)
if (!dir.exists(pathNewH5)){
dir.create(pathNewH5)
}
#write the study
#windows pb ? pathNewH5 <- gsub("/", "\\", pathNewH5, fixed = TRUE)
optsData <- antaresRead::setSimulationPath(path = studyPath)
suppressWarnings(
writeAntaresH5(
path = pathNewH5,
opts = optsData,
overwrite = TRUE,
supressMessages = TRUE)
)
}
myArea <- "b"
pathH5FolderToEdit <- file.path(pathInitial, listFolderToCreate[[2]])
pathH5FileToEdit <- file.path(pathH5FolderToEdit, list.files(pathH5FolderToEdit))
newValueGAS <- 50000
mcYearToTestList <- c(2, NULL)
for (mcYearToTest in mcYearToTestList){
.h5Antares_edit_variable(
pathH5 = pathH5FileToEdit,
area = myArea,
timeId = 1:40,
antVar = "GAS",
newValue = newValueGAS,
mcYear = mcYearToTest
)
optsList <- list()
antaresDataListH5 <- list()
for (i in 1:length(listFolderToCreate)){
pathOptsI <- file.path(pathInitial, listFolderToCreate[[i]])
optsList[[i]] <- setSimulationPath(path = pathOptsI)
antaresDataListH5[[i]] <- readAntares(areas = myArea, mcYear = mcYearToTest)
}
DR <- c("2018-04-24 00:00:00 UTC", "2018-04-26 00:00:00 UTC")
#first, try with interactive == FALSE
PSListNoInt <- prodStack(x = optsList,
refStudy = optsH5,
interactive = FALSE,
areas = myArea,
dateRange = DR,
mcYearh5 = mcYearToTest)
#get the data from the h5 file
antaresDataRef <- readAntares(opts = optsH5, areas = myArea, mcYears = mcYearToTest)
expect_equal(max(antaresDataListH5[[2]]$GAS), newValueGAS)
expect_equal(max(antaresDataListH5[[1]]$GAS), max(antaresDataRef$GAS))
expect_equal(max(antaresDataListH5[[3]]$GAS), max(antaresDataRef$GAS))
expect_equal(antaresDataListH5[[2]]$`OV. COST`, antaresDataRef$`OV. COST`)
#get the data from htmlwidget
dataHtmlWidgetPS1 <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 1)
dataHtmlWidgetPS2 <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 2)
#compare data
resCompareData1_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[1]])
resCompareData2_ref <- antaresProcessing::compare(x = antaresDataRef, y = antaresDataListH5[[2]])
expect_equal(resCompareData1_ref[timeId == timeId[40], GAS], -dataHtmlWidgetPS1$gas[[2]])
expect_equal(resCompareData2_ref[timeId == timeId[40], GAS], dataHtmlWidgetPS2$gas[[2]])
#second, try without refStudy and interactive == FALSE
PSListNoInt <- prodStack(x = optsList,
dateRange = DR,
areas = myArea,
interactive = FALSE,
mcYearh5 = mcYearToTest)
dataHtmlWidgetPSNoInt <- .get_data_from_htmlwidget(PSListNoInt, widgetsNumber = 2)
expect_gt(max(dataHtmlWidgetPSNoInt$totalProduction, na.rm = TRUE), 100000)
expect_equal(max(dataHtmlWidgetPSNoInt$gas, na.rm = TRUE), 50000)
#thirdly, try without refStudy and interactive == TRUE
PSWORef <- prodStack(x = optsList,
dateRange = DR,
h5requestFiltering = list(areas = myArea,
mcYears = mcYearToTest),
.runApp = FALSE,
interactive = TRUE)
res <- PSWORef$init()
expect_true(is(PSWORef, "MWController"))
expect_equal(PSWORef$ncharts, 3)
expect_equal(PSWORef$ncol, 2)
expect_equal(PSWORef$nrow, 2)
#fourth, MWController with refStudy and interactive == TRUE
# test debug prodStack(x = optsH5, refStudy = optsH5, dateRange = DR, h5requestFiltering = list(areas = myArea, mcYears = 2))
PSWRefI <- prodStack(x = optsList,
refStudy = optsH5,
dateRange = DR,
h5requestFiltering = list(areas = myArea,
mcYears = mcYearToTest),
.runApp = FALSE,
interactive = TRUE)
res <- PSWRefI$init()
expect_true(is(PSWRefI, "MWController"))
expect_equal(PSWRefI$ncharts, 3)
expect_equal(PSWRefI$ncol, 2)
expect_equal(PSWRefI$nrow, 2)
#check that PS1 == PS2 or PSWRefI == 0
dataHtmlWidgetPS31 <- .get_data_from_htmlwidget(PSWRefI, widgetsNumber = 2)
expect_equal(newValueGAS, max(dataHtmlWidgetPS31$totalProduction, na.rm = TRUE))
expect_equal(newValueGAS, max(dataHtmlWidgetPS31$gas, na.rm = TRUE))
dataHtmlWidgetPS21 <- .get_data_from_htmlwidget(PSWRefI, widgetsNumber = 1)
expect_equal(0, max(dataHtmlWidgetPS21$totalProduction, na.rm = TRUE))
expect_equal(0, max(dataHtmlWidgetPS21$gas, na.rm = TRUE))
resOptsH5Old <- readAntares(opts = optsH5, areas = myArea, showProgress = FALSE, mcYears = mcYearToTest)
resOptsH5New <- readAntares(opts = optsList[[2]], areas = myArea, showProgress = FALSE, mcYears = mcYearToTest)
#timeId for time = "2018-04-24 00:00:00 UTC" ? timeId = 2713
timeIdVal <- 2713
expect_equal(resOptsH5New[timeId == timeIdVal, GAS], newValueGAS)
expect_equal(resOptsH5Old[timeId == timeIdVal, GAS], 0)
resCompareData <- antaresProcessing::compare(x = resOptsH5Old, y = resOptsH5New)
expect_equal(resCompareData[timeId == timeIdVal, GAS], newValueGAS)
expect_equal(resCompareData[timeId == timeIdVal, GAS], dataHtmlWidgetPS31$gas[[1]])
#no change after timeID > 40
expect_equal(resCompareData[timeId == (timeIdVal + 90), GAS], dataHtmlWidgetPS31$gas[[50]])
expect_equal(0, dataHtmlWidgetPS21$gas[[1]])
expect_equal(0, dataHtmlWidgetPS21$gas[[50]])
}
}
})
test_that("prodStack, no interactive, ne error with compare main", {
myData <- readAntares(areas = "all", links = "all", showProgress = FALSE)
myApplica <- prodStack(x = myData,
interactive = TRUE,
compare = "main",
.runApp = FALSE)
myApplica$init()
expect_true(is(myApplica, "MWController"))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.