library(topmodel)
library(jsonlite)
data(huagrahuma)
cat("=== huagrahuma 结构(确认变量名)===\n")
print(ls.str(huagrahuma))
parameters <- huagrahuma$parameters topidx <- huagrahuma$topidx delay <- huagrahuma$delay rain <- huagrahuma$rain
ETp <- huagrahuma$ETp
res <- topmodel(parameters, topidx, delay, rain, ETp, verbose = TRUE)
oracle <- list(
parameters = as.numeric(parameters),
topidx_atb = as.numeric(topidx[, 1]),
topidx_Aatb_r = as.numeric(topidx[, 2]),
delay_d = as.numeric(delay[, 1]),
delay_Ad_r = as.numeric(delay[, 2]),
rain = as.numeric(rain),
ETp = as.numeric(ETp),
Q = as.numeric(res$Q),
qo = as.numeric(res$qo),
qs = as.numeric(res$qs),
S = as.numeric(res$S),
fex = as.numeric(res$fex),
Ea = as.numeric(res$Ea)
)
out <- "tests/topmodel_data/oracle.json"
dir.create(dirname(out), recursive = TRUE, showWarnings = FALSE)
writeLines(toJSON(oracle, auto_unbox = TRUE, digits = 17), out)
cat("\n写入", out, "\n")
cat("序列长度:", length(rain), " 参数数:", length(parameters), "\n")
cat("NSE(R 自评, Qsim vs Qobs):", topmodel(parameters, topidx, delay, rain, ETp, Qobs = if (is.null(huagrahuma$Qobs)) NA else huagrahuma$Qobs), "\n")