Skip to content
Snippets Groups Projects
Commit 0d096c24 authored by Franssen, Wietse's avatar Franssen, Wietse
Browse files

Added functionReformat

parent 2399e526
Branches
Tags
No related merge requests found
rm(list=ls())
source(file = "./functionsGeneral.R")
reformat2Bias<-function(members, initYears, initMonth, varName, locName, iPath = "/home/wietse/TODO/output/") {
sYear<-initYears[1]
eYear<-initYears[length(initYears)]
nYears<-length(initYears)
sMember<-members[1]
eMember<-members[length(members)]
nMembers<-length(members)
strMembers<-NULL
# indexesOfDaysYears(1,sYear,eYear)
allocatedOutputArray<-FALSE
for (iMember in members) {
initDates<-NULL
iInitYear<-1
for (initYear in initYears) {
indexesYearsLeadMonths<-indexesForYearsPerLeadMonth(sYear,eYear,initMonth)
nameFileR <- sprintf(paste0(iPath,"/%s_forcing_seas15_%s_ref__E%02d_%4d_%02d.Rdata"),
varName,
locName,
iMember,
initYear,
initMonth)
print(paste0("Opening: ", nameFileR))
load(nameFileR)
if (!allocatedOutputArray) {
sYear<-initYears[1]
eYear<-initYears[length(initYears)]
nYears<-eYear-sYear+1
## allocate list
final<-sys4
## allocate arrays
finalList<-NULL
listNames<-NULL
for (iLM in 1:7) {
finalList[[iLM]] <- final
listNames<-c(listNames,paste0("LeadMonth_",iLM))
totalDays<-indexesYearsLeadMonths$eIndexes[as.character(eYear),iLM]
finalList[[iLM]]$Data<-array(0,dim=c(nMembers,totalDays,length(sys4$xyCoords$y),length(sys4$xyCoords$x)))
finalList[[iLM]]$Dates$start<-character(length=totalDays)
finalList[[iLM]]$Dates$end<-character(length=totalDays)
attr(finalList[[iLM]]$Data,"dimensions") <- c("member","time","lat","lon")
}
names(finalList)<-listNames
allocatedOutputArray<-TRUE
}
## Split the seven months
indexes<-indexesOfDaysPerMonth(initMonth, 7, initYear)
# print(indexes)
## Split the data in seperate months
parts<-NULL
for (iLM in 1:7) {
parts[[iLM]] <- list(startDates = sys4$Dates$start[indexes[iLM,"sIndex"]:indexes[iLM,"eIndex"]],
endDates = sys4$Dates$end[indexes[iLM,"sIndex"]:indexes[iLM,"eIndex"]],
data = sys4$Data[indexes[iLM,"sIndex"]:indexes[iLM,"eIndex"],,])
}
## Fill big data array
for (iLM in 1:7) {
sIndex<-indexesYearsLeadMonths$sIndexes[as.character(initYear),iLM]
eIndex<-indexesYearsLeadMonths$eIndexes[as.character(initYear),iLM]
finalList[[iLM]]$Data[iMember,sIndex:eIndex,,] <-parts[[iLM]]$data
finalList[[iLM]]$Dates$start[sIndex:eIndex] <-parts[[iLM]]$startDates
finalList[[iLM]]$Dates$end[sIndex:eIndex] <-parts[[iLM]]$endDates
}
initDates[iInitYear]<-sys4$Dates$start[1]
iInitYear<-iInitYear+1
}
strMembers<-c(strMembers,paste0("Member_",iMember))
for (iLM in 1:7) {
finalList[[iLM]]$Members <- strMembers
}
}
return(finalList)
}
\ No newline at end of file
......@@ -14,3 +14,50 @@ indexesOfDaysPerMonth <- function(initMonth, nMonths, initYear) {
}
return(indexes)
}
## Calculation of the index numbers of a set of years for one month
## eg: indexesOfDaysYears(2,1981,1990)
indexesOfDaysYears <- function(month,sYear,eYear) {
nYears<-eYear-sYear+1
indexes <-matrix(0,nYears,5)
colnames(indexes) <- c("sIndex","eIndex","nDaysTotalInMonth","year","month")
dates<-seq(as.Date(paste0(sYear,"-",month,"-1")), by = "1 year", length=nYears)
for (iYear in 1:nYears) {
indexes[iYear,"month"]<-as.numeric(format(dates[iYear], "%m"))
indexes[iYear,"year"]<-as.numeric(format(dates[iYear], "%Y"))
currAndNextMonth<-seq(dates[iYear], by = "1 month", length=2)
indexes[iYear,"nDaysTotalInMonth"]<-difftime(currAndNextMonth[2] ,currAndNextMonth[1] , units = c("days"))
if (indexes[iYear,"year"] == sYear){
indexes[iYear,"eIndex"]<-indexes[iYear,3]
} else {
indexes[iYear,"eIndex"]<-indexes[iYear-1,"eIndex"]+indexes[iYear,"nDaysTotalInMonth"]
}
indexes[iYear,"sIndex"]<-indexes[iYear,"eIndex"]-indexes[iYear,"nDaysTotalInMonth"]+1
}
return(indexes)
}
## Calculation of the index numbers for a set of years and a set of lead months
## eg: indexesOfDaysYears(2,1981,1990)
indexesForYearsPerLeadMonth<-function(sYear,eYear,initMonth,nLM=7) {
months<-indexesOfDaysPerMonth(initMonth, nLM, sYear)[,"month"]
years<-indexesOfDaysPerMonth(initMonth, nLM, sYear)[,"year"]
nYears<-eYear-sYear+1
sIndexes <-matrix(0,nYears,nLM)
colnames(sIndexes) <- months
rownames(sIndexes) <- c(sYear:eYear)
eIndexes<-sIndexes
i<-1
for (iMonth in months) {
sIndexes[,i]<-indexesOfDaysYears(iMonth,years[i],years[i]+nYears-1)[,"sIndex"]
eIndexes[,i]<-indexesOfDaysYears(iMonth,years[i],years[i]+nYears-1)[,"eIndex"]
i<-i+1
}
indexes <- list(
sIndexes = sIndexes,
eIndexes = eIndexes
)
return(indexes)
}
rm(list=ls())
#setwd("/home/wietse/TODO/SCRIPTS")
source(file = "./functionReformat.R")
source(file = "./functionR2Netcdf.R")
iPath<-"/home/wietse/TODO/tttas/"
initYears<-c(1981:1982)
#initYears<-c(1981:2010)
members<-c(1:2)
#members<-c(1:15)
varName<-"tas"
locName<-"GHA"
#locName<-"EU"
initMonth<-1
rData<-reformat2Bias(members, initYears, initMonth, varName, locName, iPath = iPath)
# outF<-("/home/wietse/TODO/SCRIPTS/fileTest2.nc4")
# R2Netcdf(outF, rData$LeadMonth_1)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment