From 957bb9055da24b0ecac574dc47f2f4b243aa781a Mon Sep 17 00:00:00 2001 From: hollorol Date: Tue, 13 Mar 2018 16:24:03 +0100 Subject: [PATCH] Major update, big improvement. --- RBBGCMuso/DESCRIPTION | 2 +- RBBGCMuso/R/calibMuso.R | 83 +++---- RBBGCMuso/R/changeMuso.R | 6 +- RBBGCMuso/R/getOutput.R | 4 +- RBBGCMuso/R/musoTime.R | 3 +- RBBGCMuso/R/outputMapping.R | 6 +- RBBGCMuso/R/rungetMuso.R | 74 +++---- RBBGCMuso/R/rungettanul.R | 2 +- RBBGCMuso/R/setupMuso.R | 431 +++++++++++++++--------------------- RBBGCMuso/R/spinupMuso.R | 60 ++--- RBBGCMuso/R/sysdata.rda | Bin 3546 -> 21077 bytes RBBGCMuso_0.3.2.0-0.tar.gz | Bin 42745 -> 0 bytes RBBGCMuso_0.4.0.0-0.tar.gz | Bin 0 -> 57733 bytes forarcheologists | 154 +++++++++++++ 14 files changed, 450 insertions(+), 375 deletions(-) delete mode 100644 RBBGCMuso_0.3.2.0-0.tar.gz create mode 100644 RBBGCMuso_0.4.0.0-0.tar.gz diff --git a/RBBGCMuso/DESCRIPTION b/RBBGCMuso/DESCRIPTION index af838a1..88e6627 100644 --- a/RBBGCMuso/DESCRIPTION +++ b/RBBGCMuso/DESCRIPTION @@ -1,6 +1,6 @@ Package: RBBGCMuso Title: An R package for BiomeBGC-MuSo ecosystem modelling -Version: 0.3.3.0-0 +Version: 0.4.0.0-0 Authors@R: person("Roland", "Hollo's", , "hollorol@gmail.com", role = c("aut", "cre")) Description: What the package does (one paragraph). Depends: R (>= 2.10) diff --git a/RBBGCMuso/R/calibMuso.R b/RBBGCMuso/R/calibMuso.R index 9757361..076b1ce 100644 --- a/RBBGCMuso/R/calibMuso.R +++ b/RBBGCMuso/R/calibMuso.R @@ -20,7 +20,7 @@ #' @export -calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logfilename=NULL, keepEpc=FALSE, export=FALSE, silent=FALSE, aggressive=FALSE, leapYear=FALSE){ +calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logfilename=NULL, keepEpc=FALSE, export=FALSE, silent=FALSE, aggressive=FALSE, leapYear=FALSE,keepBinary=FALSE, binayPlace="./"){ ########################################################################## @@ -29,12 +29,12 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf Linuxp <-(Sys.info()[1]=="Linux") ##Copy the variables from settings - inputloc <- settings$inputloc - outputloc <- settings$outputloc + inputLoc <- settings$inputLoc + outputLoc <- settings$outputLoc executable <- settings$executable - ininput <- settings$ininput - epc <- settings$epcinput - calibrationpar <- settings$calibrationpar + iniInput <- settings$iniInput + epc <- settings$epcInput + calibrationPar <- settings$calibrationPar whereAmI<-getwd() @@ -57,7 +57,7 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf ##alma if(silent!=TRUE){ - if(length(grep("(dayout$)|(log$)",list.files(inputloc)))>0){ + if(length(grep("(dayout$)|(log$)",list.files(inputLoc)))>0){ cat(" \n \n WARMING: there is a log or dayout file nearby the ini files, that may cause problemes. \n \n If you want to avoid that possible problemes, please copy the log or dayout files into a save place, and after do a cleanupMuso(), or delete these manually, or run the rungetMuso(), with the agressive=TRUE parameter \n \n") } @@ -65,19 +65,19 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf } if(aggressive==TRUE){ - cleanupMuso(location=outputloc,deep = TRUE) + cleanupMuso(location=outputLoc,deep = TRUE) } ##change the epc file if and only if there are given parameters if(!is.null(parameters)){ - changemulline(filename=epc[2],calibrationpar,parameters) + changemulline(filename=epc[2],calibrationPar,parameters) } ##We change the working directory becase of the model, but we want to avoid sideeffects, so we save the current location and after that we will change everything to it. - ## Set the working directory to the inputloc temporary. - setwd(inputloc) + ## Set the working directory to the inputLoc temporary. + setwd(inputLoc) ##Run the model for the spinup run. @@ -85,19 +85,19 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf if(silent){#silenc mode if(Linuxp){ #In this case, in linux machines - system(paste(executable,ininput[1],"> /dev/null",sep=" ")) + system(paste(executable,iniInput[1],"> /dev/null",sep=" ")) } else { #In windows machines there is a show.output.on.console option - system(paste(executable,ininput[1],sep=" "),show.output.on.console = FALSE) + system(paste(executable,iniInput[1],sep=" "),show.output.on.console = FALSE) } } else { - system(paste(executable,ininput[1],sep=" ")) + system(paste(executable,iniInput[1],sep=" ")) } - logspinup<-list.files(outputloc)[grep("log$",list.files(outputloc))]#load the logfiles + logspinup<-list.files(outputLoc)[grep("log$",list.files(outputLoc))]#load the logfiles if(length(logspinup)==0){ return("Modell Failure")#in that case the modell did not create even a logfile } @@ -105,10 +105,10 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf if(length(logspinup)>1){ spincrash<-TRUE } else { - if(identical(tail(readLines(paste(outputloc,logspinup,sep="/"),-1),1),character(0))){ + if(identical(tail(readLines(paste(outputLoc,logspinup,sep="/"),-1),1),character(0))){ spincrash<-TRUE } else { - spincrash<-(tail(readLines(paste(outputloc,logspinup,sep="/"),-1),1)!=1) + spincrash<-(tail(readLines(paste(outputLoc,logspinup,sep="/"),-1),1)!=1) } } @@ -121,17 +121,17 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf ################################################################# ##for the sake of safe we set the location again - setwd(inputloc) + setwd(inputLoc) if(silent){ if(Linuxp){ - system(paste(executable,ininput[2],"> /dev/null",sep=" ")) + system(paste(executable,iniInput[2],"> /dev/null",sep=" ")) } else { - system(paste(executable,ininput[2],sep=" "),show.output.on.console = FALSE) + system(paste(executable,iniInput[2],sep=" "),show.output.on.console = FALSE) } } else { - system(paste(executable,ininput[2],sep=" ")) + system(paste(executable,iniInput[2],sep=" ")) } @@ -142,10 +142,13 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf "m"=(Reva<-getmonthlyout(settings)), "y"=(Reva<-getyearlyout(settings)) ) + if(keepBinary){ + file.copy(grep("out$",list.files(outputLoc),value=TRUE) + ,file.path(binaryPlace,paste0(stamp(binaryPlace),"-",grep("out$",list.files(outputLoc),value=TRUE)))) + } } - - logfiles <- list.files(outputloc)[grep("log$",list.files(outputloc))]#creating a vector for logfilenames + logfiles <- list.files(outputLoc)[grep("log$",list.files(outputLoc))]#creating a vector for logfilenames ############################################### #############LOG SECTION####################### @@ -153,13 +156,13 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf - perror<-as.numeric(as.vector(lapply(paste(outputloc,logfiles,sep="/"),function(x) tail(readLines(x,-1),1)))) #vector of spinup and normalrun error + perror<-as.numeric(as.vector(lapply(paste(outputLoc,logfiles,sep="/"),function(x) tail(readLines(x,-1),1)))) #vector of spinup and normalrun error if((debugging=="stamplog")|(debugging==TRUE)){#If debugging option turned on #If log or ERROR directory does not exists create it! - dirName<-paste(inputloc,"LOG",sep="") - dirERROR<-paste(inputloc,"ERROR",sep="") + dirName<-paste(inputLoc,"LOG",sep="") + dirERROR<-paste(inputLoc,"ERROR",sep="") if(!dir.exists(dirName)){ dir.create(dirName) @@ -190,8 +193,8 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf } else { epcdir <- dirname(epc[1]) - WRONGEPC<-paste(inputloc,"WRONGEPC",sep="") - EPCS<-paste(inputloc,"EPCS",sep="") + WRONGEPC<-paste(inputLoc,"WRONGEPC",sep="") + EPCS<-paste(inputLoc,"EPCS",sep="") if(!dir.exists(WRONGEPC)){ dir.create(WRONGEPC) @@ -216,11 +219,11 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf if(debugging=="stamplog"){ stampnum<-stamp(dirName) - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } if(errorsign==1){ @@ -229,10 +232,10 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf } else { if(debugging){ if(is.null(logfilename)){ - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName,"/", x, sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName,"/", x, sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) } if(errorsign==1){ @@ -241,10 +244,10 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf } else { - if(inputloc==outputloc){#These are very ugly solutions for a string problem: inputloc: "./", if outputloc equalent of inputloc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + if(inputLoc==outputLoc){#These are very ugly solutions for a string problem: inputLoc: "./", if outputLoc equalent of inputLoc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } if(errorsign==1){ @@ -254,16 +257,16 @@ calibMuso <- function(settings,parameters=NULL, timee="d", debugging=FALSE, logf }} - cleanupMuso(location=outputloc,deep = TRUE) + cleanupMuso(location=outputLoc,deep = TRUE) if(errorsign==1){ return("Modell Failure") } if(timee=="d"){ - colnames(Reva) <- unlist(settings$outputvars[[1]]) + colnames(Reva) <- unlist(settings$outputVars[[1]]) } else { if(timee=="y") - colnames(Reva) <- unlist(settings$outputvars[[2]]) + colnames(Reva) <- unlist(settings$outputVars[[2]]) } diff --git a/RBBGCMuso/R/changeMuso.R b/RBBGCMuso/R/changeMuso.R index 11f7f61..c9c1edc 100644 --- a/RBBGCMuso/R/changeMuso.R +++ b/RBBGCMuso/R/changeMuso.R @@ -6,11 +6,11 @@ #' @author Roland Hollos #' @keywords internal -changemulline <- function(filename,calibrationpar,contents){ +changemulline <- function(filename,calibrationPar,contents){ ##This is the function which is capable change multiple specific lines to other using their row numbers. ##The function uses the previous changspecline function to operate. ##From now changespecline is in the forarcheologist file, because its no longer needed - varnum <- length(calibrationpar) + varnum <- length(calibrationPar) contents <- as.list(contents) if(length(contents)!=varnum) { @@ -20,7 +20,7 @@ changemulline <- function(filename,calibrationpar,contents){ readedFile = readLines(filename,-1) for(i in 1:varnum){ - readedFile[calibrationpar[i]] <- paste(contents[[i]],collapse = " ") + readedFile[calibrationPar[i]] <- paste(contents[[i]],collapse = " ") } writeLines(unlist(readedFile),filename) diff --git a/RBBGCMuso/R/getOutput.R b/RBBGCMuso/R/getOutput.R index 9436a82..24d6486 100644 --- a/RBBGCMuso/R/getOutput.R +++ b/RBBGCMuso/R/getOutput.R @@ -12,9 +12,9 @@ getthespecdata<-function(settings,colnumbers){ } getdailyout<-function(settings){ - binaryname<-paste(settings$inputloc,settings$outputnames,".dayout",sep="") + binaryname<-paste(settings$inputLoc,settings$outputNames,".dayout",sep="") d<-file(binaryname,"rb") - dayoutput<-matrix(readBin(d,"double",size=8,n=(settings$numdata[1])),(settings$numyears*365),byrow=TRUE) + dayoutput<-matrix(readBin(d,"double",size=8,n=(settings$numData[1])),(settings$numYears*365),byrow=TRUE) close(d) return(dayoutput) } diff --git a/RBBGCMuso/R/musoTime.R b/RBBGCMuso/R/musoTime.R index 5318a0b..65f3d83 100644 --- a/RBBGCMuso/R/musoTime.R +++ b/RBBGCMuso/R/musoTime.R @@ -86,6 +86,7 @@ sumDaysOfPeriod <- function(year, periodlen, corrigated=TRUE){ return(days) } else { days <- periodlen*365 + return(days) } } @@ -121,7 +122,7 @@ musoDate <- function(settings,timestep="d",combined=TRUE, corrigated=TRUE, forma - days <- sumDaysOfPeriod(settings$startyear,settings$numyears, corrigated=corrigated) + days <- sumDaysOfPeriod(settings$startyear,settings$numYears, corrigated=corrigated) dates <- matrix(rep(NA,days*3),ncol=3) dates[1,] <- c(1,1,settings$startyear) diff --git a/RBBGCMuso/R/outputMapping.R b/RBBGCMuso/R/outputMapping.R index 6abb859..7e26a19 100644 --- a/RBBGCMuso/R/outputMapping.R +++ b/RBBGCMuso/R/outputMapping.R @@ -9,7 +9,7 @@ updateMusoMapping<-function(output_map_init="output_map_init.c"){ - outputRaw<-grep("\\[",readLines("output_map_init",-1),value=TRUE) + outputRaw<-grep("\\[",readLines(output_map_init,-1),value=TRUE) codes <- as.vector(lapply(outputRaw, function (x) as.numeric(unlist(strsplit(unlist(strsplit(x,"\\["))[2],"\\]"))[1]))) names <- unlist(lapply(outputRaw, function (x) unlist(strsplit(unlist(strsplit(x,">"))[2],";"))[1])) @@ -31,9 +31,9 @@ updateMusoMapping<-function(output_map_init="output_map_init.c"){ musoMapping <- function(code, mapData=NULL){ if(is.null(mapData)){ - return(unlist(mMapping[which(mMapping[,1]==code),2])) #mMapping is package-scoped system variable generated by uudateMusoMapping + return(unlist(mMapping[which(mMapping[,1]==code),2])) #mMapping is package-scoped system variable generated by udateMusoMapping } else { - return(unlist(mapData[which(mapData[,1]==650),2])) + return(unlist(mapData[which(mapData[,1]==code),2])) } } diff --git a/RBBGCMuso/R/rungetMuso.R b/RBBGCMuso/R/rungetMuso.R index 57e91d3..c6bad88 100644 --- a/RBBGCMuso/R/rungetMuso.R +++ b/RBBGCMuso/R/rungetMuso.R @@ -31,12 +31,12 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k Linuxp <-(Sys.info()[1]=="Linux") ##Copy the variables from settings - inputloc <- settings$inputloc - outputloc <- settings$outputloc + inputLoc <- settings$inputLoc + outputLoc <- settings$outputLoc executable <- settings$executable - ininput <- settings$ininput - epc <- settings$epcinput - calibrationpar <- settings$calibrationpar + iniInput <- settings$iniInput + epc <- settings$epcInput + calibrationPar <- settings$calibrationPar whereAmI<-getwd() ############################################################# @@ -48,7 +48,7 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k if(silent!=TRUE){ - if(length(grep("(dayout$)|(log$)",list.files(inputloc)))>0){ + if(length(grep("(dayout$)|(log$)",list.files(inputLoc)))>0){ cat(" \n \n WARMING: there is a log or dayout file nearby the ini files, that may cause problemes. \n \n If you want to avoid that possible problemes, please copy the log or dayout files into a save place, and after do a cleanupMuso(), or delete these manually, or run the rungetMuso(), with the agressive=TRUE parameter \n \n") } @@ -56,13 +56,13 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k } if(aggressive==TRUE){ - cleanupMuso(location=outputloc, deep=TRUE) + cleanupMuso(location=outputLoc, deep=TRUE) } ##We change the working directory becase of the model, but we want to avoid sideeffects, so we save the current location and after that we will change everything to it. - ## Set the working directory to the inputloc temporary. - setwd(inputloc) + ## Set the working directory to the inputLoc temporary. + setwd(inputLoc) ##Run the model for the spinup run. @@ -70,19 +70,19 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k if(silent){#silenc mode if(Linuxp){ #In this case, in linux machines - system(paste(executable,ininput[1],"> /dev/null",sep=" ")) + system(paste(executable,iniInput[1],"> /dev/null",sep=" ")) } else { #In windows machines there is a show.output.on.console option - system(paste(executable,ininput[1],sep=" "),show.output.on.console = FALSE) + system(paste(executable,iniInput[1],sep=" "),show.output.on.console = FALSE) } } else { - system(paste(executable,ininput[1],sep=" ")) + system(paste(executable,iniInput[1],sep=" ")) } - logspinup<-list.files(outputloc)[grep("log$",list.files(outputloc))]#load the logfiles + logspinup<-list.files(outputLoc)[grep("log$",list.files(outputLoc))]#load the logfiles if(length(logspinup)==0){ return("Modell Failure")#in that case the modell did not create even a logfile } @@ -91,10 +91,10 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k if(length(logspinup)>1){ spincrash<-TRUE } else { - if(identical(tail(readLines(paste(outputloc,logspinup,sep="/"),-1),1),character(0))){ + if(identical(tail(readLines(paste(outputLoc,logspinup,sep="/"),-1),1),character(0))){ spincrash<-TRUE } else { - spincrash<-(tail(readLines(paste(outputloc,logspinup,sep="/"),-1),1)!=1) + spincrash<-(tail(readLines(paste(outputLoc,logspinup,sep="/"),-1),1)!=1) } } @@ -107,17 +107,17 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k ################################################################# ##for the sake of safe we set the location again - setwd(inputloc) + setwd(inputLoc) if(silent){ if(Linuxp){ - system(paste(executable,ininput[2],"> /dev/null",sep=" ")) + system(paste(executable,iniInput[2],"> /dev/null",sep=" ")) } else { - system(paste(executable,ininput[2],sep=" "),show.output.on.console = FALSE) + system(paste(executable,iniInput[2],sep=" "),show.output.on.console = FALSE) } } else { - system(paste(executable,ininput[2],sep=" ")) + system(paste(executable,iniInput[2],sep=" ")) } @@ -131,18 +131,18 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k } - logfiles <- list.files(outputloc)[grep("log$",list.files(outputloc))]#creating a vector for logfilenames + logfiles <- list.files(outputLoc)[grep("log$",list.files(outputLoc))]#creating a vector for logfilenames ############################################### #############LOG SECTION####################### ############################################### - perror<-as.numeric(as.vector(lapply(paste(outputloc,logfiles,sep="/"),function(x) tail(readLines(x,-1),1)))) #vector of spinup and normalrun error + perror<-as.numeric(as.vector(lapply(paste(outputLoc,logfiles,sep="/"),function(x) tail(readLines(x,-1),1)))) #vector of spinup and normalrun error if((debugging=="stamplog")|(debugging==TRUE)){#If debugging option turned on ##If log or ERROR directory does not exists create it! - dirName<-paste(inputloc,"LOG",sep="") - dirERROR<-paste(inputloc,"ERROR",sep="") + dirName<-paste(inputLoc,"LOG",sep="") + dirERROR<-paste(inputLoc,"ERROR",sep="") if(!dir.exists(dirName)){ dir.create(dirName) @@ -173,8 +173,8 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k } else { epcdir <- dirname(epc[1]) - WRONGEPC<-paste(inputloc,"WRONGEPC",sep="") - EPCS<-paste(inputloc,"EPCS",sep="") + WRONGEPC<-paste(inputLoc,"WRONGEPC",sep="") + EPCS<-paste(inputLoc,"EPCS",sep="") if(!dir.exists(WRONGEPC)){ dir.create(WRONGEPC) @@ -200,11 +200,11 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k if(debugging=="stamplog"){ stampnum<-stamp(dirName) - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } if(errorsign==1){ @@ -213,10 +213,10 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k } else { if(debugging){ if(is.null(logfilename)){ - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName,"/", x, sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName,"/", x, sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) } if(errorsign==1){ @@ -225,10 +225,10 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k } else { - if(inputloc==outputloc){#These are very ugly solutions for a string problem: inputloc: "./", if outputloc equalent of inputloc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + if(inputLoc==outputLoc){#These are very ugly solutions for a string problem: inputLoc: "./", if outputLoc equalent of inputLoc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } if(errorsign==1){ @@ -238,16 +238,16 @@ rungetMuso <- function(settings, timee="d", debugging=FALSE, logfilename=NULL, k }} - cleanupMuso(location=outputloc) + cleanupMuso(location=outputLoc) if(errorsign==1){ return("Modell Failure") } if(timee=="d"){ - colnames(Reva) <- unlist(settings$outputvars[[1]]) + colnames(Reva) <- unlist(settings$outputVars[[1]]) } else { if(timee=="y") - colnames(Reva) <- unlist(settings$outputvars[[2]]) + colnames(Reva) <- unlist(settings$outputVars[[2]]) } if(leapYear){ diff --git a/RBBGCMuso/R/rungettanul.R b/RBBGCMuso/R/rungettanul.R index 480aaf1..ff38c2d 100644 --- a/RBBGCMuso/R/rungettanul.R +++ b/RBBGCMuso/R/rungettanul.R @@ -14,7 +14,7 @@ ## executable <- settings$executable ## ininput <- settings$ininput ## epc <- settings$epcinput -## calibrationpar <- settings$calibrationpar +## calibrationPar <- settings$calibrationPar ## whereAmI<-getwd() ## ############################################################# diff --git a/RBBGCMuso/R/setupMuso.R b/RBBGCMuso/R/setupMuso.R index de32f83..8204ca8 100644 --- a/RBBGCMuso/R/setupMuso.R +++ b/RBBGCMuso/R/setupMuso.R @@ -5,253 +5,168 @@ #' @author Roland Hollos #' @param parallel Do you want to run multiple modell paralelly, if yes, set this variable to TRUE #' @param executable This parameter stores the place of the modell-executable file. In normal usage, you don't have to be set this, because a RBBgcmuso package contains allways the latest modell executable. In spite of this, if you would like to use this package for modell development or just want to use different models (for example for comparison), you will find it useful -#' @param calibrationpar You may want to change some parameters in your epc file, before you run the modell. You have to select the appropirate modell parameters. You can refence to these with the number of the line in the epc file where the variables are. It indexes from one. You should use a vector for this, like: c(1,5,8) -#' @param outputloc Where should the modell puts its outputs. You should give a location for it via this variable, for example: outputloc="/place/of/the/outputs/" -#' @param inputloc Usually it is the root directory, where you put the inifiles for the modell -#' @param metinput Via metinput parameter, you can tell the modell where are the meteorological files. As default it reads this from the inifiles. -#' @param CO2input Via CO2 parameter, you can tell the modell where are the CO2 data files. As default it reads this from the inifiles. -#' @param plantinput Via planting parameter, you can tell the modell where are the data files, which contains the planting informations. As default it reads this from the inifiles. -#' @param thininput Via thining parameter, you can tell the modell where are the data files, which contains the thining informations. As default it reads this from the inifiles. -#' @param mowinput Via mowing parameter, you can tell the modell where are the data files, which contains the mowing informations. As default it reads this from the inifiles. -#' @param grazinput Via grazing parameter, you can tell the modell where are the data files, which contains the grazing informations. As default it reads this from the inifiles. -#' @param harvinput Via harvesting parameter, you can tell the modell where are the data files, which contains the harvesting informations. As default it reads this from the inifiles. -#' @param plouginput Via ploughing parameter, you can tell the modell where are the data files, which contains the ploughing informations. As default it reads this from the inifiles. -#' @param fertinput Via fertilizing parameter, you can tell the modell where are the fertilizing data files, which contains the fertilizing informations. As default it reads this from the inifiles. -#' @param irrinput Via irrigation parameter, you can tell the modell where are the data files, which contains the irrigation informations. As default it reads this from the inifiles. -#' @param nitinput Via this parameter, you can tell the modell where are the NO2 data files. As default it reads this from the inifiles. -#' @param ininput Via this parameter, you can tell the modell where are the ini files. As default it reads this from the inifiles. -#' @param epcinput Via this parameter, you can tell the modell where are the epc data files. As default it reads this from the inifiles. -#' @usage setupMuso(executable=NULL, parallel = F, calibrationpar =c(1), -#' outputloc=NULL, inputloc=NULL, -#' metinput=NULL, CO2input=NULL, -#' plantinput=NULL, thininput=NULL, -#' mowinput=NULL, grazinput=NULL, -#' harvinput=NULL, plouginput=NULL, -#' fertinput=NULL, irrinput=NULL, -#' nitinput=NULL, ininput=NULL, epcinput=NULL) +#' @param calibrationPar You may want to change some parameters in your epc file, before you run the modell. You have to select the appropirate modell parameters. You can refence to these with the number of the line in the epc file where the variables are. It indexes from one. You should use a vector for this, like: c(1,5,8) +#' @param outputLoc Where should the modell puts its outputs. You should give a location for it via this variable, for example: outputLoc="/place/of/the/outputs/" +#' @param inputLoc Usually it is the root directory, where you put the iniFiles for the modell +#' @param metInput Via metInput parameter, you can tell the modell where are the meteorological files. As default it reads this from the iniFiles. +#' @param CO2Input Via CO2 parameter, you can tell the modell where are the CO2 data files. As default it reads this from the iniFiles. +#' @param plantInput Via planting parameter, you can tell the modell where are the data files, which contains the planting informations. As default it reads this from the iniFiles. +#' @param thinInput Via thining parameter, you can tell the modell where are the data files, which contains the thining informations. As default it reads this from the iniFiles. +#' @param mowInput Via mowing parameter, you can tell the modell where are the data files, which contains the mowing informations. As default it reads this from the iniFiles. +#' @param grazInput Via grazing parameter, you can tell the modell where are the data files, which contains the grazing informations. As default it reads this from the iniFiles. +#' @param harvInput Via harvesting parameter, you can tell the modell where are the data files, which contains the harvesting informations. As default it reads this from the iniFiles. +#' @param plougInput Via ploughing parameter, you can tell the modell where are the data files, which contains the ploughing informations. As default it reads this from the iniFiles. +#' @param fertInput Via fertilizing parameter, you can tell the modell where are the fertilizing data files, which contains the fertilizing informations. As default it reads this from the iniFiles. +#' @param irrInput Via irrigation parameter, you can tell the modell where are the data files, which contains the irrigation informations. As default it reads this from the iniFiles. +#' @param nitInput Via this parameter, you can tell the modell where are the NO2 data files. As default it reads this from the iniFiles. +#' @param iniInput Via this parameter, you can tell the modell where are the ini files. As default it reads this from the iniFiles. +#' @param epcInput Via this parameter, you can tell the modell where are the epc data files. As default it reads this from the iniFiles. +#' @usage setupMuso(executable=NULL, parallel = F, calibrationPar =c(1), +#' outputLoc=NULL, inputLoc=NULL, +#' metInput=NULL, CO2Input=NULL, +#' plantInput=NULL, thinInput=NULL, +#' mowInput=NULL, grazInput=NULL, +#' harvInput=NULL, plougInput=NULL, +#' fertInput=NULL, irrInput=NULL, +#' nitInput=NULL, iniInput=NULL, epcInput=NULL) #' @return The output is a the modell setting list wich contains the following elements: -#' executable, calibrationpar, outputloc, outputname, inputloc, ininput, metinput, epcinput,thininput,CO2input, mowinput, grazinput, harvinput, plouginput, fertinput, irrinput, nitinput, inputfiles, numdata, startyear, numyears, outputvars +#' executable, calibrationPar, outputLoc, outputName, inputLoc, iniInput, metInput, epcInput,thinInput,CO2Input, mowInput, grazInput, harvInput, plougInput, fertInput, irrInput, nitInput, inputFiles, numData, startyear, numYears, outputVars #' @export setupMuso <- function(executable=NULL, parallel = F, - calibrationpar =c(1), - outputloc=NULL, - inputloc=NULL, - metinput=NULL, - CO2input=NULL, - plantinput=NULL, - thininput=NULL, - mowinput=NULL, - grazinput=NULL, - harvinput=NULL, - plouginput=NULL, - fertinput=NULL, - irrinput=NULL, - nitinput=NULL, - ininput=NULL, - epcinput=NULL, - mapData=NULL + calibrationPar =c(1), + outputLoc=NULL, + inputLoc=NULL, + metInput=NULL, + CO2Input=NULL, + plantInput=NULL, + thinInput=NULL, + mowInput=NULL, + grazInput=NULL, + harvInput=NULL, + plougInput=NULL, + fertInput=NULL, + irrInput=NULL, + nitInput=NULL, + iniInput=NULL, + epcInput=NULL, + mapData=NULL, + leapYear=FALSE, + version=5 ){ Linuxp <-(Sys.info()[1]=="Linux") + writep <- 0 + if(is.null(mapData)&version==4){ + mData <- mMapping4 + } + inputParser <- function(string,fileName,counter,value=TRUE){ unlist(strsplit(grep(string,fileName,value=TRUE),"[\ \t]"))[counter] } - - if(is.null(inputloc)){ - inputloc<- "./" - } else { - inp <- unlist(strsplit(inputloc,"")) #This is the charactervector of the given imput location + outMaker <- function(inputVar,grepString,filep){ + tempVar <- eval(parse(text=inputVar)) + if(is.null(tempVar)){ + writep <<- writep+1 + if(filep) + { + tempVar["spinup"] <- paste0(inputLoc,inputParser(string=grepString,fileName=iniFiles$spinup,counter=1,value=TRUE)) + tempVar["normal"] <- paste0(inputLoc,inputParser(string=grepString,fileName=iniFiles$normal,counter=1,value=TRUE)) + } else { + tempVar["spinup"] <- inputParser(string=grepString,fileName=iniFiles$spinup,counter=1,value=TRUE) + tempVar["normal"] <- inputParser(string=grepString,fileName=iniFiles$normal,counter=1,value=TRUE) + + } - if(inp[length(inp)]!="/"){ - inp<-c(inp,"/") - inputloc <- paste(inp,collapse = "") - rm(inp) - }# If inp not ends in / paste one at the end, then make a string, that will be the new inputloc - - ##Example: "a/b/c ==> a/b/c/" + } else { + iniFiles$spinup[grep(grepString,iniFiles$spinup)] <<- paste0(tempVar[1],"\t ",grepString) + + if(length(tempVar)==2){ + iniFiles$normal[grep(" grepString",iniFiles$normal)] <<- paste0(tempVar[2],"\t ",grepString) + } + } + return(tempVar) } - inichangedp <- FALSE - if(is.null(ininput)){ - spinups<-grep("s.ini$",list.files(inputloc),value=TRUE) - normals<-grep("n.ini$",list.files(inputloc),value=TRUE) + if(is.null(inputLoc)){ + inputLoc<- "./"} + + #iniChangedp <- FALSE + + if(is.null(iniInput)){ + spinups<-grep("s.ini$",list.files(inputLoc),value=TRUE) + normals<-grep("n.ini$",list.files(inputLoc),value=TRUE) if(length(spinups)==1){ - ininput[1]<-paste(inputloc,spinups,sep="") - } else {return(print("There are multiple or no spinup files, please choose"))} + iniInput[1]<-file.path(inputLoc,spinups) + } else {stop("There are multiple or no spinup ini files, please choose")} if(length(normals)==1){ - ininput[2]<-paste(inputloc,normals,sep="") - } else {return(print("There are multiple or no normal files, please choose"))} + iniInput[2]<-file.path(inputLoc,normals) + } else {stop("There are multiple or no normal ini files, please choose")} } ##read the ini files for the further changes - inifiles<-lapply(ininput, function (x) readLines(x,-1)) - inifiles[[1]] <- gsub("\\","/", inifiles[[1]],fixed=TRUE) #replacing \ to / - inifiles[[2]] <- gsub("\\","/", inifiles[[2]],fixed=TRUE) #replacing \ to / + iniFiles<-lapply(iniInput, function (x) readLines(x,-1)) + iniFiles[[1]] <- gsub("\\","/", iniFiles[[1]],fixed=TRUE) #replacing \ to / + iniFiles[[2]] <- gsub("\\","/", iniFiles[[2]],fixed=TRUE) #replacing \ to / + names(iniFiles) <- c("spinup","normal") + + + - if(is.null(epcinput)){ - epcflag=TRUE - epcinput[1] <- paste0(inputloc,inputParser(string=" EPC file name",fileName=inifiles[[1]],counter=1,value=TRUE)) - epcinput[2] <- paste0(inputloc,inputParser(string=" EPC file name",fileName=inifiles[[2]],counter=1,value=TRUE)) - } else { - inifiles[[1]][grep(" EPC file name",inifiles[[1]])]<-paste(epcinput[1],"\t EPC file name",sep="") + inputs <- lapply(1:nrow(grepHelper), function (x) { - if(length(epcinput)==2){ - inifiles[[2]][grep(" EPC file name",inifiles[[2]])]<-paste(epcinput[2],"\t EPC file name",sep="") - } - } + outMaker(grepHelper[x,1],grepHelper[x,2],grepHelper[x,3]) + + }) + names(inputs) <- grepHelper$inputVar + ## grepHelper is in sysdata.rda it is a table like this: + ## + ## inputVar string isFile + ## 1 epcInput EPC file name TRUE + ## 2 metInput met file name TRUE + ## 3 CO2Input CO2 file TRUE + ## 4 nitInput N-dep file TRUE + ## 5 thinInput do THINNING FALSE + ## 6 plantInput do PLANTING FALSE + ## 7 mowInput do MOWING FALSE + ## 8 grazInput do GRAZING FALSE + ## 9 harvInput do HARVESTING FALSE + ## 10 plougInput do PLOUGHING FALSE + ## 11 fertInput do FERTILIZING FALSE + ## 12 irrInput do IRRIGATION FALSE + # return(inputs) debug element - if(is.null(metinput)){ - metflag=TRUE - metinput[1] <- unlist(strsplit(grep(" met file name",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - metinput[2] <- unlist(strsplit(grep(" met file name",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep(" met file name",inifiles[[1]])]<-paste(metinput[1],"\t met file name",sep="") - - if(length(metinput)==2){ - inifiles[[2]][grep(" met file name",inifiles[[2]])]<-paste(metinput[2],"\t EPC file name",sep="") - }} - if(is.null(CO2input)){ - CO2flag=TRUE - CO2input[1] <- unlist(strsplit(grep(" CO2 file",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - CO2input[2] <- unlist(strsplit(grep(" CO2 file",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep(" CO2 file",inifiles[[1]])]<-paste(CO2input[1],"\t CO2 file",sep="") - - if(length(CO2input)==2){ - inifiles[[2]][grep(" CO2 file",inifiles[[2]])]<-paste(CO2input[2],"\t CO2 file",sep="") - }} - - if(is.null(nitinput)){ - nitflag=TRUE - nitinput[1] <- unlist(strsplit(grep("N-dep file",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - nitinput[2] <- unlist(strsplit(grep("N-dep file",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("N-dep file",inifiles[[1]])]<-paste(nitinput[1],"N-dep file",sep="N-dep file") - - if(length(epcinput)==2){ - inifiles[[2]][grep("N-dep file",inifiles[[2]])]<-paste(nitinput[2],"N-dep file",sep="") - }} - - if(is.null(thininput)){ - thinflag=TRUE - thininput[1] <- unlist(strsplit(grep("do THINNING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - thininput[2] <- unlist(strsplit(grep("do THINNING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do THINNING",inifiles[[1]])]<-paste(thininput[1],"do THINNING",sep="") - - if(length(thininput)==2){ - inifiles[[2]][grep("do THINNING",inifiles[[2]])]<-paste(thininput[2],"do THINNING",sep="") - }} - - if(is.null(plantinput)){ - plantflag=TRUE - plantinput[1] <- unlist(strsplit(grep("do PLANTING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - plantinput[2] <- unlist(strsplit(grep("do PLANTING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do PLANTING",inifiles[[1]])]<-paste(plantinput[1],"do PLANTING",sep="") - - if(length(plantinput)==2){ - inifiles[[2]][grep("do PLANTING",inifiles[[2]])]<-paste(plantinput[2],"do PLANTING",sep="") - }} - - if(is.null(mowinput)){ - mowflag=TRUE - mowinput[1] <- unlist(strsplit(grep("do MOWING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - mowinput[2] <- unlist(strsplit(grep("do MOWING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do MOWING",inifiles[[1]])]<-paste(mowinput[1],"do MOWING",sep="") - - if(length(mowinput)==2){ - inifiles[[2]][grep("do MOWING",inifiles[[2]])]<-paste(mowinput[2],"do MOWING",sep="") - }} - - if(is.null(grazinput)){ - grazflag=TRUE - grazinput[1] <- unlist(strsplit(grep("do GRAZING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - grazinput[2] <- unlist(strsplit(grep("do GRAZING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do GRAZING",inifiles[[1]])]<-paste(grazinput[1],"do GRAZING",sep="") - - if(length(grazinput)==2){ - inifiles[[2]][grep("do GRAZING",inifiles[[2]])]<-paste(grazinput[2],"do GRAZING",sep="") - }} - - if(is.null(harvinput)){ - harvflag=TRUE - harvinput[1] <- unlist(strsplit(grep("do HARVESTING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - harvinput[2] <- unlist(strsplit(grep("do HARVESTING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do HARVESTING",inifiles[[1]])]<-paste(harvinput[1],"do HARVESTING",sep="") - - if(length(harvinput)==2){ - inifiles[[2]][grep("do HARVESTING",inifiles[[2]])]<-paste(harvinput[2],"do HARVESTING",sep="") - }} - - if(is.null(plouginput)){ - plougflag=TRUE - plouginput[1] <- unlist(strsplit(grep("do PLOUGHING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - plouginput[2] <- unlist(strsplit(grep("do PLOUGHING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do PLOUGHING",inifiles[[1]])]<-paste(plouginput[1],"do PLOUGHING",sep="") - - if(length(plouginput)==2){ - inifiles[[2]][grep("do PLOUGHING",inifiles[[2]])]<-paste(plouginput[2],"do PLOUGHING",sep="") - }} - - if(is.null(fertinput)){ - fertflag=TRUE - fertinput[1] <- unlist(strsplit(grep("do FERTILIZING",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - fertinput[2] <- unlist(strsplit(grep("do FERTILIZING",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do FERTILIZING",inifiles[[1]])]<-paste(fertinput[1],"do FERTILIZING",sep="") - - if(length(fertinput)==2){ - inifiles[[2]][grep("do FERTILIZING",inifiles[[2]])]<-paste(fertinput[2],"do FERTILIZING",sep="") - }} - - if(is.null(irrinput)){ - irrflag=TRUE - irrinput[1] <- unlist(strsplit(grep("do IRRIGATION",inifiles[[1]],value=TRUE),"[\ \t]"))[1] - irrinput[2] <- unlist(strsplit(grep("do IRRIGATION",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - } else { - inifiles[[1]][grep("do IRRIGATION",inifiles[[1]])]<-paste(irrinput[1],"do IRRIGATION",sep="") - - if(length(irrinput)==2){ - inifiles[[2]][grep("do IRRIGATION",inifiles[[2]])]<-paste(irrinput[2],"do IRRIGATION",sep="") - }} - if(is.null(mapData)){ - c<-grep("DAILY_OUTPUT",inifiles[[2]])+1 - numVar<-as.numeric(unlist(strsplit(inifiles[[2]][c],"[\ \t]"))[1]) - dailyVarCodes<-inifiles[[2]][(c+1):(c+numVar)] + c<-grep("DAILY_OUTPUT",iniFiles[[2]])+1 + numVar<-as.numeric(unlist(strsplit(iniFiles[[2]][c],"[\ \t]"))[1]) + dailyVarCodes<-iniFiles[[2]][(c+1):(c+numVar)] dailyVarnames<-lapply(dailyVarCodes, function(x) musoMapping(unlist(strsplit(x,"[\ \t]"))[1])) - c<-grep("ANNUAL_OUTPUT",inifiles[[2]])+1 - numVar<-as.numeric(unlist(strsplit(inifiles[[2]][c],"[\ \t]"))[1]) - annualVarCodes<-inifiles[[2]][(c+1):(c+numVar)] + c<-grep("ANNUAL_OUTPUT",iniFiles[[2]])+1 + numVar<-as.numeric(unlist(strsplit(iniFiles[[2]][c],"[\ \t]"))[1]) + annualVarCodes<-iniFiles[[2]][(c+1):(c+numVar)] annualVarnames<-lapply(annualVarCodes, function(x) musoMapping(unlist(strsplit(x,"[\ \t]"))[1])) - outputvars<-list(dailyVarnames,annualVarnames)} else { + outputVars<-list(dailyVarnames,annualVarnames)} else { - c<-grep("DAILY_OUTPUT",inifiles[[2]])+1 - numVar<-as.numeric(unlist(strsplit(inifiles[[2]][c],"[\ \t]"))[1]) - dailyVarCodes<-inifiles[[2]][(c+1):(c+numVar)] + c<-grep("DAILY_OUTPUT",iniFiles[[2]])+1 + numVar<-as.numeric(unlist(strsplit(iniFiles[[2]][c],"[\ \t]"))[1]) + dailyVarCodes<-iniFiles[[2]][(c+1):(c+numVar)] dailyVarnames<-lapply(dailyVarCodes, function(x) musoMapping(unlist(strsplit(x,"[\ \t]"))[1],mapData)) - c<-grep("ANNUAL_OUTPUT",inifiles[[2]])+1 - numVar<-as.numeric(unlist(strsplit(inifiles[[2]][c],"[\ \t]"))[1]) - annualVarCodes<-inifiles[[2]][(c+1):(c+numVar)] + c<-grep("ANNUAL_OUTPUT",iniFiles[[2]])+1 + numVar<-as.numeric(unlist(strsplit(iniFiles[[2]][c],"[\ \t]"))[1]) + annualVarCodes<-iniFiles[[2]][(c+1):(c+numVar)] annualVarnames<-lapply(annualVarCodes, function(x) musoMapping(unlist(strsplit(x,"[\ \t]"))[1],mapData)) - outputvars<-list(dailyVarnames,annualVarnames) + outputVars<-list(dailyVarnames,annualVarnames) @@ -261,76 +176,78 @@ setupMuso <- function(executable=NULL, if(is.null(executable)){ if(Linuxp){ - executable<-paste(inputloc,"muso",sep="") + executable<-file.path(inputLoc,"muso") } else { - executable<-paste(inputloc,"muso.exe",sep="") + executable<-file.path(inputLoc,"muso.exe") } } else { - file.copy(executable,inputloc) + file.copy(executable,inputLoc) } - outputname <- unlist(strsplit(inifiles[[2]][grep("OUTPUT_CONTROL",inifiles[[2]])+1],"[\ \t]"))[1] - ## outputname <- unlist(strsplit(grep("output",grep("prefix",inifiles[[2]],value=TRUE),value=TRUE),"[\ \t]"))[1] + outputName <- unlist(strsplit(iniFiles[[2]][grep("OUTPUT_CONTROL",iniFiles[[2]])+1],"[\ \t]"))[1] + ## outputName <- unlist(strsplit(grep("output",grep("prefix",iniFiles[[2]],value=TRUE),value=TRUE),"[\ \t]"))[1] ##THIS IS AN UGLY SOLUTION, WHICH NEEDS AN UPGRADE!!! FiXED (2017.09.11) - ## outputname <- unlist(strsplit(grep("prefix for output files",inifiles[[2]],value=TRUE),"[\ \t]"))[1] - if(is.null(outputname)){ - cat("I cannot find outputname, in your default ini file \n Please make sure that the line wich contains the name alse contains the prefix and the outmut keywords!") + ## outputName <- unlist(strsplit(grep("prefix for output files",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + if(is.null(outputName)){ + stop("I cannot find outputName in your default ini file \n Please make sure that the line wich contains the name also contains the prefix and the outmut keywords!") } - ## outputname<-unlist(read.table(ininput[2],skip=93,nrows = 1))[1] + ## outputName<-unlist(read.table(iniInput[2],skip=93,nrows = 1))[1] - if(is.null(outputloc)){ - ## outputloc<-paste((rev(rev(unlist(strsplit(outputname,"/")))[-1])),collapse="/") - outputloc <- dirname(outputname) + if(is.null(outputLoc)){ + ## outputLoc<-paste((rev(rev(unlist(strsplit(outputName,"/")))[-1])),collapse="/") + outputLoc <- dirname(outputName) } - inputfiles<-c(ininput,epcinput,metinput) - numdata<-rep(NA,3) - numyears <- as.numeric(unlist(strsplit(grep("simulation years",inifiles[[2]],value=TRUE),"[\ \t]"))[1]) - ## numyears<-unlist(read.table(ininput[2],skip = 14,nrows = 1)[1]) - numvalues <- as.numeric(unlist(strsplit(grep("number of daily output variables",inifiles[[2]],value=TRUE),"[\ \t]"))[1]) - ## numvalues<-unlist(read.table(ininput[2],skip=102,nrows = 1)[1]) - startyear <- as.numeric(unlist(strsplit(grep("first simulation year",inifiles[[2]],value=TRUE),"[\ \t]"))[1]) - numdata[1]<-numyears*numvalues*365 - numdata[2]<-numyears*numvalues*12 - numdata[3]<-numyears*numvalues + inputFiles<-c(iniInput,epcInput,metInput) + numData<-rep(NA,3) + numYears <- as.numeric(unlist(strsplit(grep("simulation years",iniFiles[[2]],value=TRUE),"[\ \t]"))[1]) + ## numYears<-unlist(read.table(iniInput[2],skip = 14,nrows = 1)[1]) + numValues <- as.numeric(unlist(strsplit(grep("number of daily output variables",iniFiles[[2]],value=TRUE),"[\ \t]"))[1]) + ## numValues will be replaced to numVar + ## numValues<-unlist(read.table(iniInput[2],skip=102,nrows = 1)[1]) + startyear <- as.numeric(unlist(strsplit(grep("first simulation year",iniFiles[[2]],value=TRUE),"[\ \t]"))[1]) + numData[1] <- numValues * sumDaysOfPeriod(startyear,numYears,corrigated=leapYear) + + numData[2] <- numYears * numValues*12 + numData[3] <- numYears * numValues ##Writing out changed ini-file - writeLines(inifiles[[1]],ininput[1]) - writeLines(inifiles[[2]],ininput[2]) + writeLines(iniFiles[[1]],iniInput[1]) + writeLines(iniFiles[[2]],iniInput[2]) settings = list(executable = executable, - calibrationpar = calibrationpar, - outputloc=outputloc, - outputnames=outputname, - inputloc=inputloc, - ininput=ininput, - metinput=metinput, - epcinput=epcinput, - thininput=thininput, - CO2input=CO2input, - mowinput=mowinput, - grazinput=grazinput, - harvinput=harvinput, - plouginput=plouginput, - fertinput=fertinput, - irrinput=irrinput, - nitinput=nitinput, - inputfiles=inputfiles, - numdata=numdata, + calibrationPar = calibrationPar, + outputLoc=outputLoc, + outputNames=outputName, + inputLoc=inputLoc, + iniInput=iniInput, + metInput=metInput, + epcInput=epcInput, + thinInput=thinInput, + CO2Input=CO2Input, + mowInput=mowInput, + grazInput=grazInput, + harvInput=harvInput, + plougInput=plougInput, + fertInput=fertInput, + irrInput=irrInput, + nitInput=nitInput, + inputFiles=inputFiles, + numData=numData, startyear=startyear, - numyears=numyears, - outputvars=outputvars + numYears=numYears, + outputVars=outputVars ) - if(!(epcflag&CO2flag&nitflag&thinflag&plantflag&mowflag&grazflag&harvflag&plougflag&fertflag&irrflag)){ - writeLines(inifiles[[1]],ininput[[1]]) - if(epcinput[1]!=epcinput[2]){ - writeLines(inifiles[[2]],ininput[[2]]) + if(writep!=nrow(grepHelper)){ + writeLines(iniFiles[[1]],iniInput[[1]]) + if(epcInput[1]!=epcInput[2]){ #Change need here + writeLines(iniFiles[[2]],iniInput[[2]]) } } return(settings) diff --git a/RBBGCMuso/R/spinupMuso.R b/RBBGCMuso/R/spinupMuso.R index 4cba8b1..60e5c58 100644 --- a/RBBGCMuso/R/spinupMuso.R +++ b/RBBGCMuso/R/spinupMuso.R @@ -23,12 +23,12 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N Linuxp <-(Sys.info()[1]=="Linux") ##Copy the variables from settings - inputloc <- settings$inputloc - outputloc <- settings$outputloc + inputLoc <- settings$inputLoc + outputLoc <- settings$outputLoc executable <- settings$executable - ininput <- settings$ininput - epc <- settings$epcinput - calibrationpar <- settings$calibrationpar + iniInput <- settings$iniInput + epc <- settings$epcInput + calibrationPar <- settings$calibrationPar whereAmI<-getwd() @@ -39,22 +39,22 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N ##Sometimes a bug occure due to logfiles and controlfiles in the input loc directory if(silent!=TRUE){ - if(length(grep("(dayout$)|(log$)",list.files(inputloc)))>0){ + if(length(grep("(dayout$)|(log$)",list.files(inputLoc)))>0){ cat(" \n \n WARMING: there is a log or dayout file nearby the ini files, that may cause problemes. \n \n If you want to avoid that possible problemes, please copy the log or dayout files into a save place, and after do a cleanupMuso(), or delete these manually, or run the rungetMuso(), with the agressive=TRUE parameter \n \n")}} ##With the aggressive option every unneeded file will deleted if(aggressive==TRUE){ - cleanupMuso(location=outputloc)} + cleanupMuso(location=outputLoc)} ##change the epc file if and only if there are given parameters if(!is.null(parameters)){ - changemulline(filename=epc[1], calibrationpar, parameters)} + changemulline(filename=epc[1], calibrationPar, parameters)} ##We change the working directory becase of the model, but we want to avoid sideeffects, so we save the current location and after that we will change everything to it. - ## Set the working directory to the inputloc temporary. - setwd(inputloc) + ## Set the working directory to the inputLoc temporary. + setwd(inputLoc) ##Run the spinup @@ -62,22 +62,22 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N if(silent){#silenc mode if(Linuxp){ #In this case, in linux machines - system(paste(executable,ininput[1],"> /dev/null",sep=" ")) + system(paste(executable,iniInput[1],"> /dev/null",sep=" ")) } else { #In windows machines there is a show.output.on.console option - system(paste(executable,ininput[1],sep=" "),show.output.on.console = FALSE)} + system(paste(executable,iniInput[1],sep=" "),show.output.on.console = FALSE)} } else { - system(paste(executable,ininput[1],sep=" "))} + system(paste(executable,iniInput[1],sep=" "))} ############################################### #############LOG SECTION####################### ############################################### - logspinup<-list.files(outputloc)[grep("log$",list.files(outputloc))] - spincrash<-tail(readLines(paste(outputloc,logspinup,sep="/"),-1),1)==0 - logfiles <- list.files(outputloc)[grep("log$",list.files(outputloc))] + logspinup<-list.files(outputLoc)[grep("log$",list.files(outputLoc))] + spincrash<-tail(readLines(paste(outputLoc,logspinup,sep="/"),-1),1)==0 + logfiles <- list.files(outputLoc)[grep("log$",list.files(outputLoc))] - dirName<-paste(inputloc,"/LOG",sep="") - dirERROR<-paste(inputloc,"/ERROR",sep="") + dirName<-paste(inputLoc,"/LOG",sep="") + dirERROR<-paste(inputLoc,"/ERROR",sep="") if(!dir.exists(dirName)){ dir.create(dirName)} @@ -99,8 +99,8 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N } else { epcdir <- dirname(epc[1]) - WRONGEPC<-paste(inputloc,"WRONGEPC",sep="") - EPCS<-paste(inputloc,"EPCS",sep="") + WRONGEPC<-paste(inputLoc,"WRONGEPC",sep="") + EPCS<-paste(inputLoc,"EPCS",sep="") if(!dir.exists(WRONGEPC)){ dir.create(WRONGEPC) @@ -126,11 +126,11 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N if(debugging=="stamplog"){ stampnum<-stamp(dirName) - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",(stampnum+1),"-",x,sep=""))) } if(errorsign==1){ @@ -139,10 +139,10 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N } else { if(debugging){ if(is.null(logfilename)){ - if(inputloc==outputloc){ - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName,"/", x, sep=""))) + if(inputLoc==outputLoc){ + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName,"/", x, sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName,"/", x, sep=""))) } if(errorsign==1){ @@ -151,10 +151,10 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N } else { - if(inputloc==outputloc){#These are very ugly solutions for a string problem: inputloc: "./", if outputloc equalent of inputloc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + if(inputLoc==outputLoc){#These are very ugly solutions for a string problem: inputLoc: "./", if outputLoc equalent of inputLoc, it ends with "/", the string manipulation can not handle this. The better solution is easy, but I dont have enough time(Roland Hollo's) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep=""), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } else { - lapply( logfiles, function (x) file.rename(from=paste(outputloc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) + lapply( logfiles, function (x) file.rename(from=paste(outputLoc,x, sep="/"), to=paste(dirName, "/",logfilename,"-",x,sep=""))) } if(errorsign==1){ @@ -164,7 +164,7 @@ spinupMuso <- function(settings, parameters=NULL, debugging=FALSE, logfilename=N }} - cleanupMuso(location=outputloc) + cleanupMuso(location=outputLoc) if(errorsign==1){ diff --git a/RBBGCMuso/R/sysdata.rda b/RBBGCMuso/R/sysdata.rda index 0c15c68a63fd08b23d129a4b6150ad0c0a9beca3..1136e266055b0cd849855d2d9cd7ed33958e69d6 100644 GIT binary patch literal 21077 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 LF~GJyT-N$GRs&vL diff --git a/RBBGCMuso_0.3.2.0-0.tar.gz b/RBBGCMuso_0.3.2.0-0.tar.gz deleted file mode 100644 index a281e7872f19241519ab2cc169d8ce32bd5f6d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42745 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 a/b/c/" + + + + + + if(is.null(epcInput)){ + epcflag=TRUE + epcInput[1] <- paste0(inputLoc,inputParser(string=" EPC file name",fileName=iniFiles[[1]],counter=1,value=TRUE)) + epcInput[2] <- paste0(inputLoc,inputParser(string=" EPC file name",fileName=iniFiles[[2]],counter=1,value=TRUE)) + } else { + iniFiles[[1]][grep(" EPC file name",iniFiles[[1]])]<-paste(epcInput[1],"\t EPC file name",sep="") + + if(length(epcInput)==2){ + iniFiles[[2]][grep(" EPC file name",iniFiles[[2]])]<-paste(epcInput[2],"\t EPC file name",sep="") + } + } + + if(is.null(metInput)){ + metflag=TRUE + metInput[1] <- unlist(strsplit(grep(" met file name",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + metInput[2] <- unlist(strsplit(grep(" met file name",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep(" met file name",iniFiles[[1]])]<-paste(metInput[1],"\t met file name",sep="") + + if(length(metInput)==2){ + iniFiles[[2]][grep(" met file name",iniFiles[[2]])]<-paste(metInput[2],"\t met file name",sep="") + }} + + if(is.null(CO2Input)){ + CO2flag=TRUE + CO2Input[1] <- unlist(strsplit(grep(" CO2 file",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + CO2Input[2] <- unlist(strsplit(grep(" CO2 file",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep(" CO2 file",iniFiles[[1]])]<-paste(CO2Input[1],"\t CO2 file",sep="") + + if(length(CO2Input)==2){ + iniFiles[[2]][grep(" CO2 file",iniFiles[[2]])]<-paste(CO2Input[2],"\t CO2 file",sep="") + }} + + if(is.null(nitInput)){ + nitflag=TRUE + nitInput[1] <- unlist(strsplit(grep("N-dep file",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + nitInput[2] <- unlist(strsplit(grep("N-dep file",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("N-dep file",iniFiles[[1]])]<-paste(nitInput[1],"N-dep file",sep="N-dep file") + + if(length(epcInput)==2){ + iniFiles[[2]][grep("N-dep file",iniFiles[[2]])]<-paste(nitInput[2],"N-dep file",sep="") + }} + + if(is.null(thinInput)){ + thinflag=TRUE + thinInput[1] <- unlist(strsplit(grep("do THINNING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + thinInput[2] <- unlist(strsplit(grep("do THINNING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do THINNING",iniFiles[[1]])]<-paste(thinInput[1],"do THINNING",sep="") + + if(length(thinInput)==2){ + iniFiles[[2]][grep("do THINNING",iniFiles[[2]])]<-paste(thinInput[2],"do THINNING",sep="") + }} + + if(is.null(plantInput)){ + plantflag=TRUE + plantInput[1] <- unlist(strsplit(grep("do PLANTING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + plantInput[2] <- unlist(strsplit(grep("do PLANTING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do PLANTING",iniFiles[[1]])]<-paste(plantInput[1],"do PLANTING",sep="") + + if(length(plantInput)==2){ + iniFiles[[2]][grep("do PLANTING",iniFiles[[2]])]<-paste(plantInput[2],"do PLANTING",sep="") + }} + + if(is.null(mowInput)){ + mowflag=TRUE + mowInput[1] <- unlist(strsplit(grep("do MOWING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + mowInput[2] <- unlist(strsplit(grep("do MOWING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do MOWING",iniFiles[[1]])]<-paste(mowInput[1],"do MOWING",sep="") + + if(length(mowInput)==2){ + iniFiles[[2]][grep("do MOWING",iniFiles[[2]])]<-paste(mowInput[2],"do MOWING",sep="") + }} + + if(is.null(grazInput)){ + grazflag=TRUE + grazInput[1] <- unlist(strsplit(grep("do GRAZING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + grazInput[2] <- unlist(strsplit(grep("do GRAZING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do GRAZING",iniFiles[[1]])]<-paste(grazInput[1],"do GRAZING",sep="") + + if(length(grazInput)==2){ + iniFiles[[2]][grep("do GRAZING",iniFiles[[2]])]<-paste(grazInput[2],"do GRAZING",sep="") + }} + + if(is.null(harvInput)){ + harvflag=TRUE + harvInput[1] <- unlist(strsplit(grep("do HARVESTING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + harvInput[2] <- unlist(strsplit(grep("do HARVESTING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do HARVESTING",iniFiles[[1]])]<-paste(harvInput[1],"do HARVESTING",sep="") + + if(length(harvInput)==2){ + iniFiles[[2]][grep("do HARVESTING",iniFiles[[2]])]<-paste(harvInput[2],"do HARVESTING",sep="") + }} + + if(is.null(plougInput)){ + plougflag=TRUE + plougInput[1] <- unlist(strsplit(grep("do PLOUGHING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + plougInput[2] <- unlist(strsplit(grep("do PLOUGHING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do PLOUGHING",iniFiles[[1]])]<-paste(plougInput[1],"do PLOUGHING",sep="") + + if(length(plougInput)==2){ + iniFiles[[2]][grep("do PLOUGHING",iniFiles[[2]])]<-paste(plougInput[2],"do PLOUGHING",sep="") + }} + + if(is.null(fertInput)){ + fertflag=TRUE + fertInput[1] <- unlist(strsplit(grep("do FERTILIZING",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + fertInput[2] <- unlist(strsplit(grep("do FERTILIZING",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do FERTILIZING",iniFiles[[1]])]<-paste(fertInput[1],"do FERTILIZING",sep="") + + if(length(fertInput)==2){ + iniFiles[[2]][grep("do FERTILIZING",iniFiles[[2]])]<-paste(fertInput[2],"do FERTILIZING",sep="") + }} + + if(is.null(irrInput)){ + irrflag=TRUE + irrInput[1] <- unlist(strsplit(grep("do IRRIGATION",iniFiles[[1]],value=TRUE),"[\ \t]"))[1] + irrInput[2] <- unlist(strsplit(grep("do IRRIGATION",iniFiles[[2]],value=TRUE),"[\ \t]"))[1] + } else { + iniFiles[[1]][grep("do IRRIGATION",iniFiles[[1]])]<-paste(irrInput[1],"do IRRIGATION",sep="") + + if(length(irrInput)==2){ + iniFiles[[2]][grep("do IRRIGATION",iniFiles[[2]])]<-paste(irrInput[2],"do IRRIGATION",sep="") + }}