From 9d45a2d03ecabf561bde8f5904b0576e70a05329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roland=20Holl=C3=B3s?= Date: Fri, 3 Jan 2020 14:50:03 +0100 Subject: [PATCH] fixing sensi bug --- RBBGCMuso/R/calibration.R | 2 +- RBBGCMuso/R/musoMonte.R | 6 +++++- RBBGCMuso/R/musoSensi.R | 5 ++++- RBBGCMuso/R/postProcString.R | 11 +++++++++++ 4 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 RBBGCMuso/R/postProcString.R diff --git a/RBBGCMuso/R/calibration.R b/RBBGCMuso/R/calibration.R index deb3ae6..7c68c25 100644 --- a/RBBGCMuso/R/calibration.R +++ b/RBBGCMuso/R/calibration.R @@ -109,7 +109,7 @@ optiMuso <- function(measuredData, parameters = NULL, startDate = NULL, modellOut <- numeric(iterations + 1) # single variable solution rmse <- numeric(iterations + 1) - origModellOut <- calibMuso(settings=settings,silent=TRUE, skipSpinup = skipSpinup) + origModellOut <- calibMuso(settings=settings,silent=TRUE, skipSpinup = skipSpinup,postProcString=postProcString) write.csv(x=origModellOut, file=paste0(pretag,1,".csv")) diff --git a/RBBGCMuso/R/musoMonte.R b/RBBGCMuso/R/musoMonte.R index 9e4cd5c..5e36263 100644 --- a/RBBGCMuso/R/musoMonte.R +++ b/RBBGCMuso/R/musoMonte.R @@ -32,6 +32,7 @@ musoMonte <- function(settings=NULL, keepEpc = FALSE, constrains = NULL, skipZero = TRUE, + postProcString=NULL, ...){ @@ -86,6 +87,9 @@ musoMonte <- function(settings=NULL, outVarNames <- sapply(outVars, musoMapping) } + if(!is.null(postProcString)){ + outVarNames <- c(outVarNames,gsub("\\s","",unlist(strsplit(procString,"<-"))[1])) + } parameterNames <- gsub("([\\s]|\\-epc)","",parameters[,1],perl=TRUE) # settings$calibrationPar <- A[,1] #:LATER: @@ -145,7 +149,7 @@ musoMonte <- function(settings=NULL, skipSpinup = skipSpinup, keepEpc = keepEpc, debugging = debugging, - outVars = outVars), error = function (e) NA) + outVars = outVars,postProcString=postProcString), error = function (e) NA) if(length(dim(tmp))>=1){ for(j in 1:numVars){ diff --git a/RBBGCMuso/R/musoSensi.R b/RBBGCMuso/R/musoSensi.R index 49c9d74..674d96b 100644 --- a/RBBGCMuso/R/musoSensi.R +++ b/RBBGCMuso/R/musoSensi.R @@ -31,6 +31,7 @@ musoSensi <- function(monteCarloFile = NULL, plotTitle = "Sensitivity", skipSpinup = TRUE, skipZero = TRUE, + postProcString=NULL, dpi=300){ if(is.null(parameters)){ @@ -48,6 +49,7 @@ musoSensi <- function(monteCarloFile = NULL, # browser() npar <- ncol(M)-1 M <- M[which(!is.na(M[,ncol(M)])),] + M <- M[-1,] y <- M[,(npar+1)] colnames(M) <- gsub("\\.epc","-epc",colnames(M)) M <- M[,colnames(M) %in% parameters[,1]] @@ -93,7 +95,8 @@ musoSensi <- function(monteCarloFile = NULL, fun = fun, varIndex = varIndex, skipSpinup = skipSpinup, - skipZero=skipZero + skipZero=skipZero, + postProcString=postProcString ) M <- cbind(seq_along(M[,1]),M) yInd <- grep("mod.", colnames(M))[varIndex] diff --git a/RBBGCMuso/R/postProcString.R b/RBBGCMuso/R/postProcString.R new file mode 100644 index 0000000..e575e47 --- /dev/null +++ b/RBBGCMuso/R/postProcString.R @@ -0,0 +1,11 @@ +postProcMuso <- function(modelData, procString){ + modelDat <- modelData[,-(1:4)] + cNames <- colnames(modelData) + tocalc <- gsub("(@)(\\d)","modelDat[,\\2]",procString) + newVarName <- gsub("\\s","",unlist(strsplit(procString,"<-"))[1]) + assign(newVarName,eval(parse(text = unlist(strsplit(tocalc,"<-"))[2]))) + modelData <- cbind.data.frame(modelData,eval(parse(text = newVarName))) + colnames(modelData) <- c(cNames,newVarName) + modelData +} +