From 1e350374ddc2f53fd0679b3a06b12e1877f0e9e8 Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Tue, 3 Dec 2019 18:25:24 +0100 Subject: [PATCH 001/184] check slope is not a vector --- R/CST_RainFARM.R | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/R/CST_RainFARM.R b/R/CST_RainFARM.R index ff4d624d..49065a97 100644 --- a/R/CST_RainFARM.R +++ b/R/CST_RainFARM.R @@ -237,6 +237,12 @@ RainFARM <- function(data, lon, lat, nf, weights = 1., nens = 1, } warning(paste("Selected time dim:", time_dim)) } + # Check if slope is an array + if (length(slope) > 1) { + warning("Parameter 'slope' has length > 1 and only the first ", + "element will be used.") + slope <- as.numeric(slope[1]) + } # Perform common calls r <- lon_lat_fine(lon, lat, nf) -- GitLab From badda4f14ae36785bafbfeb6564150af4b5fb9fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 11 Dec 2019 11:34:02 +0100 Subject: [PATCH 002/184] copying functions from s2dverification to the cstools repository --- R/PlotTableTriangles.R | 262 +++++++++++++++++++++++++++++++++++++++++ R/RegimesAssign.R | 130 ++++++++++++++++++++ R/WeatherRegime.R | 109 +++++++++++++++++ 3 files changed, 501 insertions(+) create mode 100644 R/PlotTableTriangles.R create mode 100644 R/RegimesAssign.R create mode 100644 R/WeatherRegime.R diff --git a/R/PlotTableTriangles.R b/R/PlotTableTriangles.R new file mode 100644 index 00000000..4c986bf4 --- /dev/null +++ b/R/PlotTableTriangles.R @@ -0,0 +1,262 @@ +#'Function to convert any numerical array to a grid of coloured triangles. +#' +#'This function converts a numerical data array into a coloured +#'grid with triangles. It is useful for a slide or article to present tabular results as +#'colors instead of numbers. This can be used to compare the outputs of two or four categories (e.g. modes +#' of variability, clusters, or forecast systems). +#' +#'@param var an array with three dimensions: rows, columns and categories +#' containing the values to be displayed in a colored image with triangles. +#'@param poscols the dimension that will be represented as columns. +#'@param posrows the dimension that will be reprsented as rows. +#'@param brks A vector of the color bar intervals. The length must be one more +#' than the parameter 'cols'. Use ColorBar() to generate default values. +#'@param cols A vector of valid colour identifiers for color bar. The length +#' must be one less than the parameter 'brks'. Use ColorBar() to generate +#' default values. +#'@param toptitle A string of the title of the grid. Set NULL as default. +#'@param sig_var logical array with the same dimensions as 'var' to add layers +#' to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the +#' corresponding triangle of the plot. Set NULL as default. +#'@param pch_sig symbol to be used to represent sig_var. Takes 18 +#' (diamond) by default. See 'pch' in par() for additional +#' accepted options. +#'@param col_sig colour of the symbol to represent sig_var. +#'@param cex_sig parameter to increase/reduce the size of the symbols used +#' to represent sig_var. +#'@param xlabels A vector of labels of the x-axis The length must be +#' length of the col of parameter 'var'. Set the sequence from 1 to the +#' length of the row of parameter 'var' as default. +#'@param xtitle A string of title of the x-axis. Set NULL as default. +#'@param ylabels A vector of labels of the y-axis The length must be +#' length of the row of parameter 'var'. Set the sequence from 1 to the +#' length of the row of parameter 'var' as default. +#'@param ytitle A string of title of the y-axis. Set NULL as default. +#'@param legend A logical value to decide to draw the color bar legend or not. +#' Set TRUE as default. +#'@param lab_legend A vector of labels indicating what is represented in each +#'category (i.e. triangle). Set the sequence from 1 to the length of +#' the categories (2 or 4). +#'@param cex_leg a number to indicate the increase/reductuion of the lab_legend used +#' to represent sig_var. +#'@param col_leg color of the legend (triangles). +#'@param fileout A string of full directory path and file name indicating where +#' to save the plot. If not specified (default), a graphics device will pop up. +#'@param size_units A string indicating the units of the size of the device +#' (file or window) to plot in. Set 'px' as default. See ?Devices and the +#' creator function of the corresponding device. +#'@param res A positive number indicating resolution of the device (file or window) +#' to plot in. See ?Devices and the creator function of the corresponding device. +#'@param ... The additional parameters to be passed to function ColorBar() in +#' s2dverification for color legend creation. +#'@return A figure in popup window by default, or saved to the specified path. +#' +#'@author History:\cr +#'1.0 - 2019-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code +#' +#'@examples +#'#Example with random data +#' arr1<- arr1<- array(runif(n = 12 * 7 * 4, min=-1, max=1),dim = c(12,7,4)) +#'arr2<- array(TRUE,dim = dim(arr1)) +#'arr2[which(arr1 < 0.3)] = FALSE +#'PlotTableTriangles(var = arr1, +#' cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', +#' '#e34a33','#b30000', '#7f0000'), +#' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), +#' xtitle = "Target month", ytitle = "Lead time", +#' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", +#' "Aug", "Sep", "Oct", "Nov", "Dec")) +#'@importFrom grDevices dev.new dev.off dev.cur +#'@export + +PlotTableTriangles<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, + toptitle=NULL, + sig_var=NULL,col_sig='black',pch_sig=18, + cex_sig=1, + xlabels=NULL, xtitle=NULL, + ylabels=NULL, ytitle=NULL, + legend=TRUE,lab_legend=NULL, + cex_leg=1,col_leg='black', + fileout=NULL, + size_units = 'px', res = 100, + figure.width = 1, + ...){ + # Checking the dimensions + vardim<-dim(var) + nrow<-vardim[posrows] + ncol<-vardim[poscols] + poscat<-vardim[setdiff(1:length(vardim),c(posrows,poscols))] + + # If there is any filenames to store the graphics, process them + # to select the right device + if (!is.null(fileout)) { + deviceInfo <- s2dverification:::.SelectDevice(fileout = fileout, + width = 80 * ncol * figure.width, + height = 80 * nrow, + units = size_units, res = res) + saveToFile <- deviceInfo$fun + fileout <- deviceInfo$files + } + + # Open connection to graphical device + if (!is.null(fileout)) { + saveToFile(fileout) + } else if (names(dev.cur()) == 'null device') { + dev.new(units = size_units, res = res, + width = 8 * figure.width, height = 5) + } + + if (!is.null(sig_var)){ + if (!is.logical(sig_var)){ + stop('sig_var array should be provided as TRUE/FALSE') + } + if (all(dim(sig_var)!=dim(var))){ + stop('sig_var array should have the same dimensions that var') + } + } + + if (length(vardim)!=3){ + stop('var must be an array with three dimensions (4, cols, rows) ') + } + + if (poscat!=4 && poscat!=2){ + stop('var must be an array with one of the dimensions being equal to 4 or 2') + } + + # The dimensions are named + names(dim(var))[poscols]<-'cols' + names(dim(var))[posrows]<-'rows' + names(dim(var))[setdiff(1:length(vardim),c(posrows,poscols))]<-'cat' + + if (!is.null(sig_var)){ + names(dim(sig_var))<-names(dim(var)) + } + + # Checking what is available and generating missing information + if (!is.null(lab_legend)&&length(lab_legend)!=4){ + stop('The legend should contain 4 names') + } + + if (is.null(xlabels)){ + xlabels=1:ncol + } + if (is.null(ylabels)){ + ylabels=1:nrow + } + if (is.null(brks)){ + brks<-seq(min(var),max(var),length.out = 9) + } + if (is.null(cols)){ + cols<-rev(brewer.pal(length(brks)-1,'RdBu')) + } + + # The colours for each triangle/category are defined + var_cat <- array(cols[length(cols)], dim = vardim) + names(dim(var_cat)) <- names(dim(var)) + for (i in (length(cols) - 1):1) { + var_cat[var < brks[i + 1]] <- cols[i] + } + + if(legend){ + layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,2),heights=c(10,2)) + par(oma=c(1,1,1,1),mar=c(5,4,4,0)) + if(is.null(lab_legend)){ + lab_legend=1:4 + } + } + + plot(ncol,nrow,xlim = c(0,ncol),ylim=c(0,nrow), xaxs="i",yaxs='i',type="n", + xaxt="n", yaxt="n",ann=F,axes=F) + + box(col='black',lwd=1) + + if (! is.null(toptitle)){ + title(toptitle, cex=1.5) + } + + if (!is.null(xtitle)){ + mtext(side = 1, text = xtitle, line = 4, cex=1.5) + } + if (!is.null(ytitle)){ + mtext(side = 2, text = ytitle, line = 2.5, cex=1.5) + } + + axis(1, at=(1:ncol)-0.5, las=2, labels=xlabels, cex.axis=1.5) + axis(2, at=(1:nrow)-0.5, las=2, labels=ylabels, cex.axis=1.5) + + + #The triangles are plotted + for(p in 1:ncol){ + for(l in 1:nrow){ + if (poscat==4){ + coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), + ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) + + coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) + } + + if (poscat==2){ + coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), + ys=list( c(l-1,l-1, l), c(l-1, l, l))) + coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) + } + for (n in 1:poscat) { + polygon(coord_triangl$xs[[n]], + coord_triangl$ys[[n]], + col = Subset( + var_cat, + along = c('cat', 'cols', 'rows'), + indices = list(n, p, l))) + if (!is.null(sig_var) && + Subset(sig_var,along = c('cat', 'cols', 'rows'), + indices = list(n, p, l))) { + points( + x = coord_sig$x[n], + y = coord_sig$y[n], + pch = pch_sig, + cex = cex_sig, + col = col_sig + ) + } + } + } + } + + # legend + + if(legend){ + # Colorbar + par(mar=c(0,0,0,0)) + ColorBar(brks = brks, cols = cols, vert=T,draw_ticks = T, draw_separators = T, + extra_margin = c(0,0,2.5,0),label_scale = 1.5,...) + + par(mar=c(0.5,2.5,0,2.5)) + plot(1,1,xlim = c(0,1),ylim=c(0,1), xaxs="i",yaxs='i',type="n", + xaxt="n", yaxt="n",ann=F,axes=F) + + box(col=col_leg) + p=l=1 + if (poscat==4){ + coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), + ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) + + coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) + } + + if (poscat==2){ + coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), + ys=list( c(l-1,l-1, l), c(l-1, l, l))) + coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) + } + for (n in 1:poscat) { + polygon(coord_triangl$xs[[n]], + coord_triangl$ys[[n]],border=col_leg) + text(x=coord_sig$x[[n]],y=coord_sig$y[[n]],labels = lab_legend[n],cex=cex_leg,col=col_leg) + + } + } + + # If the graphic was saved to file, close the connection with the device + if (!is.null(fileout)) dev.off() +} + diff --git a/R/RegimesAssign.R b/R/RegimesAssign.R new file mode 100644 index 00000000..5fa4992b --- /dev/null +++ b/R/RegimesAssign.R @@ -0,0 +1,130 @@ +anom2regime <- function(ref, target, method = 'distance', lat) { + posdim <- which(names(dim(ref)) == 'nclust') + poslat <- which(names(dim(ref)) == 'lat') + poslon <- which(names(dim(ref)) == 'lon') + + nclust <- dim(ref)[posdim] + + if (all(dim(ref)[-posdim] != dim(target))) { + stop('The target should have the same dimensions [lat,lon] that + the reference ') + } + + if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { + stop( + 'The arrays should include dimensions names ref[nclust,lat,lon] + and target [lat,lon]' + ) + } + + if (length(lat) != dim(ref)[poslat]) { + stop('latitudes do not match with the maps') + } + + # This dimensions are reorganized + ref <- aperm(ref, c(posdim, poslat, poslon)) + target <- + aperm(target, c(which(names(dim( + target + )) == 'lat'), which(names(dim( + target + )) == 'lon'))) + + # weights are defined + latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(ref)[3]) + + + rmsdiff <- function(x, y) { + dims <- dim(x) + ndims <- length(dims) + if (ndims != 2 | ndims != length(dim(y))) { + stop('x and y should be maps') + } + map_diff <- NA * x + for (i in 1:dims[1]) { + for (j in 1:dims[2]) { + map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 + } + } + rmsdiff <- sqrt(mean(map_diff)) + return(rmsdiff) + } + + if (method == 'ACC') { + corr <- rep(NA, nclust) + for (i in 1:nclust) { + corr[i] <- + ACC(InsertDim(InsertDim( + InsertDim(ref[i, , ] * latWeights, 1, 1), 2, 1 + ), 3, 1), + InsertDim(InsertDim( + InsertDim(target * latWeights, 1, 1), 2, 1 + ), 3, 1))$ACC[2] + } + assign <- which(corr == max(corr)) + } + + if (method == 'distance') { + rms <- rep(NA, nclust) + for (i in 1:nclust) { + rms[i] <- rmsdiff(ref[i, , ] * latWeights, target * latWeights) + } + assign <- which(rms == min(rms)) + } + + return(assign) + } + +RegimesAssign <- function(var_ano, ref_maps, lats, method = 'distance') { + posdim <- which(names(dim(ref_maps)) == 'nclust') + poslat <- which(names(dim(ref_maps)) == 'lat') + poslon <- which(names(dim(ref_maps)) == 'lon') + poslat_ano <- which(names(dim(var_ano)) == 'lat') + poslon_ano <- which(names(dim(var_ano)) == 'lon') + + nclust <- dim(ref_maps)[posdim] + nlat <- dim(ref_maps)[poslat] + nlon <- dim(ref_maps)[poslon] + + + if (is.null(names(dim(ref_maps))) | is.null(names(dim(var_ano)))) { + stop( + 'The arrays should include dimensions names ref[nclust,lat,lon] + and target [lat,lon]' + ) + } + + if (length(lats) != dim(ref_maps)[poslat]) { + stop('latitudes do not match with the maps') + } + + assign <- + Apply( + data = list(target = var_ano), + margins = c((1:length(dim( + var_ano + )))[-c(poslat_ano, poslon_ano)]) , + fun = 'anom2regime', + ref = ref_maps, + lat = lats, + method = method + ) + + anom_array <- + array(var_ano, dim = c(prod(dim(var_ano)[-c(poslat_ano, poslon_ano)]), nlat, nlon)) + rm(var_ano) + index <- as.vector(assign$output1) + recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = index) + freqs <- rep(NA, nclust) + for (n in 1:nclust) { + freqs[n] <- (length(which(index == n)) / length(index)) * 100 + } + output <- + list( + composite = recon$composite, + pvalue = recon$pvalue, + cluster = assign$output1, + frequency = freqs + ) + return(output) + } diff --git a/R/WeatherRegime.R b/R/WeatherRegime.R new file mode 100644 index 00000000..f0167b91 --- /dev/null +++ b/R/WeatherRegime.R @@ -0,0 +1,109 @@ +AtomicWeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", + nstart = 30) { + + names(dim(data)) <- c("sdate", "ftime", "lat", "lon") + sdate <- which(names(dim(data)) == "sdate") + ftime <- which(names(dim(data)) == "ftime") + nftimes <- dim(data)[ftime] + nsdates <- dim(data)[sdate] + lon2 <- which(names(dim(data)) == "lon") + lat2 <- which(names(dim(data)) == "lat") + data <- aperm(data, c(ftime, sdate, lat2, lon2)) + nlon <- dim(data)[lon2] + nlat <- dim(data)[lat2] + dim(data) <- c(nftimes * nsdates, nlat, nlon) + + if (is.null(ncenters)) { + stop("ncenters must be specified") + } + if (EOFS == TRUE && is.null(lon)) { + stop("longitudes must be specified") + } + if (EOFS == TRUE && is.null(lat)) { + stop("latitudes must be specified") + } + + if (EOFS == TRUE) { + #data <- princomp(data[,subs], cor = FALSE)$scores + dataPC <- EOF(data, lat = as.vector(lat), lon = as.vector(lon), neofs = neofs) + if (is.null(threshold)){ + threshold <- sum(dataPC$var) + cluster_input <- dataPC$PC + } else { + threshold <- threshold + minPC <- head(as.numeric(which(cumsum(dataPC$var) > threshold)), 1) + cluster_input <- dataPC$PC[, 1 : minPC] } + } else { + cluster_input <- data + latWeights <- InsertDim(InsertDim(cos(lat*pi/180), 1, nftimes*nsdates), 3, nlon) + cluster_input <- cluster_input * latWeights + dim(cluster_input) <- c(nftimes * nsdates, nlat * nlon) + } + if (method == "kmeans") { + result <- kmeans(cluster_input, centers = ncenters, + iter.max = 100, nstart = nstart, trace = FALSE) + reconstructed <- array(0, c(ncenters, nlat, nlon)) + data <- aperm(data, c(2, 3, 1)) + reconstructed <- Composite(data, result$cluster) + names(dim(reconstructed$composite)) <- c("lon", "lat", "cluster") + cluster_timeseries <- list(lengths = c(), values = c()) + frequency <- persistence <- matrix(NA, nsdates, ncenters) + for (i in 1 : nsdates) { + occurences <- rle(result$cluster[((i * nftimes) + 1 - nftimes) : (i * nftimes)]) + cluster_timeseries <- list(lengths = c(cluster_timeseries$lengths, occurences$lengths), + values = c(cluster_timeseries$values, occurences$values)) + for (j in 1 : ncenters) { + frequency[i,j] <- (sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 + persistence[i,j] <- mean(occurences$lengths[occurences$values == j]) + } + } + # for (i in 1 : ncenters) { + # for (j in 1 : nsdates) { + # timeseries_subset <- cluster_timeseries$lengths#[(1 +((nftimes -1) * j)) : (nftimes * j)] + # cluster_subset <- cluster_timeseries$values[(1 +((nftimes -1) * j)) : (nftimes * j)] + # print(timeseries_subset) + # print(cluster_subset) + # print((1 +((nftimes -1) * j)) : (nftimes * j)) + # stop() + # frequency[i, j] <- (sum(timeseries_subset[cluster_subset == i]) / length(nftimes)) * 100 + # persistence[i,j] <- mean(timeseries_subset[cluster_subset == i]) + # } + # #frequency[i] <- (sum(cluster_timeseries$lengths[cluster_timeseries$values == i]) / length(result$cluster)) * 100 + # } + } else { + result <- hclust(dist(cluster_input), method = method) + clusterCut <- cutree(result, ncenters) + data <- aperm(data, c(3, 2, 1)) + result <- Composite(data, clusterCut) + } + if (method == "kmeans") { + return(list(composite = reconstructed$composite, pvalue = reconstructed$pvalue, cluster = as.array(result$cluster), center = as.array(result$center), + cluster_lengths = as.array(cluster_timeseries$lengths), cluster_values = as.array(cluster_timeseries$values), + persistence = as.array(persistence), frequency = frequency)) + } else { + return(list(composite = result$composite, pvalue = result$pvalue, cluster = as.array(clusterCut))) + } +} + + + + +WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", + nstart = 30, iter.max = 100, ncores = NULL) { + if (length(dim(data)) > 4) { + sdate <- which(names(dim(data)) == "sdate") + ftime <- which(names(dim(data)) == "ftime") + lon_dim <- which(names(dim(data)) == "lon") + lat_dim <- which(names(dim(data)) == "lat") + dims <- c(1 : length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] + data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) + margins <- 5 : length(dim(data)) + result <- Apply(data = list(data), margins = list(margins), fun = "AtomicWeatherRegime", EOFS = EOFS, neofs = neofs, + threshold = threshold, lon = lon, lat = lat, ncenters = ncenters, method = method, + ncores = ncores) + } else { + result <- AtomicWeatherRegime(data, EOFS = EOFS, neofs = neofs, threshold = threshold, + lon = lon, lat = lat, ncenters = ncenters, method = method) + } + +} -- GitLab From 8dfbd4460b8d9c0abe17abb6129b722aa6688ba8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 11 Dec 2019 12:02:08 +0100 Subject: [PATCH 003/184] removing function --- R/PlotTableTriangles.R | 262 ----------------------------------------- 1 file changed, 262 deletions(-) delete mode 100644 R/PlotTableTriangles.R diff --git a/R/PlotTableTriangles.R b/R/PlotTableTriangles.R deleted file mode 100644 index 4c986bf4..00000000 --- a/R/PlotTableTriangles.R +++ /dev/null @@ -1,262 +0,0 @@ -#'Function to convert any numerical array to a grid of coloured triangles. -#' -#'This function converts a numerical data array into a coloured -#'grid with triangles. It is useful for a slide or article to present tabular results as -#'colors instead of numbers. This can be used to compare the outputs of two or four categories (e.g. modes -#' of variability, clusters, or forecast systems). -#' -#'@param var an array with three dimensions: rows, columns and categories -#' containing the values to be displayed in a colored image with triangles. -#'@param poscols the dimension that will be represented as columns. -#'@param posrows the dimension that will be reprsented as rows. -#'@param brks A vector of the color bar intervals. The length must be one more -#' than the parameter 'cols'. Use ColorBar() to generate default values. -#'@param cols A vector of valid colour identifiers for color bar. The length -#' must be one less than the parameter 'brks'. Use ColorBar() to generate -#' default values. -#'@param toptitle A string of the title of the grid. Set NULL as default. -#'@param sig_var logical array with the same dimensions as 'var' to add layers -#' to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the -#' corresponding triangle of the plot. Set NULL as default. -#'@param pch_sig symbol to be used to represent sig_var. Takes 18 -#' (diamond) by default. See 'pch' in par() for additional -#' accepted options. -#'@param col_sig colour of the symbol to represent sig_var. -#'@param cex_sig parameter to increase/reduce the size of the symbols used -#' to represent sig_var. -#'@param xlabels A vector of labels of the x-axis The length must be -#' length of the col of parameter 'var'. Set the sequence from 1 to the -#' length of the row of parameter 'var' as default. -#'@param xtitle A string of title of the x-axis. Set NULL as default. -#'@param ylabels A vector of labels of the y-axis The length must be -#' length of the row of parameter 'var'. Set the sequence from 1 to the -#' length of the row of parameter 'var' as default. -#'@param ytitle A string of title of the y-axis. Set NULL as default. -#'@param legend A logical value to decide to draw the color bar legend or not. -#' Set TRUE as default. -#'@param lab_legend A vector of labels indicating what is represented in each -#'category (i.e. triangle). Set the sequence from 1 to the length of -#' the categories (2 or 4). -#'@param cex_leg a number to indicate the increase/reductuion of the lab_legend used -#' to represent sig_var. -#'@param col_leg color of the legend (triangles). -#'@param fileout A string of full directory path and file name indicating where -#' to save the plot. If not specified (default), a graphics device will pop up. -#'@param size_units A string indicating the units of the size of the device -#' (file or window) to plot in. Set 'px' as default. See ?Devices and the -#' creator function of the corresponding device. -#'@param res A positive number indicating resolution of the device (file or window) -#' to plot in. See ?Devices and the creator function of the corresponding device. -#'@param ... The additional parameters to be passed to function ColorBar() in -#' s2dverification for color legend creation. -#'@return A figure in popup window by default, or saved to the specified path. -#' -#'@author History:\cr -#'1.0 - 2019-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code -#' -#'@examples -#'#Example with random data -#' arr1<- arr1<- array(runif(n = 12 * 7 * 4, min=-1, max=1),dim = c(12,7,4)) -#'arr2<- array(TRUE,dim = dim(arr1)) -#'arr2[which(arr1 < 0.3)] = FALSE -#'PlotTableTriangles(var = arr1, -#' cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', -#' '#e34a33','#b30000', '#7f0000'), -#' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), -#' xtitle = "Target month", ytitle = "Lead time", -#' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", -#' "Aug", "Sep", "Oct", "Nov", "Dec")) -#'@importFrom grDevices dev.new dev.off dev.cur -#'@export - -PlotTableTriangles<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, - toptitle=NULL, - sig_var=NULL,col_sig='black',pch_sig=18, - cex_sig=1, - xlabels=NULL, xtitle=NULL, - ylabels=NULL, ytitle=NULL, - legend=TRUE,lab_legend=NULL, - cex_leg=1,col_leg='black', - fileout=NULL, - size_units = 'px', res = 100, - figure.width = 1, - ...){ - # Checking the dimensions - vardim<-dim(var) - nrow<-vardim[posrows] - ncol<-vardim[poscols] - poscat<-vardim[setdiff(1:length(vardim),c(posrows,poscols))] - - # If there is any filenames to store the graphics, process them - # to select the right device - if (!is.null(fileout)) { - deviceInfo <- s2dverification:::.SelectDevice(fileout = fileout, - width = 80 * ncol * figure.width, - height = 80 * nrow, - units = size_units, res = res) - saveToFile <- deviceInfo$fun - fileout <- deviceInfo$files - } - - # Open connection to graphical device - if (!is.null(fileout)) { - saveToFile(fileout) - } else if (names(dev.cur()) == 'null device') { - dev.new(units = size_units, res = res, - width = 8 * figure.width, height = 5) - } - - if (!is.null(sig_var)){ - if (!is.logical(sig_var)){ - stop('sig_var array should be provided as TRUE/FALSE') - } - if (all(dim(sig_var)!=dim(var))){ - stop('sig_var array should have the same dimensions that var') - } - } - - if (length(vardim)!=3){ - stop('var must be an array with three dimensions (4, cols, rows) ') - } - - if (poscat!=4 && poscat!=2){ - stop('var must be an array with one of the dimensions being equal to 4 or 2') - } - - # The dimensions are named - names(dim(var))[poscols]<-'cols' - names(dim(var))[posrows]<-'rows' - names(dim(var))[setdiff(1:length(vardim),c(posrows,poscols))]<-'cat' - - if (!is.null(sig_var)){ - names(dim(sig_var))<-names(dim(var)) - } - - # Checking what is available and generating missing information - if (!is.null(lab_legend)&&length(lab_legend)!=4){ - stop('The legend should contain 4 names') - } - - if (is.null(xlabels)){ - xlabels=1:ncol - } - if (is.null(ylabels)){ - ylabels=1:nrow - } - if (is.null(brks)){ - brks<-seq(min(var),max(var),length.out = 9) - } - if (is.null(cols)){ - cols<-rev(brewer.pal(length(brks)-1,'RdBu')) - } - - # The colours for each triangle/category are defined - var_cat <- array(cols[length(cols)], dim = vardim) - names(dim(var_cat)) <- names(dim(var)) - for (i in (length(cols) - 1):1) { - var_cat[var < brks[i + 1]] <- cols[i] - } - - if(legend){ - layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,2),heights=c(10,2)) - par(oma=c(1,1,1,1),mar=c(5,4,4,0)) - if(is.null(lab_legend)){ - lab_legend=1:4 - } - } - - plot(ncol,nrow,xlim = c(0,ncol),ylim=c(0,nrow), xaxs="i",yaxs='i',type="n", - xaxt="n", yaxt="n",ann=F,axes=F) - - box(col='black',lwd=1) - - if (! is.null(toptitle)){ - title(toptitle, cex=1.5) - } - - if (!is.null(xtitle)){ - mtext(side = 1, text = xtitle, line = 4, cex=1.5) - } - if (!is.null(ytitle)){ - mtext(side = 2, text = ytitle, line = 2.5, cex=1.5) - } - - axis(1, at=(1:ncol)-0.5, las=2, labels=xlabels, cex.axis=1.5) - axis(2, at=(1:nrow)-0.5, las=2, labels=ylabels, cex.axis=1.5) - - - #The triangles are plotted - for(p in 1:ncol){ - for(l in 1:nrow){ - if (poscat==4){ - coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), - ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) - - coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) - } - - if (poscat==2){ - coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), - ys=list( c(l-1,l-1, l), c(l-1, l, l))) - coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) - } - for (n in 1:poscat) { - polygon(coord_triangl$xs[[n]], - coord_triangl$ys[[n]], - col = Subset( - var_cat, - along = c('cat', 'cols', 'rows'), - indices = list(n, p, l))) - if (!is.null(sig_var) && - Subset(sig_var,along = c('cat', 'cols', 'rows'), - indices = list(n, p, l))) { - points( - x = coord_sig$x[n], - y = coord_sig$y[n], - pch = pch_sig, - cex = cex_sig, - col = col_sig - ) - } - } - } - } - - # legend - - if(legend){ - # Colorbar - par(mar=c(0,0,0,0)) - ColorBar(brks = brks, cols = cols, vert=T,draw_ticks = T, draw_separators = T, - extra_margin = c(0,0,2.5,0),label_scale = 1.5,...) - - par(mar=c(0.5,2.5,0,2.5)) - plot(1,1,xlim = c(0,1),ylim=c(0,1), xaxs="i",yaxs='i',type="n", - xaxt="n", yaxt="n",ann=F,axes=F) - - box(col=col_leg) - p=l=1 - if (poscat==4){ - coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), - ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) - - coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) - } - - if (poscat==2){ - coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), - ys=list( c(l-1,l-1, l), c(l-1, l, l))) - coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) - } - for (n in 1:poscat) { - polygon(coord_triangl$xs[[n]], - coord_triangl$ys[[n]],border=col_leg) - text(x=coord_sig$x[[n]],y=coord_sig$y[[n]],labels = lab_legend[n],cex=cex_leg,col=col_leg) - - } - } - - # If the graphic was saved to file, close the connection with the device - if (!is.null(fileout)) dev.off() -} - -- GitLab From 3ea51d1b844012bb64756ab413584c19f22d3413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 11 Dec 2019 12:54:47 +0100 Subject: [PATCH 004/184] header in WeatherRegime for documentation --- R/WeatherRegime.R | 147 ++++++++++++++++++++++++++++++---------------- 1 file changed, 97 insertions(+), 50 deletions(-) diff --git a/R/WeatherRegime.R b/R/WeatherRegime.R index f0167b91..70a750e9 100644 --- a/R/WeatherRegime.R +++ b/R/WeatherRegime.R @@ -1,5 +1,70 @@ -AtomicWeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", - nstart = 30) { +#' @rdname WeatherRegimes +#' @title Function for Calculating the Cluster analysis +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function computes the weather regimes from a cluster analysis. +#'It can be applied over the dataset with dimensions +#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the +#'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods +#'included in the hclust (stats package). +#' +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data Array of data (anomalies) with dimensions c(year/month, month/day, lon, lat). +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. +#'@param threshold Value with the percentage of variance to be explained by the PCs. +#' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#' For more details about these methods see the hclust function documentation included in the stats package. +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param ncores The number of multicore threads to use for parallel computation}. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (a matrix of EOF patterns obtained by regression for each variable), +#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{center} (A vector of integers (from 1:ncenters) indicating the cluster to which each point is allocated (only if method=’kmeans’ has been selected).), +#' \code{cluster_lengths} (Length of repeated values in the cluster time series (only if method=’kmeans’ has been selected).), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#' +#'@examples +#'@export + +WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", + nstart = 30, iter.max = 100, ncores = NULL) { + if (length(dim(data)) > 4) { + sdate <- which(names(dim(data)) == "sdate") + ftime <- which(names(dim(data)) == "ftime") + lon_dim <- which(names(dim(data)) == "lon") + lat_dim <- which(names(dim(data)) == "lat") + dims <- c(1 : length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] + data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) + margins <- 5 : length(dim(data)) + result <- Apply(data = list(data), margins = list(margins), fun = ".WeatherRegime", EOFS = EOFS, neofs = neofs, + threshold = threshold, lon = lon, lat = lat, ncenters = ncenters, method = method, + ncores = ncores) + } else { + result <- .WeatherRegime(data, EOFS = EOFS, neofs = neofs, threshold = threshold, + lon = lon, lat = lat, ncenters = ncenters, method = method) + } + return(result) +} + + +.WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", + nstart = 30) { names(dim(data)) <- c("sdate", "ftime", "lat", "lon") sdate <- which(names(dim(data)) == "sdate") @@ -24,8 +89,9 @@ AtomicWeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, } if (EOFS == TRUE) { - #data <- princomp(data[,subs], cor = FALSE)$scores - dataPC <- EOF(data, lat = as.vector(lat), lon = as.vector(lon), neofs = neofs) + dataPC <- EOF(data, lat = as.vector(lat), + lon = as.vector(lon), + neofs = neofs) if (is.null(threshold)){ threshold <- sum(dataPC$var) cluster_input <- dataPC$PC @@ -40,36 +106,26 @@ AtomicWeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, dim(cluster_input) <- c(nftimes * nsdates, nlat * nlon) } if (method == "kmeans") { - result <- kmeans(cluster_input, centers = ncenters, + clust <- kmeans(cluster_input, centers = ncenters, iter.max = 100, nstart = nstart, trace = FALSE) - reconstructed <- array(0, c(ncenters, nlat, nlon)) + result <- array(0, c(ncenters, nlat, nlon)) data <- aperm(data, c(2, 3, 1)) - reconstructed <- Composite(data, result$cluster) - names(dim(reconstructed$composite)) <- c("lon", "lat", "cluster") + result <- Composite(data, clust$cluster) + names(dim(result$composite)) <- c("lon", "lat", "cluster") cluster_timeseries <- list(lengths = c(), values = c()) frequency <- persistence <- matrix(NA, nsdates, ncenters) for (i in 1 : nsdates) { - occurences <- rle(result$cluster[((i * nftimes) + 1 - nftimes) : (i * nftimes)]) - cluster_timeseries <- list(lengths = c(cluster_timeseries$lengths, occurences$lengths), - values = c(cluster_timeseries$values, occurences$values)) + occurences <- + rle(result$cluster[((i * nftimes) + 1 - nftimes):(i * nftimes)]) + cluster_timeseries <-list( lengths = c(cluster_timeseries$lengths, + occurences$lengths), + values = c(cluster_timeseries$values, occurences$values) + ) for (j in 1 : ncenters) { frequency[i,j] <- (sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 persistence[i,j] <- mean(occurences$lengths[occurences$values == j]) } } - # for (i in 1 : ncenters) { - # for (j in 1 : nsdates) { - # timeseries_subset <- cluster_timeseries$lengths#[(1 +((nftimes -1) * j)) : (nftimes * j)] - # cluster_subset <- cluster_timeseries$values[(1 +((nftimes -1) * j)) : (nftimes * j)] - # print(timeseries_subset) - # print(cluster_subset) - # print((1 +((nftimes -1) * j)) : (nftimes * j)) - # stop() - # frequency[i, j] <- (sum(timeseries_subset[cluster_subset == i]) / length(nftimes)) * 100 - # persistence[i,j] <- mean(timeseries_subset[cluster_subset == i]) - # } - # #frequency[i] <- (sum(cluster_timeseries$lengths[cluster_timeseries$values == i]) / length(result$cluster)) * 100 - # } } else { result <- hclust(dist(cluster_input), method = method) clusterCut <- cutree(result, ncenters) @@ -77,33 +133,24 @@ AtomicWeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, result <- Composite(data, clusterCut) } if (method == "kmeans") { - return(list(composite = reconstructed$composite, pvalue = reconstructed$pvalue, cluster = as.array(result$cluster), center = as.array(result$center), - cluster_lengths = as.array(cluster_timeseries$lengths), cluster_values = as.array(cluster_timeseries$values), - persistence = as.array(persistence), frequency = frequency)) + return( + list( + composite = result$composite, + pvalue = result$pvalue, + cluster = as.array(clust$cluster), + center = as.array(clust$center), + cluster_lengths = as.array(cluster_timeseries$lengths), + cluster_values = as.array(cluster_timeseries$values), + persistence = as.array(persistence), + frequency = frequency + ) + ) } else { - return(list(composite = result$composite, pvalue = result$pvalue, cluster = as.array(clusterCut))) + return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = as.array(clusterCut) + )) } } - - - -WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", - nstart = 30, iter.max = 100, ncores = NULL) { - if (length(dim(data)) > 4) { - sdate <- which(names(dim(data)) == "sdate") - ftime <- which(names(dim(data)) == "ftime") - lon_dim <- which(names(dim(data)) == "lon") - lat_dim <- which(names(dim(data)) == "lat") - dims <- c(1 : length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] - data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) - margins <- 5 : length(dim(data)) - result <- Apply(data = list(data), margins = list(margins), fun = "AtomicWeatherRegime", EOFS = EOFS, neofs = neofs, - threshold = threshold, lon = lon, lat = lat, ncenters = ncenters, method = method, - ncores = ncores) - } else { - result <- AtomicWeatherRegime(data, EOFS = EOFS, neofs = neofs, threshold = threshold, - lon = lon, lat = lat, ncenters = ncenters, method = method) - } - -} -- GitLab From 796e547b22eedb66f0d04424adfa729e4b484979 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 11 Dec 2019 13:18:21 +0100 Subject: [PATCH 005/184] adding the first version of the documentation --- R/RegimesAssign.R | 184 +++++++++++++++++++++++++++------------------- R/WeatherRegime.R | 3 +- 2 files changed, 110 insertions(+), 77 deletions(-) diff --git a/R/RegimesAssign.R b/R/RegimesAssign.R index 5fa4992b..fd7ca6a4 100644 --- a/R/RegimesAssign.R +++ b/R/RegimesAssign.R @@ -1,37 +1,123 @@ -anom2regime <- function(ref, target, method = 'distance', lat) { - posdim <- which(names(dim(ref)) == 'nclust') - poslat <- which(names(dim(ref)) == 'lat') - poslon <- which(names(dim(ref)) == 'lon') +#' @rdname RegimesAssign +#' @title Function for matching a field of anomalies with +#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function). +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function performs the matching between a field of anomalies and a set +#' of maps which will be used as a reference. The anomalies will be assigned to the reference map +#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +#' (method=‘ACC’) is obtained. +#' +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. +#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param lat Vector of latitudes. +#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or +#' the maximum spatial correlation (method=’ACC’) between the maps. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.), +#' \code{cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +#' \code{frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#' +#' +#'@examples +#'@export + + +RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { + posdim <- which(names(dim(ref.maps)) == 'nclust') + poslat <- which(names(dim(ref.maps)) == 'lat') + poslon <- which(names(dim(ref.maps)) == 'lon') + poslat_ano <- which(names(dim(data)) == 'lat') + poslon_ano <- which(names(dim(data)) == 'lon') + + nclust <- dim(ref.maps)[posdim] + nlat <- dim(ref.maps)[poslat] + nlon <- dim(ref.maps)[poslon] + + + if (is.null(names(dim(ref.maps))) | is.null(names(dim(data)))) { + stop( + 'The arrays should include dimensions names map.ref[nclust,lat,lon] + and map.targ [lat,lon]' + ) + } + + if (length(lat) != dim(ref.maps)[poslat]) { + stop('latitudes do not match with the maps') + } + + assign <- + Apply( + data = list(map.targ = data), + margins = c((1:length(dim( + data + )))[-c(poslat_ano, poslon_ano)]) , + fun = '.anom2regime', + map.ref = ref.maps, + lat = lat, + method = method + ) + + anom_array <- + array(data, dim = c(prod(dim(data)[-c(poslat_ano, poslon_ano)]), nlat, nlon)) + rm(data) + index <- as.vector(assign$output1) + recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = index) + freqs <- rep(NA, nclust) + for (n in 1:nclust) { + freqs[n] <- (length(which(index == n)) / length(index)) * 100 + } + output <- + list( + composite = recon$composite, + pvalue = recon$pvalue, + cluster = assign$output1, + frequency = freqs + ) + return(output) +} + + +.anom2regime <- function(map.ref, map.targ, method = 'distance', lat) { + posdim <- which(names(dim(map.ref)) == 'nclust') + poslat <- which(names(dim(map.ref)) == 'lat') + poslon <- which(names(dim(map.ref)) == 'lon') - nclust <- dim(ref)[posdim] + nclust <- dim(map.ref)[posdim] - if (all(dim(ref)[-posdim] != dim(target))) { - stop('The target should have the same dimensions [lat,lon] that - the reference ') + if (all(dim(map.ref)[-posdim] != dim(map.targ))) { + stop('The map.targ should have the same dimensions [lat,lon] that + the map.reference ') } - if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { + if (is.null(names(dim(map.ref))) | is.null(names(dim(map.targ)))) { stop( - 'The arrays should include dimensions names ref[nclust,lat,lon] - and target [lat,lon]' + 'The arrays should include dimensions names map.ref[nclust,lat,lon] + and map.targ [lat,lon]' ) } - if (length(lat) != dim(ref)[poslat]) { + if (length(lat) != dim(map.ref)[poslat]) { stop('latitudes do not match with the maps') } # This dimensions are reorganized - ref <- aperm(ref, c(posdim, poslat, poslon)) - target <- - aperm(target, c(which(names(dim( - target + map.ref <- aperm(map.ref, c(posdim, poslat, poslon)) + map.targ <- + aperm(map.targ, c(which(names(dim( + map.targ )) == 'lat'), which(names(dim( - target + map.targ )) == 'lon'))) # weights are defined - latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(ref)[3]) + latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(map.ref)[3]) rmsdiff <- function(x, y) { @@ -55,10 +141,10 @@ anom2regime <- function(ref, target, method = 'distance', lat) { for (i in 1:nclust) { corr[i] <- ACC(InsertDim(InsertDim( - InsertDim(ref[i, , ] * latWeights, 1, 1), 2, 1 + InsertDim(map.ref[i, , ] * latWeights, 1, 1), 2, 1 ), 3, 1), InsertDim(InsertDim( - InsertDim(target * latWeights, 1, 1), 2, 1 + InsertDim(map.targ * latWeights, 1, 1), 2, 1 ), 3, 1))$ACC[2] } assign <- which(corr == max(corr)) @@ -67,64 +153,10 @@ anom2regime <- function(ref, target, method = 'distance', lat) { if (method == 'distance') { rms <- rep(NA, nclust) for (i in 1:nclust) { - rms[i] <- rmsdiff(ref[i, , ] * latWeights, target * latWeights) + rms[i] <- rmsdiff(map.ref[i, , ] * latWeights, map.targ * latWeights) } assign <- which(rms == min(rms)) } return(assign) - } - -RegimesAssign <- function(var_ano, ref_maps, lats, method = 'distance') { - posdim <- which(names(dim(ref_maps)) == 'nclust') - poslat <- which(names(dim(ref_maps)) == 'lat') - poslon <- which(names(dim(ref_maps)) == 'lon') - poslat_ano <- which(names(dim(var_ano)) == 'lat') - poslon_ano <- which(names(dim(var_ano)) == 'lon') - - nclust <- dim(ref_maps)[posdim] - nlat <- dim(ref_maps)[poslat] - nlon <- dim(ref_maps)[poslon] - - - if (is.null(names(dim(ref_maps))) | is.null(names(dim(var_ano)))) { - stop( - 'The arrays should include dimensions names ref[nclust,lat,lon] - and target [lat,lon]' - ) - } - - if (length(lats) != dim(ref_maps)[poslat]) { - stop('latitudes do not match with the maps') - } - - assign <- - Apply( - data = list(target = var_ano), - margins = c((1:length(dim( - var_ano - )))[-c(poslat_ano, poslon_ano)]) , - fun = 'anom2regime', - ref = ref_maps, - lat = lats, - method = method - ) - - anom_array <- - array(var_ano, dim = c(prod(dim(var_ano)[-c(poslat_ano, poslon_ano)]), nlat, nlon)) - rm(var_ano) - index <- as.vector(assign$output1) - recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = index) - freqs <- rep(NA, nclust) - for (n in 1:nclust) { - freqs[n] <- (length(which(index == n)) / length(index)) * 100 - } - output <- - list( - composite = recon$composite, - pvalue = recon$pvalue, - cluster = assign$output1, - frequency = freqs - ) - return(output) - } +} diff --git a/R/WeatherRegime.R b/R/WeatherRegime.R index 70a750e9..7200240d 100644 --- a/R/WeatherRegime.R +++ b/R/WeatherRegime.R @@ -32,7 +32,8 @@ #'@param ncores The number of multicore threads to use for parallel computation}. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (a matrix of EOF patterns obtained by regression for each variable), +#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +# dependence of the data with the same structure as Composite.), #' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), #' \code{center} (A vector of integers (from 1:ncenters) indicating the cluster to which each point is allocated (only if method=’kmeans’ has been selected).), #' \code{cluster_lengths} (Length of repeated values in the cluster time series (only if method=’kmeans’ has been selected).), -- GitLab From 717f4efb2ae17b653bc2eaebe32ac3dce0c0041b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 11 Dec 2019 18:37:56 +0100 Subject: [PATCH 006/184] changes in the functions --- R/RegimesAssign.R | 96 +++++++------- R/WeatherRegime.R | 309 ++++++++++++++++++++++++++++------------------ 2 files changed, 237 insertions(+), 168 deletions(-) diff --git a/R/RegimesAssign.R b/R/RegimesAssign.R index fd7ca6a4..aaa5ead7 100644 --- a/R/RegimesAssign.R +++ b/R/RegimesAssign.R @@ -24,72 +24,69 @@ #' \code{cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , #' \code{frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #' -#' +#'@import s2dverification +#'@import multiApply #'@examples #'@export - RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { - posdim <- which(names(dim(ref.maps)) == 'nclust') - poslat <- which(names(dim(ref.maps)) == 'lat') - poslon <- which(names(dim(ref.maps)) == 'lon') - poslat_ano <- which(names(dim(data)) == 'lat') - poslon_ano <- which(names(dim(data)) == 'lon') - - nclust <- dim(ref.maps)[posdim] - nlat <- dim(ref.maps)[poslat] - nlon <- dim(ref.maps)[poslon] - - + if (is.null(names(dim(ref.maps))) | is.null(names(dim(data)))) { stop( - 'The arrays should include dimensions names map.ref[nclust,lat,lon] + 'The arrays should include dimensions names map.ref[lat,lon,cluster] and map.targ [lat,lon]' ) } - if (length(lat) != dim(ref.maps)[poslat]) { + if (length(lat) != dim(ref.maps)['lat']) { stop('latitudes do not match with the maps') } + + if (any(names(dim(ref.maps))=='member')){ + names(dim(ref.maps)['member'])='member_obs' + } + if (any(names(dim(ref.maps))=='dataset')){ + names(dim(ref.maps)['dataset'])='dataset_obs' + } + print(dim(ref.maps)) assign <- - Apply( - data = list(map.targ = data), - margins = c((1:length(dim( - data - )))[-c(poslat_ano, poslon_ano)]) , + Apply( data = list(map.targ = data,map.ref=ref.maps), + target_dims = list(c('lat','lon'), + c('lat','lon','cluster')), fun = '.anom2regime', - map.ref = ref.maps, lat = lat, method = method - ) - + )[[1]] + anom_array <- array(data, dim = c(prod(dim(data)[-c(poslat_ano, poslon_ano)]), nlat, nlon)) - rm(data) - index <- as.vector(assign$output1) - recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = index) + # to be replaced with MergeDims + + recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = assign) freqs <- rep(NA, nclust) for (n in 1:nclust) { - freqs[n] <- (length(which(index == n)) / length(index)) * 100 + freqs[n] <- (length(which(assign == n)) / length(assign)) * 100 } output <- list( composite = recon$composite, pvalue = recon$pvalue, - cluster = assign$output1, + cluster = assign, frequency = freqs ) return(output) } + + .anom2regime <- function(map.ref, map.targ, method = 'distance', lat) { - posdim <- which(names(dim(map.ref)) == 'nclust') + posdim <- which(names(dim(map.ref)) == 'cluster') poslat <- which(names(dim(map.ref)) == 'lat') poslon <- which(names(dim(map.ref)) == 'lon') - nclust <- dim(map.ref)[posdim] + nclust <- dim(map.ref)['cluster'] if (all(dim(map.ref)[-posdim] != dim(map.targ))) { stop('The map.targ should have the same dimensions [lat,lon] that @@ -103,7 +100,7 @@ RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { ) } - if (length(lat) != dim(map.ref)[poslat]) { + if (length(lat) != dim(map.ref)['lat']) { stop('latitudes do not match with the maps') } @@ -117,24 +114,8 @@ RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { )) == 'lon'))) # weights are defined - latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(map.ref)[3]) - - - rmsdiff <- function(x, y) { - dims <- dim(x) - ndims <- length(dims) - if (ndims != 2 | ndims != length(dim(y))) { - stop('x and y should be maps') - } - map_diff <- NA * x - for (i in 1:dims[1]) { - for (j in 1:dims[2]) { - map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 - } - } - rmsdiff <- sqrt(mean(map_diff)) - return(rmsdiff) - } + latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(map.ref)['lon']) + names(dim(latWeights))<-c('lat','lon') if (method == 'ACC') { corr <- rep(NA, nclust) @@ -153,10 +134,25 @@ RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { if (method == 'distance') { rms <- rep(NA, nclust) for (i in 1:nclust) { - rms[i] <- rmsdiff(map.ref[i, , ] * latWeights, map.targ * latWeights) + rms[i] <- .rmsdiff(map.ref[i, , ] * latWeights, map.targ * latWeights) } assign <- which(rms == min(rms)) } return(assign) } +.rmsdiff <- function(x, y) { + dims <- dim(x) + ndims <- length(dims) + if (ndims != 2 | ndims != length(dim(y))) { + stop('x and y should be maps') + } + map_diff <- NA * x + for (i in 1:dims[1]) { + for (j in 1:dims[2]) { + map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 + } + } + rmsdiff <- sqrt(mean(map_diff)) + return(rmsdiff) +} diff --git a/R/WeatherRegime.R b/R/WeatherRegime.R index 7200240d..8f50babb 100644 --- a/R/WeatherRegime.R +++ b/R/WeatherRegime.R @@ -3,33 +3,33 @@ #' #' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} #' -#' @description This function computes the weather regimes from a cluster analysis. -#'It can be applied over the dataset with dimensions -#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the -#'EOFs analysis to filter the dataset. -#'The cluster analysis can be performed with the traditional k-means or those methods +#' @description This function computes the weather regimes from a cluster analysis. +#'It can be applied over the dataset with dimensions +#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the +#'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods #'included in the hclust (stats package). #' -#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). -#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, -#' 4961–4976, doi:10.1007/s00382-019-04839-5. -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' -#'@param data Array of data (anomalies) with dimensions c(year/month, month/day, lon, lat). +#'@param data n array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. #'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. #'@param threshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. #'@param lon Vector of longitudes. #'@param lat Vector of latitudes. #'@param ncenters Number of clusters to be calculated with the clustering function. -#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) -#'but the function also support the different methods included in the hclust . These methods are: -#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. #'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation}. +#'@param ncores The number of multicore threads to use for parallel computation}. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial @@ -39,119 +39,192 @@ #' \code{cluster_lengths} (Length of repeated values in the cluster time series (only if method=’kmeans’ has been selected).), #' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), #' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -#' -#'@examples +#'@import s2dverification +#'@import multiApply +#'@examples #'@export -WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", - nstart = 30, iter.max = 100, ncores = NULL) { - if (length(dim(data)) > 4) { - sdate <- which(names(dim(data)) == "sdate") - ftime <- which(names(dim(data)) == "ftime") - lon_dim <- which(names(dim(data)) == "lon") - lat_dim <- which(names(dim(data)) == "lat") - dims <- c(1 : length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] - data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) - margins <- 5 : length(dim(data)) - result <- Apply(data = list(data), margins = list(margins), fun = ".WeatherRegime", EOFS = EOFS, neofs = neofs, - threshold = threshold, lon = lon, lat = lat, ncenters = ncenters, method = method, - ncores = ncores) - } else { - result <- .WeatherRegime(data, EOFS = EOFS, neofs = neofs, threshold = threshold, - lon = lon, lat = lat, ncenters = ncenters, method = method) +WeatherRegime <- + function(data, + EOFS = TRUE, + neofs = 30, + threshold = NULL, + lon = NULL, + lat = NULL, + ncenters = NULL, + method = "kmeans", + nstart = 30, + iter.max = 100, + ncores = NULL) { + if (is.null(names(dim(data)))) { + stop('data must be an array with named dimensions') + } + if (length(dim(data)) > 4) { + sdate <- which(names(dim(data)) == "sdate") + ftime <- which(names(dim(data)) == "ftime") + lon_dim <- which(names(dim(data)) == "lon") + lat_dim <- which(names(dim(data)) == "lat") + dims <- + c(1:length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] + data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) + margins <- 5:length(dim(data)) + result <- + Apply( + data = list(data), + margins = list(margins), + fun = ".WeatherRegime", + EOFS = EOFS, + neofs = neofs, + threshold = threshold, + lon = lon, + lat = lat, + ncenters = ncenters, + method = method, + ncores = ncores + ) + } else { + result <- + .WeatherRegime( + data, + EOFS = EOFS, + neofs = neofs, + threshold = threshold, + lon = lon, + lat = lat, + ncenters = ncenters, + method = method + ) + } + return(result) } - return(result) -} -.WeatherRegime <- function(data, EOFS = TRUE, neofs = 30, threshold = NULL, lon = NULL, lat = NULL, ncenters = NULL, method = "kmeans", - nstart = 30) { - - names(dim(data)) <- c("sdate", "ftime", "lat", "lon") - sdate <- which(names(dim(data)) == "sdate") - ftime <- which(names(dim(data)) == "ftime") - nftimes <- dim(data)[ftime] - nsdates <- dim(data)[sdate] - lon2 <- which(names(dim(data)) == "lon") - lat2 <- which(names(dim(data)) == "lat") - data <- aperm(data, c(ftime, sdate, lat2, lon2)) - nlon <- dim(data)[lon2] - nlat <- dim(data)[lat2] - dim(data) <- c(nftimes * nsdates, nlat, nlon) - - if (is.null(ncenters)) { - stop("ncenters must be specified") - } - if (EOFS == TRUE && is.null(lon)) { - stop("longitudes must be specified") - } - if (EOFS == TRUE && is.null(lat)) { - stop("latitudes must be specified") - } - - if (EOFS == TRUE) { - dataPC <- EOF(data, lat = as.vector(lat), - lon = as.vector(lon), - neofs = neofs) - if (is.null(threshold)){ - threshold <- sum(dataPC$var) - cluster_input <- dataPC$PC +.WeatherRegime <- + function(data, + EOFS = TRUE, + neofs = 30, + threshold = NULL, + lon = NULL, + lat = NULL, + ncenters = NULL, + method = "kmeans", + nstart = 30) { + if (is.null(names(dim(data)))) { + stop('data must be an array with named dimensions') + } + if (!is.null(lat) && dim(data)['lat'] != length(lat)) { + stop('the latitudes do not match with the lat dimension of data') + } + if (is.null(ncenters)) { + stop("ncenters must be specified") + } + if (EOFS == TRUE && is.null(lon)) { + stop("longitudes must be specified") + } + if (EOFS == TRUE && is.null(lat)) { + stop("latitudes must be specified") + } + + sdate <- which(names(dim(data)) == "sdate") + ftime <- which(names(dim(data)) == "ftime") + nftimes <- dim(data)[ftime] + nsdates <- dim(data)[sdate] + lon2 <- which(names(dim(data)) == "lon") + lat2 <- which(names(dim(data)) == "lat") + data <- aperm(data, c(ftime, sdate, lat2, lon2)) + nlon <- dim(data)[lon2] + nlat <- dim(data)[lat2] + dim(data) <- + c(nftimes * nsdates, nlat, nlon)# to be changed by mergedims + names(dim(data)) <- c('time', 'lat', 'lon') + + + if (EOFS == TRUE) { + dataPC <- EOF(data, + lat = as.vector(lat), + lon = as.vector(lon), + neofs = neofs) + if (is.null(threshold)) { + threshold <- sum(dataPC$var) + cluster_input <- dataPC$PC + } else { + threshold <- threshold + minPC <- + head(as.numeric(which(cumsum(dataPC$var) > threshold)), 1) + cluster_input <- dataPC$PC[, 1:minPC] + } } else { - threshold <- threshold - minPC <- head(as.numeric(which(cumsum(dataPC$var) > threshold)), 1) - cluster_input <- dataPC$PC[, 1 : minPC] } - } else { - cluster_input <- data - latWeights <- InsertDim(InsertDim(cos(lat*pi/180), 1, nftimes*nsdates), 3, nlon) - cluster_input <- cluster_input * latWeights - dim(cluster_input) <- c(nftimes * nsdates, nlat * nlon) - } - if (method == "kmeans") { - clust <- kmeans(cluster_input, centers = ncenters, - iter.max = 100, nstart = nstart, trace = FALSE) - result <- array(0, c(ncenters, nlat, nlon)) - data <- aperm(data, c(2, 3, 1)) - result <- Composite(data, clust$cluster) - names(dim(result$composite)) <- c("lon", "lat", "cluster") - cluster_timeseries <- list(lengths = c(), values = c()) - frequency <- persistence <- matrix(NA, nsdates, ncenters) - for (i in 1 : nsdates) { - occurences <- - rle(result$cluster[((i * nftimes) + 1 - nftimes):(i * nftimes)]) - cluster_timeseries <-list( lengths = c(cluster_timeseries$lengths, - occurences$lengths), - values = c(cluster_timeseries$values, occurences$values) - ) - for (j in 1 : ncenters) { - frequency[i,j] <- (sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 - persistence[i,j] <- mean(occurences$lengths[occurences$values == j]) + cluster_input <- data + latWeights <- + InsertDim(InsertDim(cos(lat * pi / 180), 1, nftimes * nsdates), 3, nlon) + cluster_input <- cluster_input * latWeights + dim(cluster_input) <- c(nftimes * nsdates, nlat * nlon) + } + if (method == "kmeans") { + if (any(is.na(cluster_input))) { + posnas <- unique(which(is.na(cluster_input), arr.ind = T)[, 2]) + cluster_input <- cluster_input[, -posnas] + } + clust <- kmeans( + cluster_input, + centers = ncenters, + iter.max = 100, + nstart = nstart, + trace = FALSE + ) + + if (any(is.na(cluster_input))) { + centers <- array(NA, dim = c(ncenters, nlon * nlat)) + centers [, -c(posnas)] <- as.array(clust$center) + } else{ + centers <- as.array(clust$center) + } + result <- array(0, c(ncenters, nlat, nlon)) + # the order of the data dimensions is changed ('lat','lon','time') + result <- Composite(aperm(data, c(2, 3, 1)), clust$cluster) + names(dim(result$composite)) <- c("lat", "lon", "cluster") + cluster_timeseries <- list(lengths = c(), values = c()) + frequency <- persistence <- matrix(NA, nsdates, ncenters) + for (i in 1:nsdates) { + occurences <- + rle(clust$cluster[((i * nftimes) + 1 - nftimes):(i * nftimes)]) + cluster_timeseries <- + list( + lengths = c(cluster_timeseries$lengths, + occurences$lengths), + values = c(cluster_timeseries$values, occurences$values) + ) + for (j in 1:ncenters) { + frequency[i, j] <- + (sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 + persistence[i, j] <- + mean(occurences$lengths[occurences$values == j]) + } } + } else { + result <- hclust(dist(cluster_input), method = method) + clusterCut <- cutree(result, ncenters) + result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) } - } else { - result <- hclust(dist(cluster_input), method = method) - clusterCut <- cutree(result, ncenters) - data <- aperm(data, c(3, 2, 1)) - result <- Composite(data, clusterCut) - } - if (method == "kmeans") { - return( - list( + if (method == "kmeans") { + return( + list( + composite = result$composite, + pvalue = result$pvalue, + cluster = as.array(clust$cluster), + center = centers, + cluster_lengths = as.array(cluster_timeseries$lengths), + cluster_values = as.array(cluster_timeseries$values), + persistence = as.array(persistence), + frequency = frequency + ) + ) + } else { + return(list( composite = result$composite, pvalue = result$pvalue, - cluster = as.array(clust$cluster), - center = as.array(clust$center), - cluster_lengths = as.array(cluster_timeseries$lengths), - cluster_values = as.array(cluster_timeseries$values), - persistence = as.array(persistence), - frequency = frequency - ) - ) - } else { - return(list( - composite = result$composite, - pvalue = result$pvalue, - cluster = as.array(clusterCut) - )) + cluster = as.array(clusterCut) + )) + } } -} -- GitLab From b9ac1a5792d9d417935ed12621ef5da47355c3cd Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 12 Dec 2019 17:53:50 +0100 Subject: [PATCH 007/184] Parameter filter_span added --- R/CST_Anomaly.R | 31 ++++++++++++++++++++++++++++--- man/CST_Anomaly.Rd | 4 +++- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/R/CST_Anomaly.R b/R/CST_Anomaly.R index e76c46ab..8699b860 100644 --- a/R/CST_Anomaly.R +++ b/R/CST_Anomaly.R @@ -12,7 +12,7 @@ #'@param cross A logical value indicating whether cross-validation should be applied or not. Default = FALSE. #'@param memb A logical value indicating whether Clim() computes one climatology for each experimental data #'product member(TRUE) or it computes one sole climatology for all members (FALSE). Default = TRUE. -#' +#'@param filter_span a numeric value indicating the degree of smoothing. This option is only available if parameter \code{cross} is set to FALSE. #'@param dim_anom An integer indicating the dimension along which the climatology will be computed. It #'usually corresponds to 3 (sdates) or 4 (ftime). Default = 3. #' @@ -48,7 +48,8 @@ #' #' #'@export -CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) { +CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, + filter_span = NULL, dim_anom = 3) { if (!inherits(exp, 's2dv_cube') || !inherits(obs, 's2dv_cube')) { stop("Parameter 'exp' and 'obs' must be of the class 's2dv_cube', ", @@ -137,7 +138,22 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_ # Without cross-validation } else { tmp <- Clim(var_exp = exp$data, var_obs = obs$data, memb = memb) - + if (!is.null(filter_span)) { + if (is.numeric(filter_span)) { + pos_dims <- names(dim(tmp$clim_exp)) + reorder <- match(pos_dims, c('ftime', + pos_dims[-which(pos_dims == 'ftime')])) + tmp$clim_obs <- aperm(apply(tmp$clim_obs, c(1 : + length(dim(tmp$clim_obs)))[-which(names(dim(tmp$clim_obs)) == 'ftime')], + .Loess, loess_span = filter_span), reorder) + tmp$clim_exp <- aperm(apply(tmp$clim_exp, c(1 : + length(dim(tmp$clim_exp)))[-which(names(dim(tmp$clim_exp)) == 'ftime')], + .Loess, loess_span = filter_span), reorder) + } else { + warning("Paramater 'filter_span' is not numeric and any filter", + " is being applied.") + } + } if (memb) { clim_exp <- tmp$clim_exp clim_obs <- tmp$clim_obs @@ -149,6 +165,8 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_ clim_exp <- InsertDim(clim_exp, 3, dim_exp[3]) clim_obs <- InsertDim(clim_obs, 3, dim_obs[3]) ano <- NULL +print(dim(exp$data)) +print(dim(clim_exp)) ano$ano_exp <- exp$data - clim_exp ano$ano_obs <- obs$data - clim_obs } @@ -186,3 +204,10 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_ return(list(exp = exp, obs = obs)) } } +.Loess <- function(clim, loess_span) { + data <- data.frame(ensmean = clim, day = 1 : length(clim)) + loess_filt <- loess(ensmean ~ day, data, span = loess_span) + output <- predict(loess_filt) + return(output) +} + diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index e1c31f0c..0e90c0df 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -5,7 +5,7 @@ \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, - dim_anom = 3) + filter_span = NULL, dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -17,6 +17,8 @@ CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, \item{memb}{A logical value indicating whether Clim() computes one climatology for each experimental data product member(TRUE) or it computes one sole climatology for all members (FALSE). Default = TRUE.} +\item{filter_span}{a numeric value indicating the degree of smoothing. This option is only available if parameter \code{cross} is set to FALSE.} + \item{dim_anom}{An integer indicating the dimension along which the climatology will be computed. It usually corresponds to 3 (sdates) or 4 (ftime). Default = 3.} } -- GitLab From 62987e26391d04c6e8f80ec103de905259d16795 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 12 Dec 2019 17:55:48 +0100 Subject: [PATCH 008/184] sea also loess function --- R/CST_Anomaly.R | 2 +- man/CST_Anomaly.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_Anomaly.R b/R/CST_Anomaly.R index 8699b860..3abd39b7 100644 --- a/R/CST_Anomaly.R +++ b/R/CST_Anomaly.R @@ -44,7 +44,7 @@ #'anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) #'str(anom4) #' -#'@seealso \code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} +#'@seealso \code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}}, \code{\link{CST_Load}} and \code{\link[stats]{loess}} #' #' #'@export diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 0e90c0df..3f3ff81b 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -62,6 +62,6 @@ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } \seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}}, \code{\link{CST_Load}} and \code{\link[stats]{loess}} } -- GitLab From f9655fc0d67ef988c49f23a73b2cd951e2df335e Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 18 Dec 2019 12:30:34 +0100 Subject: [PATCH 009/184] remove prints in the code --- R/CST_Anomaly.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/R/CST_Anomaly.R b/R/CST_Anomaly.R index 3abd39b7..b35635f1 100644 --- a/R/CST_Anomaly.R +++ b/R/CST_Anomaly.R @@ -165,8 +165,6 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, clim_exp <- InsertDim(clim_exp, 3, dim_exp[3]) clim_obs <- InsertDim(clim_obs, 3, dim_obs[3]) ano <- NULL -print(dim(exp$data)) -print(dim(clim_exp)) ano$ano_exp <- exp$data - clim_exp ano$ano_obs <- obs$data - clim_obs } -- GitLab From af614959ef8499aa0ca46853f3f08838eb755fe1 Mon Sep 17 00:00:00 2001 From: Chihchung Chou Date: Fri, 21 Feb 2020 11:18:44 +0100 Subject: [PATCH 010/184] parameter na.rm added to CST_BiasCorrection --- R/CST_BiasCorrection.R | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/R/CST_BiasCorrection.R b/R/CST_BiasCorrection.R index 89821dca..94ddebb9 100644 --- a/R/CST_BiasCorrection.R +++ b/R/CST_BiasCorrection.R @@ -5,6 +5,7 @@ #' #'@param exp an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data} #'@param obs an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the observed data in the element named \code{$data}. +#'@param na.rm a logical value indicating whether missing values should be stripped before the computation proceeds, by default it is set to FALSE. #' #'@return an object of class \code{s2dv_cube} containing the bias corrected forecasts in the element called \code{$data} with the same dimensions of the experimental data. #' @@ -30,7 +31,7 @@ #'a <- CST_BiasCorrection(exp = exp, obs = obs) #'str(a) #'@export -CST_BiasCorrection <- function(exp, obs) { +CST_BiasCorrection <- function(exp, obs, na.rm = FALSE) { if (!inherits(exp, 's2dv_cube') || !inherits(obs, 's2dv_cube')) { stop("Parameter 'exp' and 'obs' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") @@ -41,7 +42,7 @@ CST_BiasCorrection <- function(exp, obs) { "of the parameter 'obs' must be equal to 1.") } dimnames <- names(dim(exp$data)) - BiasCorrected <- BiasCorrection(exp = exp$data, obs = obs$data) + BiasCorrected <- BiasCorrection(exp = exp$data, obs = obs$data, na.rm = na.rm) pos <- match(dimnames, names(dim(BiasCorrected))) BiasCorrected <- aperm(BiasCorrected, pos) names(dim(BiasCorrected)) <- dimnames @@ -51,7 +52,7 @@ CST_BiasCorrection <- function(exp, obs) { return(exp) } -BiasCorrection <- function (exp, obs) { +BiasCorrection <- function (exp, obs , na.rm = FALSE) { if (!all(c('member', 'sdate') %in% names(dim(exp)))) { stop("Parameter 'exp' must have the dimensions 'member' and 'sdate'.") @@ -69,6 +70,16 @@ BiasCorrection <- function (exp, obs) { warning("Parameter 'obs' contains NA values.") } + if (!is.logical(na.rm)) { + na.rm <- FALSE + warning("Paramater 'na.rm' must be a logical, it has been set to FALSE.") + } + + if (length(na.rm)>1) { + na.rm <- na.rm[1] + warning("Paramter 'na.rm' has length greater than 1, and only the fist element is used.") + } + target_dims_obs <- 'sdate' if ('member' %in% names(dim(obs))) { target_dims_obs <- c('member', target_dims_obs) @@ -76,11 +87,11 @@ BiasCorrection <- function (exp, obs) { BiasCorrected <- Apply(data = list(var_obs = obs, var_exp = exp), target_dims = list(target_dims_obs, c('member', 'sdate')), - fun = .sbc)$output1 + fun = .sbc , na.rm = na.rm)$output1 return(BiasCorrected) } -.sbc <- function(var_obs, var_exp) { +.sbc <- function(var_obs, var_exp , na.rm = FALSE) { nmembers <- dim(var_exp)['member'][] ntime <- dim(var_exp)['sdate'][] if (all(names(dim(var_exp)) != c('member','sdate'))) { @@ -96,10 +107,10 @@ BiasCorrection <- function (exp, obs) { obs <- var_obs[-t] # parameters - sd_obs <- sd(obs) - sd_exp <- sd(hcst) - clim_exp <- mean(hcst) - clim_obs <- mean(obs) + sd_obs <- sd(obs , na.rm = na.rm) + sd_exp <- sd(hcst , na.rm = na.rm)) + clim_exp <- mean(hcst , na.rm = na.rm)) + clim_obs <- mean(obs , na.rm = na.rm)) # bias corrected forecast corrected[ , t] <- ((fcst - clim_exp) * (sd_obs / sd_exp)) + clim_obs -- GitLab From 31aa1d090253019131eb3d578756c0748a8f41f2 Mon Sep 17 00:00:00 2001 From: Chihchung Chou Date: Fri, 21 Feb 2020 12:17:17 +0100 Subject: [PATCH 011/184] small bugfix for CST_BiasCorrection.R --- R/CST_BiasCorrection.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/CST_BiasCorrection.R b/R/CST_BiasCorrection.R index 94ddebb9..1da7fb5b 100644 --- a/R/CST_BiasCorrection.R +++ b/R/CST_BiasCorrection.R @@ -108,9 +108,9 @@ BiasCorrection <- function (exp, obs , na.rm = FALSE) { # parameters sd_obs <- sd(obs , na.rm = na.rm) - sd_exp <- sd(hcst , na.rm = na.rm)) - clim_exp <- mean(hcst , na.rm = na.rm)) - clim_obs <- mean(obs , na.rm = na.rm)) + sd_exp <- sd(hcst , na.rm = na.rm) + clim_exp <- mean(hcst , na.rm = na.rm) + clim_obs <- mean(obs , na.rm = na.rm) # bias corrected forecast corrected[ , t] <- ((fcst - clim_exp) * (sd_obs / sd_exp)) + clim_obs -- GitLab From 53d8920494c72896fedec891173d2feef69c2893 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 00:19:43 +0100 Subject: [PATCH 012/184] Working version - no dependences on new rainfarmr --- R/CST_RFTemp.R | 212 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 212 insertions(+) create mode 100644 R/CST_RFTemp.R diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R new file mode 100644 index 00000000..6ebfb381 --- /dev/null +++ b/R/CST_RFTemp.R @@ -0,0 +1,212 @@ +#' @rdname CST_RFTemp +#' @title Temperature downscaling of a CSTools object using lapse rate correction +#' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +#' @description This function implements a simple lapse rate correction of a +#' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. +#' @references Terzago, S. et al. (2018). NHESS 18(11), 2825-2840 http://doi.org/10.5194/nhess-18-2825-2018 +#' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, +#' containing the temperature fields to downscale. +#' The data object is expected to have an element named \code{$data} with at least two +#' The number of longitudes and latitudes in the input data is expected to be even and the same. If not +#' spatial dimensions named "lon" and "lat". +#' @param oro An object of the class 's2dv_cube' as returned by `CST_Load`, +#' containing fine scale orography (in meters). +#' @param xlim vector with longitude bounds for downscaling +#' @param ylim vector with latitude bounds for downscaling +#' @param lapse float with environmental lapse rate +#' @param lon_dim string with name of longitude dimension +#' @param lat_dim string with name of latitude dimension +#' @return CST_RFTemp() returns a downscaled CSTools object (i.e., of the class 's2dv_cube'). +#' @export +#' @import multiApply +#' @import rainfarmr +#' @examples +#' + +CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_dim = "lat") { + + res <- RFTemp(data$data, data$lon, data$lat, + oro$data, oro$lon, oro$lat, + xlim, ylim, lapse, lon_dim = lon_dim, lat_dim = lat_dim) + + data$data <- res$data + data$lon <- res$lon + data$lat <- res$lat + + return(data) +} + +#' @rdname RFTemp +#' @title Temperature downscaling of a CSTools object using lapse rate correction (reduced version) +#' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +#' @description This function implements a simple lapse rate correction of a +#' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. +#' @references Terzago, S. et al. (2018). NHESS 18(11), 2825-2840 http://doi.org/10.5194/nhess-18-2825-2018 +#' @param data Temperature array to downscale. +#' The input array is expected to have at least two dimensions named "lon" and "lat" by default +#' (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters) +#' @param lon Vector or array of longitudes. +#' @param lat Vector or array of latitudes. +#' @param oro Array containing fine-scale orography (in m) +#' @param xlim vector with longitude bounds for downscaling +#' @param ylim vector with latitude bounds for downscaling +#' @param lapse float with environmental lapse rate +#' @param lon_dim string with name of longitude dimension +#' @param lat_dim string with name of latitude dimension +#' @return RFTemp() returns a list containing the fine-scale longitudes, latitudes and the downscaled fields. +#' @export +#' @import multiApply +#' @import rainfarmr +#' @examples +#' + +RFTemp <- function(data, lon, lat, oro, lonoro, latoro, + xlim, ylim, lapse = 6.5, lon_dim = "lon", lat_dim = "lat") { + + # Repeatedly apply .downscalet + result <- Apply(data, target_dims=c(lon_dim, lat_dim), fun=.downscalet, + lon, lat, oro, lonoro, latoro, xlim, ylim, lapse=lapse)$output1 + names(dim(result))[1] <- names(dim(tas))[names(dim(tas))==lon_dim] + names(dim(result))[2] <- names(dim(tas))[names(dim(tas))==lat_dim] + + return(list(data = result, lon = lonoro, lat = latoro)) +} + + +#' Lapse-rate temperature correction downscaling +#' +#' @description Downscales a temperature field using a lapse-rate +#' correction based on a reference orography +#' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +#' @param lon vector of input longitudes +#' @param lat vector of input latitudes +#' @param t matrix of input temperature data +#' @param lono vector of orography longitudes +#' @param lato vector of orography latitudes +#' @param oro matrix of topographical elevations (in meters) +#' @param xlim vector of longitude bounds +#' @param ylim vector of latitude bounds +#' @param radius smoothing radius expressed in longitude units (default is half a large-scale pixel) +#' @param lapse environmental lapse rate (in K/Km) +#' @return A downscaled temperature matrix +#' @export +#' @examples +#' lon=5:20 +#' lat=35:40 +#' t=runif(16*6); dim(t)=c(16,6) +#' lono=seq(5,20,0.1) +#' lato=seq(35,40,0.1) +#' o=runif(151*51)*2000; dim(o)=c(151,51) +#' td=downscalet(lon, lat,t,lono,lato,o,c(8,12),c(36,38)) + +.downscalet <- function(t, lon, lat, oro, lono, lato, xlim, ylim, radius = 0, lapse = 6.5) { + + if (length(dim(t))==3) { + nt = dim(t)[3] + } else { + nt = 1 + dim(t) <- c(dim(t), 1) + } + + dxl <- lon[2] - lon[1] + if(radius==0) { + radius <- dxl/2 + } + #Add buffer + lon1 <- xlim[1] - radius + lon2 <- xlim[2] + radius + lat1 <- ylim[1] - radius + lat2 <- ylim[2] + radius + + orocut <- oro[(lono <= lon2) & (lono >= lon1), + (lato <= lat2) & (lato >= lat1)] + lonocut <- lono[(lono <= lon2) & (lono >= lon1)] + latocut <- lato[(lato <= lat2) & (lato >= lat1)] + + if (length(dim(tcut0))<3) { + dim(tcut0) <- c(dim(tcut0), 1) + } + + nx <- length(lonocut) + ny <- length(latocut) + + # Interpolate nn assuming a regular grid + tcut <- array(0., c(nx, ny, nt)) + dy <- lat[2]-lat[1] + dx <- lon[2]-lon[1] + jj <- ((latocut-(lat[1]-dy/2)) %/% dy + 1) + ii <- ((lonocut-(lon[1]-dx/2)) %/% dx + 1) + + if((ii[1]<0)|(ii[length(ii)]>length(lon))| + (jj[1]<0)|(jj[length(jj)]>length(lat))) { + stop("Downscaling area not contained in input data") + } + for (k in seq_len(nt)) { + for (j in seq_along(jj)) { + tcut[,j,k] <- t[ii,jj[j],k] + } + } + + dxol <- lonocut[2] - lonocut[1] + nrad <- as.integer(radius / abs(dxol) + 0.5) + + ns = length(lonocut) + orocuts=.smooth(orocut, nrad) + t1 <- -(orocut-orocuts)*lapse/1000. + + tout <- array(0., c(nx, ny, nt)) + for (i in seq_len(nt)) { + tout[,, i] <- .smooth(tcut[,,i], nrad) + t1 + } + downscalet <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]),] +} + +#' Smoothening using convolution with a circular kernel +#' +#' @description The input field is convolved with a circular kernel with equal +#' weights. Takes into account missing values. +#' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +#' @param z matrix with the input field to smoothen, with dimensions `c(ns, ns)` +#' @param sdim the smoothing kernel radius in pixel +#' @return The smoothened field. +#' @export +#' @examples +#' z <- rnorm(64 * 64) +#' dim(z) <- c(64, 64) +#' zs <- smooth(z, 8) +#' sd(zs) +#' # [1] 0.1334648 + +.smooth <- function(z, sdim) { + imask <- !is.finite(z) + z[imask] <- 0. + nsx <- dim(z)[1] + nsy <- dim(z)[2] + + mask <- matrix(0., nsx, nsy) + for (i in 1:nsx) { + for (j in 1:nsy) { + kx <- i - 1 + ky <- j - 1 + if (i > nsx / 2 + 1) { + kx <- i - nsx - 1 + } + if (j > nsy / 2 + 1) { + ky <- j - nsy - 1 + } + r2 <- kx * kx + ky * ky + #mask[i, j] <- exp( - (r2 / (sdim * sdim)) / 2) + mask[i, j] <- (r2 <= (sdim * sdim)) + } + } + fm <- fft(mask) + zf <- Re(fft(fm * fft(z), inverse = TRUE)) / sum(mask) / length(fm) + if (sum(imask) > 0) { + z[!imask] <- 1.0 + zf <- zf / (Re(fft(fm * fft(z), inverse = TRUE)) / + sum(mask) / length(fm)) + } + zf[imask] <- NA + return(zf) +} -- GitLab From fcfc92ce5744635a2539785bbe47488fa04a8cc3 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 12:07:23 +0100 Subject: [PATCH 013/184] added reference --- R/CST_RFTemp.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 6ebfb381..3615df05 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -3,7 +3,7 @@ #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. -#' @references Terzago, S. et al. (2018). NHESS 18(11), 2825-2840 http://doi.org/10.5194/nhess-18-2825-2018 +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: [High resolution (1-10 km) climate, land use and ocean change scenarios](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) #' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing the temperature fields to downscale. #' The data object is expected to have an element named \code{$data} with at least two @@ -41,7 +41,7 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. -#' @references Terzago, S. et al. (2018). NHESS 18(11), 2825-2840 http://doi.org/10.5194/nhess-18-2825-2018 +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: [High resolution (1-10 km) climate, land use and ocean change scenarios](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) #' @param data Temperature array to downscale. #' The input array is expected to have at least two dimensions named "lon" and "lat" by default #' (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters) -- GitLab From b48db9b3348d38b8e53166987bb308831ca056fd Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 15:50:33 +0100 Subject: [PATCH 014/184] minor doc improvements --- R/CST_RFTemp.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 3615df05..2a42a483 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -3,7 +3,7 @@ #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: [High resolution (1-10 km) climate, land use and ocean change scenarios](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] #' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing the temperature fields to downscale. #' The data object is expected to have an element named \code{$data} with at least two @@ -40,8 +40,8 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di #' @title Temperature downscaling of a CSTools object using lapse rate correction (reduced version) #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a -#' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: [High resolution (1-10 km) climate, land use and ocean change scenarios](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) +#' temperature field (a multidimensional array) as input +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] #' @param data Temperature array to downscale. #' The input array is expected to have at least two dimensions named "lon" and "lat" by default #' (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters) -- GitLab From 5f11e80197d77f037b728ee05498a11d6c034e22 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 17:41:11 +0100 Subject: [PATCH 015/184] added test --- tests/testthat/test-CST_RFTemp.R | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/testthat/test-CST_RFTemp.R diff --git a/tests/testthat/test-CST_RFTemp.R b/tests/testthat/test-CST_RFTemp.R new file mode 100644 index 00000000..9d577d64 --- /dev/null +++ b/tests/testthat/test-CST_RFTemp.R @@ -0,0 +1,40 @@ +context("Generic tests") +test_that("Sanity checks and simple use cases", { + # Generate simple synthetic data + t <- rnorm(6 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 + dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) + lon <- seq(4, 9, 1) + lat <- seq(42, 47, 1) + exp <- list(data = t, lat = lat, lon = lon) + o <- runif(29*29)*3000 + dim(o) <- c(lat = 29, lon = 29) + lon <- seq(3, 10, 0.25) - 100 + lat <- seq(41, 48, 0.25) -60 + oro <- list(data = o, lat = lat, lon = lon) + attr(oro, 'class') <- 's2dv_cube' + + expect_error( + res <- CST_RFTemp(exp, oro, xlim=c(1,3), ylim=c(1,3)), + "Parameter 'data' must be of the class 's2dv_cube', as output by CSTools::CST_Load." + ) + attr(exp, 'class') <- 's2dv_cube' + + expect_error( + res <- CST_RFTemp(exp, oro, xlim=c(1,3), ylim=c(1,3)), + "Orography not available for selected area" + ) + oro$lon = oro$lon + 100 + oro$lat = oro$lat + 60 + + expect_error( + res <- CST_RFTemp(exp, oro, xlim=c(3,8), ylim=c(43, 46)), + "Downscaling area not contained in input data" + ) + + res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) + + dimexp=dim(exp$data) + expect_equal(dim(res$data), c(lon=17,lat=13, + dimexp["dataset"], dimexp["member"], + dimexp["sdate"], dimexp["ftime"])) +}) -- GitLab From 062c6ef34fdde4b8ff6b90f7cca9171611e9f829 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 17:41:48 +0100 Subject: [PATCH 016/184] undefined variables --- R/CST_RFTemp.R | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 2a42a483..0bc7d631 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -25,6 +25,11 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_dim = "lat") { + if (!inherits(data, 's2dv_cube')) { + stop("Parameter 'data' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + res <- RFTemp(data$data, data$lon, data$lat, oro$data, oro$lon, oro$lat, xlim, ylim, lapse, lon_dim = lon_dim, lat_dim = lat_dim) @@ -66,8 +71,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, # Repeatedly apply .downscalet result <- Apply(data, target_dims=c(lon_dim, lat_dim), fun=.downscalet, lon, lat, oro, lonoro, latoro, xlim, ylim, lapse=lapse)$output1 - names(dim(result))[1] <- names(dim(tas))[names(dim(tas))==lon_dim] - names(dim(result))[2] <- names(dim(tas))[names(dim(tas))==lat_dim] + names(dim(result))[1] <- names(dim(data))[names(dim(data))==lon_dim] + names(dim(result))[2] <- names(dim(data))[names(dim(data))==lat_dim] return(list(data = result, lon = lonoro, lat = latoro)) } @@ -103,9 +108,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, if (length(dim(t))==3) { nt = dim(t)[3] - } else { + } else if (length(dim(t))==2) { nt = 1 dim(t) <- c(dim(t), 1) + } else { + stop("Input array must be 2D or 3D") } dxl <- lon[2] - lon[1] @@ -123,8 +130,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, lonocut <- lono[(lono <= lon2) & (lono >= lon1)] latocut <- lato[(lato <= lat2) & (lato >= lat1)] - if (length(dim(tcut0))<3) { - dim(tcut0) <- c(dim(tcut0), 1) + if(length(lonocut)==0 | length(latocut)==0) { + stop("Orography not available for selected area") } nx <- length(lonocut) @@ -137,8 +144,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, jj <- ((latocut-(lat[1]-dy/2)) %/% dy + 1) ii <- ((lonocut-(lon[1]-dx/2)) %/% dx + 1) - if((ii[1]<0)|(ii[length(ii)]>length(lon))| - (jj[1]<0)|(jj[length(jj)]>length(lat))) { + if((ii[1]<=0)|(ii[length(ii)]>length(lon))| + (jj[1]<=0)|(jj[length(jj)]>length(lat))) { stop("Downscaling area not contained in input data") } for (k in seq_len(nt)) { -- GitLab From fc78f4c705ceed4cc48ef5a834505f9d5debdb37 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 26 Feb 2020 17:48:41 +0100 Subject: [PATCH 017/184] added examples --- R/CST_RFTemp.R | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 0bc7d631..95a46b67 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -21,7 +21,20 @@ #' @import multiApply #' @import rainfarmr #' @examples -#' +#' # Generate simple synthetic data and downscale by factor 4 +#' t <- rnorm(6 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 +#' dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) +#' lon <- seq(4, 9, 1) +#' lat <- seq(42, 47, 1) +#' exp <- list(data = t, lat = lat, lon = lon) +#' attr(exp, 'class') <- 's2dv_cube' +#' o <- runif(29*29)*3000 +#' dim(o) <- c(lat = 29, lon = 29) +#' lon <- seq(3, 10, 0.25) +#' lat <- seq(41, 48, 0.25) +#' oro <- list(data = o, lat = lat, lon = lon) +#' attr(oro, 'class') <- 's2dv_cube' +#' res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_dim = "lat") { @@ -63,7 +76,16 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di #' @import multiApply #' @import rainfarmr #' @examples -#' +#' # Generate simple synthetic data and downscale by factor 4 +#' t <- rnorm(6 * 6 * 4)*10 + 273.15 + 10 +#' dim(t) <- c(ftime = 4, lat = 6, lon = 6) +#' lon <- seq(4, 9, 1) +#' lat <- seq(42, 47, 1) +#' o <- runif(29*29)*3000 +#' dim(o) <- c(lat = 29, lon = 29) +#' lono <- seq(3, 10, 0.25) +#' lato <- seq(41, 48, 0.25) +#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, xlim, ylim, lapse = 6.5, lon_dim = "lon", lat_dim = "lat") { -- GitLab From ef8f81fc41aff7415b5ae34c51d8fe5e37fea3cc Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Wed, 26 Feb 2020 18:30:43 +0100 Subject: [PATCH 018/184] Example with array added --- vignettes/PlotForecastPDF.Rmd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/vignettes/PlotForecastPDF.Rmd b/vignettes/PlotForecastPDF.Rmd index c6d89618..bab4a683 100644 --- a/vignettes/PlotForecastPDF.Rmd +++ b/vignettes/PlotForecastPDF.Rmd @@ -25,6 +25,10 @@ The first step is to put your forecasts in an appropriate format. For this vigne ```{r,fig.show = 'hide',warning=F} fcst <- data.frame(fcst1=rnorm(mean=25,sd=3,n=30),fcst2=rnorm(mean=23,sd=4.5,n=30)) PlotForecastPDF(fcst,tercile.limits=c(20,26)) + +fcst <- array(append(rnorm(mean=25,sd=3,n=30),rnorm(mean=23,sd=4.5,n=30)), dim = c(members = 30, 2)) +PlotForecastPDF(fcst,fcst.names=c('fcst1','fcst2'),tercile.limits=c(20,26)) + ``` ![Example 1](./Figures/PlotForecastPDF_ex1.png) -- GitLab From 3045995e4d2462fe6738bf6544e698290f1c9af0 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Thu, 27 Feb 2020 15:26:33 +0100 Subject: [PATCH 019/184] PlotForecastPDF vignette spaces and new example (unfinished) --- vignettes/PlotForecastPDF.Rmd | 48 +++++++++++++++++++++++++++-------- 1 file changed, 38 insertions(+), 10 deletions(-) diff --git a/vignettes/PlotForecastPDF.Rmd b/vignettes/PlotForecastPDF.Rmd index bab4a683..b25dc358 100644 --- a/vignettes/PlotForecastPDF.Rmd +++ b/vignettes/PlotForecastPDF.Rmd @@ -23,12 +23,9 @@ library(CSTools) The first step is to put your forecasts in an appropriate format. For this vignette we generate some random values from two normal distributions. The PlotForecastPDF by default will plot the ensemble members, the estimated density distributions and the tercile probabilities. ```{r,fig.show = 'hide',warning=F} -fcst <- data.frame(fcst1=rnorm(mean=25,sd=3,n=30),fcst2=rnorm(mean=23,sd=4.5,n=30)) -PlotForecastPDF(fcst,tercile.limits=c(20,26)) - -fcst <- array(append(rnorm(mean=25,sd=3,n=30),rnorm(mean=23,sd=4.5,n=30)), dim = c(members = 30, 2)) -PlotForecastPDF(fcst,fcst.names=c('fcst1','fcst2'),tercile.limits=c(20,26)) - +fcst <- data.frame( fcst1 = rnorm(mean = 25, sd = 3, n = 30), + fcst2 = rnorm( mean = 23, sd = 4.5, n = 30)) +PlotForecastPDF(fcst, tercile.limits = c(20, 26)) ``` ![Example 1](./Figures/PlotForecastPDF_ex1.png) @@ -37,15 +34,46 @@ PlotForecastPDF(fcst,fcst.names=c('fcst1','fcst2'),tercile.limits=c(20,26)) Changing the title, the forecast labels or the units will be needed in most cases. ```{r,fig.show = 'hide',warning=F} -fcst <- data.frame(fcst1=rnorm(mean=25,sd=3,n=30),fcst2=rnorm(mean=23,sd=4.5,n=30)) -PlotForecastPDF(fcst,tercile.limits=c(20,26),var.name="Temperature (ºC)",title="Forecasts valid on 2019-01-01 at Sunny Hills",fcst.names = c("model a","model b")) +fcst <- data.frame(fcst1 = rnorm(mean = 25, sd = 3, n = 30), + fcst2 = rnorm(mean = 23, sd = 4.5, n = 30)) +PlotForecastPDF(fcst, tercile.limits = c(20, 26), var.name = "Temperature (ºC)", + title = "Forecasts valid on 2019-01-01 at Sunny Hills", + fcst.names = c("model a", "model b")) ``` ![Example 2](./Figures/PlotForecastPDF_ex2.png) ### 3.- Adding extremes and observed values We can add the probability of extreme values and the observed values. The tercile and extreme limits can be specified for each panel separately, as well as the observed values. + +```{r,fig.show = 'hide',warning=F} +fcst <- data.frame(fcst1 = rnorm(mean = 25, sd = 3, n = 30), + fcst2 = rnorm(mean = 28, sd = 4.5, n = 30), fcst3 = rnorm(mean = 17, sd = 3, n = 30)) +PlotForecastPDF(fcst, tercile.limits = rbind(c(20, 26), c(22, 28), c(15, 22)), + var.name = "Temperature (ºC)", title = "Forecasts at Sunny Hills", + fcst.names = c("January", "February", "March"), obs = c(21, 24, 17), + extreme.limits = rbind(c(18, 28), c(20, 30), c(12, 24))) +``` + +The same example using a forecast in array format is provided. ```{r,fig.show = 'hide',warning=F} -fcst <- data.frame(fcst1=rnorm(mean=25,sd=3,n=30),fcst2=rnorm(mean=28,sd=4.5,n=30),fcst3=rnorm(mean=17,sd=3,n=30)) -PlotForecastPDF(fcst,tercile.limits=rbind(c(20,26),c(22,28),c(15,22)),var.name="Temperature (ºC)",title="Forecasts at Sunny Hills",fcst.names = c("January","February","March"),obs=c(21,24,17),extreme.limits = rbind(c(18,28),c(20,30),c(12,24))) +fcst <- array(cbind(cbind(rnorm(mean = 25, sd = 3, n = 30), + rnorm(mean = 23, sd = 4.5, n = 30)), rnorm(mean = 17, sd = 3, n = 30)), + dim = c(members = 30, 3)) +PlotForecastPDF(fcst, tercile.limits = rbind(c(20, 26), c(22, 28), c(15, 22)), + var.name = "Temperature (ºC)", title = "Forecasts at Sunny Hills", + fcst.names = c("January", "February", "March"), obs = c(21, 24, 17), + extreme.limits = rbind(c(18, 28), c(20, 30), c(12, 24))) ``` ![Example 3](./Figures/PlotForecastPDF_ex3.png) + +### 4.- Example using lonlat_data +An example using the lonlat_data from CSTools is provided. + +```{r,fig.show = 'hide',warning=F} +fcst <- data.frame(fcst1 = lonlat_data$exp$data[1,,1,1,1,1]-273.15, + fcst2 = lonlat_data$exp$data[1,,1,2,1,1]-273.15) +PlotForecastPDF(fcst, tercile.limits = c(5, 7), extreme.limits = c(4,8), var.name = "Temperature (ºC)", + title = "Forecasts valid on 2000-11 at sample mediterranean region", + fcst.names = c("November", "December")) +``` + -- GitLab From 26f188c9b2ca5519be5faf4eae3b2acbc970aa97 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Thu, 27 Feb 2020 15:31:49 +0100 Subject: [PATCH 020/184] minor changes --- vignettes/PlotForecastPDF.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/PlotForecastPDF.Rmd b/vignettes/PlotForecastPDF.Rmd index b25dc358..3e4fdb1e 100644 --- a/vignettes/PlotForecastPDF.Rmd +++ b/vignettes/PlotForecastPDF.Rmd @@ -1,5 +1,5 @@ --- -author: "Francesc Roura and Llorenç Lledó" +author: "Francesc Roura-Adserias and Llorenç Lledó" date: "`r Sys.Date()`" output: rmarkdown::html_vignette vignette: > -- GitLab From f47c8ea86eaeb6393ce0e1e8bcd227de5b85a369 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lloren=C3=A7=20Lled=C3=B3?= Date: Fri, 28 Feb 2020 16:13:33 +0100 Subject: [PATCH 021/184] Update PlotForecastPDF.R to solve bug in order of panels, and hide warning messages in R-3.6.1. --- R/PlotForecastPDF.R | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/R/PlotForecastPDF.R b/R/PlotForecastPDF.R index c40cc32c..14e6cd3a 100644 --- a/R/PlotForecastPDF.R +++ b/R/PlotForecastPDF.R @@ -220,7 +220,7 @@ PlotForecastPDF <- function(fcst, tercile.limits, extreme.limits = NULL, obs = N }) attr <- attr(hatch.ls, "split_labels") for (i in 1:length(hatch.ls)) { - hatch.ls[[i]] <- cbind(hatch.ls[[i]], attr[i, ]) + hatch.ls[[i]] <- cbind(hatch.ls[[i]], attr[i, ], row.names = NULL) } hatch.df <- do.call("rbind", hatch.ls) # Compute max y for each extreme category @@ -229,7 +229,7 @@ PlotForecastPDF <- function(fcst, tercile.limits, extreme.limits = NULL, obs = N }) attr <- attr(max.ls, "split_labels") for (i in 1:length(max.ls)) { - max.ls[[i]] <- cbind(max.ls[[i]], attr[i, ]) + max.ls[[i]] <- cbind(max.ls[[i]], attr[i, ], row.names = NULL) } max.df <- do.call("rbind", max.ls) } @@ -323,7 +323,8 @@ PlotForecastPDF <- function(fcst, tercile.limits, extreme.limits = NULL, obs = N pct2$lab.pos <- as.vector(apply(extreme.limits, 1, function(x) {c(x[1], NA, x[2])})) pct2 <- merge(pct2, max.df, by = c("init", "extremes")) # include potentially missing groups - pct2 <- pct2[CJ(levels(pct2$init), factor(c("Below P10", "Normal", "Above P90"), + pct2 <- pct2[CJ(factor(levels(pct2$init), levels = levels(pct2$init)), + factor(c("Below P10", "Normal", "Above P90"), levels = c("Below P10", "Normal", "Above P90"))), ] } #------------------------ -- GitLab From d1855836b3fe7178454220a9bff3c9983ff66864 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sun, 1 Mar 2020 18:20:36 +0100 Subject: [PATCH 022/184] added delta method --- R/CST_RFTemp.R | 170 +++++++++++++++++++++++++++++++++++++------------ 1 file changed, 130 insertions(+), 40 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 95a46b67..e393e88a 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -1,5 +1,5 @@ #' @rdname CST_RFTemp -#' @title Temperature downscaling of a CSTools object using lapse rate correction +#' @title Temperature downscaling of a CSTools object using lapse rate correction or a reference field #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. @@ -16,6 +16,8 @@ #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension +#' @param verbose logical if to print diagnostic output +#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction #' @return CST_RFTemp() returns a downscaled CSTools object (i.e., of the class 's2dv_cube'). #' @export #' @import multiApply @@ -36,7 +38,9 @@ #' attr(oro, 'class') <- 's2dv_cube' #' res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) -CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_dim = "lat") { +CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, + lon_dim = "lon", lat_dim = "lat", time_dim = NULL, + nolapse = FALSE, verbose=FALSE) { if (!inherits(data, 's2dv_cube')) { stop("Parameter 'data' must be of the class 's2dv_cube', ", @@ -44,8 +48,9 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di } res <- RFTemp(data$data, data$lon, data$lat, - oro$data, oro$lon, oro$lat, - xlim, ylim, lapse, lon_dim = lon_dim, lat_dim = lat_dim) + oro$data, oro$lon, oro$lat, xlim, ylim, lapse, + lon_dim = lon_dim, lat_dim = lat_dim, + nolapse = nolapse, verbose = verbose) data$data <- res$data data$lon <- res$lon @@ -71,14 +76,16 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension +#' @param verbose logical if to print diagnostic output +#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction #' @return RFTemp() returns a list containing the fine-scale longitudes, latitudes and the downscaled fields. #' @export #' @import multiApply #' @import rainfarmr #' @examples #' # Generate simple synthetic data and downscale by factor 4 -#' t <- rnorm(6 * 6 * 4)*10 + 273.15 + 10 -#' dim(t) <- c(ftime = 4, lat = 6, lon = 6) +#' t <- rnorm(6 * 6 * 4 * 3)*10 + 273.15 + 10 +#' dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 6) #' lon <- seq(4, 9, 1) #' lat <- seq(42, 47, 1) #' o <- runif(29*29)*3000 @@ -88,11 +95,34 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, lon_dim = "lon", lat_di #' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, - xlim, ylim, lapse = 6.5, lon_dim = "lon", lat_dim = "lat") { + xlim, ylim, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", + time_dim = NULL, nolapse = FALSE, verbose=FALSE) { + + # Check/detect time_dim + if (is.null(time_dim)) { + time_dim_names <- c("ftime", "sdate", "time") + time_dim_num <- which(time_dim_names %in% names(dim(data))) + if (length(time_dim_num) > 0) { + # Find time dimension with length > 0 + ilong <- which(dim(data)[time_dim_names[time_dim_num]] > 0) + if (length(ilong) > 0) { + #time_dim <- time_dim_names[time_dim_num[ilong[1]]] + time_dim <- time_dim_names[time_dim_num[ilong]] + } else { + stop("No time dimension longer than zero found.") + } + } else { + stop("Could not automatically detect a target time dimension ", + "in the provided data in 'data'.") + } + warning(paste("Selected time dim:", time_dim,"\n")) + } # Repeatedly apply .downscalet - result <- Apply(data, target_dims=c(lon_dim, lat_dim), fun=.downscalet, - lon, lat, oro, lonoro, latoro, xlim, ylim, lapse=lapse)$output1 + result <- Apply(data, target_dims=c(lon_dim, lat_dim, time_dim), + fun=.downscalet, lon, lat, oro, lonoro, latoro, + xlim, ylim, lapse=lapse, + nolapse=nolapse, verbose=verbose)$output1 names(dim(result))[1] <- names(dim(data))[names(dim(data))==lon_dim] names(dim(result))[2] <- names(dim(data))[names(dim(data))==lat_dim] @@ -103,7 +133,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' Lapse-rate temperature correction downscaling #' #' @description Downscales a temperature field using a lapse-rate -#' correction based on a reference orography +#' correction based on a reference orography. Time-averaging is done on all +#' dimensions after the first two. #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} #' @param lon vector of input longitudes #' @param lat vector of input latitudes @@ -115,6 +146,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param ylim vector of latitude bounds #' @param radius smoothing radius expressed in longitude units (default is half a large-scale pixel) #' @param lapse environmental lapse rate (in K/Km) +#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction +#' @param verbose logical if to print diagnostic output #' @return A downscaled temperature matrix #' @export #' @examples @@ -124,17 +157,24 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' lono=seq(5,20,0.1) #' lato=seq(35,40,0.1) #' o=runif(151*51)*2000; dim(o)=c(151,51) -#' td=downscalet(lon, lat,t,lono,lato,o,c(8,12),c(36,38)) - -.downscalet <- function(t, lon, lat, oro, lono, lato, xlim, ylim, radius = 0, lapse = 6.5) { +#' td=.downscalet(t,lon, lat,o,lono,lato,c(8,12),c(36,38)) - if (length(dim(t))==3) { - nt = dim(t)[3] - } else if (length(dim(t))==2) { +.downscalet <- function(t, lon, lat, oro, lono, lato, xlim, ylim, + radius = 0, lapse = 6.5, nolapse = FALSE, + verbose = FALSE) { + tdim <- dim(t) + ldim <- FALSE + if (length(tdim)==3) { + nt = tdim[3] + } else if (length(tdim)==2) { nt = 1 - dim(t) <- c(dim(t), 1) + dim(t) <- c(tdim, 1) + } else if (length(tdim)<2) { + stop("Input array must have at least two dimensions") } else { - stop("Input array must be 2D or 3D") + ldim <- TRUE + dim(t) <- c(tdim[1:2], time = prod(tdim[-(1:2)])) + nt = dim(t)[3] } dxl <- lon[2] - lon[1] @@ -155,40 +195,91 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, if(length(lonocut)==0 | length(latocut)==0) { stop("Orography not available for selected area") } - + + if(verbose) { + print("Nearest neighbours interpolation") + } + tcut <- .interpnn(lon, lat, t, lonocut, latocut) + # Fine-scale smooth interpolated input field + dxol <- lonocut[2] - lonocut[1] + nrad <- as.integer(radius / abs(dxol) + 0.5) nx <- length(lonocut) ny <- length(latocut) - + tout <- array(0., c(nx, ny, nt)) + for (i in seq_len(nt)) { + if(verbose) { + print(paste("Smooth ",i)) + } + tout[,, i] <- .smooth(tcut[,,i], nrad) + } + + if (nolapse) { + # oro is a reference fine-scale field: use that directly + # for bias correcting the interpolated input field's temporal mean + t1 <- orocut - apply(tout, c(1,2), mean) + } else { + # Lapse-rate correction + ns <- length(lonocut) + orocuts <- .smooth(orocut, nrad) + t1 <- -(orocut-orocuts)*lapse/1000. + } + if(verbose) { + print("Adding") + } + for (i in seq_len(nt)) { + tout[,, i] <- tout[,, i] + t1 + } + + tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]),] + if(ldim) { + dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) +   } + return(tdown) +} + +#' Nearest neighbour interpolation +#' +#' @description The input field is interpolated onto the output coordinate grid using nearest neighbours +#' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +#' @param z matrix with the input field to interpolate (assumed to include also a third time dimension) +#' @param lon vector of input longitudes +#' @param lat vector of input latitudes +#' @param lonp vector of output longitudes +#' @param latp vector of output latitudes +#' @return The interpolated field. +#' @examples +#' lon=5:11 +#' lat=35:40 +#' z=runif(7*6*2); dim(z)=c(7,6,2) +#' lonp=seq(5,10,0.2) +#' latp=seq(35,40,0.2) +#' zo <- .interpnn(lon, lat, z, lonp, latp) + +.interpnn <- function(lon, lat, z, lonp, latp) { + + nx <- length(lonp) + ny <- length(latp) + nt <- dim(z)[3] + # Interpolate nn assuming a regular grid - tcut <- array(0., c(nx, ny, nt)) + zo <- array(0., c(nx, ny, nt)) dy <- lat[2]-lat[1] dx <- lon[2]-lon[1] - jj <- ((latocut-(lat[1]-dy/2)) %/% dy + 1) - ii <- ((lonocut-(lon[1]-dx/2)) %/% dx + 1) + jj <- ((latp-(lat[1]-dy/2)) %/% dy + 1) + ii <- ((lonp-(lon[1]-dx/2)) %/% dx + 1) if((ii[1]<=0)|(ii[length(ii)]>length(lon))| - (jj[1]<=0)|(jj[length(jj)]>length(lat))) { + (jj[1]<=0)|(jj[length(jj)]>length(lat))) { stop("Downscaling area not contained in input data") } for (k in seq_len(nt)) { for (j in seq_along(jj)) { - tcut[,j,k] <- t[ii,jj[j],k] + zo[,j,k] <- z[ii,jj[j],k] } } - - dxol <- lonocut[2] - lonocut[1] - nrad <- as.integer(radius / abs(dxol) + 0.5) - - ns = length(lonocut) - orocuts=.smooth(orocut, nrad) - t1 <- -(orocut-orocuts)*lapse/1000. - - tout <- array(0., c(nx, ny, nt)) - for (i in seq_len(nt)) { - tout[,, i] <- .smooth(tcut[,,i], nrad) + t1 - } - downscalet <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]),] + names(dim(zo)) <- names(dim(z)) + return(zo) } #' Smoothening using convolution with a circular kernel @@ -212,7 +303,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, z[imask] <- 0. nsx <- dim(z)[1] nsy <- dim(z)[2] - mask <- matrix(0., nsx, nsy) for (i in 1:nsx) { for (j in 1:nsy) { -- GitLab From e51dc6dcf2c4a710641118287c0666302368c446 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sun, 1 Mar 2020 23:16:26 +0100 Subject: [PATCH 023/184] output correct lon and lat and dimnames --- R/CST_RFTemp.R | 50 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index e393e88a..918ff5f4 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -38,7 +38,7 @@ #' attr(oro, 'class') <- 's2dv_cube' #' res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) -CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, +CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, nolapse = FALSE, verbose=FALSE) { @@ -95,8 +95,9 @@ CST_RFTemp <- function(data, oro, xlim, ylim, lapse=6.5, #' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, - xlim, ylim, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", - time_dim = NULL, nolapse = FALSE, verbose=FALSE) { + xlim = NULL, ylim = NULL, lapse = 6.5, + lon_dim = "lon", lat_dim = "lat", time_dim = NULL, + nolapse = FALSE, verbose=FALSE) { # Check/detect time_dim if (is.null(time_dim)) { @@ -121,12 +122,16 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, # Repeatedly apply .downscalet result <- Apply(data, target_dims=c(lon_dim, lat_dim, time_dim), fun=.downscalet, lon, lat, oro, lonoro, latoro, - xlim, ylim, lapse=lapse, - nolapse=nolapse, verbose=verbose)$output1 - names(dim(result))[1] <- names(dim(data))[names(dim(data))==lon_dim] - names(dim(result))[2] <- names(dim(data))[names(dim(data))==lat_dim] + xlim=xlim, ylim=ylim, lapse=lapse, + nolapse=nolapse, verbose=verbose) - return(list(data = result, lon = lonoro, lat = latoro)) + names(dim(result$data))[1] <- names(dim(data))[names(dim(data))==lon_dim] + names(dim(result$data))[2] <- names(dim(data))[names(dim(data))==lat_dim] + result$lon=array(result$lon[1:dim(result$lon)[1]]) + result$lat=array(result$lat[1:dim(result$lat)[1]]) + names(dim(result$lon))=lon_dim + names(dim(result$lat))=lat_dim + return(result) } @@ -159,7 +164,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' o=runif(151*51)*2000; dim(o)=c(151,51) #' td=.downscalet(t,lon, lat,o,lono,lato,c(8,12),c(36,38)) -.downscalet <- function(t, lon, lat, oro, lono, lato, xlim, ylim, +.downscalet <- function(t, lon, lat, oro, lono, lato, + xlim = NULL, ylim = NULL, radius = 0, lapse = 6.5, nolapse = FALSE, verbose = FALSE) { tdim <- dim(t) @@ -177,16 +183,27 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, nt = dim(t)[3] } - dxl <- lon[2] - lon[1] + dxl <- (lon[2] - lon[1]) / 2 + dyl <- (lat[2] - lat[1]) / 2 if(radius==0) { - radius <- dxl/2 + radius <- dxl } + if(is.null(xlim)) { + xlim <- c(lon[1] + dxl, lon[length(lon)] - dxl) + } + if(is.null(ylim)) { + ylim <- c(lat[1] + dyl, lat[length(lat)] - dyl) + if (ylim[1] > ylim[2]) { + ylim <- ylim[2:1] + } + } + #Add buffer lon1 <- xlim[1] - radius lon2 <- xlim[2] + radius lat1 <- ylim[1] - radius lat2 <- ylim[2] + radius - + orocut <- oro[(lono <= lon2) & (lono >= lon1), (lato <= lat2) & (lato >= lat1)] lonocut <- lono[(lono <= lon2) & (lono >= lon1)] @@ -229,13 +246,16 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, for (i in seq_len(nt)) { tout[,, i] <- tout[,, i] + t1 } - tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]),] + (latocut <= ylim[2]) & (latocut >= ylim[1]),] if(ldim) { dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)])   } - return(tdown) + lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] + latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] + names(dim(lonocut))="lon" + names(dim(latocut))="lat" + return(list(data=tdown, lon=lonocut, lat=latocut)) } #' Nearest neighbour interpolation -- GitLab From f9c94a611eef4f3ba97356b6bc4ed64057ce0beb Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 00:39:08 +0100 Subject: [PATCH 024/184] minor fixes --- R/CST_RFTemp.R | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 918ff5f4..a1fe30ec 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -49,7 +49,7 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, res <- RFTemp(data$data, data$lon, data$lat, oro$data, oro$lon, oro$lat, xlim, ylim, lapse, - lon_dim = lon_dim, lat_dim = lat_dim, + lon_dim = lon_dim, lat_dim = lat_dim, time_dim = time_dim, nolapse = nolapse, verbose = verbose) data$data <- res$data @@ -197,7 +197,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, ylim <- ylim[2:1] } } - #Add buffer lon1 <- xlim[1] - radius lon2 <- xlim[2] + radius @@ -253,8 +252,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro,   } lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] - names(dim(lonocut))="lon" - names(dim(latocut))="lat" + return(list(data=tdown, lon=lonocut, lat=latocut)) } -- GitLab From fbe4599a114b91910850a024f4335609db1a4b98 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 00:39:34 +0100 Subject: [PATCH 025/184] additional tests --- tests/testthat/test-CST_RFTemp.R | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/tests/testthat/test-CST_RFTemp.R b/tests/testthat/test-CST_RFTemp.R index 9d577d64..346b66e2 100644 --- a/tests/testthat/test-CST_RFTemp.R +++ b/tests/testthat/test-CST_RFTemp.R @@ -8,8 +8,8 @@ test_that("Sanity checks and simple use cases", { exp <- list(data = t, lat = lat, lon = lon) o <- runif(29*29)*3000 dim(o) <- c(lat = 29, lon = 29) - lon <- seq(3, 10, 0.25) - 100 - lat <- seq(41, 48, 0.25) -60 + lon <- seq(3.125, 10.125, 0.25) - 100 + lat <- seq(41.125, 48.125, 0.25) -60 oro <- list(data = o, lat = lat, lon = lon) attr(oro, 'class') <- 's2dv_cube' @@ -23,6 +23,7 @@ test_that("Sanity checks and simple use cases", { res <- CST_RFTemp(exp, oro, xlim=c(1,3), ylim=c(1,3)), "Orography not available for selected area" ) + oro$lon = oro$lon + 100 oro$lat = oro$lat + 60 @@ -30,11 +31,23 @@ test_that("Sanity checks and simple use cases", { res <- CST_RFTemp(exp, oro, xlim=c(3,8), ylim=c(43, 46)), "Downscaling area not contained in input data" ) - - res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) + + expect_warning( + res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5), + "Selected time dim: ftime" + ) dimexp=dim(exp$data) - expect_equal(dim(res$data), c(lon=17,lat=13, - dimexp["dataset"], dimexp["member"], - dimexp["sdate"], dimexp["ftime"])) + expect_equal(dim(res$data), c(lon=16,lat=12, dimexp["ftime"], + dimexp["sdate"], + dimexp["dataset"], dimexp["member"])) + expect_warning( + res <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), nolapse=TRUE), + "Selected time dim: sdate" + ) + dim(res$data) <- c(16,16,4*3*2) + resm <- apply(res$data, c(1,2), mean) + + expect_equal(mean(oro$data[7:22,7:22]), mean(resm), tolerance = 1e-10) + }) -- GitLab From c70cafcaa89a80990fb676a8f71af206282d95f7 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 01:38:28 +0100 Subject: [PATCH 026/184] faster version --- R/CST_RFTemp.R | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index a1fe30ec..b723a0f0 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -221,13 +221,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, nrad <- as.integer(radius / abs(dxol) + 0.5) nx <- length(lonocut) ny <- length(latocut) - tout <- array(0., c(nx, ny, nt)) - for (i in seq_len(nt)) { - if(verbose) { - print(paste("Smooth ",i)) - } - tout[,, i] <- .smooth(tcut[,,i], nrad) + + if(verbose) { + print(paste("Smooth")) } + tout <- .smooth(tcut, nrad) if (nolapse) { # oro is a reference fine-scale field: use that directly @@ -321,6 +319,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, z[imask] <- 0. nsx <- dim(z)[1] nsy <- dim(z)[2] + nt <- dim(z)[3] mask <- matrix(0., nsx, nsy) for (i in 1:nsx) { for (j in 1:nsy) { @@ -333,17 +332,21 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, ky <- j - nsy - 1 } r2 <- kx * kx + ky * ky - #mask[i, j] <- exp( - (r2 / (sdim * sdim)) / 2) mask[i, j] <- (r2 <= (sdim * sdim)) } } fm <- fft(mask) - zf <- Re(fft(fm * fft(z), inverse = TRUE)) / sum(mask) / length(fm) - if (sum(imask) > 0) { - z[!imask] <- 1.0 - zf <- zf / (Re(fft(fm * fft(z), inverse = TRUE)) / + zf <- array(0., c(nsx, nsy, nt)) + for (k in seq_len(nt)) { + zf[,,k] <- Re(fft(fm * fft(z[,,k]), inverse = TRUE)) / sum(mask) / length(fm) + if (sum(imask[,,k]) > 0) { + zz <- z[,,k] + zz[!imask[,,k]] <- 1.0 + zz <- zf[,,k] / (Re(fft(fm * fft(zz), inverse = TRUE)) / sum(mask) / length(fm)) + zz[imask[,,k]] <- NA + zf[,,k] <- zz + } } - zf[imask] <- NA return(zf) } -- GitLab From 170f2d1e1980714affa8ea277303e93f5f52ba1b Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 02:02:04 +0100 Subject: [PATCH 027/184] hidden typo --- R/CST_RFTemp.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index b723a0f0..3bcf3f84 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -247,7 +247,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, (latocut <= ylim[2]) & (latocut >= ylim[1]),] if(ldim) { dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) -   } + } lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] -- GitLab From 52d20121aff9055331a1e0f1fa250879fe625b59 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 02:40:01 +0100 Subject: [PATCH 028/184] delinting --- R/CST_RFTemp.R | 178 +++++++++++++++++++++++++++---------------------- 1 file changed, 97 insertions(+), 81 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 3bcf3f84..c9306ba8 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -1,24 +1,32 @@ #' @rdname CST_RFTemp -#' @title Temperature downscaling of a CSTools object using lapse rate correction or a reference field +#' @title Temperature downscaling of a CSTools object using lapse rate +#' correction or a reference field #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a -#' temperature field (an object of class 's2dv_cube' as provided by `CST_Load`) as input. -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] -#' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, +#' temperature field (an object of class 's2dv_cube' as provided by +#' `CST_Load`) as input. +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: +#' High resolution (1-10 km) climate, land use and ocean change scenarios +#' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +#' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing the temperature fields to downscale. -#' The data object is expected to have an element named \code{$data} with at least two -#' The number of longitudes and latitudes in the input data is expected to be even and the same. If not +#' The data object is expected to have an element named \code{$data} +#' with at least two +#' The number of longitudes and latitudes in the input data is expected to +#' be even and the same. If not #' spatial dimensions named "lon" and "lat". -#' @param oro An object of the class 's2dv_cube' as returned by `CST_Load`, +#' @param oro An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing fine scale orography (in meters). #' @param xlim vector with longitude bounds for downscaling #' @param ylim vector with latitude bounds for downscaling -#' @param lapse float with environmental lapse rate +#' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension #' @param verbose logical if to print diagnostic output -#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction -#' @return CST_RFTemp() returns a downscaled CSTools object (i.e., of the class 's2dv_cube'). +#' @param nolapse logical, if true `oro` is interpreted as a fine-scale +#' climatology and used directly for bias correction +#' @return CST_RFTemp() returns a downscaled CSTools object +#' (i.e., of the class 's2dv_cube'). #' @export #' @import multiApply #' @import rainfarmr @@ -42,7 +50,7 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, nolapse = FALSE, verbose=FALSE) { - if (!inherits(data, 's2dv_cube')) { + if (!inherits(data, "s2dv_cube")) { stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } @@ -60,25 +68,32 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, } #' @rdname RFTemp -#' @title Temperature downscaling of a CSTools object using lapse rate correction (reduced version) +#' @title Temperature downscaling of a CSTools object using lapse rate +#' correction (reduced version) #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (a multidimensional array) as input -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: +#' High resolution (1-10 km) climate, land use and ocean change scenarios +#' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] #' @param data Temperature array to downscale. -#' The input array is expected to have at least two dimensions named "lon" and "lat" by default -#' (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters) +#' The input array is expected to have at least two dimensions named +#' "lon" and "lat" by default +#' (these default names can be changed with the \code{lon_dim} and +#' \code{lat_dim} parameters) #' @param lon Vector or array of longitudes. #' @param lat Vector or array of latitudes. #' @param oro Array containing fine-scale orography (in m) #' @param xlim vector with longitude bounds for downscaling #' @param ylim vector with latitude bounds for downscaling -#' @param lapse float with environmental lapse rate +#' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension #' @param verbose logical if to print diagnostic output -#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction -#' @return RFTemp() returns a list containing the fine-scale longitudes, latitudes and the downscaled fields. +#' @param nolapse logical, if true `oro` is interpreted as a +#' fine-scale climatology and used directly for bias correction +#' @return RFTemp() returns a list containing the fine-scale +#' longitudes, latitudes and the downscaled fields. #' @export #' @import multiApply #' @import rainfarmr @@ -92,7 +107,8 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' dim(o) <- c(lat = 29, lon = 29) #' lono <- seq(3, 10, 0.25) #' lato <- seq(41, 48, 0.25) -#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) +#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), +#' lapse=6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, xlim = NULL, ylim = NULL, lapse = 6.5, @@ -107,7 +123,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, # Find time dimension with length > 0 ilong <- which(dim(data)[time_dim_names[time_dim_num]] > 0) if (length(ilong) > 0) { - #time_dim <- time_dim_names[time_dim_num[ilong[1]]] time_dim <- time_dim_names[time_dim_num[ilong]] } else { stop("No time dimension longer than zero found.") @@ -116,29 +131,28 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, stop("Could not automatically detect a target time dimension ", "in the provided data in 'data'.") } - warning(paste("Selected time dim:", time_dim,"\n")) + warning(paste("Selected time dim:", time_dim, "\n")) } # Repeatedly apply .downscalet - result <- Apply(data, target_dims=c(lon_dim, lat_dim, time_dim), - fun=.downscalet, lon, lat, oro, lonoro, latoro, - xlim=xlim, ylim=ylim, lapse=lapse, - nolapse=nolapse, verbose=verbose) + result <- Apply(data, target_dims = c(lon_dim, lat_dim, time_dim), + fun = .downscalet, lon, lat, oro, lonoro, latoro, + xlim = xlim, ylim = ylim, lapse = lapse, + nolapse = nolapse, verbose = verbose) - names(dim(result$data))[1] <- names(dim(data))[names(dim(data))==lon_dim] - names(dim(result$data))[2] <- names(dim(data))[names(dim(data))==lat_dim] - result$lon=array(result$lon[1:dim(result$lon)[1]]) - result$lat=array(result$lat[1:dim(result$lat)[1]]) - names(dim(result$lon))=lon_dim - names(dim(result$lat))=lat_dim + names(dim(result$data))[1] <- names(dim(data))[names(dim(data)) == lon_dim] + names(dim(result$data))[2] <- names(dim(data))[names(dim(data)) == lat_dim] + result$lon <- array(result$lon[1:dim(result$lon)[1]]) + result$lat <- array(result$lat[1:dim(result$lat)[1]]) + names(dim(result$lon)) <- lon_dim + names(dim(result$lat)) <- lat_dim return(result) } - #' Lapse-rate temperature correction downscaling #' #' @description Downscales a temperature field using a lapse-rate -#' correction based on a reference orography. Time-averaging is done on all +#' correction based on a reference orography. Time-averaging is done on all #' dimensions after the first two. #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} #' @param lon vector of input longitudes @@ -146,12 +160,14 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param t matrix of input temperature data #' @param lono vector of orography longitudes #' @param lato vector of orography latitudes -#' @param oro matrix of topographical elevations (in meters) +#' @param oro matrix of topographical elevations (in meters) #' @param xlim vector of longitude bounds #' @param ylim vector of latitude bounds -#' @param radius smoothing radius expressed in longitude units (default is half a large-scale pixel) +#' @param radius smoothing radius expressed in longitude units +#' (default is half a large-scale pixel) #' @param lapse environmental lapse rate (in K/Km) -#' @param nolapse logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction +#' @param nolapse logical, if true `oro` is interpreted as a fine-scale +#' climatology and used directly for bias correction #' @param verbose logical if to print diagnostic output #' @return A downscaled temperature matrix #' @export @@ -170,31 +186,31 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, verbose = FALSE) { tdim <- dim(t) ldim <- FALSE - if (length(tdim)==3) { - nt = tdim[3] - } else if (length(tdim)==2) { - nt = 1 + if (length(tdim) == 3) { + nt <- tdim[3] + } else if (length(tdim) == 2) { + nt <- 1 dim(t) <- c(tdim, 1) - } else if (length(tdim)<2) { + } else if (length(tdim) < 2) { stop("Input array must have at least two dimensions") } else { ldim <- TRUE - dim(t) <- c(tdim[1:2], time = prod(tdim[-(1:2)])) - nt = dim(t)[3] + dim(t) <- c(tdim[1:2], time = prod(tdim[-(1:2)])) + nt <- dim(t)[3] } dxl <- (lon[2] - lon[1]) / 2 dyl <- (lat[2] - lat[1]) / 2 - if(radius==0) { + if (radius == 0) { radius <- dxl } - if(is.null(xlim)) { + if (is.null(xlim)) { xlim <- c(lon[1] + dxl, lon[length(lon)] - dxl) } - if(is.null(ylim)) { + if (is.null(ylim)) { ylim <- c(lat[1] + dyl, lat[length(lat)] - dyl) if (ylim[1] > ylim[2]) { - ylim <- ylim[2:1] + ylim <- ylim[2:1] } } #Add buffer @@ -202,27 +218,25 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, lon2 <- xlim[2] + radius lat1 <- ylim[1] - radius lat2 <- ylim[2] + radius - + orocut <- oro[(lono <= lon2) & (lono >= lon1), (lato <= lat2) & (lato >= lat1)] lonocut <- lono[(lono <= lon2) & (lono >= lon1)] latocut <- lato[(lato <= lat2) & (lato >= lat1)] - if(length(lonocut)==0 | length(latocut)==0) { + if (length(lonocut) == 0 | length(latocut) == 0) { stop("Orography not available for selected area") } - - if(verbose) { + + if (verbose) { print("Nearest neighbours interpolation") } tcut <- .interpnn(lon, lat, t, lonocut, latocut) # Fine-scale smooth interpolated input field dxol <- lonocut[2] - lonocut[1] nrad <- as.integer(radius / abs(dxol) + 0.5) - nx <- length(lonocut) - ny <- length(latocut) - if(verbose) { + if (verbose) { print(paste("Smooth")) } tout <- .smooth(tcut, nrad) @@ -230,35 +244,36 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, if (nolapse) { # oro is a reference fine-scale field: use that directly # for bias correcting the interpolated input field's temporal mean - t1 <- orocut - apply(tout, c(1,2), mean) + t1 <- orocut - apply(tout, c(1, 2), mean) } else { # Lapse-rate correction - ns <- length(lonocut) orocuts <- .smooth(orocut, nrad) - t1 <- -(orocut-orocuts)*lapse/1000. + t1 <- -(orocut - orocuts) * lapse / 1000. } - if(verbose) { + if (verbose) { print("Adding") } for (i in seq_len(nt)) { - tout[,, i] <- tout[,, i] + t1 + tout[, , i] <- tout[, , i] + t1 } tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]),] - if(ldim) { + (latocut <= ylim[2]) & (latocut >= ylim[1]), ] + if (ldim) { dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) } lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] - return(list(data=tdown, lon=lonocut, lat=latocut)) + return(list(data = tdown, lon = lonocut, lat = latocut)) } #' Nearest neighbour interpolation #' -#' @description The input field is interpolated onto the output coordinate grid using nearest neighbours +#' @description The input field is interpolated onto the output +#' coordinate grid using nearest neighbours #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} -#' @param z matrix with the input field to interpolate (assumed to include also a third time dimension) +#' @param z matrix with the input field to interpolate (assumed to +#' include also a third time dimension) #' @param lon vector of input longitudes #' @param lat vector of input latitudes #' @param lonp vector of output longitudes @@ -270,7 +285,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' z=runif(7*6*2); dim(z)=c(7,6,2) #' lonp=seq(5,10,0.2) #' latp=seq(35,40,0.2) -#' zo <- .interpnn(lon, lat, z, lonp, latp) +#' zo <- .interpnn(lon, lat, z, lonp, latp) .interpnn <- function(lon, lat, z, lonp, latp) { @@ -278,20 +293,20 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, ny <- length(latp) nt <- dim(z)[3] - # Interpolate nn assuming a regular grid + # Interpolate nn assuming a regular grid zo <- array(0., c(nx, ny, nt)) - dy <- lat[2]-lat[1] - dx <- lon[2]-lon[1] - jj <- ((latp-(lat[1]-dy/2)) %/% dy + 1) - ii <- ((lonp-(lon[1]-dx/2)) %/% dx + 1) + dy <- lat[2] - lat[1] + dx <- lon[2] - lon[1] + jj <- ((latp - (lat[1] - dy / 2)) %/% dy + 1) + ii <- ((lonp - (lon[1] - dx / 2)) %/% dx + 1) - if((ii[1]<=0)|(ii[length(ii)]>length(lon))| - (jj[1]<=0)|(jj[length(jj)]>length(lat))) { + if ((ii[1] <= 0) | (ii[length(ii)] > length(lon)) | + (jj[1] <= 0) | (jj[length(jj)] > length(lat))) { stop("Downscaling area not contained in input data") } for (k in seq_len(nt)) { for (j in seq_along(jj)) { - zo[,j,k] <- z[ii,jj[j],k] + zo[, j, k] <- z[ii, jj[j], k] } } names(dim(zo)) <- names(dim(z)) @@ -337,15 +352,16 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } fm <- fft(mask) zf <- array(0., c(nsx, nsy, nt)) - for (k in seq_len(nt)) { - zf[,,k] <- Re(fft(fm * fft(z[,,k]), inverse = TRUE)) / sum(mask) / length(fm) - if (sum(imask[,,k]) > 0) { - zz <- z[,,k] - zz[!imask[,,k]] <- 1.0 - zz <- zf[,,k] / (Re(fft(fm * fft(zz), inverse = TRUE)) / + for (k in seq_len(nt)) { + zf[, , k] <- Re(fft(fm * fft(z[, , k]), inverse = TRUE) + ) / sum(mask) / length(fm) + if (sum(imask[, , k]) > 0) { + zz <- z[, , k] + zz[!imask[, , k]] <- 1.0 + zz <- zf[, , k] / (Re(fft(fm * fft(zz), inverse = TRUE)) / sum(mask) / length(fm)) - zz[imask[,,k]] <- NA - zf[,,k] <- zz + zz[imask[, , k]] <- NA + zf[, , k] <- zz } } return(zf) -- GitLab From becbc5cf21a35abd582cc282eac3126763b7d2b5 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 11:53:43 +0100 Subject: [PATCH 029/184] smooth also 2d fields --- R/CST_RFTemp.R | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index c9306ba8..2bdbe192 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -330,11 +330,17 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' # [1] 0.1334648 .smooth <- function(z, sdim) { - imask <- !is.finite(z) - z[imask] <- 0. nsx <- dim(z)[1] nsy <- dim(z)[2] - nt <- dim(z)[3] + zdim <- dim(z) + if (length(dim(z)) == 2) { + dim(z) <- c(dim(z), time=1) + nt <- 1 + } else { + nt <- dim(z)[3] + } + imask <- !is.finite(z) + z[imask] <- 0. mask <- matrix(0., nsx, nsy) for (i in 1:nsx) { for (j in 1:nsy) { @@ -364,5 +370,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, zf[, , k] <- zz } } + dim(zf) <- zdim return(zf) } -- GitLab From bde12595b04ac3f01bcca673178df2f320a9c435 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 2 Mar 2020 12:33:11 +0100 Subject: [PATCH 030/184] fit test and delint --- tests/testthat/test-CST_RFTemp.R | 49 ++++++++++++++++---------------- 1 file changed, 24 insertions(+), 25 deletions(-) diff --git a/tests/testthat/test-CST_RFTemp.R b/tests/testthat/test-CST_RFTemp.R index 346b66e2..76ede1d0 100644 --- a/tests/testthat/test-CST_RFTemp.R +++ b/tests/testthat/test-CST_RFTemp.R @@ -1,53 +1,52 @@ context("Generic tests") test_that("Sanity checks and simple use cases", { # Generate simple synthetic data - t <- rnorm(6 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 + t <- rnorm(6 * 6 * 2 * 3 * 4) * 10 + 273.15 + 10 dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) lon <- seq(4, 9, 1) lat <- seq(42, 47, 1) exp <- list(data = t, lat = lat, lon = lon) - o <- runif(29*29)*3000 + o <- runif(29 * 29) * 3000 dim(o) <- c(lat = 29, lon = 29) lon <- seq(3.125, 10.125, 0.25) - 100 - lat <- seq(41.125, 48.125, 0.25) -60 + lat <- seq(41.125, 48.125, 0.25) - 60 oro <- list(data = o, lat = lat, lon = lon) - attr(oro, 'class') <- 's2dv_cube' + attr(oro, "class") <- "s2dv_cube" expect_error( - res <- CST_RFTemp(exp, oro, xlim=c(1,3), ylim=c(1,3)), - "Parameter 'data' must be of the class 's2dv_cube', as output by CSTools::CST_Load." - ) - attr(exp, 'class') <- 's2dv_cube' + res <- CST_RFTemp(exp, oro, xlim = c(1, 3), ylim = c(1, 3)), + paste("Parameter 'data' must be of the class", + "'s2dv_cube', as output by CSTools::CST_Load.")) + attr(exp, "class") <- "s2dv_cube" expect_error( - res <- CST_RFTemp(exp, oro, xlim=c(1,3), ylim=c(1,3)), + res <- CST_RFTemp(exp, oro, xlim = c(1, 3), ylim = c(1, 3)), "Orography not available for selected area" ) - - oro$lon = oro$lon + 100 - oro$lat = oro$lat + 60 + + oro$lon <- oro$lon + 100 + oro$lat <- oro$lat + 60 expect_error( - res <- CST_RFTemp(exp, oro, xlim=c(3,8), ylim=c(43, 46)), + res <- CST_RFTemp(exp, oro, xlim = c(3, 8), ylim = c(43, 46)), "Downscaling area not contained in input data" ) expect_warning( - res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5), + res <- CST_RFTemp(exp, oro, xlim = c(4, 8), ylim = c(43, 46), lapse = 6.5), "Selected time dim: ftime" ) - dimexp=dim(exp$data) - expect_equal(dim(res$data), c(lon=16,lat=12, dimexp["ftime"], - dimexp["sdate"], - dimexp["dataset"], dimexp["member"])) + dimexp <- dim(exp$data) + expect_equal(dim(res$data), c(lon = 16, lat = 12, dimexp["ftime"], + dimexp["sdate"], dimexp["dataset"], + dimexp["member"])) expect_warning( - res <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), nolapse=TRUE), - "Selected time dim: sdate" - ) - dim(res$data) <- c(16,16,4*3*2) - resm <- apply(res$data, c(1,2), mean) + res <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + nolapse = TRUE), NA) - expect_equal(mean(oro$data[7:22,7:22]), mean(resm), tolerance = 1e-10) + dim(res$data) <- c(16, 16, 4 * 3 * 2) + resm <- apply(res$data, c(1, 2), mean) -}) + expect_equal(mean(oro$data[7:22, 7:22]), mean(resm), tolerance = 1e-10) +}) -- GitLab From 39124dc9d92d6c0de52e82fc62582af821ce0d2e Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Tue, 3 Mar 2020 00:29:06 +0100 Subject: [PATCH 031/184] regularize lon coords --- R/CST_RFTemp.R | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 2bdbe192..2b18ba3c 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -198,6 +198,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, dim(t) <- c(tdim[1:2], time = prod(tdim[-(1:2)])) nt <- dim(t)[3] } + # Regularize lon coords to monotone increasing + lon[lon >= lon[1]] <- lon[lon >= lon[1]] - 360 + if (lon[length(lon)] < 0) { lon <- lon + 360 } + lono[lono >= lono[1]] <- lono[lono >= lono[1]] - 360 + if (lono[length(lono)] < 0) { lono <- lono + 360 } dxl <- (lon[2] - lon[1]) / 2 dyl <- (lat[2] - lat[1]) / 2 -- GitLab From 942e3336fbee4a13bec32d9c7ef16d2dd9e6b496 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Tue, 3 Mar 2020 15:37:42 +0100 Subject: [PATCH 032/184] separate computation of delta --- R/CST_RFTemp.R | 133 +++++++++++++++++++++++++------ tests/testthat/test-CST_RFTemp.R | 28 +++++-- 2 files changed, 127 insertions(+), 34 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 2b18ba3c..853cbcf6 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -25,6 +25,11 @@ #' @param verbose logical if to print diagnostic output #' @param nolapse logical, if true `oro` is interpreted as a fine-scale #' climatology and used directly for bias correction +#' @param compute_delta logical if true returns only a delta to be used for +#' out-of-sample forecasts. Returns an object of the class 's2dv_cube', containing a delta. Activates `nolapse = TRUE`. +#' @param delta An object of the class 's2dv_cube', containing a delta +#' to be applied to the downscaled input data. Activates `nolapse = TRUE`. +#' The grid of this object must coincide with that of the required output. #' @return CST_RFTemp() returns a downscaled CSTools object #' (i.e., of the class 's2dv_cube'). #' @export @@ -48,17 +53,29 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, - nolapse = FALSE, verbose=FALSE) { + nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, + delta = NULL) { if (!inherits(data, "s2dv_cube")) { stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } + if (!inherits(oro, "s2dv_cube")) { + stop("Parameter 'oro' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + if (!is.null(delta)) { + if (!inherits(delta, "s2dv_cube")) { + stop("Parameter 'delta' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + } res <- RFTemp(data$data, data$lon, data$lat, oro$data, oro$lon, oro$lat, xlim, ylim, lapse, lon_dim = lon_dim, lat_dim = lat_dim, time_dim = time_dim, - nolapse = nolapse, verbose = verbose) + nolapse = nolapse, verbose = verbose, + compute_delta = compute_delta, delta = delta$data) data$data <- res$data data$lon <- res$lon @@ -92,6 +109,11 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param verbose logical if to print diagnostic output #' @param nolapse logical, if true `oro` is interpreted as a #' fine-scale climatology and used directly for bias correction +#' @param compute_delta logical if true returns only a delta to be used for +#' out-of-sample forecasts. Activates `nolapse = TRUE`. +#' @param delta matrix containing a delta to be applied to the downscaled input data. +#' Activates `nolapse = TRUE`. The grid of this matrix is supposed to be same as +#' that of the required output field #' @return RFTemp() returns a list containing the fine-scale #' longitudes, latitudes and the downscaled fields. #' @export @@ -113,7 +135,8 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, RFTemp <- function(data, lon, lat, oro, lonoro, latoro, xlim = NULL, ylim = NULL, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, - nolapse = FALSE, verbose=FALSE) { + nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, + delta = NULL) { # Check/detect time_dim if (is.null(time_dim)) { @@ -135,10 +158,21 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } # Repeatedly apply .downscalet - result <- Apply(data, target_dims = c(lon_dim, lat_dim, time_dim), - fun = .downscalet, lon, lat, oro, lonoro, latoro, - xlim = xlim, ylim = ylim, lapse = lapse, - nolapse = nolapse, verbose = verbose) + if (is.null(delta)) { + result <- Apply(data, target_dims = c(lon_dim, lat_dim, time_dim), + fun = .downscalet, lon, lat, oro, lonoro, latoro, + xlim = xlim, ylim = ylim, lapse = lapse, + nolapse = nolapse, verbose = verbose, + compute_delta = compute_delta) + } else { + result <- Apply(list(data, delta), + target_dims = list(c(lon_dim, lat_dim, time_dim), + c(lon_dim, lat_dim)), + fun = .downscalet_delta, lon, lat, oro, lonoro, latoro, + xlim = xlim, ylim = ylim, lapse = lapse, + nolapse = nolapse, verbose = verbose, + compute_delta = compute_delta) + } names(dim(result$data))[1] <- names(dim(data))[names(dim(data)) == lon_dim] names(dim(result$data))[2] <- names(dim(data))[names(dim(data)) == lat_dim] @@ -168,6 +202,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param lapse environmental lapse rate (in K/Km) #' @param nolapse logical, if true `oro` is interpreted as a fine-scale #' climatology and used directly for bias correction +#' @param compute_delta logical if true returns only a delta to be used for +#' out-of-sample forecasts. +#' @param delta matrix containing a delta to be applied to the input data. +#' The grid of this matrix is supposed to be same as +#' that of the required output field #' @param verbose logical if to print diagnostic output #' @return A downscaled temperature matrix #' @export @@ -183,7 +222,12 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, .downscalet <- function(t, lon, lat, oro, lono, lato, xlim = NULL, ylim = NULL, radius = 0, lapse = 6.5, nolapse = FALSE, - verbose = FALSE) { + verbose = FALSE, compute_delta = FALSE, delta = NULL) { + + if (!is.null(delta) & compute_delta) { + stop("Cannot `compute_delta` and provide `delta` at the same time.") + } + tdim <- dim(t) ldim <- FALSE if (length(tdim) == 3) { @@ -246,25 +290,51 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } tout <- .smooth(tcut, nrad) - if (nolapse) { - # oro is a reference fine-scale field: use that directly - # for bias correcting the interpolated input field's temporal mean - t1 <- orocut - apply(tout, c(1, 2), mean) + if (is.null(delta)) { + # Compute delta + if (nolapse) { + # oro is a reference fine-scale field: use that directly + # for bias correcting the interpolated input field's temporal mean + t1 <- orocut - apply(tout, c(1, 2), mean) + } else { + # Lapse-rate correction + orocuts <- .smooth(orocut, nrad) + t1 <- -(orocut - orocuts) * lapse / 1000. + } + if (compute_delta) { + # Return delta + tdown <- t1[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1])] + } else { + # Apply delta + if (verbose) { + print("Adding") + } + for (i in seq_len(nt)) { + tout[, , i] <- tout[, , i] + t1 + } + tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]), ] + if (ldim) { + dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) + } + } } else { - # Lapse-rate correction - orocuts <- .smooth(orocut, nrad) - t1 <- -(orocut - orocuts) * lapse / 1000. - } - if (verbose) { - print("Adding") - } - for (i in seq_len(nt)) { - tout[, , i] <- tout[, , i] + t1 - } - tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]), ] - if (ldim) { - dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) + # Just apply the provided delta + tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]), ] + if (any(dim(delta)[1:2] != dim(tdown)[1:2])) { + stop("Provided delta has not the same dimensions as required output") + } + if (verbose) { + print("Adding") + } + for (i in seq_len(nt)) { + tdown[, , i] <- tdown[, , i] + delta + } + if (ldim) { + dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) + } } lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] @@ -272,6 +342,17 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, return(list(data = tdown, lon = lonocut, lat = latocut)) } +# Special driver version of .downscalet to apply delta +.downscalet_delta <- function(t, delta, lon, lat, oro, lono, lato, + xlim = NULL, ylim = NULL, + radius = 0, lapse = 6.5, nolapse = FALSE, + verbose = FALSE, compute_delta = FALSE) { + res <- .downscalet(t, lon, lat, oro, lono, lato, + xlim = NULL, ylim = NULL, radius = 0, + lapse = 6.5, nolapse = FALSE, verbose = FALSE, + compute_delta = FALSE, delta = delta) +} + #' Nearest neighbour interpolation #' #' @description The input field is interpolated onto the output diff --git a/tests/testthat/test-CST_RFTemp.R b/tests/testthat/test-CST_RFTemp.R index 76ede1d0..b9fbcf7f 100644 --- a/tests/testthat/test-CST_RFTemp.R +++ b/tests/testthat/test-CST_RFTemp.R @@ -1,8 +1,8 @@ context("Generic tests") test_that("Sanity checks and simple use cases", { # Generate simple synthetic data - t <- rnorm(6 * 6 * 2 * 3 * 4) * 10 + 273.15 + 10 - dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) + t <- rnorm(2 * 6 * 6 * 2 * 3 * 4) * 10 + 273.15 + 10 + dim(t) <- c(dataset = 2, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) lon <- seq(4, 9, 1) lat <- seq(42, 47, 1) exp <- list(data = t, lat = lat, lon = lon) @@ -33,20 +33,32 @@ test_that("Sanity checks and simple use cases", { ) expect_warning( - res <- CST_RFTemp(exp, oro, xlim = c(4, 8), ylim = c(43, 46), lapse = 6.5), + resl <- CST_RFTemp(exp, oro, lapse = 6.5), "Selected time dim: ftime" ) dimexp <- dim(exp$data) - expect_equal(dim(res$data), c(lon = 16, lat = 12, dimexp["ftime"], + expect_equal(dim(resl$data), c(lon = 16, lat = 16, dimexp["ftime"], dimexp["sdate"], dimexp["dataset"], dimexp["member"])) expect_warning( - res <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + resd <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), nolapse = TRUE), NA) + dim(resd$data) <- c(16, 16, 4 * 3 * 2 * 2) + resm <- apply(resd$data, c(1, 2), mean) + expect_equal(mean(oro$data[7:22, 7:22]), mean(resm), tolerance = 1e-10) - dim(res$data) <- c(16, 16, 4 * 3 * 2) - resm <- apply(res$data, c(1, 2), mean) + # Test precomputation of delta based with nolapse + delta <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + nolapse = TRUE, compute_delta = TRUE) + resdnl <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + nolapse = TRUE, delta = delta) + expect_equal(mean(resdnl$data), mean(resd$data), tolerance = 1e-10) - expect_equal(mean(oro$data[7:22, 7:22]), mean(resm), tolerance = 1e-10) + # Test precomputation of delta based with lapse rate + delta <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + lapse = 6.5, compute_delta = TRUE) + resdl <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + delta = delta) + expect_equal(mean(resdl$data), mean(resl$data), tolerance = 1e-10) }) -- GitLab From 0d18b6b6d8a1c4c507374a94fe72e0ab34c09132 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Tue, 3 Mar 2020 15:59:04 +0100 Subject: [PATCH 033/184] delinting [skip ci] --- R/CST_RFTemp.R | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 853cbcf6..fc40ea6d 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -26,7 +26,8 @@ #' @param nolapse logical, if true `oro` is interpreted as a fine-scale #' climatology and used directly for bias correction #' @param compute_delta logical if true returns only a delta to be used for -#' out-of-sample forecasts. Returns an object of the class 's2dv_cube', containing a delta. Activates `nolapse = TRUE`. +#' out-of-sample forecasts. Returns an object of the class 's2dv_cube', +#' containing a delta. Activates `nolapse = TRUE`. #' @param delta An object of the class 's2dv_cube', containing a delta #' to be applied to the downscaled input data. Activates `nolapse = TRUE`. #' The grid of this object must coincide with that of the required output. @@ -110,10 +111,10 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param nolapse logical, if true `oro` is interpreted as a #' fine-scale climatology and used directly for bias correction #' @param compute_delta logical if true returns only a delta to be used for -#' out-of-sample forecasts. Activates `nolapse = TRUE`. -#' @param delta matrix containing a delta to be applied to the downscaled input data. -#' Activates `nolapse = TRUE`. The grid of this matrix is supposed to be same as -#' that of the required output field +#' out-of-sample forecasts. +#' @param delta matrix containing a delta to be applied to the downscaled +#' input data. The grid of this matrix is supposed to be same as that of +#' the required output field #' @return RFTemp() returns a list containing the fine-scale #' longitudes, latitudes and the downscaled fields. #' @export @@ -323,7 +324,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, # Just apply the provided delta tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), (latocut <= ylim[2]) & (latocut >= ylim[1]), ] - if (any(dim(delta)[1:2] != dim(tdown)[1:2])) { + if (any(dim(delta)[1:2] != dim(tdown)[1:2])) { stop("Provided delta has not the same dimensions as required output") } if (verbose) { @@ -420,7 +421,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, nsy <- dim(z)[2] zdim <- dim(z) if (length(dim(z)) == 2) { - dim(z) <- c(dim(z), time=1) + dim(z) <- c(dim(z), time = 1) nt <- 1 } else { nt <- dim(z)[3] -- GitLab From 73a2a9391912f36ebfdb051ba63c0e70b96935d2 Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Wed, 4 Mar 2020 11:10:53 +0100 Subject: [PATCH 034/184] fixed applied delta case --- R/CST_RFTemp.R | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index fc40ea6d..0df18616 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -287,7 +287,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, nrad <- as.integer(radius / abs(dxol) + 0.5) if (verbose) { - print(paste("Smooth")) + print(paste("Smoothing interpolated field")) } tout <- .smooth(tcut, nrad) @@ -309,7 +309,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } else { # Apply delta if (verbose) { - print("Adding") + print("Adding computed delta") } for (i in seq_len(nt)) { tout[, , i] <- tout[, , i] + t1 @@ -325,10 +325,12 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), (latocut <= ylim[2]) & (latocut >= ylim[1]), ] if (any(dim(delta)[1:2] != dim(tdown)[1:2])) { + print(dim(delta)) + print(dim(tdown)) stop("Provided delta has not the same dimensions as required output") } if (verbose) { - print("Adding") + print("Adding provided delta") } for (i in seq_len(nt)) { tdown[, , i] <- tdown[, , i] + delta @@ -349,9 +351,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, radius = 0, lapse = 6.5, nolapse = FALSE, verbose = FALSE, compute_delta = FALSE) { res <- .downscalet(t, lon, lat, oro, lono, lato, - xlim = NULL, ylim = NULL, radius = 0, - lapse = 6.5, nolapse = FALSE, verbose = FALSE, - compute_delta = FALSE, delta = delta) + xlim = xlim, ylim = ylim, radius = radius, + lapse = lapse, nolapse = nolapse, verbose = verbose, + compute_delta = compute_delta, delta = delta) } #' Nearest neighbour interpolation -- GitLab From 6e169ca3a179af3572822890a7244f6d4ed16ba5 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Wed, 4 Mar 2020 17:24:06 +0100 Subject: [PATCH 035/184] A space was missing in DESCRIPTION file --- DESCRIPTION | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION b/DESCRIPTION index 2c87e147..80f3c15c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,6 +22,7 @@ Authors@R: c( person("Raul", "Marcos", , "raul.marcos@bsc.es", role = "ctb"), person("Niti", "Mishra", , "niti.mishra@bsc.es", role = "ctb"), person("Jesus", "Peña", , "jesus.pena@bsc.es", role = "ctb"), + person("Francesc", "Roura-Adserias", , "francesc.roura@bsc.es", role = "ctb") person("Silvia", "Terzago", , "s.terzago@isac.cnr.it", role = "ctb"), person("Danila", "Volpi", , "d.volpi@isac.cnr.it", role = "ctb"), person("BSC-CNS", role = c("cph"))) -- GitLab From e6c528cacbd51de62f1d2206453aeb2060115887 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Wed, 4 Mar 2020 17:29:58 +0100 Subject: [PATCH 036/184] Typo in DESCRIPTION file --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 80f3c15c..98dabd6a 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,7 +22,7 @@ Authors@R: c( person("Raul", "Marcos", , "raul.marcos@bsc.es", role = "ctb"), person("Niti", "Mishra", , "niti.mishra@bsc.es", role = "ctb"), person("Jesus", "Peña", , "jesus.pena@bsc.es", role = "ctb"), - person("Francesc", "Roura-Adserias", , "francesc.roura@bsc.es", role = "ctb") + person("Francesc", "Roura-Adserias", , "francesc.roura@bsc.es", role = "ctb"), person("Silvia", "Terzago", , "s.terzago@isac.cnr.it", role = "ctb"), person("Danila", "Volpi", , "d.volpi@isac.cnr.it", role = "ctb"), person("BSC-CNS", role = c("cph"))) -- GitLab From e4c28c85e29dc4a12f3834503855a71aa678b3a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 4 Mar 2020 19:15:24 +0100 Subject: [PATCH 037/184] Adding changes in Weather Regimes --- R/CST_WeatherRegime.R | 279 ++++++++++++++++++++++++++++++++++++++++++ R/WeatherRegime.R | 230 ---------------------------------- 2 files changed, 279 insertions(+), 230 deletions(-) create mode 100644 R/CST_WeatherRegime.R delete mode 100644 R/WeatherRegime.R diff --git a/R/CST_WeatherRegime.R b/R/CST_WeatherRegime.R new file mode 100644 index 00000000..7b0d64fa --- /dev/null +++ b/R/CST_WeatherRegime.R @@ -0,0 +1,279 @@ +#' @rdname CST_WeatherRegimes +#' @title Function for Calculating the Cluster analysis +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function computes the weather regimes from a cluster analysis. +#'It is applied on the array \code{data} in a 's2dv_cube' object. The dimensionality of this object can be also reduced +#'by using PCs obtained from the application of the #'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods +#'included in the hclust (stats package). +#' +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data a 's2dv_cube' object + +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. +#'@param neofs number of modes to be kept (default = 30). +#'@param varThreshold Value with the percentage of variance to be explained by the PCs. +#' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#' For more details about these methods see the hclust function documentation included in the stats package. +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param ncores The number of multicore threads to use for parallel computation}. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +# dependence of the data with the same structure as Composite.), +#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#'@import s2dverification +#'@import multiApply +#'@examples +#'@export +#' +CST_WeatherRegime <- function(data,ncenters = NULL, + EOFS = TRUE,neofs = 30, + varThreshold = NULL, lon = NULL, + lat = NULL, method = "kmeans", + iter.max=100, nstart = 30, + ncores = NULL) { + if (!inherits(data, 's2dv_cube')) { + stop("Parameter 'data' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + data$data <- WeatherRegime(data$data,ncenters = ncenters , + EOFS = EOFS, neofs = neofs, + varThreshold = varThreshold, lon = lon, + lat = lat, method = method, + iter.max=iter.max, nstart = nstart, + ncores = ncores) + return(data) +} + +#' @rdname WeatherRegimes +#' @title Function for Calculating the Cluster analysis +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function computes the weather regimes from a cluster analysis. +#'It can be applied over the dataset with dimensions +#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the +#'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods +#'included in the hclust (stats package). +#' +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data n array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. +#'@param neofs number of modes to be kept (default = 30). +#'@param varThreshold Value with the percentage of variance to be explained by the PCs. +#' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#' For more details about these methods see the hclust function documentation included in the stats package. +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param ncores The number of multicore threads to use for parallel computation}. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +# dependence of the data with the same structure as Composite.), +#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#'@import s2dverification +#'@import multiApply +#'@examples +#'@export + +WeatherRegime <- function(data, ncenters = NULL, + EOFS = TRUE,neofs = 30, + varThreshold = NULL, lon = NULL, + lat = NULL, method = "kmeans", + iter.max=100, nstart = 30, + ncores = NULL) { + + if (is.null(names(dim(data)))) { + stop('data must be an array with named dimensions') + } + + dimData <- names(dim(data)) + nsdates <- dim(data)['sdate'] + nftimes <- dim(data)['ftime'] + + if ('sdate' %in% dimData && 'ftime' %in% dimData){ + data <- MergeDims(data, + merge_dims = c('ftime','sdate'), + rename_dim = 'time') + } + + output <- Apply(data = list(data), + target_dims = c('time','lat','lon'), + fun = ".WeatherRegime", + EOFS = EOFS, neofs = neofs, + varThreshold = varThreshold, + lon = lon, lat = lat, + ncenters = ncenters, + method = method, + ncores = ncores) + + if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData){ + # The frequency and the persistency are computed as they are useful + # parameters in the cluster analysis + extra_output <- Apply(data=output$cluster, + target_dims = 'time', + fun=.freqPer, + nsdates=nsdates, + nftimes=nftimes , + ncenters = ncenters) + + output <- list(composite=output$composite, + pvalue=output$pvalue, + cluster=output$cluster, + frequency=extra_output$frequency, + persistence=extra_output$persistence) + } + return(output) +} + +.WeatherRegime <- function(data, ncenters = NULL, EOFS = TRUE,neofs = 30, + varThreshold = NULL, lon = NULL, + lat = NULL, method = "kmeans", + iter.max=100, nstart = 30) { + + if (is.null(names(dim(data)))) { + stop('data must be an array with named dimensions') + } + if (!is.null(lat) && dim(data)['lat'] != length(lat)) { + stop('the latitudes do not match with the lat dimension of data') + } + if (is.null(ncenters)) { + stop("ncenters must be specified") + } + if (EOFS == TRUE && is.null(lon)) { + stop("longitudes must be specified") + } + if (EOFS == TRUE && is.null(lat)) { + stop("latitudes must be specified") + } + + nlon <- dim(data)['lat'] + nlat <- dim(data)['lon'] + + if (EOFS == TRUE) { + if (is.null(varThreshold)) { + dataPC <- EOF(data, + lat = as.vector(lat), + lon = as.vector(lon), + neofs = neofs) + cluster_input <- dataPC$PC + } else { + dataPC <- EOF(data, + lat = as.vector(lat), + lon = as.vector(lon), + neofs = 30) + minPC <- + head(as.numeric(which(cumsum(dataPC$var) > varThreshold)), 1) + cluster_input <- dataPC$PC[, 1:minPC] + } + } else { + #if (latWeights){ + # latitude weights are applied on the data + dataW <- aperm(Apply(data, target_dims = 'lat', + function (x, la) { + x * cos(la * pi / 180)}, + la = lat)[[1]], c(2, 1, 3)) + + cluster_input <- MergeDims(dataW, merge_dims = c('lat','lon'), + rename_dim = 'space',na.rm=T) + #}else { + #cluster_input <- MergeDims(data2, merge_dims = c('lat','lon'), + # rename_dim = 'space',na.rm=T) + #} + } + + if (method == "kmeans") { + if (any(is.na(cluster_input))) { + posnas <- unique(which(is.na(cluster_input), arr.ind = T)[, 2]) + cluster_input <- cluster_input[, -posnas] + } + clust <- kmeans( + cluster_input, + centers = ncenters, + iter.max = iter.max, + nstart = nstart, + trace = FALSE) + + if (any(is.na(cluster_input))) { + centers <- array(NA, dim = c(ncenters, nlon * nlat)) + centers [, -c(posnas)] <- as.array(clust$center) + } else{ + centers <- as.array(clust$center) + } + result <- array(0, c(ncenters, nlat, nlon)) + # the order of the data dimensions is changed ('lat','lon','time') + result <- Composite(aperm(data,c(3,2,1)), clust$cluster) + + } else { + result <- hclust(dist(cluster_input), method = method) + clusterCut <- cutree(result, ncenters) + result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) + } + result <- lapply(1:length(result), + function (n) {names(dim(result[[n]])) <- c("lon", "lat", "cluster") + return (result[[n]])}) + + names(result) <- c('composite','pvalue') + + if (method == "kmeans") { + clust <- as.array(clust$cluster) + names(dim(clust)) <- 'time' +: return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = clust)) + } else { + clust <- as.array(clusterCut) + names(dim(clust)) <- 'time' + return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = clust)) + } +} + +.freqPer<- function (clust, nsdates, nftimes, ncenters){ + frequency <- persistence <- matrix(NA, nsdates, ncenters) + x <- as.vector(clust) + for (i in 1:nsdates) { + occurences <-rle(x[((i * nftimes) + 1 - nftimes):(i * nftimes)]) + for (j in 1:ncenters) { + frequency[i, j] <-(sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 + persistence[i, j] <- mean(occurences$lengths[occurences$values == j]) + } + } + return(list(frequency=frequency, + persistence=persistence)) +} + diff --git a/R/WeatherRegime.R b/R/WeatherRegime.R deleted file mode 100644 index 8f50babb..00000000 --- a/R/WeatherRegime.R +++ /dev/null @@ -1,230 +0,0 @@ -#' @rdname WeatherRegimes -#' @title Function for Calculating the Cluster analysis -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function computes the weather regimes from a cluster analysis. -#'It can be applied over the dataset with dimensions -#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the -#'EOFs analysis to filter the dataset. -#'The cluster analysis can be performed with the traditional k-means or those methods -#'included in the hclust (stats package). -#' -#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). -#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, -#' 4961–4976, doi:10.1007/s00382-019-04839-5. -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data n array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. -#'@param threshold Value with the percentage of variance to be explained by the PCs. -#' Only sufficient PCs to explain this much variance will be used in the clustering. -#'@param lon Vector of longitudes. -#'@param lat Vector of latitudes. -#'@param ncenters Number of clusters to be calculated with the clustering function. -#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) -#'but the function also support the different methods included in the hclust . These methods are: -#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). -#' For more details about these methods see the hclust function documentation included in the stats package. -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). -#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation}. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial -# dependence of the data with the same structure as Composite.), -#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{center} (A vector of integers (from 1:ncenters) indicating the cluster to which each point is allocated (only if method=’kmeans’ has been selected).), -#' \code{cluster_lengths} (Length of repeated values in the cluster time series (only if method=’kmeans’ has been selected).), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -#'@import s2dverification -#'@import multiApply -#'@examples -#'@export - -WeatherRegime <- - function(data, - EOFS = TRUE, - neofs = 30, - threshold = NULL, - lon = NULL, - lat = NULL, - ncenters = NULL, - method = "kmeans", - nstart = 30, - iter.max = 100, - ncores = NULL) { - if (is.null(names(dim(data)))) { - stop('data must be an array with named dimensions') - } - if (length(dim(data)) > 4) { - sdate <- which(names(dim(data)) == "sdate") - ftime <- which(names(dim(data)) == "ftime") - lon_dim <- which(names(dim(data)) == "lon") - lat_dim <- which(names(dim(data)) == "lat") - dims <- - c(1:length(dim(data)))[-c(sdate, ftime, lon_dim, lat_dim)] - data <- aperm(data, c(sdate, ftime, lat_dim, lon_dim, dims)) - margins <- 5:length(dim(data)) - result <- - Apply( - data = list(data), - margins = list(margins), - fun = ".WeatherRegime", - EOFS = EOFS, - neofs = neofs, - threshold = threshold, - lon = lon, - lat = lat, - ncenters = ncenters, - method = method, - ncores = ncores - ) - } else { - result <- - .WeatherRegime( - data, - EOFS = EOFS, - neofs = neofs, - threshold = threshold, - lon = lon, - lat = lat, - ncenters = ncenters, - method = method - ) - } - return(result) - } - - -.WeatherRegime <- - function(data, - EOFS = TRUE, - neofs = 30, - threshold = NULL, - lon = NULL, - lat = NULL, - ncenters = NULL, - method = "kmeans", - nstart = 30) { - if (is.null(names(dim(data)))) { - stop('data must be an array with named dimensions') - } - if (!is.null(lat) && dim(data)['lat'] != length(lat)) { - stop('the latitudes do not match with the lat dimension of data') - } - if (is.null(ncenters)) { - stop("ncenters must be specified") - } - if (EOFS == TRUE && is.null(lon)) { - stop("longitudes must be specified") - } - if (EOFS == TRUE && is.null(lat)) { - stop("latitudes must be specified") - } - - sdate <- which(names(dim(data)) == "sdate") - ftime <- which(names(dim(data)) == "ftime") - nftimes <- dim(data)[ftime] - nsdates <- dim(data)[sdate] - lon2 <- which(names(dim(data)) == "lon") - lat2 <- which(names(dim(data)) == "lat") - data <- aperm(data, c(ftime, sdate, lat2, lon2)) - nlon <- dim(data)[lon2] - nlat <- dim(data)[lat2] - dim(data) <- - c(nftimes * nsdates, nlat, nlon)# to be changed by mergedims - names(dim(data)) <- c('time', 'lat', 'lon') - - - if (EOFS == TRUE) { - dataPC <- EOF(data, - lat = as.vector(lat), - lon = as.vector(lon), - neofs = neofs) - if (is.null(threshold)) { - threshold <- sum(dataPC$var) - cluster_input <- dataPC$PC - } else { - threshold <- threshold - minPC <- - head(as.numeric(which(cumsum(dataPC$var) > threshold)), 1) - cluster_input <- dataPC$PC[, 1:minPC] - } - } else { - cluster_input <- data - latWeights <- - InsertDim(InsertDim(cos(lat * pi / 180), 1, nftimes * nsdates), 3, nlon) - cluster_input <- cluster_input * latWeights - dim(cluster_input) <- c(nftimes * nsdates, nlat * nlon) - } - if (method == "kmeans") { - if (any(is.na(cluster_input))) { - posnas <- unique(which(is.na(cluster_input), arr.ind = T)[, 2]) - cluster_input <- cluster_input[, -posnas] - } - clust <- kmeans( - cluster_input, - centers = ncenters, - iter.max = 100, - nstart = nstart, - trace = FALSE - ) - - if (any(is.na(cluster_input))) { - centers <- array(NA, dim = c(ncenters, nlon * nlat)) - centers [, -c(posnas)] <- as.array(clust$center) - } else{ - centers <- as.array(clust$center) - } - result <- array(0, c(ncenters, nlat, nlon)) - # the order of the data dimensions is changed ('lat','lon','time') - result <- Composite(aperm(data, c(2, 3, 1)), clust$cluster) - names(dim(result$composite)) <- c("lat", "lon", "cluster") - cluster_timeseries <- list(lengths = c(), values = c()) - frequency <- persistence <- matrix(NA, nsdates, ncenters) - for (i in 1:nsdates) { - occurences <- - rle(clust$cluster[((i * nftimes) + 1 - nftimes):(i * nftimes)]) - cluster_timeseries <- - list( - lengths = c(cluster_timeseries$lengths, - occurences$lengths), - values = c(cluster_timeseries$values, occurences$values) - ) - for (j in 1:ncenters) { - frequency[i, j] <- - (sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 - persistence[i, j] <- - mean(occurences$lengths[occurences$values == j]) - } - } - } else { - result <- hclust(dist(cluster_input), method = method) - clusterCut <- cutree(result, ncenters) - result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) - } - if (method == "kmeans") { - return( - list( - composite = result$composite, - pvalue = result$pvalue, - cluster = as.array(clust$cluster), - center = centers, - cluster_lengths = as.array(cluster_timeseries$lengths), - cluster_values = as.array(cluster_timeseries$values), - persistence = as.array(persistence), - frequency = frequency - ) - ) - } else { - return(list( - composite = result$composite, - pvalue = result$pvalue, - cluster = as.array(clusterCut) - )) - } - } - -- GitLab From d2301437b4379e9e351a93df97fa4901917c9463 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 4 Mar 2020 19:16:41 +0100 Subject: [PATCH 038/184] change name --- R/{CST_WeatherRegime.R => CST_WeatherRegimes.R} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename R/{CST_WeatherRegime.R => CST_WeatherRegimes.R} (99%) diff --git a/R/CST_WeatherRegime.R b/R/CST_WeatherRegimes.R similarity index 99% rename from R/CST_WeatherRegime.R rename to R/CST_WeatherRegimes.R index 7b0d64fa..cc8e8b9f 100644 --- a/R/CST_WeatherRegime.R +++ b/R/CST_WeatherRegimes.R @@ -43,7 +43,7 @@ #'@examples #'@export #' -CST_WeatherRegime <- function(data,ncenters = NULL, +CST_WeatherRegimes <- function(data,ncenters = NULL, EOFS = TRUE,neofs = 30, varThreshold = NULL, lon = NULL, lat = NULL, method = "kmeans", -- GitLab From 6b187edd5aa42db0140fbc0734b8d6f3ebaab631 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 4 Mar 2020 21:10:37 +0100 Subject: [PATCH 039/184] bugfix --- R/CST_WeatherRegimes.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index cc8e8b9f..2b5e6e53 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -249,7 +249,7 @@ WeatherRegime <- function(data, ncenters = NULL, if (method == "kmeans") { clust <- as.array(clust$cluster) names(dim(clust)) <- 'time' -: return(list( + return(list( composite = result$composite, pvalue = result$pvalue, cluster = clust)) -- GitLab From 76bf67fa9cbcb26406e597086ee95b5636f22cb7 Mon Sep 17 00:00:00 2001 From: Chihchung Chou Date: Thu, 5 Mar 2020 12:07:39 +0100 Subject: [PATCH 040/184] document about CST_BiasCorrectionNA updated --- DESCRIPTION | 2 +- man/Analogs.Rd | 25 +++++++-------------- man/BEI_PDFBest.Rd | 20 ++++++----------- man/BEI_Weights.Rd | 7 +++--- man/CST_Analogs.Rd | 20 ++++++----------- man/CST_Anomaly.Rd | 10 +++++---- man/CST_BEI_Weighting.Rd | 16 +++++--------- man/CST_BiasCorrection.Rd | 11 ++++++---- man/CST_Calibration.Rd | 19 ++++++---------- man/CST_CategoricalEnsCombination.Rd | 17 +++++--------- man/CST_EnsClustering.Rd | 17 +++++--------- man/CST_Load.Rd | 1 + man/CST_MergeDims.Rd | 9 +++----- man/CST_MultiEOF.Rd | 11 +++------- man/CST_MultiMetric.Rd | 9 ++++---- man/CST_MultivarRMSE.Rd | 7 +++--- man/CST_QuantileMapping.Rd | 20 ++++++----------- man/CST_RFSlope.Rd | 1 + man/CST_RFWeights.Rd | 7 +++--- man/CST_RainFARM.Rd | 24 ++++++-------------- man/CST_SaveExp.Rd | 7 +++--- man/CST_SplitDim.Rd | 1 + man/Calibration.Rd | 20 ++++++----------- man/EnsClustering.Rd | 19 +++++----------- man/MergeDims.Rd | 9 +++----- man/MultiEOF.Rd | 17 ++++---------- man/PlotCombinedMap.Rd | 33 ++++++++-------------------- man/PlotForecastPDF.Rd | 17 +++++--------- man/PlotMostLikelyQuantileMap.Rd | 18 +++++---------- man/RFSlope.Rd | 4 +++- man/RainFARM.Rd | 23 +++++-------------- man/SplitDim.Rd | 1 + man/areave_data.Rd | 1 + man/as.s2dv_cube.Rd | 7 +++--- man/lonlat_data.Rd | 1 + man/lonlat_prec.Rd | 1 + man/s2dv_cube.Rd | 19 +++++----------- 37 files changed, 165 insertions(+), 286 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2c87e147..19d0b720 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -70,4 +70,4 @@ VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 7.0.2 +RoxygenNote: 5.0.0 diff --git a/man/Analogs.Rd b/man/Analogs.Rd index 06107c07..ee8a737e 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,19 +4,9 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - criteria = "Large_dist", - lonVar = NULL, - latVar = NULL, - region = NULL, - nAnalogs = NULL, - return_list = FALSE -) +Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + criteria = "Large_dist", lonVar = NULL, latVar = NULL, region = NULL, + nAnalogs = NULL, return_list = FALSE) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field @@ -387,6 +377,11 @@ Local_scalecor <- Analogs(expL=expSLP, str(Local_scalecor) Local_scalecor$AnalogsInfo +} +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} + +Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -394,8 +389,4 @@ and M. Vrac, 2013 : Ensemble reconstruction of the atmospheric column from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. \email{pascal.yiou@lsce.ipsl.fr} } -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} -Nuria Perez-Zanon \email{nuria.perez@bsc.es} -} diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index 0ba24a84..f836ab72 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,16 +4,9 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest( - index_obs, - index_hind1, - index_hind2, - index_fcst1 = NULL, - index_fcst2 = NULL, - method_BC = "none", - time_dim_name = "time", - na.rm = FALSE -) +BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, + index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", + na.rm = FALSE) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database @@ -120,11 +113,12 @@ dim(res) # time statistic season # 1 2 2 } +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/BEI_Weights.Rd b/man/BEI_Weights.Rd index 867a4eb0..61db33af 100644 --- a/man/BEI_Weights.Rd +++ b/man/BEI_Weights.Rd @@ -43,12 +43,13 @@ dim(res) # sdate dataset member season # 10 3 5 1 +} +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} } \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index d7dd5e14..7c9a1e6f 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,15 +4,8 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - region = NULL, - criteria = "Large_dist" -) +CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + region = NULL, criteria = "Large_dist") } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the @@ -88,6 +81,11 @@ adapted version of the method of Yiou et al 2013. \examples{ res <- CST_Analogs(expL = lonlat_data$exp, obsL = lonlat_data$obs) +} +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} + +Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -99,8 +97,4 @@ from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. code{\link{CST_Load}}, \code{\link[s2dverification]{Load}} and \code{\link[s2dverification]{CDORemap}} } -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} -Nuria Perez-Zanon \email{nuria.perez@bsc.es} -} diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 07691ea7..e1c31f0c 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,7 +4,8 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) +CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, + dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -52,12 +53,13 @@ str(anom3) anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) str(anom4) -} -\seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } +\seealso{ +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} +} + diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index d6f65bb5..0e60a356 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,13 +4,8 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting( - var_exp, - aweights, - terciles = NULL, - type = "ensembleMean", - time_dim_name = "time" -) +CST_BEI_Weighting(var_exp, aweights, terciles = NULL, type = "ensembleMean", + time_dim_name = "time") } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable @@ -73,11 +68,12 @@ dim(res_CST$data) # time lat lon dataset # 2 3 2 2 } +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/CST_BiasCorrection.Rd b/man/CST_BiasCorrection.Rd index a1b415fb..3a8fa4b6 100644 --- a/man/CST_BiasCorrection.Rd +++ b/man/CST_BiasCorrection.Rd @@ -4,12 +4,14 @@ \alias{CST_BiasCorrection} \title{Bias Correction based on the mean and standard deviation adjustment} \usage{ -CST_BiasCorrection(exp, obs) +CST_BiasCorrection(exp, obs, na.rm = FALSE) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}} \item{obs}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the observed data in the element named \code{$data}.} + +\item{na.rm}{a logical value indicating whether missing values should be stripped before the computation proceeds, by default it is set to FALSE.} } \value{ an object of class \code{s2dv_cube} containing the bias corrected forecasts in the element called \code{$data} with the same dimensions of the experimental data. @@ -35,9 +37,10 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_BiasCorrection(exp = exp, obs = obs) str(a) } -\references{ -Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) -} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} } +\references{ +Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) +} + diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 891e2e5f..ed880aab 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -4,15 +4,9 @@ \alias{CST_Calibration} \title{Forecast Calibration} \usage{ -CST_Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +CST_Calibration(exp, obs, cal.method = "mse_min", + eval.method = "leave-one-out", multi.model = F, na.fill = T, + ncores = 1) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -50,11 +44,12 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_Calibration(exp = exp, obs = obs, cal.method = "mse_min", eval.method = "in-sample") str(a) } -\seealso{ -\code{\link{CST_Load}} -} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} Bert Van Schaeybroeck, \email{bertvs@meteo.be} } +\seealso{ +\code{\link{CST_Load}} +} + diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index c23f8341..e551c3ec 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,14 +4,8 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination( - exp, - obs, - cat.method = "pool", - eval.method = "leave-one-out", - amt.cat = 3, - ... -) +CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", + eval.method = "leave-one-out", amt.cat = 3, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} @@ -89,6 +83,9 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_CategoricalEnsCombination(exp = exp, obs = obs, amt.cat = 3, cat.method = "mmw") } } +\author{ +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} \references{ Rajagopalan, B., Lall, U., & Zebiak, S. E. (2002). Categorical climate forecasts through regularization and optimal combination of multiple GCM ensembles. Monthly Weather Review, 130(7), 1792-1811. @@ -96,6 +93,4 @@ Robertson, A. W., Lall, U., Zebiak, S. E., & Goddard, L. (2004). Improved combin Van Schaeybroeck, B., & Vannitsem, S. (2019). Postprocessing of Long-Range Forecasts. In Statistical Postprocessing of Ensemble Forecasts (pp. 267-290). } -\author{ -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} + diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 154541d5..c13bf205 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -4,18 +4,10 @@ \alias{CST_EnsClustering} \title{Ensemble clustering} \usage{ -CST_EnsClustering( - exp, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = F -) +CST_EnsClustering(exp, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = F) } \arguments{ \item{exp}{An object of the class 's2dv_cube', containing the variables to be analysed. @@ -133,3 +125,4 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/CST_Load.Rd b/man/CST_Load.Rd index bf03ba42..1fee022c 100644 --- a/man/CST_Load.Rd +++ b/man/CST_Load.Rd @@ -47,3 +47,4 @@ obs <- CSTools::lonlat_data$obs \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} } + diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 0762e83f..449e011e 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,12 +4,8 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims( - data, - merge_dims = c("ftime", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +CST_MergeDims(data, merge_dims = c("ftime", "monthly"), rename_dim = NULL, + na.rm = FALSE) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -42,3 +38,4 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index 036a6470..fb584751 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,14 +4,8 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF( - datalist, - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, minvar = 0.6, + lon_lim = NULL, lat_lim = NULL) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. @@ -75,3 +69,4 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } + diff --git a/man/CST_MultiMetric.Rd b/man/CST_MultiMetric.Rd index 8e3ce593..079a5588 100644 --- a/man/CST_MultiMetric.Rd +++ b/man/CST_MultiMetric.Rd @@ -37,14 +37,15 @@ c(ano_exp, ano_obs) \%<-\% CST_Anomaly(exp = exp, obs = obs, cross = TRUE, memb a <- CST_MultiMetric(exp = ano_exp, obs = ano_obs) str(a) } +\author{ +Mishra Niti, \email{niti.mishra@bsc.es} + +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} \references{ Mishra, N., Prodhomme, C., & Guemas, V. (n.d.). Multi-Model Skill Assessment of Seasonal Temperature and Precipitation Forecasts over Europe, 29-31.\url{http://link.springer.com/10.1007/s00382-018-4404-z} } \seealso{ \code{\link[s2dverification]{Corr}}, \code{\link[s2dverification]{RMS}}, \code{\link[s2dverification]{RMSSS}} and \code{\link{CST_Load}} } -\author{ -Mishra Niti, \email{niti.mishra@bsc.es} -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} diff --git a/man/CST_MultivarRMSE.Rd b/man/CST_MultivarRMSE.Rd index 24af608c..685eaf77 100644 --- a/man/CST_MultivarRMSE.Rd +++ b/man/CST_MultivarRMSE.Rd @@ -56,9 +56,10 @@ weight <- c(1, 2) a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = weight) str(a) } -\seealso{ -\code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} -} \author{ Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} } +\seealso{ +\code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} +} + diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index ad8f4b6c..1c93843e 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,16 +4,9 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping( - exp, - obs, - exp_cor = NULL, - sample_dims = c("sdate", "ftime", "member"), - sample_length = NULL, - method = "QUANT", - ncores = NULL, - ... -) +CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", + "ftime", "member"), sample_length = NULL, method = "QUANT", + ncores = NULL, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} @@ -84,9 +77,10 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', method = 'DIST') } } -\seealso{ -\code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} -} \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} +} + diff --git a/man/CST_RFSlope.Rd b/man/CST_RFSlope.Rd index 0c4e1671..d2b5aec0 100644 --- a/man/CST_RFSlope.Rd +++ b/man/CST_RFSlope.Rd @@ -50,3 +50,4 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/CST_RFWeights.Rd b/man/CST_RFWeights.Rd index ef5ebe4d..08a7b850 100644 --- a/man/CST_RFWeights.Rd +++ b/man/CST_RFWeights.Rd @@ -47,6 +47,9 @@ nf <- 8 ww <- CST_RFWeights("./worldclim.nc", nf, lon, lat, fsmooth = TRUE) } } +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} \references{ Terzago, S., Palazzi, E., & von Hardenberg, J. (2018). Stochastic downscaling of precipitation in complex orography: @@ -54,6 +57,4 @@ A simple method to reproduce a realistic fine-scale climatology. Natural Hazards and Earth System Sciences, 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 . } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} + diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 1c609e08..4a667f9a 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,20 +4,9 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM( - data, - nf, - weights = 1, - slope = 0, - kmin = 1, - nens = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - verbose = FALSE, - drop_realization_dim = FALSE -) +CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, + fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, + verbose = FALSE, drop_realization_dim = FALSE) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -106,12 +95,13 @@ dim(res$data) # dataset member realization sdate ftime lat lon # 1 2 3 3 4 64 64 +} +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } \references{ Terzago, S. et al. (2018). NHESS 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 ; D'Onofrio et al. (2014), J of Hydrometeorology 15, 830-843; Rebora et. al. (2006), JHM 7, 724. } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} + diff --git a/man/CST_SaveExp.Rd b/man/CST_SaveExp.Rd index 0e49c119..17537205 100644 --- a/man/CST_SaveExp.Rd +++ b/man/CST_SaveExp.Rd @@ -29,10 +29,11 @@ destination <- "./path/" CST_SaveExp(data = data, destination = destination) } -} -\seealso{ -\code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} +} + diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index ee93aedc..2019ea7b 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -43,3 +43,4 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 9f884671..4290abd7 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -4,15 +4,8 @@ \alias{Calibration} \title{Forecast Calibration} \usage{ -Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +Calibration(exp, obs, cal.method = "mse_min", eval.method = "leave-one-out", + multi.model = F, na.fill = T, ncores = 1) } \arguments{ \item{exp}{an array containing the seasonal forecast experiment data.} @@ -37,6 +30,11 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} + +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} \references{ Doblas-Reyes F.J, Hagedorn R, Palmer T.N. The rationale behind the success of multi-model ensembles in seasonal forecasting-II calibration and combination. Tellus A. 2005;57:234-252. doi:10.1111/j.1600-0870.2005.00104.x @@ -47,8 +45,4 @@ Van Schaeybroeck, B., & Vannitsem, S. (2015). Ensemble post-processing using mem \seealso{ \code{\link{CST_Load}} } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 2fd8a3f1..27aca453 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -4,20 +4,10 @@ \alias{EnsClustering} \title{Ensemble clustering} \usage{ -EnsClustering( - data, - lat, - lon, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = T -) +EnsClustering(data, lat, lon, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = T) } \arguments{ \item{data}{A matrix of dimensions 'dataset member sdate ftime lat lon' containing the variables to be analysed.} @@ -77,3 +67,4 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index 7539ef6e..585049e8 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,12 +4,8 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims( - data, - merge_dims = c("time", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, + na.rm = FALSE) } \arguments{ \item{data}{an n-dimensional array with named dimensions} @@ -32,3 +28,4 @@ new_data <- MergeDims(data, merge_dims = c('time', 'lat')) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index dd0fc7fe..1e822fc4 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,19 +4,9 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF( - data, - lon, - lat, - time, - lon_dim = "lon", - lat_dim = "lat", - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", + neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, + lat_lim = NULL) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, @@ -56,3 +46,4 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } + diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 616b84f9..6857c64d 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,27 +4,11 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap( - maps, - lon, - lat, - map_select_fun, - display_range, - map_dim = "map", - brks = NULL, - cols = NULL, - col_unknown_map = "white", - mask = NULL, - col_mask = "grey", - bar_titles = NULL, - legend_scale = 1, - fileout = NULL, - width = 8, - height = 5, - size_units = "in", - res = 100, - ... -) +PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, + map_dim = "map", brks = NULL, cols = NULL, col_unknown_map = "white", + mask = NULL, col_mask = "grey", bar_titles = NULL, legend_scale = 1, + fileout = NULL, width = 8, height = 5, size_units = "in", res = 100, + ...) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} @@ -83,11 +67,12 @@ PlotCombinedMap(list(a, b, c), lons, lats, bar_titles = paste('\% of belonging to', c('a', 'b', 'c')), brks = 20, width = 10, height = 8) } -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} -} \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} Veronica Torralba, \email{veronica.torralba@bsc.es} } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} + diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index c04b43c1..d7b95b08 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,18 +4,10 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF( - fcst, - tercile.limits, - extreme.limits = NULL, - obs = NULL, - plotfile = NULL, - title = "Set a title", - var.name = "Varname (units)", - fcst.names = NULL, - add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro") -) +PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, obs = NULL, + plotfile = NULL, title = "Set a title", var.name = "Varname (units)", + fcst.names = NULL, add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro")) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} @@ -57,3 +49,4 @@ PlotForecastPDF(fcsts2, c(-0.66, 0.66), extreme.limits = c(-1.2, 1.2), \author{ Llorenç Lledó \email{llledo@bsc.es} } + diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 4c400b18..6c92850e 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,15 +4,8 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap( - probs, - lon, - lat, - cat_dim = "bin", - bar_titles = NULL, - col_unknown_cat = "white", - ... -) +PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", + bar_titles = NULL, col_unknown_cat = "white", ...) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} @@ -116,10 +109,11 @@ PlotMostLikelyQuantileMap(bins, lons, lats, mask = 1 - (w1 + w2 / max(c(w1, w2))), brks = 20, width = 10, height = 8) -} -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} } \author{ Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} + diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index db3f0e10..09a24ff5 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,7 +4,8 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", + lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. @@ -59,3 +60,4 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 0db84679..984dcd42 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,24 +4,10 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM( - data, - lon, - lat, - nf, - weights = 1, - nens = 1, - slope = 0, - kmin = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - lon_dim = "lon", - lat_dim = "lat", - drop_realization_dim = FALSE, - verbose = FALSE -) +RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, kmin = 1, + fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, + lon_dim = "lon", lat_dim = "lat", drop_realization_dim = FALSE, + verbose = FALSE) } \arguments{ \item{data}{Precipitation array to downscale. @@ -131,3 +117,4 @@ dim(res$data) \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/SplitDim.Rd b/man/SplitDim.Rd index f07e4756..e36aa8a5 100644 --- a/man/SplitDim.Rd +++ b/man/SplitDim.Rd @@ -35,3 +35,4 @@ new_data <- SplitDim(data, indices = time, freq = 'year') \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/areave_data.Rd b/man/areave_data.Rd index a772220a..cc79c85c 100644 --- a/man/areave_data.Rd +++ b/man/areave_data.Rd @@ -41,3 +41,4 @@ areave_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} + diff --git a/man/as.s2dv_cube.Rd b/man/as.s2dv_cube.Rd index c2b8f3a8..13a2a296 100644 --- a/man/as.s2dv_cube.Rd +++ b/man/as.s2dv_cube.Rd @@ -40,11 +40,12 @@ data <- as.s2dv_cube(data) class(data) } } -\seealso{ -\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} -} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Nicolau Manubens, \email{nicolau.manubens@bsc.es} } +\seealso{ +\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} +} + diff --git a/man/lonlat_data.Rd b/man/lonlat_data.Rd index 0c6ee30f..eca7abac 100644 --- a/man/lonlat_data.Rd +++ b/man/lonlat_data.Rd @@ -41,3 +41,4 @@ lonlat_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} + diff --git a/man/lonlat_prec.Rd b/man/lonlat_prec.Rd index 345e3cab..69cb94e8 100644 --- a/man/lonlat_prec.Rd +++ b/man/lonlat_prec.Rd @@ -29,3 +29,4 @@ lonlat_prec <- CST_Load('prlr', exp = list(infile), obs = NULL, Jost von Hardenberg \email{j.vonhardenberg@isac.cnr.it} } \keyword{data} + diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index b0ce8966..48af7bbb 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,16 +4,8 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube( - data, - lon = NULL, - lat = NULL, - Variable = NULL, - Datasets = NULL, - Dates = NULL, - when = NULL, - source_files = NULL -) +s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, + Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -83,9 +75,10 @@ exp8 <- s2dv_cube(data = exp_original, lon = seq(-10, 10, 5), lat = c(45, 50), end = paste0(rep("31", 10), rep("01", 10), 1990:1999))) class(exp8) } -\seealso{ -\code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} -} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} +} + -- GitLab From 916c614a95cf6f72feee606761e3ce0b3d5a3fc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 5 Mar 2020 14:52:46 +0100 Subject: [PATCH 041/184] minor changes --- R/CST_WeatherRegimes.R | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 2b5e6e53..7a6e0913 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -53,10 +53,16 @@ CST_WeatherRegimes <- function(data,ncenters = NULL, stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } + + if ('lon' %in% names(data)){ + lon <- data$lon + }else { + lon <- NULL + } data$data <- WeatherRegime(data$data,ncenters = ncenters , EOFS = EOFS, neofs = neofs, varThreshold = varThreshold, lon = lon, - lat = lat, method = method, + lat = data$lat, method = method, iter.max=iter.max, nstart = nstart, ncores = ncores) return(data) @@ -118,6 +124,10 @@ WeatherRegime <- function(data, ncenters = NULL, stop('data must be an array with named dimensions') } + if (is.null(lat)) { + stop("latitudes must be specified") + } + dimData <- names(dim(data)) nsdates <- dim(data)['sdate'] nftimes <- dim(data)['ftime'] @@ -174,7 +184,7 @@ WeatherRegime <- function(data, ncenters = NULL, if (EOFS == TRUE && is.null(lon)) { stop("longitudes must be specified") } - if (EOFS == TRUE && is.null(lat)) { + if (is.null(lat)) { stop("latitudes must be specified") } -- GitLab From c77b067174632e1e7d37d32ef7c710ebcfb5a2b2 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Thu, 5 Mar 2020 15:51:12 +0100 Subject: [PATCH 042/184] PlotForecastPDF updated --- vignettes/PlotForecastPDF.Rmd | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/vignettes/PlotForecastPDF.Rmd b/vignettes/PlotForecastPDF.Rmd index 3e4fdb1e..c7e677a5 100644 --- a/vignettes/PlotForecastPDF.Rmd +++ b/vignettes/PlotForecastPDF.Rmd @@ -70,10 +70,11 @@ PlotForecastPDF(fcst, tercile.limits = rbind(c(20, 26), c(22, 28), c(15, 22)), An example using the lonlat_data from CSTools is provided. ```{r,fig.show = 'hide',warning=F} -fcst <- data.frame(fcst1 = lonlat_data$exp$data[1,,1,1,1,1]-273.15, - fcst2 = lonlat_data$exp$data[1,,1,2,1,1]-273.15) -PlotForecastPDF(fcst, tercile.limits = c(5, 7), extreme.limits = c(4,8), var.name = "Temperature (ºC)", - title = "Forecasts valid on 2000-11 at sample mediterranean region", - fcst.names = c("November", "December")) +fcst <- data.frame(fcst1 = lonlat_data$exp$data[1,,1,1,1,1] - 273.15, + fcst2 = lonlat_data$exp$data[1,,1,2,1,1] - 273.15) +PlotForecastPDF(fcst, tercile.limits = c(5, 7), extreme.limits = c(4, 8), + var.name = "Temperature (ºC)", + title = "Forecasts valid on 2000-11 at sample mediterranean region", + fcst.names = c("November", "December")) ``` - +![Example 4](./Figures/PlotForecastPDF_ex4.png) -- GitLab From adf20ebd6d7802a8b87bf61f231e32fb80676006 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Thu, 5 Mar 2020 15:57:14 +0100 Subject: [PATCH 043/184] add PlotForecastPDF vignette figures --- vignettes/Figures/PlotForecastPDF_ex1.png | Bin 0 -> 34554 bytes vignettes/Figures/PlotForecastPDF_ex2.png | Bin 0 -> 37928 bytes vignettes/Figures/PlotForecastPDF_ex3.png | Bin 0 -> 69397 bytes vignettes/Figures/PlotForecastPDF_ex4.png | Bin 0 -> 35720 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 vignettes/Figures/PlotForecastPDF_ex1.png create mode 100644 vignettes/Figures/PlotForecastPDF_ex2.png create mode 100644 vignettes/Figures/PlotForecastPDF_ex3.png create mode 100644 vignettes/Figures/PlotForecastPDF_ex4.png diff --git a/vignettes/Figures/PlotForecastPDF_ex1.png b/vignettes/Figures/PlotForecastPDF_ex1.png new file mode 100644 index 0000000000000000000000000000000000000000..d7067133054902e6b661f828f8a89b0bb285aa68 GIT binary patch literal 34554 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

=jB2QC;*vAVLPlu`~CyeA7$m*o9Eb_VnGt0bpa= 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 literal 0 HcmV?d00001 diff --git a/vignettes/Figures/PlotForecastPDF_ex2.png b/vignettes/Figures/PlotForecastPDF_ex2.png new file mode 100644 index 0000000000000000000000000000000000000000..67b4af1e1b523c564047fb545baecc11a4dbac2c GIT binary patch literal 37928 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 literal 0 HcmV?d00001 diff --git a/vignettes/Figures/PlotForecastPDF_ex3.png b/vignettes/Figures/PlotForecastPDF_ex3.png new file mode 100644 index 0000000000000000000000000000000000000000..10b1e63b4766e8aff8d10419b849d8677f197c58 GIT binary patch literal 69397 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 G-}oPW-VZGR literal 0 HcmV?d00001 diff --git a/vignettes/Figures/PlotForecastPDF_ex4.png b/vignettes/Figures/PlotForecastPDF_ex4.png new file mode 100644 index 0000000000000000000000000000000000000000..34df30d73e73f1d1d8e5ff4c34e57c2d487f4c2f GIT binary patch literal 35720 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 literal 0 HcmV?d00001 -- GitLab From 646e3215f79a587a3ee431dc51a46b88a2ea9e27 Mon Sep 17 00:00:00 2001 From: FRANCESC ROURA ADSERIAS Date: Fri, 6 Mar 2020 09:27:16 +0100 Subject: [PATCH 044/184] Space supressed --- vignettes/PlotForecastPDF.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/PlotForecastPDF.Rmd b/vignettes/PlotForecastPDF.Rmd index c7e677a5..98b2ae14 100644 --- a/vignettes/PlotForecastPDF.Rmd +++ b/vignettes/PlotForecastPDF.Rmd @@ -23,8 +23,8 @@ library(CSTools) The first step is to put your forecasts in an appropriate format. For this vignette we generate some random values from two normal distributions. The PlotForecastPDF by default will plot the ensemble members, the estimated density distributions and the tercile probabilities. ```{r,fig.show = 'hide',warning=F} -fcst <- data.frame( fcst1 = rnorm(mean = 25, sd = 3, n = 30), - fcst2 = rnorm( mean = 23, sd = 4.5, n = 30)) +fcst <- data.frame(fcst1 = rnorm(mean = 25, sd = 3, n = 30), + fcst2 = rnorm(mean = 23, sd = 4.5, n = 30)) PlotForecastPDF(fcst, tercile.limits = c(20, 26)) ``` -- GitLab From 0c085d9eb75eed5000b8d5148eab298295d917fc Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sat, 7 Mar 2020 11:22:24 +0100 Subject: [PATCH 045/184] faster interpnn --- R/CST_RFTemp.R | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 0df18616..37431b04 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -393,11 +393,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, (jj[1] <= 0) | (jj[length(jj)] > length(lat))) { stop("Downscaling area not contained in input data") } - for (k in seq_len(nt)) { - for (j in seq_along(jj)) { - zo[, j, k] <- z[ii, jj[j], k] - } - } + + zo[, , ] <- z[ii, jj, ] names(dim(zo)) <- names(dim(z)) return(zo) } -- GitLab From 522845f5c54480a522000c2a33b04ab904c70bb5 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sat, 7 Mar 2020 18:17:53 +0100 Subject: [PATCH 046/184] added bilinear interp as default --- R/CST_RFTemp.R | 73 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 21 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 37431b04..eb546188 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -31,6 +31,9 @@ #' @param delta An object of the class 's2dv_cube', containing a delta #' to be applied to the downscaled input data. Activates `nolapse = TRUE`. #' The grid of this object must coincide with that of the required output. +#' @param method string indicating the method used for interpolation: +#' "nearest" (nearest neighbours followed by smoothing with a circular +#' uniform weights kernel), "bilinear" (bilinear interpolation) #' @return CST_RFTemp() returns a downscaled CSTools object #' (i.e., of the class 's2dv_cube'). #' @export @@ -55,7 +58,7 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, - delta = NULL) { + method = "bilinear", delta = NULL) { if (!inherits(data, "s2dv_cube")) { stop("Parameter 'data' must be of the class 's2dv_cube', ", @@ -75,7 +78,7 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, res <- RFTemp(data$data, data$lon, data$lat, oro$data, oro$lon, oro$lat, xlim, ylim, lapse, lon_dim = lon_dim, lat_dim = lat_dim, time_dim = time_dim, - nolapse = nolapse, verbose = verbose, + nolapse = nolapse, verbose = verbose, method = method, compute_delta = compute_delta, delta = delta$data) data$data <- res$data @@ -115,6 +118,9 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param delta matrix containing a delta to be applied to the downscaled #' input data. The grid of this matrix is supposed to be same as that of #' the required output field +#' @param method string indicating the method used for interpolation: +#' "nearest" (nearest neighbours followed by smoothing with a circular +#' uniform weights kernel), "bilinear" (bilinear interpolation) #' @return RFTemp() returns a list containing the fine-scale #' longitudes, latitudes and the downscaled fields. #' @export @@ -137,7 +143,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, xlim = NULL, ylim = NULL, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, - delta = NULL) { + method = "bilinear", delta = NULL) { # Check/detect time_dim if (is.null(time_dim)) { @@ -163,7 +169,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, result <- Apply(data, target_dims = c(lon_dim, lat_dim, time_dim), fun = .downscalet, lon, lat, oro, lonoro, latoro, xlim = xlim, ylim = ylim, lapse = lapse, - nolapse = nolapse, verbose = verbose, + nolapse = nolapse, verbose = verbose, method = method, compute_delta = compute_delta) } else { result <- Apply(list(data, delta), @@ -171,7 +177,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, c(lon_dim, lat_dim)), fun = .downscalet_delta, lon, lat, oro, lonoro, latoro, xlim = xlim, ylim = ylim, lapse = lapse, - nolapse = nolapse, verbose = verbose, + nolapse = nolapse, verbose = verbose, method = method, compute_delta = compute_delta) } @@ -223,7 +229,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, .downscalet <- function(t, lon, lat, oro, lono, lato, xlim = NULL, ylim = NULL, radius = 0, lapse = 6.5, nolapse = FALSE, - verbose = FALSE, compute_delta = FALSE, delta = NULL) { + verbose = FALSE, compute_delta = FALSE, + method = "bilinear", delta = NULL) { if (!is.null(delta) & compute_delta) { stop("Cannot `compute_delta` and provide `delta` at the same time.") @@ -279,16 +286,15 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } if (verbose) { - print("Nearest neighbours interpolation") + print(paste("Interpolation using", method, "method")) } - tcut <- .interpnn(lon, lat, t, lonocut, latocut) + tcut <- .interp2d(lon, lat, t, lonocut, latocut, method = method) # Fine-scale smooth interpolated input field - dxol <- lonocut[2] - lonocut[1] - nrad <- as.integer(radius / abs(dxol) + 0.5) - if (verbose) { print(paste("Smoothing interpolated field")) } + dxol <- lonocut[2] - lonocut[1] + nrad <- as.integer(radius / abs(dxol) + 0.5) tout <- .smooth(tcut, nrad) if (is.null(delta)) { @@ -359,7 +365,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' Nearest neighbour interpolation #' #' @description The input field is interpolated onto the output -#' coordinate grid using nearest neighbours +#' coordinate grid using nearest neighbours or bilinear interpolation #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} #' @param z matrix with the input field to interpolate (assumed to #' include also a third time dimension) @@ -367,6 +373,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param lat vector of input latitudes #' @param lonp vector of output longitudes #' @param latp vector of output latitudes +#' @param method string indicating the interpolation method +#' ("nearest" or "bilinear" (default)) #' @return The interpolated field. #' @examples #' lon=5:11 @@ -374,9 +382,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' z=runif(7*6*2); dim(z)=c(7,6,2) #' lonp=seq(5,10,0.2) #' latp=seq(35,40,0.2) -#' zo <- .interpnn(lon, lat, z, lonp, latp) +#' zo <- .interp2d(lon, lat, z, lonp, latp, method="nearest") -.interpnn <- function(lon, lat, z, lonp, latp) { +.interp2d <- function(lon, lat, z, lonp, latp, method="bilinear") { nx <- length(lonp) ny <- length(latp) @@ -386,15 +394,38 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, zo <- array(0., c(nx, ny, nt)) dy <- lat[2] - lat[1] dx <- lon[2] - lon[1] - jj <- ((latp - (lat[1] - dy / 2)) %/% dy + 1) - ii <- ((lonp - (lon[1] - dx / 2)) %/% dx + 1) - if ((ii[1] <= 0) | (ii[length(ii)] > length(lon)) | - (jj[1] <= 0) | (jj[length(jj)] > length(lat))) { - stop("Downscaling area not contained in input data") - } + if (method == "nearest") { + jj <- ((latp - (lat[1] - dy / 2)) %/% dy + 1) + ii <- ((lonp - (lon[1] - dx / 2)) %/% dx + 1) - zo[, , ] <- z[ii, jj, ] + if ((ii[1] <= 0) | (ii[length(ii)] > length(lon)) | + (jj[1] <= 0) | (jj[length(jj)] > length(lat))) { + stop("Downscaling area not contained in input data") + } + zo[, , ] <- z[ii, jj, ] + } else { + jj <- ((latp - lat[1]) %/% dy + 1) + ii <- ((lonp - lon[1]) %/% dx + 1) + + if ((ii[1] <= 0) | (ii[length(ii)] >= length(lon)) | + (jj[1] <= 0) | (jj[length(jj)] >= length(lat))) { + stop("Downscaling area not contained in input data") + } + xx <- (lonp - lon[ii]) / dx + yy <- (latp - lat[jj]) / dy + xx <- xx[row(zo[, , 1])] + yy <- yy[col(zo[, , 1])] + dim(xx) <- c(nx, ny) + dim(yy) <- c(nx, ny) + + for (k in seq_len(nt)) { + zo[, , k] <- z[ii, jj, k] * (1 - xx) * (1 - yy) + + z[ii + 1, jj, k] * xx * (1 - yy) + + z[ii, jj + 1, k] * (1 - xx) * yy + + z[ii + 1, jj + 1, k] * xx * yy + } + } names(dim(zo)) <- names(dim(z)) return(zo) } -- GitLab From d0c52753c88e7057d2ca5e177eb7d192bdd2758a Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Sat, 7 Mar 2020 23:33:45 +0100 Subject: [PATCH 047/184] small fix and added test --- R/CST_RFTemp.R | 36 +++++++++++++++++++------------- tests/testthat/test-CST_RFTemp.R | 7 +++++++ 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index eb546188..de421c12 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -34,11 +34,13 @@ #' @param method string indicating the method used for interpolation: #' "nearest" (nearest neighbours followed by smoothing with a circular #' uniform weights kernel), "bilinear" (bilinear interpolation) +#' The two methods provide similar results, but nearest is slightly better +#' provided that the fine-scale grid is correctly centered as a subdivision +#' of the large-scale grid #' @return CST_RFTemp() returns a downscaled CSTools object #' (i.e., of the class 's2dv_cube'). #' @export #' @import multiApply -#' @import rainfarmr #' @examples #' # Generate simple synthetic data and downscale by factor 4 #' t <- rnorm(6 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 @@ -121,11 +123,14 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param method string indicating the method used for interpolation: #' "nearest" (nearest neighbours followed by smoothing with a circular #' uniform weights kernel), "bilinear" (bilinear interpolation) +#' The two methods provide similar results, but nearest is slightly better +#' provided that the fine-scale grid is correctly centered as a subdivision +#' of the large-scale grid +#' @return CST_RFTemp() returns a downscaled CSTools object #' @return RFTemp() returns a list containing the fine-scale #' longitudes, latitudes and the downscaled fields. #' @export #' @import multiApply -#' @import rainfarmr #' @examples #' # Generate simple synthetic data and downscale by factor 4 #' t <- rnorm(6 * 6 * 4 * 3)*10 + 273.15 + 10 @@ -288,14 +293,16 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, if (verbose) { print(paste("Interpolation using", method, "method")) } - tcut <- .interp2d(lon, lat, t, lonocut, latocut, method = method) + tout <- .interp2d(lon, lat, t, lonocut, latocut, method = method) # Fine-scale smooth interpolated input field - if (verbose) { - print(paste("Smoothing interpolated field")) - } dxol <- lonocut[2] - lonocut[1] nrad <- as.integer(radius / abs(dxol) + 0.5) - tout <- .smooth(tcut, nrad) + if (method == "nearest") { + if (verbose) { + print(paste("Smoothing interpolated field")) + } + tout <- .smooth(tout, nrad) + } if (is.null(delta)) { # Compute delta @@ -353,13 +360,14 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, # Special driver version of .downscalet to apply delta .downscalet_delta <- function(t, delta, lon, lat, oro, lono, lato, - xlim = NULL, ylim = NULL, - radius = 0, lapse = 6.5, nolapse = FALSE, - verbose = FALSE, compute_delta = FALSE) { - res <- .downscalet(t, lon, lat, oro, lono, lato, - xlim = xlim, ylim = ylim, radius = radius, - lapse = lapse, nolapse = nolapse, verbose = verbose, - compute_delta = compute_delta, delta = delta) + xlim = NULL, ylim = NULL, radius = 0, + lapse = 6.5, nolapse = FALSE, verbose = FALSE, + compute_delta = FALSE, method = "bilinear") { + res <- .downscalet(t, lon, lat, oro, lono, lato, xlim = xlim, + ylim = ylim, radius = radius, lapse = lapse, + nolapse = nolapse, verbose = verbose, + compute_delta = compute_delta, delta = delta, + method = method) } #' Nearest neighbour interpolation diff --git a/tests/testthat/test-CST_RFTemp.R b/tests/testthat/test-CST_RFTemp.R index b9fbcf7f..536e44f0 100644 --- a/tests/testthat/test-CST_RFTemp.R +++ b/tests/testthat/test-CST_RFTemp.R @@ -61,4 +61,11 @@ test_that("Sanity checks and simple use cases", { resdl <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), delta = delta) expect_equal(mean(resdl$data), mean(resl$data), tolerance = 1e-10) + + expect_warning( + resd <- CST_RFTemp(exp, oro, time_dim = c("ftime", "sdate", "member"), + nolapse = TRUE, method = "nearest"), NA) + dim(resd$data) <- c(16, 16, 4 * 3 * 2 * 2) + resm <- apply(resd$data, c(1, 2), mean) + expect_equal(mean(oro$data[7:22, 7:22]), mean(resm), tolerance = 1e-10) }) -- GitLab From 85b4e51dbe599437a264c63933e5b06c18d79b10 Mon Sep 17 00:00:00 2001 From: Eroteida Sanchez Garcia Date: Mon, 9 Mar 2020 12:05:16 +0000 Subject: [PATCH 048/184] Uploading function 'PlotPDFsOLE.R' --- NAMESPACE | 1 + R/PlotPDFsOLE.R | 240 +++++++++++++++++++++++++++ man/Analogs.Rd | 16 +- man/BEI_PDFBest.Rd | 13 +- man/CST_Analogs.Rd | 11 +- man/CST_Anomaly.Rd | 3 +- man/CST_BEI_Weighting.Rd | 9 +- man/CST_Calibration.Rd | 12 +- man/CST_CategoricalEnsCombination.Rd | 10 +- man/CST_EnsClustering.Rd | 16 +- man/CST_MergeDims.Rd | 8 +- man/CST_MultiEOF.Rd | 10 +- man/CST_QuantileMapping.Rd | 13 +- man/CST_RainFARM.Rd | 17 +- man/CST_SplitDim.Rd | 3 +- man/Calibration.Rd | 12 +- man/EnsClustering.Rd | 18 +- man/MergeDims.Rd | 8 +- man/MultiEOF.Rd | 16 +- man/PlotCombinedMap.Rd | 26 +-- man/PlotForecastPDF.Rd | 17 +- man/PlotMostLikelyQuantileMap.Rd | 11 +- man/PlotPDFsOLE.Rd | 59 +++++++ man/RFSlope.Rd | 3 +- man/RainFARM.Rd | 22 +-- man/s2dv_cube.Rd | 12 +- 26 files changed, 365 insertions(+), 221 deletions(-) create mode 100644 R/PlotPDFsOLE.R create mode 100644 man/PlotPDFsOLE.Rd diff --git a/NAMESPACE b/NAMESPACE index bd5d0f16..78954a95 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -27,6 +27,7 @@ export(MultiEOF) export(PlotCombinedMap) export(PlotForecastPDF) export(PlotMostLikelyQuantileMap) +export(PlotPDFsOLE) export(RFSlope) export(RainFARM) export(SplitDim) diff --git a/R/PlotPDFsOLE.R b/R/PlotPDFsOLE.R new file mode 100644 index 00000000..760798f2 --- /dev/null +++ b/R/PlotPDFsOLE.R @@ -0,0 +1,240 @@ +#' Plotting two probability density gaussian functions and the optimal linear +#' estimation (OLE) as result of combining them. +#' +#' @author Eroteida Sanchez-Garcia - AEMET, //email{esanchezg@aemet.es} +#' +#' @description This function plots two probability density gaussian functions +#' and the optimal linear estimation (OLE) as result of combining them. +#' +#' @param pdf_1 A numeric array with a dimension named 'statistic', containg +#' two parameters: mean' and 'standard deviation' of the first gaussian pdf +#' to combining. +#' @param pdf_2 A numeric array with a dimension named 'statistic', containg +#' two parameters: mean' and 'standard deviation' of the second gaussian pdf +#' to combining. +#' @param nsigma (optional) A numeric value for setting the limits of X axis. +#' (Default nsigma = 3). +#' @param plotfile (optional) A filename where the plot will be saved. +#' (Default: the plot is not saved). +#' @param width (optional) A numeric value indicating the plot width in +#' units ("in", "cm", or "mm"). (Default width = 30). +#' @param height (optional) A numeric value indicating the plot height. +#' (Default height = 15). +#' @param units (optional) A character value indicating the plot size +#' unit. (Default units = 'cm'). +#' @param dpi (optional) A numeric value indicating the plot resolution. +#' (Default dpi = 300). +#' +#' @return PlotPDFsOLE() returns a ggplot object containing the plot. +#' +#' @import ggplot2 +#' +#' @examples +#' Example for PlotPDFs function +#' pdf_1 <- c(1.1,0.6) +#' attr(pdf_1, "name") <- "NAO1" +#' dim(pdf_1) <- c(statistic = 2) +#' pdf_2 <- c(1,0.5) +#' attr(pdf_2, "name") <- "NAO2" +#' dim(pdf_2) <- c(statistic = 2) +#' +#' PlotPDFsOLE(pdf_1, pdf_2) +#' +#'@export +PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) { + + if (!is.numeric(dpi)) { + stop("Parameter 'dpi' must be numeric.") + } + if (length(dpi) > 1) { + warning("Parameter 'dpi' has length greater than 1 and ", + "only the first element will be used.") + dpi <- dpi[1] + } + if (!is.character(units)) { + stop("Parameter 'units' must be character") + } + if (length(units) > 1) { + warning("Parameter 'units' has length greater than 1 and ", + "only the first element will be used.") + units <- units[1] + } + if(!(units %in% c("in", "cm", "mm"))) { + stop("Parameter 'units' must be equal to 'in', 'cm' or 'mm'.") + } + if (!is.numeric(height)) { + stop("Parameter 'height' must be numeric.") + } + if (length(height) > 1) { + warning("Parameter 'height' has length greater than 1 and ", + "only the first element will be used.") + height <- height[1] + } + if (!is.numeric(width)) { + stop("Parameter 'width' must be numeric.") + } + if (length(width) > 1) { + warning("Parameter 'width' has length greater than 1 and ", + "only the first element will be used.") + width <- width[1] + } + if(!is.null(plotfile)){ + if (!is.character(plotfile)) { + stop("Parameter 'plotfile' must be a character string ", + "indicating the path and name of output png file.") + } + } + if (!is.numeric(nsigma)) { + stop("Parameter 'nsigma' must be numeric.") + } + if (length(nsigma) > 1) { + warning("Parameter 'nsigma' has length greater than 1 and ", + "only the first element will be used.") + nsigma <- nsigma[1] + } + if (!is.array(pdf_1)) { + stop("Parameter 'pdf_1' must be an array.") + } + if (!is.array(pdf_2)) { + stop("Parameter 'pdf_2' must be an array.") + } + if (!is.numeric(pdf_1)) { + stop("Parameter 'pdf_1' must be a numeric array.") + } + if (!is.numeric(pdf_2)) { + stop("Parameter 'pdf_2' must be a numeric array.") + } + if (is.null(names(dim(pdf_1))) || + is.null(names(dim(pdf_2)))) { + stop("Parameters 'pdf_1' and 'pdf_2' ", + "should have dimmension names.") + } + if(!('statistic' %in% names(dim(pdf_1)))) { + stop("Parameter 'pdf_1' must have dimension 'statistic.") + } + if(!('statistic' %in% names(dim(pdf_2)))) { + stop("Parameter 'pdf_2' must have dimension 'statistic.") + } + if (length(dim(pdf_1)) != 1) { + stop("Parameter 'pdf_1' must have only dimension 'statistic.") + } + if (length(dim(pdf_2)) != 1) { + stop("Parameter 'pdf_2' must have only dimension 'statistic.") + } + if ((dim(pdf_1)['statistic'] != 2) & (dim(pdf_2)['statistic'] != 2)) { + stop("Length of dimension 'statistic'", + "of parameter 'pdf_1' and 'pdf_2' must be equal to 2.") + } + if(!is.null(attr(pdf_1, "name"))){ + if(!is.character(attr(pdf_1, "name"))){ + stop("The 'name' attribute of parameter 'pdf_1' must be a character ", + "indicating the name of the variable of parameter 'pdf_1'.") + } + } + if(is.null(attr(pdf_1, "name"))){ + name1 <- "variable 1" + } else { + name1 <- attr(pdf_1, "name") + } + if(is.null(attr(pdf_2, "name"))){ + name2 <- "Variable 2" + } else { + name2 <- attr(pdf_2, "name") + } + + #----------------------------------------------------------------------------- + # Set parameters of gaussian distributions (mean and sd) + #----------------------------------------------------------------------------- + mean1 <- pdf_1[1] + sigma1 <- pdf_1[2] + mean2 <- pdf_2[1] + sigma2 <- pdf_2[2] + pdfBest <- CombinedPDFs(pdf_1, pdf_2) + meanBest <- pdfBest[1] + sigmaBest <- pdfBest[2] + + + #----------------------------------------------------------------------------- + # Plot the gaussian distributions + #----------------------------------------------------------------------------- + nameBest <- paste0(name1, " + ", name2) + graphicTitle <- "OPTIMAL LINEAR ESTIMATION" + xlimSup <- max(nsigma*sigmaBest+meanBest, nsigma*sigma1+mean1, + nsigma*sigma2+mean2) + xlimInf <- min(-nsigma*sigmaBest+meanBest, -nsigma*sigma1+mean1, + -nsigma*sigma2+mean2) + # deltax <- 0.02 + deltax <- (xlimSup - xlimInf)/10000 + + x <- seq(xlimInf,xlimSup,deltax) + df1 <- data.frame(x=x,y=dnorm(x,mean=mean1, sd=sigma1), + type=name1) + df2 <- data.frame(x=x,y=dnorm(x,mean=mean2, sd=sigma2), + type=name2) + df3 <- data.frame(x=x,y=dnorm(x,mean=meanBest, sd=sigmaBest), + type=nameBest) + df123 <- rbind(df1,df2,df3) + label1 <- paste0(name1, ": N(mean=",round(mean1,2),", sd=", round(sigma1,2), + ")") + label2 <- paste0(name2, ": N(mean=",round(mean2,2),", sd=", round(sigma2,2), + ")") + labelBest <- paste0(nameBest, ": N(mean=",round(meanBest,2),", sd=", + round(sigmaBest,2), ")") + cols <- c("#DC3912", "#13721A", "#1F5094") + names(cols) <- c(name1, name2, nameBest) + g <- ggplot(df123)+geom_line(aes(x,y,colour=type), size=rel(1.2)) + + g <- g + scale_colour_manual(values = cols, + limits = c(name1, name2, nameBest), + labels = c(label1, label2, labelBest)) + g <- g + theme(plot.title=element_text(size=rel(1.1), colour="black", + face= "bold"), + axis.text.x = element_text(size=rel(1.2)), + axis.text.y = element_text(size=rel(1.2)), + axis.title.x = element_blank(), + legend.title = element_blank(), + legend.position = c(1,1), legend.justification = c(1,1), + legend.text = element_text(face = "bold")) + g <- g + ggtitle(graphicTitle) + g <- g + labs(y="probability", size=rel(1.9)) + g <- g + stat_function(fun = dnorm_limit, args = list(mean=mean1, sd=sigma1), + fill = cols[name1], alpha=0.2, geom="area") + g <- g + stat_function(fun = dnorm_limit, args = list(mean=mean2, sd=sigma2), + fill = cols[name2], alpha=0.2, geom="area") + g <- g + stat_function(fun = dnorm_limit, args = list(mean=meanBest, + sd=sigmaBest), + fill = cols[nameBest], alpha=0.2, geom="area") + + + #----------------------------------------------------------------------------- + # Save to plotfile if needed, and return plot + #----------------------------------------------------------------------------- + if (!is.null(plotfile)) { + ggsave(plotfile, g, width = width, height = height, + units = units, dpi = dpi) + } + return(g) +} + +# Auxiliar function to plot +CombinedPDFs <- function(pdf_1, pdf_2) { + mean_1 <- pdf_1[1] + sigma_1 <- pdf_1[2] + mean_2 <- pdf_2[1] + sigma_2 <- pdf_2[2] + a_1 <- (sigma_2^2)/((sigma_1^2)+(sigma_2^2)) + a_2 <- (sigma_1^2)/((sigma_1^2)+(sigma_2^2)) + pdf_mean <- a_1*mean_1 + a_2*mean_2 + pdf_sigma <- sqrt((sigma_1^2)*(sigma_2^2)/((sigma_1^2)+(sigma_2^2))) + data <- c(pdf_mean, pdf_sigma) + dim(data) <- c(statistic = 2) + return(data) +} + +dnorm_limit <- function(x,mean,sd){ + y <- dnorm(x,mean,sd) + y[x mean+sd] <- NA + return(y) +} diff --git a/man/Analogs.Rd b/man/Analogs.Rd index 06107c07..52d9ff97 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,19 +4,9 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - criteria = "Large_dist", - lonVar = NULL, - latVar = NULL, - region = NULL, - nAnalogs = NULL, - return_list = FALSE -) +Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + criteria = "Large_dist", lonVar = NULL, latVar = NULL, + region = NULL, nAnalogs = NULL, return_list = FALSE) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index 0ba24a84..f120258d 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,16 +4,9 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest( - index_obs, - index_hind1, - index_hind2, - index_fcst1 = NULL, - index_fcst2 = NULL, - method_BC = "none", - time_dim_name = "time", - na.rm = FALSE -) +BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, + index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", + na.rm = FALSE) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index d7dd5e14..c9166de6 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,15 +4,8 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - region = NULL, - criteria = "Large_dist" -) +CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + region = NULL, criteria = "Large_dist") } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 07691ea7..b214a31a 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,7 +4,8 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) +CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, + dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index d6f65bb5..9c0f5a9d 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,13 +4,8 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting( - var_exp, - aweights, - terciles = NULL, - type = "ensembleMean", - time_dim_name = "time" -) +CST_BEI_Weighting(var_exp, aweights, terciles = NULL, + type = "ensembleMean", time_dim_name = "time") } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 891e2e5f..c357fac5 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -4,15 +4,9 @@ \alias{CST_Calibration} \title{Forecast Calibration} \usage{ -CST_Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +CST_Calibration(exp, obs, cal.method = "mse_min", + eval.method = "leave-one-out", multi.model = F, na.fill = T, + ncores = 1) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index c23f8341..7175b7fe 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,14 +4,8 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination( - exp, - obs, - cat.method = "pool", - eval.method = "leave-one-out", - amt.cat = 3, - ... -) +CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", + eval.method = "leave-one-out", amt.cat = 3, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 154541d5..de71d4e3 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -4,18 +4,10 @@ \alias{CST_EnsClustering} \title{Ensemble clustering} \usage{ -CST_EnsClustering( - exp, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = F -) +CST_EnsClustering(exp, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = F) } \arguments{ \item{exp}{An object of the class 's2dv_cube', containing the variables to be analysed. diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 0762e83f..2c483840 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,12 +4,8 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims( - data, - merge_dims = c("ftime", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +CST_MergeDims(data, merge_dims = c("ftime", "monthly"), + rename_dim = NULL, na.rm = FALSE) } \arguments{ \item{data}{a 's2dv_cube' object} diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index 036a6470..5fea8a50 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,14 +4,8 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF( - datalist, - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, + minvar = 0.6, lon_lim = NULL, lat_lim = NULL) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index ad8f4b6c..90319622 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,16 +4,9 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping( - exp, - obs, - exp_cor = NULL, - sample_dims = c("sdate", "ftime", "member"), - sample_length = NULL, - method = "QUANT", - ncores = NULL, - ... -) +CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", + "ftime", "member"), sample_length = NULL, method = "QUANT", + ncores = NULL, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 1c609e08..0ed45f49 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,20 +4,9 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM( - data, - nf, - weights = 1, - slope = 0, - kmin = 1, - nens = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - verbose = FALSE, - drop_realization_dim = FALSE -) +CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, + fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, + verbose = FALSE, drop_realization_dim = FALSE) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index ee93aedc..8ce20c97 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -4,7 +4,8 @@ \alias{CST_SplitDim} \title{Function to Split Dimension} \usage{ -CST_SplitDim(data, split_dim = "time", indices = NULL, freq = "monthly") +CST_SplitDim(data, split_dim = "time", indices = NULL, + freq = "monthly") } \arguments{ \item{data}{a 's2dv_cube' object} diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 9f884671..cefc3f83 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -4,15 +4,9 @@ \alias{Calibration} \title{Forecast Calibration} \usage{ -Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +Calibration(exp, obs, cal.method = "mse_min", + eval.method = "leave-one-out", multi.model = F, na.fill = T, + ncores = 1) } \arguments{ \item{exp}{an array containing the seasonal forecast experiment data.} diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 2fd8a3f1..d7284ef5 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -4,20 +4,10 @@ \alias{EnsClustering} \title{Ensemble clustering} \usage{ -EnsClustering( - data, - lat, - lon, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = T -) +EnsClustering(data, lat, lon, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = T) } \arguments{ \item{data}{A matrix of dimensions 'dataset member sdate ftime lat lon' containing the variables to be analysed.} diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index 7539ef6e..d6b261ad 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,12 +4,8 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims( - data, - merge_dims = c("time", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, + na.rm = FALSE) } \arguments{ \item{data}{an n-dimensional array with named dimensions} diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index dd0fc7fe..c38116de 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,19 +4,9 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF( - data, - lon, - lat, - time, - lon_dim = "lon", - lat_dim = "lat", - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", + neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, + lat_lim = NULL) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 616b84f9..62e26904 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,27 +4,11 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap( - maps, - lon, - lat, - map_select_fun, - display_range, - map_dim = "map", - brks = NULL, - cols = NULL, - col_unknown_map = "white", - mask = NULL, - col_mask = "grey", - bar_titles = NULL, - legend_scale = 1, - fileout = NULL, - width = 8, - height = 5, - size_units = "in", - res = 100, - ... -) +PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, + map_dim = "map", brks = NULL, cols = NULL, + col_unknown_map = "white", mask = NULL, col_mask = "grey", + bar_titles = NULL, legend_scale = 1, fileout = NULL, width = 8, + height = 5, size_units = "in", res = 100, ...) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index c04b43c1..3eee4e33 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,18 +4,11 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF( - fcst, - tercile.limits, - extreme.limits = NULL, - obs = NULL, - plotfile = NULL, - title = "Set a title", - var.name = "Varname (units)", - fcst.names = NULL, - add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro") -) +PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, + obs = NULL, plotfile = NULL, title = "Set a title", + var.name = "Varname (units)", fcst.names = NULL, + add.ensmemb = c("above", "below", "no"), color.set = c("ggplot", + "s2s4e", "hydro")) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 4c400b18..0d984ede 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,15 +4,8 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap( - probs, - lon, - lat, - cat_dim = "bin", - bar_titles = NULL, - col_unknown_cat = "white", - ... -) +PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", + bar_titles = NULL, col_unknown_cat = "white", ...) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} diff --git a/man/PlotPDFsOLE.Rd b/man/PlotPDFsOLE.Rd new file mode 100644 index 00000000..14d42637 --- /dev/null +++ b/man/PlotPDFsOLE.Rd @@ -0,0 +1,59 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/PlotPDFsOLE.R +\name{PlotPDFsOLE} +\alias{PlotPDFsOLE} +\title{Plotting two probability density gaussian functions and the optimal linear +estimation (OLE) as result of combining them.} +\usage{ +PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, width = 30, + height = 15, units = "cm", dpi = 300) +} +\arguments{ +\item{pdf_1}{A numeric array with a dimension named 'statistic', containg +two parameters: mean' and 'standard deviation' of the first gaussian pdf +to combining.} + +\item{pdf_2}{A numeric array with a dimension named 'statistic', containg +two parameters: mean' and 'standard deviation' of the second gaussian pdf + to combining.} + +\item{nsigma}{(optional) A numeric value for setting the limits of X axis. +(Default nsigma = 3).} + +\item{plotfile}{(optional) A filename where the plot will be saved. +(Default: the plot is not saved).} + +\item{width}{(optional) A numeric value indicating the plot width in +units ("in", "cm", or "mm"). (Default width = 30).} + +\item{height}{(optional) A numeric value indicating the plot height. +(Default height = 15).} + +\item{units}{(optional) A character value indicating the plot size +unit. (Default units = 'cm').} + +\item{dpi}{(optional) A numeric value indicating the plot resolution. +(Default dpi = 300).} +} +\value{ +PlotPDFsOLE() returns a ggplot object containing the plot. +} +\description{ +This function plots two probability density gaussian functions +and the optimal linear estimation (OLE) as result of combining them. +} +\examples{ +Example for PlotPDFs function +pdf_1 <- c(1.1,0.6) +attr(pdf_1, "name") <- "NAO1" +dim(pdf_1) <- c(statistic = 2) +pdf_2 <- c(1,0.5) +attr(pdf_2, "name") <- "NAO2" +dim(pdf_2) <- c(statistic = 2) + +PlotPDFsOLE(pdf_1, pdf_2) + +} +\author{ +Eroteida Sanchez-Garcia - AEMET, //email{esanchezg@aemet.es} +} diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index db3f0e10..5308ef8c 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,7 +4,8 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", + lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 0db84679..e0fa9a10 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,24 +4,10 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM( - data, - lon, - lat, - nf, - weights = 1, - nens = 1, - slope = 0, - kmin = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - lon_dim = "lon", - lat_dim = "lat", - drop_realization_dim = FALSE, - verbose = FALSE -) +RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, + kmin = 1, fglob = FALSE, fsmooth = TRUE, nprocs = 1, + time_dim = NULL, lon_dim = "lon", lat_dim = "lat", + drop_realization_dim = FALSE, verbose = FALSE) } \arguments{ \item{data}{Precipitation array to downscale. diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index b0ce8966..f57d5ed3 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,16 +4,8 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube( - data, - lon = NULL, - lat = NULL, - Variable = NULL, - Datasets = NULL, - Dates = NULL, - when = NULL, - source_files = NULL -) +s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, + Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} -- GitLab From 081bb730ab94a12c4d7aa474c72e77c61988f799 Mon Sep 17 00:00:00 2001 From: Eroteida Sanchez Garcia Date: Mon, 9 Mar 2020 12:51:51 +0000 Subject: [PATCH 049/184] Fixing 1 error for function 'PlotPDFsOLE.R' --- R/PlotPDFsOLE.R | 2 +- man/PlotPDFsOLE.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/PlotPDFsOLE.R b/R/PlotPDFsOLE.R index 760798f2..a647ff12 100644 --- a/R/PlotPDFsOLE.R +++ b/R/PlotPDFsOLE.R @@ -30,7 +30,7 @@ #' @import ggplot2 #' #' @examples -#' Example for PlotPDFs function +#' # Example 1 #' pdf_1 <- c(1.1,0.6) #' attr(pdf_1, "name") <- "NAO1" #' dim(pdf_1) <- c(statistic = 2) diff --git a/man/PlotPDFsOLE.Rd b/man/PlotPDFsOLE.Rd index 14d42637..6980cc56 100644 --- a/man/PlotPDFsOLE.Rd +++ b/man/PlotPDFsOLE.Rd @@ -43,7 +43,7 @@ This function plots two probability density gaussian functions and the optimal linear estimation (OLE) as result of combining them. } \examples{ -Example for PlotPDFs function +# Example 1 pdf_1 <- c(1.1,0.6) attr(pdf_1, "name") <- "NAO1" dim(pdf_1) <- c(statistic = 2) -- GitLab From 1334128f9f9d056b9157d55b1dd72859c578b80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Mon, 9 Mar 2020 15:16:35 +0100 Subject: [PATCH 050/184] the function has been added --- R/PlotTriangles4Categories.R | 274 +++++++++++++++++++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 R/PlotTriangles4Categories.R diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R new file mode 100644 index 00000000..0ebf8f18 --- /dev/null +++ b/R/PlotTriangles4Categories.R @@ -0,0 +1,274 @@ +#'Function to convert any numerical array to a grid of coloured triangles. +#' +#'This function converts a numerical data array into a coloured +#'grid with triangles. It is useful for a slide or article to present tabular results as +#'colors instead of numbers. This can be used to compare the outputs of two or four categories (e.g. modes +#' of variability, clusters, or forecast systems). +#' +#'@param var an array with three dimensions: rows, columns and categories +#' containing the values to be displayed in a colored image with triangles. +#'@param poscols the dimension that will be represented as columns. +#'@param posrows the dimension that will be reprsented as rows. +#'@param brks A vector of the color bar intervals. The length must be one more +#' than the parameter 'cols'. Use ColorBar() to generate default values. +#'@param cols A vector of valid colour identifiers for color bar. The length +#' must be one less than the parameter 'brks'. Use ColorBar() to generate +#' default values. +#'@param toptitle A string of the title of the grid. Set NULL as default. +#'@param sig_var logical array with the same dimensions as 'var' to add layers +#' to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the +#' corresponding triangle of the plot. Set NULL as default. +#'@param pch_sig symbol to be used to represent sig_var. Takes 18 +#' (diamond) by default. See 'pch' in par() for additional +#' accepted options. +#'@param col_sig colour of the symbol to represent sig_var. +#'@param cex_sig parameter to increase/reduce the size of the symbols used +#' to represent sig_var. +#'@param xlab A logical value (TRUE) indicating if xlabels should be plotted +#'@param ylab A logical value (TRUE) indicating if ylabels should be plotted +#'@param xlabels A vector of labels of the x-axis The length must be +#' length of the col of parameter 'var'. Set the sequence from 1 to the +#' length of the row of parameter 'var' as default. +#'@param xtitle A string of title of the x-axis. Set NULL as default. +#'@param ylabels A vector of labels of the y-axis The length must be +#' length of the row of parameter 'var'. Set the sequence from 1 to the +#' length of the row of parameter 'var' as default. +#'@param ytitle A string of title of the y-axis. Set NULL as default. +#'@param legend A logical value to decide to draw the color bar legend or not. +#' Set TRUE as default. +#'@param lab_legend A vector of labels indicating what is represented in each +#'category (i.e. triangle). Set the sequence from 1 to the length of +#' the categories (2 or 4). +#'@param cex_leg a number to indicate the increase/reductuion of the lab_legend used +#' to represent sig_var. +#'@param col_leg color of the legend (triangles). +#'@param fileout A string of full directory path and file name indicating where +#' to save the plot. If not specified (default), a graphics device will pop up. +#'@param size_units A string indicating the units of the size of the device +#' (file or window) to plot in. Set 'px' as default. See ?Devices and the +#' creator function of the corresponding device. +#'@param res A positive number indicating resolution of the device (file or window) +#' to plot in. See ?Devices and the creator function of the corresponding device. +#'@param ... The additional parameters to be passed to function ColorBar() in +#' s2dverification for color legend creation. +#'@return A figure in popup window by default, or saved to the specified path. +#' +#'@author History:\cr +#'1.0 - 2019-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code +#' +#'@examples +#'#Example with random data +#' arr1<- arr1<- array(runif(n = 12 * 7 * 4, min=-1, max=1),dim = c(12,7,4)) +#'arr2<- array(TRUE,dim = dim(arr1)) +#'arr2[which(arr1 < 0.3)] = FALSE +#'PlotTriangles4Categories(var = arr1, +#' cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', +#' '#e34a33','#b30000', '#7f0000'), +#' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), +#' xtitle = "Target month", ytitle = "Lead time", +#' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", +#' "Aug", "Sep", "Oct", "Nov", "Dec")) +#'@importFrom grDevices dev.new dev.off dev.cur +#'@export + +PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, + toptitle=NULL, + sig_var=NULL,col_sig='black',pch_sig=18, + cex_sig=1, + labx=TRUE, + laby=TRUE, + xlabels=NULL, xtitle=NULL, + ylabels=NULL, ytitle=NULL, + legend=TRUE,lab_legend=NULL, + cex_leg=1,col_leg='black', + fileout=NULL, + size_units = 'px', res = 100, + figure.width = 1, + ...){ + # Checking the dimensions + vardim<-dim(var) + nrow<-vardim[posrows] + ncol<-vardim[poscols] + poscat<-vardim[setdiff(1:length(vardim),c(posrows,poscols))] + + # If there is any filenames to store the graphics, process them + # to select the right device + if (!is.null(fileout)) { + deviceInfo <- s2dverification:::.SelectDevice(fileout = fileout, + width = 80 * ncol * figure.width, + height = 80 * nrow, + units = size_units, res = res) + saveToFile <- deviceInfo$fun + fileout <- deviceInfo$files + } + + # Open connection to graphical device + if (!is.null(fileout)) { + saveToFile(fileout) + } else if (names(dev.cur()) == 'null device') { + dev.new(units = size_units, res = res, + width = 8 * figure.width, height = 5) + } + + if (!is.null(sig_var)){ + if (!is.logical(sig_var)){ + stop('sig_var array should be provided as TRUE/FALSE') + } + if (all(dim(sig_var)!=dim(var))){ + stop('sig_var array should have the same dimensions that var') + } + } + + if (length(vardim)!=3){ + stop('var must be an array with three dimensions (4, cols, rows) ') + } + + if (poscat!=4 && poscat!=2){ + stop('var must be an array with one of the dimensions being equal to 4 or 2') + } + + # The dimensions are named + names(dim(var))[poscols]<-'cols' + names(dim(var))[posrows]<-'rows' + names(dim(var))[setdiff(1:length(vardim),c(posrows,poscols))]<-'cat' + + if (!is.null(sig_var)){ + names(dim(sig_var))<-names(dim(var)) + } + + # Checking what is available and generating missing information + if (!is.null(lab_legend)&&length(lab_legend)!=4){ + stop('The legend should contain 4 names') + } + + if (is.null(xlabels)){ + xlabels=1:ncol + } + if (is.null(ylabels)){ + ylabels=1:nrow + } + if (is.null(brks)){ + brks<-seq(min(var),max(var),length.out = 9) + } + if (is.null(cols)){ + cols<-rev(brewer.pal(length(brks)-1,'RdBu')) + } + + # The colours for each triangle/category are defined + var_cat <- array(cols[length(cols)], dim = vardim) + names(dim(var_cat)) <- names(dim(var)) + for (i in (length(cols) - 1):1) { + var_cat[var < brks[i + 1]] <- cols[i] + } + + if(legend){ + # layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,2),heights=c(10,2)) + # par(oma=c(1,1,1,1),mar=c(5,4,4,0)) + layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,1.3),heights=c(10,3.5)) + par(oma=c(1,1,1,1),mar=c(5,12,0,0)) + if(is.null(lab_legend)){ + lab_legend=1:4 + } + } + + plot(ncol,nrow,xlim = c(0,ncol),ylim=c(0,nrow), xaxs="i",yaxs='i',type="n", + xaxt="n", yaxt="n",ann=F,axes=F) + + box(col='black',lwd=1) + + if (! is.null(toptitle)){ + title(toptitle, cex=1.5) + } + + if (!is.null(xtitle)){ + mtext(side = 1, text = xtitle, line = 4, cex=1.5) + } + if (!is.null(ytitle)){ + mtext(side = 2, text = ytitle, line = 2.5, cex=1.5) + } + + if (labx){ + axis(1, at=(1:ncol)-0.5, las=2, labels=xlabels, cex.axis=1.5) + } + if (laby){ + axis(2, at=(1:nrow)-0.5, las=2, labels=ylabels, cex.axis=1.5) + } + + + #The triangles are plotted + for(p in 1:ncol){ + for(l in 1:nrow){ + if (poscat==4){ + coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), + ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) + + coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) + } + + if (poscat==2){ +# coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), +# ys=list( c(l-1,l-1, l), c(l-1, l, l))) + coord_triangl<- list(xs=list(c(p-1, p, p-1),c(p-1, p, p)), + ys=list(c(l-1, l, l),c(l-1,l-1, l))) + coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) + } + for (n in 1:poscat) { + polygon(coord_triangl$xs[[n]], + coord_triangl$ys[[n]], + col = Subset( + var_cat, + along = c('cat', 'cols', 'rows'), + indices = list(n, p, l))) + if (!is.null(sig_var) && + Subset(sig_var,along = c('cat', 'cols', 'rows'), + indices = list(n, p, l))) { + points( + x = coord_sig$x[n], + y = coord_sig$y[n], + pch = pch_sig, + cex = cex_sig, + col = col_sig + ) + } + } + } + } + + # legend + + if(legend){ + # Colorbar + par(mar=c(0,0,0,0)) + ColorBar(brks = brks, cols = cols, vert=T,draw_ticks = T, draw_separators = T, + # extra_margin = c(0,0,2.5,0),label_scale = 1.5,...) + extra_margin = c(0,0,0,0),label_scale = 1.5,...) + + par(mar=c(0.5,2.5,0,2.5)) + plot(1,1,xlim = c(0,1),ylim=c(0,1), xaxs="i",yaxs='i',type="n", + xaxt="n", yaxt="n",ann=F,axes=F) + + box(col=col_leg) + p=l=1 + if (poscat==4){ + coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), + ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) + + coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) + } + + if (poscat==2){ + coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), + ys=list( c(l-1,l-1, l), c(l-1, l, l))) + coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) + } + for (n in 1:poscat) { + polygon(coord_triangl$xs[[n]], + coord_triangl$ys[[n]],border=col_leg) + text(x=coord_sig$x[[n]],y=coord_sig$y[[n]],labels = lab_legend[n],cex=cex_leg,col=col_leg) + + } + } + + # If the graphic was saved to file, close the connection with the device + if (!is.null(fileout)) dev.off() +} -- GitLab From a18f70f18774090aa0fb29803219884be4744010 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Mon, 9 Mar 2020 19:26:08 +0100 Subject: [PATCH 051/184] adding some Nuria suggestions --- R/PlotTriangles4Categories.R | 119 ++++++++++++++++------------------- 1 file changed, 55 insertions(+), 64 deletions(-) diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index 0ebf8f18..df5c1cdf 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -1,38 +1,36 @@ -#'Function to convert any numerical array to a grid of coloured triangles. +#'Function to convert any 3-d numerical array to a grid of coloured triangles. #' -#'This function converts a numerical data array into a coloured +#'This function converts a 3-d numerical data array into a coloured #'grid with triangles. It is useful for a slide or article to present tabular results as -#'colors instead of numbers. This can be used to compare the outputs of two or four categories (e.g. modes -#' of variability, clusters, or forecast systems). +#'colors instead of numbers. This can be used to compare the outputs of two or four categories ( +#'e.g. modes of variability, clusters, or forecast systems). #' -#'@param var an array with three dimensions: rows, columns and categories -#' containing the values to be displayed in a colored image with triangles. -#'@param poscols the dimension that will be represented as columns. -#'@param posrows the dimension that will be reprsented as rows. +#'@param data array with three named dimensions: 'dimx', 'dimy', 'dimcat', +#' containing the values to be displayed in a coloured image with triangles. #'@param brks A vector of the color bar intervals. The length must be one more #' than the parameter 'cols'. Use ColorBar() to generate default values. #'@param cols A vector of valid colour identifiers for color bar. The length #' must be one less than the parameter 'brks'. Use ColorBar() to generate #' default values. #'@param toptitle A string of the title of the grid. Set NULL as default. -#'@param sig_var logical array with the same dimensions as 'var' to add layers +#'@param sig_data logical array with the same dimensions as 'data' to add layers #' to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the #' corresponding triangle of the plot. Set NULL as default. -#'@param pch_sig symbol to be used to represent sig_var. Takes 18 +#'@param pch_sig symbol to be used to represent sig_data. Takes 18 #' (diamond) by default. See 'pch' in par() for additional #' accepted options. -#'@param col_sig colour of the symbol to represent sig_var. +#'@param col_sig colour of the symbol to represent sig_data. #'@param cex_sig parameter to increase/reduce the size of the symbols used -#' to represent sig_var. +#' to represent sig_data. #'@param xlab A logical value (TRUE) indicating if xlabels should be plotted #'@param ylab A logical value (TRUE) indicating if ylabels should be plotted #'@param xlabels A vector of labels of the x-axis The length must be -#' length of the col of parameter 'var'. Set the sequence from 1 to the -#' length of the row of parameter 'var' as default. +#' length of the col of parameter 'data'. Set the sequence from 1 to the +#' length of the row of parameter 'data' as default. #'@param xtitle A string of title of the x-axis. Set NULL as default. #'@param ylabels A vector of labels of the y-axis The length must be -#' length of the row of parameter 'var'. Set the sequence from 1 to the -#' length of the row of parameter 'var' as default. +#' length of the row of parameter 'data'. Set the sequence from 1 to the +#' length of the row of parameter 'data' as default. #'@param ytitle A string of title of the y-axis. Set NULL as default. #'@param legend A logical value to decide to draw the color bar legend or not. #' Set TRUE as default. @@ -40,7 +38,7 @@ #'category (i.e. triangle). Set the sequence from 1 to the length of #' the categories (2 or 4). #'@param cex_leg a number to indicate the increase/reductuion of the lab_legend used -#' to represent sig_var. +#' to represent sig_data. #'@param col_leg color of the legend (triangles). #'@param fileout A string of full directory path and file name indicating where #' to save the plot. If not specified (default), a graphics device will pop up. @@ -54,14 +52,15 @@ #'@return A figure in popup window by default, or saved to the specified path. #' #'@author History:\cr -#'1.0 - 2019-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code +#'1.0 - 2020-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code #' #'@examples #'#Example with random data #' arr1<- arr1<- array(runif(n = 12 * 7 * 4, min=-1, max=1),dim = c(12,7,4)) +#' names(dim(arr1)) <- c('dimx','dimy','dimcat') #'arr2<- array(TRUE,dim = dim(arr1)) #'arr2[which(arr1 < 0.3)] = FALSE -#'PlotTriangles4Categories(var = arr1, +#'PlotTriangles4Categories(data = arr1, #' cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', #' '#e34a33','#b30000', '#7f0000'), #' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), @@ -71,9 +70,9 @@ #'@importFrom grDevices dev.new dev.off dev.cur #'@export -PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, +PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, toptitle=NULL, - sig_var=NULL,col_sig='black',pch_sig=18, + sig_data=NULL,col_sig='black',pch_sig=18, cex_sig=1, labx=TRUE, laby=TRUE, @@ -86,10 +85,10 @@ PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, figure.width = 1, ...){ # Checking the dimensions - vardim<-dim(var) - nrow<-vardim[posrows] - ncol<-vardim[poscols] - poscat<-vardim[setdiff(1:length(vardim),c(posrows,poscols))] + datadim <- dim(data) + nrow <- dim(data)['dimy'] + ncol <- dim(data)['dimx'] + ncat <- dim(data)['dimcat'] # If there is any filenames to store the graphics, process them # to select the right device @@ -107,33 +106,29 @@ PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, saveToFile(fileout) } else if (names(dev.cur()) == 'null device') { dev.new(units = size_units, res = res, - width = 8 * figure.width, height = 5) + width = 8 * figure.width, height =5) } - if (!is.null(sig_var)){ - if (!is.logical(sig_var)){ - stop('sig_var array should be provided as TRUE/FALSE') + if (!is.null(sig_data)){ + if (!is.logical(sig_data)){ + stop('sig_data array should be provided as TRUE/FALSE') } - if (all(dim(sig_var)!=dim(var))){ - stop('sig_var array should have the same dimensions that var') + if (all(dim(sig_data)!=dim(data))){ + stop('sig_data array should have the same dimensions that data') } } - if (length(vardim)!=3){ - stop('var must be an array with three dimensions (4, cols, rows) ') + if (length(datadim)!=3){ + stop('data must be an array with three dimensions ( e.g. 4, cols, rows) ') } - if (poscat!=4 && poscat!=2){ - stop('var must be an array with one of the dimensions being equal to 4 or 2') + if (ncat!=4 && ncat!=2){ + stop('data must be an array with dimcat being equal to + 4 or 2 (i.e only two or four categories can be plotted)') } - # The dimensions are named - names(dim(var))[poscols]<-'cols' - names(dim(var))[posrows]<-'rows' - names(dim(var))[setdiff(1:length(vardim),c(posrows,poscols))]<-'cat' - - if (!is.null(sig_var)){ - names(dim(sig_var))<-names(dim(var)) + if (!is.null(sig_data)){ + names(dim(sig_data))<-names(dim(data)) } # Checking what is available and generating missing information @@ -148,26 +143,24 @@ PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, ylabels=1:nrow } if (is.null(brks)){ - brks<-seq(min(var),max(var),length.out = 9) + brks<-seq(min(data),max(data),length.out = 9) } if (is.null(cols)){ cols<-rev(brewer.pal(length(brks)-1,'RdBu')) } # The colours for each triangle/category are defined - var_cat <- array(cols[length(cols)], dim = vardim) - names(dim(var_cat)) <- names(dim(var)) + data_cat <- array(cols[length(cols)], dim = datadim) + names(dim(data_cat)) <- names(dim(data)) for (i in (length(cols) - 1):1) { - var_cat[var < brks[i + 1]] <- cols[i] + data_cat[data < brks[i + 1]] <- cols[i] } if(legend){ - # layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,2),heights=c(10,2)) - # par(oma=c(1,1,1,1),mar=c(5,4,4,0)) - layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,1.3),heights=c(10,3.5)) - par(oma=c(1,1,1,1),mar=c(5,12,0,0)) + layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,3.4),heights=c(10,3.5)) + par(oma=c(1,1,1,1),mar=c(5,4,0,0)) if(is.null(lab_legend)){ - lab_legend=1:4 + lab_legend=1:ncat } } @@ -198,29 +191,27 @@ PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, #The triangles are plotted for(p in 1:ncol){ for(l in 1:nrow){ - if (poscat==4){ + if (ncat==4){ coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) } - if (poscat==2){ -# coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), -# ys=list( c(l-1,l-1, l), c(l-1, l, l))) + if (ncat==2){ coord_triangl<- list(xs=list(c(p-1, p, p-1),c(p-1, p, p)), ys=list(c(l-1, l, l),c(l-1,l-1, l))) coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) } - for (n in 1:poscat) { + for (n in 1:ncat) { polygon(coord_triangl$xs[[n]], coord_triangl$ys[[n]], col = Subset( - var_cat, - along = c('cat', 'cols', 'rows'), + data_cat, + along = c('dimcat', 'dimx', 'dimy'), indices = list(n, p, l))) - if (!is.null(sig_var) && - Subset(sig_var,along = c('cat', 'cols', 'rows'), + if (!is.null(sig_data) && + Subset(sig_data,along = c('dimcat', 'dimx', 'dimy'), indices = list(n, p, l))) { points( x = coord_sig$x[n], @@ -243,25 +234,25 @@ PlotTriangles4Categories<-function(var,poscols=1,posrows=2,cols=NULL,brks=NULL, # extra_margin = c(0,0,2.5,0),label_scale = 1.5,...) extra_margin = c(0,0,0,0),label_scale = 1.5,...) - par(mar=c(0.5,2.5,0,2.5)) + par(mar=c(0.5,2.5,0.5,2.5)) plot(1,1,xlim = c(0,1),ylim=c(0,1), xaxs="i",yaxs='i',type="n", xaxt="n", yaxt="n",ann=F,axes=F) box(col=col_leg) p=l=1 - if (poscat==4){ + if (ncat==4){ coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) } - if (poscat==2){ + if (ncat==2){ coord_triangl<- list(xs=list(c(p-1, p, p),c(p-1, p, p-1)), ys=list( c(l-1,l-1, l), c(l-1, l, l))) coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) } - for (n in 1:poscat) { + for (n in 1:ncat) { polygon(coord_triangl$xs[[n]], coord_triangl$ys[[n]],border=col_leg) text(x=coord_sig$x[[n]],y=coord_sig$y[[n]],labels = lab_legend[n],cex=cex_leg,col=col_leg) -- GitLab From fa8388ac76d7c422b8ef60a83dc887de6275ea98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Mon, 9 Mar 2020 19:33:45 +0100 Subject: [PATCH 052/184] adding some checks --- R/PlotTriangles4Categories.R | 43 +++++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 18 deletions(-) diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index df5c1cdf..b69aa93d 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -85,6 +85,30 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, figure.width = 1, ...){ # Checking the dimensions + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with named dimensions") + } + + if (length(dim(data))!=3) { + stop("Parameter 'data' must be an array with three dimensions") + } + + if (!is.null(sig_data)) { + if (!is.logical(sig_data)) { + stop("Parameter 'sig_data array must be logical (i.e TRUE/FALSE) ") + } + if (names(dim(sig_data)) != names(dim(data))) { + stop("Parameter 'sig_data' must be an array with the same named dimensions as data") + } + } + + if (dim(data)['dimcat'] != 4 && dim(data)['dimcat'] != 2) { + stop( + "Parameter 'data' should contain a dimcat dimension with length equal + to two or four as only two or four categories can be plotted") + } + + datadim <- dim(data) nrow <- dim(data)['dimy'] ncol <- dim(data)['dimx'] @@ -108,24 +132,7 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, dev.new(units = size_units, res = res, width = 8 * figure.width, height =5) } - - if (!is.null(sig_data)){ - if (!is.logical(sig_data)){ - stop('sig_data array should be provided as TRUE/FALSE') - } - if (all(dim(sig_data)!=dim(data))){ - stop('sig_data array should have the same dimensions that data') - } - } - - if (length(datadim)!=3){ - stop('data must be an array with three dimensions ( e.g. 4, cols, rows) ') - } - - if (ncat!=4 && ncat!=2){ - stop('data must be an array with dimcat being equal to - 4 or 2 (i.e only two or four categories can be plotted)') - } + if (!is.null(sig_data)){ names(dim(sig_data))<-names(dim(data)) -- GitLab From 43dc6d3d18cfa9ec22068c76005a047f96998514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 10 Mar 2020 10:33:33 +0100 Subject: [PATCH 053/184] improving checks --- R/CST_WeatherRegimes.R | 107 ++++++++++++++++++++--------------------- 1 file changed, 51 insertions(+), 56 deletions(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 7a6e0913..d8b48312 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -45,8 +45,8 @@ #' CST_WeatherRegimes <- function(data,ncenters = NULL, EOFS = TRUE,neofs = 30, - varThreshold = NULL, lon = NULL, - lat = NULL, method = "kmeans", + varThreshold = NULL, + method = "kmeans", iter.max=100, nstart = 30, ncores = NULL) { if (!inherits(data, 's2dv_cube')) { @@ -59,12 +59,14 @@ CST_WeatherRegimes <- function(data,ncenters = NULL, }else { lon <- NULL } - data$data <- WeatherRegime(data$data,ncenters = ncenters , - EOFS = EOFS, neofs = neofs, - varThreshold = varThreshold, lon = lon, - lat = data$lat, method = method, - iter.max=iter.max, nstart = nstart, - ncores = ncores) + result <- WeatherRegime(data$data,ncenters = ncenters, + EOFS = EOFS, neofs = neofs, + varThreshold = varThreshold, lon = lon, + lat = data$lat, method = method, + iter.max=iter.max, nstart = nstart, + ncores = ncores) + data$data <- result$composite + data$statistics <- result[-1] return(data) } @@ -86,11 +88,11 @@ CST_WeatherRegimes <- function(data,ncenters = NULL, #'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' -#'@param data n array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. +#'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. #'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. -#'@param neofs number of modes to be kept (default = 30). +#'@param neofs number of modes to be kept only if EOFs = TRUE has been selected. (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. -#' Only sufficient PCs to explain this much variance will be used in the clustering. +#' Only sufficient PCs to explain this much variance will be used in the clustering. #'@param lon Vector of longitudes. #'@param lat Vector of latitudes. #'@param ncenters Number of clusters to be calculated with the clustering function. @@ -121,21 +123,27 @@ WeatherRegime <- function(data, ncenters = NULL, ncores = NULL) { if (is.null(names(dim(data)))) { - stop('data must be an array with named dimensions') + stop("Parameter 'data' must be an array with named dimensions") } if (is.null(lat)) { - stop("latitudes must be specified") + stop("Parameter 'lat' must be specified.") } dimData <- names(dim(data)) - nsdates <- dim(data)['sdate'] - nftimes <- dim(data)['ftime'] - - if ('sdate' %in% dimData && 'ftime' %in% dimData){ + + if ('sdate' %in% dimData && 'ftime' %in% dimData) { + nsdates <- dim(data)['sdate'] + nftimes <- dim(data)['ftime'] data <- MergeDims(data, merge_dims = c('ftime','sdate'), rename_dim = 'time') + } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { + names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' + } else { + if (!('time' %in% dimData)) { + stop("Parameter 'data' must have temporal dimension(s).") + } } output <- Apply(data = list(data), @@ -148,15 +156,15 @@ WeatherRegime <- function(data, ncenters = NULL, method = method, ncores = ncores) - if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData){ + if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { # The frequency and the persistency are computed as they are useful # parameters in the cluster analysis - extra_output <- Apply(data=output$cluster, - target_dims = 'time', - fun=.freqPer, - nsdates=nsdates, - nftimes=nftimes , - ncenters = ncenters) + extra_output <- Apply(data = output$cluster, + target_dims = 'time', + fun = .freqPer, + nsdates = nsdates, + nftimes = nftimes , + ncenters = ncenters) output <- list(composite=output$composite, pvalue=output$pvalue, @@ -173,19 +181,20 @@ WeatherRegime <- function(data, ncenters = NULL, iter.max=100, nstart = 30) { if (is.null(names(dim(data)))) { - stop('data must be an array with named dimensions') + stop("Parameter 'data' must be an array with 'time', 'lat' and 'lon' dimensions.") } if (!is.null(lat) && dim(data)['lat'] != length(lat)) { - stop('the latitudes do not match with the lat dimension of data') + stop("The length of the paramter 'lat' does not match with the ['lat'] dimension of + the parameter 'data'") } if (is.null(ncenters)) { - stop("ncenters must be specified") + stop("Parameter 'ncenters' must be specified") } if (EOFS == TRUE && is.null(lon)) { - stop("longitudes must be specified") + stop("Parameter 'lon' must be specified") } if (is.null(lat)) { - stop("latitudes must be specified") + stop("Parameter 'lat' must be specified") } nlon <- dim(data)['lat'] @@ -202,32 +211,25 @@ WeatherRegime <- function(data, ncenters = NULL, dataPC <- EOF(data, lat = as.vector(lat), lon = as.vector(lon), - neofs = 30) + neofs = neofs) minPC <- head(as.numeric(which(cumsum(dataPC$var) > varThreshold)), 1) cluster_input <- dataPC$PC[, 1:minPC] } } else { - #if (latWeights){ - # latitude weights are applied on the data + dataW <- aperm(Apply(data, target_dims = 'lat', function (x, la) { x * cos(la * pi / 180)}, la = lat)[[1]], c(2, 1, 3)) cluster_input <- MergeDims(dataW, merge_dims = c('lat','lon'), - rename_dim = 'space',na.rm=T) - #}else { - #cluster_input <- MergeDims(data2, merge_dims = c('lat','lon'), - # rename_dim = 'space',na.rm=T) - #} + rename_dim = 'space',na.rm = TRUE) + } if (method == "kmeans") { - if (any(is.na(cluster_input))) { - posnas <- unique(which(is.na(cluster_input), arr.ind = T)[, 2]) - cluster_input <- cluster_input[, -posnas] - } + clust <- kmeans( cluster_input, centers = ncenters, @@ -235,15 +237,9 @@ WeatherRegime <- function(data, ncenters = NULL, nstart = nstart, trace = FALSE) - if (any(is.na(cluster_input))) { - centers <- array(NA, dim = c(ncenters, nlon * nlat)) - centers [, -c(posnas)] <- as.array(clust$center) - } else{ - centers <- as.array(clust$center) - } result <- array(0, c(ncenters, nlat, nlon)) # the order of the data dimensions is changed ('lat','lon','time') - result <- Composite(aperm(data,c(3,2,1)), clust$cluster) + result <- Composite(aperm(data,c(2, 3, 1)), clust$cluster) } else { result <- hclust(dist(cluster_input), method = method) @@ -251,8 +247,10 @@ WeatherRegime <- function(data, ncenters = NULL, result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) } result <- lapply(1:length(result), - function (n) {names(dim(result[[n]])) <- c("lon", "lat", "cluster") - return (result[[n]])}) + function (n) { + names(dim(result[[n]])) <- c("lon", "lat", "cluster") + return (result[[n]]) + }) names(result) <- c('composite','pvalue') @@ -266,10 +264,7 @@ WeatherRegime <- function(data, ncenters = NULL, } else { clust <- as.array(clusterCut) names(dim(clust)) <- 'time' - return(list( - composite = result$composite, - pvalue = result$pvalue, - cluster = clust)) + c(2, 3, 1) } } @@ -283,7 +278,7 @@ WeatherRegime <- function(data, ncenters = NULL, persistence[i, j] <- mean(occurences$lengths[occurences$values == j]) } } - return(list(frequency=frequency, - persistence=persistence)) + return(list(frequency = frequency, + persistence = persistence)) } -- GitLab From 1b12e3c30da405ee0637d9041c49ca3abefad5cc Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 16 Mar 2020 11:41:56 +0100 Subject: [PATCH 054/184] Calibratin exposed to user and example --- NAMESPACE | 1 + R/CST_Calibration.R | 26 +++++++++++++------------- man/CST_Calibration.Rd | 4 ++-- man/Calibration.Rd | 12 ++++++++++-- 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index bd5d0f16..a319f567 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -21,6 +21,7 @@ export(CST_RFWeights) export(CST_RainFARM) export(CST_SaveExp) export(CST_SplitDim) +export(Calibration) export(EnsClustering) export(MergeDims) export(MultiEOF) diff --git a/R/CST_Calibration.R b/R/CST_Calibration.R index a7f1924b..ca290397 100644 --- a/R/CST_Calibration.R +++ b/R/CST_Calibration.R @@ -34,12 +34,9 @@ #'str(a) #'@export -CST_Calibration <- function(exp, obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1) { +CST_Calibration <- function(exp, obs, cal.method = "mse_min", + eval.method = "leave-one-out", multi.model = FALSE, + na.fill = TRUE, ncores = 1) { if (!inherits(exp, "s2dv_cube") || !inherits(obs, "s2dv_cube")) { stop("Parameter 'exp' and 'obs' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") @@ -92,13 +89,16 @@ CST_Calibration <- function(exp, obs, #' #'@seealso \code{\link{CST_Load}} #' - -Calibration <- function(exp, obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1) { +#'@examples +#'mod1 <- 1 : (1 * 3 * 4 * 5 * 6 * 7) +#'dim(mod1) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7) +#'obs1 <- 1 : (1 * 1 * 4 * 5 * 6 * 7) +#'dim(obs1) <- c(dataset = 1, member = 1, sdate = 4, ftime = 5, lat = 6, lon = 7) +#'a <- Calibration(exp = mod1, obs = obs1) +#'str(a) +#'@export +Calibration <- function(exp, obs, cal.method = "mse_min", eval.method = "leave-one-out", + multi.model = FALSE, na.fill = TRUE, ncores = 1) { dim.exp <- dim(exp) amt.dims.exp <- length(dim.exp) diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 891e2e5f..76812a43 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -9,8 +9,8 @@ CST_Calibration( obs, cal.method = "mse_min", eval.method = "leave-one-out", - multi.model = F, - na.fill = T, + multi.model = FALSE, + na.fill = TRUE, ncores = 1 ) } diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 9f884671..64452279 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -9,8 +9,8 @@ Calibration( obs, cal.method = "mse_min", eval.method = "leave-one-out", - multi.model = F, - na.fill = T, + multi.model = FALSE, + na.fill = TRUE, ncores = 1 ) } @@ -37,6 +37,14 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } +\examples{ +mod1 <- 1 : (1 * 3 * 4 * 5 * 6 * 7) +dim(mod1) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7) +obs1 <- 1 : (1 * 1 * 4 * 5 * 6 * 7) +dim(obs1) <- c(dataset = 1, member = 1, sdate = 4, ftime = 5, lat = 6, lon = 7) +a <- Calibration(exp = mod1, obs = obs1) +str(a) +} \references{ Doblas-Reyes F.J, Hagedorn R, Palmer T.N. The rationale behind the success of multi-model ensembles in seasonal forecasting-II calibration and combination. Tellus A. 2005;57:234-252. doi:10.1111/j.1600-0870.2005.00104.x -- GitLab From 4f13f116c8ef0edc9b9bebc4f412497dc78c85bf Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Tue, 17 Mar 2020 14:55:40 +0100 Subject: [PATCH 055/184] use less memory --- R/CST_RFTemp.R | 60 +++++++++++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index de421c12..9162442b 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -286,24 +286,37 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, lonocut <- lono[(lono <= lon2) & (lono >= lon1)] latocut <- lato[(lato <= lat2) & (lato >= lat1)] + dxol <- lonocut[2] - lonocut[1] + nrad <- as.integer(radius / abs(dxol) + 0.5) + if (length(lonocut) == 0 | length(latocut) == 0) { stop("Orography not available for selected area") } - if (verbose) { - print(paste("Interpolation using", method, "method")) - } - tout <- .interp2d(lon, lat, t, lonocut, latocut, method = method) - # Fine-scale smooth interpolated input field - dxol <- lonocut[2] - lonocut[1] - nrad <- as.integer(radius / abs(dxol) + 0.5) - if (method == "nearest") { + if (is.null(delta) & compute_delta & nolapse) { if (verbose) { - print(paste("Smoothing interpolated field")) + print("Time averaging") } - tout <- .smooth(tout, nrad) + # If we just need the delta we can work with time averages + t <- apply(t, c(1, 2), mean) + dim(t) <- c(dim(t), time = 1) } + if (!(is.null(delta) & compute_delta & !nolapse)) { + # This calculation is not needed if we just need the delta + # and lapse rate is used + if (verbose) { + print(paste("Interpolation using", method, "method")) + } + tout <- .interp2d(t, lon, lat, lonocut, latocut, method = method) + # Fine-scale smooth interpolated input field + if (method == "nearest") { + if (verbose) { + print(paste("Smoothing interpolated field")) + } + tout <- .smooth(tout, nrad) + } + } if (is.null(delta)) { # Compute delta if (nolapse) { @@ -317,8 +330,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } if (compute_delta) { # Return delta - tdown <- t1[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1])] + tout <- t1[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1])] } else { # Apply delta if (verbose) { @@ -327,35 +340,33 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, for (i in seq_len(nt)) { tout[, , i] <- tout[, , i] + t1 } - tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]), ] + tout <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]), ] if (ldim) { - dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) + dim(tout) <- c(dim(tout)[1:2], tdim[-(1:2)]) } } } else { # Just apply the provided delta - tdown <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), - (latocut <= ylim[2]) & (latocut >= ylim[1]), ] - if (any(dim(delta)[1:2] != dim(tdown)[1:2])) { - print(dim(delta)) - print(dim(tdown)) + tout <- tout[(lonocut <= xlim[2]) & (lonocut >= xlim[1]), + (latocut <= ylim[2]) & (latocut >= ylim[1]), ] + if (any(dim(delta)[1:2] != dim(tout)[1:2])) { stop("Provided delta has not the same dimensions as required output") } if (verbose) { print("Adding provided delta") } for (i in seq_len(nt)) { - tdown[, , i] <- tdown[, , i] + delta + tout[, , i] <- tout[, , i] + delta } if (ldim) { - dim(tdown) <- c(dim(tdown)[1:2], tdim[-(1:2)]) + dim(tout) <- c(dim(tout)[1:2], tdim[-(1:2)]) } } lonocut <- lonocut[(lonocut <= xlim[2]) & (lonocut >= xlim[1])] latocut <- latocut[(latocut <= ylim[2]) & (latocut >= ylim[1])] - return(list(data = tdown, lon = lonocut, lat = latocut)) + return(list(data = tout, lon = lonocut, lat = latocut)) } # Special driver version of .downscalet to apply delta @@ -392,12 +403,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' latp=seq(35,40,0.2) #' zo <- .interp2d(lon, lat, z, lonp, latp, method="nearest") -.interp2d <- function(lon, lat, z, lonp, latp, method="bilinear") { +.interp2d <- function(z, lon, lat, lonp, latp, method="bilinear") { nx <- length(lonp) ny <- length(latp) nt <- dim(z)[3] - # Interpolate nn assuming a regular grid zo <- array(0., c(nx, ny, nt)) dy <- lat[2] - lat[1] -- GitLab From 29e88d82fd34a7fc46736744397e51a03b7b2d37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Fri, 3 Apr 2020 12:43:53 +0200 Subject: [PATCH 056/184] the tests are added --- tests/testthat/test-CST_WeatherRegimes.R | 93 ++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 tests/testthat/test-CST_WeatherRegimes.R diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R new file mode 100644 index 00000000..16dba6f4 --- /dev/null +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -0,0 +1,93 @@ +context("Generic tests") +test_that("Sanity checks", { + expect_error( + CST_WeatherRegimes(data = 1), + paste0("Parameter 'data' must be of the class 's2dv_cube', as output by ", + "CSTools::CST_Load.")) + + data1 <- 1 : 20 + data1 <- list(data = data1) + class(data1) <- 's2dv_cube' + expect_error( + CST_WeatherRegimes(data = data1), + paste0("Parameter 'data' must be an array with named dimensions.")) + + data1 <- 1 : 20 + dim(data1) <- c(lat = 5, lon=4) + data1 <- list(data = data1 , lat=1:5) + class(data1) <- 's2dv_cube' + expect_error( + CST_WeatherRegimes(data = data1), + paste0("Parameter 'data' must have temporal dimensions.")) + + data1 <- 1 : 20 + dim(data1) <- c(time = 20) + data1 <- list(data = data1) + class(data1) <- 's2dv_cube' + expect_error( + CST_WeatherRegimes(data = data1) , + paste0("Parameter 'lat' must be specified.")) + + data1 <- 1 : 400 + dim(data1) <- c(time = 20, lat = 5, lon=4) + data1 <- list(data = data1, lat=1:5) + class(data1) <- 's2dv_cube' + expect_error( + CST_WeatherRegimes(data = data1), + paste0("Parameter 'ncenters' must be specified.")) + + expect_error( + CST_WeatherRegimes(data = data1, ncenters=3), + paste0("Parameter 'lon' must be specified.")) + + expect_equal( + names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS= FALSE)$data)), + c('lon', 'lat', 'cluster')) + + data1 <- 1 : 400 + dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) + data1 <- list(data = data1, lat=1:5) + class(data1) <- 's2dv_cube' + nclusters <- 3 + + expect_equal( + dim(CST_WeatherRegimes(data = data1 , + ncenters = nclusters, + EOFS = FALSE)$statistics$frequency),c(2, nclusters)) + + data1 <- 1 : 400 + dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) + data1 <- list(data = data1, lat=1:5 ,lon=1:4) + class(data1) <- 's2dv_cube' + + expect_equal( + names(CST_WeatherRegimes(data = data1 , ncenters = 4)$statistics), + c('pvalue', 'cluster', 'frequency', 'persistence')) + + expect_equal( + names(CST_WeatherRegimes(data = data1 , ncenters = 4, method='ward.D')$statistics), + c('pvalue', 'cluster')) + + data1 <- 1 : 400 + dim(data1) <- c(time = 20, lat = 5, lon=4) + data1[4,,] <- NA + data1 <- list(data = data1, lat=1:5 ,lon=1:4) + class(data1) <- 's2dv_cube' + expect_error( + CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE), + paste0("Parameter 'data' contains NAs in the 'time' dimensions.")) + + data1 <- 1 : 400 + dim(data1) <- c(time = 20, lat = 5, lon=4) + data1[,2,3] <- NA + data1 <- list(data = data1, lat=1:5 ,lon=1:4) + class(data1) <- 's2dv_cube' + expect_equal( + any(is.na(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), + TRUE) +}) + + + + + -- GitLab From f8430063ffc6c2d854a89a26f7d47692918917aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Fri, 3 Apr 2020 16:32:09 +0200 Subject: [PATCH 057/184] small changes in the checks and tests --- R/PlotTriangles4Categories.R | 82 +++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index b69aa93d..11dc513d 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -71,43 +71,60 @@ #'@export PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, - toptitle=NULL, - sig_data=NULL,col_sig='black',pch_sig=18, - cex_sig=1, - labx=TRUE, - laby=TRUE, - xlabels=NULL, xtitle=NULL, - ylabels=NULL, ytitle=NULL, - legend=TRUE,lab_legend=NULL, - cex_leg=1,col_leg='black', - fileout=NULL, - size_units = 'px', res = 100, - figure.width = 1, - ...){ + toptitle=NULL, + sig_data=NULL,col_sig='black',pch_sig=18, + cex_sig=1, + labx=TRUE, + laby=TRUE, + xlabels=NULL, xtitle=NULL, + ylabels=NULL, ytitle=NULL, + legend=TRUE,lab_legend=NULL, + cex_leg=1,col_leg='black', + fileout=NULL, + size_units = 'px', res = 100, + figure.width = 1, + ...){ # Checking the dimensions - if (is.null(names(dim(data)))) { - stop("Parameter 'data' must be an array with named dimensions") + if (length(dim(data))!=3) { + stop("Parameter 'data' must be an array with three dimensions.") } - if (length(dim(data))!=3) { - stop("Parameter 'data' must be an array with three dimensions") + if (any(is.na(data))){ + stop("Parameter 'data' cannot contain NAs.") + } + + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with named dimensions.") + }else{ + if (!any(names(dim(data))=='dimx')|!any(names(dim(data))=='dimy')|!any(names(dim(data))=='dimcat')){ + stop("Parameter 'data' should contain 'dimx', 'dimy' and 'dimcat' dimension names. ") + } } if (!is.null(sig_data)) { if (!is.logical(sig_data)) { - stop("Parameter 'sig_data array must be logical (i.e TRUE/FALSE) ") - } - if (names(dim(sig_data)) != names(dim(data))) { - stop("Parameter 'sig_data' must be an array with the same named dimensions as data") + stop("Parameter 'sig_data' array must be logical.")} + else if (length(dim(sig_data)) !=3) { + stop("Parameter 'sig_data' must be an array with three dimensions.") + }else if (any(dim(sig_data) != dim(data))){ + stop("Parameter 'sig_data' must be an array with the same dimensions as 'data'.") + }else if(!is.null(names(dim(sig_data)))){ + if (any(names(dim(sig_data)) != names(dim(data)))){ + stop("Parameter 'sig_data' must be an array with the same named dimensions as 'data'.")} } } - + if (dim(data)['dimcat'] != 4 && dim(data)['dimcat'] != 2) { stop( - "Parameter 'data' should contain a dimcat dimension with length equal - to two or four as only two or four categories can be plotted") + "Parameter 'data' should contain a dimcat dimension with length equals + to two or four as only two or four categories can be plotted.") + } + + # Checking what is available and generating missing information + if (!is.null(lab_legend) && + length(lab_legend) != 4 && length(lab_legend) != 2){ + stop("Parameter 'lab_legend' should contain two or four names.") } - datadim <- dim(data) nrow <- dim(data)['dimy'] @@ -132,16 +149,13 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, dev.new(units = size_units, res = res, width = 8 * figure.width, height =5) } - + if (!is.null(sig_data)){ names(dim(sig_data))<-names(dim(data)) } - # Checking what is available and generating missing information - if (!is.null(lab_legend)&&length(lab_legend)!=4){ - stop('The legend should contain 4 names') - } + if (is.null(xlabels)){ xlabels=1:ncol @@ -150,7 +164,7 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, ylabels=1:nrow } if (is.null(brks)){ - brks<-seq(min(data),max(data),length.out = 9) + brks <- seq(min(data, na.rm=T), max(data, na.rm=T),length.out = 9) } if (is.null(cols)){ cols<-rev(brewer.pal(length(brks)-1,'RdBu')) @@ -164,7 +178,7 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, } if(legend){ - layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,3.4),heights=c(10,3.5)) + layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,3.4),heights=c(10,3.5)) par(oma=c(1,1,1,1),mar=c(5,4,0,0)) if(is.null(lab_legend)){ lab_legend=1:ncat @@ -206,9 +220,9 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, } if (ncat==2){ - coord_triangl<- list(xs=list(c(p-1, p, p-1),c(p-1, p, p)), + coord_triangl <- list(xs=list(c(p-1, p, p-1),c(p-1, p, p)), ys=list(c(l-1, l, l),c(l-1,l-1, l))) - coord_sig<- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) + coord_sig <- list(x=c(p-(2/3),p-(1/3)),y=c(l-(1/3),l-(2/3))) } for (n in 1:ncat) { polygon(coord_triangl$xs[[n]], -- GitLab From 31e2f9071201777170ed8ec9c7a711bcc4b17cbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 14 Apr 2020 13:11:48 +0200 Subject: [PATCH 058/184] more tests have been added --- R/CST_WeatherRegimes.R | 31 +++++++++++++++++------- tests/testthat/test-CST_WeatherRegimes.R | 12 ++++++++- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index d8b48312..2fd94ec6 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -1,3 +1,4 @@ + #' @rdname CST_WeatherRegimes #' @title Function for Calculating the Cluster analysis #' @@ -43,7 +44,7 @@ #'@examples #'@export #' -CST_WeatherRegimes <- function(data,ncenters = NULL, +CST_WeatherRegimes <- function(data, ncenters = NULL, EOFS = TRUE,neofs = 30, varThreshold = NULL, method = "kmeans", @@ -53,7 +54,6 @@ CST_WeatherRegimes <- function(data,ncenters = NULL, stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } - if ('lon' %in% names(data)){ lon <- data$lon }else { @@ -123,7 +123,7 @@ WeatherRegime <- function(data, ncenters = NULL, ncores = NULL) { if (is.null(names(dim(data)))) { - stop("Parameter 'data' must be an array with named dimensions") + stop("Parameter 'data' must be an array with named dimensions.") } if (is.null(lat)) { @@ -142,10 +142,11 @@ WeatherRegime <- function(data, ncenters = NULL, names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' } else { if (!('time' %in% dimData)) { - stop("Parameter 'data' must have temporal dimension(s).") + stop("Parameter 'data' must have temporal dimensions.") } } + output <- Apply(data = list(data), target_dims = c('time','lat','lon'), fun = ".WeatherRegime", @@ -183,23 +184,32 @@ WeatherRegime <- function(data, ncenters = NULL, if (is.null(names(dim(data)))) { stop("Parameter 'data' must be an array with 'time', 'lat' and 'lon' dimensions.") } + if (!is.null(lat) && dim(data)['lat'] != length(lat)) { stop("The length of the paramter 'lat' does not match with the ['lat'] dimension of - the parameter 'data'") + the parameter 'data'.") } if (is.null(ncenters)) { - stop("Parameter 'ncenters' must be specified") + stop("Parameter 'ncenters' must be specified.") } if (EOFS == TRUE && is.null(lon)) { - stop("Parameter 'lon' must be specified") + stop("Parameter 'lon' must be specified.") } if (is.null(lat)) { - stop("Parameter 'lat' must be specified") + stop("Parameter 'lat' must be specified.") } nlon <- dim(data)['lat'] nlat <- dim(data)['lon'] + if (any(is.na(data))){ + nas_test <- MergeDims(data, merge_dims = c('lat','lon'), + rename_dim = 'space',na.rm = TRUE) + if (dim(nas_test)['space']== c(nlat*nlon)){ + stop("Parameter 'data' contains NAs in the 'time' dimensions.") + } + } + if (EOFS == TRUE) { if (is.null(varThreshold)) { dataPC <- EOF(data, @@ -264,7 +274,10 @@ WeatherRegime <- function(data, ncenters = NULL, } else { clust <- as.array(clusterCut) names(dim(clust)) <- 'time' - c(2, 3, 1) + return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = clust)) } } diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R index 16dba6f4..8ccdb2d4 100644 --- a/tests/testthat/test-CST_WeatherRegimes.R +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -1,6 +1,6 @@ context("Generic tests") test_that("Sanity checks", { - expect_error( + expect_error( CST_WeatherRegimes(data = 1), paste0("Parameter 'data' must be of the class 's2dv_cube', as output by ", "CSTools::CST_Load.")) @@ -54,6 +54,9 @@ test_that("Sanity checks", { dim(CST_WeatherRegimes(data = data1 , ncenters = nclusters, EOFS = FALSE)$statistics$frequency),c(2, nclusters)) + expect_equal( + names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFS= FALSE)$data)), + c('lon', 'lat', 'cluster')) data1 <- 1 : 400 dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) @@ -68,6 +71,10 @@ test_that("Sanity checks", { names(CST_WeatherRegimes(data = data1 , ncenters = 4, method='ward.D')$statistics), c('pvalue', 'cluster')) + expect_equal( + names(dim(CST_WeatherRegimes(data = data1, ncenters=4)$data)), + c('lon', 'lat', 'cluster')) + data1 <- 1 : 400 dim(data1) <- c(time = 20, lat = 5, lon=4) data1[4,,] <- NA @@ -85,6 +92,9 @@ test_that("Sanity checks", { expect_equal( any(is.na(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), TRUE) + expect_equal( + names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), + c('lon', 'lat', 'cluster')) }) -- GitLab From e6a5e0d1fd7d0612b81dd5058589710a79f3782c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 14 Apr 2020 13:38:50 +0200 Subject: [PATCH 059/184] examples --- R/CST_WeatherRegimes.R | 3 +++ 1 file changed, 3 insertions(+) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 2fd94ec6..092b7f04 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -42,6 +42,8 @@ #'@import s2dverification #'@import multiApply #'@examples +#'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +#'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) #'@export #' CST_WeatherRegimes <- function(data, ncenters = NULL, @@ -113,6 +115,7 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #'@import s2dverification #'@import multiApply #'@examples +#'res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) #'@export WeatherRegime <- function(data, ncenters = NULL, -- GitLab From 26f765a3540e375eca14acc40b824ec31cdbaa03 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Tue, 21 Apr 2020 22:22:56 +0200 Subject: [PATCH 060/184] expand closest member --- R/CST_EnsClustering.R | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 62d29244..de0733b3 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -186,6 +186,19 @@ EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, lon_lim = lon_lim, lat_lim = lat_lim, variance_explained = variance_explained, numpcs = numpcs, verbose = verbose) + + cm=result$closest_member + cml <- vector(mode = "list", length = length(cluster_dim)) + cum <- cm * 0 + dim_cd <- dim(exp)[cluster_dim] + for (i in rev(seq_along(cluster_dim))) { + cml[[i]] <- floor((cm - cum) / prod(dim_cd[-i])) + cum <- cum + cml[[i]] * prod(dim_cd[-i]) + dim_cd <- dim_cd[-i] + } + names(cml) <- cluster_dim + result$closest_member <- cml + return(append(result, list(lat = lat, lon = lon))) } -- GitLab From 8e7ce8f493dacb1236e54e51713ec8b8ee6ced0a Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Tue, 21 Apr 2020 23:33:21 +0200 Subject: [PATCH 061/184] automatic selection of time dim --- R/CST_EnsClustering.R | 43 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index de0733b3..3a539c62 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -61,7 +61,10 @@ #' @param variance_explained variance (percentage) to be explained by the set of EOFs. #' Defaults to 80. Not used if numpcs is specified. #' @param numpcs Number of EOFs retained in the analysis (optional). -#' @param cluster_dim Dimension along which to cluster. Typically "member" or "sdate". This can also be a list like c("member", "sdate"). +#' @param cluster_dim Dimension along which to cluster. Typically "member" or "sdate". +#' This can also be a list like c("member", "sdate"). +#' @param time_dim String or character array with name(s) of dimension(s) over which to compute statistics. +#' If omitted c("ftime", "sdate", "time") are searched in this order. #' @param verbose Logical for verbose output #' @return A list with elements \code{$cluster} (cluster assigned for each member), #' \code{$freq} (relative frequency of each cluster), \code{$closest_member} @@ -100,7 +103,7 @@ #'@export CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, lon_lim = NULL, lat_lim = NULL, - variance_explained = 80, numpcs = NULL, + variance_explained = 80, numpcs = NULL, time_dim = NULL, time_percentile = 90, cluster_dim = "member", verbose = F) { if (!inherits(exp, "s2dv_cube")) { @@ -112,7 +115,7 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, time_moment = time_moment, numclus = numclus, lon_lim = lon_lim, lat_lim = lat_lim, variance_explained = variance_explained, numpcs = numpcs, - time_percentile = time_percentile, + time_percentile = time_percentile, time_dim = time_dim, cluster_dim = cluster_dim, verbose = verbose) return(result) @@ -145,7 +148,10 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, #' @param variance_explained variance (percentage) to be explained by the set of EOFs. #' Defaults to 80. Not used if numpcs is specified. #' @param numpcs Number of EOFs retained in the analysis (optional). -#' @param cluster_dim Dimension along which to cluster. Typically "member" or "sdate". This can also be a list like c("member", "sdate"). +#' @param cluster_dim Dimension along which to cluster. Typically "member" or "sdate". +#' This can also be a list like c("member", "sdate"). +#' @param time_dim String or character array with name(s) of dimension(s) over which to compute statistics. +#' If omitted c("ftime", "sdate", "time") are searched in this order. #' @param verbose Logical for verbose output #' @return A list with elements \code{$cluster} (cluster assigned for each member), #' \code{$freq} (relative frequency of each cluster), \code{$closest_member} @@ -162,20 +168,40 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, lon_lim = NULL, lat_lim = NULL, variance_explained = 80, - numpcs = NULL, time_percentile = 90, + numpcs = NULL, time_percentile = 90, time_dim = NULL, cluster_dim = "member", verbose = T) { + # Check/detect time_dim + if (is.null(time_dim)) { + time_dim_names <- c("ftime", "sdate", "time") + time_dim_num <- which(time_dim_names %in% names(dim(data))) + if (length(time_dim_num) > 0) { + # Find time dimension with length > 1 + ilong <- which(dim(data)[time_dim_names[time_dim_num]] > 1) + if (length(ilong) > 0) { + time_dim <- time_dim_names[time_dim_num[ilong[1]]] + } else { + stop("No time dimension longer than one found.") + } + } else { + stop("Could not automatically detect a target time dimension ", + "in the provided data in 'data'.") + } + .printv(paste("Selected time dim:", time_dim)) + } + # Apply time_moment if (time_moment == "mean") { .printv("Considering the time_moment: mean", verbose) - exp <- apply(data, c(1, 2, 3, 5, 6), mean) + exp <- Apply(data, target_dims = time_dim, mean)$output1 } else if (time_moment == "sd") { .printv("Considering the time_moment: sd", verbose) - exp <- apply(data, c(1, 2, 3, 5, 6), sd) + exp <- Apply(data, target_dims = time_dim, sd)$output1 } else if (time_moment == "perc") { .printv(paste0("Considering the time_moment: percentile ", sprintf("%5f", time_percentile)), verbose) - exp <- apply(data, c(1, 2, 3, 5, 6), quantile, time_percentile / 100.) + exp <- Apply(data, target_dims = time_dim, quantile, + time_percentile / 100.)$output1 } else { stop(paste0("Invalid time_moment '", time_moment, "' specified!")) } @@ -187,6 +213,7 @@ EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, variance_explained = variance_explained, numpcs = numpcs, verbose = verbose) + # Expand result$closest_member into indices in cluster_dim dimensions cm=result$closest_member cml <- vector(mode = "list", length = length(cluster_dim)) cum <- cm * 0 -- GitLab From a34660bc0a8d314f5097c63037e8a9385a1d3b1a Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 22 Apr 2020 17:43:40 +0200 Subject: [PATCH 062/184] correct calculation of indices --- R/CST_EnsClustering.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 3a539c62..171f5711 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -219,8 +219,8 @@ EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, cum <- cm * 0 dim_cd <- dim(exp)[cluster_dim] for (i in rev(seq_along(cluster_dim))) { - cml[[i]] <- floor((cm - cum) / prod(dim_cd[-i])) - cum <- cum + cml[[i]] * prod(dim_cd[-i]) + cml[[i]] <- floor((cm - cum - 1) / prod(dim_cd[-i])) + 1 + cum <- cum + (cml[[i]] - 1) * prod(dim_cd[-i]) dim_cd <- dim_cd[-i] } names(cml) <- cluster_dim -- GitLab From ee4954a3307b76423b2297526731276a93306ab4 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Thu, 23 Apr 2020 14:47:54 +0200 Subject: [PATCH 063/184] verbose printing of time selection --- R/CST_EnsClustering.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 171f5711..35a4f375 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -187,7 +187,7 @@ EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, stop("Could not automatically detect a target time dimension ", "in the provided data in 'data'.") } - .printv(paste("Selected time dim:", time_dim)) + .printv(paste("Selected time dim:", time_dim), verbose) } # Apply time_moment -- GitLab From 380d384b7e9eeed1fac50ca0a445950f1e70aac6 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Thu, 23 Apr 2020 14:50:14 +0200 Subject: [PATCH 064/184] doc fix --- R/CST_EnsClustering.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 35a4f375..8a7d2c60 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -52,7 +52,7 @@ #' spatial dimensions named "lon" and "lat", and dimensions "dataset", "member", "ftime", "sdate". #' @param time_moment Decides the moment to be applied to the time dimension. Can be either 'mean' (time mean), #' 'sd' (standard deviation along time) or 'perc' (a selected percentile on time). -#' If 'perc' the keyword 'time_percentile' is also needed. +#' If 'perc' the keyword 'time_percentile' is also used. #' @param time_percentile Set the percentile in time you want to analyse (used for `time_moment = "perc"). #' @param numclus Number of clusters (scenarios) to be calculated. #' If set to NULL the number of ensemble members divided by 10 is used, with a minimum of 2 and a maximum of 8. @@ -139,7 +139,7 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, #' @param lon Vector of longitudes. #' @param time_moment Decides the moment to be applied to the time dimension. Can be either 'mean' (time mean), #' 'sd' (standard deviation along time) or 'perc' (a selected percentile on time). -#' If 'perc' the keyword 'time_percentile' is also needed. +#' If 'perc' the keyword 'time_percentile' is also used. #' @param time_percentile Set the percentile in time you want to analyse (used for `time_moment = "perc"). #' @param numclus Number of clusters (scenarios) to be calculated. #' If set to NULL the number of ensemble members divided by 10 is used, with a minimum of 2 and a maximum of 8. -- GitLab From 301d5fc246c6f9e2364cc8a0a528a927acdc3c48 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Thu, 23 Apr 2020 15:08:51 +0200 Subject: [PATCH 065/184] fix test --- tests/testthat/test-CST_EnsClustering.R | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test-CST_EnsClustering.R b/tests/testthat/test-CST_EnsClustering.R index 8c507db3..2e7364d9 100644 --- a/tests/testthat/test-CST_EnsClustering.R +++ b/tests/testthat/test-CST_EnsClustering.R @@ -37,7 +37,8 @@ test_that("Sanity and Functionality tests", { res <- CST_EnsClustering(exp, numclus = 3, cluster_dim = c("member", "sdate")) expect_equivalent(dim(res$cluster), dim(exp$data)[c(2, 3, 1)]) expect_equivalent(dim(res$freq), c(cluster = 3, dim(exp$data)[1])) - expect_equivalent(dim(res$closest_member), c(cluster = 3, dim(exp$data)[1])) + expect_equivalent(dim(res$closest_member$sdate), c(cluster = 3, + dim(exp$data)[1])) expect_equivalent(dim(res$repr_field), c(cluster = 3, dim(exp$data)[c(5, 6)], dim(exp$data)[1])) expect_equivalent(dim(res$composites), c(cluster = 3, @@ -48,13 +49,13 @@ test_that("Sanity and Functionality tests", { cluster_dim = "member") # The closest member of each cluster should be member of that cluster for (i in 1:3) { - expect_equivalent(res$cluster[res$closest_member[i, 1, 1], 1, 1], i) + expect_equivalent(res$cluster[res$closest_member$member[i, 1, 1], 1, 1], i) } res <- CST_EnsClustering(exp, numclus = 3, numpcs = 8, cluster_dim = c("member")) for (i in 1:3) { - expect_equivalent(res$cluster[res$closest_member[i, 1, 1], 1, 1], i) + expect_equivalent(res$cluster[res$closest_member$member[i, 1, 1], 1, 1], i) } res <- CST_EnsClustering(exp, numclus = 3, variance_explained = 80, -- GitLab From b2729c998586338d3c3eb106bb6ef31297518f7f Mon Sep 17 00:00:00 2001 From: jhardenberg Date: Fri, 24 Apr 2020 13:57:09 +0200 Subject: [PATCH 066/184] as.vector for multiApply and quantile --- R/CST_EnsClustering.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 8a7d2c60..53bf013a 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -200,8 +200,9 @@ EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, } else if (time_moment == "perc") { .printv(paste0("Considering the time_moment: percentile ", sprintf("%5f", time_percentile)), verbose) - exp <- Apply(data, target_dims = time_dim, quantile, - time_percentile / 100.)$output1 + exp <- Apply(data, target_dims = time_dim, + function(x) {quantile(as.vector(x), + time_percentile / 100.)})$output1 } else { stop(paste0("Invalid time_moment '", time_moment, "' specified!")) } -- GitLab From 5504a757ecc08d231785a9718e936effe104f9ca Mon Sep 17 00:00:00 2001 From: Ignazio Giuntoli Date: Sun, 10 May 2020 11:04:53 +0200 Subject: [PATCH 067/184] Upload of the ENSclustering vignette --- vignettes/ENSclustering_vignette.Rmd | 226 +++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 vignettes/ENSclustering_vignette.Rmd diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd new file mode 100644 index 00000000..708571c6 --- /dev/null +++ b/vignettes/ENSclustering_vignette.Rmd @@ -0,0 +1,226 @@ +--- +author: "Ignazio Giuntoli and Federico Fabiano - CNR-ISAC" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteEngine{knitr::knitr} + %\VignetteIndexEntry{Ensemble Clustering} + %\usepackage[utf8]{inputenc} +--- + +Ensemble clustering +----------------------------------------- + +### Introduction +Ensemble forecasts provide insight on average weather conditions from sub-seasonal to seasonal timescales. With large ensembles, it is useful to group members according to similar characteristics and to select the most representative member of each cluster. This allows to characterize forecast scenarios in a multi-model (or single model) ensemble prediction. In particular, at the regional level, this function can be used to identify the subset of ensemble members that best represent the full range of possible outcomes that may be fed in turn to downscaling applications. The choice of the ensemble members can be done by selecting different options within the function in order to meet the requirements of specific climate information products that can be tailored to different regions and user needs. + +For a detailed description of the tool please refer to the CSTools guide : + +### Steps of the vignette + +This vignette consists of three main steps: 1. Preliminary setup, 2. Loading the data, 3. Launching Ensemble clustering, 4. Results retrieval, 5. Results mapping, 6. Final notes. + +### 1. Preliminary setup + +To run this vignette, install and load Library *CSTools* + +```r +install.packages("CSTools") +library(CSTools) +``` + +and the following packages: + +```r +install.packages("s2dverification") +install.packages("stringr") +library(s2dverification) +library(stringr) +``` + +### 2. Loading the data + +For our example we will use the sample seasonal temperature data provided within the CSTools package. +Data can be loaded as follows: + +```r +datalist <- CSTools::lonlat_data$exp +``` + +The data will has the following dimension: + +```r +dim(datalist$data) +dataset member sdate ftime lat lon + 1 15 6 3 22 53 +``` + +Therefore the number of members is 15, the number of start dates is 6, while the forecast time steps are 3. The lat and lon dimensions refer to a 22x53 grid. + +### 3. Launching Ensemble clustering + +Prior to launching EnsClustering let's define the number of clusters, e.g., 4 + +```r +numcl = 4 +``` + +Let's launch the clustering using 4 clusters (numclus), 4 EOFs (numpcs), 'mean' as moment to apply to the time dimension (time_moment), and both members and starting dates, i.e. 'c("member","sdate")', as dimension over which the clustering is performed (cluster_dim). + +```r +results <- CST_EnsClustering(datalist, numclus = numcl, numpcs = 4, + time_moment = 'mean', cluster_dim = c('member', 'sdate')) +``` + +The EnsClustering produces the following results: + +```r +cluster - containing 'member' and 'sdate' +freq - containing 'cluster' +closest_member - containing 'cluster' +repr_field - containing 'cluster', 'lat' and 'lon' +composites - containing 'cluster', 'lat' and 'lon' +lat - containing the 22 grid point latitudes +lon - containing the 53 grid point longitudes +``` + +So, for instance, the overall frequency per cluster can be displayed by querying the '$freq' in 'results' obtaining: + +```r +results$freq + + [,1] +[1,] 35.55556 +[2,] 27.77778 +[3,] 21.11111 +[4,] 15.55556 +``` + +Further, the cluster number to which each 'member - start-date' pair is assigned can be displayed by quering '$cluster' in 'results' as shown below (members (15) are in row and the start-dates (6) are in column (i.e. 15*6 pairs). + +```r +results$cluster + + [,1] [,2] [,3] [,4] [,5] [,6] + [1,] 3 2 1 1 4 2 + [2,] 2 4 4 2 3 1 + [3,] 3 3 1 3 4 2 + [4,] 2 1 1 2 1 1 + [5,] 4 4 1 3 3 1 + [6,] 4 1 1 2 4 1 + [7,] 1 2 1 2 2 1 + [8,] 4 2 1 2 4 1 + [9,] 3 3 1 1 4 3 +[10,] 1 2 1 2 4 1 +[11,] 3 3 2 3 3 1 +[12,] 3 1 2 1 2 2 +[13,] 2 1 1 3 3 1 +[14,] 2 2 4 1 1 2 +[15,] 3 4 1 2 3 2 +``` + +### 4. Results retrieval + +Let's keep in mind that the aim is that of identifying 'members - start-date' pairs to be retained in order to reduce the ensemble while keeping a good representativeness. +To achieve this we can get an idea of how the clustering has performed by looking at the average cluster spatial patterns, which are found in the 'composites' argument of 'results' and have the following dimensions (we will map them at point 5): + +```r +dim(results$composites) +cluster lat lon dataset + 4 22 53 1 +``` + +while the 'repr_field' argument of 'results' provides the spatial pattern of the member lying closes to the centroid (has the same dimensions as those of 'composites'): + +```r +dim(results$repr_field) +cluster lat lon dataset + 4 22 53 1 +``` + +Finally, the pairs 'member - start-dates' to be picked as representative for each cluster are found in the 'closest_member' argument. + +```r +results$closest_member + +$member + [,1] +[1,] 6 +[2,] 1 +[3,] 11 +[4,] 6 + +$sdate + [,1] +[1,] 6 +[2,] 6 +[3,] 1 +[4,] 5 +``` + +### 5. Results mapping + +The following lines produce a multiplot of the representative temperature anomalies spatial pattern per cluster (Figure 1). +These are actually the closest realizations (member - start-date pair) to the cluster centroids noted as 'repr_field' above. + +```r +lims_pres = array(c(-2,-1.5,-1,-0.5,0,0.5,1,1.5,2)) +cols_pres = c("#084594","#2171B5","#6BAED6","#9ECAE1","white","white","#FC9272","#FB6A4A","#CB181D","#99000D") +alldata = datalist$data +ens_mean = apply(alldata, c(1, 5, 6), mean) +XXX DO we need this ? XXX ens_mean_member = apply(alldata, c(1, 2, 5, 6), mean) +postscript('Fig1_EnsClus.eps') #dev.copy(png,'Fig1_EnsClus.png') +z=rbind(c(1,1,2,2), c(1,1,2,2), c(3,3,4,4),c(3,3,4,4), c(5,5,5,5)) +layout(z) +lon = datalist$lon +lat = datalist$lat +for (k in seq(1, numclu)) { + PlotEquiMap(results$repr_field[k,,,1]-ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10], toptitle = toString(k), filled.continents = FALSE) +} +ColorBar(lims_pres, cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10],bar_limits=c(-2,2),var_lims=c(-2.5,2.5),title='Temperature anomaly (K)',vert = FALSE ) +dev.off() +``` + +![Figure 1 - Representative temperature anomalies of each cluster.](./Figures/EnsClus_4clus_both_mem_std_Fig1.png){width=100%} + + + +The lines below produce a multiplot of the temperature anomaly patterns for each 'member - start-date' pair and the respective cluster to which they are assigned (Figure 2). We limit the multiplot to the first 24 out of 90 combinations (i.e. 15 members*6 start_dates = 90) for figure clarity. + +```r +postscript('Fig2_EnsClus.eps') +z=rbind(c(1,2,3,4,5,6), c(7,8,9,10,11,12), c(13,14,15,16,17,18), c(19,20,21,22,23,24), c(25,25,25,25, 25, 25)) +layout(z) +exp = apply(alldata, c(1, 2, 3, 5, 6), mean) +for (k in seq(1, 4)) { + for (j in seq(1, 6)) { + #dev.new() + PlotEquiMap(exp[1,k,j,,]-ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10], toptitle = toString(results$cluster[k,j,1]), filled.continents = FALSE) +} +} +ColorBar(lims_pres, cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10],bar_limits=c(-2,2),var_lims=c(-2.5,2.5),title='Temperature anomaly (K)',vert = FALSE) +XXX trash XXX #PlotEquiMap(0.0*ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10]) +dev.off() +``` + +![Figure 2 - Temperature anomalies pattern per 'member - start_date' pair with cluster to which it is assigned displayed as map title.](./Figures/EnsClus_4clus_both_mem_std_Fig2.png){width=100%} + +### Final notes + +It should be noted that the clustering can be carried out with respect to 'members' or 'start-dates' alone. In which case the selection is no longer done over all 'member - start-dates' pairs (90) but along the 15 members (with all start-dates) or along the 6 start-dates (with all members). +The clustering command with respect to 'members' is listed below: + +```r +print('clustering over members') +results_memb <- CST_EnsClustering(datalist, numclus = numclu, numpcs = 4, time_moment = 'mean', cluster_dim = 'member') +``` + +Also, in addition to 'mean', the 'time_moment' can be set to 'sd', i.e. standard deviation along time, or 'perc', i.e. a percentile along time (in which case the 'time_percentile' argument is also needed). The latter option 'perc' may be useful when considering extremes, so for instance while analysing extreme temperatures with a high percentile (e.g. 90). +The clustering command with respect to 'member - start-dates' pairs over the 90th percentile of temperature (i.e. high temperatures) is listed below: + +```r +print('clustering using time_percentile') +results_perc <- CST_EnsClustering(datalist, numclus = numclu, numpcs = 4, time_moment = 'perc', time_percentile = 90, cluster_dim = c('member', 'sdate')) +``` + +Finally, the parameter 'time_dim' lets the user specify the dimension(s) over which the 'time_moment' is applied (i.e. mean, sd, perc). If 'time_dim' is not specified, the dimension is sought automatically picking the first between 'ftime', 'sdate', and 'time'. \ No newline at end of file -- GitLab From 47afb308f3534fb37c3c88933e4f3e0cafe119fa Mon Sep 17 00:00:00 2001 From: Ignazio Giuntoli Date: Mon, 11 May 2020 12:16:10 +0200 Subject: [PATCH 068/184] Update ENSclustering_vignette.Rmd --- vignettes/ENSclustering_vignette.Rmd | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index 708571c6..d2dfda05 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -72,18 +72,22 @@ results <- CST_EnsClustering(datalist, numclus = numcl, numpcs = 4, time_moment = 'mean', cluster_dim = c('member', 'sdate')) ``` -The EnsClustering produces the following results: +The EnsClustering produces the following outputs saved in object results: ```r -cluster - containing 'member' and 'sdate' -freq - containing 'cluster' -closest_member - containing 'cluster' -repr_field - containing 'cluster', 'lat' and 'lon' -composites - containing 'cluster', 'lat' and 'lon' -lat - containing the 22 grid point latitudes -lon - containing the 53 grid point longitudes +#[1] "cluster" "freq" "closest_member" "repr_field" +#[5] "composites" "lat" "on" + ``` +where: cluster contains 'member' and 'sdate' +freq contains 'cluster' +closest_member contains 'cluster' +repr_field contains 'cluster', 'lat' and 'lon' +composites contains 'cluster', 'lat' and 'lon' +lat contains the 22 grid point latitudes +lon containing the 53 grid point longitudes + So, for instance, the overall frequency per cluster can be displayed by querying the '$freq' in 'results' obtaining: ```r -- GitLab From b0955d1bc2e491a37a52efde1843f4e8b3e389d5 Mon Sep 17 00:00:00 2001 From: Ignazio Giuntoli Date: Mon, 11 May 2020 12:17:31 +0200 Subject: [PATCH 069/184] Update ENSclustering_vignette.Rmd --- vignettes/ENSclustering_vignette.Rmd | 2 -- 1 file changed, 2 deletions(-) diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index d2dfda05..247edd40 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -33,9 +33,7 @@ and the following packages: ```r install.packages("s2dverification") -install.packages("stringr") library(s2dverification) -library(stringr) ``` ### 2. Loading the data -- GitLab From 465b7e42750c547d4aed99965dc0eb4fb5fb61ad Mon Sep 17 00:00:00 2001 From: Ignazio Giuntoli Date: Mon, 11 May 2020 12:19:14 +0200 Subject: [PATCH 070/184] Update ENSclustering_vignette.Rmd --- vignettes/ENSclustering_vignette.Rmd | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index 247edd40..8b185945 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -32,8 +32,8 @@ library(CSTools) and the following packages: ```r -install.packages("s2dverification") -library(s2dverification) +install.packages("s2dv") +library(s2dv) ``` ### 2. Loading the data -- GitLab From 395d8774c21a8e8c8606167a6e1a5864ebabfd87 Mon Sep 17 00:00:00 2001 From: Ignazio Giuntoli Date: Mon, 11 May 2020 12:25:49 +0200 Subject: [PATCH 071/184] Update ENSclustering_vignette.Rmd --- vignettes/ENSclustering_vignette.Rmd | 50 ++++++++++++---------------- 1 file changed, 22 insertions(+), 28 deletions(-) diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index 8b185945..8310eb98 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -166,21 +166,15 @@ The following lines produce a multiplot of the representative temperature anomal These are actually the closest realizations (member - start-date pair) to the cluster centroids noted as 'repr_field' above. ```r -lims_pres = array(c(-2,-1.5,-1,-0.5,0,0.5,1,1.5,2)) -cols_pres = c("#084594","#2171B5","#6BAED6","#9ECAE1","white","white","#FC9272","#FB6A4A","#CB181D","#99000D") -alldata = datalist$data -ens_mean = apply(alldata, c(1, 5, 6), mean) -XXX DO we need this ? XXX ens_mean_member = apply(alldata, c(1, 2, 5, 6), mean) -postscript('Fig1_EnsClus.eps') #dev.copy(png,'Fig1_EnsClus.png') -z=rbind(c(1,1,2,2), c(1,1,2,2), c(3,3,4,4),c(3,3,4,4), c(5,5,5,5)) -layout(z) -lon = datalist$lon -lat = datalist$lat -for (k in seq(1, numclu)) { - PlotEquiMap(results$repr_field[k,,,1]-ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10], toptitle = toString(k), filled.continents = FALSE) -} -ColorBar(lims_pres, cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10],bar_limits=c(-2,2),var_lims=c(-2.5,2.5),title='Temperature anomaly (K)',vert = FALSE ) -dev.off() +EnsMean <- MeanDims(datalist $data, c('member', 'sdate', 'ftime')) +EnsMean <- InsertDim(Reorder(EnsMean, c("lat", "lon", "dataset")), + posdim = 1, lendim = 4, name = 'cluster') + +PlotLayout(PlotEquiMap, plot_dims = c("lat", "lon"), + var = results$repr_field[,,,1] - EnsMean[,,,1], + lon = results$lon, lat = results$lat, filled.continents = FALSE, + titles = c("1","2","3","4"), brks = seq(-2, 2, 0.5), + fileout = "EnsClus_4clus_both_mem_std_Fig1.png") ``` ![Figure 1 - Representative temperature anomalies of each cluster.](./Figures/EnsClus_4clus_both_mem_std_Fig1.png){width=100%} @@ -190,19 +184,19 @@ dev.off() The lines below produce a multiplot of the temperature anomaly patterns for each 'member - start-date' pair and the respective cluster to which they are assigned (Figure 2). We limit the multiplot to the first 24 out of 90 combinations (i.e. 15 members*6 start_dates = 90) for figure clarity. ```r -postscript('Fig2_EnsClus.eps') -z=rbind(c(1,2,3,4,5,6), c(7,8,9,10,11,12), c(13,14,15,16,17,18), c(19,20,21,22,23,24), c(25,25,25,25, 25, 25)) -layout(z) -exp = apply(alldata, c(1, 2, 3, 5, 6), mean) -for (k in seq(1, 4)) { - for (j in seq(1, 6)) { - #dev.new() - PlotEquiMap(exp[1,k,j,,]-ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10], toptitle = toString(results$cluster[k,j,1]), filled.continents = FALSE) -} -} -ColorBar(lims_pres, cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10],bar_limits=c(-2,2),var_lims=c(-2.5,2.5),title='Temperature anomaly (K)',vert = FALSE) -XXX trash XXX #PlotEquiMap(0.0*ens_mean[1,,], datalist$lon, datalist$lat, drawleg = FALSE, brks=lims_pres,cols=cols_pres[2:9],col_inf=cols_pres[1], col_sup=cols_pres[10]) -dev.off() +ExpMean <- MeanDims(datalist$data, 'ftime') +EnsMean <- InsertDim(InsertDim(InsertDim(EnsMean[1,,,], + posdim = 1, lendim = 6, name = 'sdate'), + posdim = 1, lendim = 15, name = 'member'), + posdim = 1, lendim = 1, name = 'dataset') +ExpMeanSd <- Reorder(ExpMean - EnsMean, c('dataset', 'sdate', 'member' , 'lat', 'lon')) +PlotLayout(PlotEquiMap, plot_dims = c("lat", "lon"), + var = ExpMeanSd[,1:6, 1:4, , ], + ncol = 6, row = 4, + lon = results$lon, lat = results$lat, filled.continents = FALSE, + titles = as.character(t(results$cluster[1:4, 1:6,])), brks = seq(-2, 2, 0.5), + width = 24, height = 20, size_units = 'cm', + fileout = "EnsClus_4clus_both_mem_std_Fig2.png") ``` ![Figure 2 - Temperature anomalies pattern per 'member - start_date' pair with cluster to which it is assigned displayed as map title.](./Figures/EnsClus_4clus_both_mem_std_Fig2.png){width=100%} -- GitLab From 8341f1c079f85a62f666ab27f0110f703fecf797 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 12 May 2020 18:30:40 +0200 Subject: [PATCH 072/184] vignette fixed and plots in Figures folder --- vignettes/ENSclustering_vignette.Rmd | 27 ++++++++++-------- .../EnsClus_4clus_both_mem_std_Fig1.png | Bin 0 -> 159791 bytes .../EnsClus_4clus_both_mem_std_Fig2.png | Bin 0 -> 226954 bytes 3 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 vignettes/Figures/EnsClus_4clus_both_mem_std_Fig1.png create mode 100644 vignettes/Figures/EnsClus_4clus_both_mem_std_Fig2.png diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index 8310eb98..52707d73 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -73,18 +73,21 @@ results <- CST_EnsClustering(datalist, numclus = numcl, numpcs = 4, The EnsClustering produces the following outputs saved in object results: ```r +names(results) #[1] "cluster" "freq" "closest_member" "repr_field" #[5] "composites" "lat" "on" ``` -where: cluster contains 'member' and 'sdate' -freq contains 'cluster' -closest_member contains 'cluster' -repr_field contains 'cluster', 'lat' and 'lon' -composites contains 'cluster', 'lat' and 'lon' -lat contains the 22 grid point latitudes -lon containing the 53 grid point longitudes +where: + +- $cluster contains the cluster assigned for each 'member' and 'sdate' +- $freq contains relative frequency by 'cluster' +- $closest_member the representative member for each 'cluster' +- $repr_field contains list of fields for each representative member 'cluster', 'lat' and 'lon' +- $composites contains the list of mean fields for 'cluster', 'lat' and 'lon' +- $lat contains the 22 grid point latitudes +- $lon containing the 53 grid point longitudes So, for instance, the overall frequency per cluster can be displayed by querying the '$freq' in 'results' obtaining: @@ -191,8 +194,8 @@ EnsMean <- InsertDim(InsertDim(InsertDim(EnsMean[1,,,], posdim = 1, lendim = 1, name = 'dataset') ExpMeanSd <- Reorder(ExpMean - EnsMean, c('dataset', 'sdate', 'member' , 'lat', 'lon')) PlotLayout(PlotEquiMap, plot_dims = c("lat", "lon"), - var = ExpMeanSd[,1:6, 1:4, , ], - ncol = 6, row = 4, + var = ExpMeanSd[, , 1:4, , ], title_scale = 0.7, + ncol = 6, nrow = 4, row_titles = paste('member' , 1:4), col_titles = paste('sdate', 1:6), lon = results$lon, lat = results$lat, filled.continents = FALSE, titles = as.character(t(results$cluster[1:4, 1:6,])), brks = seq(-2, 2, 0.5), width = 24, height = 20, size_units = 'cm', @@ -208,7 +211,7 @@ The clustering command with respect to 'members' is listed below: ```r print('clustering over members') -results_memb <- CST_EnsClustering(datalist, numclus = numclu, numpcs = 4, time_moment = 'mean', cluster_dim = 'member') +results_memb <- CST_EnsClustering(datalist, numclus = numcl, numpcs = 4, time_moment = 'mean', cluster_dim = 'member') ``` Also, in addition to 'mean', the 'time_moment' can be set to 'sd', i.e. standard deviation along time, or 'perc', i.e. a percentile along time (in which case the 'time_percentile' argument is also needed). The latter option 'perc' may be useful when considering extremes, so for instance while analysing extreme temperatures with a high percentile (e.g. 90). @@ -216,7 +219,7 @@ The clustering command with respect to 'member - start-dates' pairs over the 90t ```r print('clustering using time_percentile') -results_perc <- CST_EnsClustering(datalist, numclus = numclu, numpcs = 4, time_moment = 'perc', time_percentile = 90, cluster_dim = c('member', 'sdate')) +results_perc <- CST_EnsClustering(datalist, numclus = numcl, numpcs = 4, time_moment = 'perc', time_percentile = 90, cluster_dim = c('member', 'sdate')) ``` -Finally, the parameter 'time_dim' lets the user specify the dimension(s) over which the 'time_moment' is applied (i.e. mean, sd, perc). If 'time_dim' is not specified, the dimension is sought automatically picking the first between 'ftime', 'sdate', and 'time'. \ No newline at end of file +Finally, the parameter 'time_dim' lets the user specify the dimension(s) over which the 'time_moment' is applied (i.e. mean, sd, perc). If 'time_dim' is not specified, the dimension is sought automatically picking the first between 'ftime', 'sdate', and 'time'. diff --git a/vignettes/Figures/EnsClus_4clus_both_mem_std_Fig1.png b/vignettes/Figures/EnsClus_4clus_both_mem_std_Fig1.png new file mode 100644 index 0000000000000000000000000000000000000000..9bfcb5f7777d671db02852407e2ba69bf1997885 GIT binary patch literal 159791 zcmb??V{~NA8g3?&OfWGfwr$(i#Gcr;HL*Rh)zQT4WG3p^wrxANzw@1Q|KGLlUb|P< z+N*a}b=Aw~eJWB}Q3??r7ajrv0#Qa<{5u2$lsp8)XJS}L@RR22AEMwdI7ex17YGPs zqklf1%7x0TARve#WW+_(JhM;N-1IPxJ|HeL&O%E%@Ss%SM4(c>{Z>Bh5$w1d=kGW< zwHLUvwe1%d{sdjz(cvCs=5z26{&4e3Thn@4|J8pz;ISts)I z6*vw_b@Fc$0zx>6c<8^+U1<|`|NEF1Q`-5z%^Y}go`0KxiqJ{;|2BooAZ3vLZRV>6 zk;DAkoU9N|`uuP6Q0@P*+v4)JHf>c^bcv~z7KahuZ{TinQ1T`=Iy`FA)6+{!OViRc zHoE*gP8a`fIhqn+L9j|DxIsX;>R^Xe8vxszn>FTx!0#MpbK}RQr!RDPTnGxG;rw%X zJ>MR2Ijmb+TMsjHLYRI%--RGHvgPDsV!F6LTM-cv@p(8;b>jxV%v*i7(h@N2C`~^7 z6ArypAxpAo3I%FtbTpgIBCe|Fvv8U+La!;oXNa8PwGYt^EU*B3>J-u=;HYJ`RFuGv8=MZe2`ll!W0TTgMThpegy@EJXU-T zjwX?iFMi&?EhciCo163A-yg4vMuR^K&x6-cxQEkj`RAJuGBUDuICydMT>!PU9`65K z_cu3UDz`T~D>6d@EI1s6}s*0YNc(Xqm3pRLhWrc{(U49<* z6S3TXWyIAM6%`c;35kV;1vdEc=?Uojgto8#xtsgHg2PLT(A#Xkwp?r2eSB;UCGw3y z=k{=l3=t7g8w4E~^M7ZG7G}g|KFaO14HZlr6%|#clt;+pTwE0bDa`m^VVWe#5%haj z4GRJ75DEG&mMIZwOF;#82L3B``8$7^ZC~!s^4?3QEN$kio~*;yIz0IJ_*#7QAO@lT zH=Eq-?CjIiQ>6el>=?~j1HUFQKR>??7-(=mk^f3BZ*FHNzjio8;HxMLLb4mef3^s$ zj4X~+{~yHrKfV3`&>9gy$=A@HA@p8r8|z}7X!*-0U&i!kxKMG@MCpX{kw*p+!^Lrq zV5TitXAd`s{+)ioZ|Jbg-QTCg!)Hsqou;F3UgaJ)e56QGAI_J}jLl{gIa(~D$(oSS z!U{J82M?}V`3ZxG$w?E1$(ud%g(GBW$a!YBa_I>ddRCT^K(aEr1_4tb`0j3X>dk0< znhg0QNok?kv|oJa_y(^xrh1h^AL3|MFEwjxRSbec!N$KZ0%$TbGgDGikw@{UfV8F( z5k^b>m=i@p%x$k$jDUzlVgKQO_ z0NntNp6!^40Eh1D%|F*|B+>INN^@sR+tL>yeShczUhaTIV?)y6pdlbHm z=3-H3G^KxPf~YX7(`GRMWDD7^2G+apA4o0leCwOt6g*RomfytzJn%i_|C%b6CLc)C z*iu$glKDHPys{=OB^E>q^lotGnWn>kO=tr4$9q^Cei7LY7?D+BVd7{i`OiM2d0!#< z8xwui5leVHz1b)ulxz-wIGg$B&!{O*KdnZb1PbKmNnY^{rTpsR@0c}Ge~_b1r6Fe>KGbaa9X)W)&GZZ1ToF(n zFNZIZyeaD%pUbCo+@rr}xmbi~oM(I-&uhjH>ept)g~ovLaE|q7Mj5S48MA8X!WCrDH3vQq$o4_g|teZHL620KCpr)RRff<*@ZYIA-Zi3!m6JU7j z_#64!Il%Es+(-jA50vco3#>d?%RbC92PQS8jRN@#>G7kdRwJme>*;f+k?)?IB+)}V zG-#14FL%ytvjZqUsZf$G6Li7O@zH8OO``*e@a;Nr=_{5C_vxdD!^f-3Sy8uALsk|w zd}GFm$4XnP3HHFjRRp<85h~a$HUyJP(GGfcb|l8VltVy?I3MFWA7is!NFGm?rz+6% zN3CNM`~U#RPq4v;+VzVmYkyJgL)eW63KY%Q2;Q`nIGE+Aiikk$cnX&P^OA)}?{+~F-cSnG@56kA(Q5GB z{%}t_K14k>!qeq{l!jvxVOrnd(XDdx{-?z#jtu-et<8s;9BLG}IPXjWR}NQ8H4gZ; zsyeUtka7}zc{_GpLgim>RMk0TuX9@Ai!v3aQx`e6$Ej!`#Ci9%vz||ssJh+w%j<9v z{=BRiG$MVA9#A5;t*NBV{y5CC0)aCvDOy@*avCmb5uRQW-Asms)YLj|9?gv&YBTdH z-_>gwnARR%ssulW;b{Lo4VEr%b%BV;g~(?xxpIiYe`NGNu}`#%S|p;HQj&6&E~JRU z2N`0!X`UuY{NjF6Le&-9pTMY7XQzQ)-TLK;fcByluA#(m*+4vGrOAzPW>XkWJXrU5 ztIXG+groR5Tz9Fj5DhMDII12A1uQ;PLEDZ3t3XsJI3d6Ci%rx#*6jU(uyz1EtGbBX zhVsDGCx}3Hkt8y_ptP{cJdngU4dzAsZ-#-yut*Xi)iL`I^)1Q{Mu|`m5DDl^MeCCN z0}FFA9@U0!H|s?^2Ok4FS9obm=SRfvvarGcy|u0{*T8}pbpdb_htWYZ&vn@Wj z<35TC*txE*4f0Z{{Iwv-d054IcIf9)acpZ)#Ehfp7G7@gXR1F3eES4Zh=_;HAJD%{ z^7h#(%DKh=Nt1A+TUSj>SzG0=t+kq3G0n84f<5X6W9ueuJ*sCSOuxV)-If`=exC%WI2NR#8__3ZNxs_8i|XQ3Ld(i)GLO z01Fq7C+{-{h_MQ??3oB;Fx5t9oAq4$&QqI$elW4WPxq<+Geq!ABc_HwhDOP@D}gCN zG_2O$NiwE7&2lp%2BupSAS@8H*YGPljMon&sQ*R2Cz;yte9U~dbe-2A_cjb5YJnzjzQ`Q4v7}Uc`oxK^dk1hvhs{2>$i0b;*Kygw$-IZZp6o^2K0&(b+ zQo5>9D-J*O%G?TE{UOGzGOA5{%1}o9{Pdy>i=mc-&qO*g)a_!OY^v z9cU_&p+sPD)bhF{F9xK+KXG*N$Vji<%=u?}&Meu2SI>)k=lkoXJHCfR={`aG8p&sG zkh_E3yMNft{#^9RLEKuv^{TQVlk1Nk!&znCyvt`e43tmGtj-BQeRvs3|Y793G)J-r-6} zG~Bs?&4JH)>GR7*X(v;q)BH!I2NJ|2NlKb#)q1_n$NZfvyTrF>1yZyj@+4a^S(yo6 zl&iu*!1DM2Em!yD`HqDJ^7*~<#hq99{sq34zB-T5V*=(^^NT3|(z35@3gNqlM?O1; zxmA7KHZWM)AV`P=<`@u0S~m#qUeZxqeo)Gh8!9~6PI`4&)O^e5Q$udCeV>UM^UaRy zE0!|iX@DnjmI_{*k4Sn@a!B)9J|M~^3<12?8RgT>j~(OfSYCc=fpze%)-d@un~rTE zASJnxQ3If7ZXsk-d1K7jmUw5}@xfY|Krb~tL%{iJgXi<}jfX3O zf++zKgs?Mn5b*`gKIa9IuD+vGzE@UGwszgW)h`;Pkgho~Et*c&OSFO(i(N2YHPgOxE-SgyB9XJ9yD z@oTTI5u*|WZ%xm3(m^82#D+MPue`dtinXQfw3_C_-Rapk_McOe^=Se4{Rm!S51RGjVrVT1T9O^X+KTgTfO~W}UB%`d_AH4RfuLj%f9r^G& z)Iq@<>OaQjJkgn;s8VkN+$A*TqI+LUaieOQ0_TW#Iq5R**>OBzr8LA*#K)|tgN+6~ z{9V>xo61?A7$nru(c!BhC2?+VE10Ag>Ydb-u|6_!$$74g)1uFcvbTHdD%gCMx11)A zAttZzdENZi;(&f@K2P556Iq-U8U3Ovv(;rqAs);{1&Q*cJP(Iy8ObMG^DYYoJJeCv zPmoX|`-pd{#ByDq@$#4!pBDGOli9yJ>L-Y`f-`E{7dGDV8ueGA zlNXKj8{L3Hd-HIrq_Zzd>eFn0QKeynvAMlkSZE)uY|ul9iBNUrh=7)UDp2_6wfXCG zq{a>w7^5d<4k5%jG*fj*s7=h(hv_Omu^Nyf^((4O*JP62U1}rw6505y(#6g07QiwPy*}2;Kx<0lK^AK)bP-IIkySoXS z{@7s(nJqu1iMxE9SNaAoExtab4A6hYJKlAHtQ?$YQ7Op(-Zn)(As(P62;6b*@6}R6 zPADgRPXFjfhrMYgT`_K%)u}we zB<*Uuy>NK`Tbc6MrM4Q8&{N)FOhiXv=f%rvw9NwEgy|KhVSksDs;=`_+i%MkZ%=k^ zZ8V~isKLbTYu?GJ?bFdNt+99G$(rhp{TIc@o3CyyEmczKw>h0CP>}+4-@>VGR~%JT zRFyh=7<|Kp^x4v8w3KGvB4N8<>$}U)I&fYm@V|id6O|4z^`r%!Z28{`L?_$lOjyjrxM*UPP(ER1qB znNWDs@yQHgI@xAnDB!nqGZCT{hLgX@xoi~G%EG`Y0hCdN8V+4C>#H+Bf& z_3Fh&ldaK;D0suNPvVe9FYiU66lP|7n6)Oxk>bH|&1u5KmU7Qm4BxW+&c@%=v)mc8 zxJ=&Sy4|aE+Z+c{nz8tpCu^Bm!uri844Rj1CI@ZG;(y_O-1?CaPh@vO;=eqDBv%8R zUSuDadTq^T3aI`Q3tfJ0n!-{e5OeISoq@mzpJ?@|X=@HvH`LF0`V>y3tj5kv^tY=0@Hy2D+hGzd?|;X4>DOXsOl2S`{Z-})iWFUpc%Nx3Vc{Si^?oKAAUz! zB~6f`4!%`UTPink7vE^t__JgDtBMQ~BEtFQ?+&sIjZ0~mU&qi&uibqLoChJl7Xf-S zaYPcS-AwN1wU;k~-tU0^!eQ&91w+tGRu@;S%U1(X-*Vea9?)0dPuaxyXOLcw_h=TU zN+;Ddg9J37w0(Il8Ac2S`UL?;Us;W`A}J_aSfx?(&!4?;#`9J}6+``@9cNPlR0!de z($1FbW4$^1x9&A@j>eW-JeB7yGq-&hC=pnU&_+HgqFP+_MEo^l6<>3GRri#Hnc3&% zN;V;W9hOew>zX*A?!ep4@xDITo<={2cS#Vd4zbUzH?-j1-uktIaEP3!|HtV^~v|W zbI%6R)r~R+zFO%cA=@x1$uO!=+JvnmY|6B>tnKXjt$HTx#HQSDw2Q-eP#7(dnl$h- zTnTJms8L|=350eQt4~tVVJLjEz&hQR!p?x`W+L{MuVTb>p*J@-pJe+aOt^Ukg_hA{ z%!w+~y^2B)!3!U=qV={NW2MWT%HJ+l-<4yll%nj_V4D=v}ilIG`WHcJPA4&RWc zr@>L@lm%4ZCVM`V&^D#ufJR&!)W7M}#4jtijL<~N<{hb^QgDl`Djl-+w)TY7|D*X2 zaNDM)rHywB$~C(&_iy{P-=db13fam3xszW=sAtQ$He9IH>7syh_{_{kkfIg&Q#ctq z+}ddDCHHO5%&#Yy5Bq(`3U)Jdmz$W#9dQiCzMlZv<1gO4We*qlsI0=l(XqzZ&2Af8 zF{i7VQx1LtYpGW3(6mkU?O&3z75DefDrqiALG)S`g#|<9)hZh3Hz|-1#Ol~BG6^@* zy=JY4{p^uynTiVry!szDsXu+~olYC3A1(M9Lkn$+Y_S5j9jSArrbEcBaKaxHSc-mqREppz0(&tR`g8e|HG*p&4b!?6!_5jeRB(>(%Jh&y11w#(mVwOG!J@V;c?1eFx&^E=YVF%}%N4x7YNlRdv|zor@wiNTlKBb1_;_U}5J*S)OeP@LlCDdva@9A|j7`*C z+}#y7LO^KuFjrN`E8~aE{2n-RO_xQ4GMzK*br2_D2ja6 zOdZkgaLy(#qAxWk&bpvYJd~&kg`r<)mC|oSv*~!Dg&2~`VMc(8vS*-?$eOV@qMS9p zZD66+K}(Gjz;*z4cz8Iv-&t>MVs{sf%JSkMpjt#jPc#!?EQCBX-?MdPGVQ!>fl1i; zR#jQ?z5;3)laCQ6Dy*$!qn->{_`9R4@xl04nzi1ANWiDfVh8syd;Vw(?q>$x!+tUO zcMQu5LqSA*0c|kStUjkg3qR-)_+PU9LVGAnAP z@<;4FX7{?qoS80YnYdTdB5oU2j?}T@txK%~9lXY5o-4r}XXiN9j1=7s;enkh<$Bcwwe9``RyigUuj*>L)KLBQ+p#!R zzOS$Gtl3KQjJk)*4wqF!JFy7M>|6U5Poe!HWWCKbPoG({4WTkbn;Ja^un(tn&GmYbAUd?{>kre&K(TPLikmk^-tDQ zA$-yYjXk4cmA@M#MZ#caY5U(1>h@}d)DEN!!aBy$9*@@Guo`hvBaL*)^UM{yU4A%o zZdkCW+NVU_Qz{mqCVr>dwA$Q?(e8r%xhPc87Vjc^eT+AbaMi4=Sz}xe$gnk*e==;M zzyrV|9m+jMeN8Bc_v&Yd=Q$tD!wxGb->v0Qo9Chz@aCZ9usCoa3%fgeY6#EDz#hxu zw0f-yMdf;@L|b|81!EN9N*NqJ!%$NuLBdq%tZwJ)6f=mU3@0{#*(M5?b4c>gi33BR z=lj+gUmMR7R?S*{V{-+dsvJ=D`{Mla<&|e^3AhLsNV#8m$ha!H^0Z~ zH4v*{S>c+yWLcz}15KyR2#|!QD^Jq-{e9RO&#Yz71Lcsx@i9UZM+X<AO9?y$`>-)zvTMNs89c(Ea6df%Dx>f>$uQ9^HW8ruRie zkhD2X(3`}#(rvK2*B4nZ!XAK1OP6pzmzvp%3!{Te3Y+9crO=rmh(+gAD2Dd-J%VyO z)OutFb!Tmf;O*-1#We_}x1hYN?i}sm{QX;)Va}y}qP_=ScaK~J=zrImYMf4Al7}kRZA6#OTI(;3&+Hcj6}@-u z84w22Z})%c3ljM2zivkZ9}mjoYb?|3PFQDDB>DT+wY)sJ=(>O1GRP=enPy7QI)DpYp2nU3)hb|l3?R5ff z{}}oT67_Gjcia)Mn^ZJ-2w_Mh<6!qZKD_a^*eR?=gDRB_xLQu$pA=rd>l#qkVM?yq zeaNneB7Nq(BkWh!G}bgf_C$DguMBAj^6ZCy;@3NmZ9fbL2Iy9D=g=w z6B!veT8R=5Fp>y4w{}(_?pw!DU&UX$=zEFLJ$lk5Lx-eCaQxnyfZ$)A+s~7nfP>0O z+>vHfSyEb7Jh^Q@K+Dc0mgB&deLZ0QCETW(gjVH~^LUZw1W-yzrg;>M_vr)uF8(y% znPH};*KFKhomSVT-MgjHM}m4!u}kJEtR#@p*BN0wX-i{DBIMEuud z1_tQ3dM%iA{X7p!8`5imO0rOGy^VZVP;S{e zwvGl2fQ!n1R-9Y2B={c}z~HuL^tPkS#yP1RpaaRMt1_b8(!m!$r}lb&wfc3Xv}XPN zcs#YUF`gTr(RHBkeFt3e?J?pwD5F}~D@jUKyAmI2;RYv#O^wH36FDR+W+v5b;EC_e zz`@i2UUV7{tT}(^BMw&^L`*Ww%*3d2e@j34+qnL+01g##H#VQijd)9PQYC79v8h8T znPfF?T3q(ij}sy+gL=xr@ZIoJ*;mX_jsrKr;ma(JQM<|3JQ0N zZE{Mv-J&YD>bHD0axPe)bFl9|-=qS;YF)Wf} zl#ucBQN<8vv-?14DfnhsFMKKv?|4{i2=B(FmaeTfVBt*wNTXjq?SC%KxVPHUfJg{{ z%4`qRj{hMFmAV-E1wB5fgvg*|mAlH^8f3yjp}%y(ZJ(i13sLuVw()q%XFP5Z-9|`n zF$fM?BgmvZHX8(}G-W%E(R)M1koX6mf41HcKOt0nvXYTl!ePgpi?G2Glxpg_`aU2Hmo!ualW@sw{v!rH0`WUU?%}h8%(@kI$(JI z+wv|fl&ut8Q#shjs$a}5IJaL}sA+Y5bGP$*OHB^9jAGa*fyyyZ(a5w)4@g(J5b}Q> zS<#%{F#*SLa9?r^^wqVsRceYVsf@WkyU_6mX(eUd?LAk+)snSy-(_~({g@5WEo-US zcUemFCo3jmO<>m0ri~L#{t*^J91+|e_pyAF_o17dgW+Lp=QWMzlBaBsE>>p4#D7%g zP-f}o1i$WI)K(K!SSUiQiV9U=h3DTUwq3IJM)jJOfugCR_h;w#ncgahNr%Ae!yLWH ze{0+X16tz94e)bi(wU*G=CADAhKm^;BBp+3&x-LCh&HepwvqMNq_E|~ZW#HYab9@{ z@aEu(7)HF65z5k^8co=rEjLYOiD0?g z4Tz@Tv|sF0`E4u|;XqR(Gu_Ve{USRd?A!b?uXlyhR6XKRIwn7Lac%8}Az$;mqY~NI ztfbY^iI09}`s1y$*~M}(x_yCm-%Mc*X`t8bTgDh9p=Rb4Le z$+51DCzzsBhAys(KU9A;Bw^M|AAcRwCBec5XFnwj{czzZPeI<}5JkYNs&Xo;qvZw z1FUW{X>~1HCO+Jd@n0`5RKc*+-7koTPs?~wg>o8I_eXo|l(uMv_Ke082A@9L}}T+H4spgAT?&V9`Jfw9^PVxJzXoWE9J2hx3&`=+8N!- zWXyFzQZ#njp0m{aMI>Q(J2;E#J+tF1-wMk|Lp7wXNnd4@tPrxgt)`H9pM(;lS@U%B z05+<~i$)Wwq|T5(td6c>aQWLAPFUy$tYGw#vccrDSSCProj`xg#{RUywEJdPU1X)^ zt5+v7R zrZHw}<(Ig->2!FJE0Dk`PlC7%DV6}P)L)olFmnsFUUZLlSZs#EO!cRNc4nw}v~y|`t`P$nd1V`Z1D49F-*k6<_T)Dj4Nhf^Ilu}x(mEVuX{mkdwMA)ahX^K4*0eR? zo#msr9|JZ>1%nhhm>Y)W~<5<${1z&6=1KYHgBU2$+Wm++|fHDQ0jdf5wYiT<25Mwt|W&P9j;EQ3_An!b)* zIgn?rYsTX@V+l9K{q02@y%T?gGRcLK6N{KNkEE{rJx;rgxkzi&X*D!YJTkdSldzvXdT20#jSN2+vt4g7Mmu+Lm< z%+?HXS2fVkQC0Q3?85=&)>Om_3C_6Podn$5aT0zwtY9#+o}MrD-X7E1Vd-Z!8!5Px zCep5%L$w{hMTxCGA*Kswb&TC&B^x4CDRy`X^oUI2J;FskNTm8D-7nx2Zovy1_Os;No)k zqVK0q@nWdtz%V44xKUIm?k?rU1@YRu=sN##a5Zg8^}FNj%xIMnww3i=QN@~l`CpV> zFI6BD;<|PldU~SJ@QR!0pO30949Vzk4VpE`M?{ZjJDBQoVm%g@3OqF+hp$nA}d1G950 zgoc7HH;2|5ejK^tlynuTRKO!1GY;B7M5z#G6>JoIDqPrgrY%y>xti`+&Dq+0b+gy+5IH2%`$s zBudmlHMay%E)_$$VWr>HgLHK0t&{Mk_8o-yU6;YN%Bs(xY1deu*gJ5bQz0Ffs23xQ z#$52b4#S2%-3?#b&fZzwyR!ncAg6Mpr7#5(z~y?^a!J5gvAV;?pF0V5O79&#Vn{+n zzMGLB&(UBtjKuOFL9=!O$F+t_O$ctZZQ+bnxHL?ob1BXzxP5|p>7~r2Sroy37^nVQ@?*m7IL9{d2o4pbZ*G#vbCb^=|iFX@zgD)NGX61 zuX3z1O{U2m9DHYpf7d7!X!Yj27u%k0$|}(zNN7u1r8nbn`|1Ou4FmaZW^a|6#V}q- zkyn0l_=HFlPYec~T(g>>rHJ7@SAU5Gr1S|S>&4`cF@KWHFNDvmkNd1L&7s0|@oauk zSPDp*K-MVf7u09dkl5&4xorDhog-Yj4NFd{UU!l7*5pMaqj@h|suh_+O5+J5q#Zs9 zDN?BBkBSiND{jl+cS~B^HKnJ})?YnOLSPGbJT1i}Zi@+qU>1kBuNfu!@Y~<`Yde>P zRow!0<7xi-*~Us#Bd-l7=wx>**24L`(~2=wbTQO^9GD;k@jEiTZ)!Oz1MF|Rj@uPImE z&hj7hnBARuPd&dspmUdcAA^1-KjE7i6E zE9CPyJ`kCvPoT!m{+0E6Chj4dro+k6jA*SD-11wuVLR>z3>ge`dbZB9L$pcp^e|0; zC3$cK?cRvgrefUdaHRvYrfQNK#&u;)&=Jt`y zD3b%6P#6@27Y@^v_GPjdx`ZT?_|27@ehRaTl*jkj@v07_s^|&wR21|a+q#Np%3XX; z)chXWyR}cRcfBt*{F7#8byc9{bp3&mhwS&q!Wvw$f~wrh-x00?GAW@hEJ5QR%E)p% z8-z%L0~9D67Us!~HM75? zR%Rs>LiAe}ZO;$!{;pErOOAMMue4gjtBRxGLWye6eVY8fH>`lI7?NOAvU}JK16(urwHp(u|HM zbUUsk9xYuO^Do9PI%E9)2n|O0Xt#~_y5K;+C1l^jJ7Q`)tE&cW!pB zgO8ix!^O|}`*yF-R*>K77sU)Les|hj;<_0?jldeu*yz6urAUl&vz=ma09M5~Q}4d( zl9};TM|&@VMuQUpV^cFwp*?6C_X#ycZBGB~d4%(eOcVF@-Ec6|UO;!pGE>~R?K^Gn zQ;a-$>yox@7AL>)!gL3V%=rzcREen^zyL#pvi#^2zzD|N!4UOH&$Ud8!TK2ecS>|j znV)Wg;}+rGVqs)17^I0KJ0raCUKT%0`R(Rcb>nmOx&55qV=Cy=9vhq>o)XiO?d;(^ zoOLGu{P0cP@|7e_&e8X&UjO~H3p-*QNg{BW`1e-fe2Ff%KVUYs&CS|I{4rKG6kg<{wUUbQvVDO%4{22a^X? zgdJAjDOrj#*Z*wAw%=E^XRO^{3gf9rLvdp9A~r|0mCWT(F>%|vTRIA>hy+#jezGIQ zfd6`ZJxWh+Mi8+IK6Nm4dZd5W5s@15mTF`(`nrVEWlMA@|jF+Xd0v=g+>oNj`v9c-3lK}}F zL;@nFiiOF`Rfp=4#LsQJuYWhD`TtmNB|;JxQ(*_!9@qQNd@SOvtj&>i13Y)b$WrgN zmE!M*Jk@jh&)0hFyB0B1$?s#PX-%iw3Iu%%5+XoZm2`8Q4dI4<%fuLsES!^);FKaM zdtSA8DlQku?Rj`f5+qn__$NhyK+8y^i&Q~HO!Z!se<&-&$6X^O)nVyI(?$osHX$)Q zw@=BSD{{O?{UCcvw}Zk~x99CR2h?-wK-__F#VhWDXb*nJ7+( zsOE={@AbO-y(D1cI$RN}Lo2K5o@?(zUeIi=Dfzh2(DoOL$Tn7f_iKOKnr)#hA7{DJ z=kSrOueR*!beWkS)DzYFy*SPEeuIpM)9p)7f2gRV#&v#MKKv~LlUM|Nw#&i0Y8(|C zcf3^D0@g|cSxa?Z7}p#W-M2!huCCB5PHhN-cY3K68EzkyVJY-t`GAn1A4-PiERqi;xq~} zqtRx*yl=Je6&~)j3d}-xxOefwHZ^%Vd+9Nt_c=IbDwI-}#9Z!S~ZFzP`j zEIaE1*?eB~wtdPEgv~M+JGDZdU=AO>q>3p#$LYfzG!BhAg@hgQ=$}>V<;*i5`)=An zd3_->ErmAjw>*u9Ha|g8+Q@ycV&k*|x_#GljO_{N*vQo?0#(iZZvRtNGB? z4oOvapx7U z|6TM8{c{oiH8spOLTvPs$Whi-=_HHvcyj{Oexj}u0e znx8tJGd^x>Q!_HB%Mvxa_MgLsZV55^$=u95@NCkoacxj_d|Ke8`$qZ@D4+qf)e3oa zhG}h~dl_^K1IS-9x^j0nX@=Cpb`7a4oz^A0GdOL)hrkkW0~Kn=>Kjg` z=lqoqFTrpXZDo05i56OhvHb#r5SjLhayI*sE+BK6E>5rA&36M(_t{^!Wn_tN(?U*p znnPonLlQ;2Hr#?@BgT5M`uR>~00hJP=_@SzVbx;IPlY|$xSyLc^+?5H&#T*DBJ~rL zuSe3!c-pR`S7(t0ll_v5w4qX2bZUPjaD|Sx@)!pZH1Xm0Ak()2x>u#y03LzUHfmF6 z4g2+mg(+@)UiU>5icDjlFCW@6ZhoKBZK|K5*ZW4P8Hu|0xCz6*Iv+J#zY6;y%5)*= zk0E@&mJ9dhl>rFzM~!>fd#t`@#w?=?;vTdE za&6z%W&7IdnP@3d?k>gOo>=-03=50fYa-$bNGI;s-x<+%*?RF+29J-|8Tl;91TW7m z&J}$QG}t`Y@k^RS0o9Mo7m{S|!nrdw%p|g5LnVC=75y0;UOmHiSyFKX8{2|8v_nH< zObGZm=GLZ{kI$im`X3fgi!vr*O23*0*BkO2h&M+$x<%y2HMre;-c6y%U4+bYBc&lVYn zi7p#OgB2F0sw!rW(O1lRB&qh|*=;cFpNWG9^L#(IFlUuVb*1qOJ1!+29sTYwrBlZX<=#G8N#^tEve!`qf`@*Z1 z7_x7|c0Hfn)+8kS+F)8STw^AW96(@e#y&dkwbgsr`79|VFlMlUK(zfs^m?M!!HtD< z|6ylAks$~FbXh_4%75(dwCCJWmTT#*=6yceB^d7hqJ;-z;CWeE-ZP`s!ccNoNPAI3 zqw!}88!`wrQIBa84|PZ^m4l$1Jt><3f8J_0RnrDAX-XgwZeeQGa6dXm;L?kGa>5Kg zamf9hyyRP1A>ep@#zO9W)zaR2d$qSK%P!sCUBBJqtngl9frc|HH7)z~*h_pn{Nee_ z7l)#C3@pqq_e8DcGaC8=Z%QxB8KZ^4zHDE=!iUmsYm@hZ>^55O2Q$8+`Pq?E(vkUH z|JwR28iqu~X1{(r1ZFslGuGG>`l-#$cCE(tTbF(hXfLudntdy#3uu!!EL&I;b0+yf zZeUzvyjYoDUChrX-%`IA!~i%PF0KcKq=!C}cgLRY&zCWj&}6o&NuGidF`!PrBxME# z$^^Vk^#C@o?R2rgY!9zgF!?QFb8Fd5cWH5X&GXW9yW9v|JneD#Mj%?U49mg6K|@F9 zGECl#yYm1W+T){?`{uW!DC%szzk)Sg9z3?y8LK2MtMKtFGdDXeF)gFIvdGTJI;M9E zU~SFT-~wj(2>9IHI$x+O>m8pTul5fc_g-%>3HaEQRvztG+SrvhoUal{z_%5~8Cm6@ zomk>kNjE+fis_&h9o4oBRixgT#g68@tp-=ch(np6?2^SEQ0x4Cvyj@EnIJc1bh;3% z=>X^ZOHDC&R!>9fZbWn^odk9;ckVx&ye5Q-DRwc`r|@VUPF0Cpnj5VACB^`%T*hqI z4pmt*y`r-&4!~(Ch5)p8&*!*)^wWzA#zdX2yUgO>CwWpANYx~pD=D!U>T{gz4R#1_ zkx;&UFO4Hi>p+DGhFUYvhu<0avlhx1gofv@K&lmYjpIKz-@aEODh`9t)ssJyKALfLI#gs_OHoDS@BEz&+V+m3e*1EhPdpLPB)p2m?KdK! zc6XNavE1&r--{F*^3>>c>K&(cj~QaRwSogXx~;Yh&x=eP3mTVN@)QE-__@j%&o$J~ zMt1hB(FWCPC1n{4D1M+W!*gGY?nhOcOzdUKjcP%SexCs40yZRp&z=S3W*(BKpFB3AmBkuB;$K>J(SsPj$Qm`ryG>#*5n8Vcf z`+Vjd;mYyV#5KSSI#Pe}aosC`Eq>$THRSW#8bJvggqYCeirslBrpXtC#K}RTAmwr) zyUYY!j#Dwxk;~w z?`v6_OnBJ18QNOEwX1?(JL{*D{QrJl<$w8tj9*nuzmKDwp*aL&cS z_F+v2?0TO9ULGhB&dtqvKRqME6Li_GSH;7@L6I8mF2dQg*kb9oDpTJ&xgp@Pd#-P9 zSjnQ{VO#;p!`DXjaE}{)fKV&X$G21Ic~x+Z^IM!74``Nn(uASHQiay`Fzq!tI`=LZa`RL;LtPsfuN>ZYAdM|q3 zJvwmVrmn7x7q;Z|)B833+8&-BFo*x-P$=3krKV0iyt5)=!CA}WcjB(ra{)XJTh44+ zw9rl!&BWj3;W_NaksI7*!DRbcafpsxr>!gXWVD0-~q#w#2Cj`vVev2Cldt;T9>+eTwGw#~+BY}>Yz?>z4q-x>So9pm1!_quy&&bgXJ z%bvah#faD}Cf|)aNfwG|5u}3V$o_*oP)@0pxm*U9^nzl8>NiXKAI1(q9MZ}6*?v@2 zQnFN^qCKf+GqzX}8R4a>r6co4NoJh(*I64i_2{mfA0(vFYKQ>gI;?)H&uopNkv3jh zX;~4wM{hsF(4h{z@6ytgV0ASi&Yqd6!7(lpCGalNX7amNPv}-0Qv1+efqA({%L1$? z+t#&-c+(1K@OUiy)0@TGG7kNJO_+g{+Nv%w$cvsFO-Yr_`kTCLyEh){6~K;=E{M=a z&Y`39@}I5ivv2{(E2?uCJbhrBx7LxQv1apmg(jx22-v7I0$c05JRWWMZe-Zt2#Z6a z8!7n4j_x1Qt}7YX7CrddC+4pGYb8b(I+`{RA(CHZ(-=yYKz$45?j#`t|))}iv$?Xl%(&xky zg#~A;VWPe_1k50N>$2;&xl&LYe6HCiL*hS064BhMS2&;8bX#8QXnvbn9yx`euAFn% z!Xud;Thw1rd;^8{5%A~gr&K-2=kKtx`tFdRA%rR`0@N$jb=R}K(tM!TpaldJZ8oP9 ze!0Gruff9Gr-#T)it+ZgMx$e+a-Z+9PT4|Z08f_i$%y?Xv|;q|NMP@#i>}ap8S+5Q znxT@Mrk49QFm6%=DX7T0q{4QPa)iwR`Uk9l=F4{BY>_jkjhwws$h=jz4T^?YueB+x`0`Bls|CrXpwP#384XQLdVsoTa%5q0L@mrfen;8t zvc2YNYTp!LaYdmxWLlIQ<>m3Di;paa`D!b&s`3$)q0% zs5{%KE~c~Buhkph%~BR;W?`guS#G&_`Qrr@3gTYrS6nQQ_b#lf4=_=4o~~bxNzdJx z2%JQxb{dM;wKl+H@oUfo_Ft{>20f~&Ln-i@|9*v2sGHO2w@xicHvcjjdQ z%BNpt&t&FnVVT1Ytb^dr!mj{F}-)9XH$r%57`KyPFRtB3nWAd6Kwy2qo zwl`MdoX9>@DC3h`S!JD~YAa8=Zk&o%NZW%*BK+4p`OyFNCq>b=x#B|?I7bv1YD+nR zC@)_p>(ye1!9V74k={2W@Tzy>5JF0@QWh$8>aMsJGAPkR!w1rj^y2-QFix*7Pg4|) z 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%0A@#6^cggg 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

0liyY5FvtM)*rCv`zb(^L<|o%AL22ftnOe8* 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 F{{h$((JlZ0 literal 0 HcmV?d00001 diff --git a/vignettes/Figures/EnsClus_4clus_both_mem_std_Fig2.png b/vignettes/Figures/EnsClus_4clus_both_mem_std_Fig2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed3938e4be4b1498e69302090f2ae364fb6f015f GIT binary patch literal 226954 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�o)uPE)*Sv8V|&&UFeY-Coe>FT)o7 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�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 literal 0 HcmV?d00001 -- GitLab From 314832a814509183e0e18a61119ee47ee240f9f8 Mon Sep 17 00:00:00 2001 From: Eroteida Sanchez Garcia Date: Thu, 14 May 2020 08:43:52 +0000 Subject: [PATCH 073/184] Fixing and adding examples in vignette BestEstimateIndex_vignette.Rmd --- vignettes/BestEstimateIndex_vignette.Rmd | 306 +++++++++++++---------- 1 file changed, 173 insertions(+), 133 deletions(-) diff --git a/vignettes/BestEstimateIndex_vignette.Rmd b/vignettes/BestEstimateIndex_vignette.Rmd index e577eeb2..e549533f 100644 --- a/vignettes/BestEstimateIndex_vignette.Rmd +++ b/vignettes/BestEstimateIndex_vignette.Rmd @@ -1,134 +1,174 @@ ---- -author: "Eroteida Sánchez-García" -date: "`r Sys.Date()`" -output: rmarkdown::html_vignette -vignette: > - %\VignetteEngine{knitr::knitr} - %\VignetteIndexEntry{Achiving Best Estimate Index} - %\usepackage[utf8]{inputenc} ---- - -Achiving the Precipitation Best prediction giving the NAO index -------------------------------------------------------------------- - -The boreal winter precipitation forecast, acumulated from November to March, can be improved by considering the NAO index. The first step is to find the best estimation of winter NAO, given by two Seasonal Forecast System (SFS). The second step is to employ the enhanced NAO index pdf to produce weights for a SFS (it could be the same or a different SFS from the previous one). The third step is to apply this weights to a precipitation field. The methodology has been proved to improve the skill on precipitation forecast in the iberian peninsula given the relation between the winter precipitation and the NAO index in seasonal time scale (Sánchez-García, E., Voces-Aboy, J., Navascués, N., & Rodríguez-Camino, E. (2019). Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Adv. Sci. Res., 16, 165174, ). - -This document is aim to ilustrate a practical use of the functions included in CSTools applying this methodology. - - -## Loading packages and data - -Open an R sesion and load library CSTools: - -``` -library(CSTools) -``` -The required data to applied this methodology are: -- the winter index NAO for two (or three) different SFS in a reference period (hindcast) and in a future simulation (forecast), -- the observed (reconstructed) NAO index in the reference period and -- the acumulated precipitation field from a SFS that aims to be improved (hindcast or hindcast and forecast) - -Given the memory limitations, the following example uses synthetic data. - -The first SFS is a dynamical model containing 25 ensemble members and its output will be save in the object `NAO_hind1` for the 20 years reference period and `NAO_fcst1` for a next season forecast. -The second SFS is a empirical model, so, the `NAO_hind2` and `NAO_fcst2` are characterized by a mean and standard deviation saved in the 'statistics' dimension. - -The synthetic data is created by running the following lines: - - -``` -NAO_obs <- rnorm(3, sd=3) -dim(NAO_obs) <- c(time = 3) -NAO_hind1 <- rnorm(3 * 6, sd=3) -dim(NAO_hind1) <- c(time = 3, member = 6) -NAO_hind2_mean <- rnorm(3, sd=3) -NAO_hind2_sd <- rnorm(3, mean=5, sd=1) -NAO_hind2 <- cbind(NAO_hind2_mean,NAO_hind2_sd) -dim(NAO_hind2) <- c(time=3, statistic=2) - -``` - -The acumulated precipiation field (only march for memory limiations) is loaded by running: - -``` -lonlat_prec$data <- apply(lonlat_prec$data, c(1, 2, 3, 5, 6), sum) -``` - - -## 1- Best Estimate Index NAO - -The function `PDFBest` performes the next steps: - - improves the PDF NAO index for each SFS (it could use bias correction method) and - - does a statistical combination of these improved NAO indexes. -Its output is an array containing the parameters (mean and starndar deviation) of the PDF for the reference period. - - -``` -pdf_hind_best <- BEI_PDFBest(NAO_obs, NAO_hind1, NAO_hind2, index_fcst1 = NULL, - index_fcst2 = NULL, method_BC = 'none', - time_dim_name = 'time', na.rm = FALSE) -``` - - -## 2- Compute weights using the Best Estimation of Index NAO - - -An array of weights is calculated for a SFS. This SFS could be a different SFS than the ones in section 1. -The function WeightIndex computes these weights for each ensemble's member based on the best NAO PDF estimate. - - -``` -weights_hind <- BEI_Weights(NAO_hind1, pdf_hind_best) -names(dim(weights_hind))[1] <- 'sdate' -``` - -The expected dimensions of these weights are 'member' and temporal dimension. - - -## 3- Apply weights to a precipitation field - - -The function `CST_BEI_Weighting` computes the ensemble mean or the terciles probabilities for a climate variable. -The corrected precipitation field is obtained by running: - -``` -em_prec <- CST_BEI_Weighting(lonlat_prec, weights_hind, type = 'ensembleMean', time_dim_name = 'sdate') -prob_prec <- CST_BEI_Weighting(lonlat_prec, weights_hind, type = 'probs', ) -``` - -## Comparison and visualization - -The original model output can be compared against the BEI corrected field. -To do this a equiprobability weights are created and they are applied to the original precipitation field: - - -``` -aweights_raw <- rep(1/6, 3 * 6) -dim(aweights_raw) <- dim(weights_hind) - -em_prec_raw <- CST_BEI_Weighting(lonlat_prec, aweights_raw, type = 'ensembleMean', time_dim_name = 'sdate') -prob_prec_raw <- CST_BEI_Weighting(lonlat_prec, aweights_raw, type = 'probs', time_dim_name = 'sdate') - -``` - -A map with the probability that the total precipitation will be in the lower/normal/upper tercile based on the Best Estimate Index NAO could be obtained using the 'PlotEquiMap' function or 'PlotMostLikelyQuantileMap' function from 'CSToools' package. - -The following figures show the probabilities for lower tercile for precipitation from November to March 2012/13 for ECMWF S5 system applying the methodology exposed or not, obtained using real data: -- NAO indices from the ECMWF-S5 dynamical model and the S-ClimWaRe empirical model from AEMET from 1997 to 2016 for computing the Best Estimation of Index NAO fro this hindcast period. -- The winter precipitation (from November to March) from 1997 to 2016 over Iberia Peninsula from he ECMWF-S5 dynamical model with resolution 0.5º x 0.5º, to weighting with the previous Best Estimation of Index NAO. - - -![](./Figures/BestEstimateIndex_fig1.png){width=70%} - -![](./Figures/BestEstimateIndex_fig3.png){width=70%} - - - -In a similar way we can plot the map with the probability that the total precipitation from November 2012 to -March 2013, for example, will be in the lower tercile from ECMWF Seasonal Forecast System 5 (raw) to compare results running the code: - - - -![](./Figures/BestEstimateIndex_fig2.png){width=70%} - +--- +author: "Eroteida Sánchez-García" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteEngine{knitr::knitr} + %\VignetteIndexEntry{Achiving Best Estimate Index} + %\usepackage[utf8]{inputenc} +--- + +Achiving the Precipitation Best prediction giving the NAO index +------------------------------------------------------------------- + +The boreal winter precipitation forecast, acumulated from November to March, can be improved by considering the NAO index. The first step is to find the best estimation of winter NAO, given by two Seasonal Forecast System (SFS). The second step is to employ the enhanced NAO index pdf to produce weights for a SFS (it could be the same or a different SFS from the previous one). The third step is to apply this weights to a precipitation field. The methodology has been proved to improve the skill on precipitation forecast in the iberian peninsula given the relation between the winter precipitation and the NAO index in seasonal time scale (Sánchez-García, E., Voces-Aboy, J., Navascués, N., & Rodríguez-Camino, E. (2019). Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Adv. Sci. Res., 16, 165174, ). + +This document is aim to ilustrate a practical use of the functions included in CSTools applying this methodology. + + +## Loading packages and data + +Open an R sesion and load library CSTools: + +``` +library(CSTools) +``` +The required data to applied this methodology are: +- the observed (reconstructed) NAO index in the reference period +- the winter index NAO for two different SFSs (SFS1 and SFS2, to combine both of them) in a reference period (hindcast) and in a future simulation (forecast) +- the winter index NAO and the acumulated precipitation field from a SFS that aims to be improved (hindcast and forecast) + +Given the memory limitations, the following example uses synthetic data. + +The SFS1 system is a dynamical model containing 25 ensemble members and its output will be save in the object `NAO_hind1` for the 20 years reference period and `NAO_fcst1` for a next season forecast. +The second SFS, SFS2, is a empirical model, so, the `NAO_hind2` and `NAO_fcst2` are characterized by a mean and standard deviation saved in the 'statistics' dimension. +The model for improving is a dynamical model containing 25 ensemble members. +The synthetic data is created by running the following lines: + + +``` +# observations +NAO_obs <- rnorm(20, sd=3) +dim(NAO_obs) <- c(time = 20) + +# hindcast and forecast of a dynamical SFS 1 +NAO_hind1 <- rnorm(20 * 2 * 25, sd=2.5) +dim(NAO_hind1) <- c(time = 20, member = 50) +NAO_fcst1 <- rnorm(2*51, sd=2.5) +dim(NAO_fcst1) <- c(time = 1, member = 102) + +# hindcast and forecast of an empirical SFS 2 +NAO_hind2_mean <- rnorm(20, sd=3) +NAO_hind2_sd <- rnorm(20, mean=5, sd=1) +NAO_hind2 <- cbind(NAO_hind2_mean, NAO_hind2_sd) +dim(NAO_hind2) <- c(time=20, statistic=2) +NAO_fcst2_mean <- rnorm(1, sd=3) +NAO_fcst2_sd <- rnorm(1, mean=5, sd=1) +NAO_fcst2 <- cbind(NAO_fcst2_mean, NAO_fcst2_sd) +dim(NAO_fcst2) <- c(time=1, statistic=2) + +``` + +The winter index NAO and the acumulated precipiation field from the dynamical SFS that aims to be improved could be created by running: + +``` +# NAO index of a SFS to compute weights for each ensemble's member +NAO_hind <- rnorm(20 * 25, sd=2.5) +dim(NAO_hind) <- c(time = 20, member = 25) +NAO_fcst <- rnorm(51, sd=2.5) +dim(NAO_fcst) <- c(time = 1, member = 51) + +# The acumulated precipiation field +prec_hind <- rnorm(20 * 25 * 21 * 31, mean=30, sd=10) +dim(prec_hind) <- c(time = 20, member = 25, lat = 21, lon = 31) +prec_hind <- list(data = prec_hind) +class(prec_hind) <- 's2dv_cube' +prec_fcst <- rnorm(51 * 21 * 31, mean=25,sd=8) +dim(prec_fcst) <- c(time = 1, member = 51, lat = 21, lon = 31) +prec_fcst <- list(data = prec_fcst) +class(prec_fcst) <- 's2dv_cube' + +``` + + +## 1- Best Estimate Index NAO + +The function `PDFBest` performes the next steps: + - improves the PDF NAO index for each SFS (it could use bias correction method) and + - does a statistical combination of these improved NAO indexes. +Its output is an array containing the parameters (mean and starndar deviation) of the PDF for the reference period (hindcast) or forecast period. + + +``` +# for hindcast +pdf_hind_best <- BEI_PDFBest(NAO_obs, NAO_hind1, NAO_hind2, index_fcst1 = NULL, + index_fcst2 = NULL, method_BC = 'none', + time_dim_name = 'time', na.rm = FALSE) +# for forecast +pdf_fcst_best <- BEI_PDFBest (NAO_obs, NAO_hind1, NAO_hind2, index_fcst1 = NAO_fcst1, + index_fcst2 = NAO_fcst2, method_BC = 'none', + time_dim_name = 'time', na.rm = FALSE) +``` + + +## 2- Compute weights using the Best Estimation of Index NAO + + +An array of weights is calculated for the SFS. This SFS could be the same or different SFS than the ones in section 1. +The function WeightIndex computes these weights for each ensemble's member based on the best NAO PDF estimate. + + +``` +# for hindcast +weights_hind <- BEI_Weights(NAO_hind, pdf_hind_best) +# for forecast +weights_fcst <- BEI_Weights(NAO_fcst, pdf_fcst_best) + +``` + +The expected dimensions of these weights are 'member' and temporal dimension. + + +## 3- Apply weights to a precipitation field + + +The function `CST_BEI_Weighting` computes the ensemble mean or the terciles probabilities for a climate variable. +The ensemble mean and the probabilities of terciles from the weighted precipitation field is obtained by running: + +``` +# for hindcast +em_prec_hind <- CST_BEI_Weighting(prec_hind, weights_hind, type = 'ensembleMean') +prob_prec_hind <- CST_BEI_Weighting(prec_hind, weights_hind, type = 'probs') + +# for forecast +em_prec_fcst <- CST_BEI_Weighting(prec_fcst, weights_fcst, type = 'ensembleMean') +prob_prec_fcst <- CST_BEI_Weighting(prec_fcst, weights_fcst, type = 'probs') + +``` + +## Comparison and visualization + +The original model output can be compared against the BEI corrected field. +To do this a equiprobability weights are created for hindcast period and they are applied to the original precipitation field: + + +``` +aweights_raw <- rep(1/25, 20 * 25) +dim(aweights_raw) <- dim(weights_hind) + +em_prec_raw <- CST_BEI_Weighting(prec_hind, aweights_raw, type = 'ensembleMean') +prob_prec_raw <- CST_BEI_Weighting(prec_hind, aweights_raw, type = 'probs') + +``` + +A map with the probability that the total precipitation will be in the lower/normal/upper tercile based on the Best Estimate Index NAO could be obtained using the 'PlotEquiMap' function or 'PlotMostLikelyQuantileMap' function from 'CSToools' package. + +The following figures show the probabilities for lower tercile for precipitation from November to March 2012/13 for ECMWF S5 system applying the methodology exposed or not, obtained using real data: +- NAO indices from the ECMWF-S5 dynamical model and the S-ClimWaRe empirical model from AEMET from 1997 to 2016 for computing the Best Estimation of Index NAO fro this hindcast period. +- The winter precipitation (from November to March) from 1997 to 2016 over Iberia Peninsula from he ECMWF-S5 dynamical model with resolution 0.5º x 0.5º, to weighting with the previous Best Estimation of Index NAO. + + +![](./Figures/BestEstimateIndex_fig1.png){width=70%} + +![](./Figures/BestEstimateIndex_fig3.png){width=70%} + + + +In a similar way we can plot the map with the probability that the total precipitation from November 2012 to +March 2013, for example, will be in the lower tercile from ECMWF Seasonal Forecast System 5 (raw) to compare results running the code: + + + +![](./Figures/BestEstimateIndex_fig2.png){width=70%} + ![](./Figures/BestEstimateIndex_fig4.png){width=70%} \ No newline at end of file -- GitLab From 81a13af890e058d6d48171e8e2c3efa24c624a49 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 14 May 2020 15:44:19 +0200 Subject: [PATCH 074/184] minimum multiApply version and avoid R version patching level z --- DESCRIPTION | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2c87e147..19e18b57 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -42,12 +42,12 @@ Description: Exploits dynamical seasonal forecasts in order to provide Van Schaeybroeck et al. (2019) . Yiou et al. (2013) . Depends: - R (>= 3.4.2), + R (>= 3.4.0), maps Imports: s2dverification, rainfarmr, - multiApply, + multiApply (>= 2.1.1), qmap, ClimProjDiags, ncdf4, -- GitLab From cbdc118380a4ba4f5b57e32b2c0f2c98a56346ac Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 14 May 2020 15:55:21 +0200 Subject: [PATCH 075/184] Corrected name of the object output --- vignettes/MultiModelSkill_vignette.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/MultiModelSkill_vignette.Rmd b/vignettes/MultiModelSkill_vignette.Rmd index 8b4c6a7c..734652fe 100644 --- a/vignettes/MultiModelSkill_vignette.Rmd +++ b/vignettes/MultiModelSkill_vignette.Rmd @@ -155,7 +155,7 @@ While other relevant data is being stored in the corresponding element of the ob [1] "glosea5" "ecmwf/system4_m1" "meteofrance/system5_m1" "erainterim" ``` -In the second element of the list `AnomDJF`, `metric`, the third dimension contains the lower limit of the 95% confidence interval, the correlation, the upper limit of the 95% confidence interval and the 95% significance level given by a one-sided T-test. +In the element $data of the `AnomDJF` object, the third dimension contains the lower limit of the 95% confidence interval, the correlation, the upper limit of the 95% confidence interval and the 95% significance level given by a one-sided T-test. ```r -- GitLab From cedb140a9d2787efaf56ebd177491303efe429ff Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 21 May 2020 18:52:41 +0200 Subject: [PATCH 076/184] Fix initial check to allow exp or obs only --- R/CST_Anomaly.R | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/R/CST_Anomaly.R b/R/CST_Anomaly.R index e76c46ab..c6de2ad1 100644 --- a/R/CST_Anomaly.R +++ b/R/CST_Anomaly.R @@ -44,22 +44,28 @@ #'anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) #'str(anom4) #' +#'anom5 <- CST_Anomaly(lonlat_data$exp) +#' +#'anom6 <- CST_Anomaly(obs = lonlat_data$obs) +#' #'@seealso \code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} #' #' #'@export CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) { - if (!inherits(exp, 's2dv_cube') || !inherits(obs, 's2dv_cube')) { + if (!inherits(exp, 's2dv_cube') & !is.null(exp) || + !inherits(obs, 's2dv_cube') & !is.null(obs)) { stop("Parameter 'exp' and 'obs' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } - if (!is.null(obs) & dim(obs$data)['member'] != 1) { + if (!is.null(obs)) { + if (dim(obs$data)['member'] != 1) { stop("The length of the dimension 'member' in the component 'data' ", "of the parameter 'obs' must be equal to 1.") + } } - case_exp = case_obs = 0 if (is.null(exp) & is.null(obs)) { stop("One of the parameter 'exp' or 'obs' cannot be NULL.") @@ -75,6 +81,7 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_ warning("Parameter 'obs' is not provided and will be recycled.") } + if (!is.null(names(dim(exp$data))) & !is.null(names(dim(obs$data)))) { if (all(names(dim(exp$data)) %in% names(dim(obs$data)))) { dimnames <- names(dim(exp$data)) @@ -88,8 +95,8 @@ CST_Anomaly <- function(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_ } dim_exp <- dim(exp$data) dim_obs <- dim(obs$data) + dimnames_data <- names(dim_exp) - if (dim_exp[dim_anom] == 1 | dim_obs[dim_anom] == 1) { stop("The length of dimension 'dim_anom' in label 'data' of the parameter ", "'exp' and 'obs' must be greater than 1.") -- GitLab From d801b7b5017bab33cee5cfd3a04a4b9cef39922f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Mon, 25 May 2020 13:02:58 +0200 Subject: [PATCH 077/184] fix in the documentation and CST_RegimesAssign --- R/CST_RegimesAssign.R | 168 +++++++++++++++++++++++++++++++++++++++++ R/CST_WeatherRegimes.R | 15 ++-- R/RegimesAssign.R | 158 -------------------------------------- 3 files changed, 174 insertions(+), 167 deletions(-) create mode 100644 R/CST_RegimesAssign.R delete mode 100644 R/RegimesAssign.R diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R new file mode 100644 index 00000000..77a1de41 --- /dev/null +++ b/R/CST_RegimesAssign.R @@ -0,0 +1,168 @@ +source('/esarchive/scratch/vtorralba/vtesis_scripts/weather_regimes/CompositeVero.R') + +#' +#'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. +#' +RegimesAssign <- function(data, ref_maps, lats, method = 'distance', composite=FALSE) { + + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with named dimensions.") + } + + if (is.null(names(dim(ref_maps)))) { + stop("Parameter 'ref_maps' must be an array with named dimensions.") + } + + if (is.null(lats)) { + stop("Parameter 'lat' must be specified.") + } + + if (length(lats) != dim(data)['lat'] | (length(lats) != dim(ref_maps)['lat']) ) { + stop(" Parameter 'lats' does not match with the dimension 'lat' in the + parameter 'data' or in the parameter 'ref_maps'.") + } + + dimData <- names(dim(data)) + + if ('sdate' %in% dimData && 'ftime' %in% dimData) { + nsdates <- dim(data)['sdate'] + nftimes <- dim(data)['ftime'] + data <- MergeDims(data, + merge_dims = c('ftime','sdate'), + rename_dim = 'time') + } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { + names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' + } else { + if (!('time' %in% dimData)) { + stop("Parameter 'data' must have temporal dimensions.") + } + } + + index <- Apply( data = list(target = data), + target_dims = c('lat','lon'), + fun = '.RegimesAssign', + ref = ref_maps, + lat = lats, method = method)[[1]] + + + nclust <- dim(ref_maps)['nclust'] + freqs <- rep(NA, nclust) + for (n in 1:nclust) { + freqs[n] <- (length(which(index == n)) / length(index)) * 100 + } + + if (composite){ + poslon <- which(names(dim(data))=='lon') + poslat <- which(names(dim(data))=='lat') + postime <- which(names(dim(data))=='time') + + + if (any(is.na(index))) { + recon <- + list( + composite = array(NA, + dim = c(dim(ref_maps)['lon'], dim(ref_maps)['lat'], dim(ref_maps)['nclust'])), + pvalue = array(NA, + dim = c(dim(ref_maps)['lon'], dim(ref_maps)['lat'], dim(ref_maps)['nclust']))) + } else { + recon <- Composite(var = aperm(data, c(poslon,poslat,postime)), occ = index, K=dim(ref_maps)['nclust']) + } + + output <- list(composite = recon$composite, + pvalue = recon$pvalue, + cluster = index, + frequency = freqs) + } else{ + + output <- list(cluster = index, + frequency = freqs) + } + + return(output) +} + +.RegimesAssign <- function(ref, target, method = 'distance', lat, composite=FALSE) { + posdim <- which(names(dim(ref)) == 'nclust') + poslat <- which(names(dim(ref)) == 'lat') + poslon <- which(names(dim(ref)) == 'lon') + + nclust <- dim(ref)[posdim] + + if (all(dim(ref)[-posdim] != dim(target))) { + stop('The target should have the same dimensions [lat,lon] that + the reference ') + } + + if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { + stop( + 'The arrays should include dimensions names ref[nclust,lat,lon] + and target [lat,lon]' + ) + } + + + if (length(lat) != dim(ref)[poslat]) { + stop('latitudes do not match with the maps') + } + + if (is.na(max(target))){ + assign <- NA + + }else{ + + + # This dimensions are reorganized + ref <- aperm(ref, c(posdim, poslat, poslon)) + target <- + aperm(target, c(which(names(dim( + target + )) == 'lat'), which(names(dim( + target + )) == 'lon'))) + + # weights are defined + latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(ref)[3]) + + + rmsdiff <- function(x, y) { + dims <- dim(x) + ndims <- length(dims) + if (ndims != 2 | ndims != length(dim(y))) { + stop('x and y should be maps') + } + map_diff <- NA * x + for (i in 1:dims[1]) { + for (j in 1:dims[2]) { + map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 + } + } + rmsdiff <- sqrt(mean(map_diff)) + return(rmsdiff) + } + + if (method == 'ACC') { + corr <- rep(NA, nclust) + for (i in 1:nclust) { + corr[i] <- + ACC(InsertDim(InsertDim( + InsertDim(ref[i, , ] * latWeights, 1, 1), 2, 1 + ), 3, 1), + InsertDim(InsertDim( + InsertDim(target * latWeights, 1, 1), 2, 1 + ), 3, 1))$ACC[2] + } + assign <- which(corr == max(corr)) + } + + if (method == 'distance') { + rms <- rep(NA, nclust) + for (i in 1:nclust) { + rms[i] <- rmsdiff(ref[i, , ] * latWeights, target * latWeights) + } + assign <- which(rms == min(rms)) + } + } + + return(assign) +} + diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 092b7f04..12ec20d9 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -17,28 +17,25 @@ #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data a 's2dv_cube' object - +#'@param ncenters Number of clusters to be calculated with the clustering function. #'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. #'@param neofs number of modes to be kept (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. -#'@param lon Vector of longitudes. -#'@param lat Vector of latitudes. -#'@param ncenters Number of clusters to be calculated with the clustering function. #'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) #'but the function also support the different methods included in the hclust . These methods are: #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param ncores The number of multicore threads to use for parallel computation}. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +#' \code{$pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial # dependence of the data with the same structure as Composite.), -#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{$persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{$frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), #'@import s2dverification #'@import multiApply #'@examples diff --git a/R/RegimesAssign.R b/R/RegimesAssign.R deleted file mode 100644 index aaa5ead7..00000000 --- a/R/RegimesAssign.R +++ /dev/null @@ -1,158 +0,0 @@ -#' @rdname RegimesAssign -#' @title Function for matching a field of anomalies with -#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function). -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function performs the matching between a field of anomalies and a set -#' of maps which will be used as a reference. The anomalies will be assigned to the reference map -#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation -#' (method=‘ACC’) is obtained. -#' -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. -#'@param lat Vector of latitudes. -#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or -#' the maximum spatial correlation (method=’ACC’) between the maps. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test -#' that accounts for the serial dependence of the data with the same structure as Composite.), -#' \code{cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , -#' \code{frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), -#' -#'@import s2dverification -#'@import multiApply -#'@examples -#'@export - -RegimesAssign <- function(data, ref.maps, lat, method = 'distance') { - - if (is.null(names(dim(ref.maps))) | is.null(names(dim(data)))) { - stop( - 'The arrays should include dimensions names map.ref[lat,lon,cluster] - and map.targ [lat,lon]' - ) - } - - if (length(lat) != dim(ref.maps)['lat']) { - stop('latitudes do not match with the maps') - } - - if (any(names(dim(ref.maps))=='member')){ - names(dim(ref.maps)['member'])='member_obs' - } - - if (any(names(dim(ref.maps))=='dataset')){ - names(dim(ref.maps)['dataset'])='dataset_obs' - } - print(dim(ref.maps)) - assign <- - Apply( data = list(map.targ = data,map.ref=ref.maps), - target_dims = list(c('lat','lon'), - c('lat','lon','cluster')), - fun = '.anom2regime', - lat = lat, - method = method - )[[1]] - - anom_array <- - array(data, dim = c(prod(dim(data)[-c(poslat_ano, poslon_ano)]), nlat, nlon)) - # to be replaced with MergeDims - - recon <- Composite(var = aperm(anom_array, c(3, 2, 1)), occ = assign) - freqs <- rep(NA, nclust) - for (n in 1:nclust) { - freqs[n] <- (length(which(assign == n)) / length(assign)) * 100 - } - output <- - list( - composite = recon$composite, - pvalue = recon$pvalue, - cluster = assign, - frequency = freqs - ) - return(output) -} - - - - -.anom2regime <- function(map.ref, map.targ, method = 'distance', lat) { - posdim <- which(names(dim(map.ref)) == 'cluster') - poslat <- which(names(dim(map.ref)) == 'lat') - poslon <- which(names(dim(map.ref)) == 'lon') - - nclust <- dim(map.ref)['cluster'] - - if (all(dim(map.ref)[-posdim] != dim(map.targ))) { - stop('The map.targ should have the same dimensions [lat,lon] that - the map.reference ') - } - - if (is.null(names(dim(map.ref))) | is.null(names(dim(map.targ)))) { - stop( - 'The arrays should include dimensions names map.ref[nclust,lat,lon] - and map.targ [lat,lon]' - ) - } - - if (length(lat) != dim(map.ref)['lat']) { - stop('latitudes do not match with the maps') - } - - # This dimensions are reorganized - map.ref <- aperm(map.ref, c(posdim, poslat, poslon)) - map.targ <- - aperm(map.targ, c(which(names(dim( - map.targ - )) == 'lat'), which(names(dim( - map.targ - )) == 'lon'))) - - # weights are defined - latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(map.ref)['lon']) - names(dim(latWeights))<-c('lat','lon') - - if (method == 'ACC') { - corr <- rep(NA, nclust) - for (i in 1:nclust) { - corr[i] <- - ACC(InsertDim(InsertDim( - InsertDim(map.ref[i, , ] * latWeights, 1, 1), 2, 1 - ), 3, 1), - InsertDim(InsertDim( - InsertDim(map.targ * latWeights, 1, 1), 2, 1 - ), 3, 1))$ACC[2] - } - assign <- which(corr == max(corr)) - } - - if (method == 'distance') { - rms <- rep(NA, nclust) - for (i in 1:nclust) { - rms[i] <- .rmsdiff(map.ref[i, , ] * latWeights, map.targ * latWeights) - } - assign <- which(rms == min(rms)) - } - - return(assign) -} -.rmsdiff <- function(x, y) { - dims <- dim(x) - ndims <- length(dims) - if (ndims != 2 | ndims != length(dim(y))) { - stop('x and y should be maps') - } - map_diff <- NA * x - for (i in 1:dims[1]) { - for (j in 1:dims[2]) { - map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 - } - } - rmsdiff <- sqrt(mean(map_diff)) - return(rmsdiff) -} -- GitLab From 2d8dad2f52d08097f62a5be129a78165f1fb04cf Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 25 May 2020 15:28:48 +0200 Subject: [PATCH 078/184] Fixed Mask rearrangement --- R/PlotCombinedMap.R | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/R/PlotCombinedMap.R b/R/PlotCombinedMap.R index 96784eb8..47e74466 100644 --- a/R/PlotCombinedMap.R +++ b/R/PlotCombinedMap.R @@ -349,9 +349,19 @@ PlotCombinedMap <- function(maps, lon, lat, # Add overplot on top #---------------------- if (!is.null(mask)) { + dims_mask <- dim(mask) + latb <- sort(lat, index.return = TRUE) + dlon <- lon[2:dims_mask[2]] - lon[1:(dims_mask[2] - 1)] + wher <- which(dlon > (mean(dlon) + 1)) + if (length(wher) > 0) { + lon[(wher + 1):dims_mask[2]] <- lon[(wher + 1):dims_mask[2]] - 360 + } + lonb <- sort(lon, index.return = TRUE) + cols_mask <- sapply(seq(from = 0, to = 1, length.out = 10), function(x) adjustcolor(col_mask, alpha.f = x)) - image(lon, lat, t(mask), axes = FALSE, col = cols_mask, + image(lonb$x, latb$x, t(mask)[lonb$ix, latb$ix], + axes = FALSE, col = cols_mask, breaks = seq(from = 0, to = 1, by = 0.1), xlab='', ylab='', add = TRUE, xpd = TRUE) if (!exists('coast_color')) { -- GitLab From 8fba0b95d8da3c4b649a4782689a0320963ec5aa Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 25 May 2020 15:37:18 +0200 Subject: [PATCH 079/184] Example to PlotCombined using mask --- R/PlotCombinedMap.R | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/R/PlotCombinedMap.R b/R/PlotCombinedMap.R index 47e74466..7f8f5d64 100644 --- a/R/PlotCombinedMap.R +++ b/R/PlotCombinedMap.R @@ -43,7 +43,17 @@ #' display_range = c(0, 1), #' bar_titles = paste('% of belonging to', c('a', 'b', 'c')), #' brks = 20, width = 10, height = 8) - +#' +#'Lon <- c(0:40, 350:359) +#'Lat <- 51:26 +#'data <- rnorm(51 * 26 * 3) +#'dim(data) <- c(map = 3, lon = 51, lat = 26) +#'mask <- sample(c(0,1), replace = TRUE, size = 51 * 26) +#'dim(mask) <- c(lat = 26, lon = 51) +#'PlotCombinedMap(data, lon = Lon, lat = Lat, map_select_fun = max, +#' display_range = range(data), mask = mask, +#' width = 12, height = 8) +#' #'@export PlotCombinedMap <- function(maps, lon, lat, map_select_fun, display_range, -- GitLab From 15b2df04b3b81c66da2d44edbf381c53f1b4201a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 26 May 2020 12:34:16 +0200 Subject: [PATCH 080/184] writing CST_RegimesAssign --- R/CST_RegimesAssign.R | 153 +++++++++++++++++++++++++++++++++-------- R/CST_WeatherRegimes.R | 18 ++--- 2 files changed, 135 insertions(+), 36 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 77a1de41..ff89e41d 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -1,24 +1,117 @@ -source('/esarchive/scratch/vtorralba/vtesis_scripts/weather_regimes/CompositeVero.R') - +#' @rdname CST_RegimesAssign +#' @title Function for matching a field of anomalies with +#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function) +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function performs the matching between a field of anomalies and a set +#' of maps which will be used as a reference. The anomalies will be assigned to the reference map +#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +#' (method=‘ACC’) is obtained. #' -#'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. -#' -RegimesAssign <- function(data, ref_maps, lats, method = 'distance', composite=FALSE) { +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data a 's2dv_cube' object + +#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or +#' the maximum spatial correlation (method=’ACC’) between the maps. +#'@param ncores The number of multicore threads to use for parallel computation}. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#'@import s2dverification +#'@import multiApply +#'@examples +#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite +#'res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps=regimes, composite=F) +#'res2 <- CST_Regimesassign(data = lonlat_data$exp , ref_maps=regimes, composite=T) +#'@export +#' + +CST_RegimesAssign <- function(data, ref_maps, + method = "distance", + composite = FALSE, + ncores=NULL) { + if (!inherits(data, 's2dv_cube')) { + stop("Parameter 'data' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + if ('lon' %in% names(data)){ + lon <- data$lon + }else { + lon <- NULL + } + result <- RegimesAssign(data$data, ref_maps, data$lat, + method = "distance", composite = composite) + + if (composite){ + data$data <- result$composite + data$statistics <- result[-1] + }else{ + data$statistics <- result + } + + return(data) +} + +#' @rdname RegimesAssign +#' @title Function for matching a field of anomalies with +#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function). +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function performs the matching between a field of anomalies and a set +#' of maps which will be used as a reference. The anomalies will be assigned to the reference map +#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +#' (method=‘ACC’) is obtained. +#' +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. +#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param lat Vector of latitudes. +#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or +#' the maximum spatial correlation (method=’ACC’) between the maps. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.), +#' \code{cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +#' \code{frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#' +#'@import s2dverification +#'@import multiApply +#'@examples +#'@export + +RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, ncores=NULL) { if (is.null(names(dim(data)))) { stop("Parameter 'data' must be an array with named dimensions.") } - + if (is.null(names(dim(ref_maps)))) { stop("Parameter 'ref_maps' must be an array with named dimensions.") } - if (is.null(lats)) { + dimRef <- names(dim(ref_maps)) + + if (!all( c('cluster', 'lat', 'lon') %in% dimRef)) { + "Parameter 'ref_maps' must contain the named dimensions + 'cluster','lat' and 'lon'." + } + + if (is.null(lat)) { stop("Parameter 'lat' must be specified.") } - if (length(lats) != dim(data)['lat'] | (length(lats) != dim(ref_maps)['lat']) ) { - stop(" Parameter 'lats' does not match with the dimension 'lat' in the + if (length(lat) != dim(data)['lat'] | (length(lat) != dim(ref_maps)['lat']) ) { + stop(" Parameter 'lat' does not match with the dimension 'lat' in the parameter 'data' or in the parameter 'ref_maps'.") } @@ -42,32 +135,36 @@ RegimesAssign <- function(data, ref_maps, lats, method = 'distance', composite=F target_dims = c('lat','lon'), fun = '.RegimesAssign', ref = ref_maps, - lat = lats, method = method)[[1]] - - - nclust <- dim(ref_maps)['nclust'] + lat = lat, method = method, + ncores=ncores)[[1]] + + nclust <- dim(ref_maps)['cluster'] freqs <- rep(NA, nclust) for (n in 1:nclust) { freqs[n] <- (length(which(index == n)) / length(index)) * 100 } if (composite){ - poslon <- which(names(dim(data))=='lon') - poslat <- which(names(dim(data))=='lat') - postime <- which(names(dim(data))=='time') - + poslon <- which(names(dim(data)) == 'lon') + poslat <- which(names(dim(data)) == 'lat') + postime <- which(names(dim(data)) == 'time') + posdim <- setdiff(1:length(dim(data)), c(postime, poslat, poslon)) + dataComp <- aperm(data, c(poslon, poslat, postime, posdim)) if (any(is.na(index))) { - recon <- - list( - composite = array(NA, - dim = c(dim(ref_maps)['lon'], dim(ref_maps)['lat'], dim(ref_maps)['nclust'])), - pvalue = array(NA, - dim = c(dim(ref_maps)['lon'], dim(ref_maps)['lat'], dim(ref_maps)['nclust']))) + recon <-list( + composite = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), + postime, dim(ref_maps)['cluster']), + pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), + postime, dim(ref_maps)['cluster'])) } else { - recon <- Composite(var = aperm(data, c(poslon,poslat,postime)), occ = index, K=dim(ref_maps)['nclust']) + recon <- + Apply(data = list(var = dataComp, occ = index), + target_dims = list(c('lon', 'lat', 'time'), c('time')), + fun = Composite, + K = dim(ref_maps)['cluster']) } - + output <- list(composite = recon$composite, pvalue = recon$pvalue, cluster = index, @@ -82,12 +179,12 @@ RegimesAssign <- function(data, ref_maps, lats, method = 'distance', composite=F } .RegimesAssign <- function(ref, target, method = 'distance', lat, composite=FALSE) { - posdim <- which(names(dim(ref)) == 'nclust') + posdim <- which(names(dim(ref)) == 'cluster') poslat <- which(names(dim(ref)) == 'lat') poslon <- which(names(dim(ref)) == 'lon') nclust <- dim(ref)[posdim] - + if (all(dim(ref)[-posdim] != dim(target))) { stop('The target should have the same dimensions [lat,lon] that the reference ') @@ -95,7 +192,7 @@ RegimesAssign <- function(data, ref_maps, lats, method = 'distance', composite=F if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { stop( - 'The arrays should include dimensions names ref[nclust,lat,lon] + 'The arrays should include dimensions names ref[cluster,lat,lon] and target [lat,lon]' ) } diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 12ec20d9..f8392ab9 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -17,25 +17,28 @@ #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data a 's2dv_cube' object -#'@param ncenters Number of clusters to be calculated with the clustering function. + #'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. #'@param neofs number of modes to be kept (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param ncenters Number of clusters to be calculated with the clustering function. #'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) #'but the function also support the different methods included in the hclust . These methods are: #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. -#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). #'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). #'@param ncores The number of multicore threads to use for parallel computation}. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{$pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial # dependence of the data with the same structure as Composite.), -#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{$persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -#' \code{$frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), #'@import s2dverification #'@import multiApply #'@examples @@ -258,7 +261,7 @@ WeatherRegime <- function(data, ncenters = NULL, } result <- lapply(1:length(result), function (n) { - names(dim(result[[n]])) <- c("lon", "lat", "cluster") + names(dim(result[[n]])) <- c("lat", "lon", "cluster") return (result[[n]]) }) @@ -294,4 +297,3 @@ WeatherRegime <- function(data, ncenters = NULL, return(list(frequency = frequency, persistence = persistence)) } - -- GitLab From d3e85c22eaf43bd5746516110de12c7fa28a58db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 26 May 2020 12:41:00 +0200 Subject: [PATCH 081/184] minor change in the documentation --- R/CST_RegimesAssign.R | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index ff89e41d..3be4e91f 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -79,10 +79,10 @@ CST_RegimesAssign <- function(data, ref_maps, #' the maximum spatial correlation (method=’ACC’) between the maps. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test +#' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test #' that accounts for the serial dependence of the data with the same structure as Composite.), -#' \code{cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , -#' \code{frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #' #'@import s2dverification #'@import multiApply -- GitLab From b7af5404316bd77e1f8886c917860444d6e84303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Tue, 26 May 2020 18:06:23 +0200 Subject: [PATCH 082/184] changes in the error messages and tests --- R/CST_RegimesAssign.R | 41 +++++++----- tests/testthat/test-CST_RegimesAssign.R | 83 +++++++++++++++++++++++++ 2 files changed, 110 insertions(+), 14 deletions(-) create mode 100644 tests/testthat/test-CST_RegimesAssign.R diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 3be4e91f..a5763942 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -41,18 +41,22 @@ CST_RegimesAssign <- function(data, ref_maps, stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } - if ('lon' %in% names(data)){ - lon <- data$lon + if (is.null(ref_maps)) { + stop("Parameter 'ref_maps' must be specified.") + } + if ('lat' %in% names(data)){ + lat <- data$lat }else { - lon <- NULL + lat <- NULL } - result <- RegimesAssign(data$data, ref_maps, data$lat, + result <- RegimesAssign(data$data, ref_maps, lat= lat, method = "distance", composite = composite) if (composite){ data$data <- result$composite data$statistics <- result[-1] }else{ + data <- NULL data$statistics <- result } @@ -94,28 +98,37 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = if (is.null(names(dim(data)))) { stop("Parameter 'data' must be an array with named dimensions.") } + if (is.null(ref_maps)) { + stop("Parameter 'ref_maps' must be specified.") + } + + if (is.null(lat)) { + stop("Parameter 'lat' must be specified.") + } if (is.null(names(dim(ref_maps)))) { stop("Parameter 'ref_maps' must be an array with named dimensions.") } + dimData <- names(dim(data)) + + if (!all( c('time', 'lat', 'lon') %in% dimData)) { + stop("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.") + } + dimRef <- names(dim(ref_maps)) if (!all( c('cluster', 'lat', 'lon') %in% dimRef)) { - "Parameter 'ref_maps' must contain the named dimensions - 'cluster','lat' and 'lon'." - } - - if (is.null(lat)) { - stop("Parameter 'lat' must be specified.") + stop("Parameter 'ref_maps' must contain the named dimensions + 'cluster','lat' and 'lon'.") } - + + if (length(lat) != dim(data)['lat'] | (length(lat) != dim(ref_maps)['lat']) ) { stop(" Parameter 'lat' does not match with the dimension 'lat' in the parameter 'data' or in the parameter 'ref_maps'.") } - dimData <- names(dim(data)) if ('sdate' %in% dimData && 'ftime' %in% dimData) { nsdates <- dim(data)['sdate'] @@ -154,9 +167,9 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = if (any(is.na(index))) { recon <-list( composite = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), - postime, dim(ref_maps)['cluster']), + postime, dim(ref_maps)['composite.cluster']), pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), - postime, dim(ref_maps)['cluster'])) + postime, dim(ref_maps)['composite.cluster'])) } else { recon <- Apply(data = list(var = dataComp, occ = index), diff --git a/tests/testthat/test-CST_RegimesAssign.R b/tests/testthat/test-CST_RegimesAssign.R new file mode 100644 index 00000000..52283991 --- /dev/null +++ b/tests/testthat/test-CST_RegimesAssign.R @@ -0,0 +1,83 @@ +context("Generic tests") +test_that("Sanity checks", { + expect_error( + CST_RegimesAssign(data = 1), + paste0("Parameter 'data' must be of the class 's2dv_cube', as output by ", + "CSTools::CST_Load.")) + + data1 <- 1 : 20 + data1 <- list(data = data1) + class(data1) <- 's2dv_cube' + expect_error( + CST_RegimesAssign(data = data1,ref_maps=1), + paste0("Parameter 'data' must be an array with named dimensions.")) + + data1 <- 1 : 20 + dim(data1) <- c(lat = 5, lon=4) + data1 <- list(data = data1 , lat=1:5) + class(data1) <- 's2dv_cube' + expect_error( + CST_RegimesAssign(data = data1,ref_maps = 1), + paste0("Parameter 'ref_maps' must be an array with named dimensions.")) + + regimes <- 1:20 + dim(regimes) <- c(lat = 5, lon=2, cluster=2) + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), + paste0("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.")) + + + data1 <- 1 : 20 + dim(data1) <- c(time=20) + data1 <- list(data = data1) + class(data1) <- 's2dv_cube' + + regimes <- 1:20 + dim(regimes) <- c(lat = 5, lon=2, cluster=2) + + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), + paste0("Parameter 'lat' must be specified.")) + + data1 <- 1 : 20 + dim(data1) <- c(time=20) + data1 <- list(data = data1,lat=1:5) + class(data1) <- 's2dv_cube' + + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), + paste0("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.")) + + data1 <- 1: 20 + dim(data1) <- c(lat = 2, lon=5, time=2) + data1 <- list(data = data1, lat=1:5) + class(data1) <- 's2dv_cube' + + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), + paste0(" Parameter 'lat' does not match with the dimension 'lat' in the + parameter 'data' or in the parameter 'ref_maps'.")) + + data1 <- 1: 20 + dim(data1) <- c(lat = 5, lon=2, time=2) + data1 <- list(data = data1, lat=1:5) + class(data1) <- 's2dv_cube' + + expect_equal(names(CST_RegimesAssign(data = data1, ref_maps = regimes)$statistics), + c('cluster', 'frequency')) + + expect_equal(names( + CST_RegimesAssign( + data = data1, + ref_maps = regimes, + composite = TRUE)$statistics), c('pvalue', 'cluster', 'frequency')) + + + expect_equal(names(dim( + CST_RegimesAssign( + data = data1, + ref_maps = regimes, + composite = TRUE)$data)), c('lon', 'lat', 'composite.cluster')) + +}) + -- GitLab From fa1c7fe8a7d51d7c7ff5116601231c4d328f4815 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 10:54:25 +0200 Subject: [PATCH 083/184] more tests and fixing documentation --- R/CST_RegimesAssign.R | 26 ++++++++++++++++++-------- R/CST_WeatherRegimes.R | 5 ++--- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index a5763942..085fb1dd 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -14,10 +14,10 @@ #' #'@param data a 's2dv_cube' object -#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param ref_maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. #'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param ncores The number of multicore threads to use for parallel computation}. +#'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test @@ -27,9 +27,10 @@ #'@import s2dverification #'@import multiApply #'@examples -#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite -#'res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps=regimes, composite=F) -#'res2 <- CST_Regimesassign(data = lonlat_data$exp , ref_maps=regimes, composite=T) +#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data +#'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') +#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=FALSE) +#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=TRUE) #'@export #' @@ -77,10 +78,12 @@ CST_RegimesAssign <- function(data, ref_maps, #'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param ref.maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param ref_maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. #'@param lat Vector of latitudes. #'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. +#' @param composite a logical indicating if the composite maps are computed or not. +#'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test @@ -91,6 +94,10 @@ CST_RegimesAssign <- function(data, ref_maps, #'@import s2dverification #'@import multiApply #'@examples +#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite +#'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') +#'res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = maps_ref, +#'lat=lonlat_data$exp$lat,composite=FALSE) #'@export RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, ncores=NULL) { @@ -112,8 +119,8 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = dimData <- names(dim(data)) - if (!all( c('time', 'lat', 'lon') %in% dimData)) { - stop("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.") + if (!all( c('lat', 'lon') %in% dimData)) { + stop("Parameter 'data' must contain the named dimensions 'lat' and 'lon'.") } dimRef <- names(dim(ref_maps)) @@ -276,3 +283,6 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = return(assign) } + + + diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index f8392ab9..9cc7f9c8 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -1,4 +1,3 @@ - #' @rdname CST_WeatherRegimes #' @title Function for Calculating the Cluster analysis #' @@ -31,7 +30,7 @@ #' For more details about these methods see the hclust function documentation included in the stats package. #'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation}. +#'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial @@ -104,7 +103,7 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #' For more details about these methods see the hclust function documentation included in the stats package. #'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation}. +#'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial -- GitLab From 1404c7633a82ea34d89184d7d207c495f8ab4616 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 10:55:48 +0200 Subject: [PATCH 084/184] documentation --- DESCRIPTION | 2 +- NAMESPACE | 4 ++ man/Analogs.Rd | 25 +++++--- man/BEI_PDFBest.Rd | 20 ++++--- man/BEI_Weights.Rd | 7 +-- man/CST_Analogs.Rd | 20 ++++--- man/CST_Anomaly.Rd | 10 ++-- man/CST_BEI_Weighting.Rd | 15 +++-- man/CST_BiasCorrection.Rd | 7 +-- man/CST_Calibration.Rd | 20 ++++--- man/CST_CategoricalEnsCombination.Rd | 17 ++++-- man/CST_EnsClustering.Rd | 17 ++++-- man/CST_Load.Rd | 1 - man/CST_MultiEOF.Rd | 11 +++- man/CST_MultiMetric.Rd | 9 ++- man/CST_MultivarRMSE.Rd | 7 +-- man/CST_QuantileMapping.Rd | 20 ++++--- man/CST_RFSlope.Rd | 1 - man/CST_RFWeights.Rd | 7 +-- man/CST_RainFARM.Rd | 24 +++++--- man/CST_RegimesAssign.Rd | 51 +++++++++++++++++ man/CST_SaveExp.Rd | 7 +-- man/CST_SplitDim.Rd | 1 - man/CST_WeatherRegimes.Rd | 74 ++++++++++++++++++++++++ man/EnsClustering.Rd | 19 +++++-- man/MultiEOF.Rd | 17 ++++-- man/PlotCombinedMap.Rd | 33 ++++++++--- man/PlotForecastPDF.Rd | 17 ++++-- man/PlotMostLikelyQuantileMap.Rd | 18 ++++-- man/RFSlope.Rd | 4 +- man/RainFARM.Rd | 23 ++++++-- man/RegimesAssign.Rd | 55 ++++++++++++++++++ man/SplitDim.Rd | 1 - man/WeatherRegimes.Rd | 76 +++++++++++++++++++++++++ man/areave_data.Rd | 1 - man/as.s2dv_cube.Rd | 7 +-- man/lonlat_data.Rd | 1 - man/lonlat_prec.Rd | 1 - man/s2dv_cube.Rd | 19 +++++-- tests/testthat/test-CST_RegimesAssign.R | 41 ++++++++++--- 40 files changed, 552 insertions(+), 158 deletions(-) create mode 100644 man/CST_RegimesAssign.Rd create mode 100644 man/CST_WeatherRegimes.Rd create mode 100644 man/RegimesAssign.Rd create mode 100644 man/WeatherRegimes.Rd diff --git a/DESCRIPTION b/DESCRIPTION index 0e47736a..8f2666f4 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -70,4 +70,4 @@ VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 5.0.0 +RoxygenNote: 7.0.1 diff --git a/NAMESPACE b/NAMESPACE index e7d7c003..194148f2 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -18,8 +18,10 @@ export(CST_QuantileMapping) export(CST_RFSlope) export(CST_RFWeights) export(CST_RainFARM) +export(CST_RegimesAssign) export(CST_SaveExp) export(CST_SplitDim) +export(CST_WeatherRegimes) export(EnsClustering) export(MultiEOF) export(PlotCombinedMap) @@ -27,7 +29,9 @@ export(PlotForecastPDF) export(PlotMostLikelyQuantileMap) export(RFSlope) export(RainFARM) +export(RegimesAssign) export(SplitDim) +export(WeatherRegime) export(as.s2dv_cube) export(s2dv_cube) import(abind) diff --git a/man/Analogs.Rd b/man/Analogs.Rd index ee8a737e..06107c07 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,9 +4,19 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - criteria = "Large_dist", lonVar = NULL, latVar = NULL, region = NULL, - nAnalogs = NULL, return_list = FALSE) +Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + criteria = "Large_dist", + lonVar = NULL, + latVar = NULL, + region = NULL, + nAnalogs = NULL, + return_list = FALSE +) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field @@ -377,11 +387,6 @@ Local_scalecor <- Analogs(expL=expSLP, str(Local_scalecor) Local_scalecor$AnalogsInfo -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -389,4 +394,8 @@ and M. Vrac, 2013 : Ensemble reconstruction of the atmospheric column from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. \email{pascal.yiou@lsce.ipsl.fr} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index f836ab72..0ba24a84 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,9 +4,16 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, - index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", - na.rm = FALSE) +BEI_PDFBest( + index_obs, + index_hind1, + index_hind2, + index_fcst1 = NULL, + index_fcst2 = NULL, + method_BC = "none", + time_dim_name = "time", + na.rm = FALSE +) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database @@ -113,12 +120,11 @@ dim(res) # time statistic season # 1 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/BEI_Weights.Rd b/man/BEI_Weights.Rd index 61db33af..867a4eb0 100644 --- a/man/BEI_Weights.Rd +++ b/man/BEI_Weights.Rd @@ -43,13 +43,12 @@ dim(res) # sdate dataset member season # 10 3 5 1 -} -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} } \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index 7c9a1e6f..d7dd5e14 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,8 +4,15 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - region = NULL, criteria = "Large_dist") +CST_Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + region = NULL, + criteria = "Large_dist" +) } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the @@ -81,11 +88,6 @@ adapted version of the method of Yiou et al 2013. \examples{ res <- CST_Analogs(expL = lonlat_data$exp, obsL = lonlat_data$obs) -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -97,4 +99,8 @@ from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. code{\link{CST_Load}}, \code{\link[s2dverification]{Load}} and \code{\link[s2dverification]{CDORemap}} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index e1c31f0c..07691ea7 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,8 +4,7 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, - dim_anom = 3) +CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -53,13 +52,12 @@ str(anom3) anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) str(anom4) +} +\seealso{ +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } -\seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} -} - diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index 6b9a448a..d8a729bd 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,8 +4,12 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting(var_exp, aweights, type = "ensembleMean", - time_dim_name = "time") +CST_BEI_Weighting( + var_exp, + aweights, + type = "ensembleMean", + time_dim_name = "time" +) } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable @@ -63,12 +67,11 @@ dim(res_CST$data) # time lat lon dataset # 2 3 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_BiasCorrection.Rd b/man/CST_BiasCorrection.Rd index 485199ea..a1b415fb 100644 --- a/man/CST_BiasCorrection.Rd +++ b/man/CST_BiasCorrection.Rd @@ -35,10 +35,9 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_BiasCorrection(exp = exp, obs = obs) str(a) } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} -} \references{ Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) } -\encoding{UTF-8} +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} +} diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 36171dbd..95ca561b 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -4,8 +4,13 @@ \alias{CST_Calibration} \title{Forecast Calibration} \usage{ -CST_Calibration(exp, obs, cal.method = "mse_min", - eval.method = "leave-one-out", multi.model = F) +CST_Calibration( + exp, + obs, + cal.method = "mse_min", + eval.method = "leave-one-out", + multi.model = F +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -26,11 +31,6 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} - -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} \references{ Doblas-Reyes F.J, Hagedorn R, Palmer T.N. The rationale behind the success of multi-model ensembles in seasonal forecasting-II calibration and combination. Tellus A. 2005;57:234-252. doi:10.1111/j.1600-0870.2005.00104.x @@ -57,4 +57,8 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_Calibration(exp = exp, obs = obs, cal.method = "mse_min", eval.method = "in-sample") str(a) } -\encoding{UTF-8} +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} + +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index e551c3ec..c23f8341 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,8 +4,14 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", - eval.method = "leave-one-out", amt.cat = 3, ...) +CST_CategoricalEnsCombination( + exp, + obs, + cat.method = "pool", + eval.method = "leave-one-out", + amt.cat = 3, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} @@ -83,9 +89,6 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_CategoricalEnsCombination(exp = exp, obs = obs, amt.cat = 3, cat.method = "mmw") } } -\author{ -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} \references{ Rajagopalan, B., Lall, U., & Zebiak, S. E. (2002). Categorical climate forecasts through regularization and optimal combination of multiple GCM ensembles. Monthly Weather Review, 130(7), 1792-1811. @@ -93,4 +96,6 @@ Robertson, A. W., Lall, U., Zebiak, S. E., & Goddard, L. (2004). Improved combin Van Schaeybroeck, B., & Vannitsem, S. (2019). Postprocessing of Long-Range Forecasts. In Statistical Postprocessing of Ensemble Forecasts (pp. 267-290). } - +\author{ +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index c13bf205..154541d5 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -4,10 +4,18 @@ \alias{CST_EnsClustering} \title{Ensemble clustering} \usage{ -CST_EnsClustering(exp, time_moment = "mean", numclus = NULL, - lon_lim = NULL, lat_lim = NULL, variance_explained = 80, - numpcs = NULL, time_percentile = 90, cluster_dim = "member", - verbose = F) +CST_EnsClustering( + exp, + time_moment = "mean", + numclus = NULL, + lon_lim = NULL, + lat_lim = NULL, + variance_explained = 80, + numpcs = NULL, + time_percentile = 90, + cluster_dim = "member", + verbose = F +) } \arguments{ \item{exp}{An object of the class 's2dv_cube', containing the variables to be analysed. @@ -125,4 +133,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_Load.Rd b/man/CST_Load.Rd index 1fee022c..bf03ba42 100644 --- a/man/CST_Load.Rd +++ b/man/CST_Load.Rd @@ -47,4 +47,3 @@ obs <- CSTools::lonlat_data$obs \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} } - diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index fb584751..036a6470 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,8 +4,14 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, minvar = 0.6, - lon_lim = NULL, lat_lim = NULL) +CST_MultiEOF( + datalist, + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. @@ -69,4 +75,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/CST_MultiMetric.Rd b/man/CST_MultiMetric.Rd index 079a5588..8e3ce593 100644 --- a/man/CST_MultiMetric.Rd +++ b/man/CST_MultiMetric.Rd @@ -37,15 +37,14 @@ c(ano_exp, ano_obs) \%<-\% CST_Anomaly(exp = exp, obs = obs, cross = TRUE, memb a <- CST_MultiMetric(exp = ano_exp, obs = ano_obs) str(a) } -\author{ -Mishra Niti, \email{niti.mishra@bsc.es} - -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \references{ Mishra, N., Prodhomme, C., & Guemas, V. (n.d.). Multi-Model Skill Assessment of Seasonal Temperature and Precipitation Forecasts over Europe, 29-31.\url{http://link.springer.com/10.1007/s00382-018-4404-z} } \seealso{ \code{\link[s2dverification]{Corr}}, \code{\link[s2dverification]{RMS}}, \code{\link[s2dverification]{RMSSS}} and \code{\link{CST_Load}} } +\author{ +Mishra Niti, \email{niti.mishra@bsc.es} +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_MultivarRMSE.Rd b/man/CST_MultivarRMSE.Rd index 685eaf77..24af608c 100644 --- a/man/CST_MultivarRMSE.Rd +++ b/man/CST_MultivarRMSE.Rd @@ -56,10 +56,9 @@ weight <- c(1, 2) a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = weight) str(a) } -\author{ -Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} -} \seealso{ \code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} } - +\author{ +Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} +} diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index 1c93843e..ad8f4b6c 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,9 +4,16 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", - "ftime", "member"), sample_length = NULL, method = "QUANT", - ncores = NULL, ...) +CST_QuantileMapping( + exp, + obs, + exp_cor = NULL, + sample_dims = c("sdate", "ftime", "member"), + sample_length = NULL, + method = "QUANT", + ncores = NULL, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} @@ -77,10 +84,9 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', method = 'DIST') } } -\author{ -Nuria Perez-Zanon, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} } - +\author{ +Nuria Perez-Zanon, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_RFSlope.Rd b/man/CST_RFSlope.Rd index d2b5aec0..0c4e1671 100644 --- a/man/CST_RFSlope.Rd +++ b/man/CST_RFSlope.Rd @@ -50,4 +50,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_RFWeights.Rd b/man/CST_RFWeights.Rd index 08a7b850..ef5ebe4d 100644 --- a/man/CST_RFWeights.Rd +++ b/man/CST_RFWeights.Rd @@ -47,9 +47,6 @@ nf <- 8 ww <- CST_RFWeights("./worldclim.nc", nf, lon, lat, fsmooth = TRUE) } } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} \references{ Terzago, S., Palazzi, E., & von Hardenberg, J. (2018). Stochastic downscaling of precipitation in complex orography: @@ -57,4 +54,6 @@ A simple method to reproduce a realistic fine-scale climatology. Natural Hazards and Earth System Sciences, 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 . } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 4a667f9a..1c609e08 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,9 +4,20 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - verbose = FALSE, drop_realization_dim = FALSE) +CST_RainFARM( + data, + nf, + weights = 1, + slope = 0, + kmin = 1, + nens = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + verbose = FALSE, + drop_realization_dim = FALSE +) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -95,13 +106,12 @@ dim(res$data) # dataset member realization sdate ftime lat lon # 1 2 3 3 4 64 64 -} -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } \references{ Terzago, S. et al. (2018). NHESS 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 ; D'Onofrio et al. (2014), J of Hydrometeorology 15, 830-843; Rebora et. al. (2006), JHM 7, 724. } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd new file mode 100644 index 00000000..e90c6bc7 --- /dev/null +++ b/man/CST_RegimesAssign.Rd @@ -0,0 +1,51 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RegimesAssign.R +\name{CST_RegimesAssign} +\alias{CST_RegimesAssign} +\title{Function for matching a field of anomalies with +a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function)} +\usage{ +CST_RegimesAssign( + data, + ref_maps, + method = "distance", + composite = FALSE, + ncores = NULL +) +} +\arguments{ +\item{data}{a 's2dv_cube' object} + +\item{ref_maps}{Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} + +\item{method}{Whether the matching will be performed in terms of minimum distance (default=’distance’) or +the maximum spatial correlation (method=’ACC’) between the maps.} + +\item{ncores}{The number of multicore threads to use for parallel computation.} +} +\value{ +A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) + \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test + that accounts for the serial dependence of the data with the same structure as Composite.), + \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , + \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +} +\description{ +This function performs the matching between a field of anomalies and a set +of maps which will be used as a reference. The anomalies will be assigned to the reference map +for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +(method=‘ACC’) is obtained. +} +\examples{ +regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data +maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') +res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=FALSE) +res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=TRUE) +} +\references{ +Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +} +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/CST_SaveExp.Rd b/man/CST_SaveExp.Rd index 17537205..0e49c119 100644 --- a/man/CST_SaveExp.Rd +++ b/man/CST_SaveExp.Rd @@ -29,11 +29,10 @@ destination <- "./path/" CST_SaveExp(data = data, destination = destination) } -} -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } \seealso{ \code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index 2019ea7b..ee93aedc 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -43,4 +43,3 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd new file mode 100644 index 00000000..7a06c0fd --- /dev/null +++ b/man/CST_WeatherRegimes.Rd @@ -0,0 +1,74 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_WeatherRegimes.R +\name{CST_WeatherRegimes} +\alias{CST_WeatherRegimes} +\title{Function for Calculating the Cluster analysis} +\usage{ +CST_WeatherRegimes( + data, + ncenters = NULL, + EOFS = TRUE, + neofs = 30, + varThreshold = NULL, + method = "kmeans", + iter.max = 100, + nstart = 30, + ncores = NULL +) +} +\arguments{ +\item{data}{a 's2dv_cube' object} + +\item{ncenters}{Number of clusters to be calculated with the clustering function.} + +\item{neofs}{number of modes to be kept (default = 30).} + +\item{varThreshold}{Value with the percentage of variance to be explained by the PCs. +Only sufficient PCs to explain this much variance will be used in the clustering.} + +\item{method}{Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +but the function also support the different methods included in the hclust . These methods are: +"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +For more details about these methods see the hclust function documentation included in the stats package.} + +\item{iter.max}{Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected).} + +\item{ncores}{The number of multicore threads to use for parallel computation.} + +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data.} + +\item{lon}{Vector of longitudes.} + +\item{lat}{Vector of latitudes.} + +\item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} +} +\value{ +A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) + \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial + \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), + \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), + \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +} +\description{ +This function computes the weather regimes from a cluster analysis. +It is applied on the array \code{data} in a 's2dv_cube' object. The dimensionality of this object can be also reduced +by using PCs obtained from the application of the #'EOFs analysis to filter the dataset. +The cluster analysis can be performed with the traditional k-means or those methods +included in the hclust (stats package). +} +\examples{ +res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) +} +\references{ +Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +4961–4976, doi:10.1007/s00382-019-04839-5. + +Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +} +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 27aca453..2fd8a3f1 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -4,10 +4,20 @@ \alias{EnsClustering} \title{Ensemble clustering} \usage{ -EnsClustering(data, lat, lon, time_moment = "mean", numclus = NULL, - lon_lim = NULL, lat_lim = NULL, variance_explained = 80, - numpcs = NULL, time_percentile = 90, cluster_dim = "member", - verbose = T) +EnsClustering( + data, + lat, + lon, + time_moment = "mean", + numclus = NULL, + lon_lim = NULL, + lat_lim = NULL, + variance_explained = 80, + numpcs = NULL, + time_percentile = 90, + cluster_dim = "member", + verbose = T +) } \arguments{ \item{data}{A matrix of dimensions 'dataset member sdate ftime lat lon' containing the variables to be analysed.} @@ -67,4 +77,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index 1e822fc4..dd0fc7fe 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,9 +4,19 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", - neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, - lat_lim = NULL) +MultiEOF( + data, + lon, + lat, + time, + lon_dim = "lon", + lat_dim = "lat", + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, @@ -46,4 +56,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 6857c64d..616b84f9 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,11 +4,27 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, - map_dim = "map", brks = NULL, cols = NULL, col_unknown_map = "white", - mask = NULL, col_mask = "grey", bar_titles = NULL, legend_scale = 1, - fileout = NULL, width = 8, height = 5, size_units = "in", res = 100, - ...) +PlotCombinedMap( + maps, + lon, + lat, + map_select_fun, + display_range, + map_dim = "map", + brks = NULL, + cols = NULL, + col_unknown_map = "white", + mask = NULL, + col_mask = "grey", + bar_titles = NULL, + legend_scale = 1, + fileout = NULL, + width = 8, + height = 5, + size_units = "in", + res = 100, + ... +) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} @@ -67,12 +83,11 @@ PlotCombinedMap(list(a, b, c), lons, lats, bar_titles = paste('\% of belonging to', c('a', 'b', 'c')), brks = 20, width = 10, height = 8) } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} Veronica Torralba, \email{veronica.torralba@bsc.es} } -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} -} - diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index bed0bd31..bf50f7dd 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,10 +4,18 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, obs = NULL, - plotfile = NULL, title = "Set a title", var.name = "Varname (units)", - fcst.names = NULL, add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro")) +PlotForecastPDF( + fcst, + tercile.limits, + extreme.limits = NULL, + obs = NULL, + plotfile = NULL, + title = "Set a title", + var.name = "Varname (units)", + fcst.names = NULL, + add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro") +) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each frecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} @@ -49,4 +57,3 @@ PlotForecastPDF(fcsts2, c(-0.66, 0.66), extreme.limits = c(-1.2, 1.2), \author{ Llorenç Lledó \email{llledo@bsc.es} } -\encoding{UTF-8} diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 6c92850e..4c400b18 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,8 +4,15 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", - bar_titles = NULL, col_unknown_cat = "white", ...) +PlotMostLikelyQuantileMap( + probs, + lon, + lat, + cat_dim = "bin", + bar_titles = NULL, + col_unknown_cat = "white", + ... +) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} @@ -109,11 +116,10 @@ PlotMostLikelyQuantileMap(bins, lons, lats, mask = 1 - (w1 + w2 / max(c(w1, w2))), brks = 20, width = 10, height = 8) -} -\author{ -Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} } \seealso{ \code{PlotCombinedMap} and \code{PlotEquiMap} } - +\author{ +Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} +} diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index 09a24ff5..db3f0e10 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,8 +4,7 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", - lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. @@ -60,4 +59,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 984dcd42..0db84679 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,10 +4,24 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, kmin = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - lon_dim = "lon", lat_dim = "lat", drop_realization_dim = FALSE, - verbose = FALSE) +RainFARM( + data, + lon, + lat, + nf, + weights = 1, + nens = 1, + slope = 0, + kmin = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + lon_dim = "lon", + lat_dim = "lat", + drop_realization_dim = FALSE, + verbose = FALSE +) } \arguments{ \item{data}{Precipitation array to downscale. @@ -117,4 +131,3 @@ dim(res$data) \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd new file mode 100644 index 00000000..4f056399 --- /dev/null +++ b/man/RegimesAssign.Rd @@ -0,0 +1,55 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RegimesAssign.R +\name{RegimesAssign} +\alias{RegimesAssign} +\title{Function for matching a field of anomalies with +a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function).} +\usage{ +RegimesAssign( + data, + ref_maps, + lat, + method = "distance", + composite = FALSE, + ncores = NULL +) +} +\arguments{ +\item{data}{an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon.} + +\item{ref_maps}{Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} + +\item{lat}{Vector of latitudes.} + +\item{method}{Whether the matching will be performed in terms of minimum distance (default=’distance’) or +the maximum spatial correlation (method=’ACC’) between the maps.} + +\item{composite}{a logical indicating if the composite maps are computed or not.} + +\item{ncores}{The number of multicore threads to use for parallel computation.} +} +\value{ +A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) + \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test + that accounts for the serial dependence of the data with the same structure as Composite.), + \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , + \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +} +\description{ +This function performs the matching between a field of anomalies and a set +of maps which will be used as a reference. The anomalies will be assigned to the reference map +for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +(method=‘ACC’) is obtained. +} +\examples{ +regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite +maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') +res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = maps_ref, +lat=lonlat_data$exp$lat,composite=FALSE) +} +\references{ +Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +} +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/SplitDim.Rd b/man/SplitDim.Rd index e36aa8a5..f07e4756 100644 --- a/man/SplitDim.Rd +++ b/man/SplitDim.Rd @@ -35,4 +35,3 @@ new_data <- SplitDim(data, indices = time, freq = 'year') \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd new file mode 100644 index 00000000..887f202a --- /dev/null +++ b/man/WeatherRegimes.Rd @@ -0,0 +1,76 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_WeatherRegimes.R +\name{WeatherRegime} +\alias{WeatherRegime} +\title{Function for Calculating the Cluster analysis} +\usage{ +WeatherRegime( + data, + ncenters = NULL, + EOFS = TRUE, + neofs = 30, + varThreshold = NULL, + lon = NULL, + lat = NULL, + method = "kmeans", + iter.max = 100, + nstart = 30, + ncores = NULL +) +} +\arguments{ +\item{data}{an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'.} + +\item{ncenters}{Number of clusters to be calculated with the clustering function.} + +\item{neofs}{number of modes to be kept only if EOFs = TRUE has been selected. (default = 30).} + +\item{varThreshold}{Value with the percentage of variance to be explained by the PCs. +Only sufficient PCs to explain this much variance will be used in the clustering.} + +\item{lon}{Vector of longitudes.} + +\item{lat}{Vector of latitudes.} + +\item{method}{Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +but the function also support the different methods included in the hclust . These methods are: +"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +For more details about these methods see the hclust function documentation included in the stats package.} + +\item{iter.max}{Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected).} + +\item{ncores}{The number of multicore threads to use for parallel computation.} + +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data.} + +\item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} +} +\value{ +A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) + \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial + \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), + \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), + \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +} +\description{ +This function computes the weather regimes from a cluster analysis. +It can be applied over the dataset with dimensions +c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the +EOFs analysis to filter the dataset. +The cluster analysis can be performed with the traditional k-means or those methods +included in the hclust (stats package). +} +\examples{ +res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) +} +\references{ +Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +4961–4976, doi:10.1007/s00382-019-04839-5. + +Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +} +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/areave_data.Rd b/man/areave_data.Rd index cc79c85c..a772220a 100644 --- a/man/areave_data.Rd +++ b/man/areave_data.Rd @@ -41,4 +41,3 @@ areave_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/as.s2dv_cube.Rd b/man/as.s2dv_cube.Rd index 13a2a296..c2b8f3a8 100644 --- a/man/as.s2dv_cube.Rd +++ b/man/as.s2dv_cube.Rd @@ -40,12 +40,11 @@ data <- as.s2dv_cube(data) class(data) } } +\seealso{ +\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} +} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Nicolau Manubens, \email{nicolau.manubens@bsc.es} } -\seealso{ -\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} -} - diff --git a/man/lonlat_data.Rd b/man/lonlat_data.Rd index eca7abac..0c6ee30f 100644 --- a/man/lonlat_data.Rd +++ b/man/lonlat_data.Rd @@ -41,4 +41,3 @@ lonlat_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/lonlat_prec.Rd b/man/lonlat_prec.Rd index 69cb94e8..345e3cab 100644 --- a/man/lonlat_prec.Rd +++ b/man/lonlat_prec.Rd @@ -29,4 +29,3 @@ lonlat_prec <- CST_Load('prlr', exp = list(infile), obs = NULL, Jost von Hardenberg \email{j.vonhardenberg@isac.cnr.it} } \keyword{data} - diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index 48af7bbb..b0ce8966 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,8 +4,16 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, - Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) +s2dv_cube( + data, + lon = NULL, + lat = NULL, + Variable = NULL, + Datasets = NULL, + Dates = NULL, + when = NULL, + source_files = NULL +) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -75,10 +83,9 @@ exp8 <- s2dv_cube(data = exp_original, lon = seq(-10, 10, 5), lat = c(45, 50), end = paste0(rep("31", 10), rep("01", 10), 1990:1999))) class(exp8) } -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/tests/testthat/test-CST_RegimesAssign.R b/tests/testthat/test-CST_RegimesAssign.R index 52283991..92c63a80 100644 --- a/tests/testthat/test-CST_RegimesAssign.R +++ b/tests/testthat/test-CST_RegimesAssign.R @@ -1,3 +1,4 @@ + context("Generic tests") test_that("Sanity checks", { expect_error( @@ -24,9 +25,9 @@ test_that("Sanity checks", { dim(regimes) <- c(lat = 5, lon=2, cluster=2) expect_error( CST_RegimesAssign(data = data1,ref_maps = regimes), - paste0("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.")) + paste0("Parameter 'data' must have temporal dimensions.")) - + data1 <- 1 : 20 dim(data1) <- c(time=20) data1 <- list(data = data1) @@ -39,6 +40,7 @@ test_that("Sanity checks", { CST_RegimesAssign(data = data1,ref_maps = regimes), paste0("Parameter 'lat' must be specified.")) + data1 <- 1 : 20 dim(data1) <- c(time=20) data1 <- list(data = data1,lat=1:5) @@ -46,8 +48,8 @@ test_that("Sanity checks", { expect_error( CST_RegimesAssign(data = data1,ref_maps = regimes), - paste0("Parameter 'data' must contain the named dimensions 'time','lat' and 'lon'.")) - + paste0("Parameter 'data' must contain the named dimensions 'lat' and 'lon'.")) + data1 <- 1: 20 dim(data1) <- c(lat = 2, lon=5, time=2) data1 <- list(data = data1, lat=1:5) @@ -55,8 +57,9 @@ test_that("Sanity checks", { expect_error( CST_RegimesAssign(data = data1,ref_maps = regimes), - paste0(" Parameter 'lat' does not match with the dimension 'lat' in the - parameter 'data' or in the parameter 'ref_maps'.")) + " Parameter 'lat' does not match with the dimension 'lat' in the + parameter 'data' or in the parameter 'ref_maps'.") + data1 <- 1: 20 dim(data1) <- c(lat = 5, lon=2, time=2) @@ -72,12 +75,34 @@ test_that("Sanity checks", { ref_maps = regimes, composite = TRUE)$statistics), c('pvalue', 'cluster', 'frequency')) - expect_equal(names(dim( CST_RegimesAssign( data = data1, ref_maps = regimes, composite = TRUE)$data)), c('lon', 'lat', 'composite.cluster')) + data1 <- 1: 160 + dim(data1) <- c(lat = 5, lon=2, time=2, member=8) + data1 <- list(data = data1, lat=1:5) + class(data1) <- 's2dv_cube' + + expect_equal(names(dim( + CST_RegimesAssign( + data = data1, + ref_maps = regimes, + composite = TRUE)$data)), c('lon', 'lat', 'composite.cluster', 'member')) + + expect_equal(names(dim( + CST_RegimesAssign( + data = data1, + ref_maps = regimes, + composite = TRUE)$statistics$cluster)), c('time', 'member')) + + regimes <- 1:60 + dim(regimes) <- c(lat = 5, lon=2, cluster=6) + + expect_equal(max(CST_RegimesAssign(data = data1, ref_maps = regimes, + composite = FALSE)$statistics$cluster), + unname(dim(regimes)['cluster'])) + }) - -- GitLab From 0aaa3adf8190abf4de50c0503eac851e452370cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 11:41:43 +0200 Subject: [PATCH 085/184] adding composite --- R/CST_RegimesAssign.R | 57 +++++++++++++++++++++++++ tests/testthat/test-CST_RegimesAssign.R | 8 ++-- 2 files changed, 60 insertions(+), 5 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 085fb1dd..4dd77132 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -284,5 +284,62 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = } +Composite <- function(var, occ, lag = 0, eno = FALSE, K = NULL, fileout = NULL) { + + if ( dim(var)[3] != length(occ) ) { + stop("Temporal dimension of var is not equal to length of occ.") + } + if (is.null(K)) { + K <- max(occ) + } + composite <- array(dim = c(dim(var)[1:2], composite = K)) + tvalue <- array(dim = dim(var)[1:2]) + dof <- array(dim = dim(var)[1:2]) + pvalue <- array(dim = c(dim(var)[1:2], composite = K)) + + if (eno == TRUE) { + n_tot <- Eno(var, posdim = 3) + } else { + n_tot <- length(occ) + } + mean_tot <- Mean1Dim(var, posdim = 3, narm = TRUE) + stdv_tot <- apply(var, c(1, 2), sd, na.rm = TRUE) + + for (k in 1 : K) { + if (length(which(occ == k)) >= 1) { + indices <- which(occ == k) + lag + toberemoved <- which(0 > indices | indices > dim(var)[3]) + + if (length(toberemoved) > 0) { + indices <- indices[-toberemoved] + } + if (eno == TRUE) { + n_k <- Eno(var[, , indices], posdim = 3) + } else { + n_k <- length(indices) + } + if (length(indices) == 1) { + composite[, , k] <- var[, , indices] + warning(paste("Composite", k, "has length 1 and pvalue is NA.")) + } else { + composite[, , k] <- Mean1Dim(var[, , indices], posdim = 3, narm = TRUE) + } + stdv_k <- apply(var[, , indices], c(1, 2), sd, na.rm = TRUE) + + tvalue <- (mean_tot - composite[, , k]) / + sqrt(stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) + dof <- (stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) ^ 2 / + ((stdv_tot ^ 2 / n_tot) ^ 2 / (n_tot - 1) + + (stdv_k ^ 2 / n_k) ^ 2 / (n_k - 1)) + pvalue[, , k] <- 2 * pt(-abs(tvalue), df = dof) + } + } + if (is.null(fileout) == FALSE) { + output <- list(composite = composite, pvalue = pvalue) + save(output, file = paste(fileout, '.sav', sep = '')) + } + + invisible(list(composite = composite, pvalue = pvalue)) +} diff --git a/tests/testthat/test-CST_RegimesAssign.R b/tests/testthat/test-CST_RegimesAssign.R index 92c63a80..c9b4802a 100644 --- a/tests/testthat/test-CST_RegimesAssign.R +++ b/tests/testthat/test-CST_RegimesAssign.R @@ -1,4 +1,3 @@ - context("Generic tests") test_that("Sanity checks", { expect_error( @@ -55,10 +54,9 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat=1:5) class(data1) <- 's2dv_cube' - expect_error( - CST_RegimesAssign(data = data1,ref_maps = regimes), - " Parameter 'lat' does not match with the dimension 'lat' in the - parameter 'data' or in the parameter 'ref_maps'.") + #expect_error( + # CST_RegimesAssign(data = data1,ref_maps = regimes), + # " Parameter 'lat' does not match with the dimension 'lat' in the parameter 'data' or in the parameter 'ref_maps'.") data1 <- 1: 20 -- GitLab From e98d1c3a4c1dc30b340204f7a19bd787d0b1166a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 11:47:11 +0200 Subject: [PATCH 086/184] changes in the tests --- tests/testthat/test-CST_RegimesAssign.R | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/testthat/test-CST_RegimesAssign.R b/tests/testthat/test-CST_RegimesAssign.R index c9b4802a..33f177f5 100644 --- a/tests/testthat/test-CST_RegimesAssign.R +++ b/tests/testthat/test-CST_RegimesAssign.R @@ -54,9 +54,10 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat=1:5) class(data1) <- 's2dv_cube' - #expect_error( - # CST_RegimesAssign(data = data1,ref_maps = regimes), - # " Parameter 'lat' does not match with the dimension 'lat' in the parameter 'data' or in the parameter 'ref_maps'.") + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), + " Parameter 'lat' does not match with the dimension 'lat' in the + parameter 'data' or in the parameter 'ref_maps'.") data1 <- 1: 20 -- GitLab From 4f1e4a188b96aef86870cdfa159e3c3ebc4b5f52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 12:32:55 +0200 Subject: [PATCH 087/184] quotation marks in .WeatherRegime --- R/CST_WeatherRegimes.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 9cc7f9c8..016e0186 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -151,7 +151,7 @@ WeatherRegime <- function(data, ncenters = NULL, output <- Apply(data = list(data), target_dims = c('time','lat','lon'), - fun = ".WeatherRegime", + fun = .WeatherRegime, EOFS = EOFS, neofs = neofs, varThreshold = varThreshold, lon = lon, lat = lat, -- GitLab From 4fa6dfd56296cd35a82e493b1617cc83ff512dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 12:50:01 +0200 Subject: [PATCH 088/184] adding climprojdiags --- R/CST_RegimesAssign.R | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 4dd77132..52bd3720 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -26,6 +26,7 @@ #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #'@import s2dverification #'@import multiApply +#'@import ClimProjDiags #'@examples #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data #'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') @@ -92,7 +93,8 @@ CST_RegimesAssign <- function(data, ref_maps, #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #' #'@import s2dverification -#'@import multiApply +#'@import multiApply +#'@import ClimProjDiags #'@examples #'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite #'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -- GitLab From 02a2253d0dfdfb8f57eee01f51b45bb13d16c329 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 12:56:35 +0200 Subject: [PATCH 089/184] climprojdiags again --- R/CST_RegimesAssign.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 52bd3720..0f8bb686 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -26,7 +26,7 @@ #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #'@import s2dverification #'@import multiApply -#'@import ClimProjDiags +#'@importFrom ClimProjDiags Subset #'@examples #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data #'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') @@ -94,7 +94,7 @@ CST_RegimesAssign <- function(data, ref_maps, #' #'@import s2dverification #'@import multiApply -#'@import ClimProjDiags +#'@importFrom ClimProjDiags Subset #'@examples #'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite #'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -- GitLab From e8393f05922595ae95995d1c037b07f84ceb5f15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:09:00 +0200 Subject: [PATCH 090/184] changes in the import --- NAMESPACE | 1 + man/CST_BEI_Weighting.Rd | 1 + 2 files changed, 2 insertions(+) diff --git a/NAMESPACE b/NAMESPACE index e2418d7c..a7fed60c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -45,6 +45,7 @@ import(rainfarmr) import(s2dverification) import(stats) importFrom(ClimProjDiags,SelBox) +importFrom(ClimProjDiags,Subset) importFrom(data.table,CJ) importFrom(data.table,data.table) importFrom(data.table,setkey) diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index 238a3e1c..d6f65bb5 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -7,6 +7,7 @@ CST_BEI_Weighting( var_exp, aweights, + terciles = NULL, type = "ensembleMean", time_dim_name = "time" ) -- GitLab From 9b51054efdbd565ee348ce04bb6d8656c1a5db68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:18:02 +0200 Subject: [PATCH 091/184] removing subset --- R/CST_RegimesAssign.R | 5 ++--- man/CST_RegimesAssign.Rd | 5 ++--- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 0f8bb686..c7f325a8 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -29,9 +29,8 @@ #'@importFrom ClimProjDiags Subset #'@examples #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -#'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=FALSE) -#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=TRUE) +#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) +#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) #'@export #' diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index e90c6bc7..2f47b2f6 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -38,9 +38,8 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat } \examples{ regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=FALSE) -res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = maps_ref,composite=TRUE) +res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) +res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -- GitLab From 23e804fc285534049276cbde0e02b18627277f4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:24:01 +0200 Subject: [PATCH 092/184] quotation marks --- R/CST_RegimesAssign.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index c7f325a8..48d4a315 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -154,7 +154,7 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = index <- Apply( data = list(target = data), target_dims = c('lat','lon'), - fun = '.RegimesAssign', + fun = .RegimesAssign, ref = ref_maps, lat = lat, method = method, ncores=ncores)[[1]] -- GitLab From a5c9f5ca3b923e7883737ebd541e4070eddfd296 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:30:23 +0200 Subject: [PATCH 093/184] remove subset --- R/CST_RegimesAssign.R | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 48d4a315..7af20f15 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -96,8 +96,7 @@ CST_RegimesAssign <- function(data, ref_maps, #'@importFrom ClimProjDiags Subset #'@examples #'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite -#'maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -#'res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = maps_ref, +#'res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), #'lat=lonlat_data$exp$lat,composite=FALSE) #'@export -- GitLab From 6c4c5198c2365ce32c6fc8c789891423937dd028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:31:34 +0200 Subject: [PATCH 094/184] change in the documentation --- man/RegimesAssign.Rd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index 4f056399..dded79fd 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -43,8 +43,7 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat } \examples{ regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite -maps_ref <- Subset(regimes, along=c('dataset','member'), indices=list(1,1),drop='selected') -res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = maps_ref, +res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), lat=lonlat_data$exp$lat,composite=FALSE) } \references{ -- GitLab From 8a1800b60ef89102e82f1b5af0748384d86209b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 13:48:28 +0200 Subject: [PATCH 095/184] changes in the tests of CST_WeatherRegimes.R --- tests/testthat/test-CST_WeatherRegimes.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R index 8ccdb2d4..33e75e24 100644 --- a/tests/testthat/test-CST_WeatherRegimes.R +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -42,7 +42,7 @@ test_that("Sanity checks", { expect_equal( names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS= FALSE)$data)), - c('lon', 'lat', 'cluster')) + c('lat', 'lon', 'cluster')) data1 <- 1 : 400 dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) @@ -56,7 +56,7 @@ test_that("Sanity checks", { EOFS = FALSE)$statistics$frequency),c(2, nclusters)) expect_equal( names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFS= FALSE)$data)), - c('lon', 'lat', 'cluster')) + c('lat', 'lon', 'cluster')) data1 <- 1 : 400 dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) @@ -73,7 +73,7 @@ test_that("Sanity checks", { expect_equal( names(dim(CST_WeatherRegimes(data = data1, ncenters=4)$data)), - c('lon', 'lat', 'cluster')) + c('lat', 'lon', 'cluster')) data1 <- 1 : 400 dim(data1) <- c(time = 20, lat = 5, lon=4) @@ -94,7 +94,7 @@ test_that("Sanity checks", { TRUE) expect_equal( names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), - c('lon', 'lat', 'cluster')) + c('lat', 'lon', 'cluster')) }) -- GitLab From f347eab97279874df7a109e5b8d2b03baf87cc23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 18:38:44 +0200 Subject: [PATCH 096/184] updating CST_WeatherRegimes documentation --- R/1 | 295 +++++++++++++++++++++++++++++++++++++++++ R/CST_WeatherRegimes.R | 27 ++-- 2 files changed, 307 insertions(+), 15 deletions(-) create mode 100644 R/1 diff --git a/R/1 b/R/1 new file mode 100644 index 00000000..961a268a --- /dev/null +++ b/R/1 @@ -0,0 +1,295 @@ +#' @rdname CST_WeatherRegimes +#' @title Function for Calculating the Cluster analysis +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function computes the weather regimes from a cluster analysis. +#'It is applied on the array \code{data} in a 's2dv_cube' object. The dimensionality of this object can be also reduced +#'by using PCs obtained from the application of the #'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods +#'included in the hclust (stats package). +#' +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data a 's2dv_cube' object +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. +#'@param neofs number of modes to be kept (default = 30). +#'@param varThreshold Value with the percentage of variance to be explained by the PCs. +#' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#' For more details about these methods see the hclust function documentation included in the stats package. +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param ncores The number of multicore threads to use for parallel computation. +#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes +#' \code{$pvalue} (array with the same stru containing the pvalue of the composites obtained through a t-test that accounts for the serial), +#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#'@import s2dverification +#'@import multiApply +#'@examples +#'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +#'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) +#'@export +#' +CST_WeatherRegimes <- function(data, ncenters = NULL, + EOFS = TRUE,neofs = 30, + varThreshold = NULL, + method = "kmeans", + iter.max=100, nstart = 30, + ncores = NULL) { + if (!inherits(data, 's2dv_cube')) { + stop("Parameter 'data' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + if ('lon' %in% names(data)){ + lon <- data$lon + }else { + lon <- NULL + } + result <- WeatherRegime(data$data,ncenters = ncenters, + EOFS = EOFS, neofs = neofs, + varThreshold = varThreshold, lon = lon, + lat = data$lat, method = method, + iter.max=iter.max, nstart = nstart, + ncores = ncores) + data$data <- result$composite + data$statistics <- result[-1] + return(data) +} + +#' @rdname WeatherRegimes +#' @title Function for Calculating the Cluster analysis +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function computes the weather regimes from a cluster analysis. +#'It can be applied over the dataset with dimensions +#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the +#'EOFs analysis to filter the dataset. +#'The cluster analysis can be performed with the traditional k-means or those methods +#'included in the hclust (stats package). +#' +#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). +#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, +#' 4961–4976, doi:10.1007/s00382-019-04839-5. +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. +#'@param neofs number of modes to be kept only if EOFs = TRUE has been selected. (default = 30). +#'@param varThreshold Value with the percentage of variance to be explained by the PCs. +#' Only sufficient PCs to explain this much variance will be used in the clustering. +#'@param lon Vector of longitudes. +#'@param lat Vector of latitudes. +#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) +#'but the function also support the different methods included in the hclust . These methods are: +#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). +#' For more details about these methods see the hclust function documentation included in the stats package. +#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@return A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)), +#' \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial +# dependence of the data with the same structure as Composite.), +#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), +#'@import s2dverification +#'@import multiApply +#'@examples +#'res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) +#'@export + +WeatherRegime <- function(data, ncenters = NULL, + EOFS = TRUE,neofs = 30, + varThreshold = NULL, lon = NULL, + lat = NULL, method = "kmeans", + iter.max=100, nstart = 30, + ncores = NULL) { + + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with named dimensions.") + } + + if (is.null(lat)) { + stop("Parameter 'lat' must be specified.") + } + + dimData <- names(dim(data)) + + if ('sdate' %in% dimData && 'ftime' %in% dimData) { + nsdates <- dim(data)['sdate'] + nftimes <- dim(data)['ftime'] + data <- MergeDims(data, + merge_dims = c('ftime','sdate'), + rename_dim = 'time') + } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { + names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' + } else { + if (!('time' %in% dimData)) { + stop("Parameter 'data' must have temporal dimensions.") + } + } + + + output <- Apply(data = list(data), + target_dims = c('time','lat','lon'), + fun = .WeatherRegime, + EOFS = EOFS, neofs = neofs, + varThreshold = varThreshold, + lon = lon, lat = lat, + ncenters = ncenters, + method = method, + ncores = ncores) + + if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { + # The frequency and the persistency are computed as they are useful + # parameters in the cluster analysis + extra_output <- Apply(data = output$cluster, + target_dims = 'time', + fun = .freqPer, + nsdates = nsdates, + nftimes = nftimes , + ncenters = ncenters) + + output <- list(composite=output$composite, + pvalue=output$pvalue, + cluster=output$cluster, + frequency=extra_output$frequency, + persistence=extra_output$persistence) + } + return(output) +} + +.WeatherRegime <- function(data, ncenters = NULL, EOFS = TRUE,neofs = 30, + varThreshold = NULL, lon = NULL, + lat = NULL, method = "kmeans", + iter.max=100, nstart = 30) { + + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with 'time', 'lat' and 'lon' dimensions.") + } + + if (!is.null(lat) && dim(data)['lat'] != length(lat)) { + stop("The length of the paramter 'lat' does not match with the ['lat'] dimension of + the parameter 'data'.") + } + if (is.null(ncenters)) { + stop("Parameter 'ncenters' must be specified.") + } + if (EOFS == TRUE && is.null(lon)) { + stop("Parameter 'lon' must be specified.") + } + if (is.null(lat)) { + stop("Parameter 'lat' must be specified.") + } + + nlon <- dim(data)['lat'] + nlat <- dim(data)['lon'] + + if (any(is.na(data))){ + nas_test <- MergeDims(data, merge_dims = c('lat','lon'), + rename_dim = 'space',na.rm = TRUE) + if (dim(nas_test)['space']== c(nlat*nlon)){ + stop("Parameter 'data' contains NAs in the 'time' dimensions.") + } + } + + if (EOFS == TRUE) { + if (is.null(varThreshold)) { + dataPC <- EOF(data, + lat = as.vector(lat), + lon = as.vector(lon), + neofs = neofs) + cluster_input <- dataPC$PC + } else { + dataPC <- EOF(data, + lat = as.vector(lat), + lon = as.vector(lon), + neofs = neofs) + minPC <- + head(as.numeric(which(cumsum(dataPC$var) > varThreshold)), 1) + cluster_input <- dataPC$PC[, 1:minPC] + } + } else { + + dataW <- aperm(Apply(data, target_dims = 'lat', + function (x, la) { + x * cos(la * pi / 180)}, + la = lat)[[1]], c(2, 1, 3)) + + cluster_input <- MergeDims(dataW, merge_dims = c('lat','lon'), + rename_dim = 'space',na.rm = TRUE) + + } + + if (method == "kmeans") { + + clust <- kmeans( + cluster_input, + centers = ncenters, + iter.max = iter.max, + nstart = nstart, + trace = FALSE) + + result <- array(0, c(ncenters, nlat, nlon)) + # the order of the data dimensions is changed ('lat','lon','time') + result <- Composite(aperm(data,c(2, 3, 1)), clust$cluster) + + } else { + result <- hclust(dist(cluster_input), method = method) + clusterCut <- cutree(result, ncenters) + result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) + } + result <- lapply(1:length(result), + function (n) { + names(dim(result[[n]])) <- c("lat", "lon", "cluster") + return (result[[n]]) + }) + + names(result) <- c('composite','pvalue') + + if (method == "kmeans") { + clust <- as.array(clust$cluster) + names(dim(clust)) <- 'time' + return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = clust)) + } else { + clust <- as.array(clusterCut) + names(dim(clust)) <- 'time' + return(list( + composite = result$composite, + pvalue = result$pvalue, + cluster = clust)) + } +} + +.freqPer<- function (clust, nsdates, nftimes, ncenters){ + frequency <- persistence <- matrix(NA, nsdates, ncenters) + x <- as.vector(clust) + for (i in 1:nsdates) { + occurences <-rle(x[((i * nftimes) + 1 - nftimes):(i * nftimes)]) + for (j in 1:ncenters) { + frequency[i, j] <-(sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 + persistence[i, j] <- mean(occurences$lengths[occurences$values == j]) + } + } + return(list(frequency = frequency, + persistence = persistence)) +} diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 016e0186..961a268a 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -16,26 +16,24 @@ #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data a 's2dv_cube' object - -#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. #'@param neofs number of modes to be kept (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. #'@param lon Vector of longitudes. #'@param lat Vector of latitudes. -#'@param ncenters Number of clusters to be calculated with the clustering function. #'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) #'but the function also support the different methods included in the hclust . These methods are: #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param ncores The number of multicore threads to use for parallel computation. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial -# dependence of the data with the same structure as Composite.), -#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes +#' \code{$pvalue} (array with the same stru containing the pvalue of the composites obtained through a t-test that accounts for the serial), +#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), #' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), #' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), #'@import s2dverification @@ -90,23 +88,22 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. -#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data. +#'@param ncenters Number of clusters to be calculated with the clustering function. +#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. #'@param neofs number of modes to be kept only if EOFs = TRUE has been selected. (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. #'@param lon Vector of longitudes. #'@param lat Vector of latitudes. -#'@param ncenters Number of clusters to be calculated with the clustering function. #'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) #'but the function also support the different methods included in the hclust . These methods are: #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@return A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +#' \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial # dependence of the data with the same structure as Composite.), #' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), #' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -- GitLab From 8922b13b5aa62a53dd2a97413ba50499c6cf0de8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 19:02:21 +0200 Subject: [PATCH 097/184] updating CST_RegimesAssign.R --- R/CST_RegimesAssign.R | 34 +++++++++++++++++----------------- R/CST_WeatherRegimes.R | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 7af20f15..bf0811c2 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -14,15 +14,16 @@ #' #'@param data a 's2dv_cube' object -#'@param ref_maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. -#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or +#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. +#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param ncores The number of multicore threads to use for parallel computation. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test -#' that accounts for the serial dependence of the data with the same structure as Composite.), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param ncores the number of multicore threads to use for parallel computation. +#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)) (only when composite = 'TRUE') and \code{$statistics} that includes +#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #'@import s2dverification #'@import multiApply @@ -78,17 +79,16 @@ CST_RegimesAssign <- function(data, ref_maps, #'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param ref_maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. -#'@param lat Vector of latitudes. -#'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or +#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. +#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. -#' @param composite a logical indicating if the composite maps are computed or not. -#'@param ncores The number of multicore threads to use for parallel computation. +#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param ncores the number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test -#' that accounts for the serial dependence of the data with the same structure as Composite.), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +# or only k=1 for any specific cluster, i.e., case (*2)) (only if composite='TRUE'), +#' \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #' #'@import s2dverification diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 961a268a..05785ffe 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -32,7 +32,7 @@ #'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes -#' \code{$pvalue} (array with the same stru containing the pvalue of the composites obtained through a t-test that accounts for the serial), +#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial), #' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), #' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), #' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -- GitLab From 022cce6af896bad8ac90bca498e3350efb2d2d56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 27 May 2020 19:03:52 +0200 Subject: [PATCH 098/184] changes in the documentation --- man/CST_RegimesAssign.Rd | 16 +++++++++------- man/CST_WeatherRegimes.Rd | 8 ++++---- man/RegimesAssign.Rd | 16 +++++++--------- man/WeatherRegimes.Rd | 8 +++----- 4 files changed, 23 insertions(+), 25 deletions(-) diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 2f47b2f6..cd897509 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -16,18 +16,20 @@ CST_RegimesAssign( \arguments{ \item{data}{a 's2dv_cube' object} -\item{ref_maps}{Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} +\item{ref_maps}{array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching.} -\item{method}{Whether the matching will be performed in terms of minimum distance (default=’distance’) or +\item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} -\item{ncores}{The number of multicore threads to use for parallel computation.} +\item{composite}{a logical indicating if the composite maps are computed or not (default=FALSE).} + +\item{ncores}{the number of multicore threads to use for parallel computation.} } \value{ -A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) - \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test - that accounts for the serial dependence of the data with the same structure as Composite.), - \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , +A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) + \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test + that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), + \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), } \description{ diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd index 7a06c0fd..c5975537 100644 --- a/man/CST_WeatherRegimes.Rd +++ b/man/CST_WeatherRegimes.Rd @@ -35,7 +35,7 @@ For more details about these methods see the hclust function documentation inclu \item{ncores}{The number of multicore threads to use for parallel computation.} -\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data.} +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} \item{lon}{Vector of longitudes.} @@ -44,9 +44,9 @@ For more details about these methods see the hclust function documentation inclu \item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} } \value{ -A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) - \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial - \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), +A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) + \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial), + \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), } diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index dded79fd..3c4360fa 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -17,22 +17,20 @@ RegimesAssign( \arguments{ \item{data}{an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon.} -\item{ref_maps}{Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} +\item{ref_maps}{array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching.} -\item{lat}{Vector of latitudes.} - -\item{method}{Whether the matching will be performed in terms of minimum distance (default=’distance’) or +\item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} -\item{composite}{a logical indicating if the composite maps are computed or not.} +\item{composite}{a logical indicating if the composite maps are computed or not (default=FALSE).} -\item{ncores}{The number of multicore threads to use for parallel computation.} +\item{ncores}{the number of multicore threads to use for parallel computation.} } \value{ A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) - \code{$pvalue} (3-d array (lon,lat, k) containing the pvalue of the composites obtained through a t-test - that accounts for the serial dependence of the data with the same structure as Composite.), - \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the regime.maps to which each point is allocated.) , + \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test + that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), + \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), } \description{ diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd index 887f202a..4b0863c1 100644 --- a/man/WeatherRegimes.Rd +++ b/man/WeatherRegimes.Rd @@ -39,15 +39,13 @@ For more details about these methods see the hclust function documentation inclu \item{iter.max}{Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected).} -\item{ncores}{The number of multicore threads to use for parallel computation.} - -\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) over data.} +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} \item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} } \value{ -A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) - \code{pvalue} (3-d array (lon, lat, k) containing the pvalue of the composites obtained through a t-test that accounts for the serial +A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) + \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -- GitLab From d81d93476ae633d5c6390d20a3189bbc8fd86af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 11:58:59 +0200 Subject: [PATCH 099/184] removing 1 file --- R/1 | 295 ------------------------------------------------------------ 1 file changed, 295 deletions(-) delete mode 100644 R/1 diff --git a/R/1 b/R/1 deleted file mode 100644 index 961a268a..00000000 --- a/R/1 +++ /dev/null @@ -1,295 +0,0 @@ -#' @rdname CST_WeatherRegimes -#' @title Function for Calculating the Cluster analysis -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function computes the weather regimes from a cluster analysis. -#'It is applied on the array \code{data} in a 's2dv_cube' object. The dimensionality of this object can be also reduced -#'by using PCs obtained from the application of the #'EOFs analysis to filter the dataset. -#'The cluster analysis can be performed with the traditional k-means or those methods -#'included in the hclust (stats package). -#' -#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). -#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, -#' 4961–4976, doi:10.1007/s00382-019-04839-5. -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data a 's2dv_cube' object -#'@param ncenters Number of clusters to be calculated with the clustering function. -#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. -#'@param neofs number of modes to be kept (default = 30). -#'@param varThreshold Value with the percentage of variance to be explained by the PCs. -#' Only sufficient PCs to explain this much variance will be used in the clustering. -#'@param lon Vector of longitudes. -#'@param lat Vector of latitudes. -#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) -#'but the function also support the different methods included in the hclust . These methods are: -#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). -#' For more details about these methods see the hclust function documentation included in the stats package. -#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). -#'@param ncores The number of multicore threads to use for parallel computation. -#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes -#' \code{$pvalue} (array with the same stru containing the pvalue of the composites obtained through a t-test that accounts for the serial), -#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -#'@import s2dverification -#'@import multiApply -#'@examples -#'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) -#'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) -#'@export -#' -CST_WeatherRegimes <- function(data, ncenters = NULL, - EOFS = TRUE,neofs = 30, - varThreshold = NULL, - method = "kmeans", - iter.max=100, nstart = 30, - ncores = NULL) { - if (!inherits(data, 's2dv_cube')) { - stop("Parameter 'data' must be of the class 's2dv_cube', ", - "as output by CSTools::CST_Load.") - } - if ('lon' %in% names(data)){ - lon <- data$lon - }else { - lon <- NULL - } - result <- WeatherRegime(data$data,ncenters = ncenters, - EOFS = EOFS, neofs = neofs, - varThreshold = varThreshold, lon = lon, - lat = data$lat, method = method, - iter.max=iter.max, nstart = nstart, - ncores = ncores) - data$data <- result$composite - data$statistics <- result[-1] - return(data) -} - -#' @rdname WeatherRegimes -#' @title Function for Calculating the Cluster analysis -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function computes the weather regimes from a cluster analysis. -#'It can be applied over the dataset with dimensions -#'c(year/month, month/day, lon, lat), or by using PCs obtained from the application of the -#'EOFs analysis to filter the dataset. -#'The cluster analysis can be performed with the traditional k-means or those methods -#'included in the hclust (stats package). -#' -#'@references Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). -#' Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, -#' 4961–4976, doi:10.1007/s00382-019-04839-5. -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'. -#'@param ncenters Number of clusters to be calculated with the clustering function. -#'@param EOFs Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data. -#'@param neofs number of modes to be kept only if EOFs = TRUE has been selected. (default = 30). -#'@param varThreshold Value with the percentage of variance to be explained by the PCs. -#' Only sufficient PCs to explain this much variance will be used in the clustering. -#'@param lon Vector of longitudes. -#'@param lat Vector of latitudes. -#'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) -#'but the function also support the different methods included in the hclust . These methods are: -#'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). -#' For more details about these methods see the hclust function documentation included in the stats package. -#'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). -#'@return A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)), -#' \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial -# dependence of the data with the same structure as Composite.), -#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), -#' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), -#'@import s2dverification -#'@import multiApply -#'@examples -#'res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) -#'@export - -WeatherRegime <- function(data, ncenters = NULL, - EOFS = TRUE,neofs = 30, - varThreshold = NULL, lon = NULL, - lat = NULL, method = "kmeans", - iter.max=100, nstart = 30, - ncores = NULL) { - - if (is.null(names(dim(data)))) { - stop("Parameter 'data' must be an array with named dimensions.") - } - - if (is.null(lat)) { - stop("Parameter 'lat' must be specified.") - } - - dimData <- names(dim(data)) - - if ('sdate' %in% dimData && 'ftime' %in% dimData) { - nsdates <- dim(data)['sdate'] - nftimes <- dim(data)['ftime'] - data <- MergeDims(data, - merge_dims = c('ftime','sdate'), - rename_dim = 'time') - } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { - names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' - } else { - if (!('time' %in% dimData)) { - stop("Parameter 'data' must have temporal dimensions.") - } - } - - - output <- Apply(data = list(data), - target_dims = c('time','lat','lon'), - fun = .WeatherRegime, - EOFS = EOFS, neofs = neofs, - varThreshold = varThreshold, - lon = lon, lat = lat, - ncenters = ncenters, - method = method, - ncores = ncores) - - if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { - # The frequency and the persistency are computed as they are useful - # parameters in the cluster analysis - extra_output <- Apply(data = output$cluster, - target_dims = 'time', - fun = .freqPer, - nsdates = nsdates, - nftimes = nftimes , - ncenters = ncenters) - - output <- list(composite=output$composite, - pvalue=output$pvalue, - cluster=output$cluster, - frequency=extra_output$frequency, - persistence=extra_output$persistence) - } - return(output) -} - -.WeatherRegime <- function(data, ncenters = NULL, EOFS = TRUE,neofs = 30, - varThreshold = NULL, lon = NULL, - lat = NULL, method = "kmeans", - iter.max=100, nstart = 30) { - - if (is.null(names(dim(data)))) { - stop("Parameter 'data' must be an array with 'time', 'lat' and 'lon' dimensions.") - } - - if (!is.null(lat) && dim(data)['lat'] != length(lat)) { - stop("The length of the paramter 'lat' does not match with the ['lat'] dimension of - the parameter 'data'.") - } - if (is.null(ncenters)) { - stop("Parameter 'ncenters' must be specified.") - } - if (EOFS == TRUE && is.null(lon)) { - stop("Parameter 'lon' must be specified.") - } - if (is.null(lat)) { - stop("Parameter 'lat' must be specified.") - } - - nlon <- dim(data)['lat'] - nlat <- dim(data)['lon'] - - if (any(is.na(data))){ - nas_test <- MergeDims(data, merge_dims = c('lat','lon'), - rename_dim = 'space',na.rm = TRUE) - if (dim(nas_test)['space']== c(nlat*nlon)){ - stop("Parameter 'data' contains NAs in the 'time' dimensions.") - } - } - - if (EOFS == TRUE) { - if (is.null(varThreshold)) { - dataPC <- EOF(data, - lat = as.vector(lat), - lon = as.vector(lon), - neofs = neofs) - cluster_input <- dataPC$PC - } else { - dataPC <- EOF(data, - lat = as.vector(lat), - lon = as.vector(lon), - neofs = neofs) - minPC <- - head(as.numeric(which(cumsum(dataPC$var) > varThreshold)), 1) - cluster_input <- dataPC$PC[, 1:minPC] - } - } else { - - dataW <- aperm(Apply(data, target_dims = 'lat', - function (x, la) { - x * cos(la * pi / 180)}, - la = lat)[[1]], c(2, 1, 3)) - - cluster_input <- MergeDims(dataW, merge_dims = c('lat','lon'), - rename_dim = 'space',na.rm = TRUE) - - } - - if (method == "kmeans") { - - clust <- kmeans( - cluster_input, - centers = ncenters, - iter.max = iter.max, - nstart = nstart, - trace = FALSE) - - result <- array(0, c(ncenters, nlat, nlon)) - # the order of the data dimensions is changed ('lat','lon','time') - result <- Composite(aperm(data,c(2, 3, 1)), clust$cluster) - - } else { - result <- hclust(dist(cluster_input), method = method) - clusterCut <- cutree(result, ncenters) - result <- Composite(aperm(data, c(2, 3, 1)), clusterCut) - } - result <- lapply(1:length(result), - function (n) { - names(dim(result[[n]])) <- c("lat", "lon", "cluster") - return (result[[n]]) - }) - - names(result) <- c('composite','pvalue') - - if (method == "kmeans") { - clust <- as.array(clust$cluster) - names(dim(clust)) <- 'time' - return(list( - composite = result$composite, - pvalue = result$pvalue, - cluster = clust)) - } else { - clust <- as.array(clusterCut) - names(dim(clust)) <- 'time' - return(list( - composite = result$composite, - pvalue = result$pvalue, - cluster = clust)) - } -} - -.freqPer<- function (clust, nsdates, nftimes, ncenters){ - frequency <- persistence <- matrix(NA, nsdates, ncenters) - x <- as.vector(clust) - for (i in 1:nsdates) { - occurences <-rle(x[((i * nftimes) + 1 - nftimes):(i * nftimes)]) - for (j in 1:ncenters) { - frequency[i, j] <-(sum(occurences$lengths[occurences$values == j]) / nftimes) * 100 - persistence[i, j] <- mean(occurences$lengths[occurences$values == j]) - } - } - return(list(frequency = frequency, - persistence = persistence)) -} -- GitLab From 1f715b5284d9e9afc9b8418c13ad343cb21e1554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 12:25:00 +0200 Subject: [PATCH 100/184] changing the ref_maps input to s2dv_cube --- R/CST_RegimesAssign.R | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index bf0811c2..816ef052 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -43,16 +43,20 @@ CST_RegimesAssign <- function(data, ref_maps, stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } - if (is.null(ref_maps)) { - stop("Parameter 'ref_maps' must be specified.") + + if (!inherits(ref_maps, 's2dv_cube')) { + stop("Parameter 'ref_maps' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") } + if ('lat' %in% names(data)){ lat <- data$lat }else { lat <- NULL } - result <- RegimesAssign(data$data, ref_maps, lat= lat, - method = "distance", composite = composite) + result <- Apply(data=list(data=data$data, ref_maps=ref_maps$data), lat= lat, fun=RegimesAssign, + target_dims=list(names(dim(data$data)),c('lat','lon','cluster')), + method = method, composite = composite, ncores=ncores) if (composite){ data$data <- result$composite -- GitLab From a3ea39740379a7621e01ce5e4f6d09ff40c98c47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 12:32:31 +0200 Subject: [PATCH 101/184] updating documentation --- R/1 | 349 +++++++++++++++++++++++++++++++++++++++ R/CST_RegimesAssign.R | 8 +- man/CST_RegimesAssign.Rd | 8 +- 3 files changed, 357 insertions(+), 8 deletions(-) create mode 100644 R/1 diff --git a/R/1 b/R/1 new file mode 100644 index 00000000..12b5aa08 --- /dev/null +++ b/R/1 @@ -0,0 +1,349 @@ +#' @rdname CST_RegimesAssign +#' @title Function for matching a field of anomalies with +#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function) +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function performs the matching between a field of anomalies and a set +#' of maps which will be used as a reference. The anomalies will be assigned to the reference map +#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +#' (method=‘ACC’) is obtained. +#' +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools +#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data a 's2dv_cube' object. + +#'@param ref_maps a 's2dv_cube' object as the output of CST_WeatherRegimes. +#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or +#' the maximum spatial correlation (method=’ACC’) between the maps. +#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param ncores the number of multicore threads to use for parallel computation. +#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)) (only when composite = 'TRUE') and \code{$statistics} that includes +#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , +#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#'@import s2dverification +#'@import multiApply +#'@importFrom ClimProjDiags Subset +#'@examples +#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data +#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) +#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) +#'@export +#' + +CST_RegimesAssign <- function(data, ref_maps, + method = "distance", + composite = FALSE, + ncores=NULL) { + if (!inherits(data, 's2dv_cube')) { + stop("Parameter 'data' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + + if (!inherits(ref_maps, 's2dv_cube')) { + stop("Parameter 'ref_maps' must be of the class 's2dv_cube', ", + "as output by CSTools::CST_Load.") + } + + if ('lat' %in% names(data)){ + lat <- data$lat + }else { + lat <- NULL + } + result <- Apply(data=list(data=data$data, ref_maps=ref_maps$data), lat= lat, fun=RegimesAssign, + target_dims=list(names(dim(data$data)),c('lat','lon','cluster')), + method = method, composite = composite, ncores=ncores) + + if (composite){ + data$data <- result$composite + data$statistics <- result[-1] + }else{ + data <- NULL + data$statistics <- result + } + + return(data) +} + +#' @rdname RegimesAssign +#' @title Function for matching a field of anomalies with +#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function). +#' +#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +#' +#' @description This function performs the matching between a field of anomalies and a set +#' of maps which will be used as a reference. The anomalies will be assigned to the reference map +#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation +#' (method=‘ACC’) is obtained. +#' +#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +#' +#'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. +#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. +#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or +#' the maximum spatial correlation (method=’ACC’) between the maps. +#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param ncores the number of multicore threads to use for parallel computation. +#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) +# or only k=1 for any specific cluster, i.e., case (*2)) (only if composite='TRUE'), +#' \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test +#' that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), +#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , +#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#' +#'@import s2dverification +#'@import multiApply +#'@importFrom ClimProjDiags Subset +#'@examples +#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite +#'res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), +#'lat=lonlat_data$exp$lat,composite=FALSE) +#'@export + +RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, ncores=NULL) { + + if (is.null(names(dim(data)))) { + stop("Parameter 'data' must be an array with named dimensions.") + } + if (is.null(ref_maps)) { + stop("Parameter 'ref_maps' must be specified.") + } + + if (is.null(lat)) { + stop("Parameter 'lat' must be specified.") + } + + if (is.null(names(dim(ref_maps)))) { + stop("Parameter 'ref_maps' must be an array with named dimensions.") + } + + dimData <- names(dim(data)) + + if (!all( c('lat', 'lon') %in% dimData)) { + stop("Parameter 'data' must contain the named dimensions 'lat' and 'lon'.") + } + + dimRef <- names(dim(ref_maps)) + + if (!all( c('cluster', 'lat', 'lon') %in% dimRef)) { + stop("Parameter 'ref_maps' must contain the named dimensions + 'cluster','lat' and 'lon'.") + } + + + if (length(lat) != dim(data)['lat'] | (length(lat) != dim(ref_maps)['lat']) ) { + stop(" Parameter 'lat' does not match with the dimension 'lat' in the + parameter 'data' or in the parameter 'ref_maps'.") + } + + + if ('sdate' %in% dimData && 'ftime' %in% dimData) { + nsdates <- dim(data)['sdate'] + nftimes <- dim(data)['ftime'] + data <- MergeDims(data, + merge_dims = c('ftime','sdate'), + rename_dim = 'time') + } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { + names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' + } else { + if (!('time' %in% dimData)) { + stop("Parameter 'data' must have temporal dimensions.") + } + } + + index <- Apply( data = list(target = data), + target_dims = c('lat','lon'), + fun = .RegimesAssign, + ref = ref_maps, + lat = lat, method = method, + ncores=ncores)[[1]] + + nclust <- dim(ref_maps)['cluster'] + freqs <- rep(NA, nclust) + for (n in 1:nclust) { + freqs[n] <- (length(which(index == n)) / length(index)) * 100 + } + + if (composite){ + poslon <- which(names(dim(data)) == 'lon') + poslat <- which(names(dim(data)) == 'lat') + postime <- which(names(dim(data)) == 'time') + posdim <- setdiff(1:length(dim(data)), c(postime, poslat, poslon)) + dataComp <- aperm(data, c(poslon, poslat, postime, posdim)) + + if (any(is.na(index))) { + recon <-list( + composite = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), + postime, dim(ref_maps)['composite.cluster']), + pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), + postime, dim(ref_maps)['composite.cluster'])) + } else { + recon <- + Apply(data = list(var = dataComp, occ = index), + target_dims = list(c('lon', 'lat', 'time'), c('time')), + fun = Composite, + K = dim(ref_maps)['cluster']) + } + + output <- list(composite = recon$composite, + pvalue = recon$pvalue, + cluster = index, + frequency = freqs) + } else{ + + output <- list(cluster = index, + frequency = freqs) + } + + return(output) +} + +.RegimesAssign <- function(ref, target, method = 'distance', lat, composite=FALSE) { + posdim <- which(names(dim(ref)) == 'cluster') + poslat <- which(names(dim(ref)) == 'lat') + poslon <- which(names(dim(ref)) == 'lon') + + nclust <- dim(ref)[posdim] + + if (all(dim(ref)[-posdim] != dim(target))) { + stop('The target should have the same dimensions [lat,lon] that + the reference ') + } + + if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { + stop( + 'The arrays should include dimensions names ref[cluster,lat,lon] + and target [lat,lon]' + ) + } + + + if (length(lat) != dim(ref)[poslat]) { + stop('latitudes do not match with the maps') + } + + if (is.na(max(target))){ + assign <- NA + + }else{ + + + # This dimensions are reorganized + ref <- aperm(ref, c(posdim, poslat, poslon)) + target <- + aperm(target, c(which(names(dim( + target + )) == 'lat'), which(names(dim( + target + )) == 'lon'))) + + # weights are defined + latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(ref)[3]) + + + rmsdiff <- function(x, y) { + dims <- dim(x) + ndims <- length(dims) + if (ndims != 2 | ndims != length(dim(y))) { + stop('x and y should be maps') + } + map_diff <- NA * x + for (i in 1:dims[1]) { + for (j in 1:dims[2]) { + map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 + } + } + rmsdiff <- sqrt(mean(map_diff)) + return(rmsdiff) + } + + if (method == 'ACC') { + corr <- rep(NA, nclust) + for (i in 1:nclust) { + corr[i] <- + ACC(InsertDim(InsertDim( + InsertDim(ref[i, , ] * latWeights, 1, 1), 2, 1 + ), 3, 1), + InsertDim(InsertDim( + InsertDim(target * latWeights, 1, 1), 2, 1 + ), 3, 1))$ACC[2] + } + assign <- which(corr == max(corr)) + } + + if (method == 'distance') { + rms <- rep(NA, nclust) + for (i in 1:nclust) { + rms[i] <- rmsdiff(ref[i, , ] * latWeights, target * latWeights) + } + assign <- which(rms == min(rms)) + } + } + + return(assign) +} + + +Composite <- function(var, occ, lag = 0, eno = FALSE, K = NULL, fileout = NULL) { + + if ( dim(var)[3] != length(occ) ) { + stop("Temporal dimension of var is not equal to length of occ.") + } + if (is.null(K)) { + K <- max(occ) + } + composite <- array(dim = c(dim(var)[1:2], composite = K)) + tvalue <- array(dim = dim(var)[1:2]) + dof <- array(dim = dim(var)[1:2]) + pvalue <- array(dim = c(dim(var)[1:2], composite = K)) + + if (eno == TRUE) { + n_tot <- Eno(var, posdim = 3) + } else { + n_tot <- length(occ) + } + mean_tot <- Mean1Dim(var, posdim = 3, narm = TRUE) + stdv_tot <- apply(var, c(1, 2), sd, na.rm = TRUE) + + for (k in 1 : K) { + if (length(which(occ == k)) >= 1) { + indices <- which(occ == k) + lag + toberemoved <- which(0 > indices | indices > dim(var)[3]) + + if (length(toberemoved) > 0) { + indices <- indices[-toberemoved] + } + if (eno == TRUE) { + n_k <- Eno(var[, , indices], posdim = 3) + } else { + n_k <- length(indices) + } + if (length(indices) == 1) { + composite[, , k] <- var[, , indices] + warning(paste("Composite", k, "has length 1 and pvalue is NA.")) + } else { + composite[, , k] <- Mean1Dim(var[, , indices], posdim = 3, narm = TRUE) + } + stdv_k <- apply(var[, , indices], c(1, 2), sd, na.rm = TRUE) + + tvalue <- (mean_tot - composite[, , k]) / + sqrt(stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) + dof <- (stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) ^ 2 / + ((stdv_tot ^ 2 / n_tot) ^ 2 / (n_tot - 1) + + (stdv_k ^ 2 / n_k) ^ 2 / (n_k - 1)) + pvalue[, , k] <- 2 * pt(-abs(tvalue), df = dof) + } + } + if (is.null(fileout) == FALSE) { + output <- list(composite = composite, pvalue = pvalue) + save(output, file = paste(fileout, '.sav', sep = '')) + } + + invisible(list(composite = composite, pvalue = pvalue)) +} + + diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 816ef052..12b5aa08 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -12,9 +12,9 @@ #'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools #' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' -#'@param data a 's2dv_cube' object +#'@param data a 's2dv_cube' object. -#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. +#'@param ref_maps a 's2dv_cube' object as the output of CST_WeatherRegimes. #'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. #'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). @@ -30,8 +30,8 @@ #'@importFrom ClimProjDiags Subset #'@examples #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) -#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) +#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) +#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) #'@export #' diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index cd897509..72d75bef 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -14,9 +14,9 @@ CST_RegimesAssign( ) } \arguments{ -\item{data}{a 's2dv_cube' object} +\item{data}{a 's2dv_cube' object.} -\item{ref_maps}{array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching.} +\item{ref_maps}{a 's2dv_cube' object as the output of CST_WeatherRegimes.} \item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} @@ -40,8 +40,8 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat } \examples{ regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) -res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) +res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) +res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -- GitLab From c97588926885cf0a0a00b9a0a19083272e0092f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 12:33:05 +0200 Subject: [PATCH 102/184] remove 1 --- R/1 | 349 ------------------------------------------------------------ 1 file changed, 349 deletions(-) delete mode 100644 R/1 diff --git a/R/1 b/R/1 deleted file mode 100644 index 12b5aa08..00000000 --- a/R/1 +++ /dev/null @@ -1,349 +0,0 @@ -#' @rdname CST_RegimesAssign -#' @title Function for matching a field of anomalies with -#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function) -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function performs the matching between a field of anomalies and a set -#' of maps which will be used as a reference. The anomalies will be assigned to the reference map -#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation -#' (method=‘ACC’) is obtained. -#' -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools -#' for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data a 's2dv_cube' object. - -#'@param ref_maps a 's2dv_cube' object as the output of CST_WeatherRegimes. -#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or -#' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). -#'@param ncores the number of multicore threads to use for parallel computation. -#'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)) (only when composite = 'TRUE') and \code{$statistics} that includes -#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test -#' that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , -#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), -#'@import s2dverification -#'@import multiApply -#'@importFrom ClimProjDiags Subset -#'@examples -#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) -#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) -#'@export -#' - -CST_RegimesAssign <- function(data, ref_maps, - method = "distance", - composite = FALSE, - ncores=NULL) { - if (!inherits(data, 's2dv_cube')) { - stop("Parameter 'data' must be of the class 's2dv_cube', ", - "as output by CSTools::CST_Load.") - } - - if (!inherits(ref_maps, 's2dv_cube')) { - stop("Parameter 'ref_maps' must be of the class 's2dv_cube', ", - "as output by CSTools::CST_Load.") - } - - if ('lat' %in% names(data)){ - lat <- data$lat - }else { - lat <- NULL - } - result <- Apply(data=list(data=data$data, ref_maps=ref_maps$data), lat= lat, fun=RegimesAssign, - target_dims=list(names(dim(data$data)),c('lat','lon','cluster')), - method = method, composite = composite, ncores=ncores) - - if (composite){ - data$data <- result$composite - data$statistics <- result[-1] - }else{ - data <- NULL - data$statistics <- result - } - - return(data) -} - -#' @rdname RegimesAssign -#' @title Function for matching a field of anomalies with -#' a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function). -#' -#' @author Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -#' -#' @description This function performs the matching between a field of anomalies and a set -#' of maps which will be used as a reference. The anomalies will be assigned to the reference map -#' for which the minimum Eucledian distance (method=’distance’) or highest spatial correlation -#' (method=‘ACC’) is obtained. -#' -#'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -#' -#'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. -#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or -#' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). -#'@param ncores the number of multicore threads to use for parallel computation. -#'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) -# or only k=1 for any specific cluster, i.e., case (*2)) (only if composite='TRUE'), -#' \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test -#' that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , -#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), -#' -#'@import s2dverification -#'@import multiApply -#'@importFrom ClimProjDiags Subset -#'@examples -#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite -#'res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), -#'lat=lonlat_data$exp$lat,composite=FALSE) -#'@export - -RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, ncores=NULL) { - - if (is.null(names(dim(data)))) { - stop("Parameter 'data' must be an array with named dimensions.") - } - if (is.null(ref_maps)) { - stop("Parameter 'ref_maps' must be specified.") - } - - if (is.null(lat)) { - stop("Parameter 'lat' must be specified.") - } - - if (is.null(names(dim(ref_maps)))) { - stop("Parameter 'ref_maps' must be an array with named dimensions.") - } - - dimData <- names(dim(data)) - - if (!all( c('lat', 'lon') %in% dimData)) { - stop("Parameter 'data' must contain the named dimensions 'lat' and 'lon'.") - } - - dimRef <- names(dim(ref_maps)) - - if (!all( c('cluster', 'lat', 'lon') %in% dimRef)) { - stop("Parameter 'ref_maps' must contain the named dimensions - 'cluster','lat' and 'lon'.") - } - - - if (length(lat) != dim(data)['lat'] | (length(lat) != dim(ref_maps)['lat']) ) { - stop(" Parameter 'lat' does not match with the dimension 'lat' in the - parameter 'data' or in the parameter 'ref_maps'.") - } - - - if ('sdate' %in% dimData && 'ftime' %in% dimData) { - nsdates <- dim(data)['sdate'] - nftimes <- dim(data)['ftime'] - data <- MergeDims(data, - merge_dims = c('ftime','sdate'), - rename_dim = 'time') - } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { - names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' - } else { - if (!('time' %in% dimData)) { - stop("Parameter 'data' must have temporal dimensions.") - } - } - - index <- Apply( data = list(target = data), - target_dims = c('lat','lon'), - fun = .RegimesAssign, - ref = ref_maps, - lat = lat, method = method, - ncores=ncores)[[1]] - - nclust <- dim(ref_maps)['cluster'] - freqs <- rep(NA, nclust) - for (n in 1:nclust) { - freqs[n] <- (length(which(index == n)) / length(index)) * 100 - } - - if (composite){ - poslon <- which(names(dim(data)) == 'lon') - poslat <- which(names(dim(data)) == 'lat') - postime <- which(names(dim(data)) == 'time') - posdim <- setdiff(1:length(dim(data)), c(postime, poslat, poslon)) - dataComp <- aperm(data, c(poslon, poslat, postime, posdim)) - - if (any(is.na(index))) { - recon <-list( - composite = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), - postime, dim(ref_maps)['composite.cluster']), - pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), - postime, dim(ref_maps)['composite.cluster'])) - } else { - recon <- - Apply(data = list(var = dataComp, occ = index), - target_dims = list(c('lon', 'lat', 'time'), c('time')), - fun = Composite, - K = dim(ref_maps)['cluster']) - } - - output <- list(composite = recon$composite, - pvalue = recon$pvalue, - cluster = index, - frequency = freqs) - } else{ - - output <- list(cluster = index, - frequency = freqs) - } - - return(output) -} - -.RegimesAssign <- function(ref, target, method = 'distance', lat, composite=FALSE) { - posdim <- which(names(dim(ref)) == 'cluster') - poslat <- which(names(dim(ref)) == 'lat') - poslon <- which(names(dim(ref)) == 'lon') - - nclust <- dim(ref)[posdim] - - if (all(dim(ref)[-posdim] != dim(target))) { - stop('The target should have the same dimensions [lat,lon] that - the reference ') - } - - if (is.null(names(dim(ref))) | is.null(names(dim(target)))) { - stop( - 'The arrays should include dimensions names ref[cluster,lat,lon] - and target [lat,lon]' - ) - } - - - if (length(lat) != dim(ref)[poslat]) { - stop('latitudes do not match with the maps') - } - - if (is.na(max(target))){ - assign <- NA - - }else{ - - - # This dimensions are reorganized - ref <- aperm(ref, c(posdim, poslat, poslon)) - target <- - aperm(target, c(which(names(dim( - target - )) == 'lat'), which(names(dim( - target - )) == 'lon'))) - - # weights are defined - latWeights <- InsertDim(sqrt(cos(lat * pi / 180)), 2, dim(ref)[3]) - - - rmsdiff <- function(x, y) { - dims <- dim(x) - ndims <- length(dims) - if (ndims != 2 | ndims != length(dim(y))) { - stop('x and y should be maps') - } - map_diff <- NA * x - for (i in 1:dims[1]) { - for (j in 1:dims[2]) { - map_diff[i, j] <- (x[i, j] - y[i, j]) ^ 2 - } - } - rmsdiff <- sqrt(mean(map_diff)) - return(rmsdiff) - } - - if (method == 'ACC') { - corr <- rep(NA, nclust) - for (i in 1:nclust) { - corr[i] <- - ACC(InsertDim(InsertDim( - InsertDim(ref[i, , ] * latWeights, 1, 1), 2, 1 - ), 3, 1), - InsertDim(InsertDim( - InsertDim(target * latWeights, 1, 1), 2, 1 - ), 3, 1))$ACC[2] - } - assign <- which(corr == max(corr)) - } - - if (method == 'distance') { - rms <- rep(NA, nclust) - for (i in 1:nclust) { - rms[i] <- rmsdiff(ref[i, , ] * latWeights, target * latWeights) - } - assign <- which(rms == min(rms)) - } - } - - return(assign) -} - - -Composite <- function(var, occ, lag = 0, eno = FALSE, K = NULL, fileout = NULL) { - - if ( dim(var)[3] != length(occ) ) { - stop("Temporal dimension of var is not equal to length of occ.") - } - if (is.null(K)) { - K <- max(occ) - } - composite <- array(dim = c(dim(var)[1:2], composite = K)) - tvalue <- array(dim = dim(var)[1:2]) - dof <- array(dim = dim(var)[1:2]) - pvalue <- array(dim = c(dim(var)[1:2], composite = K)) - - if (eno == TRUE) { - n_tot <- Eno(var, posdim = 3) - } else { - n_tot <- length(occ) - } - mean_tot <- Mean1Dim(var, posdim = 3, narm = TRUE) - stdv_tot <- apply(var, c(1, 2), sd, na.rm = TRUE) - - for (k in 1 : K) { - if (length(which(occ == k)) >= 1) { - indices <- which(occ == k) + lag - toberemoved <- which(0 > indices | indices > dim(var)[3]) - - if (length(toberemoved) > 0) { - indices <- indices[-toberemoved] - } - if (eno == TRUE) { - n_k <- Eno(var[, , indices], posdim = 3) - } else { - n_k <- length(indices) - } - if (length(indices) == 1) { - composite[, , k] <- var[, , indices] - warning(paste("Composite", k, "has length 1 and pvalue is NA.")) - } else { - composite[, , k] <- Mean1Dim(var[, , indices], posdim = 3, narm = TRUE) - } - stdv_k <- apply(var[, , indices], c(1, 2), sd, na.rm = TRUE) - - tvalue <- (mean_tot - composite[, , k]) / - sqrt(stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) - dof <- (stdv_tot ^ 2 / n_tot + stdv_k ^ 2 / n_k) ^ 2 / - ((stdv_tot ^ 2 / n_tot) ^ 2 / (n_tot - 1) + - (stdv_k ^ 2 / n_k) ^ 2 / (n_k - 1)) - pvalue[, , k] <- 2 * pt(-abs(tvalue), df = dof) - } - } - if (is.null(fileout) == FALSE) { - output <- list(composite = composite, pvalue = pvalue) - save(output, file = paste(fileout, '.sav', sep = '')) - } - - invisible(list(composite = composite, pvalue = pvalue)) -} - - -- GitLab From b764b01c1221e5d88fbab6e4c59817fb3b3666d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 12:59:18 +0200 Subject: [PATCH 103/184] changes in the tests --- tests/testthat/test-CST_RegimesAssign.R | 38 +++++++++++++++++-------- 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/tests/testthat/test-CST_RegimesAssign.R b/tests/testthat/test-CST_RegimesAssign.R index 33f177f5..09dad48f 100644 --- a/tests/testthat/test-CST_RegimesAssign.R +++ b/tests/testthat/test-CST_RegimesAssign.R @@ -10,31 +10,30 @@ test_that("Sanity checks", { class(data1) <- 's2dv_cube' expect_error( CST_RegimesAssign(data = data1,ref_maps=1), + paste0("Parameter 'ref_maps' must be of the class 's2dv_cube', as output by ", + "CSTools::CST_Load.")) + + regimes <- 1:20 + dim(regimes) <- c(lat = 5, lon=2, cluster=2) + regimes <- list(data=regimes) + class(regimes) <- 's2dv_cube' + expect_error( + CST_RegimesAssign(data = data1,ref_maps = regimes), paste0("Parameter 'data' must be an array with named dimensions.")) data1 <- 1 : 20 dim(data1) <- c(lat = 5, lon=4) data1 <- list(data = data1 , lat=1:5) class(data1) <- 's2dv_cube' - expect_error( - CST_RegimesAssign(data = data1,ref_maps = 1), - paste0("Parameter 'ref_maps' must be an array with named dimensions.")) - - regimes <- 1:20 - dim(regimes) <- c(lat = 5, lon=2, cluster=2) expect_error( CST_RegimesAssign(data = data1,ref_maps = regimes), paste0("Parameter 'data' must have temporal dimensions.")) - data1 <- 1 : 20 dim(data1) <- c(time=20) data1 <- list(data = data1) class(data1) <- 's2dv_cube' - regimes <- 1:20 - dim(regimes) <- c(lat = 5, lon=2, cluster=2) - expect_error( CST_RegimesAssign(data = data1,ref_maps = regimes), paste0("Parameter 'lat' must be specified.")) @@ -99,9 +98,24 @@ test_that("Sanity checks", { regimes <- 1:60 dim(regimes) <- c(lat = 5, lon=2, cluster=6) - + regimes <- list(data=regimes) + class(regimes) <- 's2dv_cube' expect_equal(max(CST_RegimesAssign(data = data1, ref_maps = regimes, composite = FALSE)$statistics$cluster), - unname(dim(regimes)['cluster'])) + unname(dim(regimes$data)['cluster'])) + + + regimes <- 1:60 + dim(regimes) <- c(lat = 5, lon=2, cluster=3, member=2) + regimes <- list(data=regimes) + class(regimes) <- 's2dv_cube' + expect_equal(names(dim(CST_RegimesAssign(data = data1, ref_maps = regimes, + composite = FALSE)$statistics$cluster)),c('time','member','member')) + + + + + + }) -- GitLab From fdce4ea3bf212ed878e6ecd7b7ca9d3bc7cd8ab9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 13:07:14 +0200 Subject: [PATCH 104/184] bugfix in the examples --- R/CST_RegimesAssign.R | 2 +- man/CST_RegimesAssign.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 12b5aa08..9886905e 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -29,7 +29,7 @@ #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples -#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data +#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) #'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) #'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) #'@export diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 72d75bef..2a26fd39 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -39,7 +39,7 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ -regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data +regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) } -- GitLab From 5e551a79e07a848206398dcb753d32bb58e5103c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 28 May 2020 13:25:12 +0200 Subject: [PATCH 105/184] generating documentation --- NAMESPACE | 1 + man/PlotTriangles4Categories.Rd | 126 ++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 man/PlotTriangles4Categories.Rd diff --git a/NAMESPACE b/NAMESPACE index bd5d0f16..48553a59 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -27,6 +27,7 @@ export(MultiEOF) export(PlotCombinedMap) export(PlotForecastPDF) export(PlotMostLikelyQuantileMap) +export(PlotTriangles4Categories) export(RFSlope) export(RainFARM) export(SplitDim) diff --git a/man/PlotTriangles4Categories.Rd b/man/PlotTriangles4Categories.Rd new file mode 100644 index 00000000..d47103b7 --- /dev/null +++ b/man/PlotTriangles4Categories.Rd @@ -0,0 +1,126 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/PlotTriangles4Categories.R +\name{PlotTriangles4Categories} +\alias{PlotTriangles4Categories} +\title{Function to convert any 3-d numerical array to a grid of coloured triangles.} +\usage{ +PlotTriangles4Categories( + data, + cols = NULL, + brks = NULL, + toptitle = NULL, + sig_data = NULL, + col_sig = "black", + pch_sig = 18, + cex_sig = 1, + labx = TRUE, + laby = TRUE, + xlabels = NULL, + xtitle = NULL, + ylabels = NULL, + ytitle = NULL, + legend = TRUE, + lab_legend = NULL, + cex_leg = 1, + col_leg = "black", + fileout = NULL, + size_units = "px", + res = 100, + figure.width = 1, + ... +) +} +\arguments{ +\item{data}{array with three named dimensions: 'dimx', 'dimy', 'dimcat', +containing the values to be displayed in a coloured image with triangles.} + +\item{cols}{A vector of valid colour identifiers for color bar. The length +must be one less than the parameter 'brks'. Use ColorBar() to generate +default values.} + +\item{brks}{A vector of the color bar intervals. The length must be one more +than the parameter 'cols'. Use ColorBar() to generate default values.} + +\item{toptitle}{A string of the title of the grid. Set NULL as default.} + +\item{sig_data}{logical array with the same dimensions as 'data' to add layers +to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the +corresponding triangle of the plot. Set NULL as default.} + +\item{col_sig}{colour of the symbol to represent sig_data.} + +\item{pch_sig}{symbol to be used to represent sig_data. Takes 18 +(diamond) by default. See 'pch' in par() for additional +accepted options.} + +\item{cex_sig}{parameter to increase/reduce the size of the symbols used +to represent sig_data.} + +\item{xlabels}{A vector of labels of the x-axis The length must be +length of the col of parameter 'data'. Set the sequence from 1 to the +length of the row of parameter 'data' as default.} + +\item{xtitle}{A string of title of the x-axis. Set NULL as default.} + +\item{ylabels}{A vector of labels of the y-axis The length must be +length of the row of parameter 'data'. Set the sequence from 1 to the +length of the row of parameter 'data' as default.} + +\item{ytitle}{A string of title of the y-axis. Set NULL as default.} + +\item{legend}{A logical value to decide to draw the color bar legend or not. +Set TRUE as default.} + +\item{lab_legend}{A vector of labels indicating what is represented in each +category (i.e. triangle). Set the sequence from 1 to the length of +the categories (2 or 4).} + +\item{cex_leg}{a number to indicate the increase/reductuion of the lab_legend used +to represent sig_data.} + +\item{col_leg}{color of the legend (triangles).} + +\item{fileout}{A string of full directory path and file name indicating where +to save the plot. If not specified (default), a graphics device will pop up.} + +\item{size_units}{A string indicating the units of the size of the device +(file or window) to plot in. Set 'px' as default. See ?Devices and the +creator function of the corresponding device.} + +\item{res}{A positive number indicating resolution of the device (file or window) +to plot in. See ?Devices and the creator function of the corresponding device.} + +\item{...}{The additional parameters to be passed to function ColorBar() in +s2dverification for color legend creation.} + +\item{xlab}{A logical value (TRUE) indicating if xlabels should be plotted} + +\item{ylab}{A logical value (TRUE) indicating if ylabels should be plotted} +} +\value{ +A figure in popup window by default, or saved to the specified path. +} +\description{ +This function converts a 3-d numerical data array into a coloured +grid with triangles. It is useful for a slide or article to present tabular results as +colors instead of numbers. This can be used to compare the outputs of two or four categories ( +e.g. modes of variability, clusters, or forecast systems). +} +\examples{ +#Example with random data +arr1<- arr1<- array(runif(n = 12 * 7 * 4, min=-1, max=1),dim = c(12,7,4)) +names(dim(arr1)) <- c('dimx','dimy','dimcat') +arr2<- array(TRUE,dim = dim(arr1)) +arr2[which(arr1 < 0.3)] = FALSE +PlotTriangles4Categories(data = arr1, + cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', + '#e34a33','#b30000', '#7f0000'), + brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), + xtitle = "Target month", ytitle = "Lead time", + xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + "Aug", "Sep", "Oct", "Nov", "Dec")) +} +\author{ +History:\cr +1.0 - 2020-10 (V.Torralba, \email{veronica.torralba@bsc.es}) - Original code +} -- GitLab From f5efb3dc710ab1f82a8c8aab50106ef093b39b3e Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 28 May 2020 17:50:56 +0200 Subject: [PATCH 106/184] Fix listed in NEWS --- NEWS.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/NEWS.md b/NEWS.md index 3e625ed0..86f68cf4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,10 @@ +### CSTools 3.1.0 +**Submission date to CRAN: XX-06-2020** + +- Fixes + + CST_Anomaly handles exp, obs or both. + + ### CSTools 3.0.0 **Submission date to CRAN: 10-02-2020** @@ -8,6 +15,7 @@ - Fixes + CST_Calibration handles missing values + BEI functions handle missing values + ### CSTools 2.0.0 **Submission date to CRAN: 25-11-2019** @@ -33,6 +41,7 @@ - Adding reference to S2S4E H2020 project into the DESCRIPTION file - Adding NEWS.md file + ### CSTools 1.0.1 **Release date on CRAN: 19-06-2019** -- GitLab From 489787741490daf353c25cb877cd5ac3234e2628 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 28 May 2020 17:53:31 +0200 Subject: [PATCH 107/184] Automatically documentation update with devtools --- man/CST_Anomaly.Rd | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 07691ea7..365cbf46 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -52,6 +52,10 @@ str(anom3) anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) str(anom4) +anom5 <- CST_Anomaly(lonlat_data$exp) + +anom6 <- CST_Anomaly(obs = lonlat_data$obs) + } \seealso{ \code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} -- GitLab From 18bef98f12bee96cbdef6bbaa503a863346a35d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Fri, 29 May 2020 10:26:33 +0200 Subject: [PATCH 108/184] changes suggested by Eida --- R/PlotTriangles4Categories.R | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index 11dc513d..bf83960e 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -150,19 +150,18 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, width = 8 * figure.width, height =5) } - - if (!is.null(sig_data)){ - names(dim(sig_data))<-names(dim(data)) - } - - - if (is.null(xlabels)){ xlabels=1:ncol } if (is.null(ylabels)){ ylabels=1:nrow } + + if (!is.null(brks) && !is.null(cols)){ + if (length(brks) != length(cols)+1){ + stop("The length of the parameter 'brks' must be one more than 'cols'.") + } + } if (is.null(brks)){ brks <- seq(min(data, na.rm=T), max(data, na.rm=T),length.out = 9) } -- GitLab From 7eba638df6eba1ab3bb19efe7ddb0ac4ea9d31cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Fri, 29 May 2020 11:36:44 +0200 Subject: [PATCH 109/184] changes in the tests and examples --- R/PlotTriangles4Categories.R | 5 +- man/PlotTriangles4Categories.Rd | 5 +- .../testthat/test-PlotTriangles4Categories.R | 65 +++++++++++++++++++ 3 files changed, 71 insertions(+), 4 deletions(-) create mode 100644 tests/testthat/test-PlotTriangles4Categories.R diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index bf83960e..cda320f9 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -63,9 +63,10 @@ #'PlotTriangles4Categories(data = arr1, #' cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', #' '#e34a33','#b30000', '#7f0000'), -#' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), +#' brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), +#' lab_legend = c('NAO+', 'BL','AR','NAO-'), #' xtitle = "Target month", ytitle = "Lead time", -#' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", +#' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", #' "Aug", "Sep", "Oct", "Nov", "Dec")) #'@importFrom grDevices dev.new dev.off dev.cur #'@export diff --git a/man/PlotTriangles4Categories.Rd b/man/PlotTriangles4Categories.Rd index d47103b7..14ab5114 100644 --- a/man/PlotTriangles4Categories.Rd +++ b/man/PlotTriangles4Categories.Rd @@ -115,9 +115,10 @@ arr2[which(arr1 < 0.3)] = FALSE PlotTriangles4Categories(data = arr1, cols = c('white','#fef0d9','#fdd49e','#fdbb84','#fc8d59', '#e34a33','#b30000', '#7f0000'), - brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), + brks = c(-1, 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 1), + lab_legend = c('NAO+', 'BL','AR','NAO-'), xtitle = "Target month", ytitle = "Lead time", - xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")) } \author{ diff --git a/tests/testthat/test-PlotTriangles4Categories.R b/tests/testthat/test-PlotTriangles4Categories.R new file mode 100644 index 00000000..8105cc91 --- /dev/null +++ b/tests/testthat/test-PlotTriangles4Categories.R @@ -0,0 +1,65 @@ +context("Generic tests") +test_that("Sanity checks", { + expect_error( + PlotTriangles4Categories(data = 1:20), + paste0("Parameter 'data' must be an array with three dimensions.")) + + data1 <- array(runif(min = -1, max = 1, n = 30), dim=c(5,3,2)) + expect_error( + PlotTriangles4Categories(data = data1), + paste0("Parameter 'data' must be an array with named dimensions.")) + + data1 <- runif(min = -1, max = 1, n = 30) + dim(data1) <- c(dim1 = 5, dim2 = 2, dim3 = 3) + expect_error( + PlotTriangles4Categories(data = data1), + paste0("Parameter 'data' should contain 'dimx', 'dimy' and 'dimcat' dimension names.")) + + data1 <- runif(min = -1, max = 1, n = 30) + dim(data1) <- c(dimx = 5, dimy =2 , dimcat=3) + expect_error( + PlotTriangles4Categories(data = data1), + paste0("Parameter 'data' should contain a dimcat dimension with length equals + to two or four as only two or four categories can be plotted")) + + data1 <- runif(min = -1, max = 1, n = 30) + data1[5:10] <- NA + dim(data1) <- c(dimx = 5, dimy =3 , dimcat=2) + expect_error( + PlotTriangles4Categories(data = data1), + paste0("Parameter 'data' cannot contain NAs.")) + + data1 <- runif(min = -1, max = 1, n = 30) + dim(data1) <- c(dimx = 5, dimy =3 , dimcat=2) + expect_error( + PlotTriangles4Categories(data = data1,sig_data = 0.5), + paste0("Parameter 'sig_data' array must be logical.")) + + expect_error( + PlotTriangles4Categories(data = data1, sig_data = TRUE), + paste0("Parameter 'sig_data' must be an array with three dimensions.")) + + sig1 <- array(TRUE, dim=c(5,2,3)) + expect_error( + PlotTriangles4Categories(data = data1, sig_data = sig1), + paste0("Parameter 'sig_data' must be an array with the same dimensions as 'data'")) + + sig1 <- array(TRUE, dim= c(5,3,2)) + dim(sig1) <- c(dimy = 5, dimx =3 , dimcat=2) + expect_error( + PlotTriangles4Categories(data = data1, sig_data = sig1), + paste0("Parameter 'sig_data' must be an array with the same named dimensions as 'data'.")) + + data1 <- runif(min = -1, max = 1, n = 30) + dim(data1) <- c(dimx = 5, dimy =3 , dimcat=2) + expect_error( + PlotTriangles4Categories(data = data1, lab_legend = c('1','2','3')), + paste0("Parameter 'lab_legend' should contain two or four names.")) + +expect_error( + PlotTriangles4Categories(data = data1, brks=c(-1,0,1),cols=c('blue','red','black')), + paste0("The length of the parameter 'brks' must be one more than 'cols'.")) + + + +}) -- GitLab From ef743e7c7f4587b811661aa522e1388a07d4a853 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 29 May 2020 19:16:25 +0200 Subject: [PATCH 110/184] Fix in vignette listed in NEWS --- NEWS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 86f68cf4..04f986fb 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,7 +2,8 @@ **Submission date to CRAN: XX-06-2020** - Fixes - + CST_Anomaly handles exp, obs or both. + + CST_Anomaly handles exp, obs or both + + PlotForecastPDF vignette displays figures correctly. ### CSTools 3.0.0 -- GitLab From 5b73c14290d1f133912547bdab6946b001b3ba38 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 29 May 2020 19:43:18 +0200 Subject: [PATCH 111/184] fix list in NEWS --- NEWS.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 04f986fb..3a846b1f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,7 +3,8 @@ - Fixes + CST_Anomaly handles exp, obs or both - + PlotForecastPDF vignette displays figures correctly. + + PlotForecastPDF vignette displays figures correctly + + Calibration function is exposed to users ### CSTools 3.0.0 -- GitLab From 3dadf3c9d8c1c758026cbb48f5a84b88fa9c8078 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 3 Jun 2020 16:52:01 +0200 Subject: [PATCH 112/184] Fixed in vignette added to NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 3a846b1f..090aa077 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly + Calibration function is exposed to users + + MultiMetric vignette fixed typo text description ### CSTools 3.0.0 -- GitLab From 8afcbe6a44c559fb697825b890cc8e1f93f41990 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 3 Jun 2020 17:52:45 +0200 Subject: [PATCH 113/184] RainFARM fix listed in NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 090aa077..d21702a5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ + PlotForecastPDF vignette displays figures correctly + Calibration function is exposed to users + MultiMetric vignette fixed typo text description + + RainFARM checks 'slope' is not a vector ### CSTools 3.0.0 -- GitLab From c9b4161825111b018ce1e14eea68d1e04169f03c Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 3 Jun 2020 19:22:49 +0200 Subject: [PATCH 114/184] minimum multiApply version listed in NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index d21702a5..4144a707 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,7 @@ + Calibration function is exposed to users + MultiMetric vignette fixed typo text description + RainFARM checks 'slope' is not a vector + + DESCRIPTION specifies the minimum multiApply version required ### CSTools 3.0.0 -- GitLab From f313d00fa76cc66feb0571d2f253bd9c6a5cfdca Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 3 Jun 2020 19:58:30 +0200 Subject: [PATCH 115/184] functions documentation automatically generated with devtools --- man/CST_EnsClustering.Rd | 9 +++++++-- man/EnsClustering.Rd | 9 +++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 154541d5..6ee79b7c 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -12,6 +12,7 @@ CST_EnsClustering( lat_lim = NULL, variance_explained = 80, numpcs = NULL, + time_dim = NULL, time_percentile = 90, cluster_dim = "member", verbose = F @@ -24,7 +25,7 @@ spatial dimensions named "lon" and "lat", and dimensions "dataset", "member", "f \item{time_moment}{Decides the moment to be applied to the time dimension. Can be either 'mean' (time mean), 'sd' (standard deviation along time) or 'perc' (a selected percentile on time). -If 'perc' the keyword 'time_percentile' is also needed.} +If 'perc' the keyword 'time_percentile' is also used.} \item{numclus}{Number of clusters (scenarios) to be calculated. If set to NULL the number of ensemble members divided by 10 is used, with a minimum of 2 and a maximum of 8.} @@ -38,9 +39,13 @@ Defaults to 80. Not used if numpcs is specified.} \item{numpcs}{Number of EOFs retained in the analysis (optional).} +\item{time_dim}{String or character array with name(s) of dimension(s) over which to compute statistics. +If omitted c("ftime", "sdate", "time") are searched in this order.} + \item{time_percentile}{Set the percentile in time you want to analyse (used for `time_moment = "perc").} -\item{cluster_dim}{Dimension along which to cluster. Typically "member" or "sdate". This can also be a list like c("member", "sdate").} +\item{cluster_dim}{Dimension along which to cluster. Typically "member" or "sdate". +This can also be a list like c("member", "sdate").} \item{verbose}{Logical for verbose output} } diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 2fd8a3f1..30d81f87 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -15,6 +15,7 @@ EnsClustering( variance_explained = 80, numpcs = NULL, time_percentile = 90, + time_dim = NULL, cluster_dim = "member", verbose = T ) @@ -28,7 +29,7 @@ EnsClustering( \item{time_moment}{Decides the moment to be applied to the time dimension. Can be either 'mean' (time mean), 'sd' (standard deviation along time) or 'perc' (a selected percentile on time). -If 'perc' the keyword 'time_percentile' is also needed.} +If 'perc' the keyword 'time_percentile' is also used.} \item{numclus}{Number of clusters (scenarios) to be calculated. If set to NULL the number of ensemble members divided by 10 is used, with a minimum of 2 and a maximum of 8.} @@ -44,7 +45,11 @@ Defaults to 80. Not used if numpcs is specified.} \item{time_percentile}{Set the percentile in time you want to analyse (used for `time_moment = "perc").} -\item{cluster_dim}{Dimension along which to cluster. Typically "member" or "sdate". This can also be a list like c("member", "sdate").} +\item{time_dim}{String or character array with name(s) of dimension(s) over which to compute statistics. +If omitted c("ftime", "sdate", "time") are searched in this order.} + +\item{cluster_dim}{Dimension along which to cluster. Typically "member" or "sdate". +This can also be a list like c("member", "sdate").} \item{verbose}{Logical for verbose output} } -- GitLab From 2fcb83dbbc3477b3415553297f0fee61113e5ed1 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 4 Jun 2020 10:22:51 +0200 Subject: [PATCH 116/184] Changes in EnsClustering listed in NEWS --- NEWS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 4144a707..aa6de232 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,7 +8,7 @@ + MultiMetric vignette fixed typo text description + RainFARM checks 'slope' is not a vector + DESCRIPTION specifies the minimum multiApply version required - + + EnsClustering has a new parameter 'time_dim' and fixed 'closest_member' output ### CSTools 3.0.0 **Submission date to CRAN: 10-02-2020** -- GitLab From 10685c48313aab5e041398ddee43f2e198dff279 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 4 Jun 2020 11:14:04 +0200 Subject: [PATCH 117/184] EnsClustering vignette listed in NEW --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index aa6de232..655c96bc 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,8 @@ ### CSTools 3.1.0 **Submission date to CRAN: XX-06-2020** +- New features: + + EnsClustering vignette - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly -- GitLab From b1ad3d13b225e3a49c8473e4676eecf7e25918dd Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 4 Jun 2020 14:41:11 +0200 Subject: [PATCH 118/184] run devtools to generate documentation --- DESCRIPTION | 2 +- man/Analogs.Rd | 25 ++++++++++++++------- man/BEI_PDFBest.Rd | 20 +++++++++++------ man/BEI_Weights.Rd | 7 +++--- man/CST_Analogs.Rd | 20 +++++++++++------ man/CST_Anomaly.Rd | 10 ++++----- man/CST_BEI_Weighting.Rd | 16 +++++++++----- man/CST_BiasCorrection.Rd | 7 +++--- man/CST_Calibration.Rd | 10 ++++----- man/CST_CategoricalEnsCombination.Rd | 17 +++++++++----- man/CST_EnsClustering.Rd | 4 ++-- man/CST_Load.Rd | 1 - man/CST_MergeDims.Rd | 9 +++++--- man/CST_MultiEOF.Rd | 11 +++++++--- man/CST_MultiMetric.Rd | 9 ++++---- man/CST_MultivarRMSE.Rd | 7 +++--- man/CST_QuantileMapping.Rd | 20 +++++++++++------ man/CST_RFSlope.Rd | 1 - man/CST_RFWeights.Rd | 7 +++--- man/CST_RainFARM.Rd | 24 ++++++++++++++------ man/CST_SaveExp.Rd | 7 +++--- man/CST_SplitDim.Rd | 1 - man/Calibration.Rd | 14 +++++------- man/EnsClustering.Rd | 4 ++-- man/MergeDims.Rd | 9 +++++--- man/MultiEOF.Rd | 17 ++++++++++---- man/PlotCombinedMap.Rd | 33 ++++++++++++++++++++-------- man/PlotForecastPDF.Rd | 17 +++++++++----- man/PlotMostLikelyQuantileMap.Rd | 18 ++++++++++----- man/RFSlope.Rd | 4 +--- man/RainFARM.Rd | 23 ++++++++++++++----- man/SplitDim.Rd | 1 - man/areave_data.Rd | 1 - man/as.s2dv_cube.Rd | 7 +++--- man/lonlat_data.Rd | 1 - man/lonlat_prec.Rd | 1 - man/s2dv_cube.Rd | 19 +++++++++++----- 37 files changed, 249 insertions(+), 155 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dd1e75d0..0492186b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -71,4 +71,4 @@ VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 5.0.0 +RoxygenNote: 7.0.2 diff --git a/man/Analogs.Rd b/man/Analogs.Rd index ee8a737e..06107c07 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,9 +4,19 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - criteria = "Large_dist", lonVar = NULL, latVar = NULL, region = NULL, - nAnalogs = NULL, return_list = FALSE) +Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + criteria = "Large_dist", + lonVar = NULL, + latVar = NULL, + region = NULL, + nAnalogs = NULL, + return_list = FALSE +) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field @@ -377,11 +387,6 @@ Local_scalecor <- Analogs(expL=expSLP, str(Local_scalecor) Local_scalecor$AnalogsInfo -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -389,4 +394,8 @@ and M. Vrac, 2013 : Ensemble reconstruction of the atmospheric column from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. \email{pascal.yiou@lsce.ipsl.fr} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index f836ab72..0ba24a84 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,9 +4,16 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, - index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", - na.rm = FALSE) +BEI_PDFBest( + index_obs, + index_hind1, + index_hind2, + index_fcst1 = NULL, + index_fcst2 = NULL, + method_BC = "none", + time_dim_name = "time", + na.rm = FALSE +) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database @@ -113,12 +120,11 @@ dim(res) # time statistic season # 1 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/BEI_Weights.Rd b/man/BEI_Weights.Rd index 61db33af..867a4eb0 100644 --- a/man/BEI_Weights.Rd +++ b/man/BEI_Weights.Rd @@ -43,13 +43,12 @@ dim(res) # sdate dataset member season # 10 3 5 1 -} -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} } \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index 7c9a1e6f..d7dd5e14 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,8 +4,15 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - region = NULL, criteria = "Large_dist") +CST_Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + region = NULL, + criteria = "Large_dist" +) } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the @@ -81,11 +88,6 @@ adapted version of the method of Yiou et al 2013. \examples{ res <- CST_Analogs(expL = lonlat_data$exp, obsL = lonlat_data$obs) -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -97,4 +99,8 @@ from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. code{\link{CST_Load}}, \code{\link[s2dverification]{Load}} and \code{\link[s2dverification]{CDORemap}} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index ce3bda65..365cbf46 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,8 +4,7 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, - dim_anom = 3) +CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -57,13 +56,12 @@ anom5 <- CST_Anomaly(lonlat_data$exp) anom6 <- CST_Anomaly(obs = lonlat_data$obs) +} +\seealso{ +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } -\seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} -} - diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index 0e60a356..d6f65bb5 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,8 +4,13 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting(var_exp, aweights, terciles = NULL, type = "ensembleMean", - time_dim_name = "time") +CST_BEI_Weighting( + var_exp, + aweights, + terciles = NULL, + type = "ensembleMean", + time_dim_name = "time" +) } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable @@ -68,12 +73,11 @@ dim(res_CST$data) # time lat lon dataset # 2 3 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_BiasCorrection.Rd b/man/CST_BiasCorrection.Rd index 3a8fa4b6..55c325a2 100644 --- a/man/CST_BiasCorrection.Rd +++ b/man/CST_BiasCorrection.Rd @@ -37,10 +37,9 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_BiasCorrection(exp = exp, obs = obs) str(a) } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} -} \references{ Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) } - +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} +} diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index e781545d..76812a43 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -11,7 +11,8 @@ CST_Calibration( eval.method = "leave-one-out", multi.model = FALSE, na.fill = TRUE, - ncores = 1) + ncores = 1 +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -49,12 +50,11 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_Calibration(exp = exp, obs = obs, cal.method = "mse_min", eval.method = "in-sample") str(a) } +\seealso{ +\code{\link{CST_Load}} +} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} Bert Van Schaeybroeck, \email{bertvs@meteo.be} } -\seealso{ -\code{\link{CST_Load}} -} - diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index e551c3ec..c23f8341 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,8 +4,14 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", - eval.method = "leave-one-out", amt.cat = 3, ...) +CST_CategoricalEnsCombination( + exp, + obs, + cat.method = "pool", + eval.method = "leave-one-out", + amt.cat = 3, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} @@ -83,9 +89,6 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_CategoricalEnsCombination(exp = exp, obs = obs, amt.cat = 3, cat.method = "mmw") } } -\author{ -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} \references{ Rajagopalan, B., Lall, U., & Zebiak, S. E. (2002). Categorical climate forecasts through regularization and optimal combination of multiple GCM ensembles. Monthly Weather Review, 130(7), 1792-1811. @@ -93,4 +96,6 @@ Robertson, A. W., Lall, U., Zebiak, S. E., & Goddard, L. (2004). Improved combin Van Schaeybroeck, B., & Vannitsem, S. (2019). Postprocessing of Long-Range Forecasts. In Statistical Postprocessing of Ensemble Forecasts (pp. 267-290). } - +\author{ +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index aa87aca4..6ee79b7c 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -15,7 +15,8 @@ CST_EnsClustering( time_dim = NULL, time_percentile = 90, cluster_dim = "member", - verbose = F) + verbose = F +) } \arguments{ \item{exp}{An object of the class 's2dv_cube', containing the variables to be analysed. @@ -137,4 +138,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_Load.Rd b/man/CST_Load.Rd index 1fee022c..bf03ba42 100644 --- a/man/CST_Load.Rd +++ b/man/CST_Load.Rd @@ -47,4 +47,3 @@ obs <- CSTools::lonlat_data$obs \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} } - diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 449e011e..0762e83f 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,8 +4,12 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims(data, merge_dims = c("ftime", "monthly"), rename_dim = NULL, - na.rm = FALSE) +CST_MergeDims( + data, + merge_dims = c("ftime", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -38,4 +42,3 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index fb584751..036a6470 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,8 +4,14 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, minvar = 0.6, - lon_lim = NULL, lat_lim = NULL) +CST_MultiEOF( + datalist, + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. @@ -69,4 +75,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/CST_MultiMetric.Rd b/man/CST_MultiMetric.Rd index 079a5588..8e3ce593 100644 --- a/man/CST_MultiMetric.Rd +++ b/man/CST_MultiMetric.Rd @@ -37,15 +37,14 @@ c(ano_exp, ano_obs) \%<-\% CST_Anomaly(exp = exp, obs = obs, cross = TRUE, memb a <- CST_MultiMetric(exp = ano_exp, obs = ano_obs) str(a) } -\author{ -Mishra Niti, \email{niti.mishra@bsc.es} - -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \references{ Mishra, N., Prodhomme, C., & Guemas, V. (n.d.). Multi-Model Skill Assessment of Seasonal Temperature and Precipitation Forecasts over Europe, 29-31.\url{http://link.springer.com/10.1007/s00382-018-4404-z} } \seealso{ \code{\link[s2dverification]{Corr}}, \code{\link[s2dverification]{RMS}}, \code{\link[s2dverification]{RMSSS}} and \code{\link{CST_Load}} } +\author{ +Mishra Niti, \email{niti.mishra@bsc.es} +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_MultivarRMSE.Rd b/man/CST_MultivarRMSE.Rd index 685eaf77..24af608c 100644 --- a/man/CST_MultivarRMSE.Rd +++ b/man/CST_MultivarRMSE.Rd @@ -56,10 +56,9 @@ weight <- c(1, 2) a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = weight) str(a) } -\author{ -Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} -} \seealso{ \code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} } - +\author{ +Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} +} diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index 1c93843e..ad8f4b6c 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,9 +4,16 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", - "ftime", "member"), sample_length = NULL, method = "QUANT", - ncores = NULL, ...) +CST_QuantileMapping( + exp, + obs, + exp_cor = NULL, + sample_dims = c("sdate", "ftime", "member"), + sample_length = NULL, + method = "QUANT", + ncores = NULL, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} @@ -77,10 +84,9 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', method = 'DIST') } } -\author{ -Nuria Perez-Zanon, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} } - +\author{ +Nuria Perez-Zanon, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_RFSlope.Rd b/man/CST_RFSlope.Rd index d2b5aec0..0c4e1671 100644 --- a/man/CST_RFSlope.Rd +++ b/man/CST_RFSlope.Rd @@ -50,4 +50,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_RFWeights.Rd b/man/CST_RFWeights.Rd index 08a7b850..ef5ebe4d 100644 --- a/man/CST_RFWeights.Rd +++ b/man/CST_RFWeights.Rd @@ -47,9 +47,6 @@ nf <- 8 ww <- CST_RFWeights("./worldclim.nc", nf, lon, lat, fsmooth = TRUE) } } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} \references{ Terzago, S., Palazzi, E., & von Hardenberg, J. (2018). Stochastic downscaling of precipitation in complex orography: @@ -57,4 +54,6 @@ A simple method to reproduce a realistic fine-scale climatology. Natural Hazards and Earth System Sciences, 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 . } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 4a667f9a..1c609e08 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,9 +4,20 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - verbose = FALSE, drop_realization_dim = FALSE) +CST_RainFARM( + data, + nf, + weights = 1, + slope = 0, + kmin = 1, + nens = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + verbose = FALSE, + drop_realization_dim = FALSE +) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -95,13 +106,12 @@ dim(res$data) # dataset member realization sdate ftime lat lon # 1 2 3 3 4 64 64 -} -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } \references{ Terzago, S. et al. (2018). NHESS 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 ; D'Onofrio et al. (2014), J of Hydrometeorology 15, 830-843; Rebora et. al. (2006), JHM 7, 724. } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_SaveExp.Rd b/man/CST_SaveExp.Rd index 17537205..0e49c119 100644 --- a/man/CST_SaveExp.Rd +++ b/man/CST_SaveExp.Rd @@ -29,11 +29,10 @@ destination <- "./path/" CST_SaveExp(data = data, destination = destination) } -} -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } \seealso{ \code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index 2019ea7b..ee93aedc 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -43,4 +43,3 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 3a78b797..64452279 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -11,7 +11,8 @@ Calibration( eval.method = "leave-one-out", multi.model = FALSE, na.fill = TRUE, - ncores = 1) + ncores = 1 +) } \arguments{ \item{exp}{an array containing the seasonal forecast experiment data.} @@ -36,12 +37,6 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } -<<<<<<< HEAD -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} - -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -======= \examples{ mod1 <- 1 : (1 * 3 * 4 * 5 * 6 * 7) dim(mod1) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7) @@ -49,7 +44,6 @@ obs1 <- 1 : (1 * 1 * 4 * 5 * 6 * 7) dim(obs1) <- c(dataset = 1, member = 1, sdate = 4, ftime = 5, lat = 6, lon = 7) a <- Calibration(exp = mod1, obs = obs1) str(a) ->>>>>>> master } \references{ Doblas-Reyes F.J, Hagedorn R, Palmer T.N. The rationale behind the success of multi-model ensembles in seasonal forecasting-II calibration and combination. Tellus A. 2005;57:234-252. doi:10.1111/j.1600-0870.2005.00104.x @@ -61,4 +55,8 @@ Van Schaeybroeck, B., & Vannitsem, S. (2015). Ensemble post-processing using mem \seealso{ \code{\link{CST_Load}} } +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 456e8215..30d81f87 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -17,7 +17,8 @@ EnsClustering( time_percentile = 90, time_dim = NULL, cluster_dim = "member", - verbose = T) + verbose = T +) } \arguments{ \item{data}{A matrix of dimensions 'dataset member sdate ftime lat lon' containing the variables to be analysed.} @@ -81,4 +82,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index 585049e8..7539ef6e 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,8 +4,12 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, - na.rm = FALSE) +MergeDims( + data, + merge_dims = c("time", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{an n-dimensional array with named dimensions} @@ -28,4 +32,3 @@ new_data <- MergeDims(data, merge_dims = c('time', 'lat')) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index 1e822fc4..dd0fc7fe 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,9 +4,19 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", - neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, - lat_lim = NULL) +MultiEOF( + data, + lon, + lat, + time, + lon_dim = "lon", + lat_dim = "lat", + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, @@ -46,4 +56,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 6857c64d..616b84f9 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,11 +4,27 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, - map_dim = "map", brks = NULL, cols = NULL, col_unknown_map = "white", - mask = NULL, col_mask = "grey", bar_titles = NULL, legend_scale = 1, - fileout = NULL, width = 8, height = 5, size_units = "in", res = 100, - ...) +PlotCombinedMap( + maps, + lon, + lat, + map_select_fun, + display_range, + map_dim = "map", + brks = NULL, + cols = NULL, + col_unknown_map = "white", + mask = NULL, + col_mask = "grey", + bar_titles = NULL, + legend_scale = 1, + fileout = NULL, + width = 8, + height = 5, + size_units = "in", + res = 100, + ... +) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} @@ -67,12 +83,11 @@ PlotCombinedMap(list(a, b, c), lons, lats, bar_titles = paste('\% of belonging to', c('a', 'b', 'c')), brks = 20, width = 10, height = 8) } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} Veronica Torralba, \email{veronica.torralba@bsc.es} } -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} -} - diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index d7b95b08..c04b43c1 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,10 +4,18 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, obs = NULL, - plotfile = NULL, title = "Set a title", var.name = "Varname (units)", - fcst.names = NULL, add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro")) +PlotForecastPDF( + fcst, + tercile.limits, + extreme.limits = NULL, + obs = NULL, + plotfile = NULL, + title = "Set a title", + var.name = "Varname (units)", + fcst.names = NULL, + add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro") +) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} @@ -49,4 +57,3 @@ PlotForecastPDF(fcsts2, c(-0.66, 0.66), extreme.limits = c(-1.2, 1.2), \author{ Llorenç Lledó \email{llledo@bsc.es} } - diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 6c92850e..4c400b18 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,8 +4,15 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", - bar_titles = NULL, col_unknown_cat = "white", ...) +PlotMostLikelyQuantileMap( + probs, + lon, + lat, + cat_dim = "bin", + bar_titles = NULL, + col_unknown_cat = "white", + ... +) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} @@ -109,11 +116,10 @@ PlotMostLikelyQuantileMap(bins, lons, lats, mask = 1 - (w1 + w2 / max(c(w1, w2))), brks = 20, width = 10, height = 8) -} -\author{ -Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} } \seealso{ \code{PlotCombinedMap} and \code{PlotEquiMap} } - +\author{ +Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} +} diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index 09a24ff5..db3f0e10 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,8 +4,7 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", - lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. @@ -60,4 +59,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 984dcd42..0db84679 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,10 +4,24 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, kmin = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - lon_dim = "lon", lat_dim = "lat", drop_realization_dim = FALSE, - verbose = FALSE) +RainFARM( + data, + lon, + lat, + nf, + weights = 1, + nens = 1, + slope = 0, + kmin = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + lon_dim = "lon", + lat_dim = "lat", + drop_realization_dim = FALSE, + verbose = FALSE +) } \arguments{ \item{data}{Precipitation array to downscale. @@ -117,4 +131,3 @@ dim(res$data) \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/SplitDim.Rd b/man/SplitDim.Rd index e36aa8a5..f07e4756 100644 --- a/man/SplitDim.Rd +++ b/man/SplitDim.Rd @@ -35,4 +35,3 @@ new_data <- SplitDim(data, indices = time, freq = 'year') \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/areave_data.Rd b/man/areave_data.Rd index cc79c85c..a772220a 100644 --- a/man/areave_data.Rd +++ b/man/areave_data.Rd @@ -41,4 +41,3 @@ areave_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/as.s2dv_cube.Rd b/man/as.s2dv_cube.Rd index 13a2a296..c2b8f3a8 100644 --- a/man/as.s2dv_cube.Rd +++ b/man/as.s2dv_cube.Rd @@ -40,12 +40,11 @@ data <- as.s2dv_cube(data) class(data) } } +\seealso{ +\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} +} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Nicolau Manubens, \email{nicolau.manubens@bsc.es} } -\seealso{ -\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} -} - diff --git a/man/lonlat_data.Rd b/man/lonlat_data.Rd index eca7abac..0c6ee30f 100644 --- a/man/lonlat_data.Rd +++ b/man/lonlat_data.Rd @@ -41,4 +41,3 @@ lonlat_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/lonlat_prec.Rd b/man/lonlat_prec.Rd index 69cb94e8..345e3cab 100644 --- a/man/lonlat_prec.Rd +++ b/man/lonlat_prec.Rd @@ -29,4 +29,3 @@ lonlat_prec <- CST_Load('prlr', exp = list(infile), obs = NULL, Jost von Hardenberg \email{j.vonhardenberg@isac.cnr.it} } \keyword{data} - diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index 48af7bbb..b0ce8966 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,8 +4,16 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, - Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) +s2dv_cube( + data, + lon = NULL, + lat = NULL, + Variable = NULL, + Datasets = NULL, + Dates = NULL, + when = NULL, + source_files = NULL +) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -75,10 +83,9 @@ exp8 <- s2dv_cube(data = exp_original, lon = seq(-10, 10, 5), lat = c(45, 50), end = paste0(rep("31", 10), rep("01", 10), 1990:1999))) class(exp8) } -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} -- GitLab From 76a81bdca7779cf6709904fd443ca86c6e8d9fad Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 4 Jun 2020 14:44:19 +0200 Subject: [PATCH 119/184] BiasCorrection na.rm parameter listed in NEWS --- NEWS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 655c96bc..bbb9a496 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,8 @@ - New features: + EnsClustering vignette + + EnsClustering has a new parameter 'time_dim' + + CST_BiasCorrection has na.rm paramter - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly @@ -10,7 +12,7 @@ + MultiMetric vignette fixed typo text description + RainFARM checks 'slope' is not a vector + DESCRIPTION specifies the minimum multiApply version required - + EnsClustering has a new parameter 'time_dim' and fixed 'closest_member' output + + EnsClustering has a fixed 'closest_member' output ### CSTools 3.0.0 **Submission date to CRAN: 10-02-2020** -- GitLab From 71e04d41205b38c4441379cc794b544425c28f17 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 5 Jun 2020 18:08:17 +0200 Subject: [PATCH 120/184] SaveExp is now working with arrays and exposed to users --- R/CST_SaveExp.R | 207 +++++++++++++++++++++++++++++++----------------- 1 file changed, 136 insertions(+), 71 deletions(-) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 1b3b4b10..3c0050a0 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -16,9 +16,10 @@ #' #'@seealso \code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} #' -#'@import s2dverification +#'@importFrom ClimProjDiags Subset #'@import ncdf4 -#'@import abind +#'@import s2dv +#'@import multiApply #' #'@examples #'\dontrun{ @@ -39,28 +40,89 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } -dimname <- names(dim(data$data)) - if (any(dimname == "time")) { - dimname[which(dimname == "time")] <- "ftime" - names(dim(data$data))[which(dimname == "time")] <- "ftime" + sdates <- lapply(1:length(data$Datasets), function(x) {data$Datasets[[x]]$InitializationDates[[1]]})[[1]] + if (!is.character(attributes(data$Variable)$units)) { + units <- attributes(data$Variable)$variable$units + } else { + units <- attributes(data$Variable)$units + } + cdo_grid_name = attr(lon, 'cdo_grid_name') + projection = attr(lon, 'projection') + var_name <- data$Variable$varName + time_values <- data$Dates$start + dim(time_values) <- c(time = length(time_values)/length(sdates), sdate = length(sdates)) + SaveExp(data = data$data, lon = data$lon, lat = data$lat, + Dataset = names(data$Datasets), var_name = var_name, + units = units, cdo_grid_name = cdo_grid_name, projection = projection, + startdates = sdates, Dates = time_values, destination) +} +#'Save an experiment in a format compatible with CST_Load +#'@description This function is created for compatibility with CST_Load/Load for saving post-processed datasets such as those calibrated of downscaled with CSTools functions +#' +#'@author Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +#' +#'@param data an multi-dimensional array with named dimensions (longitude, latitude, time, member, sdate) +#'@param vector of logitud corresponding to the longitudinal dimension in data +#'@param vector of latitud corresponding to the latitudinal dimension in data +#'@param Dataset a vector of character string indicating the names of the datasets +#'@param var_name a character string indicating the name of the variable to be saved +#'@param units a character string indicating the units of the variable +#'@param startdates a vector of dates indicating the initialization date of each simulations +#'@param Dates a matrix of dates with two dimension 'time' and 'sdate'. +#'@param cdo_grid_name a character string indicating the name of the grid e.g.: 'r360x181' +#'@param projection a character string indicating the projection name +#'@param destination a character string indicating the path where to store the NetCDF files +#' +#'@return the function creates as many files as sdates per dataset. Each file could contain multiple members +#' The path will be created with the name of the variable and each Datasets. +#' +#'@importFrom ClimProjDiags Subset +#'@import ncdf4 +#'@import s2dv +#'@import multiApply +#' +#'@examples +#'data <- lonlat_data$exp$data +#'lon <- lonlat_data$exp$lon +#'lat <- lonlat_data$exp$lat +#'Dataset <- 'XXX' +#'var_name <- 'tas' +#'units <- 'k' +#'startdates <- lapply(1:length(lonlat_data$exp$Datasets), +#' function(x) { +#' lonlat_data$exp$Datasets[[x]]$InitializationDates[[1]]})[[1]] +#'Dates <- lonlat_data$exp$Dates$start +#'dim(Dates) <- c(time = length(Dates)/length(startdates), sdate = length(startdates)) +#'cdo_grid_name = attr(lonlat_data$exp$lon, 'cdo_grid_name') +#'projection = attr(lonlat_data$exp$lon, 'projection') +#'destination = '/esarchive/scratch/nperez/git/Flor/cstools/' +#'SaveExp(data, lon, lat, Dataset, var_name, units, startdates, Dates, +#' cdo_grid_name, projection, destination) +#'@export +SaveExp <- function(data, lon, lat, Dataset, var_name, units, startdates, Dates, + cdo_grid_name, projection, destination) { + dimname <- names(dim(data)) + if (any(dimname == "ftime")) { + dimname[which(dimname == "ftime")] <- "time" + names(dim(data))[which(dimname == "ftime")] <- "time" } if (any(dimname == "memb")) { dimname[which(dimname == "memb")] <- "member" - names(dim(data$data))[which(dimname == "memb")] <- "member" + names(dim(data))[which(dimname == "memb")] <- "member" } if (any(dimname == "ensemble")) { dimname[which(dimname == "ensemble")] <- "member" - names(dim(data$data))[which(dimname == "ensemble")] <- "member" + names(dim(data))[which(dimname == "ensemble")] <- "member" } - if (any(dimname == "longitude")) { - dimname[which(dimname == "longitude")] <- "lon" - names(dim(data$data))[which(dimname == "longitude")] <- "lon" + if (any(dimname == "lon")) { + dimname[which(dimname == "lon")] <- "longitude" + names(dim(data))[which(dimname == "lon")] <- "longitude" } - if (any(dimname == "latitude")) { - dimname[which(dimname == "latitude")] <- "lat" - names(dim(data$data))[which(dimname == "latitude")] <- "lat" + if (any(dimname == "lat")) { + dimname[which(dimname == "lat")] <- "latitude" + names(dim(data))[which(dimname == "lat")] <- "latitude" } -names(dim(data$data)) <- dimname +names(dim(data)) <- dimname if (is.null(dimname)) { stop("Element 'data' in parameter 'data' must have named dimensions.") @@ -73,24 +135,23 @@ sdate_pos <- which(dimname == "sdate") stop("Element 'data' in parameter 'data' has more than one 'sdate'", " dimension.") } -n_sdates <- dim(data$data)[sdate_pos] # number of files to create dataset_pos <- which(dimname == "dataset" | dimname == "dat") -dims <- dim(data$data) +dims <- dim(data) if (length(dataset_pos) == 0) { warning("Element 'data' in parameter 'data' hasn't 'dataset' dimension. ", "All data is stored in the same 'dataset' folder.") - data$data <- InsertDim(var = data$data, posdim = 1, lendim = 1) - names(dim(data$data))[1] <- "dataset" + data$data <- InsertDim(var = data, posdim = 1, lendim = 1) + names(dim(data))[1] <- "dataset" dimname <- c("dataset", dimname) dataset_pos = 1 } else if (length(dataset_pos) > 1) { stop("Element 'data' in parameter 'data' has more than one 'dataset'", " dimension.") } -n_datasets <- dim(data$data)[dataset_pos] # number of folder by dataset +n_datasets <- dim(data)[dataset_pos] # number of folder by dataset # dataset names: -datasets <- names(data$Datasets) +datasets <- Dataset if (n_datasets > length(datasets)) { warning("Dimension 'dataset' in element 'data' from parameter 'data' ", "is greater than those listed in element 'Datasets' and the ", @@ -106,11 +167,10 @@ datasets <- names(data$Datasets) if ('var' %in% dimname) { var_pos <- which(dimname == 'var') if (dims[var_pos] == 1) { - data$data <- adrop(data$data, drop = var_pos) - dimname <- names(dim(data$data)) + data$data <- adrop(data, drop = var_pos) + dimname <- names(dim(data)) } } -var_name <- data$Variable$varName if (length(var_name) != 1) { stop("One variable name must be included in element 'Variable$varName' ", "of parameter 'data'.") @@ -127,13 +187,13 @@ list_pos <- 1 if (any(dimname == 'longitude') | any(dimname == 'lon')) { dim_lon <- ncdim_def(name = 'lon', units = 'degrees', - vals = as.vector(data$lon), longname = 'longitude') + vals = as.vector(lon), longname = 'longitude') dims_var[[list_pos]] <- dim_lon list_pos <- list_pos + 1 } if (any(dimname == 'latitude') | any(dimname == 'lat')) { dim_lat <- ncdim_def(name = 'lat', units = 'degrees_north', - vals = as.vector(data$lat), longname = 'latitude') + vals = as.vector(lat), longname = 'latitude') dims_var[[list_pos]] <- dim_lat list_pos <- list_pos + 1 } @@ -143,15 +203,13 @@ list_pos <- 1 stop("Ask for saving realizations or further dimensions to the mantainer.") } else { dim_memb <- ncdim_def(name = 'ensemble', units = "adim", - vals = 1 : dim(data$data)[which(dimname == 'member')], + vals = 1 : dim(data)[which(dimname == 'member')], longname = 'ensemble', create_dimvar = TRUE) dims_var[[list_pos]] <- dim_memb list_pos <- list_pos + 1 } } - # Lead-time depends on the start date - nlt <- length(data$Dates$start)/n_sdates if (any(dimname == 'level')) { stop("Ask for saving 3Dim fields to the mantainer.") @@ -160,49 +218,56 @@ list_pos <- 1 for (i in 1 : n_datasets) { path <- file.path(destination, datasets[i], var_name) dir.create(path, recursive = TRUE) - startdate <- gsub("-", "", data$Datasets[[i]]$InitializationDates[[1]]) - file_name <- paste0(var_name, "_", startdate, ".nc") - full_filename <- file.path(path, file_name) + startdate <- gsub("-", "", startdates) - data_dataset <- Subset(data$data, along = which(dimname == 'dataset'), indices = i) - standard_order <- c("lon", "lat", "member", "ftime") - change_names <- c("lon", "lat", "ensemble", "ftime") - for (j in 1 : n_sdates) { - n_data <- s2dverification::Subset(data_dataset, - along = which(dimname == 'sdate'), - indices = j, drop = TRUE) - pos_standard_order <- match( standard_order, names(dim(n_data))) - n_data <- aperm(n_data, pos_standard_order) - names(dim(n_data)) <- change_names - - # Lead-time depends on the start date - # The correct time should be selected from $Dates$start - time_values <- as.Date(substr(data$Dates$start[(j * nlt - nlt + 1):(j * nlt)], - 1, 10)) - - if (any(dimname == 'time') | any(dimname == 'ftime')) { - dim_time <- ncdim_def(name = 'time', units = 'days since 1970-01-01', - vals = as.numeric(time_values), - longname = 'time', unlim = TRUE) - if (i == 1 & j == 1) { - dims_var[[list_pos]] <- dim_time - list_pos <- list_pos + 1 - } - } - if (!is.character(attributes(data$Variable)$units)) { - units = attributes(data$Variable)$variable$units - } else { - units = attributes(data$Variable)$units - } - datanc <- ncvar_def(name = var_name, - units = units, - dim = dims_var, missval = -99999) - file_nc <- nc_create(full_filename[j], datanc) - ncvar_put(file_nc, datanc, n_data) - ncatt_put(file_nc, datanc, 'coordinates', attr(data$lon, 'cdo_grid_name')) - ncatt_put(file_nc, datanc, 'projection', attr(data$lon, 'projection')) - nc_close(file_nc) - } + Apply(list(data, startdate, Dates), + target_dims = list(c('member', 'time', 'latitude', 'longitude'), NULL, 'time'), + fun = .saveExp, var_name = var_name, units = units, + dims_var = dims_var, cdo_grid_name = cdo_grid_name, projection = projection, + destination = destination) } } + +# data is an array with dimensions: member, time, lat, lon: +# Dates is a vector of the dates for the time dimension +# dims_var is a list with the ncdim_def of common variables in dataset: member, lat and lon: +# data <- 1:(3 * 4 * 5 * 6) +# dim(data) <- c(longitude = 3, latitude = 4, time = 5, member = 6) +# var_name <- 'tas' +# units <- 'K' +# lon <- 1:3 +# lat <- 1:4 +# sdate = '19001101' +# destination = '/esarchive/scratch/nperez/git/Flor/cstools/' +# dims_var = list(ncdim_def(name = 'lon', units = 'degrees', +# vals = as.vector(lon), longname = 'longitude'), +# ncdim_def(name = 'lat', units = 'degrees_north', +# vals = as.vector(lat), longname = 'latitude'), +# ncdim_def(name = 'ensemble', units = "adim", +# vals = 1 : 6, +# longname = 'ensemble', create_dimvar = TRUE)) +#Dates <- as.Date(c("1900-11-01", "1900-12-01", "1901-01-01", "1901-02-01", "1901-03-01")) +#.saveExp(data, sdate, Dates, var_name, units, dims_var, cdo_grid_name = 'r360x181', projection = 'none', destination) +.saveExp <- function(data, sdate, Dates, var_name, units, dims_var, + cdo_grid_name, projection, destination) { + dim_names <- names(dim(data)) + if (any(dim_names != c('longitude', 'latitude', 'member', 'time'))) { + data <- Reorder(data, c('longitude', 'latitude', 'member', 'time')) + } + dim_time <- ncdim_def(name = 'time', units = 'days since 1970-01-01', + vals = as.numeric(Dates), + longname = 'time', unlim = TRUE) + list_pos = length(dims_var) + 1 + dims_var[[list_pos]] <- dim_time + datanc <- ncvar_def(name = var_name, + units = units, + dim = dims_var, missval = -99999) + file_name <- paste0(var_name, "_", sdate, ".nc") + full_filename <- file.path(destination, file_name) + file_nc <- nc_create(full_filename, datanc) + ncvar_put(file_nc, datanc, data) + ncatt_put(file_nc, datanc, 'coordinates', cdo_grid_name) + ncatt_put(file_nc, datanc, 'projection', projection) + nc_close(file_nc) +} -- GitLab From da11eb76a81e62e15bf02126333778dc20f5a623 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 11 Jun 2020 14:38:12 +0200 Subject: [PATCH 121/184] devtools automatic documenation update PlotCombinedMap --- man/PlotCombinedMap.Rd | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 616b84f9..c45d1afb 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -82,6 +82,17 @@ PlotCombinedMap(list(a, b, c), lons, lats, display_range = c(0, 1), bar_titles = paste('\% of belonging to', c('a', 'b', 'c')), brks = 20, width = 10, height = 8) + +Lon <- c(0:40, 350:359) +Lat <- 51:26 +data <- rnorm(51 * 26 * 3) +dim(data) <- c(map = 3, lon = 51, lat = 26) +mask <- sample(c(0,1), replace = TRUE, size = 51 * 26) +dim(mask) <- c(lat = 26, lon = 51) +PlotCombinedMap(data, lon = Lon, lat = Lat, map_select_fun = max, + display_range = range(data), mask = mask, + width = 12, height = 8) + } \seealso{ \code{PlotCombinedMap} and \code{PlotEquiMap} -- GitLab From c2bec810f4f25c47cb281c1644774d491f26c76c Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 11 Jun 2020 14:39:22 +0200 Subject: [PATCH 122/184] Fix in PlotCombinedMap added to NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index bbb9a496..2a9cffb6 100644 --- a/NEWS.md +++ b/NEWS.md @@ -13,6 +13,7 @@ + RainFARM checks 'slope' is not a vector + DESCRIPTION specifies the minimum multiApply version required + EnsClustering has a fixed 'closest_member' output + + PlotCombinedMap handles masks correctly ### CSTools 3.0.0 **Submission date to CRAN: 10-02-2020** -- GitLab From d6c9c5416ed13e94668becefc5f6cc8860f5aaba Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 11 Jun 2020 16:33:19 +0200 Subject: [PATCH 123/184] devtools doc --- man/CST_Anomaly.Rd | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index d67276d5..11574168 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,8 +4,14 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, - filter_span = NULL, dim_anom = 3) +CST_Anomaly( + exp = NULL, + obs = NULL, + cross = FALSE, + memb = TRUE, + filter_span = NULL, + dim_anom = 3 +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -61,7 +67,7 @@ anom6 <- CST_Anomaly(obs = lonlat_data$obs) } \seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}}, \code{\link{CST_Load}} and \code{\link[stats]{loess}} +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -- GitLab From b2e6be3232a19cdae61b2b18344828e84795045f Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 11 Jun 2020 17:43:57 +0200 Subject: [PATCH 124/184] filter option added to NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 2a9cffb6..f108f5db 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,7 @@ + EnsClustering vignette + EnsClustering has a new parameter 'time_dim' + CST_BiasCorrection has na.rm paramter + + CST_Anomaly allows to smooth the climatology with filter.span parameter - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly -- GitLab From 2516bb85ee13ef414704ca1c0cb1d2b3c1a5f1cf Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 12 Jun 2020 10:21:09 +0200 Subject: [PATCH 125/184] Fixes in CST_RegimeAssign to produce the vignette --- R/CST_RegimesAssign.R | 46 +++++---- vignettes/WeatherRegimes_vignette.Rmd | 135 ++++++++++++++++++++++++++ 2 files changed, 161 insertions(+), 20 deletions(-) create mode 100644 vignettes/WeatherRegimes_vignette.Rmd diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 7af20f15..8d544b27 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -14,9 +14,10 @@ #' #'@param data a 's2dv_cube' object -#'@param ref_maps Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. +#'@param ref_maps a 's2dv_cube' object output of CST_WeatherRegimes which element $data is an array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching. #'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. +#'@param memb a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'. #'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), @@ -35,9 +36,9 @@ #' CST_RegimesAssign <- function(data, ref_maps, - method = "distance", - composite = FALSE, - ncores=NULL) { + method = "distance", + composite = FALSE, + memb = FALSE, ncores = NULL) { if (!inherits(data, 's2dv_cube')) { stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") @@ -47,16 +48,16 @@ CST_RegimesAssign <- function(data, ref_maps, } if ('lat' %in% names(data)){ lat <- data$lat - }else { + } else { lat <- NULL } - result <- RegimesAssign(data$data, ref_maps, lat= lat, - method = "distance", composite = composite) + result <- RegimesAssign(data$data, ref_maps$data, lat= lat, + method = "distance", composite = composite, memb = memb) if (composite){ data$data <- result$composite data$statistics <- result[-1] - }else{ + } else { data <- NULL data$statistics <- result } @@ -83,6 +84,7 @@ CST_RegimesAssign <- function(data, ref_maps, #'@param method Whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. #' @param composite a logical indicating if the composite maps are computed or not. +#'@param memb a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'. #'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), @@ -100,7 +102,8 @@ CST_RegimesAssign <- function(data, ref_maps, #'lat=lonlat_data$exp$lat,composite=FALSE) #'@export -RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, ncores=NULL) { +RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, + memb = FALSE, ncores = NULL) { if (is.null(names(dim(data)))) { stop("Parameter 'data' must be an array with named dimensions.") @@ -112,7 +115,6 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = if (is.null(lat)) { stop("Parameter 'lat' must be specified.") } - if (is.null(names(dim(ref_maps)))) { stop("Parameter 'ref_maps' must be an array with named dimensions.") } @@ -150,13 +152,12 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = stop("Parameter 'data' must have temporal dimensions.") } } - - index <- Apply( data = list(target = data), - target_dims = c('lat','lon'), + ref_maps <- drop(ref_maps) + index <- Apply( data = list(ref = ref_maps, target = data), + target_dims = list(c('lat','lon','cluster'), c('lat','lon')), fun = .RegimesAssign, - ref = ref_maps, lat = lat, method = method, - ncores=ncores)[[1]] + ncores = ncores)[[1]] nclust <- dim(ref_maps)['cluster'] freqs <- rep(NA, nclust) @@ -178,11 +179,17 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), postime, dim(ref_maps)['composite.cluster'])) } else { +print(dim(dataComp)) +print(dim(index)) + if (memb) { + dataComp <- MergeDims(dataComp, merge_dims = c('time', 'member'), rename_dim = 'time') + index <- MergeDims(index, merge_dims = c('time', 'member'), rename_dim = 'time') + } recon <- - Apply(data = list(var = dataComp, occ = index), - target_dims = list(c('lon', 'lat', 'time'), c('time')), - fun = Composite, - K = dim(ref_maps)['cluster']) + Apply(data = list(var = dataComp, occ = index), + target_dims = list(c('lon', 'lat', 'time'), c('time')), + fun = Composite, + K = dim(ref_maps)['cluster']) } output <- list(composite = recon$composite, @@ -204,7 +211,6 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = poslon <- which(names(dim(ref)) == 'lon') nclust <- dim(ref)[posdim] - if (all(dim(ref)[-posdim] != dim(target))) { stop('The target should have the same dimensions [lat,lon] that the reference ') diff --git a/vignettes/WeatherRegimes_vignette.Rmd b/vignettes/WeatherRegimes_vignette.Rmd new file mode 100644 index 00000000..6a4bc6f9 --- /dev/null +++ b/vignettes/WeatherRegimes_vignette.Rmd @@ -0,0 +1,135 @@ +Weather regime analysis +======================== + + Weather regimes are a set of patterns able to characterize the different circulation structures occurring each month/season. This vignette aims to illustrate a step-by-step example of how to perform a weather regime assessment using s2dverification functionalities. + +### 1- Required packages + +The functions to compute the Weather Regimes are part of CSTools while plotting functions are included in s2dverification package: + +```r +library(CSTools) +library(s2dverification) +library(zeallot) +``` + + +### 2- Retrive data from files + +The data employed in this example are described below. +- Sea level pressure (psl): this has been selected as the circulation variable, however other variables such as geopotential at 500 hPa can be also used. +- Region: Euro-Atlantic domain [85.5ºW-45ºE; 27-81ºN]. +- Datasets: seasonal predictions from ECMWF System 4 ([**Molteni et al. 2011**] (https://www.ecmwf.int/sites/default/files/elibrary/2011/11209-new-ecmwf-seasonal-forecast-system-system-4.pdf)) and ERA-Interim reanalysis ([**Dee et al. 2011**] (http://onlinelibrary.wiley.com/doi/10.1002/qj.828/pdf)) as a reference dataset. +- Period: 1991-2010. Only 20 years have been selected for illustrative purposes, but the full hindcast period could be used for the analysis. + + +```r +sdates <- paste0(1991:2010, '1201') +c(exp, obs) %<-% CST_Load(var = 'psl', exp = 'system4_m1', + obs = 'erainterim', + sdates = sdates, + storefreq ='daily', + leadtimemin = 1, leadtimemax = 31, + latmin = 27, latmax = 81, + lonmin = 274.5, lonmax = 45, output = 'lonlat') +``` + +Notice that you need the files to be stored locally in your computer or server with correct configuration file. If you are interested into run this vignette, contact nuria.perez at bsc.es to get a data sample. + +The objects returned by `CST_Load()` are s2v_cube class. They contains among others, the array with the requested data. + +```r +> dim(exp$data) +dataset member sdate ftime lat lon + 1 15 20 31 77 186 +> dim(obs$data) +dataset member sdate ftime lat lon + 1 1 20 31 77 186 +``` + +## #3- Daily anomalies based on a smoothed climatology) + +The weather regimes classification is based on daily anomalies, which have been computed by following these steps: + + +```r +source("/esarchive/scratch/nperez/git/cstools/R/CST_Anomaly.R") # to be removed +c(ano_exp, ano_obs) %<-% CST_Anomaly(exp = exp, obs = obs, filter_span = 1) +``` + + +- The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span=1`. + + +### 4- Weather regimes in observations + +`CST_WeatherRegimes()` function is used to define the clusters based on the sea level pressure anomalies from ERA-Interim. This function is based on the [*kmeans function*] (http://stat.ethz.ch/R-manual/R-devel/library/stats/html/kmeans.html) +from the stats R package. In this example we have made different assumptions: four clusters (`ncenters=4`) will be produced and the Empirical orthogonal functions are not used to filter the data (`EOFS=FALSE`) just to take into account the extreme values. More details about the methodology can be found in Cortesi et al. 2018 (submitted). + + +```r +source("/esarchive/scratch/nperez/git/cstools/R/CST_WeatherRegimes.R") # to be removed +library(multiApply) # to be removed +WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFS = FALSE, ncenters = 4) +``` + + +`CST_WeatherRegime()` provides a s2dv_cube object with several elements. `$data` the 4 weather regimes composites are stored while `$statistics` contains extra information (`$pvalue`, `$cluster`, `$persistence` and `$frequency`) which are the needed parameters for the weather regimes assessment. Further details about the outputs provided by the `CST_WeatherRegime()` function can be found in the package documentation or typing `?CST_WeatherRegimes` in the R session. + + + +### 5- Visualisation of the observed weather regimes + + +To plot the composite maps of each regime and the mean frequencies of each cluster, we have employed the `PlotLayout()` and `PlotEquiMap()` functions available in s2dverifcation. The object `WR_obs$data` is divided by 100 to change from Pa to hPa. As the `WR_obs$statistics$frequency` provides the monthly frequencies the climatological frequencies are obtained as the average across the 20 years of the monthly frequencies. Note that these frequencies could change as a consequence of the randomness inherent to the iterative processes involved in the k-means. + + ```r +clim_frequencies <- paste0('freq = ', + round(Mean1Dim(WR_obs$statistics$frequency, 1), 1), '%') +PlotLayout(PlotEquiMap, c(1, 2), lon = obs$lon, lat = obs$lat, + var = WR_obs$data / 100, + titles = paste0(paste0('Cluster ', 1 : 4), ' (', clim_frequencies,' )'), + filled.continents = FALSE, + axelab = FALSE, draw_separators = TRUE, subsampleg = 1, + brks = seq(-16, 16, by = 2), + bar_extra_labels = c(2, 0, 0, 0), fileout = 'observed_regimes_day2.png') +``` + + + + +### 6- Weather regimes in the predictions + +Predicted anomalies for each day, month, member and lead time are matched with the observed clusters (obtained in step 4). The assignment of the anomalies to a pre-defined set of clusters guarantees that the predicted weather regimes have very similar spatial structures to the observed regimes, which is an essential requirement for the verification of weather regimes. This is an example of how to produce a set of weather regimes based on the predictions that can be verified with the observational dataset, but this approach can be also used in an operational context for which the probability of occurence of each cluster could be estimated. + + +The matching is based on the minimization of Eucledian distance `method='distance'`, but it can also be also done in terms of spatial correlation `method='ACC'`. However the computational efficiency is superior for the distance method. + + +```r +source("/esarchive/scratch/nperez/git/cstools/R/CST_RegimesAssign.R") +WR_exp <- CST_RegimesAssign(data = ano_exp, ref_maps = WR_obs, method = 'distance', + composite = TRUE) +``` + + +`CST_RegimesAssign()` provides a object of 's2dv_cube' class.... list with 4 elements (`$composite`, `$pvalue`, `$cluster` and `$frequency`) with similar information to that provided by the `WeatherRegime()` function. Further details about the output can be found in the package documentation ([*RegimesAssign documentation*] (https://earth.bsc.es/gitlab/es/s2dverification/blob/develop-Regimes/man/RegimesAssign.Rd)). + + +### 7- Visualisation of the predicted weather regimes + + +The outputs of `RegimesAssign()` have been represented to be compared with those obtained for the observational classification (step 5). + + +```r +PlotLayout(PlotEquiMap, c(1, 2),lon = exp$lon, lat = exp$lat, + var = WR_exp$data/100, + titles = paste0(paste0('Cluster ',1:4), ' (',paste0('freq = ', + round(WR_exp$statistics$frequency,1),'%'),' )'), + filled.continents = FALSE, + axelab = FALSE, draw_separators = TRUE, + subsampleg = 1, brks = seq(-16, 16, by = 2), + bar_extra_labels = c(2, 0, 0, 0), fileout = 'predicted_regimes.png') +``` + -- GitLab From 873e0a472f7057698fd9f729112b6e1102272f72 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 12 Jun 2020 11:11:55 +0200 Subject: [PATCH 126/184] Comparison against old method --- vignettes/Figures/observed_regimes.png | Bin 0 -> 263072 bytes vignettes/Figures/predicted_regimes.png | Bin 0 -> 257469 bytes ...ignette.Rmd => WeatherRegimes_vignette.md} | 23 +++++++++++++++--- 3 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 vignettes/Figures/observed_regimes.png create mode 100644 vignettes/Figures/predicted_regimes.png rename vignettes/{WeatherRegimes_vignette.Rmd => WeatherRegimes_vignette.md} (89%) diff --git a/vignettes/Figures/observed_regimes.png b/vignettes/Figures/observed_regimes.png new file mode 100644 index 0000000000000000000000000000000000000000..404a94720840d54a671f9186a783b867887a7e35 GIT binary patch literal 263072 zcmcG!RZv`A)GfM0umlSU4grF@y9Njr+}+*X9RdUobZ~cv;KAM99fG^lxSai+bN*X( zAMeBM+Ef=^+vZ$zjWK0}$;*nPyvKVF004@l#5Y9%fRzS-x5S7r;4k%;`oiGXJ9`NY zCjdY*`0wvckzk<(01yL`--MLi(~ei&^p$2`fO9AD8}ljWvpg@xtbFl1r%^Kv2K>)S zasiU4|MzkspZC&^|Mz#qLnZyVxBut1Lh_j~5Q6`6Q^ddrjHK=VdE!iA$N%R?tSw{u zdk)N&s?}6iAGdFEwdr@l5WKD<{Oc$3n=xkt{I|Ea|NQx*TVxp1Y`-CFYs&z1jE~zL zFI3e>QOc%K(bLyGuXyv$d~SQXl!_yJ0~qy1#(vLl)%lDV*aRQRRo?k?`bfX$z)nAI z`qsqQcxG0%78VYhCFkpXg<|C<>qQnVb4e*Ftp-~i zPtT_Eky?vs!t!5`goFZRnv?eWHq;X=_g|kM?(ap##g}~xEFKoBj4(tO1@+xrF1H7} zL(z_$o7k=9_^w7+S066?iHi`fLw`;$;#2Qeq9Z&#djPM+YFzriEI%Yuk)K5+3(*qYfNQsRsIg^G`p6IBI0sbFMyBW)&2LzjmziZ z`svAgITIQFZRWV$%bVuJ#TqlD;I7jb_pcvj-ad%*92`f@6!?jyNhLBY3ZhLH%C$Qm ze2nChmkX4XB{FLd4e#A-So0jNugb|0riss?dJk~f|MSsXVF-x*Eg_El*JkZnMucoYA%Rr13VPj^= zII;Ly^VQcZ^=!g*M>1|?bady!T|huULqp?4bM9IrQh)z;0`*kSH6mcgA5D##GeI*mrsn3zxTwk(U z*xPJTr|EXGWU@>G89attu)gUGLMT@~>WjipmNvbDNng!|p3&OT{;^%)N!JWK5F=|O~r3HW;6i>2>Mdv6c$sfpA57QdwOx(zuKT_EG$)$O6e*}x>cRnk)al@Z43>+g4^lE= z{zJqCRJTgYTCLY+-Ar&7>;1Lwd?`Jlceg)jOXVOyMd)S%05Be^)O8&9v31=IpogG~o?k zVPRp{ase+H*W23*_(Le=#!}czOG@4Y`m{#vl&UH!i>C7$E$*NbB5W9?<>ZL?J+B8L zl&M7d+1c4qJa>0@3%>UD_WKg)!^6W-Vnz{BlyVt)77zD(nd5_lRcgh(Wc2hUlbsK0 z;H_Y!uMBPG?blj7>S^cjQb%na9IQ24QoU|ZSKEAe0b&*w$FsFo8=}*SW4o19ySDqx z*Czx(UQKP@F!b@}M61QU>LmOPPyhmz@6(-V1Qt51!{H1yYUuQ05Ka8|Mr~iBx?tk{ zjmc2bF`pF+gPsFKFz`*z-v0XQiwFR)B-3$m;Q;zp%o5Vl#x;xe zT{kR%KenDXv!Eam@W*4`tqd`H3>`>t4+50qTT|3o15LH!^kKo zU;t}K1ps(^dmpQ`TCww}zjB1vDI}Mb(P=SRMGf!N`;dUK-RynusH>Y{g9a0jbw48p z8n!!EuJ!5TM^pl?KcMv-H{eeFYc`&-Gn}}$v$M!aK}Kf1+BDnN4f^*puPYk|$C7XS z_xzom9n%^Q&_zKAXtvE6V05KJ&%dSBpVgimQlb}b>GuRQy_I&%s;B}P45XSxKNm+w z&30cO{GAvg!3udQ0Jy)u=XE{)V^hoDXhBaw(RVXZ;l^Is2ayw4jD1*^W2K+~pA8HA zJ3Y;ai<`O$n5)#YL)tE9*ORHNdwtpyY<4}VzHN$*j@GTSj6d0XeYtJ_&zwf5J2jEUD3jOC7L3#U{Cv>r z)jtN^W9hu9nPVj?rSQl&6B|f?&;)6jo%nwXwtAuv#+437iaPTd+^2~knVv;3wiT6^ z^E+-2bOgLj4JC*pI&vJAZbP6bGnjklTlKJ zhK6#k8)h!u#ZG*NzV7G7Eba5zSC&3ZiW4nv$~Zb+f^T45Q^bBdCB=viYp{HkCkZJj zDOr+mJSK_(?ODhX_4R!Loj^-VEBJKYJ@PhX)_qj<>lpY!1msrnVH%0l06E1 zH~0jb>3_)h9A!aob%ut9H097d!TsB+dvYhD#a`exie~&Ux*~yncu(np3 zBO@a#(`lZYgEWi23D3a-Sp$DrQ(oSFdjK8q|3*?ZE@J7$`36Y0IRas7aC}@&R@N8f z%;{+m6OrM!y3qu;FWeh!SF3$sz91ehgJ5fME4wU1*!a`vh&pTffQ5y{(8y@i6ihid z{Lv8(HJAnuwn#`wE-x?f@bPa?md!X)Z6Me4GczN}to^F`(*-j1=)Y{JsHr98H2y0{6xR8umk|% z>GNswJJy*TpqL~u7%|^hK=Y&z?ul)vSgY7G{!o(WPcg8aKtt!7pu-u^b zJl>u$g7>I3SGdCd@9Mn~3!VIW=45HD`})L2KBwKt@&*Q>51^M{KY@gQlI5 zM6vtLf*1^j)w+=INFOO`wQdCs* z<>h5nCm?hsiP;D=SxRB1$>nIxV=sNJ0xT)z)dJD?vSCPNU*BjsX1$n$1(;EPG<&ji zJ+(|Te(LD%bGeHi(ttUeB1WC>^TV9dK3G-qAL{pb6oKiXA6Qr(#_;j;+k6gg2a))8 z-LJi&bh`3CRNWm-1pqU%J*?-uFJL_i;5ZNxGHqVd+PktBWoov1)^+N0fp`icHFdb> zGj!goS?qZdeU}D5W1Ex(rQQ0bEMyaL=y_kjNyY*G4qJVa`BVSLK(_$&!g;XTT>pO+!O{Q!*VgV= zdWVOHSd1EmY&a)cNput;8vqbTMitjIe1yvty@fcHI;a@Yw1J$~slQg2H);M=A+pyH zsyv$|FlNl6Nv{eI3ER4B9RjlrB@Dp7)A%1(ZcV8FF!bgRSgy6o_G2T0=?`^yH4H5P zh%nRs(WJuy0GJQU%TYO0Az*_eJO?qZLq2lQ7*9qFHB?FoL+InETLkc9(0FOcjVL^4 z>5l4#4>h#r3K9cWtEUh1O-)U`NLV;1o{v}*kT4@0z@Lmdj^t$drX_*VJ zL>yVMDLO)T@<{Wm9)1)BhNwnabAPTtpXI?bFJ|D)EjtoWV?2s|jQZyHa%v)fI z0lqGq@{B2%oSdgsw`1?o(@P1%qCbj$iZdzxQbWHH&&3hyyrSXDr@{a%@8fRLgQK}H} zIUPns1o&D##aPX~(zE@$;};W0Xt!b2B7tj+%4!HxDl0<)u8bJ1jfJJ6r7}&BP~~)y zMG7IWM~XU$K^1p~?i$w?!S7Vl>O;3HfYqJsy_XK2#Jtg0sP>YCc> zLwZfc`_cYg!0~%qPLTE(v*|Rt3+!1IOzL+eBd4nl?_9dW2!wWbGtF4mr9_J5PIj0& z)M`d88vlle4Hgp%7Vl-^&D0-;(w}L|CuT{&bTh#|ucIspPbbO}7FSe!L9Efvp1_g5 zOtFjzh6jG2Nk}I%>C94%x5uh@^NO#|AOc@Mka6+o;$fK1710dS_K$1W)6za~-fzj; zW|W9EHa9S)_HSL@$-HkADx9@qhi{D@-s0tHUPA5Pw8xQ7@KevT(>FJx)zi|YsVwC< zboNZ|E1Ji3)@+qEnm8!KLP}&*|FbDmn`)$m@O(E|-__OSMa~@@99&#%_IVL(s+m-! zP-_}d5HyzQQ!;<;h!6KfeJgbdMRdi|NJXZ@FfrhNW{dixUW4(S6)X>n-U*Ayi=|A( zvYFIH-`Hc;;Lu^X>^Yt{`;e2+&7Cy7?{jZza^eO6!e}I1F5s((qGx!udO2QP9KMV+ zas&qN`FZH(v*(8;O&vS6H;60utvbQB1_kuVQA4TU>tYLV5leEZP(vnR0X8eU4|DsP9g+9vPr(wRGRs${@7zUy!45yg%d%qU2F}kSC7H^JwHP;f>Hi! zI4b*e_RjOmaJ6|MT};H}{Na9tS$+d+5``zsRAXtNR^7 z;S6oNYs`1<((svszwje@K4o)!@(kQ$#bxl0KCvf&AM2{JSL@d|a{!$^msdQw?_#Pb z^~;mBnEjJx;7qb)#4L?Ivua_F(d|p##R^$^oBFNQ)tQ;rx3mO}wuYE-yW+%?_9+aP ztB2VcrT!Sgr}zSkbXBLraS_gH7DchBWEQJ6|DL?lqWqlfHDflO#-^%8dPvdIVF|>K zFm8SpH!9>|32#{pjqyxmk9C1Sw%H3yDy{ALX*%sl4INg2Ivzt529U>q-o#tZl%$k= zC(L9-K}>nx>w9af4b2`G9bd!eMByZhZZi>4TZcq+V|MaC4=j#;8X_OI=38SmRUl zLpZb!fBotbiYb-W;**bd$(H}k!n*y#%zGK7de!~rrN@_$_4YNe15_wb7nvi0n#hRq z4lVMhMNu(bGsMhFOP?u;HL*pX1&=V5XIYT08Y+utSrYwvy*fG~W#V?JYWvJ((6f*? z`AJMBb6B5c)hAE3; z!#g_&k{TMMP7=o@rM>#?qZy-ye`=y#;mw@S%hPE@J<{FJ&(Vx2=CAS9>NQq7g%KsF zd-0Q45p&kuzJ*VkF5Mp}`@_~w9pYsBccabOK2e0b8rEo1D!7PECog#h4_fEYL&YFA zxx9(bR|90O2rtFGbbV;Om<=i5Hnj}Qqf-UIX73tbbO@Oh3I#*7)cs1bukO3CXdPc& ze(4IeYgbJFnoK1-wd|v0i{ay%L}7v-TJYa`zkkDvd&vI#)TF3VF|Bqq`g`_0@PP@Z zQWW0nf{TP=I<;TOtFE{P?bi=a=Nt0hz2WPR5ih$nYV899J2f~F2q6l!!TrWR8hON; zxmB#3;Vvoogo-t@Q$(Wb} zJ@R^06FMC>I{6>-n-keW)ruV3vY zzS{rvlm8hMBvCo7qNb|N9RReJ)?sCo6owH;BLR7xaYtdU8lOqaR+Et(Lsw1(2b{%O7{+e|#h z{;bT8L8{+>>DF3O*-|SAxH~Yz;pLL|Hc8(CD|~*N{ZXY@HcP$OQnG#x5u-b#h>9vn zT6(H%55?Fc@Xv#G0vizo5F)+(?VSkXqFKvHc6JWs-xF-Tm_MILHoHP2y?;$-BRWaS zns&z5K1E(xigw41Hs>q6CA`LarkA+<%DGViy`0(5^Sk!|%TJxxl!SzO=efvTNm-{I znv;!)20zA1nz=)Ax`Gfg6PTARU){H91i{h-fIlhKZ71H>GC-Q&Bm3cua0v$fbinZ8 z+~Wl%L%JjJox3o+h@1kun38Af=3aHl2ZW944~zQP@2=W-^ao^2VS#t4!N8x(A(Z4_ zui8KT68(tc_ilWvFC^?y{n%J?#8{c3+rhy?zFdKuh>kLg&e^iD$A=huWUi()=A}@1 zQJZYBM70?W|nfL-)LlQ>qZxnrMxMV-^hW&qHy(;QFd zdzrq~Gtri2-G|b@JUnNAVtxx>r}HkQAOh*Kk&iHO96Rjuq@P$s$z}B>@BL-SL*R1b zk45LBK4@29OYnG`x~{gewtHc*!Ui!`vxmFqVy@X7*@Dao1Bg52#gPZ4Y^KwM>6Knt=q%iI;kCiC?akro;&1m($ZSBKPU?WmzqnKq9#&ujwC_I8~Q@8p%6|td{R% zh~%r98bNf2!S<(Nu`$2h7ug=+Y4P^Ev;6h;M0a-tG(4<0rV&OG)T1fis~FWdRZN;zIN1FJNs(BR zqIGNPIkVIw-?BBW>eVlmQ%Ist2Z43R^lar)I}$_$`0n`bn@tB{(XI|55o90(ai!B4*&cd>VG?e)USyzY*}U3{7DGNHeD+PxTltU*ddec!B7==_h#0fXEk zqEA}8GWKZ1&qc{ipEXk^(wl*K^F=nfT76y6@45L1PJrZvsd&#m*{mgzb&WsBm~f1& zaOZPEUeRDTylg7#Yw!Hp2gI|Fd>>$O1x#1YnYZY$q-Y@$y&g&_qLcSCYbl!Y@!!GNIXmy%aJJG0JLp) ztAjPSTbQDlK;P;nUXNNsSaQ2;88 zob6-lZzT4n;5}Bv2spr>tVL1jCqREQtX4l(KY9k=RpN-5jsVHU!Fk82KJwMd zzfWJU!A$5|yyhOoziRumU?Z;@Th7C%j}?DajkqqZm6=1~fFxY>Kj(!??}Ml{4lnvo zrm!TV1M+iUyNq|Y%4^xT$~wNwcS(1!NH0J1B^cg)R9xz)OIziUq9?v>8rF z1KS>iTn?u}GDnPs>0X8xQ_PTp2ZUhf{s61eQig(zd&j-d9rE6KdRxK_;n)Fd78D|W z+d-sCiL~Zw_EE#CfukddKqhd`RTI{07}2wtQZjUQ>z&}byWNN88jZu-hJWITT-m3V&1idUXnO`Hs- zZwuyb^#30%z^@+$V{3{)hhL&BEB^IX0v)Ba7)K&w1g`OvMarQSuC*#Oov%hnd>X@m zZ9#W<_nkz|!3bKjk8sYn3PL)Dm`-B@u3X})Krw|ge8OSisj=K#kWR;6)ZvxGbLl@O)C?3E(RLGFO_bi@!eP~ z_N+FzySpvK6XR7Z`{);198Y@$){c z*PFlsB+Ns*%AG5X$Of?&JAacXF~Qr=twF_@+Jg%&iDOx8p1ZVIPE6^N^h^oV8a_j-at58uqzdO}dx{$@T|romV5>Ll((0hd zz!obm9f6Vl{{2)6eEFBT>Ex&_8L^s%pF}68*Y0_OHAi9we8{8hHsg|(^ka5^I+lFh1i0koWQ4{%c-mhdm@YBxdyEFS68~4*RTd0 ztVz;@nK4FSRhg@B#D*81Q;X+v)#buI3myQ_D*Nb<8?8C(%zd(wzTBAK8w{;u_e`&^ zZyK_!yMz;lhk%ZmsFf|n4F3ix7=O5$Qi;8bCAxkG{S#4K$k}@DX(F239BQU-uWqMS z=(mALpu6~dbQ+Ij6>$}WfJ#5m(y@8@-KqMRRLdTInw4o}ZN`Yw73yx#9}_CDYB^f%jJ!A-&q+t|k9d zrp9cOszYv}@@k_f4lqE-1@@UajGajg>L|PcZ0;$H;2d)~ z+0Mo8w7=HxBI4I3ioOi$-1jzLMu>=Z(Z9|40Nf$31Po@C&lyHl4Cy0dT()|+oz0r6 zl})y$I0V(IJ78>VaD{+FA9~3{iST;Ox>s$u>^1WeP8h&HI){*{d-8*Eh_FV{T>QZ` z3I!x1=LngC7Jz}b#g72t6G}#}zq!S~>gQ+uvzxylEhNiJ($0Lvm9_o5o%7b8=U^YF zkBy-TZ&UC41H)b$UX6W4l&WV)%WFgWjg3{=7sTtCnCVt#Cqd8cec3+A6tulsq>D;k z@#e5n_D}SQ6hP|7VjuPpNKSC1syzNGo9*ALoH}CnS#BQk`{$_Qe$?hMw1_PYD$1E;-)R=1P_#=`vF)e&yDLwAVc!N$(X@!=uy z$B3S2oDkfozRS3rt3tUX8PnwrvM~k`MKK1gHpRpB#x)q3p}y+Pu99#^4<8>9ozcZl z{m7orGa63$Z-jIO+Pt$T20>9k`Hr#pME6A8Ibz*56+Wg}^s|P7YK|gDhJdH>Xvk=8 zpWLqf^8My)Na)7HZO)_BAa}Kw*IbpJPqz_RbKIUh?1+^wC5ZmiUR}Sta9+k0HSvv( zh!Kn!wkoTTSZz0(_>sK!Md35Ixr+f|>M-kJ-FnM&j!^DRL}ZLKA-{Ro)@{1)c7En8 z+t60ObZ@fXD2?w;==j*nd9rSoV%=W9-WBaY!?|Ob@dhRVEFX@2}42r;7bxrKA z=&*16>oqlSnkZx7XLC`cR7~J9%+Ml6 z^ty71V>$haFqZr^lepd}l}$3>nBJyor<^p3B6fA}*%+Hc>Dl~v;gP|IO4Ltooq+Tx zgl!x|&&_{qU^QsL@@emIJKi%WoOpbWqbwYeaATt@z=^c3cv#D^zCibJM^&LL^y(9H zC*!MwtPP2^#*fgqjL>9U8#9c>x^N)uZOkB*nuTC{94{>m@lvZuX4NwEJ7GjNJNo#m zudE3R+PO3Cr)^eVntyH6F|55RC_G!&_P9r9gPN{7ZFP@BtX6&-*HvNqvs^)W)AaNchI9AY36BFJHU zXC&8NyQyo!W~pMM5`$nXeDJNq$H(%#KJwn z!QtC0?%kNIYSpQH8K7i4TzO$UHP$Jk9`ZUl5`0~#sv==D1F;5Ogs9mnL@5q(|J+=; ziCo|&u??LLHLG0v&16yEGfjC@C7FnJBDdOLwlw_uk*gll{gR_>a6 z;B&c^vXwvOG5(jp{k2ygqnn!|*7&g?w8a1UB+K__wYuK;(BLmlR7Xc-^mqB*yCa*4ktKbkSWVQq121h-2ugFe;a}$0(vAm7@>5d2Tj*$`}c+K8#xoll4U=bhUX+nC(K&TTFxNDvkEwzOI4Of;U-PwJVlj7 zrk~lh#=5}u<5mTI>>@F;F5S2PyYeO|^Z@~`yEyYvuIB4F=gTiLW>b0Pu3x|DiOy`> zRxRsvrTKMK6a>I9vMGyQ@ms@dek8P;MrRlG@S3AjVxP&u!Af9LBzB#m*}?SSR?>AR zWihdiKxZs|Y?FArKXQ<(l%G>gUv3x2!;Q&O*E#syl{Igr{827*aJ+mYf_!S=ZVrKF zbdcwA(N)Dq=KAM587Ot(s$ z4i1ow#@~EpE>FPpzYgicYjr4?DLuQU@&s0yVG8S7;CD7N$7d|Bxxyon&s}$`@SXdP zHG8#45u%Z9ESNWUYG@n1DtF7jN0%#G36B5e?-+&?`2`a^^z|2*2~|q`aoq;qCHl~|6Rm77487$#Kaw~{;KF6?N--&#- zPP2QPshG4dU2HeBrLh3zq+y$C+cCrc6?!TMk0OcsF2;JxYx(W__b9K{>y<9Evml(H zy?SOb3EIuvNfPf0t z-b2fh!m*TF;^(<6*$YHOotH(s0|dW6qiSMFk-69{No+PRlZ-D;=UXyCg(D^xcUa+5 z9MsM-L(7S>Ua&tNg8Ri#@P{|vP5ItyYG|3Ps~EZT%AJ+Vq;Rym#5qCl&isy7_X$K@8Js#Vs;wGr^spIS+@bD-&hG#!q8Mz>s zv3yNPm4l=uljfU-`)<8EZ_^2a2w+!lTj}KoUXAUw(;VAuP%lC6AX4}*Vyo$OWEaHZdWlm3v|n?h1l9)^Vf|wU&@|Lz@cB^x7Pz)4;_U7i8#03#ci0G`|db#>t zTp;k?_^umH;zK3}cAZB>oH0bx({u>Z(~c}lcc4((xi(gpn-(w3Hph*YYK6{SdqhaF zR5Ys4=Xol-JKyosTfyaJPX!8w80-%OCG!X0!%u&RcOKY!Mt4kFjN~M~0eIpsXE-zU zxd{2FxZUL)HBO<&HGY=AFH>?_!j~8M5UTWyTjC1@^;*BtSKcBbUZ93aXEYK!3~5t5 zW;9gC9gl=uZq7V=^)dL8gFh~diMv(8;R{fM>$DE)`|ch(t;BB)4?pOQXiEM8z?DuL!m6Cht|p#o$k7u@L(3w?&B|v94{(kv{d%Xh<&tl9QnlThk|^8b>TLOG|I6_G}1(83U5dP`~IK=~bFSFb}UrZPTq?QA${5jfMa)&BO? z>q=?WQt?$)*QcPMGkw@~&k^Rw(}wL>1p!Aii3_|^@Y=r~!(IuVNmfEvHLvaK?{0Mz ztX12>rs1g(?Z4deg~D=wQpSARB#!*ZiurE7fUY?~{4n zWJY*}Sidre?jBJ56G+85U@%`K&lAq~VT3L%#?ib>tnu0WCA3y?Bk1G8ezvNV{PHpM zU1u9rIMsC@5JshO$Y5m`wp|b1Ikgnd{v#S<#F2XA_q@};%z=v%qGD&aZyoX$prWRm zu$=L_c|`@}OI6_0QM(;D(d599V)PjqjqO+E6@T_K+riOB1uY#9QdXlK)(CKjV-pb$ z0|W|p`|>&!pQNv}CHwGivB*q|gv1;dK>Y~62|m$y`z`&I*U5N2UcE;T%xSPQ)oZl( zJv{bsyL4=Sa1K??eFOaU^30FKYd*btt{@bE!ovUVV{B-Dd{k>LQ!T~a;^VN9ouAvz zo;u=|ZdNp9d~n!0w4!{~|FaN(wn`=qpF*bfyAubQBGv10YVkZf_t@iSP7{GyHJ0_= zwr;u$IpNw?Vw+|h1QRE7d*d}`d0--04uwGQN_H-|I(2>~3T3CELhtFs3-~J0^(TM1 z?Kq_7*sy$k?ldDnro*^?z#cJTr*LXW=boG*#h0A#PYo_AkfmHYA2(ANwDktSi(`{# z3n8u`sON3?)JZFR{NanMIwo#f;nWPS^rB43Jj1Gao{)# zc9zGV_S(Re$62_wG^(Zc@iNmcdG+mMA^W3t50-(p2t>BkBgJwb=TFoOm0mu%w59t3uCe5b5cOI zHoR|Bk)`yn27WYZtEp;x>-k9Z+rzRW(vM}*VWUMQM4NkrhnF#L(vZM*zbJfO{G4`q z!u%2Pe96wbE+{(58{lit;4kqQ6z8<__(~5UsQX@LFgorbI*73xhLf>b@@>zM`nTcN&kyiQZo{hVBE+H?+6N44NM+&o2A zTGoIGr&(}80Hn0pBMyPDE?K??OKFsrrKMdth8fxqWvbR`1M^pbu?tAUsop3sXv)r+tz)-CVFkOT7P`1>n#byhU5&kGx5@u!>gM5nROw=pv35s~fQ=Iuhc zB?H5gREKZ3AO(zmp}jl7WO?$i4kwV&wvDQH5Yy(nAs#LT7r{K{PpM9q?`L^XqZ^$T zXaZYE)bOZil*zo=NvLEm)xI^Tm!GZE*l*c~H1X8&hT)o29a0TJ`riQVfscNN3I)@N z7Er3dA3uK>wXXbL&>MEkm|)vYxwhb$?Q2pbqF9D>76h=%%>OQ)|I4hdNFn}X!xJgp zY)Z?YJ%P02gR!2{GgZJA3+4D@1@erX^vy*PYl^UFpa%;Py`;}Cul~^f^y3rtY))+z zwr6ck@(x_akZ1Pv+>ops0#QkZI0s#N{IqPsT}B6Yzo`j01ld{3YZ4Af)Ydp&(>BkSIfp9mg zDpax~UpVOr@&xo7Bj4VVm=AZdk~?HDIOV>5CP)38R@5YDp1i&9yyT;IX3<7YW7{EB zx=z4n{g?kxZ@fi2Dbww|0}bTG$L7~d2wV?2nWwu4Ycd@G$V~I3tCp%RQ%KWNH!0~T zv>l$Hps6c_lNH7gSn9PRm@x@FZY2K5?goJAy|GLIx0gUO-I2fUZQyM9Bn=-Y+JGy8 z#nW2#p%?5-FY5*xB*kQwmHi#)mkVLV@ecU+rW6*6@FMhO+3gvMyf!&_-=69BJQt2# zq0@N0adOp@lmDhOJ3}E%ZF&sUTxBm@i!LkD_WPa2b^ zeP0e|8Z!H$GCsy7vAAEZaC{#!{CGGVVG-Bja}n7w8AkfyJ6}sgrJlp(y0BHT{|h=ybeKMox-@yb})J0z$U z%Nx5Ze~IPsXu93G0EMH;u1#%pK9=R9IIc)rr|JIsSGqKh0vJdV@vokt?nF`?&+Hr81;;M_D1CHHOrf)#qE_ z@Q#b3_(r7NtMb0g`&QlTM7IzK*dyi=xCI za;Pka+h$~jsy9h6MEa#uZv0gOAF|Pn`ZI@`T==iPi|E)0osPyd*jN@-A|b}OI=V2@ z4@BX!7%ndP-MW6xZkNb~A9^qk`t>T}r;&q)cdSujx>)9J*G^f~Pk7)QCkZg) zs?wk<+c63}iYgg@A3h2WzqWi~GI}k+{vGY;t9k{GHd)&4QCRi>o!}W_mB>-LGgdT- zAhKM`VqP5nC|7us!$Mos+-mqCL9VLEv=~x(!$kc>8P!*JoT0B1{h|z?KBs-d853cK z1&{!Er1IxrANJR+h{bk3ZlS}4mt%Cf zJ~%<#+Zamcd>OpPF^P!;$}Qnd{`7n45F@jP%^O;JNUM zeqNLW%Ap`!+5jT8&*ZZVJ-I%ud7};;>}2fUKR>IhIHRwoF2Tu@73~NbZizY-Js#S&$n}ktJ6`0 z@3Pu2J6X{J_cSuGVw9gQMUlmtS{&SbFYqU`sRHw62UTG2e~eJB9R#QnS@IKZ$<=L= zdYBMLJhs#%B6i#1LOCOs5K#q#8K*SNzl7Hq&@#-pbi0_BvMW`9U0Ry|pkT>K+J_NT%1ns)QFb~99CiK=>~36-*8spuQ)ExAi| zmiOR3eL5+AS4B8>>-N)^y(5JBXt2RW-91 zqMeKTpwOuE3kV^%=hJ1f5t-y&=r_dPXi(EjEc;wvS(5jYDK&j%rF#>8bx7LJ@_uQp zf_LU)xS?(*I(Uc_j5C7Wtm}gW5#EMxDEOcF9SzSrvH^c0jut#Y(-Ju<0*>iaWQ^X< z3oL%Sa5kQZS-fpx{TwRDeY@Q|L?D|a+vol2J36=g96x3w)^Ei3v|(DPOa$`s=999GznoRe~-2 z*0cFkUJ57hTazToDjB$?%v9N}c_4KM)^mUL*CoIB4l1Gn9hV{&)7>Wa3)16%&El>e zBBV6vZW3bLSX1bUe4#`6qjs%h*ogfy$uE9#f+8RD#B!s5M%zr9cI{kb=rzIv@+u0x z^rX*s+3P-eij>&%3H|O&h=Irw(mb9AnjRKaK@xNhuG~*Y0ZxUo)*gFNfh$@!hSnUs z?9E?^y|dmyvwTI1f4#bGd6tWz09+1t`k-QLzax9RwUwMt;7zyY%dq$3Mgr;MjjjxD zjpK0tMK|G5)PwM6@+iD>aQh6?N`Z;ntHpAvcWmy$s1ki;%x897)Ph4DJDt|vo(U8O z^hi^?9%x^|tu59$?i~)=d?O3dl;LEYa+3OjA?`PZXnLfCH$VwWAAVGc5<7H_uj0pS zZ-hGu@Xhf~@8O3E#Pm%_1oKm5J#}~1T6qx-^J`^eMp%}h1gU<;TNmw5LcZS3@=}U` z|1>)a%NvjkFU6cC%DzR`;W^f@R_=ebnC%Ve^XnHyb_mw{O=S7DRomCgQn*;rsW!`d zw95G%IC$Tjw?I+q%Cl!u88^R=iX#3APAgTu@0_Gr2gq}A^~CgJ|KTP`7c;6-mlh+H znWoO|izBOYpHs$49o=!nKRgt;H_h}}luuXHvVWXQHWHU55Ga~8--IWpK>l2Bvq#8K zsZ~JIYri7Ux}1kwvuHiGOe^Q*?h%v0Mb1PvGT7TINR_vR8@*^v!$|!O5miW`_D=RC zs!ST2v*E8$kX9wkq659BWapYyYyKxSLhMuSc$Y`d0@c~;QH0dKaXlW(2kme&mG{9t zbvtAnWCn!nHnK~Tg4%q%%;cVxM@BwVJiUur4-2pSsVrU!lTcbb(dVBYQa-}DUd@Wn z7#3A|oNOiUSoF$ww(fokDm8NT^)Y{z)F|)xHjP!v4r-Wc)iYb2STSJ3Us}(TJQfy3m~pI8J!a_7LC6}+IT|$##im6!Zhg1Pal^3SQus` zAps`kzyC(Ey<>?W^nJK((ysli1YMTJUq;)cQDMHq84R%=e0C6nP3;fho+3RGpvXx0 zljIjI*#>Hp-fe<&|Ep)8!aMh0SW>yk_67|jv!htU#zeQDW}&Am8Cr}LW_;o4(>%h5 zRNlV!+i?K~iL{4@E+OEY;TY^8RBmY$dL}~s6C`DoAeYmx)}Oe;#iP^zfO#xlUCN!; z7d&u14QrT@?OvkVi-`UDin7LZVFn~b0xtLcIP3(u6z=9wN@l0q z%Nw-!ZRt+Acd`Kum6@4zS@)KFiDT*aJE3+a0iAC;zhEoLtq(ST#`(zOdx+dBJD+FW z66-+@-F86k|NPCc?W??oDi4!|IheW_yx5>7h8p4M?f)Z<2PJH9!r7U0!~)ENv#oY7 za>4|Jg1-BRfPZt$di{LHqxbN#X>M$%u_K(YxEXd^kb6&FGHC%{H1WWKhFnDoXTa!A z{Pz0gjh$6A#(s7ntHzgi-JZ=@&*?+P4=q{WdW=EEjxHf#5jpkdSueRd&QOp1vSr52 zWv}KcNM5(`%Ez>CFg=5&q}ftNeZ6&CAnro`&Mk@fuWQ5MZV1@$)1jTzZ1^;Y5Z<7J zUj4>@qYnZ&wf*c-0@4YL5QxddZ*(z13Nsu%>)HvtlqQ=gJ?0{2e?+FVh@3hy^xh3x zs_HbRYIF?I4}{?!OzMQlSlGQSIAw^a>+j5J6>#?_dwVa)u-^e4sr@>sE>4f5FrQ>t z6@HI*q%Y8Y31aSC_Q`4Bh3P=ns|1BbTwJc=9*-s;g2n_?(Q1g-QC^p{_d??wg1A|H8p#td-c<+!w_Z3HfJ>l zzpAMFQcC@`m?hz~$OTz~uhR>WT!Gss2NydB7e{-_s@h)sw=4l9p(E7SaDkLl z>5c#oLAlygy<}yI-BewCR8UoZm++z|EA?H1g_(Px@us9!!QkJqS*j{KHSL(xSXj8T z<~gz8rQYWYJXRX|e?+)gnEX`cX4)b%fpTOp{8j;ZI|8q_al%!srg3YjP?p zOLw{~^^n8D?&F}{UPcltm#;P(7}XN69$kz{kI;6<_kB{{x-`o4?3jcLqfzIg*7lvfq4!pVK%B=b2{@d^jD{BoHR& z`VqkT6DKc~X+QN27R0PA44L+s++<6X27{Tt-tmC2aZ#=`QHVc9h5^xniy6u@(oSywi4dJ1He8u7lX z^LuEP%HY5$SID=NS0Z`XYL#@w>R$Od=r;y&HXjiOR6% zlsQpllUY;-kmE%l>);s0$G8a&Zq)?Z>rMJhv>me7JIx+?|Ny4va9^s~zY^lU7pdiMu2#VYQc zj*4;wGQ5tZrMYW;tDd*N+H!YSvk2#r4+Nu8Qwx1wyndOSj66QRFRwbcP$rKE=@g{J zr62zu3g*7Tk0^xCAXOy`OZ;nrROpc5U#rgNPGC#47&=j_Ss?>i!jw{WH;CxID~^H< zNuo`FfC*Rh?2&ki$eBPx$w9j$yfu1U+js{v?&9G$DT1AXq;{7o9oQO0u5Eu{S=mW? z_UfJnkAHC}hIRz;D#;%syU$lY-})$f{OmEn*$3^cm*6pwm#})5Qom<_&o}#hB}*iA z#7H)SUG0b@OiKJrT<3`w{XT zk?`TAElovc6jKVD@3wyz+crrb<-rKegUbL%z`BPOrfWk-OXJ|;Tun3Plq7NZ)IvEd z_)qMvN1F@koteJj5xK4Fmq0XHG-h6=o^=&br50Hf(6Ewa)4?8bW%>QKeHL=!%k}Fz zwv9m8fE^?=K@V%U(hnv4Q_0OzY5|h)pI_1&N>E;WA0}Bz!cHxBT}@mXA0g=IIAUKjUb5IyL zZQ_Do|0+C-c)mtSCuyqZQlJ07m(%(cbePA9l;`cq-NRIe)GGWE6rj1&TZ#O?L!-i1 zs7A~4<0Uf)yEV;tu(ST|$@m_x6+_ifjO%aDd+Zf%s{J6-2OB|GvnJWRT1TgaQp-cT zXMePFQZ0XRe2z>Q1W`|}513ffKkD*}`?DgbIt4Bs;rGhs%K@I|S{u#h=bt|tmt#z3 zZc!!um-i$*XTxkdGPcN5%BJ7JT2Iwt6T;K}l~Mcz=ii+)Yc}kvi}(I&=QOAnAhxa; zZi|Kd359ID9}JEhGOrb3TSR9h+Nis|sK5tWF2E*U3(85}GRJcbL-TWMd9N;V1Oiuq z(Sqj-ls)TpqUY5dx*0#T7B<>En7InkBgMMhx1CNh@R=Y{viR~&{R|$f^mu&D9$)mZ ze!8A7GnDT3$XK?b5aHsW1uB*tqMT>Gf1uJtK8!8&ZTL6#_H$UVAvDogMvY=VmRXif zEVEo92lqL1udIM})hYu!eYnUZgIehp{L>r}9bZ1T5u7v-cW&FdH8fzVS_-KeMx zB4z4XI z4!TrrG&=$&_GOa=e(yEIO)YKN&MCkwY4cP_KK5K5v7eyxa$2f1_!uZ$PNaKV4T%MG zCwXz}ob2c-DSWI>?&|vYfc!|&3yIg>)LuGPQ6UXXz#)1h86&lZ>W))a&P{9NV=5K= zL5bh`gEm)`-1ybODW>25Rw}lU^whniWzbOb7Ex8bx_f4}CxHVQtEg8o=U%_BbaEFV zb3`ESNxU7Gzn6w}l)__0ARexMzv>6x(3hK5Rw?7-gwF=v;)0sJ49PsZE^onbT}!@v zkgiAMW9UP-4IvCJF5U4l2O(U;oW=H-;C$*30yOB}Vm(3cAzu+dqCW_yM-(C~Ob0pb zW^8`(w4WwYLF@qEDUyFo9XONGf7WDhPP6l`u%`xG|h z^(6iTpCx$u^H=0y*C%%M>4KnWXiS5 zx*+jdvsHuoL%EK?>7vT@d$2BF>t~z!Zy)uh**-xkzD6lGt0dKoawPn!?>_@aIi0s4 zTfP@vWv%6&zPIJbxgJN{IB~1wo?VzR7Akc#6S!*ip@Kl54YmW$2ODw_wb=T}=nfmW zlT&Rjs;3s$c||~*hG%`su{FzdUC>r#K^@lchf7cHUl(s9WXiCFthM&8+8@n~(X&0W zbHLMD*I=;QkZm8MR7giSO}jBMivW^Wj?trGWWhyZ?acH%J=y;gg;q(Fi2;AIe@clO zHX0wc$J-Ph4i6NF8i1ZIK%sD2KS=BhT>OF)ocDW|<6N-O?IRto4@Nx0$kO%f_O3>B z!#X1{?X%T+d#+qhEu4_Rl9twMCCK@Nwc4>46(qFyrEi>KcP+Hf6Pb|xdJL+9UkP6( zqLln|J2ujfJPDaSLaIbuS7o#I9g z8|w_~7SW_p8f;O>W!57V3db0~#o6i3rtvSJm@PW??WcN6SD02FA1t%gpFXq0R26UM zN0|TlO}!34b9ZrcP^}0=1`_akhD;s!6j8-~1tAf#%O32EZeKq^Z13S_ndTQ#h3$j< z#^*u?M1vGl&cfXVn?2lEGyn}BvWK8j2IYnB4_QrKU0rzF(AD&%L`J%nCl5zvUnRTL z6yb`FE?HGYDJn0Q3n5qgY4FNNCS znN$P`wM;uzw1+|T@zFRpx1DJ|pXOxMUuRYS_tVfrI7n=h{a+u}9vf*SHXMd1@1U!< z7Xf0Qe@_nZfc!Gwp&R?>Hs~I#H*4J|Mg!Ujcrtw6{&i;myL!mr5qzXelPYQ;k+|uv zq$lX~8#$nRHwjL&_4|2Z#DQx`Gg_;3QRnWZW-C}xnmDoR%XOJ#k}+aw0N69Fu|r^I z8H`08m&I$F&zd!4y`ptw6cWNCHYM>1yM6r;BbcRiD0FmTwzzZqLLAM>>Q1lCL&-k> zs$UoHsqrJPlijuoTX@? z)SZgvn*x%-es}z_mpS?ebf=T=Oj03c1()@*+wA1B!2M&&z`TWR$S+@%O`0^MftJuX zFxAS_sEnfy{#2jB0iWTTTkOxBlM4+^x=*W{SE)tosL*iRbN7x&vw0fiOLvrb@{t`o zB%X>8J$;*(zPJEw5GbR^3Y(DE`6BmW-Q(Ne^S0aI!0frgFgvRyGXr2_Lslk7XUkGm ztXb$Pt1>P2yibHX>LS#0O}b|yB#}!XhnJd>YRZ!0z1GXiQq4BU?7Ke+XG$j&M zHnAfsX6#2)1p>V_)5>f<@@1vvbc{+XyyEyo{Y;Jqy1F;(t0ya(kzz=~F+x;vJR>}V zuKRZGNmE(ewXWEpZpP}2y0o^Ax#@}7a9LCR!7PUA zkU?4?R#2nf0GtLwLIpfb$LHV4kR@AGb)C!A;XqgW_C|EUgc%p3CNrow-(b^8kW>kT zgrxJPV-B0JyaPk^9mtZSMey{x>6p@dXlU2=iH!d5%NiC&hp~P=DmUlsc!U=eAIgQC#IH6NbCr45(n>3`K!L6NJsRGBjI)$RuFCZ;dU-R6$IkT^s z{rd`Hvq+FFTd#GQuP6(B=3f5KGvwc}8O$%rKO&?OwfV(Yqd|2DCf>CkrD=Ta)G(6n(x=kUX&x()U)QCYH zEe@xnH7H@!a41i)iPoVK?COq-)`lc`gXh1g*?w_lO`9|8l$`YM*F(`mzyVF4ybLU- zh(esx@!6FG>xrbu;+JoKUFFTzr?3!N(;`5A5wA^SQhSxUGU>l;c2ny)vP*yY5 z$cGv6(|RB~ zHZSvmLoAT=-N4}_&=XrWOS{WqdEEBE`8?xl;lQPsZRO7~tBZ~9CO;XfaLoCyDe*Hx zO;1Hz5+JG+XnwBh{`*j=>+>*K`H>UL2AxO6>o|0>sRXY43Mw7NQ0CDoQeajuw=|8? z5%gS}p7_SoS)``_7o1jNbU9k`&9y3BZ5TlUSZF5ov+JyhAnRvNe2!EIj>wm( zj&Z5y0x0&>)^D^hL$0^+%nI%j6(h)LN>&oxO+QjUJno$dV&`%MM^E4Wmk^#ymj^T*Fuch^aLIU=_htAIRSI)^SMT`Stx~H+_*`Y9l{V>Ctz~5fIF)87R?k_M(=8ecZKt{kU z7Ov8t&v-&O+oNL9W8Wfq_}#+-<==)ZGSI$Km8fD)m-z5&s-;H5^7prAxzQOWRB~x@ zSai5SkJbxDy5$7Dc6zxF9rf%Xtz}slh%G{YZ%?etzoj?9x;lSStb}F3U`vi+`a%|3 z)ncD`{E~1faS$r($rO4BGne+C01;HN|DXe!0lq#*Ey3{MT|EdP!G?6i0f9nzn!&0E z8`x!R(3l=lza4~XXg*d~F{_3QiRv8=AM?HmZXg)@gmYhLyT} zNiSO)OA@o0$qaSZ4&*uluKK$cm)Y_>V9|oSk%b?|>vg_~{OCYuj_S4TF1Vs22uKl_~nNmdzBk?uiNAKh#)q^%!bngod-=}o_^0hQGOV;uwBXXSjbC6U0-Z~Oi5dgc&BVDZ&$)bw zQa7mG+QLUcr%C4J^|mU6X2O?K0-s-Zfy1_J(npf{=i^SdjN^m0=|0uFVPC+B;;V=} z>`gW^IR*_%PP6>66;4ZmTGpJhnnsNSpSPd{Ils=+?hg=A zkb^C?Y=JA9hNM=w@0eDt@{X8EsAygU6$9tLhsB2uMzc(fhg+0IhD_r3p7?>=!#hGY zHnKv%AQ!5IJEa80k!6;4G@dK!D@Z;bh%Vi{I)%s&ZrmPiH+$_*@9!Y~+_+$tvZTp` zn#vs-rYxGD1dCxIx?f@W;?a-CsV za%@U`Lc%+{@>wqh4>`K)L_AmMtqQL}Q^i_wr{!%t1Uu?1t;r$WS6vw_-DZtvYvq%+ z_*d2GxIO*b1z1?8(dvztf#D*wO1H(qSm-iS6CL`?KUta;zFL^9k3BE*Z|f_gcWd~V z^Oqi6pP8xiV1Gkieo>7}qC*>qU{+e?W&Y+y&oC-T2j9p>Z!Qx>I^b5)qN zyVI|+Zy~WS@g>CwT$XEem28L2a<$so#n{M5%1Cu)CB%xk*F~mnRm`vW`kHl%cck2H`*bgx60~h3$-n4AS4ocin5z0CKN& zhWghnS1vFAHd}ptx4U0~Z8t$X16gt@ZHDMY!hBQP2(3tX)7Jm~_5wsQS}YRqNn^n< z9In*sQX8wJU^X0uf5#FBwKtztxCc3O7)TvHm|_}JN{!0HI_y{fXQW7js3)(wR$NR5 zLY*!qhr3g?Ea@2*rOpxYq4c~KH4gHVM8dk!y*l3jO`2J#s$zWw>4VVx;&YW5q?yrw zT27tHC1KSK+0P|}p z@GJcI;QxD5-Pl3lDA^+3R$DdcLk7l~(*HnLB*zPk2nT%azK^R}iFaq5cDH)8DRc{O z15*1?&(k&bcnub3ejES6ghakZy*$CpWr?EpzvpWuO{VjC?ocI&sl;O>VPHn#2_DzA zY<3{cWV>#DX6u+Ww^wf^J=XzUzM~0}9lBjc_b;t#mZfE-qhsC>R+wRF5rQb`RWwR= zLAfv0l-E!Go1Gu(N=k&&C1p^3h4+_pIi8!z7vAe$Zv)8DE}0f(G&GXo?qpi)9>9Vl zWZ?3~BrcA~tW2xCyiJ417mI!5CS=Q0dk5?SZ2!0(8mg+wmovSnlkHDGl90LqdVY znxb(74&06jMZh!j0hTev{$(TTXBe} zT|?g2zsXC_btW5K-m{ZE2Jcy8XZea);X0ahi{|W5?%a7V&e0K}k)h$fwxc1i0o_d6 zY9ZMlieYg(HD5h~#2PObD04z>YtFw2%gdWJ_iqU2DWX9N$NbSPYtXC!fe41sd4l_x z94=&O!1o*;MrmJhgwN8`@rhbo&lP1vH7?P9-?A#!5pQ5i5nk%ajZ1jT>uQec*NPbK z@Z3o+b@?Q8j1TZK)i)Gc_YLAlkLsuT9xSwxZgkz9KdtqcH=IbQU80gx=PLAx1_1FU zxJ>0g9&05Rf5O1QTzL%Wy#Iyf$D3VVyxRTIiGKkjr*2fpAM!ec0WVV2NQI$lHZTa! zIt1hs?!ML#upnYQrN7yly^??}JK)xw4)}sYl2Bq5fXScy&t>bl*VABegdRRs3)k4q zN-Gi}E4db}hFNgQsXP|5Cphp&>2SUV_u-_gbNI?xw|ten&si>S0ipz4Kt6y5e@6{{ zwEirrSMT&VwV}D!XyX<5;_oR(8Fe%ZB{~h)_tJzAe)Vws`4W=l{r(l$vTec74VQDz zZF)%wSYuM*`-gHwyskS()ziDp(d=n*zRB$m(ckxtN3%NLPpSlcob8-WC6((XyzM#H7@CxLj(Dd3=i9*b5!Xx7@v#;Ahm$k}31wv6(I!|1R*AOL@^4XSn!K`cfO9ct5^>t$(#@+rHYC|jB&_Pqp^q_&F z0x7tamb>U@#VS`W?>+Uv@@f40dBwv}#~F;3fLLD6tjz{OY}mW}cKe0Ghf9D(V9EPv zhl1hun!ImNPd*zCBNZ(J)fh|*j|1^5ylE->X&pR`^uc%Pl+(JKbKJX}O4*u+i5-dJ zCZ76M?hxo6Qp5+Hz=fp2R0B$MC3!&5$cD^x^R*s;DsN<*NNn(7nQGi=hpjvNJR~g{ zpyzZt8RJoDmAI5Lm87D=3~pMWx}6x@G!}?g{jZMAx-XrgX{SCJuIOCdW!?V0TKj(5{uPaP@d>f};Mo7QOcE-0L{ea{$reiq!$d+_gqke9RS^W`-Q z1nL`Vf9ww@*XiOho@288^t1JOD$p@gH}Kg2BBZ3xb|#)iRw!ZJeYCpBzFmZ!*2j8H zdi+NsbE=uN=Lx>xT?Elv^T-JqAf^8aT6q!_DOG_<4mrpSNfk;rN{CXg&EJ59te zkj{MaM@pzi_%lTP+7Ii1`kn;?@B`3oJp9*Wu4NX2o%U1VW0~`loPJXYr-(3NlB&jg zVqrnBkP2Izs$GM^G2#@9l5t&J?^5}kx>PDhGL+-ySQ;5XT-kT5mjz>{jz53vBV2sns8fP0YZaQD>+#l}L0r_Qhy=#(S z>>HcrP@Qb;<j~DzUEHXCsLta#m|xW?hr`~vZ(`LqxcXI|^@xn%cwK}?Y< zOF;8-h6Pg8J)=U$XD?GVSFE&1tqR~kveND_oM`0N^X6L4Ui4;m7I}B0G)-bAmiE3d z#xGgy)}qt@X6My2H|4<5V(;>7AxSM*M#hDg9X`>yzKTVW@sl(nbNix z-eo&hHmA#|p=lG^+E8@m)owIpu{5JO_xY>Ikp8%EKoT`%=Ef4~U}{Hq?(Kly=cXh4 zjqr3&HS$D;^XH)9#R=Z-s7Z=ldsp4=NrX12+s;*^QcTT+E#V{*fjB>lo<6z(`v-`C zRu!+jc}5>&*1QIA>(Q;09Ut`7(M#vSl&1|_I0@(y86OTt`xQUx7h4X$t|HwrrOX_8 zTt86E2JWZGtMzF|727Sb9j?+C69PF@lF7+!A))YO&qdLF=y&!<-ITx7h?<~7g2dt; z5mQm2S5qWy4@Ni;WC|25ZR|D2EN3=w&QlT?Ezha>(4T4!vLZjMS<=3{JRnC+d3;!k zpu!KV&*FoGOqqCGE?Vz~E&4B&lf!(u27P{m%dsGi{gM?=dPQ{ zN*_=dj67R6zV+Wl3UBPt1w`wQj??b2f$&CabuCT0U(^`jk-d{`Zl9GQ^N~k2tEE=g z*F^jzMsFU|&bFjzJ^i*9x$Z#(h;PHho^oT3ES6=&{OV>Z?5m&JxeD`MTud89I_hR2 z%?$4${LCxVlT-dAX2VbB3C3Z0tDMrG4~K~vZAkdGP$slCLne|f^!YQwB*O_45TJi( z4-EpN;;p&GK)1@YCa zpw5=mq;!DZ`By#Hhg_s$q*l==tCx8>6Gaj2ud9BuUpCCbs5palW%ZiKWwe5cT!I3F z!ASU@2|zjx(brU^2duKenB2bRPS7wi;o&FAr+33|8deX9 z4P~7lABVS;(ExS2Xi~QnEeBErlXFL#YqC*I$KX#>G!T| zRg8`0PGyxiViv0~wL||3enR}u0CG6k0OmlB^CeXk2?n*3gO$#ZrCr}PRtg!J?TI?4 z%$Oc@xb-*r7cFI7IEbynb}QM%;Y8n4{Dk>!vYy2rA4JII*>i=GDeLR==wZzGPgfWN zNPFeVVy09;fd$#=D){Is2#m{6_(;yqa73X*whT`Lena0S&?VxPab?JBaM4P6R4WRN7b3zShfSaouDrYELo8nG+IU&*`pGqcd1_Z*2lV&}RIx16Vy2<(Z zkn_`JD7)qNKj|dXC^R0#{Z)3J8cww%*#ea9Rh{V)S@RVS$3~G1A9D+rOfk;+DaUN7 zy874p>lswYFMZXLdGFrq3v*}MdMHiXaQtL}pG`Z;%8O^*E(^MJPBDK)zP@vnbGi?h z6YQzmm!%aog}40zHbKTCMd$5CzZgsl-^Z(xAOr~K?q&8DN`=;STWx;-^m5Bj-Jb=D zazrbaX9v2s&&n%GC}4N`bKZTc)IHegFRhQL@3Q1o)O`NY;<2WHK!AQo)o5zp0s`gf zs_AM<=VWt5&8CbOY>qz}UXM0+2JXBdE6Tn)4Q|=!z#tyNe|+b6y?-bJ7Yj2<#~GEa zO@`YY&h@1Ia>Xp%pp*z0-TSA$wvai!ifq#ZTLxuZ4FZ{D8~}AY+#=VowYPrVa|Z^Z zer8rsQr+Zb_^X-1bw)VpkD^jcsHBhN?>C6q|8Rm+;jP^z9yP|$XeJD2!q?tQq-8BP z8w0LLe^y39ahbM`6;UU?lRDtDuvQ2vcj%sp6C* zFsCq&8*bNXfc)?h4wB~a)vQ)XX^C^&Z}CKn3fyu!1YnSGYiNNQZK=X;e9LLeRHr<7SZt zxGR6F*^Ftg-|=MR=5ukJERVs zIS-%yX6Bi1hm&_%aW@-o9BTVlD=Lg)ha!0p3ZqJ66)jdPpxLkY@${$33|_DIUFvi! zl}rhN{N|P`enfYs`RH-o4hiDvT72xeb_9wPdB1`?@*IU#c_iZGUc0r%{coGEp;^tM z-``;td%nA@xI$nPcYovu-17@FR>|{ zZg+Xz_w)oy=oyLLPCqo=T@F&#*{~M9$EoSC6R-V8E#n_(ExE8b($s>krKihd( z@0YN=RWxQE3Mib}GiaISRNY+(tuFCRl+}14f7br2h^g|qNV>p`z2OSkyj-kb^jgEY zLQI;RU5eGK=T~Deo_TaVJ?b~aDOWA%i7%RePst2N`0rJvBVju4Fm+su2i~J0y{ebPT9+K!0Hrv{CV3NDPxlp&?On_tcT}YP3_S zdnM-i%GjpM(EF_i)6+mXZxnz*6vH8DJUs2-FDkJB63|FM?1r`i1{i;GFB#U*%3y^s zu#i;?1d7S6SLd+xZrE|;O$ts*%^SYYsS$`9K2xyhTowl`g!g1EYbwXa9ZgufP!R66 z?fJOqnk8H{(-y*J*9OxTYM1j(_7{rTG@gS-!%D~7d%Y z+>Ba;if0#>KW}x^)DW&DC8-S#4e*R<4mZt|vq@o8DwO%W+t}#3EbJtlrqWQeozF6! zB82O3IUDYtU>;MWjGKT1^Ja_Tz^(TehsV3&2I{&l6cVV9Hk)e=#(n82v)@)+wdeSpk+t^CWsq_3>!6OIkruldedf3OZ0&fljU!K>CB~(9U_IQn-LL`z+$F{Y*MX zT-vm~9pM4#hl);$k0AA}&&&iu(FDbBdtF(p%MY}SR_ZVWi_rwJ3|XT?@w{o@&zHPC zEj5MsQTJk?nM9IjDi9gWvs7%4xRJ;YPwV6Ep)Mo=L&fcnrVP z>Fo3&)!K1-&HBEf1I-)c6c62C+t6lRRxGm=jUDGusyqhmWK){|kDNGKLLeHeO3FCl za}UF$m<>mGiS_8)dPW7Ig7AT*Gb9M5)bbH4o~}6wi(-c{8t#W~2!Utka8=RiAeQVnZ|gda)Ge zvF*{kNgP#UGEdEu0$n8ptJ*HsSK+^C@$fz2W8rZ~nlzBi_;c#7@;h(F5|i4Zx^huW z$vuU=)hQ&kGSD0m82VypK^7DvWaE1a4;CnP@}set8JeD0w(P)mP42l&8UNI>H&SdX zZ}06-1D4YY>vs2X)m_b6ri4{?%({Nhx&kYdb&k=lid@?i!Gv%I8_9qf=W| z(dvy1uMK4po{UMPSdxp4V90>fUBeP^IKXA`e5Yoe4gba!*zvAlgyVn z`7p=*(F6%_5y6|U;J6g4>A{^+2nx?=I_+q}tiY=UP(?vB0h@ogSZOzzU8v>6PNQ6` zA)8^>-VdAeyzBWQjE=<{7kmdK|F%Y}80@{N*L_#dlHX=VY-^HfYm9$u>-V}Vtv#D; zf=PzQ7B@$h2l|FM=~#HE*a!khD#RR5hW&S89yZ#%(TD5-z(g1!sgmI4A{pB^Ty=bp zO`>%dH*Hku#bwT1*()|bw;m_hVB9JgEty=r>^}C(+{BPx)%?#v=fkUKa=ByzgT3UbHA4>w zP&&ABH> zI>=wEZt{Zplnshgw&r^jf0xF(;rzTVGx&BSn?Z}?gAg10v0tr9yM@KQ|KBXSE<5;k z;JR#x1wNzs%pqeNytHM%?KAFMW~NI9R+_p9*wIsB2@GnF$7>*tZewN$3x2bt1{l|| z$U>0{A6o;7nhhr2rKu=c6s()f=8^Ridg0TOYC}`Dc>o{*<}(V3GFhM~@uLPKh=hQc z;`;f+AEHFT(fFsMwZfnX6R!Sj8M?pT^eo)boL@84<14?}35ZZP=`%qx#r^q0@}>IY z^J@ZcLJsAXI93wEH*%2IpWa{cyco_!EXhm(vHft)_w<206U9xyOhR!$jg;ELkubAg zOOZ_5-MaYG7wAF#ae|L zY!E;q4?iGF_hx-z`t9W&5`+^$ahNQS2mP?@eKwAwC!NJ%;wD_vTQo)@hrPVB%nI}9 zQ@=B=+iv(gn4y*UA@8c{z0VdtaI^R#(?By{=?$}{tu0HiHY@GAviH*|La**Zk9P8R zCIPKYgSu`$l&OnYt5}7hBbV$X1Hnbt9saDq`%K^1;akbBGSB(s#OZ0`r)=Kr1jX*g zY^d|av)VQgE<*?ZDfqrACnxdoJk@ZICM&A33`k~j1Z!%^Sz4|}TUW09?d?fkpY)Nk zhc{2*i4_kw){be{&TkKW?cS?R^$6ikk2ehTG_B6;v6K4nqB|31YT3#sN1;j^?zTHX z&GJ_Sp)E%myn`d4Tu@=Kb^f|s$aK>(SRXlc7DVOJRaG?lcU()nAy{u*p{OhG+TLEj zWYH66tAi9_##rkZb7=g1v%Hu_3FFX|cUYVMYk=`ZroA`x11@(|KrR*{5DlVYU@ZGn z);oXkm12&^=q6wP| z=!7(jJ`VFVVF#emfFox#oF9nbGc>#|YZY_?>u2)hSpCueB#=-sR)0;<&?sXzu%e;a zt!cUQE$KCJLcIR(TGn*T9Aol)=SGE-Xa=?4XdqhV=yKF|zJJn=Qv;NhRyku-S}*t$ za^V+O0>!O=Z`^Ewu_(`v^;iG~bLDW<&_u=zZlN+3cFU$LicB=r(o^wJR674vpfe z(g|;VT2~~_DCaxEL}-0M$Xvre5fpY($-SqFV%AeUn`gZ6H@@lfv2t2 z{T1ftU_Vb=%aF@?<>D#w<%a#%+Wby01gLvuzbiw)!)zvEO4oi6Ht4_q&{VXQuf|3j zkOC8@-#w|Mq=0|x?)sJ=F}K&}>5|Fk1qNlr^Iy`?P=%_y!N+yrYm=?|YRj+7{<@-1^}7yvy2R1+bHe-)S1^!a zG-Z8m`Z5^TE`1X4`I9gzKNezY9r1M%zx@XnGbHE!R?8GHSD=kGfupBVc?XY}$?-@T zIyYj)QtJ*e`TP4Z6PQ|%m0gfkhMJLTa%$dEd31-&*q&4Z733G)sWoHTzoeG_Fg9Iy z!(r=^dk~5k*jS>DP zu2?x!5^?ar@UY%tL?l84${sW$x|xE@8_;ycLN9O&bpwWJRApp$)O8?a%`UG?m^Plt zP4IHt3&lzzfYjaj_kWsf-zB?b_dwrD-(}onU`^d2Apf?O z!K$+IdmxOpU>_Dz=FUEA>%8%s-bYVDe$ckCJ#t*ITG=Lr?Rvay=)jquVgVO@)adVA z*d7vExG|k@4m7181$A@PcQhqT7%@oH(GY5==4t8w6q8-B%5or{loD^t!pTy3{coS} z*}>c}(DFK?`<})=3G+KLzkSGKC8(5HCG7O!4{Hi=zlHMEF;7`3tB((efsuz2uimn#R`xjPYHrTF!D6 z3+8mauEi83O^|^>Jw2^iht9`WW&;u<of`(xVVyA3I*TLcyVG0QC`PLuL1j%VrCjgJxK5pH+T>cz4kPgzs&!*B-^C-`@6 zo>^7&b9Ifj_3*zOD`d5zSz**YD#yf@W_venN>gkiJ-1Vfo%{Z9Haw&PML=(P5Bzac z%hG_y9?gg&c)oiUQNNN(1ImsFp%x3&C9erL+q55tQ3~k$RyU()07*SO@o_OGw@iSX z(L=!Dp{+AfPmvGw*_biS8HXuetS>ithu4+8zRn8pxb7t9s!tl$jg7^>x?0IdPg+>E zvJ(uo1;O+?pDHM+uv>nh0QPkEjQfX1@7J@BoD6yZUP)%i^Kim>b&$}1j=xy5oW7E3 z!JxNwM84|yG9%S>k58vhJ3bk6XaZDPL&SVL9Y=~6*SqXnCc_*7a6cr`tlj{DhRcs2;qm^bc=++Ki5a~)YJYc3GD39tbRh88j(GQ3DrjmlMlP! z-hL1c;9{~fK_04<9j3ST6y_kt-^f-!<{yEsELt1Hl+&2=Fq3M4Ay9Lg_dU6axZ%u$ zv-i2RBIZoY)Z#(YUh29Yt*(cSg<9W0+=V3cVFUE+$9i_c2 zEc^xe4CCfWz~wAl##xQygiUF#VLZR*8ZwG$3?rLC{O_C3VOF#%LHNAK)?QEyh#2^q zOuNP$)7&iTSLW*PM7utG4mZB$jgVu&whj)VLHc)JWq-h(=aIQwtaq7RU$XH`1ZV^U z#x-bIEDlSk0#(+|6F%CN3tYpv{3d5R^QZ0*{-uR4Gt098%S%m5KL9{?BalSw=5X&m zBk-Jzj5G-*Y&cODn;oxNGASk0AkZI?o{DIQ0X?<%b=#xA-(Fp;wYoTV4Ol>1TS2EF zkh|~)CHfHTA2OOqRV|$kv*#0l*W);sSx{CX;;rU=1W&>3_iXMM!Mc#~F=NkmERv2iMc%c~OvT70^0LbwThy+j;JZB4 ze+7clp_dz$Tf++LukG!*??}iFx~StuJe`hU5nVfrDb>xGzgtJ@{{5Ag!;hJTOZ8CP zw&YwUdB7;DT zxN>SGB;{C@^(`-sY6tn+y4)}#sJxe`;UnG7cGGIqk-)sPcIA>HJ)xn>B$tX1lBN7b z2+)i4OZlOvOuPHsn($<@@O#qZWxuJsCE~$t%XjQssd&7O<*>AJuHvy=anY{3<0H}? zMYMkX8o;x1(?^iDq8%C}_s&6P{$5H|o?-g@FG z{%v)*3r`{dxd@tbLa(7fPUTHrod}Kd=7xa+bJm20{O63`SmIlYn}UP_TF6kIqB&3`0CPL60S$f> z@zj!+l1(bq@99SRkYmZ>h6?nEOMm$JP9rjN}n78?xQF z(H$#M5X>t9Og|GrrLKEzm2!KR^3|1le!uZF35z=LqEe@Q%lOU!NKE zy)dR}c#-1?eiDBoRlMGZ7&siN>_y$9MT zNvJnb=LP$`kHLdL;XO4+^o|)UKHir5pPHES$&GK2;v4PC0E+ zh;Kh0Hz$$r9%oOSq@j1AD$waAcBLo(go2~ATi*L~n&&+p7b1ZjC*Wl#M}ooK*3uLm ziO=lvHv7;H&_3wF_drGcD~MrDsws(wV!iocU=Hpb8fCThqYCI*^L%+SDHLe8J8^3g zc<+3FZYu1k30OOmGL@s1l7c1hwL5fq?0mn+Kax*R{s3an?$=ukUW{zbhd=CgX_3@_}9er^QyFxNMJUdwc;Ma|>&|NQD zP5W3pjB$L=Rj(7Y*yF99`vJ0Lq382mQeC7ugr6$pH3Kv3_w_;T6Zlz`C4v1FqD3DJ zZSHfHPjvR;oWQ{K=l7rfHC!f*(PwEb&O|?UM(vTxB|H7(anb5rMVJ)R+`*%mhi5u; zr#xZ=YXu*Qk$4C7>TZ}v8su7%0XCP_{6o8ekk1p}Q zbc+S<q|opL+tNEcnn`Qz+4- zM)Q#F!|^=otEDQPx9Jj)Vu>FxXY1+ZO+S4kD|{P_dc3`k3XNK+vlUDmplf#dKQvuq za9v#+y)hc24IA6GZM(5;v$50INn;yr?8dfj+sSv{AK%RWlgZ4TOzu8suf3jytUy8v zdOg?rKez(cJy~(&3-f&5^bBdGmT2V_)(+tMU7przuJ;T0ZHVH=y2JVyV(&if5D;%I zcoXk?7|0xpTW&(SJcA)2jn+)>bGIy9rqTl$MNuXGANRWyBpA|wl0UU(^PT4pHp0J? zP5*btiBw>h;d8rNvMN_hkEL^+d+mr}h=mvp$H{y)rgHz6#@V~Z*AaWR%C`?R$FA`u z*!{qa?0<-re{NY$-ZuqE)%%%&bKyP-xwN;)#}&q4Q`opPD(`_g}CQ!gsy8oYrv0TI`3J~bd=X2LoCDed? zcT3^G6^9!T{?1t@d1{Tk(KZNOF7oT?s;OsWyWMxI!v+TKc!j#iIedY)cRjBbF3|C# z^E5j{Pk6?_I@vneBH7-gD>L|=w7-~enA@^XwCC!S$c|ISW}HjV=GCMq_0teF5zvEF zCiOvr8WSUVgV%z}JPBM8+|V8DM@B_uTOq>IHLA*{u;tWGZ>)#)P`GE-pD{0Y7L&%- zp$2S{c1FxFt?s=lnpUD)>eD%;m{I#9CIwgbaxJg|q+})7EY)_fz69c<;@lK|O=?ju zNGH86C#+RWnr(*Mw9VvgaI}tLUM|I_NkZC_np*hyw`{@mfXB1DyUlL65Ez!u zMN2-rxcUWjHNOVs6|_Ck@d_#5{`vs}Gz%Zk8&3z?FVd%J`5Or@%7X%4DcqV@=5iw> zf$sUS=bPK5i;jEfzDt2mPTw0*P=Iumyxgdy+~m~peTTP;3T5(RB0=@DHw2^*#Opmi zzlVXWi|S|%XWS)S{1wZsoN%4!!5O!i0YgF0*75G)$@cS8TJE8*@AI2ho@6j#QWMXE z=L;`fWpuI*C!i4Fxa3u0>{!lP69;MG8&4F_@{Qq#^_0 zVZ5)RxYeq=Hhz&_7e$H`pyYj$N1L&LgWnBlQaNVxua6^;;!t~f{?}S9-nPIdhWAiAto7E>g7;hRL)9iyFNPAOYNQ+>AI3L|42 z#(0+H*iiTO;Q08H<*Wd$+xiuQ`L5ye35`nQt@I5iX#5^F;s!RtiZhgSIH58OnIU(% z#p0_}0xBO&$Rm!$;Z3l>E*&IX&N{bBe<9E9a$j=}t7hefQRi!-m#?4u#lt|mGHPOM z_f$$eU;9AZ%n#Y5dUII_ZLK9<9$W zJxgX}Cr2kk7HcM2z~ru^M3z5&5C+BjxyKGd&cDi8X5g8%I+ERgRZ2V0=#9C3Pz+4B zKbew#t3l=s%n)><-5I`Erz{(mjhEP$qwT-csidp3X59s|==v8cQa$zY;zV)uE%8 zOcF{t&4n9Y#$u^|yKF*;`E2ZAH0q(9I?7`YS++O@GPH9krE;9#X<*K_ITSuWCg<0#PEZbEQVCVJK<&XM03E z&jT21ReItv6T=EsSa7Fgvks;i{O`axukq9MtD?3>u7JqzP`1P-uD1f;T z19gz+5Ar!}Hn?a~N4Sddo*43kEg?ya5!2yabE4cD!8f)j)^Lag> z$p9XiCT-iEVevj3ZzpoO9H*<9@eP_zK%+iFd0bztA?bXzwSTA!yYmvPnUG%BndD_rmTshq#Pzo31qDFI$oD@WVX zVgOAZdp0#ax)>)cw9eZR7Uy}XM!yRFid_-eh8Z-I{>Esd$jiK8{Hnov$e2cyS3<$t#J`u<_y(9GanQ{s4fUuLYfF># z(Tzk38H~SsT=}16n+u{ZFaEn6E2Id{5IpM8Km{v`3NM9SYBTEFSg5wv_tv6`)SYh9 zsMJIe%b0<*40I8;w@frScn_#KB_>|Kd3=OR%;ez^Vt!n6&N;-;kaQf2ED#OYw)#1A zaOwZUMOFV>GMz&`Qmmg24Tcn>Pkz<)i{C@c?rO<=+1EVh0`$M&h8>zSB1-Zap+W&f zw$SSeGFA79F0Q|3&*br8wy?T1;T`Y$#^$*BL5B<&OwB##HoXvLweEoBkSDP~i1 z!_Z!v3{e}pb0nW!ctT2d6IGd+3pKN|v#X7+ZSjsg{sSDI1;H;jed6#ML2fLEtbI2n<*mciSlFgffnYTUse|KeWwY4T zPgqFlxOaV!ODnzJ>88dw|NC0!HRV}KwlP6oz~nC5SlXw=Yw1JZYzi}Z~i*E zGpS1c9$qjR)F|qFyHnk6xMhqNHL53l(}pDi@spO*4=CoT(xNS@H8Tu7mkEW7;!gH_ zrPo7EmH)tJO)48wpXUJRx>iqxF#E12mMj>Aibp;5ieNU{&)G@9txi~%5!78*Zv0JvSdfk!B!Wj#>@i@l2SrMZ(99TwcfcoD|PMy$N{ds1c%A zp|>|*Jbd`|2`TC5UiD#}G6ad^!9x)VI4!QWMPS-rTd68a)6#Whv%l{xl~_i0n!bUD zdU@RoxV~v#V^Bsl5qaw$=f*QAD z(&zVXH#wLy+$E3AV#F4LwZTl@=?&cDxQ26N(m}@a%}qyrCk`A?zsBVvry)TM{ngj@ zCtYhfItyi~xX2G&2nE6z9n>8_1ZMZ%zS$uc>wRCJUs>5+nN&4~&FaD#FPRWNFbr1{ zGfr!9N3dVGIoxqMe`|i@v?(FM&*OepU`QY$4lT6x6U>wjKO$e>DFyQ4yehg>p&p>Rf(VU#LPU#LavZ{nttJZj=;JzgFU~|=)W8(e zJNUO2ANd3f&Y}a;G@^c4!khVGS%vO|W}HN8DyfyB(1B2Fm>tno7U4xgVD}}S`#$wh zB=e-9R$I$`ZTJPZEaqe|CHY`&@ zW<1*MRMeYyq;?^hw*UPd

jzQp8Ty<*xEr1v5Emj*ZpI+6oDetGsxjd{!Jfh{^mT zkZG494f`lzILU0Vk!~nYu`Fy-7w2p(>b{Df<%>r3d;8!7#ZE!N2W&?D>rvSx-||?c z%?sjPhwHwPl%dd74!$vXNl^*8ewRnAhQ7Xz3cAn7&DnK9lA7vzJGW{#4CwcaMNn95 zwD0qe?n92b#TqSE^V@Q=5$bXyCT-PUmnX~q?-N~GBiU=z)%Z!tDLI^t_H%`073}uk z;2}}Bk?UtR)sh@ft*lk&*$!xR=Uw3<2_&+D;6rF*apEOej|~r5yp-LnZVIj>;Naj= zayl2jLvXcAMiLXth0YG<<{9Q2>?}R0`ueTBTDLu~A%g}H z2P;w4lK0jH$n8o)4GMQrC*sH_EIFE?SGomp|8gs2a~;kXwAtqqgFw#je8sf7i;MOq zG%=3-rLaVV%CawPHHQl#WN7k8m#Z9m(3wKko_oxHzUMwJJ&W3axnGQj2l?6Mde>`} zQz9|Wv_3reD(UuhrVgXq#?1azOHFLRRcurb&%xQ|+P^X0|LMznpUFXL;Y)^#DdaQ9 zb&WX>9+5;5ZzCzWo|83EoG^f;H};K_il(ZLT`iwA2D(kV=+@L#h4&9TUX>I1Fk(rq z5}rabYm$KlKK=G?8n`Hyq*9>&3Z&R+5vNfAO*bTX03#7IN@)^ABMK%dL?`?2W3X0m zLU1OK(bN)?$R8FAegW_2WRmuCrg(+X}-KKyawMVEYjZX0`bJ$b2BHkrlwD7k|XLWWz}{2{`Ip8&^75i4@~bTgT)p6 zJF$FFQJId<^B-i~$^R{jNK`?xcizrRADYjJ1lAoWWs{Z`2B$IC^=&&%AY@-C;nUCh zOn8KeRs6>zT9umE&`(yiZh-F44Cn{%dY|%}Me}@y5+%NV8~!B(@#6pSSCtx{)g`Gj z2PsHizs_VD#Grr{KeT(jmbI!Lf8Pc1QxI#1fU#cy&?2W@ky}`8{kyjYI=lkSCXWqQ z8}=8!^PutC^h@q&aJw~A5N*vYo?3bAZR)VUv~p+t^^w^uMPzdKwXG_Sy-1Cd={F+E zRVbQ5%J~ReoKn<%zTS$YqFAKl*XlGJ%@A|05%65TjxB!?|HqNjY4x@|Hd36QWqo+W zYQJnn9iykF)akd}3xwUjAmKKd`a8fd%<)Hl`J%_`IhK^z=5vuG;h*cM5|p%bHs)?= zZ=|1$@ik${1d8lyP2TpyFgh%v`w0 z{POvB5`BJpyV8IC!g@+y0|*U04du)#^IM{dHF#(YJ{K7o8@PQA#SG;as+lA|MA$wtzpb327CyXsNn$^(-0! zx-_XO`1TSb@^|X$J^vpiv>~)IL|~wgvsLTk_0m@rA04;9c8Ffg(J~hVERp0+WAO1q z0N39f!4D-=E_QTK=q|zH1a0NOe#dyZ6|y3c4k?#-Wr2bhvY?HERgK|E9*kjZ5i6<~ z5(NiJ_=$oV%ZH+d3brTvGT-?72g3R|&5@AFSbmu`p$Vv4=jt6d`QxBOP(y-;ocL{Y zaCBt!8C*zM86HwdYx$CZ-)~32W2#kcw9P+6fCKFh( z$0)E6^VBl>F_wLriYPaZC@TvFa)Az-u*kr<#pgfiEiN)$iE!FrCvsVG>CPG~y)>wcTjp5MEbN8%e6_kkh!;CRa8 zd9bEn3}l!0U2Z7NPMuAJxI$n{)o_gEFxp)(=T0YfK5F~jMiG`%dAl2N$%$zU&s6bV zGjUwd%W1uOGn`OB1QG)H3U&5y^8T@OD}|DZBN5AT@2w|0=c8cG6HS?M;jx2l-dVu|0!9l&P{^=&H5!%}hI%NoFIQ4jJ@2 zG2BIYR;3&CrGv$OChlK*_VHA@1RW!!9NU}6m^)7wXI;5?jw~eTsy{)DDT15XMPE*h zPW%sbKk-QgHj0si$pbMH*VW)!2;A?-cUt?tfhkhQAn-M=oK8+#i$BF`*fNm_C7uU+_?N)8kU!M?`nVDVhYLK8h_F-T^th`*`wPdYx zzh-*(-zhE@2n2s~J2E<&iD1#y2+>!2^lg%(dHT_2Bn!%!BBpsB2%0fTt7qlTrlK%6 zTsNLbNWRd6&@M%(s4BbIU3lD@r~(j)dpuu2WI0amV3a3zS$VaRuGT(>lZ)t65RqN% zt3s$A9A8ylQ3DV~SpC-yJ)b0(?nl#v`%>xGe@DQ@E%Q$)?$_DuEiAYDexb*nK7KLI zaksALh^JWMEb$MCLQZ|C!HSuD>HO;J(Hjt`ea8lPfBPY)*nZk~)MvYtaKd21U*K(! zCjV+iUWXCSa!4ro%P;rR`ekH=YvAjIVj%F0=~ zm@DytcEMzg74^*qLYOE^jU22?UKo&pvLq{-Qi^c>4keva{R8Wi#dcpgYWNS=`3F&Q zxg$eiiuXhDy+%6tm^6eH*f4 ze-V~G7E#_4Hy5HShDzz}H76H;J{8VIeE$irE13FCc@us$rNc52%B`gF=s6)bpHDv1 zq64F(0fRGpH5+>Hde!}sfY<9xSDYL~$ixK&+S)#0_8S|LZmbd1(9O9HU8_ zH&glo4gK$5@k4B^uGgTF#^TZW9&c%vhKFcjpz!Uc0D+Tpq4IIO2n+?3ywc*-o0H}& zVM%>`eOFMEEkoEd&4=m%>!+F?P;6vzm~z+nXM`HBZA0Exn>9oj?)lIwQx6=dP1`+b zCA*E09Y@aM-*knxK$@rqR_;f7!qv;zbYBX4^DTLt>BumPi3xs8lXqKd&2no+m2@F{ zUQvNN_Y-06U}B=iujE7+kYbstj82~$deia%n+1t1g?;Fcd2wo22C99HRR=}*iB^? z#`Bq|iPgW}PMhCFXEd7NN8RwH!o5C@PM#kvrJ|a@|Msn5Q6r1HMDrP!&wdZHMvj%e zy#R+|L-f`sElyUe7@ERsTroosAtE%FxVN5_0fGK(?$dWYjwI3f+oVY(!j_;P4=5iE zygaHWXzO}^_~x{H<;5@*0LVwL$T&dlM2|De%;2x7d}D(2N4SW zdNA)WvSN(Dd;8*b-36)ULwFB5SK9bI;E?l3Olx;t%(;t}z0}@5hx)%3z%M5V#se1@ zoAJm6EuylbfQ;hR8Fz+Nm^1++IZ1DDP=ePtzoaHNKIenABsw9EX*t#i*w=w z7QVW24oCae-zE^<>hxPISAqMmuFG+9<{y1N|AT?q!O1>?{8CsTYvF3R!rkWVEO!n0 z%SHnU4d40o=^Q~1R5g0b>*R5N=^+n8a6HwVecZ>my*6kNHSrm&bOzT3A}29-pd|ZPxbKpu4)demNY!{=Oyh z`MD-;XxP&{p7~E9Yi)Gf7?N%Ga4kxx|>T{ zoK{kr%$3hMFY7#PFxc6>`NeTNb}tIVXF9N*~-ZlYMcunP1aK!J*3noI!yp+AWBGTVE&h zD_QaSA}~f~zet=?kDk(udf(j+FpZ53&yJNbAh;iW>WR;s;>(z)KOC`Hk1za_P>e6# z@-^#u9Wysv=Y@kgX_ZEJ6u|&P+A#5Rg-1%+qUQ`#=hCl zYNTTcKI6{+4=h&fE1%ymCTtmOebF66a?oAAd&Dg*WB^qB2UgXBAZ5@{2^&SH! zxPLB@9tn(o*Q|~lONci4Q_M>tGv&4r?ls&bu;}*y8VR{|k zW(9~zNFYjNJDz#Jf_`OYbD916mM&~aQ=z%Mvfk-6y*@g)wnA=j=RsY?V%%f~q_${? zD8O845=o-!gT19YgM*gajfkkKuN?tFA^PyZMX-B3(8hRs{Z-<-S*|*E79`#sye!;fT zbi$C(#F+}$?d27jWfwpeLn~@> zg6zo{bd)%mQ=U$4Vtd8bSmB}ig1XA?Qw!N zOpc62`>7cKzx(9M7~r#?(adY5lAA?u6*oJtoHc>D!Af-c?(O|;(j56hGb3|;evt%L z`0@q+hN899SB_>G5ENeEud+2Y+HHCd88!3~@c(r@FYnCTj;YW%Jw1g%`fg)jQCd|{ zQBYA)TDtT?s$eHS0l=}qf(UTf60zT(-(qL)UMmU6fri4^8HP|$xVET`W7w=*)&65fILQZKx=UQ<(z z*51UPxs2yc*bkC-a8laK>rZi|$)l>iZd48*3}m!+9e&_%fFO5D*k#_;Gwbri^nEoF zQ_A_>`8AMGD+OL+a;fnT&!~HNJKF1Q8IU zrS|mLe_Qs|p`g_~=JWY+a+(&HMN1s7sia-+ylhkQ(TOK#3;vVQuqSe%vZb)uPxQ!_ zPi$Govc&|l`dfr=^il-bKALPf(P)~4&qucl`;GNLMtPp$Vo7f(Y8f2O3Q z$!PW$TV6ePf({V`2`322W!VuvOFqtlKP)Qm1=1?%FFR7zXgs`4I5QYVGrRCJ*98aY zH%I}7m*`h7h#1U+_{m*G2K*OD(mp^LnotsK0uoY!um+;l9(M)Y5=}2p6@#RDcNeG~ z!x~%+clJU}2Tn59qY5yr$X%)gXs)#1L9-k1xZx;;3dQk6Pi$TE$e7wnra%nFo|=yd z=A*-{#y4{o)LtF1I0TUni~1l3vM2NBqK~U!0pEZ7Dfjga1B^EJFXNZa&dvgR_m6jf zKPFo)I~whbdUnV-YV>KSY4044jW4%2t;Uw#!{P){8V#li{zEG{{1MUNoZcs@b`!4| z891=W;8VZ{AyyJo<_Zyhp3apIs9}(lelbdYl+{KaBwm}pa@Z? zi?K2~T#icZHoM-!?xWJuu`w64c-0?2Fj(29CItj_Bml$){I+^ojQxG1aP~+q=)F3N zhYaH?dCA7T1`J?2zZM+rJC|hf@wV+bzc2{rF?s;GA+zR_y3OSzw+6~oBB9SamQUdy zb}EOo2-<(|UP2l&xVb?A(}^YbNBbVnYh`tvdcr?{Hy5|&RbNc6ug)i9N=)d#GxwrK zO-I%Mz;ID+Y7|Kw_9Dnz+gsv*F$7u{PVSd zQa5yXr?h6xy`8By0=CV}Vwr@7OsLzs_W1nd>t9$R6wX$G$fljTB9%=s0plSWcEAY) z8YC(h&*r@(*lcsP5m<~@;r-_qePw^Pn)bvw<~!z+x}7Lri7*oFUuJ5io0Cg3s!TQJ zQ&Cx@p|4SMK6UA9f;HOBe14%7+tLwQMFZIvtD=tC?ny5cvNk5#3a+!h0(UVIGx~`U zSpRmXQUQiwY=kP6BKDg(jXUM!q5yMTxASqP6&Xt?C94yt1mn2$T{tbpePySz*2QY@ zq6nccu(m9*e$Is;fuk;`9AOyq$hkTYfkz+Po3sE-Msgk=;cVyDx$ zx3QHVPHYKz{v#51SX}at*SC9mPRsi#E8Y|t6p&ukk$w)uK1c5@0z70NeU=LWZ(}l* zG)}~kaiuFikqTi-?Gb_k;{JS&TdAlQ5!0;PV?}dbcDN$(`X{qzWcIO9sy!>0EjGen zy2(sKR(?;(#h6QDnpL4UO^sxbJOn6uYPweaS6hk(1{O9&lC-swW02@gVVX`%Br@m2 z6Y$L%Ylgrk@B9VzrIcAb7Q44tEe8sA(N+EewZkZxv8iQ3eX`0i7J>X>aFzms!LlF? zum!Kc3Hs)2x{V>6uu<|rDln?vgfI}2U~iQ4OFeJ-s&ER>!Z?5vPmmy?lI$lcdHK@P zRZkG<=H=)4SvBnFM))b;F#HASbHQ6a0-S!P;J);9TS&4NaVL2MaW~_)&>tSY$y6bJ zO~sWkYX9Qtzd%^<>)c}2s0SOD3Fn~woQs+ueIq?A6yQHj*8(e`0F2Hkuyd+hPW7@B z5@AJO4xbS(Zr-=!075!EI<}9ImW70bd1twNUj~?CI9^G@CJwtCt*_=i`e!kU2^-qk z*(n?KR^cu#R{jtYL}{+Ck46AmaSjgmjXBNi?6&vL>Mc*3^*YXmF{J%A!i*&XRg@Dh zHxXy&=Xv~}%WV~SK;4HdgM$NNU0$xddq-FC1)Y`MR)v-=88w$E)Y+Zq29j4f=YS63 z-nD7BWIUt6M9lpF1#Q>(6BeHJ&jpkFu{2*FQt})SiR|=P+(eugE?vMjw}?oY&;k=1^VmSwGrci&J1g7fY78W*a!3tPOwSH!#I@Bx;=I7u&jU^;RpBobzQ zdg5*(RYgkt)^i3|5UbmM-LjpjO6{8)ucxP8URG6+S2bJo#X=$(7(GyKO9UW^1oAglJLC1py3{Dbb3U)_V1E-BJEhT*lD1xE@|S zIQM<(v>sSb;Z;bS69+1k}^6R2wDwe zr#(HM(U93(nwVEn=_+c7NGm}GkUjZ=TPysWeM$x5^>uM##Gu)eecLlHz!QWrWS#HV z&TLlQb7Ym@wJ#vO!`nxW9Ii#z{>Sz;vs=iNOfzuhrnT%JTgQt^lc1f59a&iSg=Bnw zJrz$?+hCxUtEe8e-D)YTg|;ehEqlx4^ioz1-ThrdtrNI?n~$zsZasKniKKXF!DO*t zmOX1%3YR+q1Q3*=Z2*+5O-3u~Hj6F_h)h`tpWd*Cv`F4IVODG33N1h%eBfTN7X*p0 z)%Vlt`_?z`JoevwP?($`r+_Jlp%d_zxY{;*S`BmvUXfnp?Qe!4faN!ph8#$vlw%cN)n<4DavnCm!62ipZE{ z56)U{ztZZ>oK=_RIGJ1M7*E!Vb^W|mMx1Ti{K ztl7)Y0A1aIVz-CtNvZm+ehvHaSfP$GG8N_2G&D4(rlwqY^W+iPIvmvuTAZ7+65r_x_!{vm4Jr|+~Qk}`{-~U+};H! z2V3vK^MO|Lnp1`R349*jY5%RJL55}O^KZ+@_$+yqjdxcUKpL%FWBobTl>gJ=5-eYHG`^tP|grgE;B$>O+20yggxzU$3tHAH*2Pl)&TO>Bs+O=_k^?V(;o zxh3W{6Le!hW6Ts2dlx}H&qt3d=;uw~+Q-jZ?3>7DJ-=N4iA{VxU0}SsuEZhGJlAox zI5R+D_r>!bQ_NG`Z2}Z9vJ)5{H5fr!kEg@-aFLuprYcLVw!p6G^0qJz;g7xAHk0NA z0u>W`>s=+kvq-=`BewcNA3tDE^@^oaXP`t&Do*!}3z-FxQ(E9yEwvIC(jOOHjjF`I zRc=jFWeYWgGsCN<6c6vwt>XzS?icT^EmfEtiz_L6qqe6IlQ7hjAqzQJTD5ET!*HU^ zB}L&_x#GQ!mbqI?r$`oKt+t7-Ta@X#kf0#YP*+g;8JY)1iW(j&@V2@M5yw|9d5`s0 ztMOT#t*>qk1xAu_#)gQKU*HKCJmq`=S8YFExW)fNqA-SsGgV=IUMnyy5_4}5c^UEK zP9k!-nYmLjX5mjaD@g-k$M<=eDpgR02wYD^##}1+PqTKr)m;o|zDxOkwl^A8WbYs5 zUo~d5W>aDB3o8XQXCVAcQ&-_x74=W577yFd)B!knQdqNINw`oa12iPTtiKl-wOL^@ zQYdSQge)25Z|7RASWMkY0TCc_a4Z5z#egWVVo1q*L1K_HnP4OYTl#M>@ZZqk-r!u+ z0f->{kNCG)kH2@Zr8`hB*H6b;0c}}%WZgydX<2YTp+TkH{R&f7;E=;2{T7b8KUKrQ zen62k6j|${r(~j8#ISG5hSzHJIT#v}6C@&~n0gL1nsk7uQUQQ>vDSnRg`)iga?Jg&M||Q%f{iUeTh# z$KmrieXL>EY5MHgSP+yPC=6z7ozE&iR35t}N*4_ejqD#D%mJ-!QC{en*M+5oU0FIS zgX0Bk->lPLT33GgwrP#vnIcK(%B)T;B?-PgI!KbD`3+5|o74fPrvfxVDdjHwQ~MOU z1RxB^+Z@&`xs4ONL zJ)=x`YP$3!PzsJTDOglViBTd}LdkEWZCVi$g^SWxR^oCxIBCe34vs~rRhpH`n5_ny z2}+pHonz^9RMW1%f(Qo>!o`Gx1($ed5Q$J2%aVvnN(-xt3~jc#okrf#y>s=sQQa>y zV$~GXe9?gg8z@e{dh@Kx7(FK7gxOdPQ+hb_E;g)$jm)r}#=8G7T)LYXdeI?g_6BeF zvW^gqQfgDRle&0B&E5JD)ymRaHYr1=0DJf^lq&6hnxGQ{H06G>LvHMVHyY=woRa=@ zRYTa<*;g6nwkaf~^<~|7<*a%`b&X;}2Blsi(_ozKjYR z&5n42cWOFO^ZTajye3w_LO!RTh8Fn;fEpjg{)4U085v`rD_F8DGch%#{24hcv!ckL zUuug6-6o}qR2O&;efi3sXmA6yP3&gCPa5QCEbako-7p!p*Rr;#RLn%gAokC15`oFUx!j4Sdp)WLF&+ZXoOBM(gO0PD~EV{ z-!LUZ03UN2;Xg-6aO+cN6xd#nfgtP`aw{SXR718N)o!d~NfQZFu@tJ1;>OOHj&5Z70JOk9T(>3{TFt4&X%(lxTNXPsuqHgL7 z4|JKIKf3DHS+ckt-~KgKWd1pKaCCjue%8{l#M!%g;zbMTRaQ^u@jNSy_*p=qaC*K1 zw=GBV+H5QDg>Px!Nld2@-yxmuFgECC**+w@2 zvnzEK%`l0wf78SKdQf0Gy2vc)M@@Vvi3Wy*-p;?Z<}}xUB~v*uex;im?ThmuSzG5s zsmy(Zu9G-$q1u#=l9Ub#U8SPtClQUB6K7(E+(6X8mfJz~v@}(1eKq>gm$d30$M(W4 zh?t3A@2wR?fcnUAsWHrVF(ejTRhGP)+9`V4Uq5SS+SyB=2l-Zh)crhCR+5sM!(>>( zmvXqYw0h@@w`D2i)R5==eTEY=@R;;t{Sz6mfwt{TOpZ@j3p?==QJ2s?bKOhdo_zy> zaC?mv`nygClbj7`{P;nkzXfb%%_Ta@(4&&el1Pp(NuXP4eo1v^l-G<<2S#_rfun;> zfww|~2<3Wt#u(~}8OfE^SmWa+f}8#ZBN1)>DMA1z^#6SWJ$C@=gfhSh`1CQP22Wrz z07_K?WWWeNB$qQM(`D7DQu48tJ3)idu&iupm4Uy)LDW4{LG8UZ5g-@?_+*tRnTtqj z^QpNpxNJB5BPrvDLMAZKOk{p-EBs5Gs`52DlS8e&LYrO+d1zSdcb>nWm$MY|Ysmh+ zM()q?{nLG6>U8>6mq#8SGnkK^`f5XcjAy5Zm#2p{)z$II$;s0ie{88yB z4V$%tjZXnFete8QR>SKIMEJ-`SDCLiYrelrjB_V9V*!=Yei&-QzqnSH1IQ5RY%aUt zh?b(dmXNG`qc7-g$Pe=LZn3^j^$mao0Te)IouWiJNB0`k=Fg`QOF%g>ipe@xVPPSH za>xELAAWrMdiQG8ib90qSNhUOPFZG6Q)aF6*N3(i_2xuOSP0-Cu2{lOs7Fk+Mz|vC zo-Y%^#&nD9EEa5nXEWO6Mu#d+r3NTD-htt!229C|K15=8#f)Ccz&aFX&hw-`ez%bx_?yaFt z!Zj2cU26-#7>cZ~iKI4-Rf2)G&5=9)x(E}0tvEeF&SoAg``ltMzrx`@xR0X1J(T^? z%A#334`-qq!tO$-W-{~b`7Y;dfuyaG`Dkf;-Cb{rs?c#_;WW&fxa#(&l{)klHOuE- z1IKpyvt2Pag_$3(KUHYA9TKx4O}i|C^ps_KtM zO(tlsT~q^>T4+I$qK_A$**w1ReYL;KegfLEz5_ZsQO<0OYa0_Ia1f{0&Rj`to)(~; ziN)v3FD*>UPM0Ee%L|gk)}PsnU#3~?!e-j5Ip;AO`xK!S*QG@`J+%_C7qDTKLfUBC zb-5C%! z;IO`S0tGZz`yHK!0j0{1S{2_Wun+c`orDd#j~vg3z5`VML^i7#px#L|A7^3w&=4rB z?8Rm_y8DG%@XqJeH91y$dJd$Jz~A0-=X6+pC5~scJjluqZ13Lgq%}>(zWpXcsw{_} z{Vyj+R;y)p@nUbklYx$&o{qj1&5Iilg8EW)bzu_5OL9BzH&-MpslT)-U37Nu=Kw`PY_;Y`=?j!91m)uIH%hQ2MjQm7^xlxySKsV%ru_YPcq^-2@_+ zDt6CI#j7bdI{`k$U*;7j%S(NXMjQr593@r+z&;KYcE*SV#;Fi?f_PTqtE>=k%4;@OLwf)Q$E6HH4dfIy6t zEsD{u^VOeHjH_coA)fXg349%V_*JS3>P~NRW--#Y;c?d0)nWJ;NStls5NJm`ITlEe zHotSZeluZ#AQ`IHl|Z)r(dm=_xvBBpS5J3MYihV~*p3ebdZCWou7CgoX%!_m#I8H( zd9zNfyR}ClrcWL8HT5Ht6+G(x;H;hW$=xWn`n(WO-8cQmsTJc`@ALydOYg^pO(mV+ z0Ktg0?A(ea?mDw5WX{59v5+tuXxIAc6pTT(BUTDiG7uM9_9bobD&xHK)$bMd1x^LL3g0sS0fpy=5 zWrL#-{2l`rhy879!m))E0E%pOr7*iUE(1BJ7MjT%sZ zObZmWY$*IW4=c*66dd5oeT=mwMZ*px#4aAIMQ-Hm%A$9_NJa(w^?cAxw4i0>-9ilqyv zJO4N_pExJ0^=omJ`PI&F!FuMRE*#&kfD=M?kHhuZ=W%Qh;ZSt}1(3bOJH2^0QgE1! zR_Oa0t}8LQbvMt$kjux9?PKuSJWl>K1xdbow-{Qfw2H5~4adu@KX~|O!-21D_Y##5 znOF!T0uPpD#K2KTRohwzw2RoH3|d6H#r=!By~@io!bYQ0M7DA6Ou|kBQCP{iuF2(I zAPQ_Nv^cOp0RUI`&1dL*O;x!K01pLSlMP{y2+?xPv&!Gb(<;pkBni>J!9X#a?wiqR zb9>!1+Ublvd5)$z-5|QM&F`Dua-0kKfuWn=Da1ukj*k=n8mgDJF%F;%j%#a5SAS}tmg*-trNsOu7d1hr(4g)^3 zEKnJ=t8@=SEv6)&tS(hpo+eNxZRGItWxsB~@qJLg>DigB#F91K$G}qVAlny}%r=ht3?f3$YKbF}gR`xJ;E&;`)1?VjMGqNgat<#UIL*`j6 z=<&hlTAvr2od6Cl1jr)svAID80o*0OD5jF1iLBI#K(yh}7))^@-Yw1Y^MsP`f<@PvDdM_Gsl!r4p~C8IxcMwbBSdid>;7hLkYm zF(po#jPW#L^S>r)#J(9U^`?np^qutYC~Aal24*ev?XoQ`^R&xJ(bH1{8p`h+j%c9n z{;|r{uMQ_qO!&I%0x7;Cd_>98`r`Z=DjEcPJcZTOc5_GaZuf8Gz-EC2zjiu0Rzfd{ zhRfn7cktTXT}vZTQoAKbpd=keaeMB6)cLI;Re?NA9sqH8~I*M8plxj7kWZ?A-&dHV3)@yoX; zlvbStAOu2gc9vL-HXD|ur>4Y4MY7n+aj#zVAMAJM+NE>Hj_g>silxG-sj4IrNqq+l zTDN0w+uqjKk(HCbbpNSTDm64Qb#QU3uB`OwZMz_8LdZYY%&q^`o03T6A0)zQL|ae4 zFz5@mJG=_@x01^hp!joP|! z+NymgyXU%H2L!`&4_z+Key3(=_DMU0W7vjaPM5YVuPiP=2*kD5qL9u$#?F29pgKRx zdgu&|9xfz$R~_2@df=FprlM2w>LyuUnd3aHF~aF)bo~~**)hH%`I(ZX+t)S&dIsm6c|uB*s2_ zxNw9wkwn%uGCg?n87dO0X?LGigowc2)`s5JhB@4-lmhPQh=jWd8Ml{Cppsg3!$J@^ ztE3W@NJ-6Qfs*q}pTEmhk&}6mk>_V;dg)b4@T1t3<<-gzT9rUVL||`2&A+@IJL|p3 zQOLI@4U*!xst~hhD^`n8zwnpuVv`T_?qMeP?_WI$hJTOH-7j$aURxfsgD zPzHq95t*;W_4h=Ty@*UocNK-n074(2AOUz7;64K7{Xv(c-MSM9fJJo8LQJFqlga=8 zG2#HMsn0ntEUm!A1ORQ4(M392R`jf)I;){R$XL%sg~jZGtn9CfL?SUZF+Cn~R6|2^ z=Ips+Crs@AHSE~E*UrZB=Jjhs`~$u=Ml2TpxoSljm-`|np26tujO!K{0L zVeR61Q%CymKNTvkphzZDKBYa%N=s7`Uq5?zZ-loyiA**!HM{vNS|k)`>vc|wtZAQ| zsne!ke-_>HYcLF(GjX(uxn(Q+bqe_W1yd({$jLS_w{+|0t)Qf&qi66YE+#YW?aOD6 zxg{m;{RhY^D5fO5CQ~R5POektEZDMU`MZ>)4ZHUb_i}ai=(qh~NLN%!001)6QiprH zNyK6w|6w~09qWoqbP5+vhQz&kDV0dV@7RQ^J zd&MvNDX*YqV0`8Hfu!h26*bLuM_Mwd&8+0L@azvxT}4^&!tva^_f!V6 zf8adlVUwC2)+S93uaaAyl_YAY%Zm-K%t>>YvP#FX4Su`r=9g)hBj(k-JGl~*iZ%O9 zQZViFy_SL2S7!b57mnlR(|3RVxW4+wbeu%U58p8#f*_YUe^EQHO07+roJO)0 zK!Kw{Ad#2~ERS(B-5q)Y05GZa*!Fc#Z(UYktJK$2JM|wtedVUlUx!i@sWG~vC>jm9pK)YmGDL4aR)AEmsVP7sd!r(vY0dj z6{YB`g0}_S$8X;kSJ(O27%4JnuXBpXM1q^C&ccCxmWJL>&MQ3-IM{hzh?j-_v7i9r z*9~?%(wQeZCUaawv;@Pw)m1jzTC{tfPjp0_^Ld|~COk)LvZVqH$CD%t1IUUN1Ueal z^Q1y40I}k_F%;$YwasZ$dz=Cw5CDtLnV)jxoI_ZtE^1C)xS}~)Osn-Ct9P)>0BvJ z2NgK2m&#ODRE!!HfTHN~RjWTq>boCqX=%{ZKn%xjhTZ@C@lV1SK93hPb{GUfJA+TK zzGw!}okT}QESWh)O;d|ZCM&U(r_EbrY-RxfkV>W7*R8sB`5(55N=Hq*3h6Bco-@bO`0KcJf z^73gZN#<5I3QAu+U!l@yN6ueKjEhN6d;93_t=j6E-0Vzaa|<&on?JYhQDU*xG_{(z z8m!p3weg3mk0RGCT`+mr;O&QwHD0}Qkw_)_hQ=9bZ(FFQ`w{ROH00>MU1g=EN^E7J zfWLdw+T=I!d>)U^VBCv(qsZ!x@BQ?|_*-W~_zm>{01}zJc-uio&+l-E-VM}Ol}k`m zUPX?M$XS4Fph+Uz&) zZ|s#f?4>h!Hh>^pDggjM-Ci)sE6Pecu}sm@O~YecvjZB+i^I3gk=HVGne!L)y;aZ# zw!PO}iOhZzjRU+mJ3V;e`0`0XBWBEp5oG#`jeZlR*VR;$$mC_?hj}$n zF_q>5Q3|L>0R{j-0OSFbbieL5@KaNVOC&h1025UaG8aSrC@gD2hfd-JQt7o1g?9@| z3wV4B1z9GM=%uFow}UmMdpo-P>^zTnwq)Ua56^y^w{C}FSS%I;0Epe51WQgz9PU5F z&p%-C(&fz#C@RRGHp<`F%wlKoiB9w-Yab5IuHmoW#=eZiaXcgSZQwB9i9xex%>M&H zkQE!ZPMAKcrn-turi>rrJ#5SbL(_jt{>WsCPA6q=KIa>moWlIPVf~!POrHMq;axE* zHnXxB6FAM>%BGK*Zhc)HM@_w^x{Aq^MNxGBsZbj`hp$~`$NJUhPlRY_>)eX?Mw;kL zq!P)2om)bWAK4RfT2@Y8-`KR3Wpb?q$MNZ-0}|t71$_Qr`wsgK8`X)EcOn>uJ-Ht? zf692KtelaVxuuP*v6+RchNgATF0thLGLr)U5D5j(?p%|K#Ub1NJbLdHi}MW)+)tXx zIlX31dQ1dDB#|i8K|xDQ9NhBXCFiFndyJm`Wzky8nH;GYElh}vJGVsmn=vcV>;A-+U$OzBne$zkj?m<~D>7Y?p;146=n>F!%z{q8dOI>XO{gg=IXG*$rkGS828J@lFCS;%zsf~{63{N{7ZB^|#JL&`?bw$~#2EH7P zB9cfi%p2)o@KuwERsTFX8Xl{|R*3y;W?SEgM2h`&<5}>d*t4^T%QL7ZYV0OuavjO! zRK6?50hk^2CZ)PYAd#-`VLniU)9%?omt}GQ05|~2;)Y{_Vj6^~A!IF>qK=RiV4@Dv z{`+s6GC2SM3Ba=e4+D4|1bUuSm@gH1 zlI4xrZHsnL9E;)A9jh%dl9d^zt=@~JKy2f#_je|zk*F6h#*ZGcefQp>!$(LYlFb{| zoj!4#NF>H5r^S-a`W0pFd{ z;-b+5`|24Qn_KrVwXm{xav>0i&mTWL`u9%1kz*&$nBBRT`|^&{Qjk+o#$B~wwi27Y zdG8@!Lqkf!>xl3NNw4G9@7yQDWHMx!3>g_5#~}z>GIPpiILb ze*Jay4F!BYz3ugakMD;qoHkJ^k<6Yq-^tm<)!n0ocpAg76URa%VzHgQy=_ms`**`k z?Oj@MO1N?HJdI8dzjx<(_`|E=k!l*6ZCzgXAmHAXqDHYzU1?rb zUZ$Y7QbEheI$*kbk4})#b)26i+Tj&tRi{VS7o;1GS&fjW+}N<(Tl@7#EN|4nRKJUU zcV;!faalbZvuQiKXGyqJ!i^0pd3A#<%Qg+%3O;LBudgnP<5*ErRLse(R9OZ4$tx6f zOj?+#t#mxL`5X>{CdItSPEE>so0OguPb8A`Of4;Y_3@t+L~7UhQ45~YZ3=R@wGA_m z-BOmNAD%j-L5RlZ6g^1Fip?(EKY0+7MvbCv6Uu_|+Zxm6U90S^d+JvX|V7^KK5Rv^JP-H=*l-8~^}{W6SH`uViSq zuQ=@!ZH;ZdsuYThWSKLJbzM~2CSGbsYy(;m-uwu$O>07$GLN-R8-ZD zUbqTD|4BY$7#8{D(Z=PA6*x9v8w{BccgYpSbaUOZ1tN_d-;@PF)`Wk3|&+s4n# zcC&OhNQ)pKAQECL7Geh?c4BuoCi+;|9Vj-ah*(G{ASvCQTP&OJ2c8#^j$Od#zrRl~ z%+8!$U}o-fuIswvq9ajgw2_&)wY|f<#VbU+VgWiXSF5h7JiKGehqpoFJ*KVRvI_t} zAQA^TI2xJtU*kP@>1>ax%8G%5?CqU~4jVJBs30#lJ4;nvqdtqdIb|iqDr)MUOIB2r zl}>gYoROC5;Nt4DbyugH{X<8Nc@pyZ`2Jlf$;qF>!Vc`+vw7S0VIxMixN}8$`QDv7 zl$4du`km6(@AoqsuWjKnYXAf#oL@uH z9Z(S$D&TS1WqF049+mzGW))>(rIjdpmdf_x%Jpu5SIgkg%JSacs7{NvbLeP znxQT$wQ`hgX${kU`-NXc<-<&McY6#qQ0~NI-&hNSuX`8md=QdcP!^Vyy(b`a`y}Vq z®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

Cm{`Ae1|IT#cKjGTZnNa} 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

GD*9K+W^3)prYWh)~SbXKag0^f3PFt9en%G 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�-TSj=HlZgm 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

C;KUS@`9ZjtK`;5|{7|kNw1C)*y8uEe?8) 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

1|a<)sCn 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 z zz#ty~i#}FS(p1$|TZ<4(rb#XN8p_8Y7kSdWoGlc1^^o_aRyN)$Q!|)EHwJasNV!3td^>#|Vdz zoa@*LfG7KsOP$O|V28DE1{T^WadZvVRbe{*GtrUu<@!_mvOXchD2|Rpai7{v zq-;B{!=W|4qNQ+J`owo_7d(9YPCq|I9Q^&g{fCdjwzjrUDQRpL1RR{4F@TNS*Xl_R z-|#Co_xqZFMt3zcF`$*!R5U1Lmu?|`tAD%}Jne1ge_MAO1kFYY%Sy}$X zG9hsWuD5Rp{c=j(DMDAtXnjXyW1x6Hq|nK}qWeAfS#EO1^lQxzleD<-omgW8*uXMw z!Et=Z`tqgoV#|}S3ubLeNnwqM#x|?_K?$=zy~3yLX08^d>z1SxICFWzOuwfparyb@ z^ZW&bHa_G{|7iVRGUrIem?d%cn#AAHIyp?3ysd38Tkki5 zD3mLIy7GJ*8%Tatnc1(B=aP8Q^?xV|sprd%NWNKbX?nWanp(4S8r@#kLpB3&ylm=F zd97{bRq(R1y~PgV{S;pzyJ9M2;Y0`+S5#u2mb>m!!+Gw`#G0WRJW7$%TKlKa8*`x& z@0PT}LS5LJv%jk8s5jd;!ow3}BxW~?d&cCX@FjA1w^rBJ119!nE887A{GfBmfWYF` z;5ml<=^JQvemy5UnVN=02%>IDu0&KaX~H`t$`=5 z+SRm5{uG|noqzmUnL-F5cwKv5h=qmG-l02>Li+Rm%5QE< z%_y(8MKLT8y1FJI@Te$Q4jHuKYJ9P_#<42wE@qcFfWb>6=k*yWs_cC2TSCfdcDlSl zIYrh{)01N;Klk#?EABbv6)?q2_#f(I9@WD=5}6+i9)! z?2wJ{VX3wfgNO_qc;e@7ocTZ0b+(o=@ps-@9cOv}9dvw*zG`6u$Eyk{bOPNNHky?k ze_mj18GMO7x7ypE-`v*s#{7=F+dUTd4)!W_Teo*@aC!dVD@Z-Xt)ANVN=BWX*#oNQ z#mhu#=^q$Ta3n=VL&b~?^4GiNKnTHgnfg~$37(GA^UAWJm1hDRvmXols!E3h=hd|# zuXE5OP@9fgU0a!P|6CDoTNlOMH4moZ=yOXt3T{Nq^yK^tNES#l5jt4P`Qj6{%ILseI$At;d(Gu#za*QS4U%j>KIAxE$-N=CCpf%JMJ zIbkF07d!k&e=#i^V%|7tco_r^SA*_KoMyIkcwr=)T72LF#s$tW6e5E3UEiXjU8qZ% z4eD-6!GH!NzkL%6Cm7WqQz^6`3Iyz3adZoNTc6WQQ7}>zGgs4&&4mgwZMxGFl@%^7 zHXo^ALQ2LlA>N{j;EWOOJ3=KAgDJ;W?w(a_%@&_s?vmuKoLO?!3}b4s@#QFKv0 zu--a7IME;JwbO5u6DbfHKq&J(lXH<%fmE7}Xh1ScT?>%R+?~!9?%KFUwbu@RqULdS=eLhQneLWp{&zC-eHn+BHY#gusAAU9!hsF5AjGI{rN>E%)j1w+Y8!Xq@ zL{;Sk1Q?yq(3(z^Ou{3eUF|?YgVU(Zpm-Y<9j}f+UzH`3BP=idD(JG7yeFHZUPb`5*;2f&(03K=gMp@q2T5l9pAGe|NtT zVZ!*AmEDZ8a&1C{`Hhd2F(zKKg2P+;i3J5y11%DDkAs5ng?Nb6b-u=>&m9wbuA=gs zL4hu>FF825eIFkdX6NfB@0EU12Fp+hb$E{M3?yTpaN8Un#aVP=J0Gm-FW}iAK0@-k9U1seYB9h&%PH(`&ZrC9v}Vl(18){Nx`e z`i4|gbZ)`mmAO5tSK%XPK7KxU7(Y2Pzpts%5Fb5PbxJT8iIG1%C_?w4Km;DjopTOw zL1$y9FSS!@tYrg3!$e}zIt3M5RX-jE6`PlPxgvbq>2;B>V_po)CvWE22>*Gcq=X{R z!AzNeDNo3#^v6>xz}p}dGonw0+ajPyBwvGzXjgNJraLj|2mjF|shSE|daGA=cOZ3v zdC1O-auZZn`HlJa1^z&8KY)(^+1kXweN_Kzi`35S_X~ft_z(3TxlYXvNFU;~laf8czm9 zF>77|5i%iU2sBUAx=7IAuN^PJF-`mkUcn(9krmMz$Nxx&jm;h&y)2VBQ&>6Qxhb=_ z0dX0R8ftWSzu-TF_MRlp&P7E9<&{-kUdKAVb|((Go8a*Kc`fZqgKqDeSi}GRW(rUd zMOI0AePnszBC*#V@rZ*<&rrQX^J&C!rY3e{u_Yq;DtHykDdtdRfoPHz%nlkHoB@3u zrPXxIa>_LEGDr(Ae?{GzxB`*y-mvz2`+hT*+s)3aY<#-_-s~__E2zhTq9SpoWc6U6_vs;J_{=EOF2yyY)&0O#$CWaynMbXJ` z^?cUy@X%Uq#|x?$%cdlv>~|!DYupx^~Hq zm*Rnjp%tW}JM^6hZKzlyU_W)6eL6GLtR#-?uy6a*`}!vXiX^>w-f)YQoa&E?Y()}G z=P2WNg-tX)6F2%6lA#sV$R8dGr0`+9WH4CFYi3Zv$^Y9nHmvn+%f)?Ab$3GW3+DpR z;LqVHcri##MO{>QeRH+maXQlbnmXxOT<#V|MRPnp{Mvr;BuG#rv2zwsLPmSCci^OB zYs+8q8h+}4qB!PTR3B(2_1zV&SrgyzAWLXKvIv}ZRIq{{+qjF5zJ=Tswi_fPp{C@v zm8j1y->eF*b!V`1=a{V-Pu`24BNMK@*noz&slP&e%m%8N`!UT~y2r=YgVe*wm$8Zv z9eR{kVs7Zh{kT$tgTja}5JmH>qb~3V&V)A{ku_yG`pWmY5{+iODq<$KFGU7k45igh`Y;riTu$uX+k||bR9J#QitVFu% z`r1{UzZ`guTVBop-LdMQ+c}`74h=fCvm=MMb#!DJ8^y?i_9aS_Eh=KGJbZ*kX`c~r z3G84FktxhLo#m;n=OK3%dW1!nuq`hy%gg)OTl?dCUm>?L!%h7j4#CO>>f^)V?{E=i zSZFYQHZ|maFs&7CJ}Ert$o$28q_W8a9x*cbMZi*X&Uxd}4KDcSjx=hhAmSAoLU#49 z*>`2b?Cj-Z2At89$;1RWkcB0Lgx~Kn$he0coCrQJ+#>r3VW)Sn<-ewJ%zjzzf~PI5 z*bmsAtnSyuf;SOTPD{aj6{xRisl^6~1plntZ`vNvf@6>~l3G5VpLhv_e4uHoluO|I zv#P^^2txmnv13|FImp?7hXn@_TQaQ=4GyMY?N(8g^e%Hq*C2y;5p>?&OPu2G`pu3Q z`T9OPH`l14y*9L}rl5uh`jMLL{`>LLoppm*YyYEi_P1|DX~Tu(d1af!oX(wl{uoM% z6aU8G-^<3RzWzj4;}%m_#qIBOsAPeL2gS=cxMNq&72y&1=xLqT)fHzX_~DRzIK$TO z)4)+tGX+#*d%tnzbPlp2cv6ZEsF$TEC<-oayqlcTW?F%lo2ma6$=PP) zvR@zJo5Vqbz1=i$ELJxL^Xw^18;XnS(o&M6pdunW{Vl52U0SjE$uU1OUaNZQgQIE+ z+r|+n^7s$d%xQ!$=x1U&C07DU%I^y58`E>}1B&6mOvSz)n=K`;jTAN!65G$7s$K#@ z+j~e14ED~>st$@Mq{70mu#)cXfZd3dy1BW&er8sO0FY5M7gG6oa)(7mriV)E>4k-- zE_|s4FgzP^e}6|MB`Ygw05rC<8!gx*b4RJn^jteU`iNMOnUV40-(kM<$=l281IS7_ zdlMIZ(RULa1d9DKkX_3$cBHxg^>dW#6JDqsfZ`r~4x4c*X(W7SD1Q)BsOy4vvbD_a z+XG?224h4`<7^j8s4bR_ouHU2;lCU>w-5-^KCX#@8b0~ZZBFD+TIBNssdp)27QRe% zRJw}g#G;^*q^^y*xWB29lD3r<@X*&kiJC%}{O0(2QTC#uehXZ$GaHeeJ#mQ?8k|8_LUrKhl;YBp_0LN(@WEiA`_K?;ry83=C-L zs*1`>4~F#mzrM8Q<^5jlOG=KZ?Ck6;t7B&b&-9+1zX`VUFR$n>EqZx*rR(ZUB_$~+ zD11aE<>YL}yVja~{_XETytWR1Fj}G*O<%{vQ1HK_yWO}FutGDVJmo%91GzKm&bIUN z^0KbZ5|6i6TAJ>ZH3u~1Oss!6vf^0yEit(ennt6W4`o(gb*`}>0;hi0b=fF_`6zbQ z>MBP=&0tVE^188e*@PTq`xCSL8(qCyX4o1%GO@Y4mdjg7sviGj!cmnt9A*UGo_}U~ zV)%7#^&$*d;jL0XkrZE8F(vI{xqcyF!Ld(eqqe=-5$@?(O?`%rfl*#Y<`^GOMt1b) zGd8@fwe`^ONJe#Gh#1Pr-^S+Vjdp)VGOC7uXLIsZbuQN=|IYKLtc5SaV`5^O*93ra zG;Vb1ch3*gBY`cTA|XW@HAL3jZ4IovW4x+kyozm6v;sEyi@{*F#(0S+VyXPXG8l{lEEcv>A6((Ni9HZlHvUg+D!W zaC7Fgdr!J8jX3l2o@f^OYc6^H(3EKNq-;+UXis~Q@tpg1p%m+5^su9^ zWq=IL_`H8ZqNCSB`(do+p*c89Fg%uIy?MoXkW1uAbH_y_MGWx4b5uelCMFhy7T1*> zZe&b7J~i8x|y@=zceth6a2@*;pbZ3`Q6g zWeKR#(px1jh9V=cv&Je;v{_fq8n|^}xKD@~cM_WKeVuladge!U{w{`D@U$wg^gnz6 zwTCy0L&fisBm)s-q-CFU*JVKG#EiaPfw2& z%pvR`^W?%d!0mK)`R4C?PrB-Oaar<#@{Wg-Sa3HE@1aLr&&V{VLICu$s+f<3D=Z>? zPjoQ~*Oa_EC#*`Rd3dU?!_&guQqo8%I>X zxUPvGn0d&tZCRufdi2#8qm_~x==b4kC-%_N){Hs)&bzb}u#WaT@0a$42SatbN7{5% zU^VEi3m)drP~YzPS?0xtq)jQqu-x}-o`73l+mVCC#pzrsywV_YgcLRyoRcy zFHK z^nAQ~Poarc;Q7s)@A)dm)6$X)^Gt~jFGy*A;oB@6=w($^(551KeOrPWA+PZpCAQJxLKB-ko zNTvlHGvj;4kF^)0~gKt+`<>0IV(ODP^0 z-bmnbsu%RQPFhp)U2tWQb79wFtW<7mxxH_DWQ@IEvE18zd* z@kXtV1|693PRDruIq!(UHL=__DJ+s8x6@zVDBfey&K~^Dv(ruoESulbvMA!}>d3~X zmed>vAOG$j4?xCUUtdSu@C@Gbj3vhJZ10`;M~M~mns56Uv+7ujh|3@NY|A){e#rev zM)?UfLSoMX!nXZoD=t_q5wpt6tKRjcXapX4>_N>~D~sq(%s>+tBx8~z5cjLFFr(@s z!jM#)l->3EZ+#89>f!vr(^w1IwNLTwn7z6K>)4n%*GFEI7)5F290Ua4{Nj8jMnR|W zaU3LYV$=Qo6z!yuM91U9k-WSe;9g5eORMefu4yj*ExKZL-+?P-v=RgY?sgZ#{#Vzx zY+SQDyW0r~>3Qfs{;wAxC0;!(@NK&YT%tsV-g7t7*iF*e@~ft@lKJH*@%FUici`PU z+NpnDL7tYeaY<$S<^GzlcWW!s9g2^SPfB_^%tu%rzBA$tBq(U{oX0<_#!4&pu7L!% z)Z-52OC%fLg8^$~!?P2;72r$*er$m$3kJH)UX{hG8v2OP;4^D`dx0~*7ia75b!8b1 z4P#pR{OaHv04y#s&8wy~@{fI83$a>D440879I}c=>CP^e@8?jgpl5eW(3o6`g*@#dbbr7SDnp+o%4l< zuC1}QtFpGMso`fGndi~@rxE!S<;Eg5aI!Ap?#tK+S6z*o#t&bj!}6lM`L&q9_s{dr z8+o)_tXSB)sjQsshc1zEsUIKT#X^cI1#3T(PGs}m-MjaVw>u^!CHcKT(JHkQ@di-P zlao`vN~?+aDY`c{L|3#G&l|_B&n?+>41LYW$jHgbL6m19)i4kY%NXi_cDM>yE2WQEBeSr@z~db0|C`sLY5Pf(_6<@C5%kF0%d-+h0%1iKbwz*12X*rflm^qUHOk{qu_&yo6GAv z@2ukD;;UO8Lqof9T+>n;>!ZWZ8oL6q-_!asn7KOhiAe%JfO^)-amyJQk)y{4wisSg zfA9GZ=KsZ)w6S4RV#pQ>D=Ub(fBIYaRdvv&i3?bpwm9n-#vkQMGaUY%PX z=o$IlGx7mo59SFBLl2Ei=qG-q!>VNoL58K-K~C>I0DVcc)a_YvHXjx?P~LoQ(C!|W z8P(fo?YtT;BN{}mu^b&8O#|7-oyhSfdKz+R)y%ymjgcxZ1L~=Ar`lTL{pm!^PaU1- zQQyCZ3Hj!{Fh_)itv27rwp(r3!3Rg<9?|yoxB3cVVdgAR- zL_Atz3fMd9j~}?yUb2B}*r&9(o2Sj_7zy-skEAakCMIvNP=5YdaU|=WmzP}aXDBEr z%}xg0t|xG`w5jp6&Tgj%>m}OIc+zn9x6If&K)nUloR21l@yn1RWkGTQ`+>YjW6zngl=5>;be7lP`PnV zB8f@Hv7+R%=n}zX;o+=i zS;KS3UxOY8y`TBEXCrpDs@E?sug=_8u?a8>>s2OKgun0zznTBz2|^Q?Am*2$!sK@F zq+=OMR8=AR-+|b)_onw!rz(*!GqOYm+{mfu?5>Xc7I47i=Kx66(et8#gL`x`SJ+nG#3Zb+uJlf2lTaLA zmEWJ5ST?WgtR1KPvx@o$5D9v|ut zGwSIrw=FLV#-cV~cvA(+>va$4DH)NIQ^&;k>vWb3^zY0r%+cFf?^#+2wfH6?%6FPy z{KimJR#vPkuQW9=xxMRHSYBmfMgvd>=i;I&nwNQ9XHDX9%M*zMyIY5a+V$m?bI6Kh zbz}#V9uX3v;&2a?Httt^Wps3yyUvK1n8qc@&1WHJM3iI8H2k1`>LMTmJ|Q5WSnqIf zwBekc86O@sF6^%P)lyhjc6`|-2!!(REFE3VIp9wC_*9t^mXTBl1KM=oA`)uvw^VGs>TxHNv1E`<_*ToWB zQ*K0e(Z=~YQAm24%}OFV%D@WqE1C6R(X$b2eygstcbp?;WZk>a0h&UWgaun-wJrg2 z`UxA(4b9WFQt-MIWID1v2MwU?!(Z&|?JL%rDmS|N6dLf&^WHB4ZDeboJKIt2?wpLJ z8yXszX1Rw($EU$;O!O>OWfg!*#3n@nwfK2qSsiBFMZhPFysA=qa$YnL`rZAwV|X^B zR+V0($J%9L;>Ul(i3; z6~R(yTh3C`Y~jcSpAL{s+!%=2qa~}rc6gze#c|}=Jm@f?MtlVS1k!?%cXX^ze;7LZ zrt2bR2?2M+TTxMm--e!XZzNWbK&}_Rjw%+~51?#A!}yDJr^TkVVbj6PU)GK+6Nldq zH1NhY>Cs`*t94#!7zjW;BO@-?r?3dlpOM4ZyMJEZ)`}PHVe=3<&fd??%{#8wG!=C2 zxNF=VvZFV+y8$A#Za2r+l;(*KEvySH#>l9?`Q;_TwuvSta9>5p_}bb(fP5lNU}CANW^oF3!qvQ*y{`N=~5yilS9*Ua?U0D?1-6B z0$Kl&QxbtdP(eDKe;KxiDL?WP!uj|J8Rc*?rlx9Z$W10j`;hKz`?PlDna)C1yS%eQ zL+>LU`B*ooRhfd02qdh%I3J8_D6eG76t=Tn=6)U=8OdP^OMxm3ZS2ona}4* zbp;w4Om#nsTR!#)VX86htH4Ks?dJ#@|E9iEBvuB`C{>ea8H zfa2u%SZ8Umu+Z|_#kJMD<`YrN502J28$FEniS&oK4!W*2?1cJ6B3#=#j6Z zsll5W3~1HPv%r=jC@u(cDJtaED=0=_jhgK2Af zA7WvK2#-MAH8?%3!pOj+V`e5th1p9In#O8)eAN>^hJ_iiySHVe@+0v6k0cwN;hFQ# zjUAEhaej}z0}IJ6A0t)0Kf~j_y{tXI`^S6w`bJs5_p9Mz?@CH`3{6fPTRS}`=(;Wb z#t{__>Q`fJG`gW0x|n(PM7eVxtFYg`DU7;yQ5-D;hUq==F^YX>s=l5E=US1!ZwU0>T4$q&4U6jiotB zp+5jeWLQ5;bAOW>bE1XD+XJLZetuacD}v;vrtR7HL_}Fs-;+`^XI57Y3^kLJ(sYcq zX_+a_Ypk8k`~+ZOLyydQJ30)YNYF%8yuEeJ#Gt|w62ihDCEs=inDsSw_v-5F09);A z7ndXr4JkiEAU8s0{M5MoHO4&I$x3Xc;+Thb%6esM=*V|%B$ zGVXTN>kbPK#|@S87P`fcAM}2Cu~auN_)$|+veH>q#d3|IWM_Ahf^yR3_tpSedm{hH zq}#?s{drbl3aoNQ(1t8X(DfZ8H)r-g= zbj#wUmIEC{NnMGWNp+{@o_1{_!>W@s9i_$~w)#YT(p`;(*$SO*T}9oa=eXODxQjz; zX%#9E=xguituG3#kB!uc0)i8Fe;TR$K!`mT<|SqdX+#VH$vPWPkP3&GL#oPtiR4Yg z4HVbiBs&@K6f`fUAx3p>ztz-roW5L%Z{Ju*{r@A6iL!b<@16HhdS1wYTW@_CdVR|B zX3zY`3*OWzUgk*4la-&`+}koWBg*aXF;bfecz}bOnVH7M!ESHMvM{$K9?bs7UeC$v z93cxwBQJR{Ci{|td9x2IxMn@Fw!gbqZc7M+cg#yK5GX>T?PP0iYKq5e*8n5_uDlYL z@CCdt>7{T8DV9plAC#;C5u02hbL- zGgitZj12V8&tCjz{9pSg5^l-UY*2B;A0JlNLvM;)!vxWDAwIJW2*7S)-NSaaDK4;MZE5VsMic#9m|u8Bxu|tI%&7?`;ezw z!8Ol+Wpv}LzFx-F`#+wXb4L_$8&OFKN$pBQE0c$IDQiPTcU!eT-%+&R+s7v{5kkG^chHZ%@qw^#BUNFU4M5(jP(aQH5Ta^HDGU) zMP()3Uz*~wG5|PPC_<*Jx-`c&%H(Yb+W39kgMY9q7pS;&s`RWNjdB{0H>h4}AQu!Q zdFpt7IO=NNSo9Q1JE}_nM;7+fS7|F5w|tkNaON@So00Cd4+G-`7_Aq4{5Q}S5c_mF zy=r0rJ zD&m5_0dv9i?13XgBQ__8P@pzGe$sFuGZPbQN5}KiLl8(qQ*#14^NFEzXQ*N1?bLMl z$p7>7cGlILq{6R1;XuTwSYycjj)$vn=Qw}m_d~cXiY+CPxWa|J;BR_^%i@mv&&DX6 zUn@kFHueznr^$jwQ=rHRObW5Q>U<-q!LrezW4q`U zsJGMozo9o(2L?WZN{jWl|68$;P}ggCtY73S-i?sYV`OsdJwFiVsHqQ1%gWL4O7lvK z@=E9aah>@dk66l|oE!&O>_N3{d4yh^S_eLF<9`B=-b|r$DNU?aD9GCAYBCdpM6|UR z%4tpAkdZ6L#{o7E^fjYQ&UCu_CGdWjd_X%3+~Rjhr@?2@Kw%z#60J1CJ}sAXg}L|= zp$hK=ce7A7#lsaF;~Og}h_GC9K!?PCkQ){g1%HsMw)~PDzaCxLXjIxYRa4yL;da8j zw)Vit?F2{+0Ga&8MFUcd)WHGn_o#6c-+O^=#lrl^telBp)zkaxv5vUaouJ96?+aHE z8yWg~FprND*)CjQE`m|i&vJ=cuPKk`k7JQXnjyIn`Mn>j=K#12uJKeEAYiIyzHYOHkq&Mm7X4k>< zp{GNo14EguIe?3&#RrQP07XD`7nKv|H^yNlegeH^L`J*VHrUToCgkuV3@j!6YK`t5 zDDduKRD%4hG(xS#RqKMA&eGbcky*0{(uAC_=_46!9r=I%jxZdQdwN#rW00Qnhv#}? zPFPB9p1BJHt}cZk4=E`)fIIQ062p|Vv{=jVB)lw zLc0R|NO%3;T@~DX^)rL(j&&wb;UI-S>FCp!S}}zsSd3~N%N&C6WyHoUgOW zfmmalzX6Ygp!DMvOg~gwRjN8YUtLv-jfqvm23|MsHWyi#sIBoSniHJ-2vD90+h#UL z`1_3W@Q9a$$43N&%*UsPV~ljx*1%p+&0MH1D$4r+$`Uwfo1L|IRJ(y5R2~_TL3tNh zT@}~}g#1H?|E3NF41y#Ra(@6>bF{Uz{338L9T|6x6>hbY0o)CNh!L?8PR2@Q*cXQ-JVa9?1x$Rt0V{3j;raXTL z!?P|^Go>?rUZuIcm5CVtt)d16nm-dtNr-QBNZy;cW6W-<*xLV^84Gx*?!dz%rl;vH z^7A1gOyXB(SL?JMcZK`f*p#NVNJu@Qo$Sd!!ouJl6EYdq71r0+lL=SX)?&nnRj;%F zND&<9%lck)M0#lG9y@@HSXx+w2a=((oF6&~BM1s=e2X-oME{@l(!Qa>uKRU(4AJ5qy|-?!hQ3`$5A*uick2_V?y@xC};%$dPBg{;r+?sro1m67stwK^3ci>uXF2zbcFrLEqhVeZ(;$&K!J z3kH+)L&LMP^9;5uZq7msEL=cGVd~gvR@t#F4$i*G#j`ELyBW^&rV!?goEI38rZRAX zOF!`;DP8}v!}YlC~L9lV4ke`%~CrS7JS^dCeYWf&9(Qboy+ZQs&uneG4mRD zBW24^V;z5}kvJt`ADNKdpCR<=RfT>?Tqq>SL zKL^E_rm*AMPbGbQ{gYW=CMG7zfL?hsNNd1`wvi11wolH_H(vi}dCF|^^q=Q^;NW45 zb>vS*d=@?ap8p87h2EL)Qi<=OO}afv~`lMD$RQw$KcRG;CLQBvI5+fsVN6fa(Nc9t#eAK|p-cv>sB>O4~2 z`Lij+JJZ>w2gLV?Jvma&@~d0=ZX{S_^`E;6DtEf!j&)j!<0E7U6QAq zL_s_x(Cr5MF8$S6RH1Zq^imbXaf^TGr+_(AruWFGHo&$o$TM4nr*L&&5l9mp@v%&Rnj=RLwFX z`-Zu5u(v+9Ha9oN%%$DuF*@K$YNl1SVW6Y2%H5n-YZKF`d0YO49YYB?w;jvD^G#e= zt@#cPpPm)`p5R)%1h#-t0HgJ;ii!$SBjF2dIVC!$jZRPJPQTat&f7xP=QtjIVjj6e za(ECe+v0cXhd;r=Nxqn>2{$#bI2aW1wUDYs@o^^QT9F z21>vHPOq$5*iUwND1(*x^V~jis;iJPf&L1kEun#Z-NJ z|5TIWJKVgQD|X=%enRjQFP!rW@>vXdJP-C`9(FGVQAq_F0$GEmD5J9KRpPR< z4fVy7WvCq2Av4R%8L64yiVIK4(Sg=AZC&QXl-%k@bS>7NF$TcmdbSaFKuQ|&_8_F} zF)$=rZO}2bxTvG6y5)Dw!AknBkqM?rP@nOG{zg$CY*PA*B1g!~;=yndE>ukR`*<>X zrk$fb4Cq&BWvAPjmWR^13lbPLcB6;}m+(*&y>GNvai31xaXqJ+%ya7&LH7s)ep!0Z z4cVpZUFJPKeecvIudo3tNThF2Lb0J6sH*&)UW$MVd}wV`oh95mF|dE;j0-}4V~2{6 zfC~%B;qwfN3;#D|G}t2@7nkk!`_m=IEXUfK7Z#%XaHlpfaVxS|gxTr|*z$YRmd+qEE8q`ycI~gytTd?`_hQ-Ru z+dKQ77#;;d$p26J*Fkmlna%cg;Fjs{>6v-P&&5xiF|i?ymo{AsVD1mfpW~oksR}Ji zZUT8CBz*37oi!~jRlW*GNX$;pJwNT$j~B;O=jWF!H+*(pSp(D3{=04k!y&m3yP z`Z{)7br+@E{Aezz+kSZqTy7sVQdJ+cE%nazD<~-`=|&Vhehmj^;`}2cH}M>>-!MLN zilROi_Wa4;CRTdp=jZVvKH8iDGXj`I3}sy4 z=i}#HTm-T)D8;++lLZ!CizxsN3i=6T6WWzJM!K4u#_FjAQOU_Ed>&tNJF>=jXs{+E zAZ<`qZ2qsVLzi)f9ulDsvQ$Ik!uC}^zV=F;lyV)!86d+8U))&apkKUkLU53h@)H6C zydK}`digLB5M!U1==&H2t)zrZzzb?FcY#e7_^pU{K*ifkDro2UYp2eMmh!ddK1qPc zo?Ds3VDHOAVd7bRGpQV7InXOXEg71gj<=|r=AfnP6DnYC1~J7>K1=`p>1SH(ZWYxLg^i(ToO32<7IkGV1c1))W(S`M2&rPz)i> z-+26gM15sgl})(r5|A!QLAs^8yF`s1SBM-q#GoqJ4Cv>LAtwp&$rKY&RM^g z_`b7dp1Nc1y;>UeDdMD!Vnit@K<_7ihyOMupoPiVgnX`)3;Eh*AnM#_uV%`!0|-9$ zH^Uy8uCM-#^mra`+;gPaDiR2yztHBEwUTihhkb2)&xT3P_hD)F`yufI?7x&0D(XLP zrW`1X3hJ(-AAO+$JNr8wZXdQoHW!KZ=0D=<+u1=2tZbcHddCn@|3mN#Bt6uq{3LgW zh4*Z{M5R#YhxQSvEz8c0cS{z0!`q ztEYF-2zK@xdHgq?9_+0?ngQtw1M|tn*@`OD#MHq0XIN{I)mJrWT_fZ1$yv9**GZc@ z9Q^4v&Uc1G}3W($ex=<0@?q4}W1YyRXbe1xEKVNBQ~rk*=>hiVBJNT!3F9 z9Ne95rS>Do$L;5qV%s!MP>N`3s$;;zpeiURPpmZsfvXqKJf2FEnSQ4I#6LJByggE% zd*A#O8X2I0o8A${U-R$y_lq^x$q}8XQi&}sQKMUK3Hg^FHS~=H1BGMLsjo>NR{W^@ zPEJlXsTCJasK*5dqR)NY+JFNFvhyuQ(p8v*Gl zCevx5t~)6$QdLWOyx;hKY?xl3=;W*Y003nZ_8ki~V-w<1OWGY+5JOr$duFUkc&@V* zSWULJ4;y9xXr-9Gv$?&n`=zp=f{~s=SWMpcGBfNj@lcnmVoERDb?Yylr}jRaT>~6_ z;?6cMOo*V{r58S>&BHy?>sDgQK7VA1>ljN# zyeVg4bKBLvl0@4}jPTWmyLSN5QAPI9#JU;XNH7*fOvc8~T*oyZw2gloxuO%fVD<{kC zZuc9Z@@aLot_nQF32})nhmQUMeINVB(7dsZw)eZnm>l-z9aY(oKv#bLU%Aq(tn>LV z6OC!J&vxN$47DvwR^zRi3_5&Y4z7W6EVcBX@_HRSFKQ)wASa%v1vtw=Rd#-Jz!2U$Rs@#iRDs}or0wdw0 zofp4aN&IDu&VrquOXeG5POP+u;K{+_!!l0p$!n3~rONberuZtnr~3H#yX1?_zbEU0 zqwM;{ltPL=715rjy8MCvUfDOg=kiZedFZ)&f%8}VWOefctU1Ayk0%cn;x)teC{4UQ z{r=tjxSaM1STTu$?6LzQ^xlizsKSqxh|^6{n3s9c`cWg$;lQ-6rkR27_`C*6mE2TTn!nT6PNg!rw_DHS_KwQS7@ku`5k8< zKqJE@q$O9DmYW$_J&iw){yP$TpRyqDELZwErCAY1=&FWYw20%>8h+m_EMc_ttH4)x zYd5?D$pv$3d)4#F$5C5C*IVjum?CE>L(zEuI%aZa9xWwp|B$V1eZRDn$sJ~vl<(*4 zToAP5q&1e%ra9RwI1S2Z$eU&sp$2-p2F|natr4AAxfnAH>WmI^HmP?bzVV}86#Oyl zz5i6mwYlerh=lmX(h|^yzlj^mUNrP`*+2OZadL4XAtK&;326Zv4)BW3hrKhA70%+~ z-3D#@m)t^AQ({3-*T~4D=`Mx&f46pb8OCQ>SU6gC_j@1!i}a70-PzeSB7ICBqp|)X zU&pZZEjj|ACORFCs%tnPlr^l!ynTB|ctb?b_z{e@yb15^4tuXvzigd_%Y9N&*TDF< ztNYt#-x#`WUD4;=d7);V2w7YimrX@^sexJDCuMy*(3`zS-gY_To}%l=W193gXROy6 z?d#4+dch14RnDD|y~KVxX&J%JNJvOyqM{Wgi<`Br^L}{R2EH3yNMNnN|KJ$GN&D>uX5Fw+Q^S z6qT3bowVebENKdq_l3Fn@Q_BIlTX^7_rFzl$yOynt(T=J(*)^a1Z6 z#>LJ|-BsCf0E`jG^xF@Pj=Ub9SneCmE(Aue%E!5Iz`|PFpMs7Y@JrJPj&Su91kg~X z)ilja%x08Sjf{*?|C==1PM>7B0X^^)HZ}zEwIeFKAm{#`fsuUQ+Uj#zT#n$8z2S?Q z6JiARPPpQWqk&|f6~o$R-8GLfrXMm^U0s)4Am#K&&8hwHeq^bzC3ilwsr1-9pnV8{~SI|UQ#?0 zdw?ORZu!cc(9I}c?62FH&0YOv>r;WjK^nZ&g*=L{W$+WiG-NW1Vqf#szEPN&hAG7# z#WA2zdRN-q;@{r(J-_()BBkE`8a-qh^&GwQ8FgK`eNNwH8 zoIDYGdk+I@ZrM(}hf-QrZfbneE;&9ow@~5JH%0$ca}#R|ziC8&jW3_AoLJwzn`ntR z*tq!B>RvEN+al8Q=045xPNP9W82$3FT~2S>@@y6kVHM z`qz~C{(nLt+QeZJjVrB*@#yk^wm9utR9GbF`$9$$5S|-ILPBQ|$0Jeqox$eGct~1U zM<)FE;x=noK|kvHHXeHo79#BIU3A>@LDy~Xy=BQ_%1K&HMq~=f8Z4C;TNu)dokchT zfs6gSU7_AS)za?Lr@90sW ze0=QPHSOK!j+T8kyOU0ZeE5$I8%BwRjR`3*z+EF=;H|VhQg+Li))mF%(TI{X)pE1% z&UtG8y2%)0VE6_<*Pw+8A++s#l5?`8#z$C{94aWv&&>MmWL>*D2vF}1R|)@u-I;Rr zGk3-Gm_;j1vu8^)+g%-&GFh4XZbNXHp=U%p>a(UfL{}Q4O%(2jK}KFj2nk48F^i{5@Z;43I``?fULrcQSwV|6tT!tNOeNs>m^m!837Sq*{>6!i`YhO9*=ewdA z?&!7nQ^=be0%0DXvNtpu93I4zA{m#8SDF0Gs3#v0ttF}V#`-YsvR#6*g#g8RmM6%=YF%8eZty55icV%Go)@}->sV%BU}`EQ^&x}t zQx?j=H10q$Q)WzroK|B+XL@=q->9hKrqjc;tUWZ0sldd-YN$Bb`;@tS<(YJ!if4Q* zj9>P~Zkq>Y|NH!Gm?od*H^+rLPBQgVGk#%WVhS0+2MTYHXDNW263>x@BEP?S2JBv! z=I2w;U=0rcd63gvSzPTMe2B;aGnjU6uyB&;DsiKQM^v=$Ax}0 zjH_j*=?NaF;2s}3+}&JfxY+C6UDVXn`zWcBH8m7Rut(}3O>aXsa>?kTk_q4AOO8@v z2*swy$q&;t$23quQ2_e=4P2}y}%ej2_0OOnNQ;!dAl z$yw(*EI9N@Q8x)Aj+ofksF=KIj-8&=Y{9*DmcnA|%&E#~A^?Sc*j@!w$nU|_f6>g# z3qLZcO!sp-f&FUZ#N3iM6A5$C-paQ1oPPr^@(tEPrxMb#-yT=m!_oRG zeGJ%kk^hQ|D-yx}l@b*2-ak;*4ckeYU9d=fk0Z<2z`{pTBgR2SYyRI$wn}^V zbblY&LAUI9gG$JMgic%l=F8vHp{K5#doS#|$O5TZn|@kgQycAyF`ji1FAXLFb1?VWxzZ7^-RV{7G-y&{`?}=4?6sN>}yHnh^U6P zJ<`8@&dbBXGO|Zgb6#FL2l8dFmIR@qIX*$%0?)*7jTuWt6;Y8b<6#)YTo#Vo-tS&K zmsX^0HvN+c+^%n+Ei-~SDotd*y`bpj73Jg>p(Feb~*-;6{hyH!Cu1{H0g<@46R z4TRQBhQ6`y!I99xU7%oR`S=m&!x}0L+HY?ioi4x04P2a^*El*vBcml_v2Cr~irdvs2BW|=G%alhR3RwABFV3edAdp5bN8`EpI#q)H zqvM?PbOJe~p`%>)%kTP{c-&udWTfz5d4SrQF9~_gF1fD0o`4 z()XDN>}SsUT5%yy_D!3Z?=jtHXMP?Oob3FcKda~{T~$;+JQs}_(9rZt)Fap}cd`mb ze~b8D`KZCf(A1V+=7S0M$Zpl#ypvbhY&G7-cV-r%P*>ML?CkLCSqJyxpP!wd$U*5G zP;yPHslme-zY4B=&}8a1^w?`9T#6)G=rNn{BNE~ka*kKmvhsNPB=&+dUwKhe$Dk++ zf6hmkkrzab7~++xepX)6b5c!>iY2Qc`M|jU5vjXX057SFN!80wp$QL<5Oa!IQsL8? zQ#G~VmG+US^+KhkhpD*d*eZDE{ysEH%D>4h!BzR`Yr(>JsZD$v+gn>&+9}C97UjdA zkONVFO64f=ZJTXlV~y!Gw?@h6=;|&mE!Nv@hiz7t8??6T z4X4^CTt93l2zTUkb=4=Cul*|u%6;{rkBW)ee9q@4@9s`4I2~NW_Wf1zprI=#DbhvV z_&wYV8gSSsNefHb^|eH+n_GV*20MFsHQ$(wM6Vpoo!)gBo|$c});84fEH3#zs~i$z zeU42|eqm)0VoHwqi4VHkEB_vm82)t^Dy|OZi*qpr)EfhZw2U-+m-*a^W}lsl`*Ai- zOk8ZoTE3ghkDynkCBM}54GzB4CZPF|p5A(9%gctjsdDP*3f63eu>+HbrE6#eoA@59 zr8ip}sptOK-H9yEBrHsdF-zC{8PS|dvaDl9SU4%nz_6+)=G4dG78U5LlFRn^^B~#oXOv0BIv9Q(-<&7*sv) zNV_mOHNe;I96Tgu9!*fAqX_t^9&h6|K6Q-Jo$Q?q#2^{v7G>Dimz3;>56HOuj7a~= z%)nu$>{%BzUms#yC1m6BcYiQl0Tl*HIWGCiA3s<$2Xr7-US2ivZd-cp91=EeMeQy_ z{+CqIUpidXp1!Aiqj?=EZTxGhN3Kf9AfK2aYehRa&xttnS6tu&9-dp1gQI6M8w(2? z%X2}wrih>WpI~B``_*bUelamA>W@VMVYjE3OixW%Vc$};R1`#1?4n2TkXjO?DWG73 zV`9Ez@0fP|b0AfA4BDnuP;|dlc&n}V?29HQdX519wH`s2xPkD)hmh`bpw7=YvKfyM z`y_rvMc2}nM|bOrNDkfYQzH*PpA>S5eL!%ZoEXPS{vj*(VthJ1`cT|+j_J(HgAQ*x zhuQ(xsq+I6|8t8D% zA9cRMz$nqUq>=c)q-myF%7}mcN^W9;tElDULD&)i3ax&b<~qoT(6Jn0Cn1?2TM-&XKq{_B?N>+9=%$D0&QOT{VIG^D=cYrEpdfK89j zOuUGH;EBhy|HU$W%z(4z?~Yt8(V2s@tLrTU8*Ym!pPBkFpx}GO#G59<7ISazA!yiO z@Lwwm0~$No$D%45G&l&vo(XMRuZ2m^HA62eBOm}BF$57F@wt>cFK<^N>z7}0!+($4 zi9nsaqT}_ykDIMjTr`%EN~V5E`jM2AoBgWfX2=Jc9yN9Kyg3jpEG9bodrZt>8iCr> zY?eJUZ1MfwfUxG{+$Qtr0qyANv&_oe+}iZ=pMjS{0V(uYA+$#m4ZF;S84kb65THi=z@tMjuDk`znJ23`2rv`=0GR?;bsj z!Sj`r(P%E!CPy@imF@g_y25{8R|RUoXb(w-j! zsJ2zhkIhUbHPpYRuY!DOdDOPHF1760=>2JB1m(VxDBrb;Zx&`&^w#F38?*0>lU8H;(n_E4 zRx1mE|1h?IvspO-!_v;GzvM+!Qc$YoDofkQB2B_+c`)8&st^-3+Bs7%pFS7c;){p4 zhyoQ4WqC!RkB<#MBMSm?bY*#6-&WPOPXwEo+4bX!PV+*gieKt+O~8g>K+gJl#({T( z%}(3#z9he9Le_QnAolL<>Htf_Zvct;+)%t<3I&T7w)a&W;N+9;J@cGfLZE>B=ha=> z&|puQz@61WPff0umG;zs$odw~Qq>v`g|bJPT#ro;#aL8Smu|@7_c^d`cq?(a+R|xW zf#jCNcT22C@&yG&kf5TZ;$YKp<#@2?uD=L%)B=ykBkkwha+^qk>gSu6sk!H$Ex0!h zv(U`%GkZj)f^s*0zutP^mvY;geWWD+fPoWjD<&*lCHAkzgO&ASaME)~)hGnoJdA&( z;`aKc!W5%+!>63l*W(qHheuo08Hs}t$v7n?zcpM-9h*rVQ zZ~YOC80ETlt|<(MUA#5Ph`m>GqT@Ogf3z7LJK z%C_HMIEowsKYq2={zh(FP7jDLIC$>^e|+^Y+!IpV%%`MeRmJ>{a&?QJGVPl-7sg}W zd>S=kBmo^c-QXGdS@W~nmbGi@_ImIVcH&xMV&xVNPWZ1Nm#B{2xG7DqhYl0NCTt*j z9O!QQSecE!6l(Z$f8X*wa#F%|J%Gt78yZS$Fqd!w0}S!;d7FR#o?yxn1Sjq_K$r{y zpI=bmNtrOLLBOgq+11sxV1Zl0J&O~Tp_nODg-meiYaC~&uqLYzFS6F45kFeSj;~csyy^C$fb0?Cr z5s{AP4&UWRc0R-FzV?IoP*kLxPIvg_BSpW#b-Q_d`n|5Nn5r%{dCWM)eaAws2ZV%_ zik6gWacQnHx8Sk=b@kJA8nJOR>eBpgyLbF9SB*hswSk$af&_xh-0%?fi|R?!{CsCd zd2wlv?I%3ocHn}HriNvzs-gn1CTJ+Eph!!}EU-VmqT1*h?xK8KGlPs z!Me=m2mthxtgCh#55KYQnzwg5bA-49Y-NTuAIK+O1-ORxzHAn4FFY8F%+0#`=oikgBLe-p|3xNdecSY z!0qE=nxBV))O2yl!peK#JQicS8H#v^e#5Ek$Kwqg^yj<%n)1Yg%=#nq+R}-`@w{O|Do&$C&?lzQMCv`QXYJRT39Crq=<&@eBvC7FQKLvx=^muaAvQ zOs0{J=rE3cCQqMIY=R#5rptO1CIs?UqK6kuiVGQoUJ32r@}%{^fj;(7&jt9Uh)EM`9WaVJkAruOFL}&{efDIM`L8PTTM#_!vW{$ z&&X3#Q-ZfoSf;-hRN*hdDTFb80`C40$fw{4=!@jvt5~~W(w26p?)RoEe_AtpgFZY% z7V)NN46BXq9WJ)^7G+1?#*?|i==8Ljv)tkMnS;+H@HuYhV0Wte4dyc5`W>v??6rc{ ze!&4{g!J?ufc|9H=5MGGY*^^c9zGfRH$x!CvlvJEjDVEio}6(@AZTQp zYhltHlN8|;*tK@>f$?+O3n$mmf1FN~Ho4 zoeaWxh(U3d2uZAl8!FH?zB?=lSzcr*+W3^C1O~pyC@2Se#x)~v;o*0*g(BG4*=rSb zt$lo+^o6sdjtB@Vk_QcnxUsebGf#9LqoRp;Ol|#ALPNa*yE-a2p7yqc1NX0EW2aty z|1F{@HVomOpE($qnR+cZ3vhDIPAmY5mb{FNjI=Zf6P@ewU{F}3oQhF$r$&4HB&)%z zunL%IMz!(?&tf4LZ5aBlU{|XPXP4!hUgET8DKeZ!CtV?oFD)gfd>c&xX4oVU8F3M{ z_@BB;KN1t@=oqkFPH$*$WUkH~HkXDUDafomOt+GQ(FmDwwswX5dlJF-g3_ZBg7u{2 zOh(~|&3hl;K&k}Sr2(RSRNR!*ya<)mYGSgv_wOhbIh8|pG?l_)mW8KQ`_tl7U$T_4 zl<23g!5QCE!^4x)B7@S)a(;&=B}q!EV8C`C?j8MD&2jpB)cL%`1zrz_4M3Ct%; z5|8&6UxU*51^3@#1S)B&=M?55`r`=j^XKN4xr}?fx;e63^&hwc?;&JlRB$(fj4f{8 zuNe{&EyJ+ti?paYwmLXw$(07L4`HgOvV&V@1=yx$Wy5F)NQlBDvFfSXZpk`+y+b=m z8p)BG+ot(gZl|6Z=~by=-s?yW2p4^lU(I)S;u7N2H9FiK1cwH?7|AH^x|!i&oW}q5 z&kGCjGIlXB&%e|TvB+JjQb&*B9S1~4vbChntAMtZoQ&d&)!`S*Q>^thvv0w#E*g!{iT zw$0bqKX{`|mD<9_2UyT9J{O_^7s?`KnU9v&DBo38Rhi!tp<;yvKllBT2T7ThFR{v) z79QTMt6O*R<@DEC-AP(R(n$_ka7K;_kNzc^}z^5I^7E>!d}zQ_yk1}*R}?`vWK zgiDvUiy`atbq6y_2?zva5GhG1MQ+|KZoBe=iipU^O$$PhTwi>>9&h(&e4b3*2YL9I zUQgs>veFu_udd?JnLNdid00RTIdzAX=4@y4A*I>t0UqJ(opgTGJg0IXL%n$@%-ySC zvePw+tVd!~qJglQ$A=Gxy~|HQ4LnWYhax1@3;Xnao>S*{&F|bSjr!VpU*h-K`6L#m zDSRK@SkN)wAs`_@ApgF&4^NzEDJt4)gX#Y`x#n2f%8CH^_dl&#(9%*Js(w>Zv^9Fn zl;5bTS_q+-xcp*W+)!V)c8%7$iHn}~0~yj;Gj1sFstzp3Qr`n&9PTS3J*<@#E!Z=) z3VB&jqv;r1YhL?hmj{dusBf_0U`)>qB^=`uG8^jZXphzOUD4p~Y_W?#vjPV98FJ*b zd1u$U0?+~(ixqkZ157^r%OIm@J=Rs+>6KKz2Jbb(B&(u6uXWgO{G+KXL-cyuvelWS ziuR9q^Ry6ALzI#Jh!)iDQ%+7rmYYpdS!(}pebLm~jI;`y?@czz`%NzS@Gf2!<*}28 zw`Ch&gXSnwoFZdEIqOk z8X6+3@`(bIJUHY#Aq#?|xf>%3%ejnh8gcKHKXH}7{@38h4<2)Uvx67^CQL#L!^DE0 zCdMWm9I^po0}Ty*SNpmXHJX}^`AqiQzfbqb;r`gv41sixw4^3P@@;iJ?=^mXsJCOe z&q&xB&iSYapkgouwmr&-PHzvj%j_KJIyrK2LJt!+Y6zVrQkUS-wxX52azANVB}(&b zvyf zz(wP8)JD2vEioSO;EbrzDU+g>a<4Skuv-mN%!;hmH(A0#k9Cy?4tDOE$=_1m_i7MG zkwj8@bs^Uli@v_U7kz7b{&l;?o;KC_kjW z-f7`;t_j?u9)rG{z zJIUxC(1H2Q0uQhKa;KBwD^rAYuI1_8H+ks|LyM*IRudVd0U5a!6!`S}x}9z*Bhs7@ z>(7j!A|}#At4y#Mm9b4$(oi9xB7=hb)3empuzPuo_Ys8(DqC(vBNkf964X^sr>jw| zt8Enp(Nt&+hi&sYtUShBuOni$JuBum>u@>4){^F9)Y0dIv?V1PEJ1>3=n&Wten+0| z0MQ&+SUBu$GqFE^uD_39ZJUvze~T{cO$d8|KwMnh{O+z&lhcq)#>Rxrp=nX!`^mam zH@JCtt8C_h{Hi+T+&^Yx+ULpT`QojW)h}qNXij#{zz8*Th2Z9SDK+G>*Gk~}phh4SfOkI*$j1LjmSNZz5h$KG!O zMPfu%H}W8mGynI-p7Y3r)Y&xDr8LyKD*BFqUDMv~hht8474qWVYS2Cku(HL!1LtDD zGg2El{)1311$@tMfYx4l2)3vO*NC~*a@xh|h)qQWFvomO?lYPk-XexbeuWXq8BZA9 z&8MIsf_u3v|Ct#LiaR?>cP{FG{3?uuPSYAkLgNIf>1G3^$&8%%bK?nJ8MtJOoUUEVj22lQeVXj9!pg-c4A-@y&hE2f9X4 zC|!T<(!$)b!i%x2lDrycV<%R6+UA|^qV|`U0KNvAkGn|@u`_Sg2x2MUVcuwISmGWV zpikCFGna9ntO_F0ML&+{x<5mM2B+P9C;>v;QCkKD+dTzF&)nnI3J;GRLj%$yruhL8 zmwf>oeH8_D^1`B2+*g)rpP~3Z{5L*&2nFb+zFF%>uiKNHtW&GDZs8YXujUp)o0vXH zDKN^u7PXKH`(ALL>b%Qx<55_h``K5-y~nU4uHvOVfA>6^`UoS7x^eYP>qduI$R{=_ zG2^~2uO{+EGdv}-Z+54+axFMKJlq<0Y`eoVHT~h@#`pDYuR(`PV3;)~0cyvIC+14D zp#ta}`rg5VnFy$!KrQ6`xI=KWzG)$g=yb|=D>O5k^g~_vWw6LP1@6D4n3$XLotQY0 z@L{h<(PlE#cO0ap#nm7%f%XM;#NFR~6I2Dq@BywB+{Fj2l%FwKTludH%gD5&#L%;D zPM`;|w6omaU2nOhPG0#btSv1WKQd~luL1lRn1?(;5zm4vrtxmB zHWICKjW>q$!S#4RCJ2UIG~^t-ysRuNo`d(pR+On{-v-e!FhKOA=D^^LgiJK(H$pfF+9jo>758W5?MCb8cMgqZwWdx-HI6XGf5Tm~b3iZyUo zH#fE$|Acdt?(Xi;A(N{M`|giaFi?&i`}=fu%I7I_b#<3X1&A&+ z&)bFlV8LG8egmR3czkfoS6c1PBV}%{uT2akz!-7wZZ|`3g-r@OO&Hc+B3;O8oU`-EC#?$-&tf(@kE7d{t9j zo`l-Y%jpvPW2?lRa{}AB)Bl|zZSHzs@d9erTKX4=z^d0 z+9=H`n(3(KfITwo>v(Z;bAro zZw>2CkhUy@d){cP%0?pUyfU%ewk|6!Y1P)To6O~NZ1}2UWALo|U4oS{8>VoTmXozv zsZNzry3*6;d5{)UWy1(pi%rz{k)U_CSg>(;>^M8Xa^so1drilOwUu#XDBc20&)pOJ{8(f(YF_KS4oz;a$Dw@7^WREBgDuckP7gpz5cmv= zI#iU^oo`$3Svd-RRg0>9-WY%9Z1bV12;rSI<4l@(VPk%?p)ufAA}vq ziYT*))sW9~I$SSMksWONWdLr8Yd7q088-(<&%kI>Y6jo4f6qG{jH=)K8?KKh$<6ls zpGz0`0=+SdE(b76xz}xiL`6kvUBE=F<49t#Ihehu-e*u!L@E6LHh-E zF@hU9UInu&%dhFF8246>7epq(=%C>g4sa9ytUJI!0U}@gFLPNREC!SjV<#a$PK@FA z+7M8o%zh)r3j6WR&?=ixU=u~h(ZRu?%J$zy>S@CGcB7}<%5H4YI;~D~@+fa*hFm~l zX^XCP);q+v;$LA#U#Q!>){hpZqVLWMt|>Yh!Qci!-l1O2fiXmwPaOeE##*X9+Ru-l zlZDOg1OGoKWyK4eE3nQJkr@9ryA7-2CMI%5cN%y+!N5kJvS&bgRF@HbE5;PNqkv<2 zuH%z@S5Nnny$!#r?;ToUQ44S`@lB2w6`e#TQVZH}2N}oh z90LaGo^}%jD%>aYYQxhB5tY$SbZctJjtKA<;&RZ!;c>4uw5@xzBXMC4;pGPJ1>n=m zxl>RzL55r3KI94x4hEROCxspJd>Oiu{EmTIFd-HZ0a-rO$Xob@0%Upma@#7~w>#N| zIbFeBfahx7PCT?#$q0sfX89dnX$Fm%*M-bN{vGY8;DhiH4+{|m@ocT&*F#-B4s0+k z_6{Z}ljGvnH`YZ+(dBJ3a)W$;;Z=W1Bjw5jfWOAi`a!B8FQj@AiJ4aWVM`yQq@v_; ze^=Py841_j;<>weI9vt_Yh^_uZ34dYx{A@Qs)7^!5kRS8VPOS_QCxb@&{|AFhJ~Ls zJ}FaKU;86PRb5koD>TyO&o*X%j_eJ9Q23{9jE^gAcAb$xzSOjxp=TDdeA#yFw2mPl z5M1>Qo`G-$y5liR$RA^wil2uir=*;Lj#?;CoOVD)S4$h{?Lp2736)}$u_r;74md6E z-N7LsC@u-XX5!Mc@t}E_p85y31_zrysuvY4zjts_QRbIrpe3%L;0GpGEt40ub9iKv z7aWu!dp0Yn%xFd;T~Q6%_YyrI zf_3vCVw3CKDUjD9U%42QEdibKDJ+cNlNucv1vd*%PK&0Phz4wU`g}#zWy*Hk_%{oW zMvn9lJa0OJ9D5&BRlJAL`_14v_ zQDC4ft!!fB67wt!|1RbqHo;~WXD^MzIZ7QvY*~EjmyoJ= zRbfh{m7X3o+%pjv7I~=NoA#rz_$k-;!=oy(b%)Ky7Betk;AD4n;qjkZNd&M+P3fV& zu#)$y;avhX7*K=t!C*y<{7i_Pp#wXlN^n*HtIcz$;fRwE#7zx`wn_wFtabSgdpSM| zjnB;qF>}9vq3<2`c-0y1hyXA`XfKtgwk0r21hhd5->a}U1C~qxKB@q;8n6AQYE2`H zmG=Y>F53}PQ**a>mM}Vw<_!YRn_Z(ChGyz@g^MR3YHm%}Hrro=3b3aO+TSXQr2oOF z<%gQ*NMG|#eT*wg?R!g$&^N&Ft-oKhLlg@!r1{j_;sbGIuU%qEiHu~S>$4IHB;b%J z6R0A7f@~{`xNTM-geLvz+uZnK%bzhkv{PNCjm)irj=YV6mYP$hK zd~%{D5px5tOXr>Z;AK)$J+5VCJ;E7~xAgr5zKU!|$H&f>&8|!&UoOqtgW{dWbOqDX z8aW*u%l}fu8i0%ruW?5X$RuA*kj05dQ)R@)+4+SA_V&YSYgb!%f;Hx@?5Bse&MSq{ z^Ms-r=gU}3OyJuMfq>3BN2z#@Dbu7dkP#jp0?E(MpXW51`C@59LP8>5G&(jutt52U zCUk2X8hq?%ykRC7d*k9Rr|?PIKP`Br@*g=lITN^maKqU8S1Ctb-R+kzqngHm7r%WU z$xZ?Fj_5|*zp`+_$XTjrs%EGi1>|Bt%oX)^aC8JnI1m7^j*krwp!nnXg7GW_0*sqn zYHLBVK!+FC0j@d_fL)5gJ)r6=`VhZ2G|X;sJT~@FJNmn|bv=a3U!f<04laG}>>Wh~ zSCZSrtZ!_bOib(K*pdkSH@up?Prxc_&x!jM8=JBx6rrkVu=eUpB0zpQuk0MZO&eX> zH*)uPtCfqX>GuP+kB2D*3lAmli|5QEz8=F!8@|XO-hVG@JA^UL9R;UcQXVMvz3Feb)cP+4%bU-ul|_V&T*bW4~?CA&Kjk z5(!LeY{YUu8Xg!O9QJ5a)i!IH?%>-ewp#tLfB3ulHy|eazpiG*z0iIn&1v1)+}bjg zJ`?-+(Q=hR*DnPVHY|;hm#i||rFTGCLDm>xu+P0zd_UaZK(brLIuAqBzL&2cCTLqg zrB1Td5Qp*)&_9yUb$*YG^j_>b**=WwAODA!k+94t$SIhadC$qu?a*-Y0_fVCqqsq0 zSqjhozXBd_!L93t%qepy?vhl6>+445<~XRM9eXTGIyGuNZ}O&vXQ75^MymnAW2|Q0 z0|Uc2;~5Sp0_U~0dn7`}^xS-baQ>ERG--A=dQ_qEQ1g68B|T*S@bI?jQ1j=l+h!=o z@RK+hH58HH#?FSChKdiM$-YoIH(V&xh6NNh?*!N9An<)C4Xki`y$wvRWZS?3iR-J0CV2;GJ=B4$>#g%TJ@r=KsOrlLJy|COo> zu3x8>ok^hqKb?>e7$845;CA!@609ivva$Ca%>D92~5%v6^j$VnX=z!j!vm2VrN4I`mNGI92f+^r!vGcrh%gWcz+R)iN6UsIz`?!kl@uziD4SfeaJal71Z?=} zRtpo0EWJO8iQgIcX{q=QZJkXvS?J_mvkgJhkA=t~C@9FmQKu76PD{JvGWjAl@>rul zJ;s-{*r9m4ylver*3A|#CNGmp@S&uzEhaSLS4|#pp-790I{LG~W^+UUheix+MbABb zq`V*J?|A>k{68+h-TZv#2@h{!-#M9kUK_j#Fu6}onO>dX z0lx(=XZ_rGeo@hXLat3=p+8N{w=V9t6ovUJs>&=ZEOslcc&M+gb>Tn@MBx;)@j4L& z$Yp>^qcE>kUUJ&ZtVP2QtmlA*`Sg?&2eII+Z|N-(@@fuA3^tqaiw<~pDk@Fs?kxIlbu~$T#8bl&p&OwTKI#3g=D zO)Y4wQUZg-ij%|J7e5-Thld%tH~Mx{!C{ULj*2bm8H8iUo5zV+X>ww6OVjhr{QN#Q zPZGY}&q)0i4@2z#!`@p(RoQ)Spok!dq_i{&NOz}nBPAVz(%p?nNq2Wh_oh?n?%Z@s zch_0^`~J7*?%bVsFdTr3cg0?7t{KmKrWQeQ<=9vbM-P3eC1APTw+Od8JJoISpk7(c znR3JMdIfwdzZtwi*v_dU;+g9yY3Ij=a;u1aD{LR4b$3T3CiW*)U&kp{{EJQct|-r z$qZv!g5syY_i5;wN=rF4otK2PFd;rB?wdbq%cH&BjZywd4Viz^5_@YI9hZUsTO@0= z`W#taAnUCW0?;vlh)FKxA{KDAI|XUwCU4#l1O`ZyrSckn$*lXfmfPxPX?x!}`zNuq zX0tK}XRg6DzURQzwVn|`tGGt3Yjpj7ekY;=X!9{k;p}-otHqWlP`CuvM;p{4hON>Z z9h)$mhm(Z~Tt9n>)KX42Gs!7Rva@#}5*G#Im@$=g87fM% z%Cdel{(9m#8=_>es#LX1>hJHqytU-O=kEGy9GF2I%HWo^o zpX1`HDQh+T{CU&939JLXu<+2?;agNa(?(tu9$mo!vfroS{3&&)+h3G6J+* zyR%me4XJ=Y>4SC3M@7Zx=*US<4v^B+^Sdi8Q3yoE==iu{ePpHO1_t|g_IG!84$RH1 ztxYXc($kl6ij*`Gd5vp0waf=zsg(`Jv~5p+THip zqXEne;($tF@8?-r!f>Eq$lTAum~<>_5TCj!IXmwCF~a|JY&_Pypp84sRcWx0oO7>XOjrlkF*au%w4>o z%0Nd&9R^UIzoF;)Fp&QWw}|ux<;AVSh>@M$X+c`Y#E*i($<70P<=VE;HkwOM>=>JP z>8_@1$HU=Hi)mE`(c=VjT$f42*@pUX@v25{1_tC?8o3d5xY*biR_u;1 z#KmdMKz_{&C#TD~pht7R5xJ3`-@mgkqCiUJv|FiIbkYeA3*UZZgMW>GLsVsu?*!p* zp94$F`(|zG9efZDS=7;))364_f<}TIysm35O2XeunuR|~zK4Nf$XB?yxV*hy>YyV1 zbFd@j8RfCLc7t2aVzes+k~P#!3wy#foBIdT=O%??E;uF@_Ju@c7eXW0n3!Pvg%zMg z8Oh0R=!D-ZADODwvY(;B8eL_i5Amp^w(Z)RhW!#ULhNn)S#iDi%)WSc&4Y_@dU}b0 zp-ov{IvNCD01CK~f0HFKG4aQb;EUr1;5#YIs!fUVNe@U4_DN3%+PpW0ViWBKh%#qJ zj{eCf`+jde@8Es{+(RC3FdWZ&fBQ;AB)!2;x2=A1mDO_Ry~D{WN$3OqHJ!yp>ngj; zo%{Uyg0P3e>&|y#+;jQA(O_V>T(`7AsgPwN>%Xyu^rhU%YDhwvQ69y}qz~{$Q!`FP zsFRF%rg14=Wa3zlY_+ zOLJHec+H)x9zj9}FyMX~f0GB1dri{!G{b#E?viR}MOSGAxFd&3Gkn`yHPJ5xJ?~9y zdt(z5H%@Ez0Hi0;}yx_hR4dAylv$$@+ zfqes*ZY31jL2gry_w?9AhUev1GwJSP2RuRsink#GYkxK@>?aLqNAl=Bv<3$HudnL> zE$C306pW9M)4?Zxt0R4j%x%ZL;mPyK8OE9nL9ddB`>RcC-wE6vEnfl$1_wc8Z=?giX`t zLkD+{rzzwB&q_eN0GFw=1{O(>u#BgGy1|2Ykj*9Z3zQ%bi`ecz= z%zw8J7LHNR_?NzohN;v!2ChV4$8^se=PQfNc_qzHzuV#zWJO&td)gvK0JD8^@TpYO zI>0I~TwJCmCl@{3UUcM-0F1Q9y$XTDvhyVaIyXK(3{2_4!4`sCWii*RtsNyLCCGFV z&-#dbehyT;tLG$u@&U8tfmI*mXhmxIfC7jM%XL~&p{ebi3ubd?0Ft}9w(`f^oEXCY z8SpM>S&A2!f-)tI&-4}L!L~$ps`&AKWNT<% zR8)293jLw3oAwQc;t7z}B=^N_&;ADMnZ#WrBg>bcn^IsSA)T&E(8u$Stc;=q_&G7r z^SkwFj(7=xb*!G81itlOYpJR8SNGOStpukltpU)(8V-w$G7e)a>Q3{jv}nt>Ih2i}Yhmb09tuUrc&!PAijbl!u3Boj zxOV#09VpJr@g=PN2np`&6ny&K*3L9*`ohd>^t|5{7Xbed->u#K`ZYRwtn-ARUI_=c z5rGgM@lb>oR5I{qi+nir9FiE+ zf`zTZ(Pw^cEH5ynlCZJ;f?vi(PZ5XsUf%#VDDcX9`l5ZB9DO|@ZT}U7^Ud$Vf)3Vux!O7W42LprgoBalO zaa3evxEI%Yja&V7amxeSmo(6iDj!!4-5hOfnBMZ@dcrXaECE6-$3Z7-wHtc%(6w)c zTp@k8uJ&~CLbsrMM5&LFu5o{hnTtz3GAUeuC0qz#=;r1Kb-GmJpW&nuZof(xpe+J8 zE0Bc-s+fhLTyR!Zc-(4-xXK6#J-!%!z3yCOZfAE^VQVEF9%5I;(Pn$}d!+00y|rtB zi5aBo>5fc*gJ;*kn4N$f zT85G~=mvzpfA!8n$D>ovn{(?EePdX;*er}-h>^RyhR(=OxElrLm!JQW!tXf9Y|8_n zM#NT!a;X?&l}0$9B47`nv`3B`^Xt-UxAx^@L9AzMx)%H!C&mqc$uKbJL#nJOXZy?f zS9Bb$Af22s4V(nTmxx;yybvdC$18&``n`ROz5RUzgl}$-PgseG4~bQ=b*;);ACJbP z=YxU}?{4ovlIY8qh*6lB9dC1J_1KQb)=zBV-o6!)F*g@hk{)Y{mLuH9h#(n8{#?+T)i35177}29c}^0VRLJIR7Q^rwjrvbBP zwxPb6#4nRS)v;@fUW;Y<%l_0@S1p;nkhu8t6icuY0dCz`>%rF|@tCal350F+iHrXA*vZz|YlC*zJ&0%4V zIjG7Te)^|{Ia*jWH&+#vwsbruV#7S+U}8;(jng88Y_Be1UB0(zJ*J{-uS>de+|u&2 zq_-eo0b~QYz%2|1cMWpL-ewz?>+wVgXGJUPEqNbT0IH0S`g>PL&q0vmBuW9GlkxCC%MPuGhWH;_>x>ZEfV=7K^OolJY=BMz-vbkC zZcg3SCKIHsw6U{wc2lJb9+*^-q?E%V_GU;sy6#L)#(wJ+tjR@0e0jtl-s_&C82Nw` zB&s=^mYbFHbomqKMIb8^iw>8md3KHa7Z(!?huHA+-_Vm#kTSdv6{G_GFH>qpLWPXq z;1jVwtF;D6ILD(OhwiQ@y2OCm2@fcTe(mco&Xg+<3-ssn?Dlh`y*7T&ugVOxM?6rs+P~rF&7uhD;OvFzDp8*duA|*97El@*W<6?h! z0%(3b0^(!<_8XcfgnMlZ{S8opfZ)8`1}`)zsPDE@N=$VK#HoN&Mf^p;*>E@jtX7ym zrGh{-B}iMhO|HA(aB6TLfK)ddn3&WzZi#%h?UUNJ2UH@29PBqrYPk2;JM;V6FfdLu z{W%CDhq%?q?HOY8JUkExWcO(5v~?8;<`+nzEZuMAU}JxZTmoojkP=0Yav>eB#r?k^ zetuq_@bd@4)Df~MOm~z}#>P~6xgXuRD5SHSXyKlE)`eUqN*O(cCinR~0&uWVpJvHQ zkF7D7(&?Yx<@B@;e|Q44DKC6GjNJ%E7N9K2yCv`#pA~-m_#q)7o}7}RUXk|poE3x+ zfVm9=Q*bZ_&eplq9WCyNvZ5lS3bKcf7abL)prBAbO^gK`O>Z%kjjW#C&a~fqD8GGv zau99s+P<2fh=3#~H&;8((fbun4wv^a)wnbarnOMKgu{Y8@XV87NoYtZ0yRN(i0cG0o?1ELEy ze6G2(xA*bAhX;%;?i@ew-uA;O+HBh54byNEWH~L#-lBxot3J)8axJhuo4o7DjnEXb z{fkUhHLktAee%k5@(80yT1ReZEQ^+`bG{=CoyE5QT;mLf!(ukGFlsE*=Q-Qt)V0S4 zoitx1Rn@7PiIy0b!nK(_PHPlAo)YCdC!(U1%j$x9^|PLwEy(~;!77XS8Y+*Dy#4+C z_G|-&1oQEd9lx;}5?yo{vrmy3-j}nhL=s}eigJoo30NT;7lKc8$(+uQYi*B-OoyW< zF-qziDpeL!Z%$fV8F6R2UTrmSUyNEWTu%=XfLaZ-(}T%jL_1x)m;S?Kg&${%PEHLP#O0(q6U(*~tyu zybldFLB5c{4~7rsoYo2PapEPKOCwFU_-_VfWor+htoHpRYXfJ>(X@8bG6M#T6z{2N z4*9)AwTj2eJP}|6k=N{gu7!MtNpdim;n2F{Fp7`uu_+NzD}NV`gqqA^IQ`A1HJsng z%+!2BUKBrJAgs-fpMise^44Q^(p2Pmz!cLNG)4mL#v}dRx}qO3f>1k$_3~6}SW8$O z#Q~|~)@hviv$s8iNgQ7z720(98%@nk$Ns&jCC-JJ=W?wfaW+X=*!Mnga&(=~<=#)C zsV8a_qb)ag(%2+ZNQfa#P=^_Fci%LI0%8VJ89iJ)iAdHZCf3AZJzKy1k*Jkwac`O- zH6)qMYOpaZB~@n;k*vUm=KXsbH^AHM;yTqldy*poe5bZs9-&{9#x5p^5!4Dj(QxyB zm($YGXg1kS1o^s~A{4S3k4OZ{A}%(1l{U#R3M0~_A_XHMweT;xyEo1>&t@4?SuHd> zo-9!J<=$ev^i+CD$W2Lc@sLJ)(vFsZ3e#pVvvm>AQOiN^y~7|&Z*ER4-MTLvB zDDl;{L>SS`pQ}IlW9u-Ivrv>2&03SOJXIO!huy*M(s{Lqnu6^1XNqYN;b}~iqQw}S zSyr9yDKo|1x(ETGjysD_r&GlbcP=??&mv)nBkEXL436S^lS1OhhLsWq2Zu8FyhIV_ z@G7l_2Y0~IRAVxWdwF@SZTdMK@Q$OB>;AEYc^A>MUaHZ?Y%mc&C4>9-??8y0gx^aV z@#Qi)x8w9e_L>1S2=6VU;FHo?T=>EK7%KTNE4L!9fp};dlhvf;(}(Aq^>)hvpyx@%K=%Elvc2{AJDHq*Hp%23T z#vFGkuj4CJ!eAr>A=pRP8-v}%RXQA6n{&9UrH6Vu7WcUD!lXGp+E0#$yOB}ptxiKU zZNEj3k;6;^qn)k}m!#z6Pmb^Vdf^8B!J&yxZ*jqAGGGhoLL%aX=IfDg&mGtf%E?XB zX^of4Y*(L$Vy|L6`g(*R|MVP(-921r%1DjAorrq*PJ}M*3J9^&S4iLQ1AnX!JzH@v zlsfu;>wf#Ulo=z^O;#9hs#YeyiqFiuN%gito2OO z@BZLs^*oDAtUHQMZMpMDMr(Fw_o^t5`1`jm?)70PFFDvu48AUdRKV-Q2ZU-&shS^h zT6b5MpOjQ`iTu!QQ~Tx`oS!!E?LX1!k{YTR!~WQi*`iVfJihQJwP#gT<2&mj_Y&bJ zD3O~XQALgdhvR^RIf6)l&1D7VXvx!PFsV2zD=H<$ebWw>taENkZlUFC_cWnP8&dk?$0@Sm7lrDyrqDB5eSZ`BgiS?FQ6wkA0iAC~EQmujD_E_?4e z{ZuPoCS-b7A)_#Jd=cg9dINYvESDi8wL05^xC~PAQl;~b4~^!WRy$_q&Igl0PLWRq zDXiSi0H1Vrx!4EUwpwf;@Vu=r4RcIuriZadAttV}n#(TNvj;KF&g$SA8C;{>mSwLE z2NY%0C)76_W>^i5cgc=>%WdAvnIE1Hy+A=EvtDj?eHdBZ&K~A*I;gfA(hNKd2Oj&j z`fP9|_r*{yv^v@wn5bhu_hmp`Y;D;FO!f+CT+=P~J@mXz7dFw^Datt`8E5CaLk5*5 z2!%304AS7U+FdV*$w2H|r)NImPS9*I+|q7(Lj9E`yw8a96>|c>z4Al5iRQvnQ$!Ao zg6$<)`Eu*ST?Qwhsj=Q(srI_C>#@>N^=|0t>mSB{>WST}JCsdgTN=%jsw+!tYuT$YSLb0cU;Qeg2}l09yGnIm|m=kriBettJz z9tTgSBk?J>Li?V}G~U{TgoHNtCm$7TZceMkbWV4k1FR=i1hMd<;3^?fM0^2@%j&+i zN2}^i?a(Lt)##9I`7u;jQc!IoGCnzbrv7DIjW-P)m7fW9h;4Rhiq^@j|4M@>1+3t`&}}3pOntKhRVIfSI=&MxF!-b+Zgw^-+PBnKg>@wq1*QHV`M%NoY4D( z?2)M%i_B%X4h|^vc%x4?VxpsPX8A~IH{s2HeQB_5?M>>Kj`AB$MMGF2~`19sqah!tf+02wWlmcmeJO zjpa*Y*c`IjpXK!q-&WbU&8{7zRQoc?Vm|Mfd1@vX-M}||%}8~9jpRrznF3VSYD)=3 ze0HaWxXytaSJ!?T8lX~qg=qMEh;HS6?9KAkZMl>)?<!?Y>5&J%Qt}ou zvRs32`=EN}lII=udz!7St!bP1t^Un{nX-3f^Yv1bHIno|`&XgUY#r~IYEVO?ZoKlv zxOHg=l*{0EUE@-8Pd&9uFVJgJTfkB|fdE#_f|prK#8xv_OJ2A84RK%37>MT0%}s;O z1NCeGd{X&%ot&c8p^<#uS)5R=J71;SNVBTPlZ5R~t*Z?2A~0>dM-|$N zONdJobfqKxf_y-_q5RpkOAz|OZ*#QN-BWJJ)!ryBK0f%oJ#Q$v#pSVide70;k&}r9 zly;r1{iRmNYei;67L(9-gH+;8|X zlYzYwkt3oeCpUy|j~g2wA9OApW7IvOH|h1>22IWQt%wL_%BLu;zwxo71;}!hsyq1k z;l)k)Vm&oA_a+$2L3e37aSO^|=>zQd4o={+sHv$s($}{lvS)6EZl1kDqLfP;oA1!k z>32(oX7sI|xP&B>BcbAH2AaaG0CwX0gf0X8l#i`lkwLQ-m*I&`l-$&d1p+={-_)0&2YxFI9GW{-6KV(asVyP&-#Fg;&|a?xvvFykmu{Ti?F28*0y-qo70Gw>N-V zIrI4q%yr>?GhdwBg-O0XjU`c9jN&%1XB^g{HCIQ<%PpQw0v;$4BWLG_M0i*hMpn89 z#hNv>3G4k7E$(V+&+|ZXVUm`5qL%tK>YMxXzV*0)c&quUh7Z0kDD(2b*Q3veufF)Din?7^7 zZ(SmO8vw7KnDptch@(`qzt47=l45G=o2i|h9jJo_yfG*zXRhZPJJHz1Z|e?CW`!mu zJ39w+HEdQsmWqcVk_D-iqrF7M-)AK?m}0R;tFvab{yJl@7jTU4&A&$nwoWHf@Ww{_q_x9CXbp-%b=zDoRhMB7g zdi2&iUs>HvJ9S8eODnj0?-(pJqC~Z5YZtdlt0^#&+nxE13clfF{?TC5`n7o4LqJbM zLrP9ZBtAg-?gdcLu{Sq2?Z}suVB@N*Yi=HAF9284^S}u1Mptg9gVXInQzObD8v2Y| z0eVi(aw$VkTfa*4&-P!AhMVv2i)XBjJg#l-mON89(!?VWrR8KITCmzE$QOp@3U`ao z9USYd)Nwg%Q$NIXZ|4|l)tU8epT)(+PEJkbnsL=go9Q`vK1Ta=a zWCmO~z;t}eVHMo!aAR+jmlbsq#(PyF!{k znI@K3@Sc_tlryV1g1Ksa9wHMg@dEy}FdXdfwaw!3an{SD1)9otTX~cO9ct1Rj?pT2 zFe`yT3dgE?l^5H->l<9ShaT{j z?jPv2c;GY9y?@+A5qWC}&H6&&g1LDFKPaVkX3I|A{%EzM9Z<>9U#s(SXj6O7WtkU{c@ZA-enj@ zhj`fCSe<#P7IdlU>Ek`wvz4}CLf+W4i>^5c=K-k@Nkq>)a2CmIyim;NjC&2tqTB_a z4vDreUoXxsZ*Q_m_gwgNuLF87Qfh;FTBzycLQI^3NvFCD1->bWkCcjnza zW~jcXgU zZdS%Fv(@BsQ3Itu#j!FhYg%y=8eP) z(dfgW2148x-8fP_4+nP;u8vgQE(Z&hcXxLe3Ee;TQHGkir=C%T??avS$EwT%*ii8H zLx>Sp)DYpmTQ*&u6LVeX%ZTgzXu!+h@}72hnF}kvV#5_>u2wm>KcTpNC{W;Wa@;pz z%sx5g&f}C5xsTwNj9e{c_%O>#C7&7uttq!VV#%~VLWm%4yWOtAt9o{igCl!q_&7P5 zx?hrv+XSqNRKad~q~!udJ!O{P-!Q6cYPhuz+uP#h@K~iu(LJ6f*Co(4H?dQ_`O*p; zSWL#R4JHc#^@Qqy?d{cxc*OH#TCh$8S3Q%A8guN7PQY-Ae3_-i>1S>>ogmAk4@X2# z&kzVPIBAbEr24dLOU&m*&d7MQwGi^Dw#bjh4v`GlAJgT!#H|8VHPS@47^OPbc08OXb==oN+k2Krv%*@nO zTtdRg&`_y^@$i|kLYv2ph2_NePqmsN5zk3OGso8NP)>1Md#D+x8yvXD#@p}9Z@eE( zl1@)g;l1fe@X)I%$O-M&g(xoe%>V4{^!E*T4h^}V?t32&x}NUeY%^-qa(t?;Ql)5D zy+9#gd%t~BB%rIV?!dEqzj%iRt+rBi{w;*FVe3^Mbuln7u+FG+pPH1Ek)c2% z@)GoUc6v6|x@SAw(`i~z?6^DHx+@c3iliVdAH?HSVBcewPT_ZabN`vla5>+2LHY-) z$+&vxj!zO$cu&R7w&``vX4-FWLK12@rm-Woak2PZuGQtki;HtaI9IRy_+vy6`-X;; z%dCcv;%fmKQ=h6VCSaL3Vc-G{xypR5D7(FHV1U1msKC zZk?2rVh>tYyAO%&;f^Gt)W~&($53PQ(~&Jhr>+HbQc|zKRT(p@x4~`QNb7D|mE>r= z@GV*AWUgtNKdgR9A*)e(NXvV4M0sMtTI21@ilB7}q)K*Zuzkjwj-FmlO8)lr=B&=2 zu}6G+(@XW^M<#RKp&by>)D1^D=J(uK*`;raRaJR+EdkSE)35*}d0vac)bup|Y`L?B z20q!wWogRA?o`Z{B7#`}IPUpI3Mr{JWZ=9Ja@(5Sm9?x3=X>-Gb8xZ;Y1cJYSJMIO z=4_jB8AkvYGbSaaxFA#i>s<4$7QgpR(K6|iXJGjLa-}LZKk7YR!oXq+JIlp`JK*yu zf94CE+9`EM1yjl~MT!VNB*lioW(^HPE*4l?SSX3p32~O9c1%D5Xb!^g=H`2#Famd~ zfY<$xA*1ch&5JAig6wRdx$O|`YlR`97O9{9Srz%5^PR55V)|gV{Q7BGecNkDsu>UB z>3OX`qASv(W1(3qfbX4CnT1i)hJe=&9HSUH-Cw?b{c8NRRHr2xJ^E%x*-mL3n38S| z2Of7@a?odD|CZq22o~1!NA7(k_+3u@hK#_5zCrzyUzE+_c$q;DbwtJE&NJxql?X>6 z66o)S?)J8(Ee}T-ZF{t!yW4I;FHnbx`4^fGv}&52>9e3t2*>;~ug)sT-d0rs6SgY8 zTtfo!=A4?9n%i|d{eh^Fcd_0v#p%}*`l`}hk3vRTM39WMyhfXw>(6|U7FnuIQ0cZq z&dn{03*S~gK0YpjaLIk?P*q)(&f=Mu5-9QX?D^4B1FO@$sBrJ^hdU~T6tBzkonU{R zMSc$J`PKck+tPL^IVq>3>8Z(ug~>raHnz!135Bj*hM5}`b%yCSSmza{$=DrM;Q7{V zajA5kDFa}rfs=%3s~;Ah&E2`l1ioBXm^&X97P0IQa|4$FJ1yAf?#Ca?iNk?z1j(1X zbg)0!TRys6bkADvK^MLx=HdfE!2IF#V)faMp|3OXVTTMYKr^Bx2A16K&irNHZe}^Uea{nhvMy>SaDTz|04ZrHtV@peG95axxo%KN-4}qN-fhOTY^`pj}s68@93VeRmQP7NxPv3zSp( z7>TBLqBfNuij2axH?v%2sFt<~tDgxp?Locj+!?eyiX`ssk#hyT@82adzW%$!mHVrG*TbKe_eaEBf3 zor*5!Tp@Yh50P(J_$r{rz+0CXpU&*O#dgy5JZUD=$H-2)s5M=8aA#enl_1tbb2gXA z{VE|gR%!6l2S4(j>2A#rx*xXxLlMvhwr#pK&!h1E1`TSWLI<{_Z;S*^1w}l{w}!=7c;>*>!=u zZiLs^^d+UqZwN|5O88t#!s5P~^UfDSyt!~=I#rh1WTa(cqP<;2jL{?lr}j8P2~>yF z#zZ_kFA2G@h@AVz+nd8#VJEO`T0I&1a+7?y!M;NynQgoKl?BLFHJk5c6p1`0%`-a- zub*)`utFzyAOW{14z`ZU_sby)c_Yc|2U`pIdfqxOQE7BEFJr7vcPo0LRy)Fx$}83a zN7xw=NK?nht2{v{Xs!toFpWSOIyXUyhDUh((4vdIHJrM&F=i~3v2^PeO`y`4TU|2# zw&aMa-}7QuwI`ftV1S1497T_G<;2B;BW1`4QpBeU*%9{Be|GtBH{f!);r@-?CDHuSzz!ORR9stw8Bb1ldI`X)EG%dP+AHV>(c_c#9=D5K zYFgR}RC2n%#br}1EG%Sse;@+o6Xg59;joYdKY)9HfWx97GgFB7M@9d@04oa%GBUCW z0>%d?Cl0b)uZLR@3M2)YMG6WL17BtJG?bKp5@HPUQ2+J;zJrJN2i<_)zk@neAT!wL zV#d|gb@2A%`BB?bQDGr-aT{Q#VP;{;CK81s5%dChc8~Kv7`{$MtIS)!==p$LHk&M< zVtiDbg!Cz!i1CIawi*d4S#W-*FBb)4LYl}(*b9$_Q`hW(lg-C{h@!hrcw6b0hmEd5iq9Pc1%~jhcZsK`9M1xn`K?@ z4-HTHltj$1;^Fv$y-h*HhOPasr>7Z~cj0t|`+t{cnpnU%ljdlwKh+5x<6P^(CN?Ud ziqB9$bWxVR>6Y2M9yTU8HO&8p9?6wM`fIf>VsYe%)+t4?2!^3R7l!a*+$O*D0OHG+ zbJeDpDfH$E&dhn9NI^a8@CXP;0(SAG(}~4-RLi}gPUILBh%!>k$vFkmV6H9{H}}md zj+m6H(RQ5j)7BQ*=8N%8=%3?owkl`oSnuS)+*XwP=RG)<%S6<`Y%)tUM~eJ)Qo_@~ zL_dwEcmo(d{?wg#X4D>;MxI|?J=xP^{8SjSVAO&r5$^OqsbWecpr6jKin%B1=#1;*4OP>4ms*f8QaDE|MzArhR+SJOY;>IZZ8kCR8&NHDh)6DgMP#!@x|!rc|U#c3cHHFD@*ALu1l&qdLf7*Xs2EEmkWZK#S(;4#zY7*EDl_ z)^93??bhYOCnv}7(iMk3&mNt7Rtr$Ov- ze_bgNL98$#!zIUq(Vk88Paq5BIglr(;+lqshXc}%YRKe^v*1)T5&IiMo)nC> zhtrl@J!N=9OcGT#-ceCG?@iM;2%-FMjNjm9G1${$wIw8aX3F&@hRI>OvADgT9-I>x zbd+QWDjoMtjQ`ys*E*n~@1zF;LZIr{qh70ngTp=Ps4-_%b{hQOURSOR z#CDTB-rL&Qxt(sjJfIW)EEIKiyeb0zFv3E_>8%V@<8M0{FNyfv^qaP?V7|_W3t4HK z+qo^h4c6YS z-@+U>v69iy3qrJYbTD7PHZd*?I>+HwE7Lx?yd0h~=_^|fbpi>C;34&k%oA-83HNw< zd|=dVmgF5klQIQpWz6-1gR~r@o==>)|CU6 zGMjw+m(TN75!ePf_bQd@|2~#)8RnuJi$T)`-!h4KokoXG^~RMpEWkFj5n`%KVwGvY z_-_?SO9DifVoV}P1X#$)zdOZ0MFx{ov9Q=}%m!&=8plUd{$IP~ThZYdlaWO9H^jv9 zysyZ{KW>z$R~ig<_AMAO&~@EbL;ej=$kGIzTOpgD*Wt9?|COn6md*y9RxLn#!E0l3 z#%I4+eD|-}G3{hfD(9HS&Gz@5iTnw<_Mi2K4ffj%+KtJEYwgkH63l?j7d(?eZhm`G z)tvNN6zGWY^jhMyFVa{+ULYwQoyBTZ4WY8L3Mf4Z9u|=}o0cELwVUSM;Y76Phy`CV zZ73!Fy2sh54F-tIf?h=_$9w#13WHAawf%$?8pvt2e&RyFY4rs{;c4VA9L4H({)gT@ z+*WP@QSHO2`Tz7GTV--Wv}{k0GkKg4Yr}M@X=~vwT*Op0_dNt#1h8yy3o%ON+ zH#fH?a{)HDA3E?T0!dui@zB349&>6CEcLJT3T_;_7uL-m{&w%9r50_5q0ikWIG{C7 zNR8EEV-VTnruFcvex#j%e?s6Jl$yMmbz|8p=R1e>65UOZElpOln=oQXmnOt$sHAV* z)tUjZAIYTWUu&2#tk+8#r_3g&oxQ!1I3Ykaz{29j#$nLDp1DtIp4o=~=~~Sf)_DqQ zf!_VC5%9mA^{wJm>IVPxsMpjRY`lM4HJ&^Woy8Jb-G(!`)zU!vzVGLM=gx~EA~u7J zL}YtNx6y(6fbL1`%qz1fPcEf<(~fE+vBPq!U1>7&e*zZ9>wRFXSX2Zn&QJ!sISyzn z(iluAEUB)ZSX8uIaFVr<*P`ii#`f!h9W6}>&kekyKE^k0|*V?c&ihCR2km&^|kGZhyUAfKYGy}9~Q$o8M0 zhk1M(6RS&_LGEnz3K=;!?WdcP<_5a({rx=`;qb2yA`RW)bgDZ4z4_a{jC6KizNNb} z8a|7kQ#?uZ5?Bjxh30@z>|B%JOaVc0I`P5(&PH1eS}s@o7h*22YU|}zaD|8l2Sk>| z2L|@sK&S>{Fs~bqO#hSSo-I^jWADyJ3o(^+SJ8JEfk(BhtSo`Ct7w~V#ar&b^<8m} zl@7KtjhE;WcXxN67(TT}eh*p#zN~!twDDfg&Jn4+{}cPs!ogPN@g)3ilYMXi zIba1GcE%}qcr+m^_=0;V|0mBw>T*|fMIM281e&g?F$RtySlJ(dqzT+5zH4na8s-0u zGSbsp@^?l`L1a_|wamFEzhf-(={G|92@4=tkcgLsLU=8EegF z!kuu&m`XtR>YAF}Jw1DfOJ}SZ6aRO8>P9wuJ8XcoI}1xo&^!Lw-`;_t<>ArHKDq%4pI-nmG=_zw`F+v@K2e9l8X)3BWrZ>|F-qFsIr)ns;yhF zB)7LfI^WZD zEBv~5TRhDIFhdZqnF#U9r$wcK9h#k;{Tds4)5KaS9ZLbO-U{XK3akXe`E^FgE|!%t zYS(81dP`n;owae)k3F$*aXH!9FOczUI4IK-$~7);=nq86F|drAzx2^ggp-wwmt1Ya z>$SBSj>ndKz2WA@mwIY#R`_f2goGewJYA0cwU{Dr1Pb4uE$2I1j{<9^{eD4hBx78j z>^s_yX%|HoXPM4VpjP+w9c^51s+F;t_PnQ|X}!C?=^11M2Eg9ffHz20FXwZU0`>!o z!1nvtULE(izsAHhtR3S)%s=y?#&$#;t{*yDM8vj6;%T8-u|`lBo_?_6VS;OKYm0+Mz&aL zzR8t}F)_yQiH=qRiKYP20IVt=aJd~WHi7j7Mxak!U0p^-MtM0S_@90dIGdhkpr+0O z>wtj)GOz@fYAp#4NXboR$`-4>4m3LMiGwxOZE@S&-%pK>76y|Cq4JkxdTm~R*A84x z`3f0M_VzizzyNx0I)^3nV7?BRE*}8TVrl8Y^~pN;!RPz;_MQk5b~ZLJg6S-gKvZHr zm)mnwurw>Ht00|?N&goNuw>%m;(nHw>#20+vT}nQ8=y@7jf?lr@^k+?E-?QuZi!$E zR6Zd@V3e9I)H5GoWt%QGvO~I$CdS4<1TQO1m<=2-9v+@*wpBQ!*^ znhT*of*4AA%V0&zVsodbr~5^Mt6-`*Q6)@O)qV?PF#$;<;CbtDef*)S!A!|=3#6vY z9K3%oe27O%sWi1_Mwv!mra8W__65eClhOBbwFu9lB+@H%@7fDXJ(<7|g+RkhE1QWo zV6a*g%+IXWe*16jDB&L=Au>%)2f$`*=*h8u#e}o{eTx zMZwWLY;5O1OILY3^Bdta9!{N|Ro|r-%?ld^K)}u zU0ncXuEuBn`7@b6WJ`5%3owy-<(lbJo7%D$IQ7H_;81lW*0}!kCMk=LC84GH-1$s{ zlDU96n?f4x1ui#GglMU$$^5D<=1%i7z5;ua289YmtUnd-H>9R&pV%uYMF$7>18b^n z5r-0=9KO|Vvma>85}|k>>OTL7)j(417xcQno}Hbwemcs^$^xP3$lAigVk>(v0zst% zd2$r`vKOkXGEyNisYRdPOO>fjyf2|AEC^h_iF@r6rzQKK+?8efst9 z_wyMIxT9oh`a5S&FZ^xLU;uH;@%+Fiz(di1C&z*Y03L<&wJ%<^%FBF`&oAI{3fqBk z5eVGM5E!^{#`EP88 zdU|^I^$n`Oy@}kM=4o@C->~qw0uN^-r!Y`qtL{3Xm-&VFlkeyqTyr*B_vL+HW-RA9 z#=7pxN6-3yt8BM^F+VoT{*Y(7cgmfUtr_-pWS roCuLMVs(W`o&dK0!Ey@0a791u&80bA(#?ccfn+>g{an^LB{Ts5@r$9_ literal 0 HcmV?d00001 diff --git a/vignettes/WeatherRegimes_vignette.Rmd b/vignettes/WeatherRegimes_vignette.md similarity index 89% rename from vignettes/WeatherRegimes_vignette.Rmd rename to vignettes/WeatherRegimes_vignette.md index 6a4bc6f9..3124815f 100644 --- a/vignettes/WeatherRegimes_vignette.Rmd +++ b/vignettes/WeatherRegimes_vignette.md @@ -57,6 +57,23 @@ source("/esarchive/scratch/nperez/git/cstools/R/CST_Anomaly.R") # to be removed c(ano_exp, ano_obs) %<-% CST_Anomaly(exp = exp, obs = obs, filter_span = 1) ``` +Check against original ano computation: + +``` +clim <- Clim(var_exp = exp$data, var_obs = obs$data, memb = FALSE) +clim_smoothed_obs <- aperm(apply(clim$clim_obs, + c(1:length(dim(clim$clim_obs)))[-which(names(dim(clim$clim_obs)) == 'ftime')], + .Loess, loess_span = 1), c(2, 1, 3, 4)) +clim_smoothed_exp <- aperm(apply(clim$clim_exp, + c(1:length(dim(clim$clim_exp)))[-which(names(dim(clim$clim_exp)) == 'ftime')], + .Loess, loess_span = 1), c(2, 1, 3, 4)) +anom_obs <- Ano(obs$data, clim_smoothed_obs) +anom_exp <- Ano(exp$data, clim_smoothed_exp) + +all(anom_obs==ano_obs$data) +all(anom_exp == ano_exp$data) +``` + - The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span=1`. @@ -92,10 +109,10 @@ PlotLayout(PlotEquiMap, c(1, 2), lon = obs$lon, lat = obs$lat, filled.continents = FALSE, axelab = FALSE, draw_separators = TRUE, subsampleg = 1, brks = seq(-16, 16, by = 2), - bar_extra_labels = c(2, 0, 0, 0), fileout = 'observed_regimes_day2.png') + bar_extra_labels = c(2, 0, 0, 0), fileout = './Figures/observed_regimes.png') ``` - + ### 6- Weather regimes in the predictions @@ -130,6 +147,6 @@ PlotLayout(PlotEquiMap, c(1, 2),lon = exp$lon, lat = exp$lat, filled.continents = FALSE, axelab = FALSE, draw_separators = TRUE, subsampleg = 1, brks = seq(-16, 16, by = 2), - bar_extra_labels = c(2, 0, 0, 0), fileout = 'predicted_regimes.png') + bar_extra_labels = c(2, 0, 0, 0), fileout = './Figures/predicted_regimes.png') ``` -- GitLab From 03445c7c3da1fddbe43cf595045c378b44851eae Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 12 Jun 2020 11:33:05 +0200 Subject: [PATCH 127/184] fixing examples in CST_RegimesAssign --- R/CST_RegimesAssign.R | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 8d544b27..588ae66a 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -29,9 +29,9 @@ #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples -#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -#'res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) -#'res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) +#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +#'res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) +#'res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) #'@export #' @@ -179,8 +179,6 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = pvalue = InsertDim(array(NA, dim = c(dim(dataComp)[-postime])), postime, dim(ref_maps)['composite.cluster'])) } else { -print(dim(dataComp)) -print(dim(index)) if (memb) { dataComp <- MergeDims(dataComp, merge_dims = c('time', 'member'), rename_dim = 'time') index <- MergeDims(index, merge_dims = c('time', 'member'), rename_dim = 'time') -- GitLab From 2c2b4fc255ddf8bca71737de8158cb53ec4e3caf Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 12 Jun 2020 11:58:25 +0200 Subject: [PATCH 128/184] automatic documentation generated with devtools --- NAMESPACE | 2 +- man/CST_RegimesAssign.Rd | 11 +++++++---- man/RegimesAssign.Rd | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index ede589e8..1e0bbd61 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -22,8 +22,8 @@ export(CST_RainFARM) export(CST_RegimesAssign) export(CST_SaveExp) export(CST_SplitDim) -export(Calibration) export(CST_WeatherRegimes) +export(Calibration) export(EnsClustering) export(MergeDims) export(MultiEOF) diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 2f47b2f6..caa19315 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -10,17 +10,20 @@ CST_RegimesAssign( ref_maps, method = "distance", composite = FALSE, + memb = FALSE, ncores = NULL ) } \arguments{ \item{data}{a 's2dv_cube' object} -\item{ref_maps}{Array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} +\item{ref_maps}{a 's2dv_cube' object output of CST_WeatherRegimes which element $data is an array with 3-dimensions (lon,lat, k) containing the maps k=1,..,n maps that will be used as a reference for the matching.} \item{method}{Whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} +\item{memb}{a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'.} + \item{ncores}{The number of multicore threads to use for parallel computation.} } \value{ @@ -37,9 +40,9 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ -regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4)$data -res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=FALSE) -res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = drop(regimes),composite=TRUE) +regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) +res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index dded79fd..1454a5c8 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -11,6 +11,7 @@ RegimesAssign( lat, method = "distance", composite = FALSE, + memb = FALSE, ncores = NULL ) } @@ -26,6 +27,8 @@ the maximum spatial correlation (method=’ACC’) between the maps.} \item{composite}{a logical indicating if the composite maps are computed or not.} +\item{memb}{a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'.} + \item{ncores}{The number of multicore threads to use for parallel computation.} } \value{ -- GitLab From 889605e83d4d184f4ac1c741f542d2b44373d191 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sat, 13 Jun 2020 18:21:18 +0200 Subject: [PATCH 129/184] add reference to MEDSCOPE M3.2 --- R/CST_RFTemp.R | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 9162442b..6e865031 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -5,7 +5,10 @@ #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by #' `CST_Load`) as input. -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: +#' @references Method described in ERA4CS MEDSCOPE milestone M3.2: +#' High-quality climate prediction data available to WP4 +#' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] +#' and in H2020 ECOPOTENTIAL Deliverable No. 8.1: #' High resolution (1-10 km) climate, land use and ocean change scenarios #' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] #' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -96,7 +99,10 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (a multidimensional array) as input -#' @references Method described in H2020 ECOPOTENTIAL Deliverable No. 8.1: +#' @references Method described in ERA4CS MEDSCOPE milestone M3.2: +#' High-quality climate prediction data available to WP4 +#' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] +#' and in H2020 ECOPOTENTIAL Deliverable No. 8.1: #' High resolution (1-10 km) climate, land use and ocean change scenarios #' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] #' @param data Temperature array to downscale. -- GitLab From 7dcbc516da6dceebd1cd00e7bc4f4f1bc2a03124 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sat, 13 Jun 2020 18:28:40 +0200 Subject: [PATCH 130/184] doc update --- R/CST_RFTemp.R | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 6e865031..d9cf041b 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -14,13 +14,14 @@ #' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing the temperature fields to downscale. #' The data object is expected to have an element named \code{$data} -#' with at least two -#' The number of longitudes and latitudes in the input data is expected to -#' be even and the same. If not -#' spatial dimensions named "lon" and "lat". +#' with at least two spatial dimensions named "lon" and "lat". +#' (these default names can be changed with the \code{lon_dim} and +#' \code{lat_dim} parameters) #' @param oro An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing fine scale orography (in meters). -#' @param xlim vector with longitude bounds for downscaling +#' The destination downscaling area must be contained in the orography field. +#' @param xlim vector with longitude bounds for downscaling; +#' the full input field is downscaled if `xlim` and `ylim` are not specified. #' @param ylim vector with latitude bounds for downscaling #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension @@ -113,7 +114,9 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param lon Vector or array of longitudes. #' @param lat Vector or array of latitudes. #' @param oro Array containing fine-scale orography (in m) -#' @param xlim vector with longitude bounds for downscaling +#' The destination downscaling area must be contained in the orography field. +#' @param xlim vector with longitude bounds for downscaling; +#' the full input field is downscaled if `xlim` and `ylim` are not specified. #' @param ylim vector with latitude bounds for downscaling #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension @@ -213,7 +216,8 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param lono vector of orography longitudes #' @param lato vector of orography latitudes #' @param oro matrix of topographical elevations (in meters) -#' @param xlim vector of longitude bounds +#' The destination downscaling area must be contained in the orography field. +#' @param xlim vector of longitude bounds; the full input field is downscaled if `xlim` and `ylim` are not specified. #' @param ylim vector of latitude bounds #' @param radius smoothing radius expressed in longitude units #' (default is half a large-scale pixel) -- GitLab From 81132b4a0f8a161e8462a177b1379c75d88a7e67 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sun, 14 Jun 2020 15:06:17 +0200 Subject: [PATCH 131/184] fix lon=0deg issue --- R/CST_RFTemp.R | 39 ++++++++++++++++++++++++++++++--------- 1 file changed, 30 insertions(+), 9 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index d9cf041b..066b2726 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -5,6 +5,7 @@ #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by #' `CST_Load`) as input. +#' The input and output grids must be regularly spaced. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 #' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] @@ -99,7 +100,8 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' correction (reduced version) #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a -#' temperature field (a multidimensional array) as input +#' temperature field (a multidimensional array) as input. +#' The input and output grids must be regularly spaced. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 #' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] @@ -265,6 +267,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, dim(t) <- c(tdim[1:2], time = prod(tdim[-(1:2)])) nt <- dim(t)[3] } + if (lon[2] <= lon[1]) { + stop("Longitudes must be monotone increasing.") + } # Regularize lon coords to monotone increasing lon[lon >= lon[1]] <- lon[lon >= lon[1]] - 360 if (lon[length(lon)] < 0) { lon <- lon + 360 } @@ -394,7 +399,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' Nearest neighbour interpolation #' #' @description The input field is interpolated onto the output -#' coordinate grid using nearest neighbours or bilinear interpolation +#' coordinate grid using nearest neighbours or bilinear interpolation. +#' The input and output grids must be regularly spaced and coordinates +#' must be monotone increasing. #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} #' @param z matrix with the input field to interpolate (assumed to #' include also a third time dimension) @@ -426,7 +433,11 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, if (method == "nearest") { jj <- ((latp - (lat[1] - dy / 2)) %/% dy + 1) ii <- ((lonp - (lon[1] - dx / 2)) %/% dx + 1) - + # If lon are global and periodic attempt to fix issues + if ((lon[1] - lon[length(lon)]) %% 360 == dx) { + ii[ii <= 0] <- ii[ii <= 0] + length(lon) + ii[ii > length(lon)] <- ii[ii > length(lon)] - length(lon) + } if ((ii[1] <= 0) | (ii[length(ii)] > length(lon)) | (jj[1] <= 0) | (jj[length(jj)] > length(lat))) { stop("Downscaling area not contained in input data") @@ -435,12 +446,22 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } else { jj <- ((latp - lat[1]) %/% dy + 1) ii <- ((lonp - lon[1]) %/% dx + 1) - + ii2 <- ii + 1 + jj2 <- jj + 1 + # If lon are global and periodic attempt to fix issues + if ((lon[1] - lon[length(lon)]) %% 360 == dx) { + ii[ii <= 0] <- ii[ii <= 0] + length(lon) + ii[ii > length(lon)] <- ii[ii > length(lon)] - length(lon) + ii2[ii2 <= 0] <- ii2[ii2 <= 0] + length(lon) + ii2[ii2 > length(lon)] <- ii2[ii2 > length(lon)] - length(lon) + } if ((ii[1] <= 0) | (ii[length(ii)] >= length(lon)) | - (jj[1] <= 0) | (jj[length(jj)] >= length(lat))) { + (jj[1] <= 0) | (jj[length(jj)] >= length(lat)) | + (ii2[1] <= 0) | (ii2[length(ii2)] >= length(lon)) | + (jj2[1] <= 0) | (jj2[length(jj2)] >= length(lat))) { stop("Downscaling area not contained in input data") } - xx <- (lonp - lon[ii]) / dx + xx <- ((lonp - lon[ii]) / dx) %% 360 yy <- (latp - lat[jj]) / dy xx <- xx[row(zo[, , 1])] yy <- yy[col(zo[, , 1])] @@ -449,9 +470,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, for (k in seq_len(nt)) { zo[, , k] <- z[ii, jj, k] * (1 - xx) * (1 - yy) + - z[ii + 1, jj, k] * xx * (1 - yy) + - z[ii, jj + 1, k] * (1 - xx) * yy + - z[ii + 1, jj + 1, k] * xx * yy + z[ii2, jj, k] * xx * (1 - yy) + + z[ii, jj2, k] * (1 - xx) * yy + + z[ii2, jj2, k] * xx * yy } } names(dim(zo)) <- names(dim(z)) -- GitLab From c65a6e8ca21c0b56828ee532c8b2f6474a542ee6 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Sun, 14 Jun 2020 16:21:04 +0200 Subject: [PATCH 132/184] correct domain limits calculation --- R/CST_RFTemp.R | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 066b2726..fa281df0 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -455,10 +455,10 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, ii2[ii2 <= 0] <- ii2[ii2 <= 0] + length(lon) ii2[ii2 > length(lon)] <- ii2[ii2 > length(lon)] - length(lon) } - if ((ii[1] <= 0) | (ii[length(ii)] >= length(lon)) | - (jj[1] <= 0) | (jj[length(jj)] >= length(lat)) | - (ii2[1] <= 0) | (ii2[length(ii2)] >= length(lon)) | - (jj2[1] <= 0) | (jj2[length(jj2)] >= length(lat))) { + if ((ii[1] <= 0) | (ii[length(ii)] > length(lon)) | + (jj[1] <= 0) | (jj[length(jj)] > length(lat)) | + (ii2[1] <= 0) | (ii2[length(ii2)] > length(lon)) | + (jj2[1] <= 0) | (jj2[length(jj2)] > length(lat))) { stop("Downscaling area not contained in input data") } xx <- ((lonp - lon[ii]) / dx) %% 360 -- GitLab From f096c4a3012a3cc1ee5f31fb6a9ee60c0349dda2 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Mon, 15 Jun 2020 20:00:12 +0200 Subject: [PATCH 133/184] fix example --- R/CST_RFTemp.R | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index fa281df0..f2b9112c 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -48,9 +48,9 @@ #' @import multiApply #' @examples #' # Generate simple synthetic data and downscale by factor 4 -#' t <- rnorm(6 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 -#' dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 6) -#' lon <- seq(4, 9, 1) +#' t <- rnorm(7 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 +#' dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 7) +#' lon <- seq(3, 9, 1) #' lat <- seq(42, 47, 1) #' exp <- list(data = t, lat = lat, lon = lon) #' attr(exp, 'class') <- 's2dv_cube' @@ -144,15 +144,15 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @import multiApply #' @examples #' # Generate simple synthetic data and downscale by factor 4 -#' t <- rnorm(6 * 6 * 4 * 3)*10 + 273.15 + 10 -#' dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 6) -#' lon <- seq(4, 9, 1) +#' t <- rnorm(7 * 6 * 4 * 3)*10 + 273.15 + 10 +#' dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 7) +#' lon <- seq(3, 9, 1) #' lat <- seq(42, 47, 1) #' o <- runif(29*29)*3000 #' dim(o) <- c(lat = 29, lon = 29) #' lono <- seq(3, 10, 0.25) #' lato <- seq(41, 48, 0.25) -#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4,8), ylim=c(43, 46), +#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4, 8), ylim=c(43, 46), #' lapse=6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, -- GitLab From a150dc17fcaa05f767224854204ae937f574b4ac Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 16 Jun 2020 20:13:00 +0200 Subject: [PATCH 134/184] PlotTriangles4Categories added to news --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index f108f5db..f81ad720 100644 --- a/NEWS.md +++ b/NEWS.md @@ -6,6 +6,7 @@ + EnsClustering has a new parameter 'time_dim' + CST_BiasCorrection has na.rm paramter + CST_Anomaly allows to smooth the climatology with filter.span parameter + + PlotTriangles4Categories new plotting function to convert any 3-d numerical array to a grid of coloured triangles. - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly -- GitLab From 4d5a7324bc84e237d5f9a03aba85e9f586f3a6f6 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Wed, 17 Jun 2020 13:08:44 +0200 Subject: [PATCH 135/184] allow irregular lat grids --- R/CST_RFTemp.R | 46 +++++++++++++++++++++++++++++++++------------- 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index f2b9112c..9a22f964 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -5,7 +5,9 @@ #' @description This function implements a simple lapse rate correction of a #' temperature field (an object of class 's2dv_cube' as provided by #' `CST_Load`) as input. -#' The input and output grids must be regularly spaced. +#' The input lon grid must be increasing (but can be modulo 360). +#' The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +#' The output grid can be irregularly spaced in lon and/or lat. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 #' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] @@ -101,7 +103,9 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @author Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} #' @description This function implements a simple lapse rate correction of a #' temperature field (a multidimensional array) as input. -#' The input and output grids must be regularly spaced. +#' The input lon grid must be increasing (but can be modulo 360). +#' The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +#' The output grid can be irregularly spaced in lon and/or lat. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 #' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] @@ -400,8 +404,9 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' #' @description The input field is interpolated onto the output #' coordinate grid using nearest neighbours or bilinear interpolation. -#' The input and output grids must be regularly spaced and coordinates -#' must be monotone increasing. +#' The input lon grid must be monotone increasing. +#' The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +#' The output grid can be irregularly spaced in lon and/or lat. #' @author Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} #' @param z matrix with the input field to interpolate (assumed to #' include also a third time dimension) @@ -431,7 +436,10 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, dx <- lon[2] - lon[1] if (method == "nearest") { - jj <- ((latp - (lat[1] - dy / 2)) %/% dy + 1) + jj <- 1:length(latp) + for (j in 1:length(latp)) { + jj[j] <- which.min(abs(latp[j]-lat)) + } ii <- ((lonp - (lon[1] - dx / 2)) %/% dx + 1) # If lon are global and periodic attempt to fix issues if ((lon[1] - lon[length(lon)]) %% 360 == dx) { @@ -444,10 +452,21 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, } zo[, , ] <- z[ii, jj, ] } else { - jj <- ((latp - lat[1]) %/% dy + 1) + jj <- 1:length(latp) + jj2 <- jj + for (j in 1:length(latp)) { + jmin <- which.min(abs(latp[j]-lat)) + if ( (((latp[j]-lat[jmin]) >= 0) & ( dy >= 0)) | + (((latp[j]-lat[jmin]) < 0) & ( dy <= 0))) { + jj[j] <- jmin + jj2[j] <- jmin + 1 + } else { + jj2[j] <- jmin + jj[j] <- jmin - 1 + } + } ii <- ((lonp - lon[1]) %/% dx + 1) ii2 <- ii + 1 - jj2 <- jj + 1 # If lon are global and periodic attempt to fix issues if ((lon[1] - lon[length(lon)]) %% 360 == dx) { ii[ii <= 0] <- ii[ii <= 0] + length(lon) @@ -462,17 +481,18 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, stop("Downscaling area not contained in input data") } xx <- ((lonp - lon[ii]) / dx) %% 360 - yy <- (latp - lat[jj]) / dy + yy <- (latp - lat[jj]) / (lat[jj2] - lat[jj]) xx <- xx[row(zo[, , 1])] yy <- yy[col(zo[, , 1])] dim(xx) <- c(nx, ny) dim(yy) <- c(nx, ny) - + w00 <- (1 - xx) * (1 - yy) + w10 <- xx * (1 - yy) + w01 <- (1 - xx) * yy + w11 <- xx * yy for (k in seq_len(nt)) { - zo[, , k] <- z[ii, jj, k] * (1 - xx) * (1 - yy) + - z[ii2, jj, k] * xx * (1 - yy) + - z[ii, jj2, k] * (1 - xx) * yy + - z[ii2, jj2, k] * xx * yy + zo[, , k] <- z[ii, jj, k] * w00 + z[ii2, jj, k] * w10 + + z[ii, jj2, k] * w01 + z[ii2, jj2, k] * w11 } } names(dim(zo)) <- names(dim(z)) -- GitLab From fd52843d151cb5b6e0359ef59a1de50d06ae6ffd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 17 Jun 2020 19:28:38 +0200 Subject: [PATCH 136/184] improvements suggested by LP --- R/CST_WeatherRegimes.R | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 05785ffe..82704f38 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -21,8 +21,6 @@ #'@param neofs number of modes to be kept (default = 30). #'@param varThreshold Value with the percentage of variance to be explained by the PCs. #' Only sufficient PCs to explain this much variance will be used in the clustering. -#'@param lon Vector of longitudes. -#'@param lat Vector of latitudes. #'@param method Different options to estimate the clusters. The most traditional approach is the k-means analysis (default=’kmeans’) #'but the function also support the different methods included in the hclust . These methods are: #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). @@ -32,9 +30,9 @@ #'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes -#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial), -#' \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial dependence.), +#' \code{cluster} (A matrix or vector with integers (from 1:k) indicating the cluster to which each time step is allocated.), +#' \code{persistence} (Percentage of days in a month/season before a cluster is replaced for a new one (only if method=’kmeans’ has been selected.)), #' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), #'@import s2dverification #'@import multiApply @@ -105,8 +103,8 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial # dependence of the data with the same structure as Composite.), -#' \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), -#' \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), +#' \code{cluster} (A matrix or vector with integers (from 1:k) indicating the cluster to which each time step is allocated.), +#' \code{persistence} (Percentage of days in a month/season before a cluster is replaced for a new one (only if method=’kmeans’ has been selected.)), #' \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), #'@import s2dverification #'@import multiApply @@ -157,6 +155,10 @@ WeatherRegime <- function(data, ncenters = NULL, ncores = ncores) if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { + output$cluster <- t(array(output$cluster,dim=c(nftimes,nsdates))) + names(dim(output$cluster)) <- c('sdate','ftime') + + # The frequency and the persistency are computed as they are useful # parameters in the cluster analysis extra_output <- Apply(data = output$cluster, -- GitLab From 62a42ff3e19f2a44921c7400cbca7a41bcad78b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 17 Jun 2020 19:33:39 +0200 Subject: [PATCH 137/184] update documentation --- DESCRIPTION | 3 +-- NAMESPACE | 2 -- man/Analogs.Rd | 25 +++++++-------------- man/BEI_PDFBest.Rd | 20 ++++++----------- man/BEI_Weights.Rd | 7 +++--- man/CST_Analogs.Rd | 20 ++++++----------- man/CST_Anomaly.Rd | 10 +++++---- man/CST_BEI_Weighting.Rd | 16 +++++--------- man/CST_BiasCorrection.Rd | 7 +++--- man/CST_Calibration.Rd | 19 ++++++---------- man/CST_CategoricalEnsCombination.Rd | 17 +++++--------- man/CST_EnsClustering.Rd | 17 +++++--------- man/CST_Load.Rd | 1 + man/CST_MergeDims.Rd | 9 +++----- man/CST_MultiEOF.Rd | 11 +++------- man/CST_MultiMetric.Rd | 9 ++++---- man/CST_MultivarRMSE.Rd | 7 +++--- man/CST_QuantileMapping.Rd | 20 ++++++----------- man/CST_RFSlope.Rd | 1 + man/CST_RFWeights.Rd | 7 +++--- man/CST_RainFARM.Rd | 24 ++++++-------------- man/CST_RegimesAssign.Rd | 16 +++++--------- man/CST_SaveExp.Rd | 7 +++--- man/CST_SplitDim.Rd | 1 + man/CST_WeatherRegimes.Rd | 31 +++++++++----------------- man/Calibration.Rd | 20 ++++++----------- man/EnsClustering.Rd | 19 +++++----------- man/MergeDims.Rd | 9 +++----- man/MultiEOF.Rd | 17 ++++---------- man/PlotCombinedMap.Rd | 33 ++++++++-------------------- man/PlotForecastPDF.Rd | 17 +++++--------- man/PlotMostLikelyQuantileMap.Rd | 18 +++++---------- man/RFSlope.Rd | 4 +++- man/RainFARM.Rd | 23 +++++-------------- man/RegimesAssign.Rd | 17 +++++--------- man/SplitDim.Rd | 1 + man/WeatherRegimes.Rd | 27 ++++++++--------------- man/areave_data.Rd | 1 + man/as.s2dv_cube.Rd | 7 +++--- man/lonlat_data.Rd | 1 + man/lonlat_prec.Rd | 1 + man/s2dv_cube.Rd | 19 +++++----------- 42 files changed, 193 insertions(+), 348 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 2174452f..19d0b720 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -70,5 +70,4 @@ VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 7.0.2 - +RoxygenNote: 5.0.0 diff --git a/NAMESPACE b/NAMESPACE index a7fed60c..c9e08fdc 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,10 +19,8 @@ export(CST_QuantileMapping) export(CST_RFSlope) export(CST_RFWeights) export(CST_RainFARM) -export(CST_RegimesAssign) export(CST_SaveExp) export(CST_SplitDim) -export(CST_WeatherRegimes) export(EnsClustering) export(MergeDims) export(MultiEOF) diff --git a/man/Analogs.Rd b/man/Analogs.Rd index 06107c07..ee8a737e 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,19 +4,9 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - criteria = "Large_dist", - lonVar = NULL, - latVar = NULL, - region = NULL, - nAnalogs = NULL, - return_list = FALSE -) +Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + criteria = "Large_dist", lonVar = NULL, latVar = NULL, region = NULL, + nAnalogs = NULL, return_list = FALSE) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field @@ -387,6 +377,11 @@ Local_scalecor <- Analogs(expL=expSLP, str(Local_scalecor) Local_scalecor$AnalogsInfo +} +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} + +Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -394,8 +389,4 @@ and M. Vrac, 2013 : Ensemble reconstruction of the atmospheric column from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. \email{pascal.yiou@lsce.ipsl.fr} } -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} -Nuria Perez-Zanon \email{nuria.perez@bsc.es} -} diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index 0ba24a84..f836ab72 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,16 +4,9 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest( - index_obs, - index_hind1, - index_hind2, - index_fcst1 = NULL, - index_fcst2 = NULL, - method_BC = "none", - time_dim_name = "time", - na.rm = FALSE -) +BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, + index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", + na.rm = FALSE) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database @@ -120,11 +113,12 @@ dim(res) # time statistic season # 1 2 2 } +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/BEI_Weights.Rd b/man/BEI_Weights.Rd index 867a4eb0..61db33af 100644 --- a/man/BEI_Weights.Rd +++ b/man/BEI_Weights.Rd @@ -43,12 +43,13 @@ dim(res) # sdate dataset member season # 10 3 5 1 +} +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} } \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index d7dd5e14..7c9a1e6f 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,15 +4,8 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs( - expL, - obsL, - time_obsL, - expVar = NULL, - obsVar = NULL, - region = NULL, - criteria = "Large_dist" -) +CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, + region = NULL, criteria = "Large_dist") } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the @@ -88,6 +81,11 @@ adapted version of the method of Yiou et al 2013. \examples{ res <- CST_Analogs(expL = lonlat_data$exp, obsL = lonlat_data$obs) +} +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} + +Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -99,8 +97,4 @@ from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. code{\link{CST_Load}}, \code{\link[s2dverification]{Load}} and \code{\link[s2dverification]{CDORemap}} } -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} -Nuria Perez-Zanon \email{nuria.perez@bsc.es} -} diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 07691ea7..e1c31f0c 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -4,7 +4,8 @@ \alias{CST_Anomaly} \title{Anomalies relative to a climatology along selected dimension with or without cross-validation} \usage{ -CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, dim_anom = 3) +CST_Anomaly(exp = NULL, obs = NULL, cross = FALSE, memb = TRUE, + dim_anom = 3) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -52,12 +53,13 @@ str(anom3) anom4 <- CST_Anomaly(exp = exp, obs = obs, cross = FALSE, memb = FALSE) str(anom4) -} -\seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } +\seealso{ +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} +} + diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index d6f65bb5..0e60a356 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,13 +4,8 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting( - var_exp, - aweights, - terciles = NULL, - type = "ensembleMean", - time_dim_name = "time" -) +CST_BEI_Weighting(var_exp, aweights, terciles = NULL, type = "ensembleMean", + time_dim_name = "time") } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable @@ -73,11 +68,12 @@ dim(res_CST$data) # time lat lon dataset # 2 3 2 2 } +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} + diff --git a/man/CST_BiasCorrection.Rd b/man/CST_BiasCorrection.Rd index a1b415fb..e8a82af0 100644 --- a/man/CST_BiasCorrection.Rd +++ b/man/CST_BiasCorrection.Rd @@ -35,9 +35,10 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_BiasCorrection(exp = exp, obs = obs) str(a) } -\references{ -Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) -} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} } +\references{ +Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) +} + diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 891e2e5f..ed880aab 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -4,15 +4,9 @@ \alias{CST_Calibration} \title{Forecast Calibration} \usage{ -CST_Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +CST_Calibration(exp, obs, cal.method = "mse_min", + eval.method = "leave-one-out", multi.model = F, na.fill = T, + ncores = 1) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}.} @@ -50,11 +44,12 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_Calibration(exp = exp, obs = obs, cal.method = "mse_min", eval.method = "in-sample") str(a) } -\seealso{ -\code{\link{CST_Load}} -} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} Bert Van Schaeybroeck, \email{bertvs@meteo.be} } +\seealso{ +\code{\link{CST_Load}} +} + diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index c23f8341..e551c3ec 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,14 +4,8 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination( - exp, - obs, - cat.method = "pool", - eval.method = "leave-one-out", - amt.cat = 3, - ... -) +CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", + eval.method = "leave-one-out", amt.cat = 3, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} @@ -89,6 +83,9 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_CategoricalEnsCombination(exp = exp, obs = obs, amt.cat = 3, cat.method = "mmw") } } +\author{ +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} \references{ Rajagopalan, B., Lall, U., & Zebiak, S. E. (2002). Categorical climate forecasts through regularization and optimal combination of multiple GCM ensembles. Monthly Weather Review, 130(7), 1792-1811. @@ -96,6 +93,4 @@ Robertson, A. W., Lall, U., Zebiak, S. E., & Goddard, L. (2004). Improved combin Van Schaeybroeck, B., & Vannitsem, S. (2019). Postprocessing of Long-Range Forecasts. In Statistical Postprocessing of Ensemble Forecasts (pp. 267-290). } -\author{ -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} + diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 154541d5..c13bf205 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -4,18 +4,10 @@ \alias{CST_EnsClustering} \title{Ensemble clustering} \usage{ -CST_EnsClustering( - exp, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = F -) +CST_EnsClustering(exp, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = F) } \arguments{ \item{exp}{An object of the class 's2dv_cube', containing the variables to be analysed. @@ -133,3 +125,4 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/CST_Load.Rd b/man/CST_Load.Rd index bf03ba42..1fee022c 100644 --- a/man/CST_Load.Rd +++ b/man/CST_Load.Rd @@ -47,3 +47,4 @@ obs <- CSTools::lonlat_data$obs \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} } + diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 0762e83f..449e011e 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,12 +4,8 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims( - data, - merge_dims = c("ftime", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +CST_MergeDims(data, merge_dims = c("ftime", "monthly"), rename_dim = NULL, + na.rm = FALSE) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -42,3 +38,4 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index 036a6470..fb584751 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,14 +4,8 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF( - datalist, - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, minvar = 0.6, + lon_lim = NULL, lat_lim = NULL) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. @@ -75,3 +69,4 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } + diff --git a/man/CST_MultiMetric.Rd b/man/CST_MultiMetric.Rd index 8e3ce593..079a5588 100644 --- a/man/CST_MultiMetric.Rd +++ b/man/CST_MultiMetric.Rd @@ -37,14 +37,15 @@ c(ano_exp, ano_obs) \%<-\% CST_Anomaly(exp = exp, obs = obs, cross = TRUE, memb a <- CST_MultiMetric(exp = ano_exp, obs = ano_obs) str(a) } +\author{ +Mishra Niti, \email{niti.mishra@bsc.es} + +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} \references{ Mishra, N., Prodhomme, C., & Guemas, V. (n.d.). Multi-Model Skill Assessment of Seasonal Temperature and Precipitation Forecasts over Europe, 29-31.\url{http://link.springer.com/10.1007/s00382-018-4404-z} } \seealso{ \code{\link[s2dverification]{Corr}}, \code{\link[s2dverification]{RMS}}, \code{\link[s2dverification]{RMSSS}} and \code{\link{CST_Load}} } -\author{ -Mishra Niti, \email{niti.mishra@bsc.es} -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} diff --git a/man/CST_MultivarRMSE.Rd b/man/CST_MultivarRMSE.Rd index 24af608c..685eaf77 100644 --- a/man/CST_MultivarRMSE.Rd +++ b/man/CST_MultivarRMSE.Rd @@ -56,9 +56,10 @@ weight <- c(1, 2) a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = weight) str(a) } -\seealso{ -\code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} -} \author{ Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} } +\seealso{ +\code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} +} + diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index ad8f4b6c..1c93843e 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,16 +4,9 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping( - exp, - obs, - exp_cor = NULL, - sample_dims = c("sdate", "ftime", "member"), - sample_length = NULL, - method = "QUANT", - ncores = NULL, - ... -) +CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", + "ftime", "member"), sample_length = NULL, method = "QUANT", + ncores = NULL, ...) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} @@ -84,9 +77,10 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', method = 'DIST') } } -\seealso{ -\code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} -} \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} +} + diff --git a/man/CST_RFSlope.Rd b/man/CST_RFSlope.Rd index 0c4e1671..d2b5aec0 100644 --- a/man/CST_RFSlope.Rd +++ b/man/CST_RFSlope.Rd @@ -50,3 +50,4 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/CST_RFWeights.Rd b/man/CST_RFWeights.Rd index ef5ebe4d..08a7b850 100644 --- a/man/CST_RFWeights.Rd +++ b/man/CST_RFWeights.Rd @@ -47,6 +47,9 @@ nf <- 8 ww <- CST_RFWeights("./worldclim.nc", nf, lon, lat, fsmooth = TRUE) } } +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} \references{ Terzago, S., Palazzi, E., & von Hardenberg, J. (2018). Stochastic downscaling of precipitation in complex orography: @@ -54,6 +57,4 @@ A simple method to reproduce a realistic fine-scale climatology. Natural Hazards and Earth System Sciences, 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 . } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} + diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 1c609e08..4a667f9a 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,20 +4,9 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM( - data, - nf, - weights = 1, - slope = 0, - kmin = 1, - nens = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - verbose = FALSE, - drop_realization_dim = FALSE -) +CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, + fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, + verbose = FALSE, drop_realization_dim = FALSE) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -106,12 +95,13 @@ dim(res$data) # dataset member realization sdate ftime lat lon # 1 2 3 3 4 64 64 +} +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } \references{ Terzago, S. et al. (2018). NHESS 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 ; D'Onofrio et al. (2014), J of Hydrometeorology 15, 830-843; Rebora et. al. (2006), JHM 7, 724. } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} + diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 2a26fd39..2606720d 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -5,13 +5,8 @@ \title{Function for matching a field of anomalies with a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function)} \usage{ -CST_RegimesAssign( - data, - ref_maps, - method = "distance", - composite = FALSE, - ncores = NULL -) +CST_RegimesAssign(data, ref_maps, method = "distance", composite = FALSE, + ncores = NULL) } \arguments{ \item{data}{a 's2dv_cube' object.} @@ -43,10 +38,11 @@ regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4 res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) } +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} + diff --git a/man/CST_SaveExp.Rd b/man/CST_SaveExp.Rd index 0e49c119..17537205 100644 --- a/man/CST_SaveExp.Rd +++ b/man/CST_SaveExp.Rd @@ -29,10 +29,11 @@ destination <- "./path/" CST_SaveExp(data = data, destination = destination) } -} -\seealso{ -\code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} +} + diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index ee93aedc..2019ea7b 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -43,3 +43,4 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd index c5975537..bd811b44 100644 --- a/man/CST_WeatherRegimes.Rd +++ b/man/CST_WeatherRegimes.Rd @@ -4,17 +4,9 @@ \alias{CST_WeatherRegimes} \title{Function for Calculating the Cluster analysis} \usage{ -CST_WeatherRegimes( - data, - ncenters = NULL, - EOFS = TRUE, - neofs = 30, - varThreshold = NULL, - method = "kmeans", - iter.max = 100, - nstart = 30, - ncores = NULL -) +CST_WeatherRegimes(data, ncenters = NULL, EOFS = TRUE, neofs = 30, + varThreshold = NULL, method = "kmeans", iter.max = 100, nstart = 30, + ncores = NULL) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -37,17 +29,13 @@ For more details about these methods see the hclust function documentation inclu \item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} -\item{lon}{Vector of longitudes.} - -\item{lat}{Vector of latitudes.} - \item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} } \value{ A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) - \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial), - \code{$cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), - \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), + \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial dependence.), + \code{cluster} (A matrix or vector with integers (from 1:k) indicating the cluster to which each time step is allocated.), + \code{persistence} (Percentage of days in a month/season before a cluster is replaced for a new one (only if method=’kmeans’ has been selected.)), \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), } \description{ @@ -61,6 +49,9 @@ included in the hclust (stats package). res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) } +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, @@ -69,6 +60,4 @@ Characterization of European wind speed variability using weather regimes. Clima Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} + diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 9f884671..4290abd7 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -4,15 +4,8 @@ \alias{Calibration} \title{Forecast Calibration} \usage{ -Calibration( - exp, - obs, - cal.method = "mse_min", - eval.method = "leave-one-out", - multi.model = F, - na.fill = T, - ncores = 1 -) +Calibration(exp, obs, cal.method = "mse_min", eval.method = "leave-one-out", + multi.model = F, na.fill = T, ncores = 1) } \arguments{ \item{exp}{an array containing the seasonal forecast experiment data.} @@ -37,6 +30,11 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} + +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} \references{ Doblas-Reyes F.J, Hagedorn R, Palmer T.N. The rationale behind the success of multi-model ensembles in seasonal forecasting-II calibration and combination. Tellus A. 2005;57:234-252. doi:10.1111/j.1600-0870.2005.00104.x @@ -47,8 +45,4 @@ Van Schaeybroeck, B., & Vannitsem, S. (2015). Ensemble post-processing using mem \seealso{ \code{\link{CST_Load}} } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 2fd8a3f1..27aca453 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -4,20 +4,10 @@ \alias{EnsClustering} \title{Ensemble clustering} \usage{ -EnsClustering( - data, - lat, - lon, - time_moment = "mean", - numclus = NULL, - lon_lim = NULL, - lat_lim = NULL, - variance_explained = 80, - numpcs = NULL, - time_percentile = 90, - cluster_dim = "member", - verbose = T -) +EnsClustering(data, lat, lon, time_moment = "mean", numclus = NULL, + lon_lim = NULL, lat_lim = NULL, variance_explained = 80, + numpcs = NULL, time_percentile = 90, cluster_dim = "member", + verbose = T) } \arguments{ \item{data}{A matrix of dimensions 'dataset member sdate ftime lat lon' containing the variables to be analysed.} @@ -77,3 +67,4 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index 7539ef6e..585049e8 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,12 +4,8 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims( - data, - merge_dims = c("time", "monthly"), - rename_dim = NULL, - na.rm = FALSE -) +MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, + na.rm = FALSE) } \arguments{ \item{data}{an n-dimensional array with named dimensions} @@ -32,3 +28,4 @@ new_data <- MergeDims(data, merge_dims = c('time', 'lat')) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index dd0fc7fe..1e822fc4 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,19 +4,9 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF( - data, - lon, - lat, - time, - lon_dim = "lon", - lat_dim = "lat", - neof_max = 40, - neof_composed = 5, - minvar = 0.6, - lon_lim = NULL, - lat_lim = NULL -) +MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", + neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, + lat_lim = NULL) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, @@ -56,3 +46,4 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } + diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 616b84f9..6857c64d 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,27 +4,11 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap( - maps, - lon, - lat, - map_select_fun, - display_range, - map_dim = "map", - brks = NULL, - cols = NULL, - col_unknown_map = "white", - mask = NULL, - col_mask = "grey", - bar_titles = NULL, - legend_scale = 1, - fileout = NULL, - width = 8, - height = 5, - size_units = "in", - res = 100, - ... -) +PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, + map_dim = "map", brks = NULL, cols = NULL, col_unknown_map = "white", + mask = NULL, col_mask = "grey", bar_titles = NULL, legend_scale = 1, + fileout = NULL, width = 8, height = 5, size_units = "in", res = 100, + ...) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} @@ -83,11 +67,12 @@ PlotCombinedMap(list(a, b, c), lons, lats, bar_titles = paste('\% of belonging to', c('a', 'b', 'c')), brks = 20, width = 10, height = 8) } -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} -} \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} Veronica Torralba, \email{veronica.torralba@bsc.es} } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} + diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index c04b43c1..d7b95b08 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,18 +4,10 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF( - fcst, - tercile.limits, - extreme.limits = NULL, - obs = NULL, - plotfile = NULL, - title = "Set a title", - var.name = "Varname (units)", - fcst.names = NULL, - add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro") -) +PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, obs = NULL, + plotfile = NULL, title = "Set a title", var.name = "Varname (units)", + fcst.names = NULL, add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro")) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} @@ -57,3 +49,4 @@ PlotForecastPDF(fcsts2, c(-0.66, 0.66), extreme.limits = c(-1.2, 1.2), \author{ Llorenç Lledó \email{llledo@bsc.es} } + diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 4c400b18..6c92850e 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,15 +4,8 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap( - probs, - lon, - lat, - cat_dim = "bin", - bar_titles = NULL, - col_unknown_cat = "white", - ... -) +PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", + bar_titles = NULL, col_unknown_cat = "white", ...) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} @@ -116,10 +109,11 @@ PlotMostLikelyQuantileMap(bins, lons, lats, mask = 1 - (w1 + w2 / max(c(w1, w2))), brks = 20, width = 10, height = 8) -} -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} } \author{ Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} } +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} +} + diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index db3f0e10..09a24ff5 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,7 +4,8 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", + lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. @@ -59,3 +60,4 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 0db84679..984dcd42 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,24 +4,10 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM( - data, - lon, - lat, - nf, - weights = 1, - nens = 1, - slope = 0, - kmin = 1, - fglob = FALSE, - fsmooth = TRUE, - nprocs = 1, - time_dim = NULL, - lon_dim = "lon", - lat_dim = "lat", - drop_realization_dim = FALSE, - verbose = FALSE -) +RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, kmin = 1, + fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, + lon_dim = "lon", lat_dim = "lat", drop_realization_dim = FALSE, + verbose = FALSE) } \arguments{ \item{data}{Precipitation array to downscale. @@ -131,3 +117,4 @@ dim(res$data) \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } + diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index 3c4360fa..0e3f4d2c 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -5,14 +5,8 @@ \title{Function for matching a field of anomalies with a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function).} \usage{ -RegimesAssign( - data, - ref_maps, - lat, - method = "distance", - composite = FALSE, - ncores = NULL -) +RegimesAssign(data, ref_maps, lat, method = "distance", composite = FALSE, + ncores = NULL) } \arguments{ \item{data}{an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -44,9 +38,10 @@ regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, E res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), lat=lonlat_data$exp$lat,composite=FALSE) } -\references{ -Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} -} \author{ Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} } +\references{ +Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} +} + diff --git a/man/SplitDim.Rd b/man/SplitDim.Rd index f07e4756..e36aa8a5 100644 --- a/man/SplitDim.Rd +++ b/man/SplitDim.Rd @@ -35,3 +35,4 @@ new_data <- SplitDim(data, indices = time, freq = 'year') \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } + diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd index 4b0863c1..d01ed918 100644 --- a/man/WeatherRegimes.Rd +++ b/man/WeatherRegimes.Rd @@ -4,19 +4,9 @@ \alias{WeatherRegime} \title{Function for Calculating the Cluster analysis} \usage{ -WeatherRegime( - data, - ncenters = NULL, - EOFS = TRUE, - neofs = 30, - varThreshold = NULL, - lon = NULL, - lat = NULL, - method = "kmeans", - iter.max = 100, - nstart = 30, - ncores = NULL -) +WeatherRegime(data, ncenters = NULL, EOFS = TRUE, neofs = 30, + varThreshold = NULL, lon = NULL, lat = NULL, method = "kmeans", + iter.max = 100, nstart = 30, ncores = NULL) } \arguments{ \item{data}{an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'.} @@ -46,8 +36,8 @@ For more details about these methods see the hclust function documentation inclu \value{ A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial - \code{cluster} (A time series of integers (from 1:k) indicating the cluster to which each point is allocated.), - \code{persistence} (The value of the regime whose length is given in cluster_lengths (only if method=’kmeans’ has been selected)), + \code{cluster} (A matrix or vector with integers (from 1:k) indicating the cluster to which each time step is allocated.), + \code{persistence} (Percentage of days in a month/season before a cluster is replaced for a new one (only if method=’kmeans’ has been selected.)), \code{frequency} (Percentage of days in a month/season belonging to each cluster (only if method=’kmeans’ has been selected).), } \description{ @@ -61,6 +51,9 @@ included in the hclust (stats package). \examples{ res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) } +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, @@ -69,6 +62,4 @@ Characterization of European wind speed variability using weather regimes. Clima Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} + diff --git a/man/areave_data.Rd b/man/areave_data.Rd index a772220a..cc79c85c 100644 --- a/man/areave_data.Rd +++ b/man/areave_data.Rd @@ -41,3 +41,4 @@ areave_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} + diff --git a/man/as.s2dv_cube.Rd b/man/as.s2dv_cube.Rd index c2b8f3a8..13a2a296 100644 --- a/man/as.s2dv_cube.Rd +++ b/man/as.s2dv_cube.Rd @@ -40,11 +40,12 @@ data <- as.s2dv_cube(data) class(data) } } -\seealso{ -\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} -} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Nicolau Manubens, \email{nicolau.manubens@bsc.es} } +\seealso{ +\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} +} + diff --git a/man/lonlat_data.Rd b/man/lonlat_data.Rd index 0c6ee30f..eca7abac 100644 --- a/man/lonlat_data.Rd +++ b/man/lonlat_data.Rd @@ -41,3 +41,4 @@ lonlat_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} + diff --git a/man/lonlat_prec.Rd b/man/lonlat_prec.Rd index 345e3cab..69cb94e8 100644 --- a/man/lonlat_prec.Rd +++ b/man/lonlat_prec.Rd @@ -29,3 +29,4 @@ lonlat_prec <- CST_Load('prlr', exp = list(infile), obs = NULL, Jost von Hardenberg \email{j.vonhardenberg@isac.cnr.it} } \keyword{data} + diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index b0ce8966..48af7bbb 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,16 +4,8 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube( - data, - lon = NULL, - lat = NULL, - Variable = NULL, - Datasets = NULL, - Dates = NULL, - when = NULL, - source_files = NULL -) +s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, + Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -83,9 +75,10 @@ exp8 <- s2dv_cube(data = exp_original, lon = seq(-10, 10, 5), lat = c(45, 50), end = paste0(rep("31", 10), rep("01", 10), 1990:1999))) class(exp8) } -\seealso{ -\code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} -} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } +\seealso{ +\code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} +} + -- GitLab From b4e2386f77b8a6f617ac740307f247f685c831e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Wed, 17 Jun 2020 19:41:11 +0200 Subject: [PATCH 138/184] RegimesAssign improvements suggested by LP --- R/CST_RegimesAssign.R | 8 ++++---- man/CST_RegimesAssign.Rd | 4 ++-- man/RegimesAssign.Rd | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 9886905e..0885f82d 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -17,13 +17,13 @@ #'@param ref_maps a 's2dv_cube' object as the output of CST_WeatherRegimes. #'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param composite a logical parameter indicating if the composite maps are computed or not (default=FALSE). #'@param ncores the number of multicore threads to use for parallel computation. #'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)) (only when composite = 'TRUE') and \code{$statistics} that includes #' \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test #' that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , +#' \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #'@import s2dverification #'@import multiApply @@ -86,13 +86,13 @@ CST_RegimesAssign <- function(data, ref_maps, #'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. #'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param composite a logical indicating if the composite maps are computed or not (default=FALSE). +#'@param composite a logical parameter indicating if the composite maps are computed or not (default=FALSE). #'@param ncores the number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)) (only if composite='TRUE'), #' \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test #' that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), -#' \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , +#' \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #' #'@import s2dverification diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 2606720d..56120942 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -16,7 +16,7 @@ CST_RegimesAssign(data, ref_maps, method = "distance", composite = FALSE, \item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} -\item{composite}{a logical indicating if the composite maps are computed or not (default=FALSE).} +\item{composite}{a logical parameter indicating if the composite maps are computed or not (default=FALSE).} \item{ncores}{the number of multicore threads to use for parallel computation.} } @@ -24,7 +24,7 @@ the maximum spatial correlation (method=’ACC’) between the maps.} A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) \code{$pvalue} (array with the same structure as \code{$data} containing the pvalue of the composites obtained through a t-test that accounts for the serial dependence of the data with the same structure as Composite.)(only when composite = 'TRUE'), - \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , + \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), } \description{ diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index 0e3f4d2c..dd9cd7a0 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -16,7 +16,7 @@ RegimesAssign(data, ref_maps, lat, method = "distance", composite = FALSE, \item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} -\item{composite}{a logical indicating if the composite maps are computed or not (default=FALSE).} +\item{composite}{a logical parameter indicating if the composite maps are computed or not (default=FALSE).} \item{ncores}{the number of multicore threads to use for parallel computation.} } @@ -24,7 +24,7 @@ the maximum spatial correlation (method=’ACC’) between the maps.} A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), - \code{$cluster} (array with the same dimensions that data except latitude and longitude indicating the ref_maps to which each point is allocated.) , + \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), } \description{ -- GitLab From 9384185359ad8b95842e8704606db2823e06eb2d Mon Sep 17 00:00:00 2001 From: Eroteida Sanchez Garcia Date: Thu, 18 Jun 2020 11:16:23 +0000 Subject: [PATCH 139/184] Fixing code of PlotPDFsOLE function and adding test-PlotPDFsOLE.R file --- R/PlotPDFsOLE.R | 90 +++++++++++----------- tests/testthat/test-PlotPDFsOLE.R | 121 ++++++++++++++++++++++++++++++ 2 files changed, 169 insertions(+), 42 deletions(-) create mode 100644 tests/testthat/test-PlotPDFsOLE.R diff --git a/R/PlotPDFsOLE.R b/R/PlotPDFsOLE.R index a647ff12..c7239c73 100644 --- a/R/PlotPDFsOLE.R +++ b/R/PlotPDFsOLE.R @@ -45,42 +45,43 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, width = 30, height = 15, units = "cm", dpi = 300) { - if (!is.numeric(dpi)) { - stop("Parameter 'dpi' must be numeric.") - } - if (length(dpi) > 1) { - warning("Parameter 'dpi' has length greater than 1 and ", - "only the first element will be used.") - dpi <- dpi[1] - } - if (!is.character(units)) { - stop("Parameter 'units' must be character") - } - if (length(units) > 1) { - warning("Parameter 'units' has length greater than 1 and ", - "only the first element will be used.") - units <- units[1] - } - if(!(units %in% c("in", "cm", "mm"))) { - stop("Parameter 'units' must be equal to 'in', 'cm' or 'mm'.") - } - if (!is.numeric(height)) { - stop("Parameter 'height' must be numeric.") - } - if (length(height) > 1) { - warning("Parameter 'height' has length greater than 1 and ", - "only the first element will be used.") - height <- height[1] - } - if (!is.numeric(width)) { - stop("Parameter 'width' must be numeric.") - } - if (length(width) > 1) { - warning("Parameter 'width' has length greater than 1 and ", - "only the first element will be used.") - width <- width[1] - } + if(!is.null(plotfile)){ + if (!is.numeric(dpi)) { + stop("Parameter 'dpi' must be numeric.") + } + if (length(dpi) > 1) { + warning("Parameter 'dpi' has length greater than 1 and ", + "only the first element will be used.") + dpi <- dpi[1] + } + if (!is.character(units)) { + stop("Parameter 'units' must be character") + } + if (length(units) > 1) { + warning("Parameter 'units' has length greater than 1 and ", + "only the first element will be used.") + units <- units[1] + } + if(!(units %in% c("in", "cm", "mm"))) { + stop("Parameter 'units' must be equal to 'in', 'cm' or 'mm'.") + } + if (!is.numeric(height)) { + stop("Parameter 'height' must be numeric.") + } + if (length(height) > 1) { + warning("Parameter 'height' has length greater than 1 and ", + "only the first element will be used.") + height <- height[1] + } + if (!is.numeric(width)) { + stop("Parameter 'width' must be numeric.") + } + if (length(width) > 1) { + warning("Parameter 'width' has length greater than 1 and ", + "only the first element will be used.") + width <- width[1] + } if (!is.character(plotfile)) { stop("Parameter 'plotfile' must be a character string ", "indicating the path and name of output png file.") @@ -112,18 +113,18 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, "should have dimmension names.") } if(!('statistic' %in% names(dim(pdf_1)))) { - stop("Parameter 'pdf_1' must have dimension 'statistic.") + stop("Parameter 'pdf_1' must have dimension 'statistic'.") } if(!('statistic' %in% names(dim(pdf_2)))) { - stop("Parameter 'pdf_2' must have dimension 'statistic.") + stop("Parameter 'pdf_2' must have dimension 'statistic'.") } if (length(dim(pdf_1)) != 1) { - stop("Parameter 'pdf_1' must have only dimension 'statistic.") + stop("Parameter 'pdf_1' must have only dimension 'statistic'.") } if (length(dim(pdf_2)) != 1) { - stop("Parameter 'pdf_2' must have only dimension 'statistic.") + stop("Parameter 'pdf_2' must have only dimension 'statistic'.") } - if ((dim(pdf_1)['statistic'] != 2) & (dim(pdf_2)['statistic'] != 2)) { + if ((dim(pdf_1)['statistic'] != 2) || (dim(pdf_2)['statistic'] != 2)) { stop("Length of dimension 'statistic'", "of parameter 'pdf_1' and 'pdf_2' must be equal to 2.") } @@ -133,6 +134,12 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, "indicating the name of the variable of parameter 'pdf_1'.") } } + if(!is.null(attr(pdf_2, "name"))){ + if(!is.character(attr(pdf_2, "name"))){ + stop("The 'name' attribute of parameter 'pdf_2' must be a character ", + "indicating the name of the variable of parameter 'pdf_2'.") + } + } if(is.null(attr(pdf_1, "name"))){ name1 <- "variable 1" } else { @@ -212,8 +219,7 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, # Save to plotfile if needed, and return plot #----------------------------------------------------------------------------- if (!is.null(plotfile)) { - ggsave(plotfile, g, width = width, height = height, - units = units, dpi = dpi) + ggsave(plotfile, g, width = width, height = height, units = units, dpi = dpi) } return(g) } diff --git a/tests/testthat/test-PlotPDFsOLE.R b/tests/testthat/test-PlotPDFsOLE.R new file mode 100644 index 00000000..bd1279d9 --- /dev/null +++ b/tests/testthat/test-PlotPDFsOLE.R @@ -0,0 +1,121 @@ +context("Generic tests") + +test_that("Sanity checks", { + pdf_1 <- c(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statistic = 2) + pdf_2 <- c(1,0.5) + attr(pdf_2, "name") <- "NAO2" + dim(pdf_2) <- c(statistic = 2) + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = "plot.png", + width = 30, height = 15, + units = "cm", dpi = '300') , + "Parameter 'dpi' must be numeric.") + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = "plot.png", + width = 30, height = 15, + units = 20, dpi = 300) , + "Parameter 'units' must be character") + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = "plot.png", + width = 30, height = 15, + units = "dm", dpi = 300) , + "Parameter 'units' must be equal to 'in', 'cm' or 'mm'.") + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = "plot.png", + width = 30, height = '15', + units = "cm", dpi = 300) , + "Parameter 'height' must be numeric.") + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = "plot.png", + width = list(30), height = 15, + units = "cm", dpi = 300) , + "Parameter 'width' must be numeric.") + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = 0, + width = 30, height = 15, + units = "cm", dpi = 300) , + paste0("Parameter 'plotfile' must be a character string ", + "indicating the path and name of output png file.")) + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = '3', plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + "Parameter 'nsigma' must be numeric.") + + pdf_1 <- list(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + "Parameter 'pdf_1' must be an array.") + + pdf_1 <- c('1.1','0.6') + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statistic = 2) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + "Parameter 'pdf_1' must be a numeric array.") + + pdf_1 <- c(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(2) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + paste0("Parameters 'pdf_1' and 'pdf_2' ", + "should have dimmension names.")) + + pdf_1 <- c(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statisti = 2) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + "Parameter 'pdf_1' must have dimension 'statistic'.") + + pdf_1 <- c(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statistic = 2, model = 1) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + "Parameter 'pdf_1' must have only dimension 'statistic'.") + + pdf_1 <- c(1.1, 0.6, 0.2) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statistic = 3) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + paste0("Length of dimension 'statistic'", + "of parameter 'pdf_1' and 'pdf_2' must be equal to 2.")) + + pdf_1 <- c(1.1, 0.6) + attr(pdf_1, "name") <- 12 + dim(pdf_1) <- c(statistic = 2) + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + paste0("The 'name' attribute of parameter 'pdf_1' must be a character ", + "indicating the name of the variable of parameter 'pdf_1'.")) + + pdf_1 <- c(1.1,0.6) + attr(pdf_1, "name") <- "NAO1" + dim(pdf_1) <- c(statistic = 2) + pdf_2 <- c(1,0.5) + attr(pdf_2, "name") <- 12 + dim(pdf_2) <- c(statistic = 2) + + expect_error(PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, + width = 30, height = 15, + units = "cm", dpi = 300) , + paste0("The 'name' attribute of parameter 'pdf_2' must be a character ", + "indicating the name of the variable of parameter 'pdf_2'.")) + + + + +}) -- GitLab From e8e8baa879620ef74473f3bf8002c0f4cfe33361 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Thu, 18 Jun 2020 15:00:37 +0200 Subject: [PATCH 140/184] update interp2d example --- R/CST_RFTemp.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 9a22f964..e111e313 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -423,7 +423,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' z=runif(7*6*2); dim(z)=c(7,6,2) #' lonp=seq(5,10,0.2) #' latp=seq(35,40,0.2) -#' zo <- .interp2d(lon, lat, z, lonp, latp, method="nearest") +#' zo <- .interp2d(z, lon, lat, lonp, latp, method="nearest") .interp2d <- function(z, lon, lat, lonp, latp, method="bilinear") { -- GitLab From 4c86acd4df17797f3c1426786852fa35e86c6c67 Mon Sep 17 00:00:00 2001 From: Jost von Hardenberg Date: Thu, 18 Jun 2020 17:07:48 +0200 Subject: [PATCH 141/184] removed exports from .internal functions --- R/CST_RFTemp.R | 2 -- 1 file changed, 2 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index e111e313..a974b65f 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -237,7 +237,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' that of the required output field #' @param verbose logical if to print diagnostic output #' @return A downscaled temperature matrix -#' @export #' @examples #' lon=5:20 #' lat=35:40 @@ -507,7 +506,6 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param z matrix with the input field to smoothen, with dimensions `c(ns, ns)` #' @param sdim the smoothing kernel radius in pixel #' @return The smoothened field. -#' @export #' @examples #' z <- rnorm(64 * 64) #' dim(z) <- c(64, 64) -- GitLab From 8f4489905ab3c9593d16631a8be687850a59c1e4 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 18 Jun 2020 17:30:24 +0200 Subject: [PATCH 142/184] documentation updated automatically with devtools in R3.4.2 --- DESCRIPTION | 2 +- NAMESPACE | 2 ++ man/Analogs.Rd | 25 ++++++++++++++------- man/BEI_PDFBest.Rd | 20 +++++++++++------ man/BEI_Weights.Rd | 7 +++--- man/CST_Analogs.Rd | 20 +++++++++++------ man/CST_Anomaly.Rd | 7 +++--- man/CST_BEI_Weighting.Rd | 16 +++++++++----- man/CST_BiasCorrection.Rd | 7 +++--- man/CST_Calibration.Rd | 7 +++--- man/CST_CategoricalEnsCombination.Rd | 17 +++++++++----- man/CST_EnsClustering.Rd | 1 - man/CST_Load.Rd | 1 - man/CST_MergeDims.Rd | 9 +++++--- man/CST_MultiEOF.Rd | 11 +++++++--- man/CST_MultiMetric.Rd | 9 ++++---- man/CST_MultivarRMSE.Rd | 7 +++--- man/CST_QuantileMapping.Rd | 20 +++++++++++------ man/CST_RFSlope.Rd | 1 - man/CST_RFWeights.Rd | 7 +++--- man/CST_RainFARM.Rd | 24 ++++++++++++++------ man/CST_RegimesAssign.Rd | 16 +++++++++----- man/CST_SaveExp.Rd | 7 +++--- man/CST_SplitDim.Rd | 1 - man/CST_WeatherRegimes.Rd | 21 ++++++++++++------ man/Calibration.Rd | 2 +- man/EnsClustering.Rd | 1 - man/MergeDims.Rd | 9 +++++--- man/MultiEOF.Rd | 17 ++++++++++---- man/PlotCombinedMap.Rd | 33 ++++++++++++++++++++-------- man/PlotForecastPDF.Rd | 17 +++++++++----- man/PlotMostLikelyQuantileMap.Rd | 18 ++++++++++----- man/RFSlope.Rd | 4 +--- man/RainFARM.Rd | 23 ++++++++++++++----- man/RegimesAssign.Rd | 17 +++++++++----- man/SplitDim.Rd | 1 - man/WeatherRegimes.Rd | 23 +++++++++++++------ man/areave_data.Rd | 1 - man/as.s2dv_cube.Rd | 7 +++--- man/lonlat_data.Rd | 1 - man/lonlat_prec.Rd | 1 - man/s2dv_cube.Rd | 19 +++++++++++----- 42 files changed, 290 insertions(+), 169 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dd1e75d0..0492186b 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -71,4 +71,4 @@ VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 LazyData: true -RoxygenNote: 5.0.0 +RoxygenNote: 7.0.2 diff --git a/NAMESPACE b/NAMESPACE index 085f2b0d..a27aaaa2 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -19,8 +19,10 @@ export(CST_QuantileMapping) export(CST_RFSlope) export(CST_RFWeights) export(CST_RainFARM) +export(CST_RegimesAssign) export(CST_SaveExp) export(CST_SplitDim) +export(CST_WeatherRegimes) export(Calibration) export(EnsClustering) export(MergeDims) diff --git a/man/Analogs.Rd b/man/Analogs.Rd index ee8a737e..06107c07 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,9 +4,19 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - criteria = "Large_dist", lonVar = NULL, latVar = NULL, region = NULL, - nAnalogs = NULL, return_list = FALSE) +Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + criteria = "Large_dist", + lonVar = NULL, + latVar = NULL, + region = NULL, + nAnalogs = NULL, + return_list = FALSE +) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field @@ -377,11 +387,6 @@ Local_scalecor <- Analogs(expL=expSLP, str(Local_scalecor) Local_scalecor$AnalogsInfo -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -389,4 +394,8 @@ and M. Vrac, 2013 : Ensemble reconstruction of the atmospheric column from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. \email{pascal.yiou@lsce.ipsl.fr} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index f836ab72..0ba24a84 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,9 +4,16 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, - index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", - na.rm = FALSE) +BEI_PDFBest( + index_obs, + index_hind1, + index_hind2, + index_fcst1 = NULL, + index_fcst2 = NULL, + method_BC = "none", + time_dim_name = "time", + na.rm = FALSE +) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database @@ -113,12 +120,11 @@ dim(res) # time statistic season # 1 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/BEI_Weights.Rd b/man/BEI_Weights.Rd index 61db33af..867a4eb0 100644 --- a/man/BEI_Weights.Rd +++ b/man/BEI_Weights.Rd @@ -43,13 +43,12 @@ dim(res) # sdate dataset member season # 10 3 5 1 -} -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} } \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index 7c9a1e6f..d7dd5e14 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,8 +4,15 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - region = NULL, criteria = "Large_dist") +CST_Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + region = NULL, + criteria = "Large_dist" +) } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the @@ -81,11 +88,6 @@ adapted version of the method of Yiou et al 2013. \examples{ res <- CST_Analogs(expL = lonlat_data$exp, obsL = lonlat_data$obs) -} -\author{ -M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} - -Nuria Perez-Zanon \email{nuria.perez@bsc.es} } \references{ Yiou, P., T. Salameh, P. Drobinski, L. Menut, R. Vautard, @@ -97,4 +99,8 @@ from surface pressure using analogues. Clim. Dyn., 41, 1419-1437. code{\link{CST_Load}}, \code{\link[s2dverification]{Load}} and \code{\link[s2dverification]{CDORemap}} } +\author{ +M. Carmen Alvarez-Castro, \email{carmen.alvarez-castro@cmcc.it} +Nuria Perez-Zanon \email{nuria.perez@bsc.es} +} diff --git a/man/CST_Anomaly.Rd b/man/CST_Anomaly.Rd index 256a94ac..11574168 100644 --- a/man/CST_Anomaly.Rd +++ b/man/CST_Anomaly.Rd @@ -65,13 +65,12 @@ anom5 <- CST_Anomaly(lonlat_data$exp) anom6 <- CST_Anomaly(obs = lonlat_data$obs) +} +\seealso{ +\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} } \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Pena Jesus, \email{jesus.pena@bsc.es} } -\seealso{ -\code{\link[s2dverification]{Ano_CrossValid}}, \code{\link[s2dverification]{Clim}} and \code{\link{CST_Load}} -} - diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index 0e60a356..d6f65bb5 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,8 +4,13 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting(var_exp, aweights, terciles = NULL, type = "ensembleMean", - time_dim_name = "time") +CST_BEI_Weighting( + var_exp, + aweights, + terciles = NULL, + type = "ensembleMean", + time_dim_name = "time" +) } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable @@ -68,12 +73,11 @@ dim(res_CST$data) # time lat lon dataset # 2 3 2 2 } -\author{ -Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} -} \references{ Regionally improved seasonal forecast of precipitation through Best estimation of winter NAO, Sanchez-Garcia, E. et al., Adv. Sci. Res., 16, 165174, 2019, https://doi.org/10.5194/asr-16-165-2019 } - +\author{ +Eroteida Sanchez-Garcia - AEMET, \email{esanchezg@aemet.es} +} diff --git a/man/CST_BiasCorrection.Rd b/man/CST_BiasCorrection.Rd index 3a8fa4b6..55c325a2 100644 --- a/man/CST_BiasCorrection.Rd +++ b/man/CST_BiasCorrection.Rd @@ -37,10 +37,9 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_BiasCorrection(exp = exp, obs = obs) str(a) } -\author{ -Verónica Torralba, \email{veronica.torralba@bsc.es} -} \references{ Torralba, V., F.J. Doblas-Reyes, D. MacLeod, I. Christel and M. Davis (2017). Seasonal climate prediction: a new source of information for the management of wind energy resources. Journal of Applied Meteorology and Climatology, 56, 1231-1247, doi:10.1175/JAMC-D-16-0204.1. (CLIM4ENERGY, EUPORIAS, NEWA, RESILIENCE, SPECS) } - +\author{ +Verónica Torralba, \email{veronica.torralba@bsc.es} +} diff --git a/man/CST_Calibration.Rd b/man/CST_Calibration.Rd index 13e6414f..76812a43 100644 --- a/man/CST_Calibration.Rd +++ b/man/CST_Calibration.Rd @@ -50,12 +50,11 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_Calibration(exp = exp, obs = obs, cal.method = "mse_min", eval.method = "in-sample") str(a) } +\seealso{ +\code{\link{CST_Load}} +} \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} Bert Van Schaeybroeck, \email{bertvs@meteo.be} } -\seealso{ -\code{\link{CST_Load}} -} - diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index e551c3ec..c23f8341 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,8 +4,14 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", - eval.method = "leave-one-out", amt.cat = 3, ...) +CST_CategoricalEnsCombination( + exp, + obs, + cat.method = "pool", + eval.method = "leave-one-out", + amt.cat = 3, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} @@ -83,9 +89,6 @@ attr(obs, 'class') <- 's2dv_cube' a <- CST_CategoricalEnsCombination(exp = exp, obs = obs, amt.cat = 3, cat.method = "mmw") } } -\author{ -Bert Van Schaeybroeck, \email{bertvs@meteo.be} -} \references{ Rajagopalan, B., Lall, U., & Zebiak, S. E. (2002). Categorical climate forecasts through regularization and optimal combination of multiple GCM ensembles. Monthly Weather Review, 130(7), 1792-1811. @@ -93,4 +96,6 @@ Robertson, A. W., Lall, U., Zebiak, S. E., & Goddard, L. (2004). Improved combin Van Schaeybroeck, B., & Vannitsem, S. (2019). Postprocessing of Long-Range Forecasts. In Statistical Postprocessing of Ensemble Forecasts (pp. 267-290). } - +\author{ +Bert Van Schaeybroeck, \email{bertvs@meteo.be} +} diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 017b8d4c..6ee79b7c 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -138,4 +138,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_Load.Rd b/man/CST_Load.Rd index 1fee022c..bf03ba42 100644 --- a/man/CST_Load.Rd +++ b/man/CST_Load.Rd @@ -47,4 +47,3 @@ obs <- CSTools::lonlat_data$obs \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} } - diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 449e011e..0762e83f 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,8 +4,12 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims(data, merge_dims = c("ftime", "monthly"), rename_dim = NULL, - na.rm = FALSE) +CST_MergeDims( + data, + merge_dims = c("ftime", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -38,4 +42,3 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index fb584751..036a6470 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,8 +4,14 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, minvar = 0.6, - lon_lim = NULL, lat_lim = NULL) +CST_MultiEOF( + datalist, + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. @@ -69,4 +75,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/CST_MultiMetric.Rd b/man/CST_MultiMetric.Rd index 079a5588..8e3ce593 100644 --- a/man/CST_MultiMetric.Rd +++ b/man/CST_MultiMetric.Rd @@ -37,15 +37,14 @@ c(ano_exp, ano_obs) \%<-\% CST_Anomaly(exp = exp, obs = obs, cross = TRUE, memb a <- CST_MultiMetric(exp = ano_exp, obs = ano_obs) str(a) } -\author{ -Mishra Niti, \email{niti.mishra@bsc.es} - -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \references{ Mishra, N., Prodhomme, C., & Guemas, V. (n.d.). Multi-Model Skill Assessment of Seasonal Temperature and Precipitation Forecasts over Europe, 29-31.\url{http://link.springer.com/10.1007/s00382-018-4404-z} } \seealso{ \code{\link[s2dverification]{Corr}}, \code{\link[s2dverification]{RMS}}, \code{\link[s2dverification]{RMSSS}} and \code{\link{CST_Load}} } +\author{ +Mishra Niti, \email{niti.mishra@bsc.es} +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_MultivarRMSE.Rd b/man/CST_MultivarRMSE.Rd index 685eaf77..24af608c 100644 --- a/man/CST_MultivarRMSE.Rd +++ b/man/CST_MultivarRMSE.Rd @@ -56,10 +56,9 @@ weight <- c(1, 2) a <- CST_MultivarRMSE(exp = ano_exp, obs = ano_obs, weight = weight) str(a) } -\author{ -Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} -} \seealso{ \code{\link[s2dverification]{RMS}} and \code{\link{CST_Load}} } - +\author{ +Deborah Verfaillie, \email{deborah.verfaillie@bsc.es} +} diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index 1c93843e..ad8f4b6c 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,9 +4,16 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", - "ftime", "member"), sample_length = NULL, method = "QUANT", - ncores = NULL, ...) +CST_QuantileMapping( + exp, + obs, + exp_cor = NULL, + sample_dims = c("sdate", "ftime", "member"), + sample_length = NULL, + method = "QUANT", + ncores = NULL, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} @@ -77,10 +84,9 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', method = 'DIST') } } -\author{ -Nuria Perez-Zanon, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} } - +\author{ +Nuria Perez-Zanon, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_RFSlope.Rd b/man/CST_RFSlope.Rd index d2b5aec0..0c4e1671 100644 --- a/man/CST_RFSlope.Rd +++ b/man/CST_RFSlope.Rd @@ -50,4 +50,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/CST_RFWeights.Rd b/man/CST_RFWeights.Rd index 08a7b850..ef5ebe4d 100644 --- a/man/CST_RFWeights.Rd +++ b/man/CST_RFWeights.Rd @@ -47,9 +47,6 @@ nf <- 8 ww <- CST_RFWeights("./worldclim.nc", nf, lon, lat, fsmooth = TRUE) } } -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -} \references{ Terzago, S., Palazzi, E., & von Hardenberg, J. (2018). Stochastic downscaling of precipitation in complex orography: @@ -57,4 +54,6 @@ A simple method to reproduce a realistic fine-scale climatology. Natural Hazards and Earth System Sciences, 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 . } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 4a667f9a..1c609e08 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,9 +4,20 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - verbose = FALSE, drop_realization_dim = FALSE) +CST_RainFARM( + data, + nf, + weights = 1, + slope = 0, + kmin = 1, + nens = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + verbose = FALSE, + drop_realization_dim = FALSE +) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, @@ -95,13 +106,12 @@ dim(res$data) # dataset member realization sdate ftime lat lon # 1 2 3 3 4 64 64 -} -\author{ -Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } \references{ Terzago, S. et al. (2018). NHESS 18(11), 2825-2840. http://doi.org/10.5194/nhess-18-2825-2018 ; D'Onofrio et al. (2014), J of Hydrometeorology 15, 830-843; Rebora et. al. (2006), JHM 7, 724. } - +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 56120942..f10dc142 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -5,8 +5,13 @@ \title{Function for matching a field of anomalies with a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function)} \usage{ -CST_RegimesAssign(data, ref_maps, method = "distance", composite = FALSE, - ncores = NULL) +CST_RegimesAssign( + data, + ref_maps, + method = "distance", + composite = FALSE, + ncores = NULL +) } \arguments{ \item{data}{a 's2dv_cube' object.} @@ -38,11 +43,10 @@ regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4 res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } - +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/CST_SaveExp.Rd b/man/CST_SaveExp.Rd index 17537205..0e49c119 100644 --- a/man/CST_SaveExp.Rd +++ b/man/CST_SaveExp.Rd @@ -29,11 +29,10 @@ destination <- "./path/" CST_SaveExp(data = data, destination = destination) } -} -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } \seealso{ \code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index 2019ea7b..ee93aedc 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -43,4 +43,3 @@ dim(new_data$data) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd index bd811b44..4ffb3c4c 100644 --- a/man/CST_WeatherRegimes.Rd +++ b/man/CST_WeatherRegimes.Rd @@ -4,9 +4,17 @@ \alias{CST_WeatherRegimes} \title{Function for Calculating the Cluster analysis} \usage{ -CST_WeatherRegimes(data, ncenters = NULL, EOFS = TRUE, neofs = 30, - varThreshold = NULL, method = "kmeans", iter.max = 100, nstart = 30, - ncores = NULL) +CST_WeatherRegimes( + data, + ncenters = NULL, + EOFS = TRUE, + neofs = 30, + varThreshold = NULL, + method = "kmeans", + iter.max = 100, + nstart = 30, + ncores = NULL +) } \arguments{ \item{data}{a 's2dv_cube' object} @@ -49,9 +57,6 @@ included in the hclust (stats package). res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, @@ -60,4 +65,6 @@ Characterization of European wind speed variability using weather regimes. Clima Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } - +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/Calibration.Rd b/man/Calibration.Rd index 880cf0f7..64452279 100644 --- a/man/Calibration.Rd +++ b/man/Calibration.Rd @@ -37,7 +37,6 @@ Four types of member-by-member bias correction can be performed. The \code{bias} Both in-sample or our out-of-sample (leave-one-out cross validation) calibration are possible. } - \examples{ mod1 <- 1 : (1 * 3 * 4 * 5 * 6 * 7) dim(mod1) <- c(dataset = 1, member = 3, sdate = 4, ftime = 5, lat = 6, lon = 7) @@ -58,5 +57,6 @@ Van Schaeybroeck, B., & Vannitsem, S. (2015). Ensemble post-processing using mem } \author{ Verónica Torralba, \email{veronica.torralba@bsc.es} + Bert Van Schaeybroeck, \email{bertvs@meteo.be} } diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 72912ba7..30d81f87 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -82,4 +82,3 @@ Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index 585049e8..7539ef6e 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,8 +4,12 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, - na.rm = FALSE) +MergeDims( + data, + merge_dims = c("time", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{an n-dimensional array with named dimensions} @@ -28,4 +32,3 @@ new_data <- MergeDims(data, merge_dims = c('time', 'lat')) \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index 1e822fc4..dd0fc7fe 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,9 +4,19 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", - neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, - lat_lim = NULL) +MultiEOF( + data, + lon, + lat, + time, + lon_dim = "lon", + lat_dim = "lat", + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, @@ -46,4 +56,3 @@ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} Paolo Davini - ISAC-CNR, \email{p.davini@isac.cnr.it} } - diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index d9895ca9..c45d1afb 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,11 +4,27 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, - map_dim = "map", brks = NULL, cols = NULL, col_unknown_map = "white", - mask = NULL, col_mask = "grey", bar_titles = NULL, legend_scale = 1, - fileout = NULL, width = 8, height = 5, size_units = "in", res = 100, - ...) +PlotCombinedMap( + maps, + lon, + lat, + map_select_fun, + display_range, + map_dim = "map", + brks = NULL, + cols = NULL, + col_unknown_map = "white", + mask = NULL, + col_mask = "grey", + bar_titles = NULL, + legend_scale = 1, + fileout = NULL, + width = 8, + height = 5, + size_units = "in", + res = 100, + ... +) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} @@ -77,13 +93,12 @@ PlotCombinedMap(data, lon = Lon, lat = Lat, map_select_fun = max, display_range = range(data), mask = mask, width = 12, height = 8) +} +\seealso{ +\code{PlotCombinedMap} and \code{PlotEquiMap} } \author{ Nicolau Manubens, \email{nicolau.manubens@bsc.es} Veronica Torralba, \email{veronica.torralba@bsc.es} } -\seealso{ -\code{PlotCombinedMap} and \code{PlotEquiMap} -} - diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index d7b95b08..c04b43c1 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,10 +4,18 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, obs = NULL, - plotfile = NULL, title = "Set a title", var.name = "Varname (units)", - fcst.names = NULL, add.ensmemb = c("above", "below", "no"), - color.set = c("ggplot", "s2s4e", "hydro")) +PlotForecastPDF( + fcst, + tercile.limits, + extreme.limits = NULL, + obs = NULL, + plotfile = NULL, + title = "Set a title", + var.name = "Varname (units)", + fcst.names = NULL, + add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro") +) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} @@ -49,4 +57,3 @@ PlotForecastPDF(fcsts2, c(-0.66, 0.66), extreme.limits = c(-1.2, 1.2), \author{ Llorenç Lledó \email{llledo@bsc.es} } - diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 6c92850e..4c400b18 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,8 +4,15 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", - bar_titles = NULL, col_unknown_cat = "white", ...) +PlotMostLikelyQuantileMap( + probs, + lon, + lat, + cat_dim = "bin", + bar_titles = NULL, + col_unknown_cat = "white", + ... +) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} @@ -109,11 +116,10 @@ PlotMostLikelyQuantileMap(bins, lons, lats, mask = 1 - (w1 + w2 / max(c(w1, w2))), brks = 20, width = 10, height = 8) -} -\author{ -Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} } \seealso{ \code{PlotCombinedMap} and \code{PlotEquiMap} } - +\author{ +Veronica Torralba, \email{veronica.torralba@bsc.es}, Nicolau Manubens, \email{nicolau.manubens@bsc.es} +} diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index 09a24ff5..db3f0e10 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,8 +4,7 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", - lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. @@ -60,4 +59,3 @@ slopes \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index 984dcd42..0db84679 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,10 +4,24 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, kmin = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - lon_dim = "lon", lat_dim = "lat", drop_realization_dim = FALSE, - verbose = FALSE) +RainFARM( + data, + lon, + lat, + nf, + weights = 1, + nens = 1, + slope = 0, + kmin = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + lon_dim = "lon", + lat_dim = "lat", + drop_realization_dim = FALSE, + verbose = FALSE +) } \arguments{ \item{data}{Precipitation array to downscale. @@ -117,4 +131,3 @@ dim(res$data) \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} } - diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index dd9cd7a0..40daf6be 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -5,8 +5,14 @@ \title{Function for matching a field of anomalies with a set of maps used as a reference (e.g. clusters obtained from the WeatherRegime function).} \usage{ -RegimesAssign(data, ref_maps, lat, method = "distance", composite = FALSE, - ncores = NULL) +RegimesAssign( + data, + ref_maps, + lat, + method = "distance", + composite = FALSE, + ncores = NULL +) } \arguments{ \item{data}{an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -38,10 +44,9 @@ regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, E res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), lat=lonlat_data$exp$lat,composite=FALSE) } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } - +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/SplitDim.Rd b/man/SplitDim.Rd index e36aa8a5..f07e4756 100644 --- a/man/SplitDim.Rd +++ b/man/SplitDim.Rd @@ -35,4 +35,3 @@ new_data <- SplitDim(data, indices = time, freq = 'year') \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} } - diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd index d01ed918..22cc4f08 100644 --- a/man/WeatherRegimes.Rd +++ b/man/WeatherRegimes.Rd @@ -4,9 +4,19 @@ \alias{WeatherRegime} \title{Function for Calculating the Cluster analysis} \usage{ -WeatherRegime(data, ncenters = NULL, EOFS = TRUE, neofs = 30, - varThreshold = NULL, lon = NULL, lat = NULL, method = "kmeans", - iter.max = 100, nstart = 30, ncores = NULL) +WeatherRegime( + data, + ncenters = NULL, + EOFS = TRUE, + neofs = 30, + varThreshold = NULL, + lon = NULL, + lat = NULL, + method = "kmeans", + iter.max = 100, + nstart = 30, + ncores = NULL +) } \arguments{ \item{data}{an array containing anomalies with named dimensions with at least start date 'sdate', forecast time 'ftime', latitude 'lat' and longitude 'lon'.} @@ -51,9 +61,6 @@ included in the hclust (stats package). \examples{ res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) } -\author{ -Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} -} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, @@ -62,4 +69,6 @@ Characterization of European wind speed variability using weather regimes. Clima Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} } - +\author{ +Verónica Torralba - BSC, \email{veronica.torralba@bsc.es} +} diff --git a/man/areave_data.Rd b/man/areave_data.Rd index cc79c85c..a772220a 100644 --- a/man/areave_data.Rd +++ b/man/areave_data.Rd @@ -41,4 +41,3 @@ areave_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/as.s2dv_cube.Rd b/man/as.s2dv_cube.Rd index 13a2a296..c2b8f3a8 100644 --- a/man/as.s2dv_cube.Rd +++ b/man/as.s2dv_cube.Rd @@ -40,12 +40,11 @@ data <- as.s2dv_cube(data) class(data) } } +\seealso{ +\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} +} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} Nicolau Manubens, \email{nicolau.manubens@bsc.es} } -\seealso{ -\code{\link{s2dv_cube}}, \code{\link[s2dverification]{Load}}, \code{\link[startR]{Start}} and \code{\link{CST_Load}} -} - diff --git a/man/lonlat_data.Rd b/man/lonlat_data.Rd index eca7abac..0c6ee30f 100644 --- a/man/lonlat_data.Rd +++ b/man/lonlat_data.Rd @@ -41,4 +41,3 @@ lonlat_data <- Nicolau Manubens \email{nicolau.manubens@bsc.es} } \keyword{data} - diff --git a/man/lonlat_prec.Rd b/man/lonlat_prec.Rd index 69cb94e8..345e3cab 100644 --- a/man/lonlat_prec.Rd +++ b/man/lonlat_prec.Rd @@ -29,4 +29,3 @@ lonlat_prec <- CST_Load('prlr', exp = list(infile), obs = NULL, Jost von Hardenberg \email{j.vonhardenberg@isac.cnr.it} } \keyword{data} - diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index 48af7bbb..b0ce8966 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,8 +4,16 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, - Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) +s2dv_cube( + data, + lon = NULL, + lat = NULL, + Variable = NULL, + Datasets = NULL, + Dates = NULL, + when = NULL, + source_files = NULL +) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} @@ -75,10 +83,9 @@ exp8 <- s2dv_cube(data = exp_original, lon = seq(-10, 10, 5), lat = c(45, 50), end = paste0(rep("31", 10), rep("01", 10), 1990:1999))) class(exp8) } -\author{ -Perez-Zanon Nuria, \email{nuria.perez@bsc.es} -} \seealso{ \code{\link[s2dverification]{Load}} and \code{\link{CST_Load}} } - +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} -- GitLab From a6669a447ee0c8ca728eb5d819d7d55ff250dac0 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 18 Jun 2020 17:32:41 +0200 Subject: [PATCH 143/184] WeatherRegimes and RegimeAssign listed in NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index f81ad720..f3ebd2b3 100644 --- a/NEWS.md +++ b/NEWS.md @@ -7,6 +7,7 @@ + CST_BiasCorrection has na.rm paramter + CST_Anomaly allows to smooth the climatology with filter.span parameter + PlotTriangles4Categories new plotting function to convert any 3-d numerical array to a grid of coloured triangles. + + CST_WeatherRegimes/WeatherRegimes and CST_RegimeAssign/RegimeAssign - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly -- GitLab From 588fd320a1fcab70bc0dab5a442b87615a35f68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ver=C3=B3nica=20Torralba-Fern=C3=A1ndez?= Date: Thu, 18 Jun 2020 17:45:31 +0200 Subject: [PATCH 144/184] bugfix freqs --- R/CST_WeatherRegimes.R | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 82704f38..209aa1b6 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -155,9 +155,6 @@ WeatherRegime <- function(data, ncenters = NULL, ncores = ncores) if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { - output$cluster <- t(array(output$cluster,dim=c(nftimes,nsdates))) - names(dim(output$cluster)) <- c('sdate','ftime') - # The frequency and the persistency are computed as they are useful # parameters in the cluster analysis @@ -167,8 +164,11 @@ WeatherRegime <- function(data, ncenters = NULL, nsdates = nsdates, nftimes = nftimes , ncenters = ncenters) - - output <- list(composite=output$composite, + + output$cluster <- t(array(output$cluster,dim=c(nftimes,nsdates))) + names(dim(output$cluster)) <- c('sdate','ftime') + + output <- list(composite=output$composite, pvalue=output$pvalue, cluster=output$cluster, frequency=extra_output$frequency, -- GitLab From 7bae72e7a55e06ff5940b7f4f2bf1fe7bd3d05d0 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 19 Jun 2020 18:46:22 +0200 Subject: [PATCH 145/184] documentation automatically generated with devtools --- NAMESPACE | 3 --- man/Analogs.Rd | 16 +++++++++++++--- man/BEI_PDFBest.Rd | 13 ++++++++++--- man/CST_Analogs.Rd | 11 +++++++++-- man/CST_BEI_Weighting.Rd | 9 +++++++-- man/CST_CategoricalEnsCombination.Rd | 10 ++++++++-- man/CST_MergeDims.Rd | 8 ++++++-- man/CST_MultiEOF.Rd | 10 ++++++++-- man/CST_QuantileMapping.Rd | 13 ++++++++++--- man/CST_RainFARM.Rd | 17 ++++++++++++++--- man/CST_SplitDim.Rd | 3 +-- man/MergeDims.Rd | 8 ++++++-- man/MultiEOF.Rd | 16 +++++++++++++--- man/PlotCombinedMap.Rd | 26 +++++++++++++++++++++----- man/PlotForecastPDF.Rd | 17 ++++++++++++----- man/PlotMostLikelyQuantileMap.Rd | 11 +++++++++-- man/PlotPDFsOLE.Rd | 12 ++++++++++-- man/RFSlope.Rd | 3 +-- man/RainFARM.Rd | 22 ++++++++++++++++++---- man/s2dv_cube.Rd | 12 ++++++++++-- 20 files changed, 186 insertions(+), 54 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 7f245fb1..696a3e89 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -30,11 +30,8 @@ export(MultiEOF) export(PlotCombinedMap) export(PlotForecastPDF) export(PlotMostLikelyQuantileMap) -<<<<<<< HEAD export(PlotPDFsOLE) -======= export(PlotTriangles4Categories) ->>>>>>> master export(RFSlope) export(RainFARM) export(RegimesAssign) diff --git a/man/Analogs.Rd b/man/Analogs.Rd index 52d9ff97..06107c07 100644 --- a/man/Analogs.Rd +++ b/man/Analogs.Rd @@ -4,9 +4,19 @@ \alias{Analogs} \title{Analogs based on large scale fields.} \usage{ -Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - criteria = "Large_dist", lonVar = NULL, latVar = NULL, - region = NULL, nAnalogs = NULL, return_list = FALSE) +Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + criteria = "Large_dist", + lonVar = NULL, + latVar = NULL, + region = NULL, + nAnalogs = NULL, + return_list = FALSE +) } \arguments{ \item{expL}{an array of N named dimensions containing the experimental field diff --git a/man/BEI_PDFBest.Rd b/man/BEI_PDFBest.Rd index f120258d..0ba24a84 100644 --- a/man/BEI_PDFBest.Rd +++ b/man/BEI_PDFBest.Rd @@ -4,9 +4,16 @@ \alias{BEI_PDFBest} \title{Computing the Best Index PDFs combining Index PDFs from two SFSs} \usage{ -BEI_PDFBest(index_obs, index_hind1, index_hind2, index_fcst1 = NULL, - index_fcst2 = NULL, method_BC = "none", time_dim_name = "time", - na.rm = FALSE) +BEI_PDFBest( + index_obs, + index_hind1, + index_hind2, + index_fcst1 = NULL, + index_fcst2 = NULL, + method_BC = "none", + time_dim_name = "time", + na.rm = FALSE +) } \arguments{ \item{index_obs}{Index (e.g. NAO index) array from an observational database diff --git a/man/CST_Analogs.Rd b/man/CST_Analogs.Rd index c9166de6..d7dd5e14 100644 --- a/man/CST_Analogs.Rd +++ b/man/CST_Analogs.Rd @@ -4,8 +4,15 @@ \alias{CST_Analogs} \title{Downscaling using Analogs based on large scale fields.} \usage{ -CST_Analogs(expL, obsL, time_obsL, expVar = NULL, obsVar = NULL, - region = NULL, criteria = "Large_dist") +CST_Analogs( + expL, + obsL, + time_obsL, + expVar = NULL, + obsVar = NULL, + region = NULL, + criteria = "Large_dist" +) } \arguments{ \item{expL}{an 's2dv_cube' object containing the experimental field on the diff --git a/man/CST_BEI_Weighting.Rd b/man/CST_BEI_Weighting.Rd index 9c0f5a9d..d6f65bb5 100644 --- a/man/CST_BEI_Weighting.Rd +++ b/man/CST_BEI_Weighting.Rd @@ -4,8 +4,13 @@ \alias{CST_BEI_Weighting} \title{Weighting SFSs of a CSTools object.} \usage{ -CST_BEI_Weighting(var_exp, aweights, terciles = NULL, - type = "ensembleMean", time_dim_name = "time") +CST_BEI_Weighting( + var_exp, + aweights, + terciles = NULL, + type = "ensembleMean", + time_dim_name = "time" +) } \arguments{ \item{var_exp}{An object of the class 's2dv_cube' containing the variable diff --git a/man/CST_CategoricalEnsCombination.Rd b/man/CST_CategoricalEnsCombination.Rd index 7175b7fe..c23f8341 100644 --- a/man/CST_CategoricalEnsCombination.Rd +++ b/man/CST_CategoricalEnsCombination.Rd @@ -4,8 +4,14 @@ \alias{CST_CategoricalEnsCombination} \title{Make categorical forecast based on a multi-model forecast with potential for calibrate} \usage{ -CST_CategoricalEnsCombination(exp, obs, cat.method = "pool", - eval.method = "leave-one-out", amt.cat = 3, ...) +CST_CategoricalEnsCombination( + exp, + obs, + cat.method = "pool", + eval.method = "leave-one-out", + amt.cat = 3, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube} as returned by \code{CST_Load} function, containing the seasonal forecast experiment data in the element named \code{$data}. The amount of forecasting models is equal to the size of the \code{dataset} dimension of the data array. The amount of members per model may be different. The size of the \code{member} dimension of the data array is equal to the maximum of the ensemble members among the models. Models with smaller ensemble sizes have residual indices of \code{member} dimension in the data array filled with NA values.} diff --git a/man/CST_MergeDims.Rd b/man/CST_MergeDims.Rd index 2c483840..0762e83f 100644 --- a/man/CST_MergeDims.Rd +++ b/man/CST_MergeDims.Rd @@ -4,8 +4,12 @@ \alias{CST_MergeDims} \title{Function to Merge Dimensions} \usage{ -CST_MergeDims(data, merge_dims = c("ftime", "monthly"), - rename_dim = NULL, na.rm = FALSE) +CST_MergeDims( + data, + merge_dims = c("ftime", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{a 's2dv_cube' object} diff --git a/man/CST_MultiEOF.Rd b/man/CST_MultiEOF.Rd index 5fea8a50..036a6470 100644 --- a/man/CST_MultiEOF.Rd +++ b/man/CST_MultiEOF.Rd @@ -4,8 +4,14 @@ \alias{CST_MultiEOF} \title{EOF analysis of multiple variables} \usage{ -CST_MultiEOF(datalist, neof_max = 40, neof_composed = 5, - minvar = 0.6, lon_lim = NULL, lat_lim = NULL) +CST_MultiEOF( + datalist, + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{datalist}{A list of objects of the class 's2dv_cube', containing the variables to be analysed. diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index 90319622..ad8f4b6c 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -4,9 +4,16 @@ \alias{CST_QuantileMapping} \title{Quantiles Mapping for seasonal or decadal forecast data} \usage{ -CST_QuantileMapping(exp, obs, exp_cor = NULL, sample_dims = c("sdate", - "ftime", "member"), sample_length = NULL, method = "QUANT", - ncores = NULL, ...) +CST_QuantileMapping( + exp, + obs, + exp_cor = NULL, + sample_dims = c("sdate", "ftime", "member"), + sample_length = NULL, + method = "QUANT", + ncores = NULL, + ... +) } \arguments{ \item{exp}{an object of class \code{s2dv_cube}} diff --git a/man/CST_RainFARM.Rd b/man/CST_RainFARM.Rd index 0ed45f49..1c609e08 100644 --- a/man/CST_RainFARM.Rd +++ b/man/CST_RainFARM.Rd @@ -4,9 +4,20 @@ \alias{CST_RainFARM} \title{RainFARM stochastic precipitation downscaling of a CSTools object} \usage{ -CST_RainFARM(data, nf, weights = 1, slope = 0, kmin = 1, nens = 1, - fglob = FALSE, fsmooth = TRUE, nprocs = 1, time_dim = NULL, - verbose = FALSE, drop_realization_dim = FALSE) +CST_RainFARM( + data, + nf, + weights = 1, + slope = 0, + kmin = 1, + nens = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + verbose = FALSE, + drop_realization_dim = FALSE +) } \arguments{ \item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, diff --git a/man/CST_SplitDim.Rd b/man/CST_SplitDim.Rd index 8ce20c97..ee93aedc 100644 --- a/man/CST_SplitDim.Rd +++ b/man/CST_SplitDim.Rd @@ -4,8 +4,7 @@ \alias{CST_SplitDim} \title{Function to Split Dimension} \usage{ -CST_SplitDim(data, split_dim = "time", indices = NULL, - freq = "monthly") +CST_SplitDim(data, split_dim = "time", indices = NULL, freq = "monthly") } \arguments{ \item{data}{a 's2dv_cube' object} diff --git a/man/MergeDims.Rd b/man/MergeDims.Rd index d6b261ad..7539ef6e 100644 --- a/man/MergeDims.Rd +++ b/man/MergeDims.Rd @@ -4,8 +4,12 @@ \alias{MergeDims} \title{Function to Split Dimension} \usage{ -MergeDims(data, merge_dims = c("time", "monthly"), rename_dim = NULL, - na.rm = FALSE) +MergeDims( + data, + merge_dims = c("time", "monthly"), + rename_dim = NULL, + na.rm = FALSE +) } \arguments{ \item{data}{an n-dimensional array with named dimensions} diff --git a/man/MultiEOF.Rd b/man/MultiEOF.Rd index c38116de..dd0fc7fe 100644 --- a/man/MultiEOF.Rd +++ b/man/MultiEOF.Rd @@ -4,9 +4,19 @@ \alias{MultiEOF} \title{EOF analysis of multiple variables starting from an array (reduced version)} \usage{ -MultiEOF(data, lon, lat, time, lon_dim = "lon", lat_dim = "lat", - neof_max = 40, neof_composed = 5, minvar = 0.6, lon_lim = NULL, - lat_lim = NULL) +MultiEOF( + data, + lon, + lat, + time, + lon_dim = "lon", + lat_dim = "lat", + neof_max = 40, + neof_composed = 5, + minvar = 0.6, + lon_lim = NULL, + lat_lim = NULL +) } \arguments{ \item{data}{A multidimensional array with dimension \code{"var"}, diff --git a/man/PlotCombinedMap.Rd b/man/PlotCombinedMap.Rd index 702d31ee..c45d1afb 100644 --- a/man/PlotCombinedMap.Rd +++ b/man/PlotCombinedMap.Rd @@ -4,11 +4,27 @@ \alias{PlotCombinedMap} \title{Plot Multiple Lon-Lat Variables In a Single Map According to a Decision Function} \usage{ -PlotCombinedMap(maps, lon, lat, map_select_fun, display_range, - map_dim = "map", brks = NULL, cols = NULL, - col_unknown_map = "white", mask = NULL, col_mask = "grey", - bar_titles = NULL, legend_scale = 1, fileout = NULL, width = 8, - height = 5, size_units = "in", res = 100, ...) +PlotCombinedMap( + maps, + lon, + lat, + map_select_fun, + display_range, + map_dim = "map", + brks = NULL, + cols = NULL, + col_unknown_map = "white", + mask = NULL, + col_mask = "grey", + bar_titles = NULL, + legend_scale = 1, + fileout = NULL, + width = 8, + height = 5, + size_units = "in", + res = 100, + ... +) } \arguments{ \item{maps}{List of matrices to plot, each with (longitude, latitude) dimensions, or 3-dimensional array with the dimensions (longitude, latitude, map). Dimension names are required.} diff --git a/man/PlotForecastPDF.Rd b/man/PlotForecastPDF.Rd index 3eee4e33..c04b43c1 100644 --- a/man/PlotForecastPDF.Rd +++ b/man/PlotForecastPDF.Rd @@ -4,11 +4,18 @@ \alias{PlotForecastPDF} \title{Plot one or multiple ensemble forecast pdfs for the same event} \usage{ -PlotForecastPDF(fcst, tercile.limits, extreme.limits = NULL, - obs = NULL, plotfile = NULL, title = "Set a title", - var.name = "Varname (units)", fcst.names = NULL, - add.ensmemb = c("above", "below", "no"), color.set = c("ggplot", - "s2s4e", "hydro")) +PlotForecastPDF( + fcst, + tercile.limits, + extreme.limits = NULL, + obs = NULL, + plotfile = NULL, + title = "Set a title", + var.name = "Varname (units)", + fcst.names = NULL, + add.ensmemb = c("above", "below", "no"), + color.set = c("ggplot", "s2s4e", "hydro") +) } \arguments{ \item{fcst}{a dataframe or array containing all the ensember members for each forecast. If \code{'fcst'} is an array, it should have two labelled dimensions, and one of them should be \code{'members'}. If \code{'fcsts'} is a data.frame, each column shoul be a separate forecast, with the rows beeing the different ensemble members.} diff --git a/man/PlotMostLikelyQuantileMap.Rd b/man/PlotMostLikelyQuantileMap.Rd index 0d984ede..4c400b18 100644 --- a/man/PlotMostLikelyQuantileMap.Rd +++ b/man/PlotMostLikelyQuantileMap.Rd @@ -4,8 +4,15 @@ \alias{PlotMostLikelyQuantileMap} \title{Plot Maps of Most Likely Quantiles} \usage{ -PlotMostLikelyQuantileMap(probs, lon, lat, cat_dim = "bin", - bar_titles = NULL, col_unknown_cat = "white", ...) +PlotMostLikelyQuantileMap( + probs, + lon, + lat, + cat_dim = "bin", + bar_titles = NULL, + col_unknown_cat = "white", + ... +) } \arguments{ \item{probs}{a list of bi-dimensional arrays with the named dimensions 'latitude' (or 'lat') and 'longitude' (or 'lon'), with equal size and in the same order, or a single tri-dimensional array with an additional dimension (e.g. 'bin') for the different categories. The arrays must contain probability values between 0 and 1, and the probabilities for all categories of a grid cell should not exceed 1 when added.} diff --git a/man/PlotPDFsOLE.Rd b/man/PlotPDFsOLE.Rd index 6980cc56..f2e2be8c 100644 --- a/man/PlotPDFsOLE.Rd +++ b/man/PlotPDFsOLE.Rd @@ -5,8 +5,16 @@ \title{Plotting two probability density gaussian functions and the optimal linear estimation (OLE) as result of combining them.} \usage{ -PlotPDFsOLE(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, width = 30, - height = 15, units = "cm", dpi = 300) +PlotPDFsOLE( + pdf_1, + pdf_2, + nsigma = 3, + plotfile = NULL, + width = 30, + height = 15, + units = "cm", + dpi = 300 +) } \arguments{ \item{pdf_1}{A numeric array with a dimension named 'statistic', containg diff --git a/man/RFSlope.Rd b/man/RFSlope.Rd index 5308ef8c..db3f0e10 100644 --- a/man/RFSlope.Rd +++ b/man/RFSlope.Rd @@ -4,8 +4,7 @@ \alias{RFSlope} \title{RainFARM spectral slopes from an array (reduced version)} \usage{ -RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", - lat_dim = "lat") +RFSlope(data, kmin = 1, time_dim = NULL, lon_dim = "lon", lat_dim = "lat") } \arguments{ \item{data}{Array containing the spatial precipitation fields to downscale. diff --git a/man/RainFARM.Rd b/man/RainFARM.Rd index e0fa9a10..0db84679 100644 --- a/man/RainFARM.Rd +++ b/man/RainFARM.Rd @@ -4,10 +4,24 @@ \alias{RainFARM} \title{RainFARM stochastic precipitation downscaling (reduced version)} \usage{ -RainFARM(data, lon, lat, nf, weights = 1, nens = 1, slope = 0, - kmin = 1, fglob = FALSE, fsmooth = TRUE, nprocs = 1, - time_dim = NULL, lon_dim = "lon", lat_dim = "lat", - drop_realization_dim = FALSE, verbose = FALSE) +RainFARM( + data, + lon, + lat, + nf, + weights = 1, + nens = 1, + slope = 0, + kmin = 1, + fglob = FALSE, + fsmooth = TRUE, + nprocs = 1, + time_dim = NULL, + lon_dim = "lon", + lat_dim = "lat", + drop_realization_dim = FALSE, + verbose = FALSE +) } \arguments{ \item{data}{Precipitation array to downscale. diff --git a/man/s2dv_cube.Rd b/man/s2dv_cube.Rd index f57d5ed3..b0ce8966 100644 --- a/man/s2dv_cube.Rd +++ b/man/s2dv_cube.Rd @@ -4,8 +4,16 @@ \alias{s2dv_cube} \title{Creation of a 's2dv_cube' object} \usage{ -s2dv_cube(data, lon = NULL, lat = NULL, Variable = NULL, - Datasets = NULL, Dates = NULL, when = NULL, source_files = NULL) +s2dv_cube( + data, + lon = NULL, + lat = NULL, + Variable = NULL, + Datasets = NULL, + Dates = NULL, + when = NULL, + source_files = NULL +) } \arguments{ \item{data}{an array with any number of named dimensions, typically an object output from CST_Load, with the following dimensions: dataset, member, sdate, ftime, lat and lon.} -- GitLab From 56724d7e9602f30ecafc6c570c17c7eaec6cd207 Mon Sep 17 00:00:00 2001 From: nperez Date: Fri, 19 Jun 2020 18:48:34 +0200 Subject: [PATCH 146/184] PlotPDFsOLE listed in NEWS --- NEWS.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/NEWS.md b/NEWS.md index f3ebd2b3..208fec39 100644 --- a/NEWS.md +++ b/NEWS.md @@ -8,6 +8,8 @@ + CST_Anomaly allows to smooth the climatology with filter.span parameter + PlotTriangles4Categories new plotting function to convert any 3-d numerical array to a grid of coloured triangles. + CST_WeatherRegimes/WeatherRegimes and CST_RegimeAssign/RegimeAssign + + PlotPDFsOLE plots two probability density gaussian functions and the optimal linear estimation + - Fixes + CST_Anomaly handles exp, obs or both + PlotForecastPDF vignette displays figures correctly -- GitLab From 98b4f1bef496ff999fbe1df4680eb1343435284e Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 14:23:05 +0200 Subject: [PATCH 147/184] memb parameter in RegimeAssign and other fixes --- NAMESPACE | 6 + R/CST_RegimesAssign.R | 44 ++-- R/CST_WeatherRegimes.R | 56 ++--- R/PlotPDFsOLE.R | 38 ++-- R/PlotTriangles4Categories.R | 262 ++++++++++++++++++------ man/CST_RegimesAssign.Rd | 15 +- man/CST_WeatherRegimes.Rd | 14 +- man/PlotTriangles4Categories.Rd | 28 +-- man/RegimesAssign.Rd | 20 +- man/WeatherRegimes.Rd | 11 +- vignettes/Figures/observed_regimes.png | Bin 263072 -> 41063 bytes vignettes/Figures/predicted_regimes.png | Bin 257469 -> 40235 bytes vignettes/WeatherRegimes_vignette.md | 29 +-- 13 files changed, 338 insertions(+), 185 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 696a3e89..5568fd0c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -65,12 +65,18 @@ importFrom(grDevices,png) importFrom(grDevices,postscript) importFrom(grDevices,svg) importFrom(grDevices,tiff) +importFrom(graphics,axis) importFrom(graphics,box) importFrom(graphics,image) importFrom(graphics,layout) importFrom(graphics,mtext) importFrom(graphics,par) +importFrom(graphics,plot) importFrom(graphics,plot.new) +importFrom(graphics,points) +importFrom(graphics,polygon) +importFrom(graphics,text) +importFrom(graphics,title) importFrom(maps,map) importFrom(plyr,.) importFrom(plyr,dlply) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index babab1a3..b0817a71 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -15,9 +15,9 @@ #'@param data a 's2dv_cube' object. #'@param ref_maps a 's2dv_cube' object as the output of CST_WeatherRegimes. -#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or -#' the maximum spatial correlation (method=’ACC’) between the maps. -#'@param composite a logical parameter indicating if the composite maps are computed or not (default=FALSE). +#'@param method whether the matching will be performed in terms of minimum distance (default = ’distance’) or +#' the maximum spatial correlation (method = ’ACC’) between the maps. +#'@param composite a logical parameter indicating if the composite maps are computed or not (default = FALSE). #'@param memb a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). #'This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'. #'@param ncores the number of multicore threads to use for parallel computation. @@ -31,7 +31,7 @@ #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples -#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) +#'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) #'res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) #'res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) #'@export @@ -56,9 +56,10 @@ CST_RegimesAssign <- function(data, ref_maps, } else { lat <- NULL } - result <- Apply(data=list(data=data$data, ref_maps=ref_maps$data), lat= lat, fun=RegimesAssign, - target_dims=list(names(dim(data$data)),c('lat','lon','cluster')), - method = method, composite = composite, ncores=ncores) + result <- Apply(data = list(data = data$data, ref_maps = ref_maps$data), + lat = lat, fun = RegimesAssign, + target_dims = list(names(dim(data$data)), c('lat', 'lon', 'cluster')), + method = method, memb = memb, composite = composite, ncores = ncores) if (composite){ data$data <- result$composite @@ -85,9 +86,10 @@ CST_RegimesAssign <- function(data, ref_maps, #'@references Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} #' #'@param data an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon. -#'@param ref_maps array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. -#'@param method whether the matching will be performed in terms of minimum distance (default=’distance’) or +#'@param ref_maps array with 3-dimensions ('lon', 'lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching. +#'@param method whether the matching will be performed in terms of minimum distance (default = ’distance’) or #' the maximum spatial correlation (method=’ACC’) between the maps. +#'@param lat a vector of latitudes corresponding to the positions provided in data and ref_maps. #'@param composite a logical parameter indicating if the composite maps are computed or not (default=FALSE). #'@param memb a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). #'This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'. @@ -97,15 +99,16 @@ CST_RegimesAssign <- function(data, ref_maps, #' \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test #' that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), #' \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , -#' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), +#' \code{$frequency} (A vector of integers (from k = 1, ... k n reference maps) indicating the percentage of assignations corresponding to each map.), #' #'@import s2dverification #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples -#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite +#'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, +#' EOFs = FALSE, ncenters = 4)$composite #'res1 <- RegimesAssign(data = lonlat_data$exp$data, ref_maps = drop(regimes), -#'lat=lonlat_data$exp$lat, composite = FALSE) +#' lat = lonlat_data$exp$lat, composite = FALSE) #'@export RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, @@ -124,7 +127,12 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = if (is.null(names(dim(ref_maps)))) { stop("Parameter 'ref_maps' must be an array with named dimensions.") } - + if (!is.logical(memb)) { + stop("Parameter 'memb' must be logical.") + } + if (!is.logical(composite)) { + stop("Parameter 'memb' must be logical.") + } dimData <- names(dim(data)) if (!all( c('lat', 'lon') %in% dimData)) { @@ -159,11 +167,11 @@ RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = } } ref_maps <- drop(ref_maps) - index <- Apply( data = list(ref = ref_maps, target = data), - target_dims = list(c('lat','lon','cluster'), c('lat','lon')), - fun = .RegimesAssign, - lat = lat, method = method, - ncores = ncores)[[1]] + index <- Apply(data = list(ref = ref_maps, target = data), + target_dims = list(c('lat', 'lon', 'cluster'), c('lat', 'lon')), + fun = .RegimesAssign, + lat = lat, method = method, + ncores = ncores)[[1]] nclust <- dim(ref_maps)['cluster'] freqs <- rep(NA, nclust) diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index 209aa1b6..f4495a29 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -26,7 +26,7 @@ #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param nstart Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). #'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)) and \code{$statistics} that includes @@ -37,15 +37,15 @@ #'@import s2dverification #'@import multiApply #'@examples -#'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) -#'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) +#'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) +#'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = TRUE, ncenters = 3) #'@export #' CST_WeatherRegimes <- function(data, ncenters = NULL, - EOFS = TRUE,neofs = 30, + EOFs = TRUE, neofs = 30, varThreshold = NULL, method = "kmeans", - iter.max=100, nstart = 30, + iter.max = 100, nstart = 30, ncores = NULL) { if (!inherits(data, 's2dv_cube')) { stop("Parameter 'data' must be of the class 's2dv_cube', ", @@ -57,7 +57,7 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, lon <- NULL } result <- WeatherRegime(data$data,ncenters = ncenters, - EOFS = EOFS, neofs = neofs, + EOFs = EOFs, neofs = neofs, varThreshold = varThreshold, lon = lon, lat = data$lat, method = method, iter.max=iter.max, nstart = nstart, @@ -98,7 +98,8 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #'"ward.D", "ward.D2", "single", "complete", "average" (= UPGMA), "mcquitty" (= WPGMA), "median" (= WPGMC) or "centroid" (= UPGMC). #' For more details about these methods see the hclust function documentation included in the stats package. #'@param iter.max Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected). -#'@param nstarts Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param nstart Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected). +#'@param ncores The number of multicore threads to use for parallel computation. #'@return A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) # or only k=1 for any specific cluster, i.e., case (*2)), #' \code{pvalue} (array with at least 3-d ('lat','lon','cluster') with the pvalue of the composites obtained through a t-test that accounts for the serial @@ -109,11 +110,12 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #'@import s2dverification #'@import multiApply #'@examples -#'res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) +#'res <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, +#' EOFs = FALSE, ncenters = 4) #'@export WeatherRegime <- function(data, ncenters = NULL, - EOFS = TRUE,neofs = 30, + EOFs = TRUE,neofs = 30, varThreshold = NULL, lon = NULL, lat = NULL, method = "kmeans", iter.max=100, nstart = 30, @@ -133,7 +135,7 @@ WeatherRegime <- function(data, ncenters = NULL, nsdates <- dim(data)['sdate'] nftimes <- dim(data)['ftime'] data <- MergeDims(data, - merge_dims = c('ftime','sdate'), + merge_dims = c('ftime', 'sdate'), rename_dim = 'time') } else if ('sdate' %in% dimData | 'ftime' %in% dimData) { names(dim(data))[which(dimData == 'sdate' | dimData == 'ftime') ] = 'time' @@ -147,37 +149,37 @@ WeatherRegime <- function(data, ncenters = NULL, output <- Apply(data = list(data), target_dims = c('time','lat','lon'), fun = .WeatherRegime, - EOFS = EOFS, neofs = neofs, + EOFs = EOFs, neofs = neofs, varThreshold = varThreshold, lon = lon, lat = lat, ncenters = ncenters, method = method, ncores = ncores) - if (method=='kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { + if (method == 'kmeans' && 'sdate' %in% dimData && 'ftime' %in% dimData) { # The frequency and the persistency are computed as they are useful # parameters in the cluster analysis extra_output <- Apply(data = output$cluster, - target_dims = 'time', - fun = .freqPer, - nsdates = nsdates, - nftimes = nftimes , - ncenters = ncenters) + target_dims = 'time', + fun = .freqPer, + nsdates = nsdates, + nftimes = nftimes , + ncenters = ncenters) - output$cluster <- t(array(output$cluster,dim=c(nftimes,nsdates))) - names(dim(output$cluster)) <- c('sdate','ftime') + output$cluster <- t(array(output$cluster, dim = c(nftimes, nsdates))) + names(dim(output$cluster)) <- c('sdate', 'ftime') - output <- list(composite=output$composite, - pvalue=output$pvalue, - cluster=output$cluster, - frequency=extra_output$frequency, - persistence=extra_output$persistence) + output <- list(composite = output$composite, + pvalue = output$pvalue, + cluster = output$cluster, + frequency = extra_output$frequency, + persistence = extra_output$persistence) } return(output) } -.WeatherRegime <- function(data, ncenters = NULL, EOFS = TRUE,neofs = 30, +.WeatherRegime <- function(data, ncenters = NULL, EOFs = TRUE,neofs = 30, varThreshold = NULL, lon = NULL, lat = NULL, method = "kmeans", iter.max=100, nstart = 30) { @@ -193,7 +195,7 @@ WeatherRegime <- function(data, ncenters = NULL, if (is.null(ncenters)) { stop("Parameter 'ncenters' must be specified.") } - if (EOFS == TRUE && is.null(lon)) { + if (EOFs == TRUE && is.null(lon)) { stop("Parameter 'lon' must be specified.") } if (is.null(lat)) { @@ -211,7 +213,7 @@ WeatherRegime <- function(data, ncenters = NULL, } } - if (EOFS == TRUE) { + if (EOFs == TRUE) { if (is.null(varThreshold)) { dataPC <- EOF(data, lat = as.vector(lat), diff --git a/R/PlotPDFsOLE.R b/R/PlotPDFsOLE.R index c7239c73..fc4ad76e 100644 --- a/R/PlotPDFsOLE.R +++ b/R/PlotPDFsOLE.R @@ -44,7 +44,7 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, width = 30, height = 15, units = "cm", dpi = 300) { - + y <- type <- NULL if(!is.null(plotfile)){ if (!is.numeric(dpi)) { @@ -168,30 +168,30 @@ PlotPDFsOLE <- function(pdf_1, pdf_2, nsigma = 3, plotfile = NULL, #----------------------------------------------------------------------------- nameBest <- paste0(name1, " + ", name2) graphicTitle <- "OPTIMAL LINEAR ESTIMATION" - xlimSup <- max(nsigma*sigmaBest+meanBest, nsigma*sigma1+mean1, - nsigma*sigma2+mean2) - xlimInf <- min(-nsigma*sigmaBest+meanBest, -nsigma*sigma1+mean1, - -nsigma*sigma2+mean2) + xlimSup <- max(nsigma * sigmaBest + meanBest, nsigma * sigma1 + mean1, + nsigma * sigma2 + mean2) + xlimInf <- min(-nsigma * sigmaBest+meanBest, - nsigma * sigma1 + mean1, + -nsigma * sigma2 + mean2) # deltax <- 0.02 - deltax <- (xlimSup - xlimInf)/10000 + deltax <- (xlimSup - xlimInf) / 10000 - x <- seq(xlimInf,xlimSup,deltax) - df1 <- data.frame(x=x,y=dnorm(x,mean=mean1, sd=sigma1), - type=name1) - df2 <- data.frame(x=x,y=dnorm(x,mean=mean2, sd=sigma2), - type=name2) - df3 <- data.frame(x=x,y=dnorm(x,mean=meanBest, sd=sigmaBest), - type=nameBest) - df123 <- rbind(df1,df2,df3) - label1 <- paste0(name1, ": N(mean=",round(mean1,2),", sd=", round(sigma1,2), + x <- seq(xlimInf, xlimSup, deltax) + df1 <- data.frame(x = x, y = dnorm(x, mean = mean1, sd = sigma1), + type = name1) + df2 <- data.frame(x = x, y = dnorm(x, mean = mean2, sd = sigma2), + type = name2) + df3 <- data.frame(x = x, y = dnorm(x, mean = meanBest, sd = sigmaBest), + type = nameBest) + df123 <- rbind(df1, df2, df3) + label1 <- paste0(name1, ": N(mean=",round(mean1, 2), ", sd=", round(sigma1, 2), ")") - label2 <- paste0(name2, ": N(mean=",round(mean2,2),", sd=", round(sigma2,2), + label2 <- paste0(name2, ": N(mean=",round(mean2, 2), ", sd=", round(sigma2, 2), ")") - labelBest <- paste0(nameBest, ": N(mean=",round(meanBest,2),", sd=", - round(sigmaBest,2), ")") + labelBest <- paste0(nameBest, ": N(mean=",round(meanBest,2), ", sd=", + round(sigmaBest, 2), ")") cols <- c("#DC3912", "#13721A", "#1F5094") names(cols) <- c(name1, name2, nameBest) - g <- ggplot(df123)+geom_line(aes(x,y,colour=type), size=rel(1.2)) + g <- ggplot(df123) + geom_line(aes(x, y, colour = type), size = rel(1.2)) g <- g + scale_colour_manual(values = cols, limits = c(name1, name2, nameBest), diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index cda320f9..07369a16 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -47,6 +47,7 @@ #' creator function of the corresponding device. #'@param res A positive number indicating resolution of the device (file or window) #' to plot in. See ?Devices and the creator function of the corresponding device. +#'@param figure.width a numeric value to control the width of the plot. #'@param ... The additional parameters to be passed to function ColorBar() in #' s2dverification for color legend creation. #'@return A figure in popup window by default, or saved to the specified path. @@ -69,24 +70,20 @@ #' xlabels = c("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", #' "Aug", "Sep", "Oct", "Nov", "Dec")) #'@importFrom grDevices dev.new dev.off dev.cur +#'@importFrom graphics plot points polygon text title axis #'@export - -PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, - toptitle=NULL, - sig_data=NULL,col_sig='black',pch_sig=18, - cex_sig=1, - labx=TRUE, - laby=TRUE, - xlabels=NULL, xtitle=NULL, - ylabels=NULL, ytitle=NULL, - legend=TRUE,lab_legend=NULL, - cex_leg=1,col_leg='black', - fileout=NULL, - size_units = 'px', res = 100, - figure.width = 1, - ...){ +PlotTriangles4Categories <- function(data, brks = NULL, cols = NULL, + toptitle = NULL, sig_data = NULL, + pch_sig = 18, col_sig = 'black', + cex_sig = 1, xlab = TRUE, ylab = TRUE, + xlabels = NULL, xtitle = NULL, + ylabels = NULL, ytitle = NULL, + legend = TRUE, lab_legend = NULL, + cex_leg = 1, col_leg = 'black', + fileout = NULL, size_units = 'px', + res = 100, figure.width = 1, ...) { # Checking the dimensions - if (length(dim(data))!=3) { + if (length(dim(data)) != 3) { stop("Parameter 'data' must be an array with three dimensions.") } @@ -97,7 +94,8 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, if (is.null(names(dim(data)))) { stop("Parameter 'data' must be an array with named dimensions.") }else{ - if (!any(names(dim(data))=='dimx')|!any(names(dim(data))=='dimy')|!any(names(dim(data))=='dimcat')){ + if (!any(names(dim(data)) == 'dimx') | !any(names(dim(data)) == 'dimy') | + !any(names(dim(data)) == 'dimcat')) { stop("Parameter 'data' should contain 'dimx', 'dimy' and 'dimcat' dimension names. ") } } @@ -105,12 +103,12 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, if (!is.null(sig_data)) { if (!is.logical(sig_data)) { stop("Parameter 'sig_data' array must be logical.")} - else if (length(dim(sig_data)) !=3) { + else if (length(dim(sig_data)) != 3) { stop("Parameter 'sig_data' must be an array with three dimensions.") }else if (any(dim(sig_data) != dim(data))){ stop("Parameter 'sig_data' must be an array with the same dimensions as 'data'.") - }else if(!is.null(names(dim(sig_data)))){ - if (any(names(dim(sig_data)) != names(dim(data)))){ + }else if(!is.null(names(dim(sig_data)))) { + if (any(names(dim(sig_data)) != names(dim(data)))) { stop("Parameter 'sig_data' must be an array with the same named dimensions as 'data'.")} } } @@ -123,7 +121,7 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, # Checking what is available and generating missing information if (!is.null(lab_legend) && - length(lab_legend) != 4 && length(lab_legend) != 2){ + length(lab_legend) != 4 && length(lab_legend) != 2) { stop("Parameter 'lab_legend' should contain two or four names.") } @@ -135,10 +133,10 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, # If there is any filenames to store the graphics, process them # to select the right device if (!is.null(fileout)) { - deviceInfo <- s2dverification:::.SelectDevice(fileout = fileout, - width = 80 * ncol * figure.width, - height = 80 * nrow, - units = size_units, res = res) + deviceInfo <- .SelectDevice(fileout = fileout, + width = 80 * ncol * figure.width, + height = 80 * nrow, + units = size_units, res = res) saveToFile <- deviceInfo$fun fileout <- deviceInfo$files } @@ -148,26 +146,26 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, saveToFile(fileout) } else if (names(dev.cur()) == 'null device') { dev.new(units = size_units, res = res, - width = 8 * figure.width, height =5) + width = 8 * figure.width, height = 5) } if (is.null(xlabels)){ - xlabels=1:ncol + xlabels = 1:ncol } if (is.null(ylabels)){ - ylabels=1:nrow + ylabels = 1:nrow } - if (!is.null(brks) && !is.null(cols)){ - if (length(brks) != length(cols)+1){ + if (!is.null(brks) && !is.null(cols)) { + if (length(brks) != length(cols) + 1) { stop("The length of the parameter 'brks' must be one more than 'cols'.") } } - if (is.null(brks)){ - brks <- seq(min(data, na.rm=T), max(data, na.rm=T),length.out = 9) + if (is.null(brks)) { + brks <- seq(min(data, na.rm = T), max(data, na.rm = T), length.out = 9) } - if (is.null(cols)){ - cols<-rev(brewer.pal(length(brks)-1,'RdBu')) + if (is.null(cols)) { + cols <- rev(brewer.pal(length(brks) - 1, 'RdBu')) } # The colours for each triangle/category are defined @@ -178,41 +176,42 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, } if(legend){ - layout(matrix(c(1,2,1,3),2,2,byrow=T),widths =c(10,3.4),heights=c(10,3.5)) - par(oma=c(1,1,1,1),mar=c(5,4,0,0)) - if(is.null(lab_legend)){ - lab_legend=1:ncat + layout(matrix(c(1, 2, 1, 3), 2, 2, byrow = T), + widths = c(10, 3.4), heights = c(10, 3.5)) + par(oma = c(1, 1, 1, 1), mar = c(5, 4, 0, 0)) + if(is.null(lab_legend)) { + lab_legend = 1:ncat } } - plot(ncol,nrow,xlim = c(0,ncol),ylim=c(0,nrow), xaxs="i",yaxs='i',type="n", - xaxt="n", yaxt="n",ann=F,axes=F) + plot(ncol, nrow, xlim = c(0, ncol), ylim=c(0, nrow), xaxs = "i", yaxs = 'i', type = "n", + xaxt = "n", yaxt = "n", ann = F, axes = F) - box(col='black',lwd=1) + box(col = 'black',lwd = 1) if (! is.null(toptitle)){ - title(toptitle, cex=1.5) + title(toptitle, cex = 1.5) } if (!is.null(xtitle)){ - mtext(side = 1, text = xtitle, line = 4, cex=1.5) + mtext(side = 1, text = xtitle, line = 4, cex = 1.5) } if (!is.null(ytitle)){ - mtext(side = 2, text = ytitle, line = 2.5, cex=1.5) + mtext(side = 2, text = ytitle, line = 2.5, cex = 1.5) } - if (labx){ - axis(1, at=(1:ncol)-0.5, las=2, labels=xlabels, cex.axis=1.5) + if (xlab){ + axis(1, at =(1:ncol) - 0.5, las = 2, labels = xlabels, cex.axis = 1.5) } - if (laby){ - axis(2, at=(1:nrow)-0.5, las=2, labels=ylabels, cex.axis=1.5) + if (ylab){ + axis(2, at = (1:nrow) - 0.5, las = 2, labels = ylabels, cex.axis = 1.5) } #The triangles are plotted for(p in 1:ncol){ for(l in 1:nrow){ - if (ncat==4){ + if (ncat == 4){ coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) @@ -251,21 +250,24 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, if(legend){ # Colorbar par(mar=c(0,0,0,0)) - ColorBar(brks = brks, cols = cols, vert=T,draw_ticks = T, draw_separators = T, + ColorBar(brks = brks, cols = cols, vertical = T, draw_ticks = T, draw_separators = T, # extra_margin = c(0,0,2.5,0),label_scale = 1.5,...) - extra_margin = c(0,0,0,0),label_scale = 1.5,...) + extra_margin = c( 0, 0, 0, 0), label_scale = 1.5, ...) - par(mar=c(0.5,2.5,0.5,2.5)) - plot(1,1,xlim = c(0,1),ylim=c(0,1), xaxs="i",yaxs='i',type="n", - xaxt="n", yaxt="n",ann=F,axes=F) + par(mar = c(0.5, 2.5, 0.5, 2.5)) + plot(1, 1, xlim = c(0, 1), ylim =c(0, 1), xaxs = "i", yaxs = 'i', type = "n", + xaxt = "n", yaxt = "n", ann = F, axes = F) - box(col=col_leg) - p=l=1 - if (ncat==4){ - coord_triangl <- list(xs=list(c(p-1, p-0.5, p-1),c(p-1, p-0.5, p),c(p, p-0.5, p),c(p-1, p-0.5, p)), - ys=list( c(l-1, -0.5+l, l), c(l-1, -0.5+l, l-1),c(l-1, -0.5+l, l),c(l, -0.5+l, l))) + box(col = col_leg) + p = l = 1 + if (ncat == 4){ + coord_triangl <- list(xs = list(c(p -1, p - 0.5, p - 1), c(p - 1, p - 0.5, p), + c(p, p - 0.5, p), c(p - 1, p - 0.5, p)), + ys = list(c(l - 1, - 0.5 + l, l), c(l - 1, - 0.5 + l, l - 1), + c(l - 1, - 0.5 + l, l), c(l, - 0.5 + l, l))) - coord_sig <- list(x=c(p-0.75,p-0.5,p-0.25,p-0.5),y=c(l-0.5,l-0.75,l-0.5,l-0.25)) + coord_sig <- list(x = c(p - 0.75, p - 0.5, p - 0.25, p - 0.5), + y = c(l - 0.5, l - 0.75, l - 0.5, l - 0.25)) } if (ncat==2){ @@ -284,3 +286,143 @@ PlotTriangles4Categories <- function(data,cols=NULL,brks=NULL, # If the graphic was saved to file, close the connection with the device if (!is.null(fileout)) dev.off() } +.SelectDevice <- function(fileout, width, height, units, res) { + # This function is used in the plot functions to check the extension of the + # files where the graphics will be stored and select the right R device to + # save them. + # If the vector of filenames ('fileout') has files with different + # extensions, then it will only accept the first one, changing all the rest + # of the filenames to use that extension. + + # We extract the extension of the filenames: '.png', '.pdf', ... + ext <- regmatches(fileout, regexpr("\\.[a-zA-Z0-9]*$", fileout)) + + if (length(ext) != 0) { + # If there is an extension specified, select the correct device + ## units of width and height set to accept inches + if (ext[1] == ".png") { + saveToFile <- function(fileout) { + png(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] == ".jpeg") { + saveToFile <- function(fileout) { + jpeg(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] %in% c(".eps", ".ps")) { + saveToFile <- function(fileout) { + postscript(file = fileout, width = width, height = height) + } + } else if (ext[1] == ".pdf") { + saveToFile <- function(fileout) { + pdf(file = fileout, width = width, height = height) + } + } else if (ext[1] == ".svg") { + saveToFile <- function(fileout) { + svg(filename = fileout, width = width, height = height) + } + } else if (ext[1] == ".bmp") { + saveToFile <- function(fileout) { + bmp(filename = fileout, width = width, height = height, res = res, units = units) + } + } else if (ext[1] == ".tiff") { + saveToFile <- function(fileout) { + tiff(filename = fileout, width = width, height = height, res = res, units = units) + } + } else { + .warning("file extension not supported, it will be used '.eps' by default.") + ## In case there is only one filename + fileout[1] <- sub("\\.[a-zA-Z0-9]*$", ".eps", fileout[1]) + ext[1] <- ".eps" + saveToFile <- function(fileout) { + postscript(file = fileout, width = width, height = height) + } + } + # Change filenames when necessary + if (any(ext != ext[1])) { + .warning(paste0("some extensions of the filenames provided in 'fileout' are not ", ext[1],". The extensions are being converted to ", ext[1], ".")) + fileout <- sub("\\.[a-zA-Z0-9]*$", ext[1], fileout) + } + } else { + # Default filenames when there is no specification + .warning("there are no extensions specified in the filenames, default to '.eps'") + fileout <- paste0(fileout, ".eps") + saveToFile <- postscript + } + + # return the correct function with the graphical device, and the correct + # filenames + list(fun = saveToFile, files = fileout) +} + +warning <- function(...) { + # Function to use the 'warning' R function with our custom settings + # Default: no call information, indent to 0, exdent to 3, + # collapse to \n + args <- list(...) + + ## In case we need to specify warning arguments + if (!is.null(args[["call."]])) { + call <- args[["call."]] + } else { + ## Default: don't show info about the call where the warning came up + call <- FALSE + } + if (!is.null(args[["immediate."]])) { + immediate <- args[["immediate."]] + } else { + ## Default value in warning function + immediate <- FALSE + } + if (!is.null(args[["noBreaks."]])) { + noBreaks <- args[["noBreaks."]] + } else { + ## Default value warning function + noBreaks <- FALSE + } + if (!is.null(args[["domain"]])) { + domain <- args[["domain"]] + } else { + ## Default value warning function + domain <- NULL + } + args[["call."]] <- NULL + args[["immediate."]] <- NULL + args[["noBreaks."]] <- NULL + args[["domain"]] <- NULL + + ## To modify strwrap indent and exdent arguments + if (!is.null(args[["indent"]])) { + indent <- args[["indent"]] + } else { + indent <- 0 + } + if (!is.null(args[["exdent"]])) { + exdent <- args[["exdent"]] + } else { + exdent <- 3 + } + args[["indent"]] <- NULL + args[["exdent"]] <- NULL + + ## To modify paste collapse argument + if (!is.null(args[["collapse"]])) { + collapse <- args[["collapse"]] + } else { + collapse <- "\n!" + } + args[["collapse"]] <- NULL + + ## Warning tag + if (!is.null(args[["tag"]])) { + tag <- args[["tag"]] + } else { + tag <- "! Warning: " + } + args[["tag"]] <- NULL + + warning(paste0(tag, paste(strwrap( + args, indent = indent, exdent = exdent + ), collapse = collapse)), call. = call, immediate. = immediate, + noBreaks. = noBreaks, domain = domain) +} + diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 9bc14ca1..22b762b2 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -19,10 +19,13 @@ CST_RegimesAssign( \item{ref_maps}{a 's2dv_cube' object as the output of CST_WeatherRegimes.} -\item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or -the maximum spatial correlation (method=’ACC’) between the maps.} +\item{method}{whether the matching will be performed in terms of minimum distance (default = ’distance’) or +the maximum spatial correlation (method = ’ACC’) between the maps.} -\item{composite}{a logical parameter indicating if the composite maps are computed or not (default=FALSE).} +\item{composite}{a logical parameter indicating if the composite maps are computed or not (default = FALSE).} + +\item{memb}{a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). +This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'.} \item{ncores}{the number of multicore threads to use for parallel computation.} } @@ -40,9 +43,9 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ -regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) -res1 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=FALSE) -res2 <- CST_RegimesAssign(data=lonlat_data$exp, ref_maps = regimes,composite=TRUE) +regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) +res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) +res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd index 4ffb3c4c..a840c595 100644 --- a/man/CST_WeatherRegimes.Rd +++ b/man/CST_WeatherRegimes.Rd @@ -7,7 +7,7 @@ CST_WeatherRegimes( data, ncenters = NULL, - EOFS = TRUE, + EOFs = TRUE, neofs = 30, varThreshold = NULL, method = "kmeans", @@ -21,6 +21,8 @@ CST_WeatherRegimes( \item{ncenters}{Number of clusters to be calculated with the clustering function.} +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} + \item{neofs}{number of modes to be kept (default = 30).} \item{varThreshold}{Value with the percentage of variance to be explained by the PCs. @@ -33,11 +35,9 @@ For more details about these methods see the hclust function documentation inclu \item{iter.max}{Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected).} -\item{ncores}{The number of multicore threads to use for parallel computation.} - -\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} +\item{nstart}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} -\item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} +\item{ncores}{The number of multicore threads to use for parallel computation.} } \value{ A list with two elements \code{$data} (a 's2dv_cube' object containing the composites cluster=1,..,K for case (*1) @@ -54,8 +54,8 @@ The cluster analysis can be performed with the traditional k-means or those meth included in the hclust (stats package). } \examples{ -res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = FALSE, ncenters = 4) -res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFS = TRUE, ncenters = 3) +res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) +res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = TRUE, ncenters = 3) } \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). diff --git a/man/PlotTriangles4Categories.Rd b/man/PlotTriangles4Categories.Rd index 14ab5114..6e95df38 100644 --- a/man/PlotTriangles4Categories.Rd +++ b/man/PlotTriangles4Categories.Rd @@ -6,15 +6,15 @@ \usage{ PlotTriangles4Categories( data, - cols = NULL, brks = NULL, + cols = NULL, toptitle = NULL, sig_data = NULL, - col_sig = "black", pch_sig = 18, + col_sig = "black", cex_sig = 1, - labx = TRUE, - laby = TRUE, + xlab = TRUE, + ylab = TRUE, xlabels = NULL, xtitle = NULL, ylabels = NULL, @@ -34,28 +34,32 @@ PlotTriangles4Categories( \item{data}{array with three named dimensions: 'dimx', 'dimy', 'dimcat', containing the values to be displayed in a coloured image with triangles.} +\item{brks}{A vector of the color bar intervals. The length must be one more +than the parameter 'cols'. Use ColorBar() to generate default values.} + \item{cols}{A vector of valid colour identifiers for color bar. The length must be one less than the parameter 'brks'. Use ColorBar() to generate default values.} -\item{brks}{A vector of the color bar intervals. The length must be one more -than the parameter 'cols'. Use ColorBar() to generate default values.} - \item{toptitle}{A string of the title of the grid. Set NULL as default.} \item{sig_data}{logical array with the same dimensions as 'data' to add layers to the plot. A value of TRUE at a grid cell will draw a dot/symbol on the corresponding triangle of the plot. Set NULL as default.} -\item{col_sig}{colour of the symbol to represent sig_data.} - \item{pch_sig}{symbol to be used to represent sig_data. Takes 18 (diamond) by default. See 'pch' in par() for additional accepted options.} +\item{col_sig}{colour of the symbol to represent sig_data.} + \item{cex_sig}{parameter to increase/reduce the size of the symbols used to represent sig_data.} +\item{xlab}{A logical value (TRUE) indicating if xlabels should be plotted} + +\item{ylab}{A logical value (TRUE) indicating if ylabels should be plotted} + \item{xlabels}{A vector of labels of the x-axis The length must be length of the col of parameter 'data'. Set the sequence from 1 to the length of the row of parameter 'data' as default.} @@ -90,12 +94,10 @@ creator function of the corresponding device.} \item{res}{A positive number indicating resolution of the device (file or window) to plot in. See ?Devices and the creator function of the corresponding device.} +\item{figure.width}{a numeric value to control the width of the plot.} + \item{...}{The additional parameters to be passed to function ColorBar() in s2dverification for color legend creation.} - -\item{xlab}{A logical value (TRUE) indicating if xlabels should be plotted} - -\item{ylab}{A logical value (TRUE) indicating if ylabels should be plotted} } \value{ A figure in popup window by default, or saved to the specified path. diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index e2307b89..d578e5b2 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -18,23 +18,26 @@ RegimesAssign( \arguments{ \item{data}{an array containing anomalies with named dimensions: dataset, member, sdate, ftime, lat and lon.} -\item{ref_maps}{array with 3-dimensions ('lon','lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching.} +\item{ref_maps}{array with 3-dimensions ('lon', 'lat', 'cluster') containing the maps/clusters that will be used as a reference for the matching.} -\item{method}{whether the matching will be performed in terms of minimum distance (default=’distance’) or +\item{lat}{a vector of latitudes corresponding to the positions provided in data and ref_maps.} + +\item{method}{whether the matching will be performed in terms of minimum distance (default = ’distance’) or the maximum spatial correlation (method=’ACC’) between the maps.} \item{composite}{a logical parameter indicating if the composite maps are computed or not (default=FALSE).} -\item{memb}{a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'.} +\item{memb}{a logical value indicating whether to compute composites for separate members (default FALSE) or as unique ensemble (TRUE). +This option is only available for when parameter 'composite' is set to TRUE and the data object has a dimension named 'member'.} -\item{ncores}{The number of multicore threads to use for parallel computation.} +\item{ncores}{the number of multicore threads to use for parallel computation.} } \value{ A list with elements \code{$composite} (3-d array (lon, lat, k) containing the composites k=1,..,K for case (*1) \code{$pvalue} ( array with the same structure as \code{$composite} containing the pvalue of the composites obtained through a t-test that accounts for the serial dependence of the data with the same structure as Composite.) (only if composite='TRUE'), \code{$cluster} (array with the same dimensions as data (except latitude and longitude which are removed) indicating the ref_maps to which each point is allocated.) , - \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), + \code{$frequency} (A vector of integers (from k = 1, ... k n reference maps) indicating the percentage of assignations corresponding to each map.), } \description{ This function performs the matching between a field of anomalies and a set @@ -43,9 +46,10 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ -regimes <- WeatherRegime(data = lonlat_data$obs$data, lat=lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4)$composite -res1 <- RegimesAssign(data=lonlat_data$exp$data, ref_maps = drop(regimes), -lat=lonlat_data$exp$lat,composite=FALSE) +regimes <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, + EOFs = FALSE, ncenters = 4)$composite +res1 <- RegimesAssign(data = lonlat_data$exp$data, ref_maps = drop(regimes), + lat = lonlat_data$exp$lat, composite = FALSE) } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd index 22cc4f08..812585ce 100644 --- a/man/WeatherRegimes.Rd +++ b/man/WeatherRegimes.Rd @@ -7,7 +7,7 @@ WeatherRegime( data, ncenters = NULL, - EOFS = TRUE, + EOFs = TRUE, neofs = 30, varThreshold = NULL, lon = NULL, @@ -23,6 +23,8 @@ WeatherRegime( \item{ncenters}{Number of clusters to be calculated with the clustering function.} +\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} + \item{neofs}{number of modes to be kept only if EOFs = TRUE has been selected. (default = 30).} \item{varThreshold}{Value with the percentage of variance to be explained by the PCs. @@ -39,9 +41,9 @@ For more details about these methods see the hclust function documentation inclu \item{iter.max}{Parameter to select the maximum number of iterations allowed (Only if method='kmeans' is selected).} -\item{EOFs}{Whether to compute the EOFs (default = 'TRUE') or not (FALSE) to filter the data.} +\item{nstart}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} -\item{nstarts}{Parameter for the cluster analysis determining how many random sets to choose (Only if method='kmeans' is selected).} +\item{ncores}{The number of multicore threads to use for parallel computation.} } \value{ A list with elements \code{$composite} (array with at least 3-d ('lat', 'lon', 'cluster') containing the composites k=1,..,K for case (*1) @@ -59,7 +61,8 @@ The cluster analysis can be performed with the traditional k-means or those meth included in the hclust (stats package). } \examples{ -res <- WeatherRegime(data=lonlat_data$obs$data, lat= lonlat_data$obs$lat, EOFS = FALSE, ncenters = 4) +res <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, + EOFs = FALSE, ncenters = 4) } \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). diff --git a/vignettes/Figures/observed_regimes.png b/vignettes/Figures/observed_regimes.png index 404a94720840d54a671f9186a783b867887a7e35..1bb134a108ea158a23e743b3d4d0ca94634ff47e 100644 GIT binary patch literal 41063 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 literal 263072 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 z®}AO7%NfrP&pk*F(6Nhq#RA`z~6xGJ`i*p^;VbL~g+jsZq*3QAII=-nxD#0msK zSP0JHv%6X3bO#pTrve5C2t;ng?>h{~NZX+)C;&CYIq1m~_(EYKoB4)T5yhn4tSpvC zqSeq?BP;<2|IRA-!J-Gz%1gK$TLQ(9Oc-FKq(LAcJJw)ILIVPUV8#^pii&awhTTSu zaBy@C3<%)V)upGUo;%}r@6PR{!~_jZEhlG}g-e!-doXlbO>tr2S>J7ZpSC*HlYiak`*;{!0;&AG= ztXfJUk?*|<(a`=wlTD^bU4HNs08my^{534}bLhKMhxXub_%&O1jh`~DdCx~Sn?1(f zvbw4g06?KgE%w=HVs4TCD<$l0FdB_Hap`)e#;T)laQ6DW%}YFs`TX3R>?XhU#>mOb z-@5-`;rw}S<0mL7D}RrU%FoT2KFVd6?SsG= zX;`_~FWxQg@rWEek%TAqob;ka>UjLc{!hs`Oz4gUItqU@fRiF%pKX{804T0zyidq@ z7oWa6;5{CV+U?;w-OdczY-y#I!?WCUrh-um0H6}E8^$|YXelQblm*45Vo=B%%iKFP zFau?|`>UtTJ^QFwK+i6(ZvBP>WC=Kbcb64UKaMugP$Usz3(N9q=o40ySVf`A)uTI_|8C95r{rjxsLz= z(A?&PfFLs*(F{j)ladReRc3N(-_t8IIkgH%GzEbqz=$#)r;y9h!{9e7YAT^H0022s zuVrfer3i(>DHGfxBO)xVtV%u>pE~o;{d;%bhrC<0c3pZ}>Y@F=rAhY#p6KZ6ihDc( z4<9UBvJ!X48{}|a~CzZ;I^6^fChL3SOaJm=T!FLlPiPU3J!1XjOORB4@N7|U{ z8=36(J=KQ3OHM(tzK z0ajgnL>@I}?Alc;H*eeSI($TVSs6u2szu$J!w|=hUnAzuoKBWSzglein-~(;-kJ^c^56KDEcl&e+y~`W@-jz^cpwFrEVONppU`p%l*3~$QB3+xOLTh9!tQdB9Ph`9KID9n}m+QX4e{-n3k25 zMSKfaQ&ZQ{)_M5&DFnmyPn8yy18r<=(I_+mfsm0EV=L#HnwldA_lJhOt0*r&cHyd- zrBxHz(FmLVEGE;$+=9pBvREu65>>CUlF%+qJvmdSPP=^Lrj@l# znA+N&H8nN6w{Ls-{3!~JzWXr1)U5ygyLVPBSwtd{YHMrf%=28a#z#d(wX~#U`Qn8| zMTJ*y-Vu5K+6INC2zmSR*{=1gS8Uume#-O*H?RJP2tVj|K~s*>{nItK;#8IvubnoU zL93CHk)zjC&0M~I+^iN1aGmAva_Mx9PNhrt7Jb2`!(-7alfTwv#8$+I!ALZZ&A^al zb*F5g==Q?0Dx)AZBj6YUgIBN~Bc*4FB2t_0QERFf}r5nuK)noZ{Hm~wuR87?jVjL2LKQs^L_KmB{fx*EEaR+#%*&J zE>$3)x_`RHMGm``g+^l_7-li(+q|YQX|z55_Y_q-dYNk*Ns-e>==CCpS4&U4xRzH- zmo~Cjuo^8C3K#`x<*^~OtTPJ#*H9UY-l9h6O zyQZasx%*=AHFEu5C~}(j$q9%^TzK&b8IP^ya8;!#Bpe2YASnViz-NYN#{DO3E)RyF z7Tbn4hQ}AoKmRx^DU(*qQIRGuA2CQ@Nv5!ht|2GoV4&F~Z>@sGKKVH|=vS__n!^5( zgZKjB&!Y19;){#`LA8WkrX){q=$=~ z>gwtVV@B0fSC1SsX7=29d_MnYY;3^82VcK@e)9a4t-W~LuQh%`%Sun(xNIRBgN^$h zdHeYrGmC+(y(%pwdHKBQLxv7tv0)3DB1RR%-%h9dmXs6~6{@PLwXyIwVeIH%DalI8%F|}dTCsXfYr7$l$hGS?a_Tts z3w+0q9#+@TP*qin`Tl*5r{|h=8yfE{D<^mO*okes_UzuiZHTS)B=;$6H*9hpJ^}zx zTg&o0dGdts5p5kEzke>Ms&`S+(DRrMu)K8dv74if@3|}DaGr$(-aol@H2?sKLLreT zRc*bacV1AWWkh}=3IDV3+04@K!8PeWm_-=?fTFKYioQMp03dNhbDt}mnsTg6kE$XO z7y_dpRockTV%>GDOk45j>5qIBZ6{by_v*2+{f`ixQLyI5%it}ZQUolOfRiENv&*XH z{S#oT*Of4sk{U))6oj)N*+j zA`;Gg{i#VM`;N6&ArnFVUoaH{0MI~Sm*G|SGqdO6luWzV#id1l0mcVV0RVsj1Oq?? zsEI%k3nW@B2_l0=quslG>too5#DsVNfd7T_{uj;z04Nm7m&or$MTMF@Xov>@5QyZ& zpRvv(M!ozT-L@BhyU+3&p57u4T>f96ts>`pbkubBNykq4Sq`+S-}30e{Vf~TEm*W< z#cH1xUlJAZEk8e>NF+ANJ^T9k^9kQ0QIQey3JQgVg;)$`h?BFO{op}%c1Fe~jk_1! zzW*@z^{cqJn8bv5&sj5O%%0O)gqpF5>6II|HmqIqAtVGwAa35dub`-yo0C0mdXdrbx-i#fE?U77`?*pm^v;pg7JVL97V)JP3lJ-tG?8oVw~# zTGr2!$d|ONp8x<^^PwoB6sst+wlr6J;wot)djJ5M)N>UzvoJmF;b90s7%6#GmsxFB zH~;_$f-zKuo*CQ!4$&C}laJpyHE--doqs?72jTJSZv`zLX1!)i%hRh7>3Mk-G!how zB=_udO3u;epCU8z6)42QN*V@*bT-zu@2767uWq8I05`g3K3F~Nb!=*Ec2PoJ$t=Hz zvxk_s7NKUUrf_rl6rUTf-X~uK@su2AU01`8)oWNH78d01{8inLZ%m z0U{r;vjK|$5N@D1yS7W{8eF~rh9E@Wi+9V<&kO(Z<>vLP;a|Q0047iIkd>25N=Qge z{dM&C$x&m*0ss^gd+tvzIpOD)RZAcUQc_V}vSvfOX=5-9_u16nK2BRjPJQjcWH8R2 zKBcInbjAN-MS1z{2alRKb{aT!;+X%1^M*#onHd>Tk&#=r@2KDYCg}C*70cFb+0W(ON9V^dSt;UiR4)l^m0RMb=z6_t=k zqiDS3=xM`?LVMW>l!c& z0RWh6&gs|TN>tLNkf?Gx>*1Q|O&mK79Dn)c!rMqAHTjI<%E4G?b|1S23v{k}`)FYB?Ec zZMYqDFfi=2=U6lK7M^&}NW_`>f9RPtIVMN~&$$8WKR`FtWF6i)CPxA(Ai(BMpnL;DG>812{E+;{hQS^tpMNj?OxiYiMfC_4JzS=>-7rS-Ch;;vr|#LYy}rl+0E`*uHfEe#$3C<^gqQciS+nQt*|p=U|3xeo^ZMmWO)afcXZ~p; z8LzV>M1_ypNty10Ogx<|TMJT4 z$SXM$6#il70(Dub(8SDb_ue)XImrcOVpluhg$i+j~aLQCY6Z0zSO-8446?V6fN;6DNg*zTdxRcRvFI%Yjy?_F@}4#q_0X zZ=O0d!hNO)k10WX;HBlwr!1|^O3sh{g2LjReUA0^h<=mz_BsFng5lIV`|wKI1SK5^ zfnrw{%Jz3|!{y%t&~uZ7LV=QfM|G-fdNl+=w4xk2y`IZO_+Mbt_#vCdcc`0cT5*Mi zmWsNp6qheJ`ux+V0l%MM%+wVheM@NVg{M8oHhewZ-YmPUN>lFlN;Lw87P(qavNm?y zb;;}e<3+C4UM`k!2PDB5B*Mei)Rp@C={&!N@%mTJm+Yd0q2Dc3OM zDSQ)`P9hQ??O)s5Bl^veg9iWr2pHk*IoH_4#Ms0XjlpDRWlo&z-r&OM72>`}3Hbb3 zULBo2uCAv>33=5;OHa}@K-Kd zvj5N#QhRNH8do?Cz%V>`$PfodC%==&Lqpy<4|VmJHl5hX1U)r%jioDA0sv?<+KZ=w zMMZ_4InCLlsX5h=$9jT!D8df%gUcG&9X==1{&%V|yOkHEcOt+M{ zXj|9O?e8j~&tNdjLnst{y|g#y+uJ&N4VEl=wP6`rL1c4lMnZ1jOa)O)z{EM;Cu+`yBJv$ zuyV#oQR*QBL2(JF(*~jsWS1a57P?vqgu-Q4oSbE$uY*T?yEarZnLK0moQ7}xPM%0gOtiAH&d$mTd>k;zeM;93D?++p;~|sD z76YxeZQf{TY^|vI^w?Qns2AJ zx+3G#3mu2CU8ryxTsopP=RgRg;vl!u=pda*K8llC2u|eH(jf#AffkqLqcv(WVz|s2 zCA*0&{Aae%1*kHlxi0i6t-t!IFiLGnHGrM~_z zKgGQ|wgs>GJ1YVWz`Jw%rtdguy76qn?c>tqPE3b!vQhv5G9>&3?+HR7*!3_ZB0cX_ z%&*j<@}slbpFe8uUZ_mTAz{!SX1~J>&VNftDXX$jk;|#3zevt@GiqAoH#bgn%B53p z)#zHHbO+5j000~WYa*}#>@sCMh6;=9K|&4SY5;F2_-iB;U2x!lE}3xpjsvGL4ga}C zin0kIRCgO8g zb!ElOR+e#^_bRMMM$arIG5$+jvXYvn7zZah#CproiTIn&mQx#4VAPD?Ax#so?4dJHY?6$oE0?<+S8Uyf507-;-1`>J(C0VNPirE?YCA~e6 zKPW9JQB+i_uBvL-!sGFt1wIi9g)|y%h^_Ul>(_dIR1gGVu(-L4mUSu`m&u?@$;c_H z{C!5g-ld1yY;ic8nwlE>!5tD?x6L3syFL349yz!_Ix<30S=rIaSw~l|ysXT^(h`Hk zW~8TUX=`^%az-YT*R0zx-+K{*L2r^e{dYkolQ(VMzH{4_h4VcXl@zZ$e%<13zY-G` zOq;lR^Nz_gX19I7S|;O5@N>V%Az~P;1hHc{Vw&NIX}vv)-&7`t*QEbI;7FXB($qV9 zxhxtG@BswZWW->lm0%2xLo3e-x+G^Y9EtDI2Im+lc|l#vlV@!}E6SxPY4)8^2MLYg zaCy}XrlYwCbSZZF>IbF`KM?pKGCg03N^&;V(p8ixqcJVDRj?>zdU1uef^?@OXCw@I zxt-Y@3j-#H+az`R?*a$GV=yvL*yY!1izpCsHKFC1#{z!cEl^+$qzu}#*>Hg%6R_NY zk{AXnLF_D>JaXA&QL5#;N$~4eAH%|=q@)T83cNk%R#jH=csv+}KYa|-(9|Lj2t|d3 zdv@*cm_CC_?NLRyl8PFO$>{8>3bQj*wRHMmLx?_3PZT+HI^ApTYy(5Xf!5X{IiUCA zB`&VR;(x}arT#j7;&^d!F$}}TCMI_FgSTzoxMKC19lQ5-_Lvk3g+dY8TwQOWt)p}E z?tKP>p`)g3Z>T8{2zKt>=Q3d`8jWEwng1L+^z^~q>Z(c@fiP+>r%qcM_bwvD*wk#0 zY138a)|ONIIHFbW^qBaq4Hc7^5~v#xZMrm!Kq7ENKATzg<1LyZi<8#?0zQ{TS0CZU z$V;wHjnbaDnxfsmhbtTa0E#HhWmW^Bu<=SxYbvz{Qr_G*5Je67zpPRN06-{o7qn_^ zLu1y?+;z%GOV!4><&HOP(BfcLE;JZ5YFPA_uc<}l$6tOau4cdxWTK`p*g#{`o#54@ z?e=)Mwsyc)#Xl)Ih1fj#;kP;9bH`=U0ndc`b}E^0C{=2^JmX`_VkIevP$faA0j!$-wTmQ+yC5+*1WJ@KhV=*q0!DQONm@?iNB&WW_nL>#BQ`q1-f3vJ2ip~-sM1s!ne?QeddBVdL}>tv!=pOZ;h<9p z1%m3za;mJn$dBAd5O0xFRaG_6+Ip4GT3tPTS4Rg84Gji^(b-hAj-aNd{`SMiTi35$ zz3hM9|4PGl9*?(u^G10Eg;hT5+Sagfx!jK*LiG&{)czA~WoOQr%VaY0^YWdCx+>}z zR996B0f>qGcK4dUv6=as7l9B2oQ98*l~Xu>;>e4~55kkP5lH0I2X|jQeyFOhVPP{U zEhYKGo7dL@Ui9``kDEtO+0J{brjk6J#U_a%rddsf61H=}^{^QK_tE}~e@9mE_<~J$gB2*mwPOdj ztzqK{1fR2u^kgV1l>b6jvMq{IClpo*xrPXWG6KUC@&OQjWik>0T^3+60Sf|<2EgF} z;s>Zn1I&3q4F(_;Fwy{v43LTdQwcaZpmrQk=Df}jCbHa;FBEgf9&MADM&he++U z_>2mBmzkXK(Es%NXAitL?vYpN#O<<{$v~ko@ljvzo;|kJ@9MYrK~mB(WGU%)Pw%7A z*vPQA<;8_tPhYWi>Q+hFXAy6a)3{TO=Yj?A-UPR8i0>xv-oEi(v{+u@_f_)X-aTO- zLW>FujZI94j~vy;YrlN@G|hbykx0Dz@bMr!JMj&&XCM#=Yu0V3|GJdLQ`gc40Q9#Q zIB)TCK9BeI)${KW;frRtSC*F{QK%h~%F=$u1zez)<_iUaI!4W-6{GrD4W?C;a@e&v z64}Jwb z8dWKKABTQO%qpy+nW`y_G;d3>6P{B%@4-6)8g+HbP;0fn{>dH#!6PugLlooy3IMyywluvi0i~@^|4QiY8pfeg(@Q-`}O0Z(e^S5 ziv9Xqdam0ctI*bcxt7UDiTi&0%+cb!Y=J;PudbTsJiy#;NM%_GyOu>FOIbS)_w?Cz zV(Y57Z=Wp&J0p?*!HB7zyP!;%H2KcW8?>5g@mXKY`uBhKG;rF?Sq)nrKDbv_TIx1o zqP;^qN}G%4|4~s@Eh;Sf^7+$$pvY-Vvp{O(NVkb2-6kRsaPafMJ;(eUT!zI)MXZ=V zYu|}8|J=L}0JwbiR9bRUYZXq9B?I$`~C~J*7crX6h6;@>ln_kT*D`b=v zLNF|+Yuay^N8`itxtyYe2zp6g-uJMwj06MQyBs(@iMz|7>#si4Fql$A(KKCYZb+~&H+`0v?m2sE zeeg5@;QrU2r8MRQD& z8mug400RIBV3);k=`(N&Mo2;kjTQ{boPf+IAP)eD1++@Q>GcYyo8Fsx{xc4o2HLga zh{S;t9ub+CoI)ZJ>o|4xwu9<7cFKfPPh*2kRdqEEkFO{z3kiCeo0)O`dSWpB{2qLcI44TRzYdumVH8@F!<5!+h>kurXGT;M?jd2H(HIe2O6rLS4?lDIBpQtd0OaQ6;0b@+&w@fiF=&j8Y&#c@ zun(ar$;tZt42lX1ulQda>o&f53if}GDYNF)vRE6JEtFSOEGa6Ik(2)s`7P?}XWJo8 zmE~nsl@+}`KncBxyq=l!8sD#%_R44*qY0vE?$&R{j$gO;6nzb>{}!*H*>BcPdQMWW zS2(|cAbpofcxn0YOM7X>xsEFip>PC}yjo?>FIDrwjFN&!D@RZCeS$z^7^MYip@CSE z)bNe}MBh7=|Knp$)cgFH&y~4p6eSG^fvhRWq!s5fD~gdAyqvCymi;KlRYx#HO1nt| zI_B0({qEe@u_EmL6&V$E0gspb?SuRJecEQd*`oWeLrY1X#;l#V>1g<+{TR`O;D3$( zb^PuN3ajv8Cq z^uQ+|ZbVt+96x&a`jsn>pTDe+1ZV=4O1*UT`i8Y@P-sy)3pF$~)ipF&ELKf*bseWp zRrQZa0%hf<{S%t=Cg}B!t(%89IoS_(SifoW<%<_Kt@FA2FaV4D?@Vg8h>pI&Zr{_} z4*JGMM?HOT=gGa>{(h+dfR|4mYG~=~@;%kt1C-FKK#;1%5C}%-IgJ<9Au&`1E~|#5 zZbZ*b0sx>$(tHkEqb01>001BWNkl(_#0gsE7Rut8!nxkqyc+!byf$Jw1 zCr2w9S&iL)yMB93L1s;1HUfYm+-(2S`ttl-o&CAUHmGJHPeMyni zgo8Jp_&*B?ILXtU4}NO+lvdPgSJb zpAHC$P2F`r{fenfP5C89mK5q1sJiQ z1^|!-m=u6=1b=bMAPLMn?hwPipF5gZ0r$;_Ae$vf#BVfdlVVj zHvxCaQq=gUuO5q5RTLNHXJ=$2{tSL}OH$C@(kC(`MJ!cB(#Ev1HL?kEwO+x+znq0RUdVd=VS-8x#s{WovI`Yrk>#!I0N4h-9*j{SXpaG&A=S{%Rlyc0c_R7M)I)T~#dLu<5x; z0D_P>5{4qnp;Z87VW+xqW<5WP#Nu@(uM^d%no~!w`Fwu6P$0lj{&<9?sAyAEw43h_ z!LX9CwSdpFn7Tq*(?CkK={_750|*7V-#?TjeNUI6$ZKfJtLup1O~u#E@i|J1|Qw2sT0YG(=nc=018CcEfNaQOOh4k8?9 zp9KLRT?Ebvz;=L|1z2bRs{kxoqe}3crQCuCIkuwRBar^`zw#H1rG_u7|l9seU`x!7yT^$80$z zm3{sXv<*$_f5hc*AoxGhkXK|yj-I~$od=JG4r@7|AtgEa;k~#CAM44$BmpwNm==K-hAFTdjh+TBc=fW z0A7CmG00dShM|u458-5`AYk}uRPwGV|Hjwu@o-g@rmVmHdaQ+kp^6-6$vDvkmrlDD z9UwZFPCXs>>VW@uzgU2_{_qlLb)7m|PtqOZ4d|-(rk-AR;54S=Zk*;;90rp~z~h_D zLDW|`9k=4N{lsEoZlR#4v~cx0OB=hC#Ge;W9S?c^A}};usl#pGW1}O3p9c9D%5z+YdkxnJQh!Vqvhj+h3BJ`$t5px9TRXea;=cZHcVN>1SZj znvaFc5@V-7EDo3O^XC8)!ygIBn2ycAvU}{0?^CD$ zyGV*aAW&$ui-X<0fG0y7oy0d_2@?7U0uJZl@{v+%x^?twJ?9C=W9EqCEWA2)Ev*6o zkZ@rQpUos|n;Ux_>69S{MxqgD93wxaIxU)_GXR1+HHY3lUoP&d%t-}8p{$Ncrz)Jr zh{LXMA4MjJaiRo^LH|t8(f3%H`oOQ=rPD6g!(z(m%*i$;-?Iv) z+yC3F42B^z0x@{Ug@Cm)os3#=21}6eAA`+iYZ>-8HZrWJsPLRK%V)(>ah#==#VRi^ z0|3mOIGRDHS=kNtzyG9Dh8!#ohbIu?W4?b4dv9Ye`ozleKU(rRXB|a zfA{*si-5%M5%S8a?hBSvW##*sS-{OS(n5jYXXG?}Wl$V#7v-SIi(7CfxVuAehXBDX zxVw9BcXxLU?gWP*0}QUg-QBmp+TE)DIaO2D{m8xN9!V?g0_>0(gA}VO*RH?{=zO~` zR7N;Zh#~#WRT}$d=3ze1L&K>wS;xVqlu60N3rc7q&PXVHJ2Hl1^ zr+*jihL)C=FfaqJU2Dx%>bmWY<8#%R$XQ>dA5Y3@C;WcfQi*8i>Zul(SXEiF%ga*- z8U{CY_+7P{M+U9^_3KLEYN%plK9o*Ky4rRmOF+s*m z8lslq6c9=?=G&lW`X^A;;1YkZAKP0WtN(U$^aU2dl*b7^mFDi~bODNZ94S;OX@QLe zVt>~I*H@ogl9RjVPdEO15y0Zdecl?Q{*u3D-xI)9<@&B?LoueR&(`5H_EaLGbvN{kzVSs>fbv7e z@`we;{NX=4BR+KK2o4sucK^5QrgnWW@wzh}D<3s`5rxFmIkGj~_&60f+Zhl`)a_NJ z{FrmA)lt*c{3$fOzYkd~#3wET5Y@u@Rxn`=4Xt*^j>Cw7bXBE~!xivR9kX^6N@ZW{ zG}*l8_Z`{0U83b3gVk~RNO8}FM+-jkKmOCQfiYrsabv;cd*%YKw_+#{2=!82Rwcet~-_@0~rqpZwSdDUM$aqBQ&(4RYmt?{B zeHaGGSYqFYg&MupmRx}suz!(QIqZLoi4TJEe|BagZ-CUbye>33>@*nMfZ^z6@0;l3TS+#IqBf(#~GsS{oNw+=d9-O&S9L`X@@>5uGEF_ysU`HztVEeqNi4%{ur zB}XV6$N=xp^zziyG6}x$xx86I<&_Cdx2qC~Qieyy ze5}RFjid0j$H-!o6xRJGAS5gx?@*M)K3pRlEK$TYnPIV97t)(e$JYpq zd;CtF9FcurzljO#qkf^m|4+w)HikIg|3vll{>2{b)m||cUNsX4`(O9ejfMyz3bh~w zX6V)#!Q$AMt6tY4mnOr#$Yq#Rt3BanYtonr;Zn|IS+@@|bVO4_Gl`)wQ{_~E>*)%=x$h?YT7mR9ihG{2N_^SOga!nko(g4BQDOGj zTvu5ei}>2=;AvHW80>aP1E)4-Y=s!!Itr}T#X8+5LUh{y?L#!|XTQvsuYmbeNGA8@ z_<|n`5(NU{by+k?+B19R>j8p_wq)oH4L4uT)ZVo|?3%M9AvEA9EIELpD#fcrw1)&b ztgE{t{Wqqbm!fpu+{-kl)qw`uglV!^L?`q8djrAOYou|JDp*C23X%5Vf15AiIn~C3 zU(FA$rDH0Gs60s&etz`93^U}SS|PV=guui4HRld!?yxpSB^5T?NPYV(PGIX+snTOA z_#tH)9#%PCJ?uw@qy{CEtU|I7SY1m2PezuPhkc(sP+a8Tq3x)@e~^X{nmW*`UtHN7 zkF?CiWUVyq2OA>TM*i>0r1>uWicC|0_38ZzPU@B4yL{nr9EFhdJxX!}crWi@Q9oUN z6@x98L6$$`a%cS!qJ=vn_5k+%jSPKbCk*A>KK$3#>ue;e&?gm=M@}sf*>QR&{hq9; z>b+}EW*_cO%}kDWT55XJ>X1H7L>SPofXKBX`~QTv^#yg=yRU?7)9JMvPh1KTP%I$y zv$c9<6kI7xk8WOxc6_#()9k}p!!CWn5Ev9fs;H2WE&ST`cF(8l2DTrSSaDzyZm;6( zY#Z*ZttL5TzueX23P4sU>GQ;67U;doAJ&a1)MN~S1(&Ge)CT^<1;vZ)K>vaB(28t| z&U!emT|a#C*;pNUz-_V;$kj~GdU{``fCRLBsukQHEeE{wp+<`xL5J}H4h!!$=*+~g z-XqG3o-P+C@KQW2&c+WHJcZpe;aU5=;n?=J+ugh(XdI&pZm);RW#All+-;g3Ok^T1 z0V>v~n~}I6n=_7PKkLli;GUdDKyx3WuZV(T!4WB0ChYgT_Hi5o=WKp*WZ})IM@zAO zT+9h*gX6+qFR$3)gO+>DKXT7>#It58L;~B;5nx%#z!{usDCalFt;OO#T@9w_0rFoy zKhhwzls4f8QA^WTeE*U>j_6ccy}AffG+Xb6ywUqvt`r|BZ$+}DAs#&L;nYC&)|opZ zX}Qxk>HbIM%kq~H&5V2F?W_S)cIP57YXr88FO(({cL}S^&A3?$OcfU-K>Mfh8rg>~ zEzQBjP0Pg2B&)8LB%NaUF@zzG3@hSR`W9NV;%x~br$#is%CQKJ@mvXl7_!Q^nY}fo z_%l=Yd=Lwp$8FAzQDnp87AZ^PH{M@`ef}`Nz>apFQB}R>b5IPOtu)Kh*Lh%MWM-g6 zj1oQf!fk-~mhXmAY+Z*{NDyG%YmGun%8bb_<#6;k#QA9)yB^6SIJ0mqc8 zipok86SEw_^HrE4d{(>uH5ub_wg&bCW~+f81A9*QHn;zMJZ}9tx>?~8%eu(VuhdUY zgBS@cC64Q%#IOiD8{GyPbY7V@E}7vidEbWYm>pPLPe7mtWbpYsrjpRzlk<_h>; zoi39zD;XOn4UMO^V)rii0u0X5Neg^`JA3}a!w86oy;ycAQVX8Nk^kHNAE^CCbNMV` zb2CqgA&v(bD#@DtvPrFa9wAm4Etv#q(luY)dhb;;nFNY0`+$Mkw=YjeLr)Y8+MF0M zwaiYMO~;4-sIkRHka73n2UwJ4wY6oCgQ%zJWMN`2zN(m_6`o`)!T)gW-qM*G5$w6N zf&36Wh%kZU3@GG{el}i6RZGrzI^~ESOs~6_`l*wvFZ%PpJRnN%8|G*& z!D}Q2g;;DYTV6x4^%oRS{;h_*gxPg5Cx1!GT!WuvZ~K0k*-t*Vv1j@$?9HWiQ5v-O z$md(jH6W$!D_It;bnaII4?L{B;u*43KW9+;cih`LzkPEW zNw{?XQ)$}!gxm8}Zy@2yi5*nI>_k^pX}{@x$m+QbywT6NWc2h!6$Jo6DoRdPy>|60 zGd*>G(;?S1H(L+>fU-gh4|_1Q$t}$!+%Id`Q?2yKfp88Ee~4 z$hqITjyp$u;>Dbm{5#RclGkxAhJ9a}tgj}P>A72Qk=D`Kb_#D)wkh4SVv4 zYK$o%u2G=AV02Taym2J5I9?;iGG!#iqQgfyovXt47jmILS^S+x{A5QhGmb&?M#m-P(S&a5M#DcI#b>w1ay9s{qs&~y%P@bR-JV(OoxZQ2uC)aXLA~d+* zo`o7QeO&kLtNHF;2|`GJ@I;rK(&oIQCl>VkK%6)m6poLRj+k1}SGn#MU#*)(uEUTP z<_v|wo!AY(dmawLFv;~tTz2qpI5A61zFhA0Q0U4m*%q%3OyRfIX(Bjn=Z;bt>wKjM z2-Q>`{xumu6IF|(6LjD2H5$LuaUUF_jwaz>nP0B(i~3H}<@a*FpW|IBPuS~s;HNAh z(Ha%-yJB;mf0Lr${weQ)zso>%bK3e%QH%16P+S^5$<5UrB)T}yuCcq!qmE{WY+Sot z)n3rowWHh6)wI1yx2!w=uGNf5O^pU?`wrek%cs`RCij+8yvaSAD##|Qhrx2Z8n_xm z6u9oEF{uN-r3)@PSFZ*m3sq6a61}~;I+Q)Tx}^dcd$t?RWrc;ae~tdk-pUr}PXWUPrHw1mi?Z(l1;-#^$M=C33 zTirh!maSPdgG$2k3VtP+sT<2tr}6vyBi4fGSsPWlcAi9TVcxGfM^bWd{yzy zcTS3_u519Buk^hT0JCGR$v@%giJ=&!sZzRM7AySg%7>_1!BOz%$IkR3JEp7Jif^CKI)QlxRZ@gFxub^<5SNiO{{3h{aJCRSYQT2GyL_iI zlF#j|s&jG9^+k)X4Fp;sP{ZD9%y5a! zF1-7oXVw;X8aZMhXL2&~^V#h3TOa4XK&uItC;iOl{9f4HZh1Ys7b+=PDCiBNO2y^N zbR-%A@POWXrE1!Wzuud_#x1oa&d$nd)OmYPot>jmN~57(*u7%<>|r5MnAzMh{*@JM z_2R--N^idTnx@L_HS;{|Eb#ln01DJ2)UFqwDXsRsg5j^V=KlVTr+w{HP4{)z#cgTz z6gaxev6$@zCrpB*<;dnu@^j!zyJAF#tNged>|vKFiddpmVw&DaKHS;WYy&|ArQCsJ zxBL3PFpD?LQH5A<&pvKuUPVa>7*PBZyVvn>kY>NVdHe5fYjqzNb1BM#9q|u&?e>$= zvM>#_@YIVFG+4d6^>wgk|M47>u`dxTvT zclRsh*UzwlE&dN!2&S=Ri^ArLFK^C0Pf9~)KaTLh25>bS^&#Mc0hTVym-F7j(Idn> zlg(Q=&N9UFKql#6{_WVq9{VspWA*3Ohf;O7YmeO=ejF*Ktd}dbe{t^MCjnyEw<}VM zb2dp4RSmVxHcuA0_qt&A@iMg(tiKg+311O{FV(u{jX^5gMBnwd#|WR8Gu)As|RSQ$+Y&$~PCtxP0Gw+7Omj{0>hC_3ad;&nB1-1{Hj2W98s$oefvn%5|jaE(j^H4qJ zYjY4d07NYYKvcyyWNyXqT;9zWEsIAqZ+;;Ihtu0-;N}wadEI?4q9$a*3HARlpG6;3 zPBOQ^zvn)&XQE&Haq&5?RUG*o7W=En?h!YJba;vc zWy1@A?cWT!OdxK|)8+TKTFsn)`8X3>cML+th^e3%jq&|ZQI<1MmO}-7*N+bpFOp)s z^mLxAEA1+d(UMSJckGZMuy3(naTV{X9HI|gBd)Ys%EnLA*K1Wr7kgmg@31(%3gp>tUFa|Vw(b?^89Q)F91tV8 zkV#NwsmGf&y4`&n$fB-YnJMl+GECo-c>0}(slOKP@3wbVP~tU(86yeqPpt4!Br2-D zeEZE=K>`gx+JU;4O z1pTVj^tz|lM>GGj1e9}UU=aW;<^%!f7ghjlzaUwm!9qAeO~JTA4?!<_`rhvoceM#^ z-{d`_#W61UPwjKq_*sUsE6K%GZS(`T{kbkw@Xw|k2|r5-`#9;q;8a64EmlWiR@|nS z;;R>TTmR?nFI6q~T_0bV(r%t7JBPjLXz4rKP^|U0Kp=HS9k0vFnP-HuRvN~MI0SDT zho{q^sInHuOWboI=k2Z`tV(%3qRu8#`-=wNK2&=c5b5U?=OeqvPL265ra62F^=Rp<029`=Y(hQ3ZhgFOIKN0Ot{)vWk@inoM@6Ov z`Zs%(RnKIDQ2xUhly$OcDy$66j1|IADv0lmXW&OSClde?UtG(2C~m=h%K@T|XH~hStyVpKKhsbv}`@a^GY8oFn>%jsNUjs z@zEftt2NYMt*mq!VvUaRwMkCgq$#yD)KJ)$5WCYS;o(gx?jx@I2BrA;ZRgQ>{mkjC z+gzsD^lQO{criz_TBfWVKeDZCR1=4|oN5qxl?@rjvbXaCU$3x_e`0sV)Cu#$+JV3U zFX4l;@IlvRUR+nUji^dPe13j|N}TMClwV|dRZY%jE!^n$Yfh%;;BhNxW&=+ER>Ww3 z+ogmVUj{P67MTId>GUPWbQ=rVSARSuN6U7+mYX_4N9UVki4O%N6mW?6kU(eH0i_kV z$$sOrRCb@)ue{x*$xP4Z;E@`F^^dKR;^OhY@976*bsJsmdA1+COn#{)?O`uaC}Cm+ z_j2m6FznI}Hz3Kok^cE!=Ktja{GF?i zrrMj{5adDeJt_>*WGHP+@Ib9+mB`~tBj`0?V-W!v)69^OzwQe8+lR zq#U8ZT`N6JQca2Fz%Bu}Jv9h7@o>I!A+(PIRwWCG{RyjHIul>x$?f3!jMAo}`E4<( z5)M*#PH6@d>%5D|<|`NDZJ!53G>?eq?04Q9{WgPUH(=c)A>n6bW5MHd+Lkb%-PM&x zdz6urf|(DoI8m?5HnZUH-y)wDrdRYQVK zDwjlKY19RR8ys%phVzZbt$B9$U#AoH{nt4@YT>Ve{y)TwWOfrl4 z3&mg|`yVBzeLe;Y8yh1Q+$>%93~-AuB}9pTEyX1VT;w7zaZ`qw|bts){S^ z?R@`T=ja{y=xj7-cdgL5$FC-}zVLECmJn3=5p7*Ax_LhRM(DAJ&qMr=UmIr~pMW>K^1; zn$Z%Dg(&)RB=2PlZR4D44gy|1%s-Zk-MCRW@oFN4tnyZ?)XHNbY1ccVrql$O!IUdq za3bF=6{(slphm>1>u4wuq9ld8i)?vYPY>K}$J@L0h@(WL3iy4EKe08Sru?ELg)yU&HQm$dhZ$JTVPc}lp}`*zb2 zsffR{Gtvq^@SN5$jTAVHe6Ke#58Rk5Zl*N>DJWlIFo1_p zFbmGstcr=&!|`cwT0A>J{-q9ifcz)H=n@q*{R=H$>E2#JcjscA*1X?R(gCwO5zpX;q=j>5=o@TQ}EgxO_e|; z%K<+Kr1VcF;tgxp+b`gTOCVsRzwhcMthFS>Gq7-*Z`cgEnKSFO)cOeDMsO?Ur9107 zo=i}?h=aOuayYc|TBFC@YCN)jEx58UZxS!|;CLCx`?kThE(x=j@N+x8`E+5YmrTO{ zTS7oDJ7=rWHY4?F!jnHvf#tU)d)aVP%Ve2%;IFo?S)74uL>~-Jvx(>i7&`hLowb{7 zHhwRLabo>$ULM^YM}om}1T2FR!7aSJelm(5nJGl?lrt7RkO;jj7ix=sRF|KUq%Qbp zfAm{NP=oOC@g=J&Oij(8K^`6+`1Jq6Z`@hpWnzwo8*S? zA2#Tl@3y~tT=AFWA=BNIc}^T2d+QA&3(k@0<5sH~7yNl^a4Jj{&guQ_7pyNNE0h3? zB4+COVzv06eNfV7Z@uQ8N@muO!ft1aGY~=FRhX)%s_>;Qe$>J?Xf2r;EeshXjpAKl z%vtAIcj1^&)P#JhxBkh&6Sj~PBZThdNl(;q4y1?((J3C1ATbcUc{Wa-zpdzk4Se54 zG5R~Qzg^t)Fu*(e*ON{JiGeGpGNd_;n>6S zQ3Ah35U9gTHM5ll2%#ONk0uZ{d|_(cXS}~5JU!rT+Ni28wFF}y%p;x(_}WKBqKXYx z)Y7CRTkD+R$MX1pg2~tgg!o#i`;82f{608=q!(2^)KgyTZC*0ovx86q=k-4=@=-x7 z(|HXmo)F}ZPKQKb1uN&3H+n#(UN1InQu)r@nk0-_hCF$bN+&(`FRVGn^<{f@sNgjT z{YH-HTLt2XbUR01j>5?F*+IX;3@%ltkwGHQZgSI_gdo!6-~QtNTm_g7TrRsySLg%+ z+>h5xn@c3B1bmL^%=?l;g;A|&66(8C5w zRV(rW?It$`C;XQE31OiPZP_MQOtix;MA2N{&3=uPoV0?8X7K7*2dxPlqHn37K&40W zy1(D@H-pO5!?=+iB7go|Ddac(d*1!RHVav-+2k4T#|rA(H!;u3%rxlU6H7_b)W?uaA0ny z2pEpz;G``){`a@CvR^YFFr%fSTWK9gPEE0OT36FmdEUCanW^-bhnY6(h&Q@{{;sF2 z{X^Std$eGfYIe(ZN*+6El${*mpwC5;gkyy9c5oQtys3zzA1<`yswuw@CRqj?_=WV# zzNkssuKW&5i&HZ1=h3mQitfVr99XKo^zU*Fy1x*XSfA{7tzEh!Spt2_*~=wEIS;dx zwn#gw%F6qa2ZOpjQ3*TaV?X*=1X~t&z%oja3^5!qTrFo>az+Tum&?MwzC=|2vZsc% ziy$j)>;S+FVrB8D!XHk~anAq7*5klLfVhWz_S!Y2WS^c}RVGGR>0CaeyA4$kb|tTK z^|}NQ`ptib13V-{(-gL$ZDYD@%k3@rJnyhkx!o203~hZWaBz$Yhtp?duh%@X3#*&z z|F-oIbx>{xhjbCvRL(y1H`N@14~3yK@-17Z98vMg8WmP05_664&n0I^R*0G)KH;vMdB=50?CF{NZ8dihT8lv z*6tgJyQbUo2BHKfGFMc)Tj_fX@uMx8u5J>tf^b;Kgx-3K<_+2(YKG7~Dvq>$lSa)9 z1M*AQjk>&zLPrmYNf{0mV~>A#W2yH-wc|@j!-c-)#<}Ynx%pwDh6}l!lSXW#cg;TJ zy$x;Qe+UZR(whrbB5@Do;b(;7a}gF z2cFJ0y~7eRNMUnM^|W*~ZN5{!zt1MJ0}Im(6WB0}nC z)Xn_A`@^RTCj^68FZ6}HF|cDKjm_i!TH&PK~7}aYo zn!2$?(ly9dqJ^nur%{kqU0w|pJt#o~VdHQTLyC`|T5Fa0=ll1Ej|K)3ch}ZVbPcp5 z|6u~bas*adNM43!bkKb%#7{!hw5e;~!zeF*;NVPXb}>;s`t`5={JiZG^>n#%u~zNM zuWTWI;sFD~EfI8eDKrEM?$~LyM)dFj%jyc7$|`iUH1gMtzobmB>jTysKxaJrnn#YI zV!_|EggI`pkBF#8O;OU7

Cm{`Ae1|IT#cKjGTZnNa} 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

GD*9K+W^3)prYWh)~SbXKag0^f3PFt9en%G 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�-TSj=HlZgm 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

C;KUS@`9ZjtK`;5|{7|kNw1C)*y8uEe?8) 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

1|a<)sCn z;4S%&`kb1^OQHeFMqKke{jYG*+1oqV4}eUs7asu7*qhzMAB}Mbjc>}`h9568_b+Jr zY#xdEYE8w)N24lSx-rT9M04xt!NR<~MSG~iTj78!GcT>LqZSPxJCYtU)KCL+T&Hz= zG1}YFuyPKb2rYs3kK45`K`>mPpcXomryOb-;(5;>a)W8PZhYmh78pq@IH#7>G}q5T zUCScFi0}A=7PAU>mlelL`kvO4SB{bZG|M$~utwdJ9L7lLdLz0#DuR!PVS9_fTj!Zy zQPZX^fni64F6@rJtq&l3R%;JPa2w0)J6`!y*Stt6@HZhyHVr7x%Zu_5cLTd7F&`>LfhVI!}- zsJR^uF68jz-N@=`Su)!D3(7d%?EHM}3tAVuVMu;Lf*_G*!-t0ztK~Ivp5k_o>Fj0K z+s#E2n6>T>D=0)bD>DlQfdIwz{u;m(=m$a-(hfsVS%ehyL|kr|{Xw8;ai3Sp#==6+ z&S6ndFEE1j2fYKrsa5{XyyrE%*G&Er zySjuASTVmzP`(sQUroH>^_3Ome<{o+_yz)nL%!es#4MjuQ8a}sIHsUGvYC9EW@N>v zSm@93Z9)7sO&80J6iCc%&movdwRSmPPl(@gEkHAw_b^KhjYB<4h5Zr6KsEXe3Vf$n zt4D?u6Bjj5u+{KtHF(?{#dK|T-u{0-AhZrPQWFy&);s4ro&E2!>eK=*M7qrZQUtGE zp!WfRaH8%gKYW}JCg(RHL2+?YxH<9JH*Pm^+46eZRS zq@#MNii+CMoZQ=275_fQX|e1n&>~WFy>E%go6@IFzZdbOj(1@A@))if)5%2_?mJuw zhzlV3M-1=D{qpvNNuD&e(`>+r5O)8oSXErsWc3u7g{vMW+MRm3^5G|0Il{!u6d@!1 zMYH?dYo*~WPXQ-GWZUt%p!S-Jf3x|JJO?EKM~0XOR!jbJFwF&kCzoUF>X>p2e)7G= zr#Tr6Hw>N#FC9iTHd*ob$Y;904&{ z3~y_<>7jI|@nFlIfIKS4keni_r_~7{=&bo(y2~Qa(K3-n5p#BS{@Xamc)Lbsq|6aY zLHOju!N}59wBJ&oE9pEGl07X1E3VS3iWc0AS$D(9L^l?b;rPv=Et8rO*bhI;Y(ew2 zN%0@r4nEx{&ICo3nN$S?Jov=trNW{HqSc}@&S|1tdtEZ%O!slVcmAG}oJv_Jc zWA9cBs*UTE?gH|D7AN6vQ(R(dkN2Ir^eYm?K=G9WN`z>U@;?CA5Dl3JL4r$3eL6k- zq2t8cym9mG$o#_H={NscnTf}qVP`fg+}XF)4;bFk(N;a4!@nmWGa$pRaV8G$MR1!_ zP}0$-^IPzP6HEQmA>06^6dH1vsOf15DIo15dAcpa2I0lNtRGRKz?CcK2S}0`vLwVz z(8MB~1sVwvDMBin&5#jIvAFSP#Pr6`?7KU!yv7mSiuP~lfpHO2L^rBt_(sU~DxJuF zQkifo0c9jm&{0OwV;#{wZ3X1?Dt0wvUi#xFTterqx~NHdX4y+0nMM zR2)V}!|hAHx2JRY$Y}LEN+kUA%4LO?{QSA4KXB2)|3=2<7MCz&oXKT~Dh-9T?OjJn!p zn^AXgOQbt1_R+K=-_S$w>O8<#lS8ne-0DvA`P&ibV+~|1;G0=5UyJZ25uWI7Hr=?$ z$RENYdA&-j%CfnO@a`P(_xuw3?G&^B~(0W5J7}Y zCKY7X(5~sE$b=FjmNnr8X^?Ganqsu)9pEEhoQvEBFyb;&1opIEzcK7_^lv)+^izo4 z<=6qnAu+LU5rg^p`7aHAHsuw7JQxkm?~`6yMMg(lytuHH)A4PIN`GFe&|b||MRhR^ zzP+_(Z1T0NYW>RLUge&4Lur3uadGnDfr*v5zUlJ;CIB=1-&cFtUSGnNJcz`E9y8Mq zPDj?##!7g&kn}VxB%I?~^Z6yU4;godEs{&Ni28cb)hQXF_GkR2&{k?r0Mt2axtuw1 z)pJAVlVi(MY_&V8w$k5}M2qY*#9Mir&f3lZqGuVgCjQRV-+a|ssPgmvTpC$;uaUG! z4TqE8O>c2;vP*y~w3pLeh3m#zP1j|sm`3_D+6RWfUDGU~?RkFjK zs(;go>#-Ra>?~pMQCJW&4l9iD~WZX%+E7(>x!!HWq^V_hk?fgANDnY4* zOq!ePvDh{hO(}eI^fKfzI93kv_oN)8JhDlt=Y&z<)hF9Cg<6XHx z!yYyMYNo4}ZCL)hc43=-sUDb)3!n1xe39C>(hD^F6vgedEM6)eEy!M7ujFr@T#%6c zC~zWN=uEmeB4h#J;oSGJ4$Wd4+Qf$AU}W7L*fm3a3!Y6wF?3c8e+HVPRq2K)tV}r^~H3Qw$Du{XqBH9#N8@uyCTubl=Nf z7t>d&Yp+)Zgd0tXE_ZWn*e;mvH%p&Fg>P23)Vl|PT|RR?B}{-%6`dVnO&P~kBTfT3 zhIe~A@PGm)&(tA6w_oA9%qRV>pUcYOz7wBRh}z#g1r6-De>8Z^zcx8?`fij5WUV(R zjO+vELh+J=dpEVr%u%VY9Ef}74VrY~^8P;v&5Vr}-#rOGsk+0qK3=yg=lk)km-N;m zzMrmtd$^b}MUO0?Xkf)HdF%-53K*yym-&ABB>NWuTqa-~`9v%&I&6Vnkql?eh$aXt zT$I-v0es6#>&idv`gft820`Hg8lxtj9r}<|1|t7TgE)!Cl1j;OnFS{%V9gG8)-0lRN~8)fqI69uWWvk3&9IB$GmT z^f{S^$j4COj|Ay}-AfgGoN1db%Y)Jp<7@XJ8rOnT^Ny(Ox zva+(erWON&+VY(2kL$i*U^f(=i ztX}qKMPMOYV+aaLOI{J2F%gKhl)m8?Gm-Zhxk(*+(gnF|{{*<&>qwlbV#L4(~MQ zWU1wT05ontP0VOe`tx8-AD*Ult=j?>h*n4PY_=Btk)*cSJeP?#6dU|eVv*iuEwzF=|D-UYd z<+xauLe~hwlOZeJzOk+Kv_lIe--ZC?Q`>C1*en_ylj-9_f>bzTKp|b*szW!Yk9%%; zAe4cEE+|#-02&BYw(Uc(6x`=!`sP>5REqd3@YpOl*~uAo4JMYP-d`+0_S=IEI3On{ zLyO!^NI1g`1PYo}+1BfclzB!ADzL7l>G)6)Zv)~s!NZ0fR(&K>R;KKgRZX9t97Zu? z2!HrKEw%UZ8K2l-xpJd~{EGT;yq)RJ9p^CU@f1%{AxapHy@Vv4JuVH$EE*CUX4t@E zR!->a?1DML;ELv1oXF;2xHa=!4}GS;CD~oveYs0Q^Op#+-|BjLSoawEUUXPYZlWvE zc(YcDG`m+KJG|$Z=V8yu4Ij5j)B%Hyot9j&%>J&SBLM?4w6W>&OcThN_J7>JIXaG2 zq3~8!S0zFYhX{*ZD%m+XJtaX7AE~AAs4-w?X6wOt)fICFL-KofBirQD()kS)(s$vj zK0YENNNI3=iW93}z~7&`d;Enc?)Ld;=<1S*=9XCT_mZZ-nBYly&zhkBD@Ik_4>2W= zR=35nBaO0l*;EePzq$H*iZsqS*(8q*N{#qXfqh^g%X&DxV3A#^g`6)2h_57HZaoo9 zs+hjU)x+8S73(!xIw(OG)iu*Vj}jH;PsI3~Ry7vDwbx6I8xJ+QHr)$MFF5+_Y{_}O z`&t(E*z{rDDbDE~{k-_kw(sXR27U^-!d3pOp`*f~>}u)#E#saG%**bWPjy`_yXp!q zb3>h2t1bWOEKg3XF!4>K-~5W73~`Vx2+(j3)~cr!M2a8~77Dyr!cW1Z!2*jfnk8u= zZX{svg2l#YX9ZAbd9akA)qphU(|xcxe9C_p+D-iJ{fEI6fXgDXT&1>v#A)4J8f(0jA~( z&N|yYV~cje!QNGkt(IHO(TGzbyv1J2!~A77)}vzy`)KF|TV2?DmIZ~fb+vT{U2KXG zb1CO>LM8rk;e1Yp3PScVijkQSi_EKjp)9<0|VbF*$W+ zG|cxl8~EIwL%Fdn?(Qad5DGkGla$b?=PbSR0@p`p*pVla0ww$-=l#xXZX!TO`xW)V zJHLMRJUag*A`Ainv>RUqnWlv+bg2-%)L!?vDQuti-TioXq9#rKD01lR+liW{5G`0% z_1+^YY|ZA!a`Hwy(w8xlJ|)Y_a4?1!WsUStmU|K*Er=LFt?KqUcdr=)A~W>Hja2aX zQrb%`p+Plssg%$&T@Z+khUwp$I#`%i@@dB7%{YytnC?|TUC|q z`RV$)YNm?HgP0ZBk2?AHDAzH;qf}-+vVegi`207i0d3k3n6yK-gVQJv*UtP-?bKb< zwd=21r#5`ykvG`?bW~B_Z%w=q+;-zWrqnN3Tln6X)by09Tk8*1uuZ~kcv3u zm|yUge0uFL@!^xjTv;retTQTznSUD3{+vALxV!c*FHF$#A`b63L&M{aQ@C4(HP~%2 zM@tVG*P$OA7%AkKTA1PU*DACa2(aSZy~yN8O3zFF!HD0y6^Y2NcUtC;mvsF+TttO= zEG#LmT&YC|A;0n(FW0ZqLjOCMmng&5>ITaIfdu9E93}TRT!vNQ;H=o##Gqb)N49%r zX3o8G`TS4nfm54QPJZN_vx$Dsh~!IjcBNmI(U_4-t|h27HF)2nK~3oY-$>PbTR#vN8=w~`{{aE`aKq~^b{Au2M=Ky zzgnq_ zL5*{dy+0_ZqZh3{?3mL*ayc6P`bC&Tw8Rvz`vEN^00QJJLtXn@Af@MO8ZsZ*(aV^} zpP>e|yXXK7$GQwdO+Cj8i>Yt5+Y9coCzc8F#TojEx9Bq!58sp|7qy;j|_J4-|xYqWc zKocR4>|-~eB~$5Wyd0TX;PZPx1rMmOHrDs}H{kMiHc~n~DxNhM%}TPiHxeSi z=mI1H4aAE`FH{12Y=DiJmY7{$zJY`ocJw(xIW=BJNhNGz20u|1`s?nm<2`scA2EQ0 zFH9LtFNXPOOd)l7r{q@;9o_A2b!pfC3y6^Ww1560i7SP{<%3Aj=6J9cCGm7d3YIQN z{;kG8)$Von=fNZ`3x=eN_9()e*I5 zk|a}sa_ePTkHwDVM2wACtK~y_Gec|bo={nx9P(Mim7tY9Og$Y&0$gF03C$aaZx6!= zzV0*iiMf)lf1)n{WN4pG*H98(TR+5fg)mZZ>{MGQ_rk#-O0>VSl)@7HL}GyyO}_cw zCusGVYvR;dTS{MT>S=-l=`Avo{G8wE#@BIVJj3F?Nhi)HKH}$gF5h_brI@s8aGspf zLOvzq3LbUV=*~_0{j`#rr2rENEw|G~87@6Lc`#ix$8@^qYu`A!1Vh-RPE`EghMvs` zXq1Z(rF3vK7szug`UjR+j6OgQHF$T5mJ7=un}d5KfB*@O&9R1#0m@)AX)mlUtFBhk zQ?s+!5};>?2IUqOPM9)xnm>oT#ox{;)29}YPeQW=hjoMw`{Ey&;=bKtcW~pt7leY|6S-f(ET>)AfuFduFBumdHhmS-df67>Is4Sp(ke2t{A1iORIYGHck`6a8$WsIDVGKb z@_aw{65d@lp_m4+58Nu5LPjR_nMg%ero+XjV5OOZ0x~Hmb}TC|2Nx4?)Lfq7wGTJ= zNb+i>#<10uP%BpYRbc{!0lHQcr0=BCotf%Gtu(-ZL9WFniT|&MXM3Z85A3J3HjIX6 zB7;guw-3Gx(@sM5bHap#TO{OG5|{THd@bAm{4|B+r7x`E>(AkZ_Xox*tiACIi># zm_gg=AcXXb%iSpDmR`0yY7CDwe#r3BW0J^U)olLq6qCor_y*zE71rX=ib%M&t1&;v z5_GkxgIOCiX&%KP=;Vp<;T+I~uR0Mcg9ZP%Jv*2r0j^43H*f0-h$_d{DvI_bW@7@$R%-As=g z=X`n5&3Nde)Eas;xbr7sYz=-Z+)6E{nvVFP^!q+gO+|`k64>$?IVL)>e6z#`DuMGc zjJO&V9-WBlJV3pKQ`mRWawPLUP19f$okw@MBhAVM;92FaAE@xIjRXdq+}4ug=Hrco zs~iNOcACs#lb7Xv1qdpAchj->m2`19uZ~Xpj*gJGJ7GVwT>QJ#+~2&)sK%i1dQLA* zZ7MgMn=Nps!rU*ojolWk20CZ|R?nwX6aq~VDrO{C?m9OL~|WB&(JTtc41BR>{_J%s^q8jJ1+fo$uikh2ft` zud(nhk&!SSmmr1sx8zI9OK{bnY{Q9XznTvP*@?#UFK_mEKgr=0gFVe)PigXp9i8*b z>*Uy2IaN05E^1UI9RdUh?iw_>ySuwP zgY5gZcB|e$YO3Z9_a5ofr+fMghFiDgw&q;4j`A1aWg0CjZ6xe6clsVX@vY@2aVybs z3ojMl4+`|-EN!}Q)|vsINT2ryOGzu?=z_?V-<~p3H<5sbr=rH}uo49(<)9xu%@7o* z=E$`n^Q5w*3K;Ibn@aL|2vVRkeAY(NXK5*HAv)c*;1lTE@1;@q4A;yjJu&5027O zFaA)+UEWU&`fiSPAOjXya-P`Kl>fTTF(o!aLA@;pv zJJxJ$JVUnb{$eS$$t5=1ZHqY9XAM3!$^iRIzrhJ zW1To0DoRqpz%Ur=)Pe2e-P_a+n9;rRaQ}RmmWcB4{)n91Rl`02#Q7GN-#L|eEPv*} zgo?(jd%g{>PBAsd-D-?2S;J!9jY-)5oqH%B+09$@`Jh0*!s{0p9)S80<{|X!TToMf z+8b-U=x};U2(P?Q-+bNEx1Weo!*+;&i=oTsreE)V8{Yz{47q(S>9F*)#t;r%!EToq(`L9R*%G0=j?+rI=I9jlUU8AL z?O1eHp1w%Y{LE3*_YW0iy<;w`KZw{+-Iw2(DG2RsfAK9$zi4U9h0gYvFEUIio0HJo zS(Oeb@5`Gn2NW`pK>!v9Sjf2GAAy2}5uzdoz2t{wW9{pL@5t#!O&h#*b-%<7`r|u! z9~m4{syh?&toWW;fC3Wod)DK_Mi(pmJ;0%=gPSTY*N=2x`{vi(GOJpAxwj9|WNKHq zpcMXghL6$0q>T&znnIF3%A6r1jEL?Zh5rOOD@49h<*;(^>eAQH`-gtok{{_!q(xFy4E_fQaj^?c4`7VftYzs!|%&a(~LXJ~-}B1b$|IK)&n zt@yX?jKqZTBZfn%lefMOOw+e(VtbL*}0j>$JbH)zgtXl<2%;E^$yHO2s<5K`h*@9zTr0fY8jh1mwE^*k#mb@ zalV07$dxH%_3(MWEvE|Q;#mKCn_YFu<;xB9O9K}VNmu(4i~?(ai-XB6$0?^n)k}~F zLPaxA8Vt!T?G}$C9gAA?B%~$#bZ4_Co^A0_%fWJdiLP4#u^A4yve?+S-UGu`P&X&s z6zB;|s4X#g^KK!tDgA=Igu2QaTl}6UXJYTn#G5fW-%8Kb#l%7{*W3Iij6Ob%s(+uL zQdCl*8XaZQ?C6YHY+|-XfPM{!Z9Z<$qQ_Rx&I6p~d|9=_{Hu7UX6#Gy)tsAh+a6f< z%#P;kA^G)nB`(Kz!MJ#98S4biITzceR!R0v9P7fOPwB{_iLr%Jl!pK zh4CPzs4+(nj4-R&UHB70xse6Lor%W(u+pa$(KLeqRfSp9K4O zDhxMkNOXO{Z(Zv)OibQ0a^!y@p z{PCY@rjbMD=0@an z*n5f!R|ihS%j$|wi`V+X$c*_*0~c!tU3pot+zlJMU1M}E*Cf+dcDay(=%j>JS05!HXB25#icLcQn?Jesk) z7F^j>lg;IA+R&Zq>Q~%fZf={2bqUX4G%|9!?z)>ChJQ3ZU~ z;M*U_jNe67kxKJS40N~p9ePT7LUpwgd!sQe{&cO5E3z{6aeZKLLs-oR&9NOuFZ?X^WCm0=l?<= z`}S>|z5W}=N8#_Xgom#O3#B4&vh-%vD|ODLmz@Ehg!8{Kb6Wx1ab|8aFKggai`Jop zib%_#)unBbur(yl7L)xGG!fm0%Z;s^sQqxM2v{syujxC1`FTpquwv}V@?zsE|wsTAg>5>$YJ|5tk{G4F%xV%=MV8nNY zjF_juxi8bwzT?$jtxx_|@T%q}Jn_A{&AiQ0-1{|c(AAoJO;A+KNXfjVY3KgFZjqdp zv3kbQUM_%Yv3!@`xr7jC1efYrEO9NQJXndR-R15mqc z`87(SFa^5r=#wYo6MxufO8@SLPbB%4DOvC&?gO#1e^5dD!akk4C}_?fyW1KeOUE$k z!zUZj?IVNkv6rkC_pVXF^0wHs!HvgH$ZU1@Sm&fcL%L~UPq}h3SZ8)LK0mt}^>X*tWHAk^EF2P%$ON^rtPB2o-|WdvKzI z5M*Frhymu<*^6xy<@y8}(f(#r)0u$<+Ik9BpJvKaOU4AYZ`hjDUv=3k6ui`$DerT# zy&PCroXsZEw>a#cPh1NJ6rz0|BrE)KcAU-+&XHE3%FD{mD=HcDxB^8Bbk_MMb2z1w zu|zuU&5h4_{FS7wR;p~Xe*B=3QLFO2Iyw&G>b!T$;eRwH?fbbhWL)e+s(qB%+7$T|FiMS|D3J1zKu+jfBRS8j4R^nnHKaf(eSy zfx=SwUTyNmIoO|!Ojd^l0!WoI-FkB`(^<{HSPeGjdxj|jDkgg=)6mLEy8xb4yk#zb z7Zt>$WR)rpoJQ@xL3Ig8dE?5pH8wllJ&9N`Ivqf7V+dzbmx?(Ikgt}-WNc)piMNwV)7Q&$wY86YLc3T)Igv*pzK zs5rgE`7bc46jC#+H1O;_(+ONk?MfggYz%>qM9AVzKDXgpIhh!_=^1vnpuqIm74#n+<0-d-~Rtl`<0Zk~+Q`luAu2-8g^C?1{Cl>eb!0P!_rMW0qh&&<*-*XhC*pJjT7b^^S=vDzhlgaz(c^rY~ zaNBv&&i)+U%neFYHZ&$l1_L&>9ld|u{5^~6F~aHQE&2sA(0^7=OrFmK{dy&YHOYKT ztJbV{`4{=jUo@B~t`;7LD-sDT_@Z~o?Mb$VC&w)u1z4f{DX-g%l-B2W@GNYB=l9Fj z#*}?D6uShhWDQvu!dOAWZ?28=YEWSylKWf+2a1&mbJxMiL+52Yw8wC(wlZvBKRecM zHP0?vFA=|-&q0;yBKLk<)43U?zIbOoa6fv)h%qVlE8RT-Z)XhM7S{aBq-GrDkS|JC z(RUBt*U9dqvpB;@80`2?y9++(49ONxo94rRKi*d#ayFZPczyp@FdfzejfiJZUiM0d z(!oZG9)k{^JRI2;q=vq+9$;o(bANH#x_0&zlPB)L3lw}}t^Sp&mX@Nwv^jD%SA`^t zO)y~==knOV#+sByzPPYpl$-(qDl*;AGcv+qO4rs>^SeJ_F#Y+c3sxX}zrO|d81wNsJ}$;xAmMJf zKxpdfwXNHWdpbe@*kH9N-uChQ02cL$mQ2${Qc9A)&)e%z#B7$$O1m$*k&Wr*=eLJ0 z+|M{%*AY^5i*`QX9VzQfF*sQDNfK+qxy4J^0%_5J4Vp;E~A&6EUp&x&j}zgGGGZ?nBr-?mho^X2NA{?vQzGvq8O8{hX{G z(}frf|GIY)Xh?Qkey)oFQd?MclFnd=5GoESxUDHmCdfl86v7b7_}g7Q6nz3{>o+PO zxxDO8M2wuNwin=oe({nI8*ZcyAd|Uf_3YzG?ZlSF#bV@TA9VSCfW6ZUYElnffj55M zLWWBFOvh3$d*@oj7EQA&&cQVk0qhNcK0ewtmGv@`Q*+}J)zp-HAIye?FC+f%js4~I z)*SEX5n(!QIUdElMR%N%mqOaRJ=74&|SoR1>J5TFUY_QWT4F%?|~DklAd zk9D3W$oC6hSbhI!At{wza%=(C8FzcFTfVQYvEqFGV8b^dI81J{m5N*MX70G_qn}b) zf@DeWYmjAy3so80{3h8{3G~EYu5AXFwTBk`Av0(q)Z<>0G7=?~79l~ueIstkfecweVMJt*lokLuV zbJtO>H#-$bP=)iS?zNkkZg3ZDp}?1l)jQ|%Z8vH-GJI=}P;nX;IoL&2^}fCsg?cMU zE{P(&$ojloJ`@4?mf>8JX>N2OgU8m9#|+5`I*& zJc6>uQofYzg=O?cmqtmCFHI> zJ@&_H$LZA1u>Yd4qesxv4EcV%CKTu9iwi)31f~3tAtUat_5Hzj+hujiqNj1YqfrR% z3_0wc?{xuuLQc{n(cCK;x&*264$DqEWw8mCZ(PzRnf7^nsP3vW#pdH&=o|By?8Yx) z>P)}RZBrT2Sx>hMOLQ0&>fF9QQ!`N(~J-^aq^?PCaWK8Z3NQklVtH?_&4-6Oe9}VwnLt@)46_w2ok1+1$ku|h+B=Jh{SG10L75u&kZK69$K)^Wk29r2`?E2AJpLT=+;4eCHC7GYwp=MD2K=SlD;>Wi)Yd^ zHfXJS2IU(eE~1&WS%5HE5{nZXcC|c`F9|6b+jLY=z>$o+cw74KemHHOz}16#8{S_c;6t zhl03{k{o`aVED=`>+V^{z5-o`fPTN z@{{L5Mu@Z4e+vtHsyF6Ds_4|tr7fQ?ssWO<9uDp4$BR$U2bdW zK}JOF`sNFwxVOyh_^$W)`a^BaYb-JhlyJA(3(=ZQ6&XLz_t2B( zwYu!X5yRw*#0l5C$xBICew0sA;$kEnCxBViZH)J~7qz-JyWhMXor%KrfA*Bg4OV+? ze)ix#lce4e6nusMMtH^;OQ5#23<-*t>{GTLWv4q&#@u`M@T|bjk`Nz6{Nk9InfZ9O z*15U+?X}s(k|2H}Hg?vIAO|HoIbOwNxBKeqvkRc_9}tu+YrL8Q0?89?YL0< z@Y9Ae{yT<3!8vR$!w0ndp$Qp>24|-u_IER)AzuVCmEOb#phP15#eYn)-azIis9qvg z%5dn}EZ^Q<$PrMRIIV>BO~gKYAm?$m_p}wX)6?#%xg!@J?d_tm6MSo4X$yZgR=lYv7B2~xdKidAGE;3l<$ZO?KZ!l=v z1FhFlv0`X?^!Bmjehhlv-b<>U@REPT6Bhgms@>-%FGa-DUY92hrQXd@jjo?5Mlq&thbXM*I5zu<#kqdhsm7pQ zb^5&QSIC+n9HAghfMbH#;)Nup%7>-%;#hP&;yhb3$65E47r9%^@@ZgBWm&gSxTktpj; zexD*_4-Cu^TD&6T2&A1zDA`qMe<*5*YRPwYRHl4F?()1I8yve^4~xB@aA?b)J-)Wj z{o{KUqRp&`IE|TY>ZwN-m@%Msv6N;bc=g+xz%IPpc1Ob;e8>TRYIkZ zgvWN2QUX0-=_wb~rCWY-Yw8BAaV%GSTx{EPE4{Ja3QJ@7*b;mlE5|j3tCc zPLBQKbTPTXWn7cBxa`3fQKCp$Mtbz?*FHQ>u)RT8?@4OYL)c_*6ERr zY7+3-1K`G7@jBvyKv3Uwp_1C;mLqA)-Zz@DHJ5L$-oDlK8UHmB$x}_ic5P~w8lfQ@ z*lV5;Y}3jz&svsW{C-*uEVFBfnP6$6NhnOkgT*-fLi-l%P*lCVJ4Mpac+{I71n z!*XFk?Q0PYh8@BB!kUReqt2ko=NS3Z`p+R|fSQ~*NkU821b@~mQ=YsR*s3ZpBS3P~ zeAN-;Lq#8&}ibE7E5Ff|Bdpw)gOAl(?F&ySno2WCYZ|C#ltRcq{kco9atK{YV zdIm5WshZ5QOL&VrK-bmQ*)({|ar)~1miG6i-FRTg`i=zZ9u=M70c$YfA!7#Ape>0{U{L~{W6LF?$v9rTTi_t z<}Hj5!T0>ak>bvg1ghlS7Vi4?!lglBeBw=25jQQfw0Z108mv}{r;@Jz)j+hetW;$&XV+xZd5o)lJ0oChMy9!pPbZ_vtb@sNoER)-Y>Jm6yzH=2 z-r4?*i;a5bu`T&zEY~Tg>|Z+%&mwRIwc8H&5QD$^#+Gt)*`o|5bTd#07rio@_4zY@ z2=}33qAu0;vonyNs@UoI%!Gv;q?W`I&SdjBLzXv?lE4H@l6VjEG=dVBw!Nv8Sq z{0suQxjj6!EXm+ZoV#rfPE2&Vy$xJ_uO5|_3HccU>{VoCWx5<%oSYnQUfsYL7>PpP z(9Vv)zl`W)omjsy<&{-e8JL<^Gcp})?U5x(uBPG7C#NY>?}>bWrH$+o|H%v2zF+#A z|8Geg2c{z>L3BGi4i*}+r-J}5%gESLd~l9$RjT+0v*RU3^V!lH8K*(&iwlhW8&3i% znzY|GPFl7QMMBjY%AEei-QB|{1oDmuJsfCJ{TTrYn3oq2$joZu*iTGLUQb6_%e1U* zRQ~ZoeXKGqQ~Se&6+rtR|F&|{H@EHWQ<1Pis4<))x%%uV`|6E(fXTq?bV)I*fW5c| zbM}TeN2;%ET1M6K^4d_(X!Y-WmBb|J5+w-G@^m%(cvs%^Vgs}o(w8jVLEIKz4n!1I z1R2|7bwfNc7$R(=hF5Yl2_0EBW?Ei;(g;a1y}$dmHGsx`&)e4nDBhZ&fOL&Sbc~B< z4=7N>!PvQ!F>3Y@cOW_3@@Y zDaW1T>*-;6^EnOpB_ufMbg1};XGW=2{b2(KyTk40v8jcR>|EKxX;8q|pB>*Cp6#+h zV%ftmKm@}@Y#N&LNGQDy&^~r~XJ0HBPhxrEO zibx^%QJ54TtW|nH_`fAK4@~!O%wPrzCS&1@>s#zyx*8{pE7N2I@>J(f9o;rx=y7}Y zc^2K@rlUZ`J{Q$EU$>*Q!XCNUmd`s-z=PtS<^=ek7&C)ekHrMdWymvQjC0RdQZq+l zN-i5X=DI=jcLSwyj@u@HC`@{(cITSvkBtRIIug<^o*%S8nh^SS#v_a$Bi*;V8TQ1u z%F}aS_rdw0+6R;)FrXugNmqwuugMS6V~&DEbg36_n4ySKMp3Qcx@fx(rS8nvTK5Pw)%q;EkHvU#1FBu zv8$>m<9FStFD$&hf^cWah~C~h;xk*C%p>I=7r&|H(g??siWuTNbqh6J`bQ+*6F-mK zgL`7@#Tt6`J+wxQGO1p=3@n;WGeR3WK=~2JxlmDI0~r*Ai&#<& zXK23>FoJ%5@>tjT&SkIj{pRz@$?2qS+sl^H)yg~_kUt;4W4soAMvMtp7|!OCD=KJv z&=nqW?J{5qDJZ7MBYKI?$mn@kLq!#-F+Y5uBJIJ1$BG+_h>#KOii(bj{b%q^MO9T= zMw)|@GqfWrm)jLTLwGuy`Mfx7vgV#cR#vtxbYObhp0J69MVFA2_ch3Zx1Z87rF`NJfZ)Xy&TWe4Y>d*S%+W zCs-*zlxiKncK}Y6k(rTBPBs*`4juU)ydc0$<}ecWUa8on`oj$>nvf)|ZPp z+}$dR5+&(S^j@!S&@dg};a(`YvT>0oS)tsKs;f#F=spfw`eWka76**3rw03X9JUjb z-XVmfhG}Ff83c;H!YlloyHQusRJlC#v`Hz_ylx&@oc_G?FR1!Lzj4#=YNC*;>cP!3 zCab$J4`^)2P?&bO-s`;|7XKkITh(7Bryla+-ErW=PtO*^GLh8zLVGKU}SCg z*LPO#R$CDjU8K+`SkTn;iZB^Eg23T7X67PM2_IRxGaEo&&A7Ufy54mOooEjS<0W0b z(Ek|~<6yVdVwMP-v%tL_fE298R7U11X(l9U9T8bbL7*wihS-D9i3Kw|Ql+N6tiwG3 zzT#~U8Fb@NOLhDlSyMwokzDc?iSe-*KsEumQdhP5gJ0lzRugCHzT1=ci;C%oLRUCD z-FIGg4IBFE0b^UW*viI!;yE<99R-SOk&*f-_2bXX6qt)cfIbaWu%wMW90GJi9t*cLZ~vN81J%>M@yT+1dC1vfmn|(>hz?7 zmM*uTirIdjQt1;G2ow=88SYVRSA#nqd(8hUz9DG0^>478y1H62_QR95p1iFT1O_Vt zU1)t_tJ1nbZN{!Va_;5&&qRIx#4IiezXKh4{+^vPOqPUia+7D@+p#`a6#I@R?V1_Z z1%8Hx5HRRC-2cPlP+KU+nb54R5%7E9g;3bq-j<&n**G|%V4~xxl?i#$_PjocS@j3g z<77D3)b~DzNZ>j`e+t1TAkfg%+{eP~!rrsC7_W7A1P7DFR{YlS^>l2Bqk>qSS5zV^ z;+}OlH>2K>^%J+{MMcAFJpIV4hjKdj_f=kAR>%!sKwy&-n*-iY`_lyKnN!2%vuAOp z(~pzY9s3mC>}(BQzsn3dm6%jL-UjPi{J#*7A!QbRpLRXf2Q>l62Ej>{<*4Vxtt|3} z+9YxF?XNz+X;^>zC5C+)u(fJsW#gh@O^o`Qt}kd1QG|sY_CqyuW@c?}Wu?t(d8WI& z`<+jaz+r3Xc@*5#y4LC9*D<=lPiX_iLR)!m&}IdV{tU=`;YHM9^?wTd&Q!J120K1- zfc0QlAF^@Bb^HC*{mEDwk|@mk_DE08Ga~$V^!dQ}%0N`9s`L-b+HVA1mpP-g)wvYV z;Owi<*s1YEHg514gbr^$fC#>?Yf<1nOUF2mY4M+%D+EZ8e5^Y4yZe; z8_XWk3d^+C?QjbMHI$Ucz7l?Xfq9+n%@|x|^h886cfwwZ4kVTD>#;=v1;7YWf#B;K zoTH?Hg1WV()sge8G}wFo@F-WnbFAO7Hvk;FXKc>v%Cl?PG@C^V?*X%`o;DJl;?&nc z7lId2+4!Sg&K7Z@C31w$*aPT>I$?EL$@Sr+M@|?3;}Qx!e~st++eoOxWzJRz(CbdH zcul9;XPq?p4Ej~yao(^xVBh}< znh-ls6mO-%$L~YU&ut(;3OPl(w7Tqye^-b!Y4P$QUOgk!415gOyV&a6c{vHm4`h6a z{ZZ79)cB*sH_z3a6SWJ2dMBDtil%f52M~Dk1cd8psk`mXc;~WUAef!J$dEG?L`6ka z75sa4e+iNrCWuJDvP-|CIie0Re4Lk8S6(kQx>nwrC4E(6qfL<{QT3%uOUM&Nlkm;w zswzA;)@ex(l76IP?|&w%lXidPc67KcC7>UX^H|hTvGl(?aq(pZfvO6}AEyr5W`xOz zU?s@d$Io|yd`1M!k<$03{>-JWjNqs%DAMfpS9$ki&BqI7sv+E^JG8y70lNCx2AL^mYwd4Yc*j583eb+F2v6Tgil2~yxy z{Rh#11~d_S?heNoEB_>-gT3)NL}W4ZZaXbb@Zqj*t*tHhd?qTZ?YH*#OUtTgUXn@4 z=+~C*d1J&!Cq_KB4%M}_Pr)R=z*t#dqavdsZ@PSHYwA){6PCTFj58XG@@s3e+k=4G zIFG!hdmBM^Otn~U)8Oy#y7sdvyvfa33e53=iE*m#o_oH=DJ_eF#;M=+m5o&=+I_oW zwhVHo?q6m&w34xLo@v-=u5JG;K+f*E2Y=>Vdng*nf7c^RoXLn_<}Su|fQAGK7Ai+M zIXfj{+_0$JIJ3l4Hyl73AHGq61-c+X;iE&Fa50k}#N&N^CQUw-H?nfr*nb{(pn)C@ zO_&0;A~n6Fq!C3tPaI@>I83Hx4 zL5XL_$S{mZM@GWm$fasXNsih$3v4y~6JPAskXGB+a8$`7msRZ(s;zUpx~VtnEWs}0 z4h5d2*rwFX$i1mwRSO6Gj2E*mayN-ak@ZOe1EHl8tZRG63S?Wn-?iHPeex7!%ShP$ zUW9Kih+x?88(BV_4b7C72k&my=sDpl3p%E}z}pa&MW4Q!K0bvVQVsT`r#CRDODW`x zBi^T(qZWD-mz0)Tjb%C>Ee-cbi~Z&D9V2HXb&TmPjw_AW)!rb6Nf3qi#qpm83;8+X zVTVbOqQSE$XQ?eK|4B~Kek|!iM#V7;$Rp|NiawktSkuvggna$ZsBa)v-_+Cy4-dEX z8Jf+?z&Q#-0$IPyOH*0;WH+sPy)9@aF|l|+T*NqOe08mD(8k3DsFl^3bm?j7&+_(M z$f@a_URKWUo1&V}xURf~V`EFjeB}W3c0(CszR8amPOg>~;HgL7h2ykQQ`WH*(({vl z5k~ks4!A`vutS4t91SkorJ}uvlJk<#0GvXAN5sEY&REw~%Z4H}%l(D$3skwO9Tnp( zJhDm(aJCFAI(E|XDEi`o+So!;)W~Bgi$J~Fhk?3#yG9aIT3&v`G?*_$SoeG@8z1K@ zCA@Dv3^Svb1R*VtKVa<;@QVZ@P6EluZklR`ZHszyL^?AI-xVo(@vqG}QN2+IISPe&qdy1A^3jLfFAFl6 z!D0HnJ|04xeHMY!$9K8<=;-J=*@UbDeJHiPX+hNk*c>VP&SCr)f73O}_aE|R6Mq-^ zrHH$+B=5MWsBE@8j?E{ZDKOZ6fd-^$$h5QQ9keV93-ePi}l%$Zs=>1Xkr) zg&NaQsMEUnVrhlpv@1ovgo^5GV{@}Du(^A9!8cKr1x7rYy*98h_}j+Kvr?)`n->5= zK=3K8wNrY>!H*dj8*4w_vc&jHY-$fp_+V^hr0%Wl>RCG9CP%0P#k){4d)!oSA_)zN z2!nx&C2)ZOD0s5JiwQ@UosCER~mB;G(MysCdlw?r!~ZE|E`7OB)^}+3SpHZlj-P*N2B}Yd=dFl>!95?qGQ)$(n#>-E|PSo=BWx9KPGZ} z+uX>obeKP}K}ck;Nn_u9tK^+rDNCoeoz2G+|3A0kY-rH!cw`CISqnVgGzl}6tf^!-dA z?iWh&&`Dwav=skUJ`;8~lqz|G7zP_S(VZzI5eqha{1|a$7GT7*JN4dC^tB%_4DOrm zJ^jv&_~!>HxP&u($J*ycR>Xk2M=*rKlZ`l+u_O7 znqu>qCl3N4u!vGyXL*9McGwAvi|9tfN%l0ce}-~>{{w5y$JmDMGjnb9w;fCztnt~5 zO|aU#y=li=8Ixx#ZJAY-c5{c<^{b5Dh3%zxR4V;3pV|1x{)CcYX+Q+F6j zYPD8}>8jhGG~_-DW;PDb`x`M&&*i3b9tjq|dGSLaC`E`uqI0PpA_AU{;)P&u6qn%B zlRGZ=mIH0P2+6Asml>C3ElwlFo|7R`jL#I1{0wKGs|s_(Ne2ZwH*K%S{z2xInFAP_ z-;*XfT3k5;jfaPgxr9n^Uw0ukp^9#8=zS81q3zkU;Ir8=ve*g*dp51Gs9jK@$E-tRZO)6ls zOLw)I?=$kqkYrvtA2vA>Z3_O5KNAiAfwLPnQJ6@9B7k{h>*(MzR<&oJJ;mvJK0QHz z2+rw)UM~u!EQt91_#uQoTW0h&Llx*l@7C%<@i*Whe&*``nAn5_&8ejpPIZY~fqEQ5 z!#T(0g-2r)W(GKc?}Ni@54(s=sO zpQyBIM(x@}LYpV!|K|e8mk9X3^no8LADTGg3J0l7#!>wlONWX7ZMI`$qR&iavL;?T zMM_Ij)U~&0DD6uG>WJvB#~_q^H8oM^;RH-Zi$g>A9&0^#^+av9!g~h-TVFX7#f$U= z+Ndt(XRC=>f0)NvJn#d>*%j)?+3%-+lgpyKv7ZBfGBelKITtWz|M-*_$E#p=c<>3d zwo!Y~8ztdD5t$Q}795tRpgME?x_)<60?nI>#NREF)q|Rts_*;60{Ye31{oOS^+OJR zAbwAAWo0$5)91%kV@-Z-LR8YMZ9M|YcO1}`uFaZwTBWP0J}?ifW0`@2u4`z|-nM&7 zk|dSN>-$l2PC`JY-1*Cw9Ky3RYRpLa5+)W7+0kbTTJD;mz>JLN zn??e!7X&xE)x_+C^}qdrpwp{7ihU$o>=);yWiHN^79cU0Ta9I~OJs$`<%PvDF>}yT z@tr^H-+~pgp+MQ4UM01iO)Xb+vmeB+TA8>SnbGS)GNIc+lvYdTNw(RF7cw zQPfs5f0);1S{gBAT6?>2n~KaB5YhMpevc@%tEf;)wlcK?8?p6t){k~T*(4Je61pC-9_Q^rn*y%0b<8$ ztgdPv>&HvNdb1wYgJl^jE?*`aB(k?*B~4@u)Og_WiA7p2w~SjG3@i#U0hNN#3fR6? z^YYbRqtz1xQX^`a+ECTk*FyyR_a&$-CaMtAmLVfu5|gQdad2G|cXz=CE2=-#n{@&F z3MhQ@oNp1w7|8Va(Y6ltYv;uM-+2)SACaq1X6KZZS>In$O(fiGxa*8DCLLO(-9u-g zn5bYOCuRbBKO%tH1@yn30WX`h(^}oCMW0}|oU7!NRLaC~kxL^hlP3<^VlbNZ_fUlU zkdU7vbhL3_*1F8*o!H>TC=y4s9AAB2$*1$#=N7x-;*5bI`Sx}~QW9~#i*3m)H)J45 z`LFZ`Qs!5Yre8G&w}m#8zfi+Mf4) z{d&XiuV-X+M}LRZ6%bIl&XV)oMhIZkDkX9X3UV3o6o>9Rep~V2K#_IJ4OD=U!*_La zLxy@aF(I$lxjEN`ymJ|lljHkA8uu2)+it(f-7=}GC2qD9&brx6O?t477(*--)U*K! zL7IOu5_t|r)@0O=5zd#SFp_t~qC(k}bg`(Eiy>A)2N+t+I%@^WPUOi|e4OnmvSe`5 zqiH5Z7YNbEx-Zpb#w`{}JP0>n$8SE6xcm@~UmFt$v3Dko=GaNgMpXC@{m^hQyfI%n z`AMbh-+5DLqzQDJT!fQI*%J?kwQ3C)1-2AEL84HDx;*DoQ3Q)*mXTPD|Hm z>$F5dLEk=ZIy+n_p~l#ll9tHnc?Xvui0jsawQpKEE;oF+Yr&Sen1W!!Qu?Uoh8Rj( z1{nDwnwqAxujw#5MgZJ^zQ;?~gHu{LrH%ICQt$F#Qz&Wet^^!JD_zZR_HmqRYiqq` zoNqmDhK?TX@l)T5gHTa}uaAvmiyGxreF~~_->1ke*=QdQ!=2xUdVopn#mE#%w(Bi|5fc6YfWw)|DS zxUeBqI1RRc8ML&!l$~VCS1k1)vwWIHMHL9{-(FYH_q;ko0u(<>D@#hPr{?B(m$oLV z7`ws(S9P+zyQpbM{oeO#ovC8Q`jJg-=7}9YOMOTPwY?ya6&Uvx8aZ`hQvCjHX7>AX z^>%ZLM@`Mg+SU>|HoOSRz{C#iX3Nh=_U=z{=+k#cxAk`CIB#`zbrad_%JsUM@70B5 zn{EI};tq%2#@@bU+M>%pAt^ic;Gkj*kv1f#SHwv!Tq(HMFpiKLmGB8JM0|2_W-9M{ zb5UzGWf!cC`eJ=|n02h9bY5E*(dHCo*gaNCigmWm z&PJzRtBs4wBFp+ ztEL$Ht_dR5=oL$@VRe#HMAIcqSIf~`09K5&g3P>{y6&&a9@tYOORyt&M!WnA-WNKC zugimn4vS6Wpn&wJ$5v1M8csq2IyzkC*iG$jTN5DW7_Hov|NNaiSi1|*^}_U=m4*Lh zw>ppBI{hyCjd069W6|&>*4ipl3zpy`Dw5DosdRXc{yyWXEi-}DC8S$iqNHpDz9i>m*rthXXy@Al20V9n(vB<3@KpQV_H3D6tK=|o9v%C zeq82cU%osx=fvZ~glquBoZoFa^4nEhEzO&S2X=a#(0I!WD{=8zP$0X_GpCc0@%K;M z8k#~xkM#8#-+l5%|C~9&F6Z3n;6^@g@8@wzsjw+0awscL9kXFaNUZB!a~=jhqT?9G zp}+9UtBQHPWO+9@JL4^`)YZKmQOwQF;iKGOgSHM@kH=TVQT6p{BS%vD-x>bKhTyf~ z0|DG!^XzEDMxWtFVXTFT-|fBr=rm_{LV~8U*fS%Yw=R#pvja9@+;p@R7uRM;DQI%a z^YdBu2mNW_0^=S@`Ue*Q%7sO0#eGR0;jR`MQZS+i##W=_qTVN~Iy#1ayi-P|5-qzWIfq}=uW8i6Y(Pr)19c^oI zHgGrMaR0Qa!nL<8MzGt5@%@8S#+qQ2alOjgqN8Q-$H>V20wLAtQyrCu zJc=*qmVIuTdar%?#3ek!Kp-D){9}XrZ%)hp%G+Nq)*`}=Gi4QZXYhjztUa?i%`m?< z1`jvSy$sf@Sv{spqv}NV_Wt?ml)2KclDWCPJ>y0d%0iREgK#LkM$^NnD&1QmD88WH zZGeeqX!yzSsLd#3y5?5E6(s1P0VLpNZ8X{P!N94=zu5%txo>AIR-|L8EZFJ<67uYz zzTUM6GJW6yRDMUrSzn%}#rb&;otDa6V$b81asF{(faznDl=L0=JmhdK&h>D!A9plv zfP+#18+~Li8@cQP``w<@QrrEas&y>Xc$DM>p*MVcU_Y{Mg<#H>_HKZe>|eyZwj0LD zMtd)%va&5h$9^B#fR%>u{j8)&%-j7sXx24FT@3_MJUEg|WsOjT?9&~?j?b`RGoAE6 z+d6!?iVZEWR!|D4Pap?vt%c^%ohM0#gdeBV^KaYh4cwLNYHaE%g?$43oiS_563M#p zG%2fcK0J`;&V1jbg(r)&?-22REIP6FK_zoX#?fqI?ZcecjMh=tlp~EtpQ+uT$S*FV zWtdwqGBL3*KXto08&A~)8&mXYoh5Tu)rvUt7^0Wa`7QZbpzPnU zQSI%(J#fa?z(m*;M03@Vu9V8>eMCxcEX#i(3S(7~#ulc$P_Xg0E=@a@cv-&dC`jUh z>|W<^+V<)C`ufHr5s?V^xvig%G6t#U1N%@svQZNyy`3gs9ts>OrOJCY`T;xcrp&gl zxKSPZ7}!4wpoP=U?@S#w5F+4$lveIcGa5M75gwy|X(|GY2UbOXuaIbYmGr`byuq=t zwT*@68~YfrvYb85G3F^ja)o;IPaoHhOU2Bk<%Q*iHM7gcs)C%0wF?yZW;24F>8Tw`0emL@EZ{x#4w_wM$`}$~OgC zI0~+=VBK}Y`e1&MCR+ov@(dSeO>yhZ>e}+s18<9@w7872j?9YXD=;JQ(5@%YH!?DUX78|2)< zaUYZKpkLbB#x`dE#(GF;DOcu}u#*%1U`Kv^+H@sxcBuzARErx6Bg6gP z*UiufQ02+1gFk~bL1*{#`Yn@-BbX$MNl5-jA{r8~51Q>@QKz&`|OSLw}u6^pe zdm7r;418P?^6JL@9%8%w-cq$Mn$`J(UGVM4G~|pW*7ZYY;Mc904Y0@K)7gBJT1He9OHys^2rJ8GhkADMh`Hbu@7 zRE2urQ6wbO>XkqCNY#r*wQnEJVtfYST#;Od)7t{T=D-Rc%V@M}s%unI__b7fD!_$< zgZrk-c1IpdBe$zi<0d4jGd;V6Ap(nv^xa9@F+HnQQu^R9JX)tFPd;0c_Qss37R@Rsp7_OIg@v(^oAMsc- zMl8qYWnVezzf+N&TOT=^bA53^iW+$K7FXzv*rdAOHi%#=+|h)X-_7kZUA z!cFVj$H3og(v(z*5+^>wNxk59l2$Oum)Y?2%o~=LFHoSKW)i}eVM|R_2ZSiue~0X| zw{lnk?*|tJFAM3-)$zI5!UhJRuI8(>dZ4%K}PAD8|`b{h1aT=Q0I>!P39 z-W-#W^6PrnvONR;zlcUo!}ToTQ)^Y+an==|KfsELw{~1q&T%R4hv1!POf=QrLCZDK zVP8vlPE~JfHBi|JejFa`AR)SwlQFQLMNQx>GSoFljt;#lT-_&uJ96XD6!m~;o$YJY zjt)X-Xh={}Rjq*MbX`YBrV!=qu@iN#pB{#s&>s#Sp0qTk5pg*l#~V(h;9Fz_faL4> zeis`0L`n|FJ`JA%l0AF594*49QRjj+UoIZwwIS5`PmxB!1!(k=AtXH(Hm5NPasL&LH?#^(Hwf?uG&!Z=7jIS|Aheo+H9 z?$Q0Etbli(eQ4+L&N$C|o9C^?-|Wd0)(nYzJrAWFHn_yr`CAz z9)4kYlY(hpYy>Q~IT`PDLf9Wrj~PPG^|0Gb^XC!OTBb^D4UH9Q`wA-Rnc$0>;ut|~ zLq{2J|A^rYzHQtmQIT&g>aFB7v89jP&dtoia)`@ zFRvwrjaX7CDLyuAYf{}kDE9r;B0L>WFXR#*EYuh$Ss%i;{XkI$_Lv6)P;G0C+Fj?) zmp?!b%^|m7ZCE9^{iTgeBG%as|EybhxciOzfe~rH0YRV4Wz*phlM(zBR z_xy44>A&yL;aBqxN-Bh>m^0+O%8zLms8cg*uC~#Z%9GXe#nARYLKQNIRMmn{R~;o&0pHbd*~Y^yqXAPoh;eSx+}4g)N1DFng_Q?*9SkGxlt; z=Bn^3{5Rs^8jaUpHHjax59gyr;nu2;Uq0KY)p@)^f7BiQ+iB8i*Ib^$_kR2K^+nDn z9GPq*d0{R%%Qd)L&j@b*7?88blVndF-K>bV1v*k%bfbJw0^`F@XkWx4#CoPnz@s}C z*HS!7o&L8aEe1qR{H&x{b$Mk10zBW3A3!=H3oFat*&iax6tUtv2L}cQ1|wr5%-_|v zoZo8uN$V0%@u`(g)-@NE5{mAw9sPgnaRNBb-77s6)5nf-N@nCfuxWd+T$I}?r3|Q? zn8>@}IVmk8Y>zma?cFmL*E4os&J>f=`-UAT&EISoo?kz<8{9dch-s4a9lb#>#5aEL z$PO*m?%o^&4;l*e4}hfyqG%pdAoRZN8f92hEWQnlWR!U=G4G~{(bhBQB=gl zLW@g4v9+;zN&t)Ks630aB@n;s7Zw)-oIz32`v#5YQ*(>r z&FVQJ{ji&H=x%S848T*)pXYnqIp17`W_XmFqP)hbRUG_-gtOB+aF@BB@k%NQXW6kUzoSkcg! z|65LaWIF@-^@Gp`QptN0txiD$aI3}2e6pwEK!#P>h#pqT#vu) z#lM}_tIzfj{FIc~QG(=gG}J(1A^u1W6&s1+ELT-z_*Z;ajSb(^Mkz25k;Fki0}Tkz zX*N8rFY@wiyfRW$55Z9`4KbYO$OhE{Sa})CP>QvPB!+Dcm(yREK3={?eQ#>WY_+%T z3~Fr+n`v3?RM+=gzxZ;gSO>r=o~Dal<2Y93N6E4F4skoP${1afLj~5>%ZmurW$@wK z*n!Ok
JrR)QFKr#3%>r2GP=lJ}M>%&DmGZW}Qb9c}{zYh*5b#yu>CXn#4=;&z& z`ucwU+m#?E1$e!P>RK2C*8_%!Dy#FBu4e*kzNgn6Z7SAIwdxH}pett9Hvnx+Zhvcb zckh7Ajkq#p6C^(%7%eT8Gnj_1Odpk-!eftSJbf zQZDaKe%Eyrz3d2TD6p}#z3eft=Y$Fnh6(A4>tS;D(cu87+D?y_7;x+J^TQJp(+ev- zz$h>>5Hz@}4optVOTbdr{pk_zw(IYd8B1uu&z!8n+2=YgA-;w^8ORIScKj3XK{~ftnNYiJA1h zf; z`e6URQa@}pcv^L+jGu!CR~b^sX#W|0^Q09%gC-^pG8w!M&xQ{JYBo>JQhPB~E)akU zR4)7%67P+(>3g{|03oHIC?e$cu?Wl@7w26jCVpoJAZmumI^=d+rUqRqa{5}ESu9yb zn;#_lSezN+E%&<%(;yy)xY?ZE!s~V4Q zPR{R`kV-#h4kjXeq{F?PB;{WQhuDv!XD>~aj19VrZ^TFM6_)1}6*aNjlm3v>4AucZ ze*%vN1r`0H!}e2OR|wcV`lg2okX5>AsWxo_5-lN0UuhYoR4yznjs2P9tl$6H&AWF8*e~j4 zyj8iz%}%XMOa}UO>qT&C!-Np=c6j??MtUU2)SBfWaU8l@1E>zi0zt#PiIdhVAha7U zIevZhIz3lyY2g-DrT_fXSBDQV3dZ~T8=H_yPL)tYo5bru!{{z4nc9|}4!=(z4J`m^ zYG)ES9-h|y+ZH0t1uhNlRzg!gG5+1AnYfgY>gs$15C|B2QC|U9mdIo99m9mY6Zx9q zC1ZGEysTkJ)^%C*C@c`0B%X2j$@ySfn{(~maq*Qe8a!#|u~cKPEas>vE5EG7C4t8` zo;$Ka#!n(^dSTVbzHDIG6NKA9_7GWwYB_fI*uo6@UDz1)dSf9RS;GJFonghhumT2o6MitoXx4-(6VhrT?F*&FGk{wZ`%xr>`!JtWWQtn-Mv>1^(2-;ZVOPBJDhHYmQOd{SThJ0xNN&!ocDd-i}Q0$ z+LvnE>mN^2(V<SUgk8m$V`CngM5R~ngx&4QP18@mN;FlE-cscEsLC8vZ1p`@Ft2t)nNrf?#vCa?yt5tut^h$;4teEMoM@5_7Q?zOEaFB-Su z0G*yG))Gj(iV&3ZZ}j`?Ux94jA$8sx@38#h>WvI_;fU$^G#vN+E$FIvauy2Ow_88w z?=<{HIvMNnX{yDo7DeDuYI;A;8ytWe;w_X%rYPX@F)|p))jUDD6@r%$SWumtBwYX{ zLSb&R=K8u3Z=D4OZ~9Q^DGovg~;H#P3aj zhAKuGAGc$u<=P_P4t`(gjma2uVm-&{eg|K1t__)b5n`bHhnrYA6}Rva{~s3sT(#Ej zRoV97;qg@aZ+pMLAA@Co{C4m=6!+p}Hh-h*VLv*dZ5CfvE_VZUh2gXBCOfvR389gI?9*i+3ilN>N->^P? zBtr#qcCh!*W6Ev8-^QHb)3Kb3#WuTUWE>*AG)+3o(^895kFxiJ8$7e8@cFp%<`)4_x3IVqMwRhvohgfyj?t+(#}He{;CT1lsmH%Fmxu{u(C1} zXnl12=x)%)bK~OT$MOyzA8UIj|AX{TiEG%_IkGOnsDv%8an^4OoyU1T5nAB;=g+&S zSbMq##mO1>$BI5V9SzHE0STWp3BJF&8a*X-+{-Y4K#a03kg;sa60!=?M!8?%A()TN z%xygG$vNp53W&jqhTdxkC#mUxy%SLnjOH_?Bce})%i=`F&D zV;!J$HpS8OmXTxAYNI%sBmC&qY|}^scy%taaG})nWkY1I$PIr2^@zW5XKvg|2?_lP zk2gFBeuULR`LqwDpYA?nc7**TZK}}CsVpxhCW8&G3+N07!+K=JBo*WmQ_;|p)BmHQ zC0ARWO3~Fyx;_rCTo^m89BrEid{6FP(JqtaQE9le-Fgs2%*|2#hUVl}6fubiobg;- zKCT|o!Pzd`up(=-0?o>G%vGdx+=Op88sBV1EX8h&Bhc*q? zN|fIZGL9sLJgfwE@c)zHOt;z&0|GvqQXPUzjw3RiayMR&LO8Mpk;#6EdqOAESSSJ{ zS9LWtgN-0QpQGf|n;){~VIe7;U4LU@s>Ox9waup&CzsW69S;e(d|NcNp+JurnK);@ zm)>_gR;ooOY|hLQC4EarIJg=>OB9s(=Kky7c(|#Znw6UaR#3cUwLbh@5p`)XSKE0S zzh=BRIdN?9LXwHoeUhGrEolm zRjxT`I-er+KlKX$Qhp5UU}5TK)P zop&^J7BH|^HP=*pf;F91R>dNkK(46mG#_Z?OD~W3lgn@Pl(nlzP`}$<*E|G{WRY^PcW02fYkyswE0MHdM zX=q^UMhz*!U3u;4g>lBUEaT8TO07~O`Z!ol2bWl#`RhCZJ=R2O)ui83XUfP;?Wa|3 zkv{S$cO4O8QEjJZsZ@lL>C0_Z-PSJd_+x!?8br|Fik!w)YF%-SEY&@#ysl4$Cl|;Y z29KY8#!rZScED6zU5rh~IlghXUwuM;mDDG$J~Y)g41ReL4}%MC4{b-ksxK*+w+|f8 zk~zgNhU)O$*As!YGgNSZ4=+1;Cg=LYt0m{s`N`kdsD*HJvk;f zm-q!3SbDlMxp7ap+;z>_G=v@LAd!603yXj_>-RG z)!41t*VD2tH1ka%xFUDP|G`+SuEz1^=HM`Y(Tnapeh*OjnlZ5944;vcGH*S%^fgu8 zB`;O3*Z7`Cy;+?JuS;Mv)E+&h$`-9^rhQ*n9G{sHC63uI=x3u<79~8{hU(S>y5lA$ zE@PtEbPHM-?M&TS^uPj43rRTo#xp?kEU*0-C|l&*@Ez#fbou+t7;p|MVId9nUY8|g zU2GtrdKt+WS61b&ruy+B$170ZIc6LjWEQQGl9Sdt^%EP8Avs5{sPOFiWM)Q0LR_az z-+Fhv4rJ}_fcyzyvv8T-?0n!sw)qvx-*`iy?A+_>psoq1Tu=M+&#cP8=brVTUr_Ka zSf~KEl>oru=F@XnL?jUyh#g$A)0?Zeie80!=NXk~tqWHY{=_*jA_NB%UjekzP#vbv zeMZ}(htc@>*g#R(Ks_8u-92X*AMEh&@|n1?Q==rMu&fy{uZ-ma2)`l1&bt@K4JPkO zHh?yj>3F1@;IcRC6UbsjYLm~~$ZU2o)e%PT+tO`H{(d1m5rMkGqq3A382HwI z)VLn_{c_zT>N1Q-t+_N}YBSnYOd85kph-kih@+7IDOsRxPC}a)fE7?5au!NH+nogLd)9wf$??(9%d zl1%fQ{2XsC%_*N+oWKt5t${DMtYj39Q=I-*_dTI1KOYlvGAk4K(T|8+^bhZUM;YhJ05cU8aZhz zxoQUFrVMG~#e1^y|Jd(}&tPSumvBgnK1>WqLC!Za%8i?8g$gP&R+4n6)8+TvIY2+s zcdTyzws>;p?A{Ng zrSA$t?G+56FNVZtib4ZD+yR4}+jDyu=^@{Ihdb)g>oWc4fERZYqr*m5=ituhIzHF8 z;!|S>mi%D<#BF)8aK2St58VRdbit~HrJ09kZF*e)$oGtLdMa}pBM=#-OXtqZ#b~r^ z*2Ioi*`Wa%9oe~g7YZ}~#G$FRxao!})m}RRY{b&gcz9aI-Gu#YK>l1>BO}uDayC6G z@i!<@Tw1yGHy0hb;TSt!!jBi$52lP`phY|q1g+=)MgiKL1^gEYpr(-BnLfts%t{0 z2L@;ax1~jZgbr2B^`wvppLv(F?`eU|0Q>C5-qAs_G|xuWp{t-_Zjq(7_QRbL0&>>> zPm)jBdFqws;Z}aWA@78lvYAkTu%4gV@(-lXkg@S75TK)Cn`X~+K@k3%w7~~>Ucu;Ye$nboj-E2Dj$+Nh=ThHeTHdDt*ik~60njk?Vr|EPj>F!G@>eyymA3l=uYRZ=R*_V z(i#!c!~Nd!dV@}UmA!L+TU1`wqRZF5dw@<&&B(X>4d(OB(JTiiq0{59<9SA$z9On;V(I8wKS<*>+ zaQq@LU_mkQD8PX{7R&MS7qZQEEFT)TzlV1}b4Z8^GYD&8AGfCb+K#uv9j3EJ_)%Gy zvGjfmPUCJ3E5jQ(!Hu=!B;0Cyfx<4PIWDGNsQyNZdR4nJkWp))z$rllm#HaVcO8Of zVitlAE8u81nAdbI&M9Fm44(kAQ{!1@>SV!;h5nW|^i%y$virbImdI{Z?9NySjZ24_ zL#BF})8C&z50TGVHfuuzvkpwnmDPj>=KqD17OFs5NNNh7XOJ*#7l~05F}VIcQ{?bI+=^ur>FpLmOuF*hnfA0s}U^YJyVK;KR?em+Qn=d{Otdy zrJMG_`tH5PnjKZh?O>rnA*@&<(;Bdw*_G0teET-Bxn;(*=Ke^`8Sy9M?(en=&n(Uy z;M}+7;E4S+Sn~K;k#Bz8;}^yt{r zyhGRl(b7zm5D}-g!&VOznK@kugOY+o28T}rVFO$Mge$S1xk!}Z^@kQu!^I}>|6q{e^%K$Shvu>`!P%J9sbygWw1r$me4K3} z7re0U&-}~-qs}M#`k}|#-k+MlN7iv^O0=!&CTCn|h+l9Jzbso|i3U184!c z3GPPfH{DP5c!a6ar=kqHm|YqY7oLw6YI*E95;JUrh7#aT=aqS#4i^fy`!;E#`x!=> z$i8!4PAe+SW33Ad!=2*WpQtd>o0Z|%$KZb~d!Zj>{66pZVd&uH4Ai6U?woD?xqrVm zy|V%KnS;Yk+Q~^VGPA-Ai=*x<)2^w;%eO{oc|T;sUSVFsU|BwT z_5*8Q+esHzI_570!vo^9Q4B@o-#nn+LWq1&SggAtNH^LO~Keb-JVe6cyD`)qFb}_mm$N z$OxPKvmCOU4BOk={OQ58k&t^rP^x!e?Cz*^^=u{tkdPDb+BCR=p9A`Vn6&iOIjf1} zh3`>B<~dbZ&Tk2RGXm#4y58>|GcR0FJpOezuOk|i*0*5Yx)xVLo`Yjww=xfT=eOIs z?ddHC~?Uut@&e+y;H)k|CAJ zOvQeF=#2|NX>#231Gdplir za6*&dZ*D=Jp@y;N^}-pitg=LRp5>tjH&3qrE3lc2yq|z>oL5zjAS!9F{NU=+3mk9F zt0M1;c5}KvLvevJeVH#1Y1@Bfi8qi@qG(^2v$*8{r77<*Gb`tK$gi#(d9*e72aUya z%(cKfj54S@Zlhz_W9!?G7-7BXrCo>KodH7w?9hwY_`CA(^%TE7xEmL`^VNOop zZZ`;5b9rXCDa^;^MT1S0g8D6qxsN-7UD`07f*y}iB1y0ZYquS&N?OI^O^@}J*P ziW)XTP`BQiEKi5elfgZ%O|YWuN~;IF(W{f1Lt;NR>`!I;ZT8?^pt9SMmjHctV=Syu zBVlm3+|l&l9dPr_?ubjfCeNoXT1RT%H!iNpXw1!g1&U$4ojAB3uebjFUTIv{^7=E| zj?c`D5Z>(-*;Q)EvrTd$yuy2|2bkodd0 zpp?YKIJY_3$z6L~Ta`fmW0ru&+jLcJ=`l1{c|`qcf|1)&iUXwWuNYFXOEL&hK8)Mm zydpgU8`9!ilz`{q%}zW9M>;WGFTShT?|%`0Ny*l8NKJjIwo=pY6;_3|bnDqT2EDv= zmF1s!zx@Wp-k>Yqt&**khJ=KK6Wlb#$^O67uI)CIR1}R(4cm5{Y`BhhDGkRY@T8=< zV#u$xEM5J+QKx3MzR$dBVz#5XXC_~MrDZ!_mJ4f(;9&U|=I5~2xUL&`!F)H3?j0Io z%qey_@6)H%Xbnn}1PNX=vBA-vDC5Tulm!Z~l4bMVA-KDOGYpO8-|zhKxet`#(w$Z9 z?bdzMg(PKv$UaSaljHmG9^(BR9C|%EQO~}Wjke7=)TEl|?iCnZ2Zk9k6eEn>(iPOE z$xEKohPg(R$FG3@@g|yKx)G<0-NkM&do z6?2KHYd6_OE@594=;DK&jcgjgg(a|#2Y^|!1wBOyrb-Mb; z23jxbw;^ggmvJ^9*xNHdMGB$S!jPvvRDPQ7j?Ug_$3AoP&k7Y$QT`N(YgSxxa(Y1? z6uXoGHaa}$-MxNSojk8`5R8e#G&bedy3cwKL=jgw)I_H8R5j>e0qK2Q&zfPt`2$8o zBwo*-lYVC+eXUA23)XU&`_@okOu6O^Pl(@WNw@##eU~N2Q(;vzZE_ZO*1pS z8Dj*-Inh{mcf&V4vd~a(&36e7DVUDBNhO=wi5tjN;mryX(u|B00@mR#pFb4tn&~)vG2=&LNpF-Xwv!F?# zS6*Ueb_|rxVdc)-=TEr)?DL8;@9H5qxDF49vg0&8yVtkIp^p|x_pcf03-*enu#vd1 z^bi>NAyvqHN5#~A4?Lx-I%*bs|zv__6|<}Ey~2lkKFMMPemunl1SGdCbZr29o-W~x$kF(r-3+`0XU-Hrt+;9Mc{k%0tNly6K+UxUsZjHQ5OG7zqObfMx4uSu`9*UHSg5GNZ7Ukn z)N{B$0CU_4bkz&gx30mKbEoo_5_!kbMzTRU*+x!2viM3rePi>I`))pY2^@N>TVFHg z5eH-k9nnEvMDJ7Y?qP#TrMJ%qfm?DkoA9Fyh~GIHT@Mmes=jU`yEK_wT{?JPM zEMo9mdOQyFYJeuAaZY6nxy!+adue%ujyf$REwa65bnx)-<1-LQyE{8OvjxM6&dSP1 z@CM71o=nmmC0peF^zP~^D>tcU?YZ`P6-%=)IVR4*qgURj-g{rpgFfrqn!gboQXP`~ z!$#Fs^7u^W$g;l+kzsgzVcoGhub?EC+P5PAY$08YTQmJrJ0tSlJvM%QIrW&et@(+C zW#TU-cl!?&69syJ>{WIfa!OJ3rU~ugiM1jG`56lx!Gic9b@CgQzbN9r*nBDLi7{+K z+&^ecV4f3m1)Z4Fa~}mYNmm0M0NFa!wL9le$#pmAm-`Gv*>O{}gn^WQW~ zPow93kup2Rk*=@;rx9csyk)22JYZ4caacDxa*h6DE4lO5QR^g<7?^C&Op20WuwMOM zMlTdFyR?AwMnU&1g#{Pset3+Z8kefAWxnNPXy%5^%2uyxC@d{H(Z;0CiLc|EcbBXy zvg4&i{>=dNd&=U0AxhPTNT6BHkq}n}g}B;F?{5y|kj}~wCMgL{ z)o^kG&Sn$e{Vns9?g*N`<3h6ggrHc%L@xH(5QRkq> zcz#^IorZx1Rl9!pap+f#(^FQ!M+hMT3TiIy%tk&NWU=zFAL?dtxjB4jZgt)jp2FiD?CIx+_o zub0QXLZp4)utC4$Rkz9mV+&4==PQEXEl40B!x6X;Gut;V5~_cnyjt;>JPn7do28YF zewtiCxO2I8c0S{ARQ#!KS;CNpPNc&Re|_DzZP)54aYRFrod( z0XC)YI&tbbey9d!$;Kf3(yX{4rsS)n|MM{b* z=@97bMFl=)a+>T*Ol%S@rr?voVz9MNNIj@`{{jCPS6Gu>DuzBu4TGG@}cuzYz>)~KwrSx7CTnh^Wti7q z>TWmOP*C%}cmF~jFK~r>blTy$kW)*2S-h&OPxCbWvmv%zo*t`COibHx^n0D5i@(1= zLnNX**Ycm9)8b-tJ#srZ$&ss=L%-;Y;Qm7TfWhTLdhpS<|0dsr1Me^@>Q;kG8x)8* zNXXT8S}g>4kL>;fTDd_klLoC4ds_ZzndEx7Ui76g43Y%Ck%cdXmU zA#D;Cu`x;tjjBx`c2yJNMrTM2>}(Am-poLg`7L+}f&&3j(e8ZIBeNzSz)McEXtQo^ zY0ELSxZX7wk`%-I}HOnJM%j$Kxh1$Z>4YXN04~i4$Yr{Cq5qS7zZ1x zXR{pRFlz$Vn-sC&0=PhhWpBppB_!!g%6s#X5Jp90tgT>Cg@mYN z4a(0=wH;gWi3EK5ufrm~H^iW-0%3(y;2zrReT&2Ej0Rgz54}E9FwkU$z|c1R7@nR% zh!Tv6`RCktE-ojLTTrCS7F~DtCqs2QdrY>~FgVE7%=)J7Oj49P`;U;sI^P@yh6e3v zoddi8rB6;#f$Y=6ZUI=?9X57VPH3aAPcbI;{vLViSM2#pKJie0Avq(PN#NwBBaw(V z6sSBmPhPDl?wJIQ_#3=~WLd#y_qqJVFYR)D+gCq-j@Dyx!@@>nMvhO6IP7)R&L~)) zTLS`tA5}uT@d_J*eU!dW&&SrB4h02<^K(ku-9%w#1PzUt$uVcAr*+&05dPg089ZH% zi(Pl*md!1n{B={XFYjAVD~j_IvXYXrfi2P;H8uH9Nl_QTLN=lPPRPbU{g&h;GQ48{ zYHG@)qvFtZ?MK{15!yeKHe8%9iFX4s1y5Y+G}j4i_3oQp-0L3H)RdSwkKY(B_~H_* z?DT$Tq-jW);_+}~heY(GVEPnNc)MZ3K%i(qQIf!>y4Od7{EWqg%}Ij)Qg_wwG=X#6 z@NE_tT)*N{BZ&6)<+h*tl1fZ8?7V3ceCk+NXSS8Bn}M6z8TB>6?;!ZB`RG*sR8Z1+ z5G{h&l#0KNi6wjwUUz6D2|^{}yeQ2DGl{?+;$F1L{jnMcXM@}6%9@$!$SSA>ni^U{ zRRv)rBs~toii-Dk+%xtu_sC6Omn=_n^GYAj7DOa(o&-|z3UYh4gKnipzPPJo3+NAz z_CtUkQ+3Omdold`2l&B>YE)ZiF0lv@U2aQ9;LyyDH)OJ1Ap^zf6q4`?i?7IdGSgHE zAiu7l=LIAcC=Fp{_sgl2Io&|K{(+#k(STW`2U3TyNnxFHR+i5o;D9yS&I_3MvOJA` z{jcTju66Y32#wgNvm8{=dzt({?!ITyI|qa-6!TrGzH{aT!Qjf=DL zz8gv*J~VxZMjx~`HrlV$ZaH(?;bdpOXXa@G0mPZ!Wxh8s8tNH0@SifT9hZz{# z=CEWUp8X6}!PXP6*o+nCKxOFB1C{_e91{s2(u29sp&_BCVYiNG0+Qxd+7?np{fo`W zlkJQx8{Qha%8X^X%=dbqX;OjN2?R2yXjmI#WBS_0{6p49w(+H8cW0)SKTDO7b6HVA zFIq8AxslJp3MLQ@0%WtCrdKV@iQoCRG%6tFakeP~S+{Q1A-rL)-*yFm ziJI}Vc9Jr>#1o<6Z%P^pxm9^wQ=1=@&u?s|v9YoC zb`Gc?AA?FtYHkbnP8O0ZHf~FAI~2FQVpndwpCNI^(e3PcT&LVFxm3UAb$A{h;VjrO zl~>#0kTP`f=hY`goMj_Bb>?&S_6my#)Ln6EnQGFJ!M~WLsZXt2=DdTY3D%qakEojTeif4?nE1UiT^s>^v!PTrwb9X6rq@_NIVYQXLX%O7vd*>6bD5HVxAPgR@!56FKP?5gGE;}qp% zK7nX0@m$n1X)BAl-S>Vs41W-M?btP=yJmHS$<1mrJ&|+!;fGGi$1K&UUq5l-;f8%2 z^~yqi7(f3yDji7D!3YbpQvZ5)c67$;Go~Oc<9vsSYf(C*s}2IeIowR(YltGzg9K%q=P%Az0sowfbuh4fi9k<0 z4iL&&wDsV^Z))K8$Zu=oxmgzjP!0FhUbt;Aj47iR9Ad6+e;6KNkRWk^yMQ9UC?e7w zYn@}P!ml`mUyz`*Q;W(aqS7+zRecv}+w7+ydR`>()yeW67`3((H(SUbCEti;Bwg95 zDf{M*tSCS2YcC9n+K<2TZv>GIW=aCUJ0PcW80&YzxW9e?=^&X`MNCtyrAze*w3Tnf z9@wQ}NhcrxPFz@#{i7BolQ9sJel22~-LkTv4e%X*9U<__&YhwJM$&?Q11a3So{g6) zwjRfg$b`{FrWs4S%>cF7=cGA2Q&~>VRnYAYcjF6~bChu?^=qy{JQ9y?J~7qlCDHHh z|Doxe!s}?eFua?lv2CZZ?Z$RvHnz>CX>8ke8rx~C20ONGA<1VIHMSmX>GAT0bn@6%7{J4T&cGpHVQA)t-M3*{o6P%`cYI(h#`5 zVX$n`;01gzH%{1=Amh;c{SNHk;=k~K?)I4&8ml+Xc*nA3;Pxqppn&k{$U*Hb~^O`Ft)4eE}(fayVAz6vnp>}gZsgYsj&u>6s0yI25 zwj=A#-OwP726kNB8*+FWD!Q8w6g*Zh!pu4LC})JtT()b(5igpAQ0W=AJ%f5ogzhAL4i2T{>0VLxJG zZ@rBgQ&*5lV#ngT)?2PStet`=v@Q(eLC#m+^$;GDWTW|nCh#$m2zK|3>3zB>=7 zulwGLq970x#4GaoVx8@SK94wME250*R66|F_c;zp{qBe)U8>&_#(>HNqd*k#h3L4O ztvJ~x=x5x&HDdHx-ga++sl^YXEreVsJ$sKam@9rE^P8>xqX#ZUbTR^n4@Vhme9xui zP59-7nJ4+Vl@)LeHBEK*!Hbetpp4P=0FfyqVxv5uJJaZTx3d9cj1&~ip9J;YI2WFS zp_(I7u*Z*|NOzxZ3Klr)`MxW!RK}%Wt!)p_v=k-^NpN>NPmiyDSdzHGc=s(lFQUTV zZf??7zvocy0Scmx`8Wtr(PDOU%U%!iult1FlC&669+{Pik6q`CH>wBzF%H07p=U+o zQJhlI^I7lK-*sz77NAr%g%qr9DL=oU4NvviXN^g}w!F3Q#kA;-o|I%myN>z!WEpk* z%v6y!vod$?e{2TwQw%8M-QD6JMn_h*J|EN0y_MO-+v^>RW=1>_|CPaxv-_omx4t3t z2169@EPYQ|YtZ9%f*!oT2ebJs-Iw=a@H&-<4r-od7^tf}u&|==2wr0!_nd1D{4Af4 zY&qh?+OqNS4_kD*sYvO$pW)mr4s-jLgxS9yKbNJI+jU_kCe3rGvp2M)(|gSRyYf{~ zPnHQGnbgvj@YgAxWj4nNsj#rv`eCe3V*J%Q#`$AwXLpVXmbk#uvXqOKmY|Ut-V@Wx z$}&ofY*jA{&_ibRgTtpAgIzJE)%N0I)SCv+6Kw>anorj3?_&`lbqnj;MVm1-aEGMg z@TSoI1p*ka7y4`HduZmbUu~7cJkZu`vetU8NdUWESN|uvtDVC37gp4gw4>FS>^7Oc z5fpSc)sUVap1z)XWoe!yf83Dr{08o(YnXY}@FAV3=%UUfC(i9A&qglr;liEk@XF~j zj>};&i#}N2?K&rjd$)pD@U3tbTd*wNW(3)c{U*z{0!){17X+CAiR9KnQ_SXzsb>t_ z(=8CWu!UA8is}qeHwMQJ?Yuz9h1S`!)eddPj~kqreo4uDV9T$$05hhaj+$DbqD9KwrgNiypE#BXM1mI}+G$?dlIx@+J{zAwqFLMC3!zoOs$f{*`#v7-YO zZ04BMy-QJ&U##E%Sh~9K=AQi;~pjXtnVaWBL@e!w*Xl| z>eYsZg4gk^4$)Xs8)Lu+QdMJ;IPS>XTGmaSwy`H{{IBrL;PWZbgTP4l8UuZ|>v|!S zm)r9I_y;MPk1Ou@jJv501(sTOf7f}>TyvwC`jJJIkJPajXs*wb1o)@KI>tSV`-vUt zoP^{F8tGAPi>g^4ED@GloKA!AB7UMa-`{JnyF0KT!h-!eVK*U#pNZd%~g#!K8e zenLYPwsTb~_{Rg@+4*dVcu?f(s8v z)*)u1VQ{Y%kdTlV9qwUHL1cs!5Bid+E33tn8X9`|D+3;juQ0D$fcNyvSh;DIQWwQz zOAc9ZF94dHG7AM~>L2~e3aQN5=sI?OPmGW5MW2E{F~O8uguLPq3To!UY(7_@iY0P<*-h-TYtvh)DKp+8dD7{%AfvwBMKl1?CatS1w)?vz z)0K%B(%8Z|m$Av6?VwrkqKmd(%Qb!E8h^%1Ebi@LoCGQSMn)N= zy!M!e*#h}Kn|hWhPF9^$VZMecBWTRsv zQ*rZrKV`-ks_oBu3`6cM?FtJhn9A*9^~Tyo)c~1F10OuBm$Q`Sz@ z4b6=?01of8?37d1qTIl%?$l{4rJ(_V2J~D(Kg-*K11D4BU`#|kNxwW1pFdFy4Cb%< zr_v990>zTWy$ialbos2cPKl|AWagxpkAp}*y-NzZFH~4{goR7wDb@Xpzvmp{v{y+R zgp#~jkVrFD&`>ezJ6Kc{?eFLBsF#k(rrA0B$fCoZjE^TXO`PLj)kQvKOE z3kdnobpE~CLy;N@cS7P26OG zDOOq*hICjuGz)Gfz1psj=E-KQ^u@XTDm9aWZl01A{}K5H2=K# zmcv=&kLzX+Q#DLWzM`RuB4=}x7Zf6ql37((wC+3nj{H9&{{5g`N|I z#b2OfZpKfXG$b=7o}|YRD7xSu_$|KxiE&TWr2bliD-r*sZYlkwyP#pNrN#K@U=<*{ zx0O1G;3U!Fxw9PjA{g8rwYthQUh3Nivm-DWj_h>0S_9_f40&2l#rF0KLD{88`b`2o z&N=J|^Qr`%*|Dxxln+kbPdu8#PlYEJR*-NzUl6^wC-NAT4voYGMr1WlUmzuY4iAsN zijyq2w>4Yawz_nrbG0?JnU_W_ zk8r)^8SpaF0evB*!zP9{#n%q=tEy){XILkCnCa5w9>Heo)lt`awF@ zmme=rE0Z$W${J(cdXod^M5OCvYg_K#dSeoBs-+DhJo&5cUtlIcfwyVnMJX7Fs?gVb zRhWMgBIeT}=r|o}RQI_Zj5FZmCnDbWXJX;)Xs$qy{&w%;S_z(3t#=7hc$cdxD(W3Jg8YOc7)BCMJK_UbUoYqcH*=DlS# zm1b@dF;}eC^(0S=aq1uc`>z{|_G*`Ux3|fF0-WmsFnnO6_GMq+skGT6gNi^z@IN@R z>YfV*24av1hPAseXc$=SbHR~&qi<9tF=#qBf zYxsXn`sdRp(IJ~ppfv#jVJ3ZHlFc5{vGU{eGTY5vLvwRudD*E{8^BH3W|O=-uAE!R z$ihNwj@GVsKRMa*%;A%Tos~9Shh15<;Fm}Q1Y&X#A+e6)lA^WT>bIesSA%gBEPUd- z=jpN=SzDM-5V9aF0T?REq5K(H+hI*Xq3)WdjborifB|SN_pdI~-6mux=2nG(ZxZ>f zAMjPh03YYW7YzelL0AyZ=|xnG4nx=cutV|j zN6Jn<_6~A>ti7pca-09AA)05J63zao15h+*?gHJ_qH2e~;C<;^I=%wOv{DfLYwHAc zfj>R@Eiyt~O?vLu6*aSwk>i%X4ZeRqpNbwY71u>mjDfBQ86pQFh-CY$y?94GirSgd$drFg+muH)WXTTGIcm?yX#!3CIj9(tCXAD6i(lq&;{8#1}w?}}YdhivwM$Rq#$cop?T!W>9V zdOoi@PWCm}5&rE4#^hN z`TNPK(H_(@+5$J8VWh;CQ7ChcjQD%1E758EC0fbP6A(b@b4+-1C1JAq)6mZP=Ako>a^6 zOImQhr*CBV5YZN+Cb>N$zz&O2oL+892u`QnE%P@pFmRR~3+R-%EBb=U6sSPd{HK|x z&ACQe)OZJjj(~+re(dp{{%{b(81m_90S@kTqrSbU?Ns&qV*6zZG7CZn?fs(*%F~V(TY3uy>^?GUN1(}$skyKXHR-A??#JaRx(+Ws3H6ezn%a$G& zu!^YMnmHMO|L&LGHws3h@{6aV%N^PLiX{an87uP|NdTh&c(7wA3E{FQ^9!L3&*8s4 zx1}MC(%v`U@xd&-nwL8|s~KhVKMwYHb}<(lY{6rZDlsK_2gIF^m#n~icqS!v@P=EB zGDzc$;k0HIGd@+7pWDIQCXkX+&)C__qFEku>?3WT` zAQ=uzdy-UN*w(d+rXC(q2hVYGZ~=EM0+A@B-Nu};RoE3E>x-I#KmkR)x7VMYtlEAx zJQi{88Vnzwj>|<>(9&d%kxgCb&a?1ZZ21UlOJ^kql+{;Z0&6a!vQy&_AQX%QJTXLq z88w6!SIas~>eA9F4F!mFQL*kyMvGCZLxMq!@k68lGx)=h zeq=&Fb8G@ti{~l*IDNlZ>+d`r_b~9gwqqL|6|J4O)4iA9b3K>tvbLze3|?MU!{CA> zIL*s*{*r;dih?v?W=845^KchoCm0$UTJjx{lI-~6L&NV^WTJ_EZ=z!EJ}{w*m|e+SC5v&2MCTpuO7Zb~35k#4Ha9`9+j`L-5W&H9MJe zsAze48TuoOWn*Ru6F=u?me3X!EUcWe@VTmPpASQe%1;#3G~O1D?;2vzLX&dg_|gkh z-!_HB6}{o{<`w^&{|3KC>>sn@z(&Rg-%p8BL5JY~HF|&8lNJ+W=e}f$>1U#SVi$br z4Qbd#MuoNS|EgmW)w4YIY0EzQdEHGwaGHxD=CdTp)H*Vt;g9)zxPB56vE|6^@yI0T zb@wj*&2OO)F5mLs%zCf{^834tyT(Dvz?A6Ck)zZuxF#khB5Un7si#e={r@aL)dB_xDzuo zQPXy9?z3*Gyms&(h5d1ho`l$D1rBW(?)>(4e2`(Af6l*P=?ai+c!ZzFjkZ-FEhMOd zJVYvvO;$a-j5{PLY2rP#sOYJ;Zgna108n@w7#I}tdakVOfZ*Vk5>}WT9{wf{ET5EC zmP_P8z4>0)g25Ssqv&h_Fll03wfMv495wQHzyUqnnA)r>T zNeXgf)#fwZSFqAQe%0=F*A7wURaL{q^w0c}(@1Fgwq43H#!5rWPl!hrpx8Wm`1=wr z0`tJ+69^bABL4WpFM^ISnU`no(sJy(G}%#H`Pg$ci(cK|lz!l5ary>7xsO*@M~g?{ z;9;PM4Ekn#uugM4X>AjWjugSFq=yVz1Q=LB<@!0#-`Qz{J-dfd36eQJlj%ViCDp~e zl!Etan+fUR*S)>MtWHk6P!e!(03K`Wis|KWd97!F*jeSTYo30}yoyQiIBt=1MZaG? zM?yut-8ogSp&%)bYhk&}+aAwWw@Fc37+Dzv;{?RSCKO>3ZvO0a7X^d!8(Cee;H(!{ z)&45>?}`3I0z9KmD!r)0bhH&tH}G@c6XQa|9srp8Mu5_?MoXpd&zlNpMG(3RS5puBTqU-6@ zuuxW7w0*+Fs0tGIOHn_^MR|PRs=Yxi&bZa5(NyqM0R*x9nr=i=R{z>f^bqbr->Do| zPEYHpDeomrL?5aYKN44gmO%o#y=P`cS$U#fckl7Qw?Wff$D?bYnBAUuA6tklUtvQZVqN z;jm1Ndcc7}Ym_;zM3z4pAk5iT^uQZrniQR4w}+Xe=TOVaIi0p+rNi+(vw9WQ4>LXS z*>uCMpGJa}d0H~0O9{;O6SY5DJ5~PPmzJJ_nw|m%1cTtWw6fy<6tF^UyVzwbt0Os- z(L7VX(if?uqN^w)<8|~rF&lk98|KX0-d3~L@kYNJ1Pm1Un(T1TE9pTxRAFLJGcuSO=7PU(uv_zu(N)+GWZLPceTTc#h(~!Ue*`0ML@=IBAOfS< zQ#m_QR6o>_qNWH?fOt@nB8-e2|MZIZM1xhC?I!^Fe+N&hrC{K#@KzjOWbRl2vkXOk zCJM2jeY4^+yEH2fTJ7f>WYJ7{gwU`s*9V1T$CgLP)<;Mn2$AdOLp{q8PQK1SO)#vC zT4i(%Fa|%0h)H~k7VEm~-1B+9b>UY~bO#5nWCO`a7L)GGYTa3mdbtwyXLPpDvqEb& z3N39L-L7ksiZ=%cH` zhlkHtjGF{%I6DG{WNU5i{=5tZBIIPq8ENCw_e+4$E?{vR`i?@Lmy3ad@vB!ZY4-Hx zFs!!0$Jp6f!f5rJ5K8rdIjGmrZjy@bx_%=#cu`ABzs--0o$NUEZG_3dd^L!T?Ifi4 z+&A7RpRf67%H(R(DJ z7~dUc+0X$CNpw02dGgckoXACuKWDds9YRV|AJqfT*s@-PjLo=g^DOO7V*jn(2=KOa z)}QS6ALL!^3`?P!6iRW!hL!(f$E9KIx#`GW{=4-fvpwa)3aM!zvho48OhSj9M+^J% zsLzA2Pe$V?vMzIvSCv{*JzUqENSu2oZr@Cvp;~`x3Kr`R%OuQ%Eg`T#-zVtvo_-e* z5dGX0GUisbM2z~X&<7rmVvS#>4KIeq>j0V@NFH{skI1IiPoAFFtg}AE0!yt^zthvp ztGj+=WGm!$6Jx*;vN;tBOjfl&m?q67a?uj8uUAx;^ZPBrd{0a)4Olwll1Nn+#g~u> ze%Pw%@*BJD*s(o1loOX8`P(M*GbblFy}YhGJuFUHLpCrijE0KqA-n{<0%oEZ_&SW2 zg9ktRd9bL6@qqD^W%ZA9&d9rfL^zz2PY1sb|7th#$>}j8BMmAxX3$4>EzlwgiFg?V zHV@#<6*A5@xMoino!gdmY?~`KkRr~`juHHwggEvYAf&^;#rJJGC~JvB#?QTv>SZNnvqyRdv3(q00PpzPSelPc2ieBS0wTuIZwVbEzJfhtjm(>GJbew0_JxmR3|$G_**4m&=4iBKD*_ z@!k)rw+s66#ArT+OU%uE@+NZW@p|YFV2$()NTx-U6JD)ptX;61)a)mmaF>;nOf(wF zDcgoWh`u3qg}?vqMT#RsQRJVpomJ9fCokEofpsc290|;%A%Wxp7~RO%6w7XXVlIe? zmA4x$&4#m9YkU(51Xr#KTB&+wmT~a*ADSbt;-)V-{Y1gPCH>x=o_E7ks}J~VbXWhl zj@@D(9UjhcGV|M*IRO+%p)qg!FZ~Xn$N<>N93j7+sWCRc$aN(0`p+*-#}oTDa1n#S z5@I7V(tjx_k`t3ED$1$tm43%m3@PbqyB(#Q>v&6=Eg&O6)thl(3o+Txy&zA$y#W~p zT!d^}TRRZs7UmW@UmnZa+cScL|K82Pa$xRhrQY%h`R{ch#SFj3=_!4uAD(KK)(Z2U zIA$`KHQwGn!N*%%T5R+7x^->P(o!!fE;`uVYvsvW?VSA??qpOp|2qhpb5!O<;Buw* zNB?it{{y3$R{{T4as4+8sr$#8f=h}k#l$260@5%ALS>$C!Um1DV0N#@+%e`Fus4Rk z{302pV&;?hl?gx)VKYA>Nbqp`4~8}Th#31+obcK2#P={PannBd&Am)YDBFlx?tN39 zuUrkiUM0z8y+5qau_m!GILtR4z1n&8CJvP4nN1P;8P82@?(6Wo~W**_rnwGg1jPgWvM#ci+HO z6@00mJx+PpLB-m)eV>6*KN3%tqTgOO3Qs=Z@QOkf+Q*6B#gR!&Ci34`SLE-F{^TYh zjKshY)m7azi~G>>DCVwVPIS(J9+{Wd)YQQ3wmYr20S%0lscfPNIoU|5UP|ncfkp>C zqnW8`+7X}ytD?QKVh|jRosy`gt_E9!xm>HiKL2I}C@jZi1nW;G?7W z=LNpl8+4ENPG+Yi-O<(jOfpTXDyVM?ezszq{Old2sRe8eDlDx`&c)N9pleZmtpm<% zJOYH6(9zeptak=gF%R3^?wry~Z5)JqIwm1T(z4>2{`;we+KJ@+1^xLk$VsiV_B)i%E6g!Rs{3VPe}s{L(jwB&ey zui1j8j^BYP8{=1%rK>_j2jMH0UJ`%xUgY(d)(n4`f83E*a0{iR1?~N+53Fm0!iNSo zt-VOt)Yb~HsLB?9Q_>Vu(u4#tb93X|aFTKHo$STP{n&Cv&f&+@r-BIVy}ofm7xb^L zsG8wohVi*V3!}(-5l=CWRaIA`E3iiZJV*=!LBkIQU%q4Pme9+)9a+L$DO`Hj|9%~W zwJDHu*5ku^Gm~7{u0;K^?`ub z3;qXRiA26Me8=I%;TOqmz@PqRx1E zwx%z){oYM%y1!q1ghX<4ONt677oLO&5F@!i=UnBhZVL>()JENEoYghy8{j8nuKy<> zD`MY;U00DYot6&j(Yb|>I%QnsdpM*dLI;rfWIIhN&KA!Ytz?DqrC&!o0G zdvn@*s|OKzNU}2+1QQ9_g>qv22ggqt*4kZhVg6%mdCh#sq)oc6ro@{Ub43EZ=Xy4w z`E)S}<>q~tNKc#BYasrSA-mI)%d1dTUnR2Fa3So2 zE*4+!^qrK&79dz*Y=g0}cX`QNY+tGtm(5`?1ug{17bye4=f+u;I z8UiwzoSXl>e+tcAr+%=b^ddviRLzx#rREV#FQw~l*uLJsc?o1fGk2DyWvOXtaB%S8 zv8hcAt}Rgv&^HO0U(wNwU(auLB7kh)A`S3+SDbfk4uTR$ zii?K?Da9r*6rRtYV;22m5ME>E{{*U>z_8H^Vpsc)M{A4mFLpH9WQw}(Vck0?@aCoe=H?NL zXonz#x2F48FvoGNWHsgFUH1Z@kc+BlMvV<~b6(!iG;z{k|D;}B&GVn^vfuG|fa{&F z>Kqwsnk|7u44rvrC+&*Gece}oRK7njn``0w+RLRYD@-rrs8_LajRE_Dxk3DJlqr%i{@X49!e+grUc1!L%GaJ#X3a$OndzNNNkyFj475C(RYKOkp1>z@0rZ9vD&TE65O9RW<<%*}g#esY$tqUtS7;IYWCms?d?4py6D7&9ONTc zun!F1o|`c6geDl@9UfW$hui!lA^o_Vi%W#nro3UaMVd~3+^``r6FQ%b*=ID8%L8Qt zH6&3I+@<|x1eYuJh3`;n-Ht~`_ypqI0CH-Dhgh%2asfdF0R>nB>0+?Jj_?Ll!E4G7 z4FeKG>be-{_diTba5#&^j}{LP%L0+87As11P`^|dpu!GG)?z7rA_i=4pdI1kX^o!Yt+XR3coD6XwVUqPSn}%$bOIYu1UB>r zvvq47J`0s*?Y`$Ylu!KH2CDH1QF3L&Vc&X2Vx`c~;=ky0tu2y}(r77(s9Qwz1o$>> z=aYecf-lyA+%Y`^SCj;W>ZNmnfkEUS9Q6INN^Al)29|Vq#GkraNPcgho+nKkpT2r% zck?3)b!9Er+t`8!L`A}cGgxUF03}2U)JnJi(9)#%N~Wu$@xk+M?JR5UqU$3sf7aH> zuSCs$`Gig=51<;r7Yg6S1OZ>%Rh}8=ib;b26@(@V1lMne-@g6q@n>G#Xii*lZQwL; zsAX^BYYDb*Vhnxj6bO9tjjTNNOr!baE|99>cq-tEE3Lrt5EW~(t7`o%p>N9pGCtK~ zi%4>;hk}h#T2jF$;b-n(wy%!Z00^{|XHP>-;~F^uNLm$TiR#GKcjYGrRSDqYdTKdt zsVh5vHA~Kj@tGnP%6#Sks<<32eg#$A#+mHTFKhg(_vgb?a=nJk%s9Fm;~kYP4iU8$ z#=d%1eJS?~$-9qJh>eZ9{2fZvb0>dl;@hx5Jq{s*zb>o?0}e>c6VnMn(?ZOfUe~`j z+7*xT-qFi5hJ;D4xBDI&ZGXI0|9c7&l4z*UtWfy;N@J3Yrc!-JOkU@@n*!LiW~B%b z3Is-sZKXloA|nyCddz<4;lPvo`dse3_x1u9C(Y6ZSM{FTpZd%fi6o9YhO?}logH-f z(O8(>!^K4-dh;J<@0YyHG?WZ7 z6pt}TlCr+|0)$nqjcY@fQhHUmvNl@h%mU|L3Nj+Er(p%&$H%~f#HpTaoia(f=>Y19 z$lZ+45GVu69A~ytYHIbGgYG>?Q?fqN+FJx91W2#8PGlsQ=tyV;U?-}Si|I+6^2!!_ zout$SM(+B>Ke&uS(jQGjMTgbcE{j)6SiZo%(Z2Xof8ghsnpR&}U-|wXk9i>%4~N|1 z$`)p-gh2DofT;deF01m2qjQV?$QaR3KuLg^+sMYo<@je=Qpy1YIa|GAPex@!A`p=! z3GcfPcBW;GScd5z4^nL zC^q(v`yABcW3wmi#bon3ALj}{gqfKA;PX0XB|w4(`FIc>o_PlSil^n>f#&%Vbh_UN zyy47xI8)EQgPk{NU$ zYs8|Yf%VZuGCH%NawR3Htnk@6x$5f-^9)NP6Msi04(uHGE%CJG_lW?mex04Z)EMcB zw>eyHlhH_(<8p<}i*q7V$xZi&^77_PttS@cQ@2*O4~!90253In{Cr1FEte}b9C7l9 zcivuJOG{doWo4g0fu94Rc(p-4d-L*yT1=K$3%hIVZESAulOkHRj`U;RJQk{IP6@0m zE9sbqRaq9J?N5N_`~sj|=Ii${%EoMC*+lp9)LHj<&>uRN1~sRatmjszU+*`2)IMdO z!*gm=e$RSTV()XFf@}{tPm4b1RSZ(O};(^s>cWTVh{bng`K$ zr!evRn=Rb&wF){osBzq~l)4I57%6}zGBWzet4of){BJYqSSa*`F{B3%xJus;Gx5pk zO#ILh+8VDMHzK49Hin_B@<~}UpMtWyioT?Z9v(y@N_L-yKcUfcQ{T|1tLR(jr2}YG zpp)+yMdpP6={h$y@CWtW(P6(qK$xm=0DkvWf&lToA|Hw1+E^0((BT6py@0{QIIm{O zrZGIk9nKq6{IvTIF&-^o4_(0vlWxFFOIx3XpVi2uE8+(SGC8!p+TG~k-7R!%Mp88$ zQ`d?n7afDRw4RQ-wCnaWsi>M0EiI;~NUZ3lfy7K{$YlGd^VRf#pHOhL8v<@2C3sAnWXV;#D4wK{KgeVO$N6%t~GlYOnYip%x&3SI*QdVBLF-hi5_ zt6b|P_Y-{R`YZPKjyi;QzH_j~a0ZwzsbQLulaoiQ^ND#biG!=lYs&uqv#mn7#Mzxb?*7wM%i zX^k}iZ$DiJf`uz6S5Sk9j0+3WOnY#L1W1wX0s6lxZUHVTy4%5oXbGZwdSQK}cM=XH zH8nCuM_W}@Gh~Fg_xZ&}R7A-2;kJ~Tws1fk{?h*XvW;!bLyrM5B@kLlT6(R<8xvz9 zHGFAtPD}=_e#t$zysfyZb0_U%Y-1=gCg!CRL5vKwRp^>xP#n|5lv|xC>-U5G*Wrf| zM&Aj*ZipR^vZV6)_5CdOAO;#5Dtn^^Mv{a`yqNLpM|MvRw3kUsHFtMOBko2pJ$AVa z+&X_({l)Db<%%OlRDOO|RmZNI_W__EF+0t+ObuT$D6Y*-XmF{&MtCMySpirYZPZuD zz%8dAAJ&3x=8UGg4i)o!I|Wp(WqOsbd|oq%H}29+JL=jN&Oe6$AI7(Xe>6P83~yn1 zP7E$E%b}s7rtJLG!XJP0;RQ&ouVQmk0HlWb;srQD9W8kl)ciI67TNjKO`ukTb zC1uWCG|lbj*ixAi3N0}&l(crF7J0KkF_^r_{KxU z%@q5_hDtq?&&X_qcb)FaoZ8_qI11Vea^k`kI|sW6&Yd4KMf`|JQ3_I>TV5uZ@aRBw z6&;=#9j-e$MfTN;*DN?F1sK2Bgei^*`WiOJz0Lgja}|A_9b*rH?F;?UGu+cN*8fI+ zQIZ*n0SSSMiYBM<7W2@UvO1~D@BO^c3B4?_a9Vw6nrWBIMu2VCW%_$= zkM>SRYZ6V|3q~x}-&EvAN|II9f_Zkv;cn*jM&;FaiKd*fq z+?i9?5bXAc4(#ng4Fz<;$6bibv0UX(HV>IJ)Wb2%(fA+1&3VMoA;G0(Wgw7=i4+LL zhfg@zVyKVpkF9N`=K zbo?}J@6_Iruktc`PHc?6%-2>Nz1kKQ6XmIF{)Vxua~>}Fe->akeA&x3BM=3qke7p> ziCjxd*pCJN{TG1kpS=iLurJ>%tWk9_;iad)JHtUj@c8uf&Pf?e&FPBk2nn)S9+wdJ zlLI3uU{?i}#Zgf)rhe!Bcd7%Be3zBt-R`gLGV9x&4=lo1N?!rWc@z-Jy4qNn_#uNY zWS4x(#2d)Sh{`IepFt>66ri7JNl}3jK!j~M#c)-JIJ7dJV=k$Oiq!r6Qz{o#?3 zlk$o)_jI6Z){^XhNdyrBT0M6^#APL86Uw%~>du3Q$b;1GIzNk+Jy8Z6 zAd_uzAANp#Pr>^QJe$5ORb1A)i|vJz`SEEuB`VSAYsAsUke&CN1z_dCzH z<~TGo$Xt9_*!K1pKy_+oX)EA+uHts?ZeH@%_e*D=)zJiU?}ZfwBA~R4+IH<)NYxJu zi?X<|cdPd5&s7Ynvit-C``q_(nQ(;LTd@7wn%(Qgm{eTVubh4nx{8XG<>lrhoCPj+ z!>a|DR}op&f{ciSjTe}F*cj2{N+f@8-V`*GIxn$=EG0=NJA4Z zCpPgjGJL}!>0s-olAf7a;4x;`|SyFv-6VqlVN8jD^(c!+Y z6?xF0++yQJ5^A_05iNCRBlnsc@WrX4%jCo;x7#}_4NasmBB#Ik;i(1i_1W0lwmOcS z9Xt?Zyg@%TkC%N$hU2(qJfs8!gVj{B=({3|KBH-+8EsOJulhu`q zi_AToz_MdKCQcN9N5IBQXxnjlbhI13=-K|??y(*EJL%}Oq6u2JCO}F0cAOscZ5906 zomlV_NWI30m<)6P}AX!z3a#vOM~efIwE{ z+=fo82P}8X%CDfP&iukhZ*@RKf`e4>S(O^}Gszdz$^=s3k{c2W5-PB@PISb#-N@7K z*<9#itoS;~QwzTc!!mX8(iX3pdC9xBrX(ZG*VWZ>h6$R6JHNP+n`}5GJzD?UYff%l zaJI5_2*HB%(F9q-! z4Rq?| zVe;W)Vw!r2@0I@I2mNem_oG47u^Sg}W&^a8`VQP%k<`e+N1@^r~dV;ZPf_*-I{M%3nG zlarKi=k||Ao(GVwh~!XnXy$Ok#T6d(3uB_EO-4aKBgPqKqAo1R%X+zW&&vVg?&r_G zt6)eD0dnAss6Nkbd-jrmdY-I4r#qP9T|7&Ui?0>(*tJ%HLqv4d(BOjl{PhF~xTU3~ zUf$l_6cl}iwQ+HA&%qLoJbT+0X_}RUl7{iXgR-6TWWj#?m$EsGjy0UtGVE%l;SNat zX{gHp@yf69Dqj;W==ee|&CcO|eB~K3$e&LGK?Iy~`@YqGyj`!lkdc*+IJ%oDtaD_D z&pmMOtTb3^{)9Mie{2dJw#M^$dVHP_%m7~SCMrgHzX>gXY3%Y^T(F2Khz?@7!iXWS zDh4jL6wKP9QY{4PIVqXfl%ZoW>&XYZn*qONsreG2%7hnE2Y!EpQ7*u07>UBbY*F70?} zXgqLY78Nyw^yK`0g{qDjq7UyxN?CW}OhL^h?f>|U1kS9T9`kl2gbg9&$e9)O@6DY) zBv0vJBye;9S`K(y^mNQPks;u$115+_ckMJy%@mFA3Vw+<0#jBOe$Li9X4Q=n`|bbg zyJ&`GDvoelvmN4+vQLEJpaQR2Jn;j20S@kWNXHUwEe}7fnV}&-f4_RKD{A9eh4eF? zd=XDjofQfR$rf;Qad5Ek@$rcXG&Z|$9uWufQV9tqmxhL&9b*{oRV9sfexVSQtxXt! z!K??{iIBu57fS$st-xc8?@de)DiXEY?buk-F01W0IB)=&jNc&=|I+a~)g|lbokN>% z7h3pgTo3h?Wy$+eSd$eYnt9n7RDvIsKciTkwQ}Ur*Yh{P1J^rq$lb0B@zT9veapmF zUsa3cNm&?}s=SfvTI1^MM*NGg6v3SSYBX9@*UDr&H?epgfZ*(=q`%`;t4Fy(Vjh8jA1!05H! zM%SSh8?iHWp`r+K2SB+>b_|3>wys923w(NO{cz`d%7WrnLJ1K$MFHaryvo=F19oQS zmX+@p-67jC&@nkr&|SP<$Mm>pBNKy^Rh5i+xgukK2ge%~W_vttilb!UoB(k+0F6BH z@SN1^GPAR?F>ZA}KLN%EB;6(XB03`@!@TXhvZJFp0xkIW_iAQFt7GQK8h`2^?(Q_e zb8X)1hI{&oav~i;{s}$%@-?C&$b@`PWS2Q^&?ZtQx&t8tsh1a)(i%+JW1}NUs~hkK@=K;z;W=;mdlObWDmM;ItsU_w)MAyU--3P3?sW?_z- z9oLko1H1|vo1BUjHOQ(ET`39+zq4(ys#7yPvhZ`~S~YwwX{V3xF^^e?hSqiF3;Pyd zwXbblUTslHOVto8?n5|4gx=|j&m}!dbC_{fXl}T>z14Z*s5LY^H|zsm1&4eiY0iGM zU#FFmkXT<^(o)m++N+-0(I6$wNwDYlne6+!zOkWUpmVcX9D=cd2Q-hn%uO6Hg647gIBNUu>bvz=gMSRWtly@rS*U@zZ%;<?+RRRGmIe>kU_{#3(l0T&2E4p*!j2-Bc6C50bj*gzg@8r>CW}~Xk?|Z(T zGElhu4CSaCM_Bw99emf=c-z>RFXYd&1W*-`afQX2hlvrudjuj;lBraiHW}orV4CrQ%QU{{2!Xa5R^V-p14 zu%?#C*D)%=T?`EKnzdJ7eo}ke-f>E*;~E*u&mbSzOKGniXmWCBPzyhDf!Tm|ea%v@ zjNftt2@SP!Y1~$xFa;0Ni;s`rhm4AvGh@dEUU0DEvqvA@#Fn< z57CA>Kw3gNq(Qp7 zk?!v9+H}X6?|IJi{t55C)(^l1d#%k{Gjq@VDP=)EuGy>3?f!+l?CflKiGO@`DV&^K z8GO$CJF2f?{9cEJUwaeWp2?$=FqPzGTF7|NK;B);K7KNKb^>E}Sv38Y&=zA@^babsfyHc#9)I;Y(W9cU`}_SkrN>8Z;uFFYd?9`2;0*g1K% z)pc{MDqCtA`uFDuR)2lqh9Mv$xnn;4m)%}BRbAcV!AoFa0r`GgKbqyA!tpr{_`SFJ zgviQBq2u6mjcAl(wu`;lKS@uQoh`j6F<4xh*f?>>_B9k%(Up@EcMD-6KgAQ3^lP@h zmNZ$9iZZ?r{zTVbPF7yy>_RX{LO?pTkD6KSoB_`Ao!*Bjzuqlmq zWT5k0fW<)k(|ErTv@m<5`^EDT8yBag*Ro=pApFWX;>!6Iq*fhwK>NN^2j02nBLq@n zW0Swc+-~$iMP*|7I#T}kzi9~}U4;gOHWUjh=-$cxx|!Kxp7AL=Lrr~-oVa<>UFJ)cW%gxyvojN3FL}Ld?d|HyXH1=0x115} z8E6DJ5!cVLx3w@ShCRK(hz^e7lauof^Wz?%OW&og%z+hV;PIWAwMAh0w@L1!zbMwQ zLf*f#IST;5WM#PD%c#V=JdmVDiM-5icK3=WYHG4fU^?r;f&=nBBygG;R^CU1+{Bp) zBJAn87!hV>^nv@$`+n*CmO_bXgEl+^0Z%smEqOCZNdv`E`fD{0?E?ayRase?A3r2g zQF$(GmgeTi9nKSFEiC$1Hyz@6`*?PJt|SaUu(F=*?a{%YN@k8xQBi@7MEr~A7l5;q zgY9Z6BeJ;oi(pBp6%iCJSXK4cKhvF-rj5$v5FaB39a5L&plA{`?4!8nArbTp1n3 z!c1OKQP@AeV(W;(%e(O8d9#;vOiW1Hxa|PX5QLF9kY<%28UUNw-EEwmZO=^{A&L?E z%k2T4{0(U^#P3e^S8RWGtH;J2r--+SR>7(mo6O(Tt+LXaM|>^3xyhrRv!~R<+v_wJ z+GL(mO_&MHwpOo$*yvR5P*RgGM&oQB9Qb`a7NV8tzBSb_ff)O~5XuMZFP(zA=jSWc zCWioUF*T9B$1KXrj>74}PfTo>EoESOe%K(RgzdT>y?WVGWw z8Svu=6%U8rs51lx4ZW1jnv%r(fGq0 zZ)DM5sysQ4 z>S1sAr!k9>nSSFcY!@*yeJQVG_vTa|Xz-?bZ$jL2uQ;a7P@!Bk)#GDa$u1_y2v~%~ zZcqMJimnN*Nezn}EMG8VjxIkVzKxCR94O>Sqtz02HhsQo=CWOuR*?BvB_KT77l)7M zw7D^lrkb7s`}E{-{^cAgRK4k@fPn!9@^u?WAFkCO6HC#JSXIoMRDVSh?S#Fm93P+H z=H|){2a~NXRgwpe|2&MwET(XSSc^3}IEqx^irY;I^TNKY!Luv7wpEat=_zzqzHaj3 zlnd^)VIXLhK-w`8dFl;=|5gWWso#|lJs<`<$`-LB4X|bCuN#^s-d>Iz{wz`Njr(yY z*O$@q{DGG@KJ|A~ubi(D#>m)d-|kj82KL{= zn&q40-i4r@kVEv>zi=@wc@H}~dN5-XulJoc9`;yzlIa7)y6AVV#l_JVj}ZXzUx%YM z>d)A*-ZG$m(6fD!hNe4|nIb}Tzc~m;Mf&vLmgbqoJuxLjN0VO~--`d*bUy@~AAiV8 zTfa5vA5JU{eF?U(GssBaA8|@3OBZnG-`b=lc>e|yvsmEL1-j5M*@GJRX?JJaef3g2 zd;FLrE$|;T(M(wizHpGZj|WyxshxGj^3>84Hzk9PxRjE(wz9hRd3pjZndk{!?$HTF_d_e;%K*I1g3|x`_(q(klXNoLiKE9@* za1@*9-JJ#Bd7iyr}p|0 zn|-|SV(rbW@<(1up79<{TA>>v5?Euo+uo3OyZw4B782W6L@&Ri!TW=5lfWd&lehOZ zpZtk#)3>#`!o+ek;J54aKI4NVql*@_Vj=KTcBPZ!GJo@@@oW%o53;-Y51-wALxm{} zf`1V1nI|PdKhC#O^0A9aX^Jbz=*nnc_Z;(q#1zZqD5#jZxw+Q-oIX6l5tndraUo1fRB%hh^BEN=t@m7M&Mk~s zWX7xdp5Z8+lS2iCc?u2=qBQ;j74q>IGa}O;dUrZ|{*}c=;n!K@)Q)eu?N|H6h zGbU9bXSVVB)1zY_u^I!@D>T%D6Q0yx&k@Nn{>UNbhkF!a6af8GwQ4F2ux6gMGzQpX$8+wU3&!yAW zj3j!?xCq*0>27b%>>v>S)R=sOuQrup@9?DX_N?Fh+{E%*l7UqVmf;b zbP*jiIzV%)_4&C9Z&|TX4|w6KZW{mk>1*({^)-@yOQ@cxTux)&%*feT(AD8cIzKZN z-G>qzI&6=&Dp^NMUIC_(gd1;3&!(;F%hV+@?Sn-a|J6se|8#FZeq5%n76Glxk5SfF ziex7XO)qV`=s-!|5-3NFFaG26C!LGG6GIW12FtEDTUb8S-(_GUq!4b&fxvn?y7w%rjjoU1(@qK1A?;6i z9h#Tih-iGfUV|%nrR%$gRymBYp#KOrF*CtWumvaJd*rio+m$~`O_iHP(Fq>Q`T2R1 z?JW{ww3P~GOnpiNw5p!4SIySn{$ccdYmhKA-j_16#K$0DdV4t9I1 zM@>P2ro8;H2;zgYmlv%<#ymy6v-TpO2}O%3SiFD#?c28-=*o&!n-IuK@wAOhZrnN4 z5b@Om9*n{i=u&W5fActZJ@w7ZW;^LgFy09px)guh_U_uG4aitiWJQBr#ZAy)kPbn` z&hL~0($S}Y0DJs!d?XT5kq)Ct;$lVFPqxp)v@DyGmB5A$C}Xvf@auWhJB)I6QK5^O zeBQtPFGj8{&sF40ju!?h*>Q5>=XiC7i&Q1kZlKFmgEK2iijto-%{Ml}^3lwaI=fnE z_MN_(X}IcnKYbFkHbw3`Nzcgg_v;Q z;UOcq^1H|YG-cs^WUt~N9erI*EnUIi(Qk6q5?^aoj2}?R*jHPiiCv@|B;KzweFqHn zZ`?Ttu_HN_$|yEG8k>>{58P+vvG|zq@rj=gY+ggw7H^t+?s;z((TH7=O!9N3`UVt{ zf2k{h&2&L=77~Q}$g#LKPg_TEb;(gKkA?53rsde1EX<(Ot3&aZs;>4YNwEOYY@kSC#g~)u2&(NVV@aV+ zvTE7$DjDldA^l`zO<*Fdtp zty^P3GMeKSM|?Lrn8NdkyFn;S&u--y>HqCikmNa3-A%lv|> zsPcv4-Qo!MT0m6of$D=h~P> zHarFjxYG~H6j+##n|~XaM zME4milPcOCO?M-Mcq14X7$B7_IN19Un=l!urXSeMzaSC&ac>=cF{zRSjBb_tmdKU1 zh7Tmi#~RFfLsGI4p${?=67Z0*iSg-)ad=2U-yo@ggJraUyJ^hEqoCo!2+!>s$I|8I z<<-@U)Z|ZafiW>L%|16idGCTDz!Jd-=k4TtfJvnIj0_oNqI5W|WYe zZyz?Y7r77-?kgu%z<=}28w>Hh#Rf#4|E3?lp<-)PX4>JJI<4bHvaN@yo(^d>Sy$G# z2m-!dvt8a$@&v#^JyXGEen}?eb5yYyrW%`=m=qx=7mJAn$k!TW zJBcpH>~Cd(H&wR?0US(HxIN8lADp?B6$J@-0WD|4x@CQk>~}a@ii`Ug_gh10KF`$f z>*FA!rR4!)RC;0xVJ;1AL{wD5@A&vQY|xnp>|*cmpLzGgo2R9Ed>>B9$dO9H_!pCu z#k#y_f_#sQgF^~zMS0ruc|HP2@k^@IchEy{95W4$JH?$nya77>9iOf9w-HP>K;a01 zRnWUocv)*pPr)kU9Dyb8U{bEguqoO7jGkAR`|oOF8|r?C2HoJ7l+{;ntjR-u6+HS8 z!nrJ>W#B7>5I{giR#sS2Rk8G*>Aj!>35=iS(TAEjBVJBUPT4X9X@`pHTYND6fh|bC z4;0im_yh!froe-Mvf%bdH$aDX-OU(CEwz&sq5iKRR8%>DetfX`Kv{~XIftux7!RJb zDnkn^7CH)--2-YM3z-P?NS)c)$ziF07~1L!-tf|=hnXoji#T-TG3j7!evxC^z051l z&D}nCuX}7Jll_%VP0664HTzm}$c>QGhTiZ+h!jy(L&vycP+L^Ra)TERhLwHQ!nD=N zC5n=U93vs|ablGWK#PmMh5}?{u#}XTJl>}~{-V@APadbI;a9N%+a7T`7wGW=Z{Z5laeOcyrL zVYu7Jp6I`^UZO^&h}1vt>J?23MC$G?;ZQ(M`CMh zOZu{cnBVcK%`wqw-q5^V-{i|(hucdYr<4{jl@vC9(UE0;k9@t<`!Myd=&g=T>$bxi z#+VnmdF{+Q>p^}To0z*92U1efT6T6r!!JR?!fFzCUUi4Z`>np42M-#rC}Jj@r>ALf zXWYVpNI{`@bk2sWxUiUe!^7xc(rtl}gNbCBtf4{3$IE~)iXB|FnF-RHuptvkEN?wE z=d0yf&jxq5Jf_6!4AS6$*u%?ti-~_JghUJs3^_S3S6}9nl0XySSuwU8{-3502L8)7 z1?j@0Uc(6v5gye2kQv5LN#z$M4b6&$>BQVr^JP59isnL3i0SBRpl7+iQbnuNAj@X3 zBH9tGD`=KcS}ty?W8pfVevst4$O;fpB?bszNHqKE7=XE};kOC32U1LnfB>{D$KwIP`!<;~4BylOs9CuAc^K|h_im1c z8p4H+T~3^(_EbEGGdx!a>1EDUFjcZd%|A9aH8uGnL`{ybr2kF=-f9XWBCH89V@^30 z73-HF#+^F1(A5@pcL#Ix^1=$EJWFd?1Rn**AscIDy35|5QbV`5Vflg~{e@fD44c0Z zK*&+#tWm`$!T|^b!!JVe=2+!pmG?!vs<s zg51DRg$s{s_sGQf0J7bTA|fShK>bg95#@@wAKa}rNkM=D;>5mL!_SXKDzr#NF+VX8 zDw@6hH3#%lkB<%nt9{9k5g6#`IVUDFv$MB1w$>6wde~Xym~6DQ7w0q+4+#mYoE%y4 z!(*RT!pvTdrz6DQ$weTO3SI~}Et#AxmM{XKcg*~=?$=xJLdh^oD(rU}DyIdS1+S1t z^h$XhG)OxOUG+mdxvY1@qM`xd*S&%)00Sh#0}ZDV0#d@tx(^NxE$^sb%07MM6S#_- z6eL2-PxFk|(81tE=m8yclYfDtUoc+;Jo-aILO(9I2Bak1>}Lmm(W$Ght^K1+XF)Ju zb2#hj>deE<8y(Xb8iwS2g<`(H$IacKUZUS}D_`PrVs2w&WMpJxZQgemAJJiWeJo_( zbNsjkfr9~$)cH~WrZKG|lTQ_2m)Cd8O1@YiJ9f|brw3`9-H`JV(t~g}D?UmR8wneM_ixVfocT++NC710 z`pup5*@MgJ2B zyXUeiqNlG!+HRSvCj49w;G#=1nVyfu3qSTe?(+@q2 zFV8oG##a5!;y+qGR81(gAjIFiLd^>f3FP2n@3Nk?^&(6lP5d#LgH_0mUP-={*|ZTn>t+;gS`(qg`oSU_Q`bdP^^Xvfkld?-Gj2Gzi2k~ z54fM1O4x+*|5-MD^coeauPVwfZ)UrY?3j^1tP+HmOZ&;Ub6&;&`}!IcEU;(F8TMaC zDR^Aw_UDXfv61xDm7|lMj(;rPbx(apMo?AP*HYEtQeKr)*2iV=Z1Es+?B8r06p@r> zRd!G|g0v4e-SF}9`mY8)l5T;_ztdu^fZyI4NZ{UPRew!rrGbOF!z3Z6qN(WWQ6Fr_ zk8HOwYHt|Ce|?blj~&lpaN^KKJ#=daZ>OmJF0gxaod1wZuH+!otWivF^v|uCAYlY9 zHf|s$R`xg@#q060F{QOC$z{E??c9HNt8HgzZ<{0Jb=I2nsBIji_H`jt1$q*bp-q?!fHDtWUeJiPWoEXd|65VPih$rzd_?h{888O{eyXLF zILXGg8sroHGt!yQ*=umepveIi(%0YT;o(tH2@U;I(OO!PI}gC^wlWqLT0Z`*h~(Pz z)B#8SBr33GynB4oaVB{(VD2;KK)@h?K!CtyS;T8*Ihn7nO!xET7@$YzOd6S4 z5F9mUbn@opZFMCj>Z zWGn{z(oE>;KXHjP{>_0lcfuN4puSR6L{q=k`yflW)%=3((s{*yL&(fc{7GEA+H+O` zn9T!xo37;VQ%v&y=JVmhZ=7M(Haq};uw)1}+fTzXSmNqt7v*La1s0Vu>Tq7@Bqp7P zNk#rq0tC-w%fEovIj^aeM>5pavU7PStHGT5FPe2QV(v65eRs5YM;kVvBjo2#KwZKB zUi@(OlFlaXpBy{y4rMiztlqd?OmMwt-YG15;kc14s>n3$;7DHJ1qZiws&Cczc~qyf z5`Vg>*8;FzoE#BR(aOcelU(1|ch(!$c05itOo$2C@#2~L-ZL^c+?z1>Nv?B_p@AIx9)XDf}Ix;Qs9) zC?ppcLo&6Zbf5zCPeWG`z^V6e%{W-NukWxU?ZV>WZSk1X_>Yt065D%PEd|I{<+|=4 z9-wZ^?RxbblJUS?uWx{}X32Z!Hd;VE9!rDnJzc!v>fO%$3pFER;RKuA-vHMg>gJ^Q zfrX&4z1xl38_fzc9{c@;tBgPi0t2DR@h5TxY@K$)oW(dCGcu>ahmJfHFV|879m3et zK~Qdpc`}kj5_46Qr`Lz&Rb^c z$xxdmmPU==xHMGx6BFZ1Ez*MoD)@5J+Zi9-LM!$M)m9si8Q-ZDRdx>S@S9RhCHGuYT- zC!v!O>}%yNLEXxv&HDMXy2G1=sP4-C zH0R7s2s_!^w|8t)wc2#h{Ixvr8BGVc!@lKToB8tA$}E^w+!FlwsNN2v#sy&NGQn1f zX-s)L!^C+O1U`vVW@GEwz1YiIdE(}^dax_>hp248hyF z)xVVb_r0ZgcN^hXipqq-0iGrD1VysJVL3FUm!TFHf&Uc7;F2;+ujgA9F*2dnX{oNq z%V>e3XEqp|6_xWOBn0HO&azHUSf*ahd3l6T_-GBJ!QRa^`abuAn+-9|t-83f!F8H9 zkDY9GtRG{Ew?`)r81>!QrS+8ygQE<@y($C!cA^Rl)$@dC%?vT&h)FTdc?H-9`<5*2 z&HIGjDM=`!u6`e?n^Us=y znFst@X*YJJHn-IN2JbQVIG?21$g1zLcr7)~SHQAU!1o@Gyc0;R-<*07{;8bwA>lH! z=nP)mjeLs67=Z&V6&caytamq_+F#s04^0!*At1hKt9U|OS7t3{WQ^JPa?1&)@o{E0 zjnAWRzy2_T1U#nYa;Khdqdl5tC}?({?{6j(1k}xcu;cwvDyYx-s;?|9W9stl>z2G? z6fo8EBC1)^QYS@x5K*u*SPlDQ=;6UDK=LRX`5OIp(;bh%^}#~;z*9(rR_DHLvjzs! zZ*60X+k0sn2$E`GIsuf7j7~f{q}zN@nEPxcHYXJH+}a8nyB7Oe@LBKa$ZepA%+cYu# z(ivZ)NT};by+prt*Gz;;3=v3y(Opd96@TR?@KR zo}2e~F)uS3+a5>gTd5a^;O@{jgAHz}~)I(^ukMd)xayXn+3Cf`l@C zA-BiyXg?82Rc}N4(>a2=fxni_3aCIGu^53;QKJWtguo(FMK1&4OmP=Z^-@}01O!A` znL*c+71>Wg)m8H~u5}#52p~rzjFyo?M)dO!0A{WR8D{uB`!K-DgB^L(DC{0S{+SKx zE0|lVz2}I72?_v3^_H!K4X%k7&n+xj*DbeSuVG+FTj&-Q9(K?>jAD`_oQ~ zM#jd*_Seb+4HdaQonKi`t-qsx+ikBrI^=zA?cveUrG4Ah%_9K@wq=Xw=y+^C0wUs| zjI51~3wgBE;c_jfr?rticWtc>|KRYZA$gyLja8G=i;;uH{4R@uNe-34oe;Gc1zsB? z*j*;q38vpX`eWE9rY3%ftmU@9{_B@KA(BGEt?dh+S(2GolF4}$T9pk;7!mo9?ACr~ z{>?fyG^_bX;vOOM$iE}Zr@KL0M9Byn`t7^bymXBB1N|qM{2m`kJB#*OPd!{d>tzXPv;8-LB6cxQSgc`u@d^ z&?oZ(4etNFjMBo~(n5}_0T386X8uj|5idauQK(m(f$n`+h^)OM(?K%>GpFf`AfFn? z6%_uT>gdm{Egb9XxxC!GR6!qPgy6-a3cVrbIgO-3rWN~rvSVk-vW7CtU$%A48 z#Jw;uFV72aN*{R9>#=}T=b7O<-u8eMoO5yPNV+Wz{yA~x5+9vcS}rIx=7 zkNcKuGa6{-0pHP97s=-td2fH8W{R(ilJb!vCTV_EJa9K{SwmUNr0K;_>etH=jxl3x z3gJmPGO|xoP}t<0@aX)w-_O?>C859q9%xbSxJuV(FQDkLzm!yzn^s%f;_YBtZM3+V zhUFQpi^Oxkp4#;3CN;$b|5@pHUtfSIfQNvHKxkRyK!4kT5f-;GgvaY~|K@5042}9< zhA!%P<$cY*`(=NNzg4dip+Bn2iGGPUS{!yg`N-k^ME^6^Dxx)d{8hdfT-3$euqWQu z-R;%$Yxga09SP-E3<&FQMP5Dc3a$Wg(=8|1xAUx@Jbl*E4hObxt3k#1Yaix7;Wb_3 z{5J97v=GXCar~l%rTX1h)!jz{bg62>b_IhZ*&I(Ri?t;GReGe98tLdf_!sMAlXX)3 z#@Pn>rSU#i#LAcKqqDsa=Oqs+=L}6o|3GO}w1W1&@Hy1+C)_i{%hp|{?>#!m_9nq6 z9;tIM*0VW=*%9Zv`9$S&yO4q z52CBeXLd{W+mG|%M|L28HJF&>+!vQBH&5v7s;v0$%21m{Q^k6#z)Tg9({|&m`;8R@ zf*(G${U>`fdJ`<%fDzE(ey1^#@gyLyrYb%a&^t=H)XI9}srxJ*)T+}K{lc;@RPUIS zVE*IXS`t$0C1=&->TE)Es{Ql>c`Hg1mTYl*5(!{&r8O1Hp=sa{c<|8T~0`u~Uysv{|o5MNO)TPEE8tBgb)>uIj zjp2tx$t=$d9rXlSU4uDGUgN@(KGQ%1EAFtN**w(f~AU9r!xA%k>8Pf56h01|lqOet3vC zN>5)DCL^Q%pXTBwKPUGAvDwjO!FQ+rEpCY(L^Q?`jZ`2$I!RwYBQCDGcjn}2_OgL- zdUi3JvAKWcu70`|RX+1=)UHi zpWWg;ZHY>6NsocSs>b1Lq&yD1Q#^H2#&+aa--cP3m%sNvfI<~zrCS~MDTq;b_3BRg z#*K@3xP1w*F3M^&A^pzy5v0=05OuIqx1BOF|>3u zYi|0q=An1V z)pscuV-9}gW|NG~$@F^O$dxobiG9}%+1be(pAh##(52l_BU8%U^vgz@TSu{ls;2dI zt)6FwV3eC9)CH=qe(v~kmkXUEHncEm-EB9*q7>U)f%VYQ0=*h{9v-B?FUxf|vvcO& z0v5Qj$0rZ7ESki&kJU*NsBr!sxHPfkEQ;|i*m^iffys4->&@_Q!3*j9{O{ktU$Rz9 zFAX}4oJ>cO*v(d8asrazIOx?xlrx))i@n2$*^-X-k2iM&sV@6B(V#0l^NZk=SgMl} zVF?Optg*wU&^zOYu+!6%IEMxOttHRXpB-Q6l-KOPqE8jNdHM7X{}^-HGq>6|w|WJ6 zY!*N}StiIh-9HK($s8n9zZQq_#i?W|Osb!xuievh?%M2tiUW9L!!fojHKy|@l@&x^u`*6AF36gMeD1wAH+W!P zMHT-o{;OZJu#$7_TH1H_XCENEp$V)`u+GvhP0mFDBA3VPJ5Q^6vcQ`;4}az0f| zSI7}`#~wr|G4M8ff2N&1>-$aZs!eh5aQ`ULkwz7XS-5R1$9wrMCKO*uTLp;Jx&&As zV+!^_7b=dOL^}fqHO_wc%7%g4%`y1&GFMfn$`%=#UpK0RHd<$=Z)J6;si_SEF(0=5 zL<8H=wn;Je0cCYt6}{SH?MLL;H6^#h5k6|dWMrl=`V{6$X(YW&9Q!O(hVPecpY1RC zJt1;pRM(Agp6zWM$oHY*qc@Xgo+w1T4o7$_v&#!PU%u27*3dv5l8`9eAtLD)I3&)DAn!3P4l!XbM^5rL#;Vuz9LXed@IxSA8`NU3Je&CpCgA0f|t^44tPU=K70 zXF&(^w(8A;{pxSuwB$@p8n8|41OB9k)6sId41|xKF%iClvt-IjUAofgKtMnUKt#bm zIbL7iIoddQ-i^+lh%8DmzqOX}^#5NjK)ivx&2e&sj&H6Rqd}!Tcu-Ml0q*8f%gI_% zVJsQB*Y`T}3#CJ&&nO_kx!h{tP-iM-8a~j48I>`su_XO!%A!59bZm6 z7Y-T^UQ`arhaZ$3?AaM`?ZwYvy1}fERba_JYJ4@#xgqh?0X@~`$nMYV*2!bseiaj!xmx)<~rED4?Ik_fAfck9bd2tHCk+PXMk_bA4OpsQ<ln=rYWMO z^wRDHYu69ujq``foe5_8m1~Iogt@(re!PUL9S{;iAb%V0p96w5?pZRq;vANOQJ>C^ zb&QNe@`K-q2u#gJIVg6e6Z2rufzO$wq^I^CGi0jpz=3RqYtHaK=go-%Y8tT`7F8Ir z4U>Gxod9hV*`c8spU1@Iy>n!9>XN+yG=a=c-rdh=o&<}Q7lSe!ac=XxHhh|sLGNdJYe(wc+w*frMN&R(q0OzYW)dyo*fToJ5=?}8 z$B+A1_a2RuJ&J|7(x@2%u07QZT(;A`Md)xfN~X3QiGfxEc}%vo+qGT3%4%_V3N~(x z=mlolwdSv)g$+O8=Ld|)7JEEiCY45B7w@a)Vrr(qr@xt)oXq&>^07p}CrQxide}Yr8GpCGlbZRgrXGijS7#Y}e5l^t99q3M zogc!f%WQU-_nkJ1G>!LxYlvG(@BEx9TI$=zWfCPKTDjIsQqs*s-B;8UV`FwH?TYEy z33o>TZ?-R}tz)oI$7d_i*+m)g-8}d2b~*58rbn`%BVVR0th%x_{j0)#zWuGGtKI5# z9VZ*?$~i+r$>n=G$0IaZwIWoXRYHC!RwkS#rxmiXyM1-)P~g|}#7zE-=$e7!N@B`No~gtI3HN{|E-tRQ*;|xMXkwDS~6fmT#Yk#K<_UlAXhLZ(z)3U(CW-$#*I+13L7}jBKr6lAl zTj;r6RGwo!n5o)x-^i!V^tY|Qqe?@Cty1x^!Y@nM)*kfBehacE3@34WguU<=8Yl;# zE%xOdr*OGN5OSFdzx-e^2(E8<_txp+9Kii*YH>JyD8AKSQr+2>qkEKuXLo#!ck%BCA3z$_Ry`7#SOl14=3k0>b?}~F9p~Cse%kG|N*1T>YKHb(C$T4|!oo%+_ zb{Z!aQ?^=PopnAQHp|VZE~(nm(ehhOUEZMPpWV-kneB^Q{dHlsqJ-RkQU)1dkvI0s z-^3Cme@hk=q;+#>Z25(8d2XS&{Eu)=W;pwpDLUlc*TVWLh`ctZ5p?up#Ds-|qx&Xl9#tLb3iRcSn-k#-uh0o_kC${1+B8qtW8-edW z^mz8w;=DCS-s#SL6-A-n7V*Hp;+h!Mw7CG!K2hn2_TtTSxvi69f)dfnbqW*K#W^!u z@sTxdPSMur>?C%#I4H7;jg`0B#M!J3rJ#tX+72&b%vzQ)?0J`X+f|4N=6>&V64h-XEX>hA`_iB$GwY`!35 zT`(!wO{E^JVxMGrc0Rufv(KR}sl6Vm5F_RUblkDN&*vCpS^kf0k&pYk=Ek;06;{w^ z1z$2HyehMojBmWlgT1a`3HT==0r_rVVF7+H*2m4qAiFUBq{v{);q#oFQ&gg+r3KX8 zx~>hOl`*^JgN+27dC=@#orp~XLK7il|i+jg_z41RhBL^ zs471Inj#eEjK^K`9o9&LDIaBpnh3; zFhGl8A-8FBSc;z_$*1U%zMgOYnVj5V9-Ev_tD1WeIgJP}W~2$b+B6H@RD#wpJi*Qs z$GL=;#NJ+o)z&JQnB;b!)(i{`hy}ZM|MSs&H6z8qX|exjMWh^0S3^Tv1sjJnFQ-^^ zdg^g^rl!k`8Hl_~^hXTGwzj2D^aUZ`>!L@YEA<;~Mi)cyvK&&}U%P;~O0w1MdGq0> zcnBFdmz!a*FflUa-YNWH_Lrl{-~nkJ#RR;K9ZS-O!!mbgU0uWOcLy9r zv!w}h;`C25+73N(PgjTD*188}m-SrHm_YlWD z<=cG~F9Na03{`u}h>%|iu_n+X?Zg|X7k5{${3Rg|VerGMlWjChy4_;4!}dYVCapXv z|6H^%mCUYQX$&c~y;hY6n^jkfyIFm({;UJf_l~kCo2@ejW0%0Nb zKIE?hKV|TH2`{zU28v}*;@y_;=kw|Li=7voZ;|2@uOOF~DDh?5-nWWLdzW*e6um39zlfvjjb(+O)V^Z&4^3?y z46j|kMFyn+NeZk=YxfOwwyvY5bR;q%Kq1VE^bLza3o91~$@<}P^efS2U8sJ1p+(!k zz#!ge#wLe#f!kdtPZdR$zM09c6l?8FWla?=<~FCzvbrx$h&UT7N0axH$F3y2NTsnv zd;G3Lh`RSZNBzvq_}%EFug*udbm(CLohmy!S=%}Z!MmwpEv+jVS^4)Y3@KpiuY{&} zcCO{L+vY)#6wCA!?4&)eXA_qZm7Hw(MWr%3!27A@!fbS|-o}h6BCp`jn9usvHygLp zJR8r$H&KV*P+^}q1<|~>drJB@dpXDdgh-lbKi8vrt>k&C=Bv;u;@3Go<#}?I&FGb8 zWi=ZO4_G+iHAi`jt0BmrlL(5+%QNw?_WPW!-CLOrCp8%#ni59jLD)y^tQNBcPo+t< z{$%GH_!`OjWO9`mkZ>8PAd16Xz5DEZb%sTYSgb=i9xE#$VKUu#bzwRj?uDf%wE1nP zizjCFM`dUzC9NXY%)-*pH|KU-yHO)hU2-#)p3swKNK#?W+RfXp^xZnZ_(1|X9(}q6 zkPw$oKVlq5zO&xn`mH2s$d<@r&{jk8u{^}i0Bfu`8MhXDKzX6ux8Uvg_)Me6#WmRj zD&4P_i&-JUz=4rrol47+q!8(RcvW@f@oxd=q37*by@WbembSGHPugfKEbi{^j3+__ z!K0fPA>AcJT#3oDkywG~r||fUL);`kJ8)$9;0lbWyx7yeB_j8vXee_ASf|`xizvyO zTUo6(I@o~9=qr3kc)-Z;uvS&)YWpYQhv>a4$M{}HQrMqz4`h$WzWAr70MQTv! z{i(+ClY=`yBW_r!>r?pXE-a*cZX~5GijKCEj2<$Zqt`)fLW5~%qhbHw zA1l?tgc1MG+rIX1#L?Um{(o;ZRnq?do$-$?{QnQ9U^oW5!}I;g{2xEy&Z0CKU9OMj zHIH5dA$4}Er6ncskox-iOE5Dck-Ib|CMH5x+hG55CTVGDi4J7ZZ|)ly5Pddq<(a}@ z)@ua+We7xHUms-5PoN_D|G9p}uHgM)Q;KAWTL6X8v9S%1M6Y}}Myl-wLc+tpe!z!7tgNiW#JXITsx-fS`v#WTTS+D+ zCZK4|;|ht2T5a=vsWKZ44-dy>(*BVXzqhxS#^>sDd-}?P-E=6i^tWR&H!9$MdI`35 zlx%Hp3kV44GOA}0?dJ#EdhjARF(43=cmYCof( zdytGh1LTJ`>2T+{+$H0%Um$gll2 znqT`{$GMp3*jRt9kg>^0c1}(e6%}is`9n`H!kBQlSYLHyce)y-#&}N|<_Caxv65g0 z!0hbC)>e>6R*UC7!87i7Mg@7^9C6UoGneLdZ#X`i7&vw=O~8JlB`7^TAAkJ#VeBW4 zc7L?gSX5Xzf0++Ta|I2a-S6la8Piw{#Qb2vGc)jPVB(2{_8PhPA_>d4zX-O33AP#2 zzM?YD-TD<^eF*sif|%SPkfW7WroHmcHbYivDX9qlbf~RwpP^m-qSIn)XX9+04Jk>u z4d*7=Hk6N~)n-M&Hbsg`(c@38^-{kfD>so0@6Y*6@I@pjU%!5Bp7j$HoP2x$jSK~G zqS5)d_VDfPAQ`ID(c(uL?!?4I8Z1d29RUi8><{hkE-qxLmyKGv0b~-z)P_U|$wMUk zZtVH+#zcV#WAiaet)9UAg-TwEtL_gI5fQDet<5*NK0iHTWBvDH)cWI1|LV;f;W)q@ zp0wijymRn>-kT{St?ZwjReMm{%#}`_oSNdYoRxE40QxvVbx|&?zpWuiXhd>yatS<+ z<`XP7v*oKNs~rp;en{vfSV#tzmc^x|i~?E#=%gyDs_FdhPF3I7-@*KPO!g)VfbFi4 zvazvg;#uAEc-(v!5&}up^fae{K+DoK6E$^wV&dFiYTp0IHQU=WM=W4V65V9F@wx2` z)zs81R`g_tp~R@hMERe-|MNKlfG9xLg|wAwH>wn?$vb05N=QjbVFijnAb{c7&6zi` z3xrPDF(8oi5%D-=|IfBn1&Vp(vS(9EoF6{q=(c)&`SQhqM|&}0$QT|1B?@!t07g++ z$$DCQyxdI4<6x?!6e9xBtg{x?A(#`^#yBRYp)p-)@suXTK}QdlO$S`D-}; z&-jFd&rfN2GO2e5b8I}RE!Im76$U+UkgV)%E}P}S^;3WY0lq^{<-0(U zKtI2T8!Md_kK5iz3Wzs2#NhAhS+?rx_)+gAD5Ju{Wc-*YpSrA;8ZKum3?SZXYx;r2 z0FN>P9*tWc;>}{veFOSXsl4$6o8SWI@9X1u{vMJS~yi{fhpK0u+5L+R2gb7+$@4#lgV=fdE-8YHA>TP*G9g@Bb14 z!XKbwM??g|gK@P*L`b>Et)1be1CSK?~#2qzT&W=VF(Ked54FO zfYUvHCFZ8oZPwuP1K1-HQUK`tffraE;DfT{Xg0ji{?FQ&leV|FgJXdCoS&OpYcW$w zH7^KzYHDgCf<#0`k+dli?LpPX$DK#59s@idC8 z@xVQ6`Q>4)Zmtyu`}+0kf9n*NoUA#)RBbWCNEtb!>de`E7e>sBgM~$TcS$s_w_th_G?sd75h*qCqi^Ai>yp_)TwmHDcGv37I1F2N-V_6>Xl zxUSg=Jnyd#!7^-*qz5OrgR2X~RBk`ON9i=XP4Q2h-ade1VPCHWY1`ipq4%M@0}_Db`Uqii&pK zUG5{H5=<`M|0K)j-RZ{Pez-lCFewLn4nX8HWx5mt=VxcY0qv*bEokHRLm9q&(SL(O zpMSre@yTy-anX7OOfD(v01JWu?(+X!tInVAnfduN^z?(%)3w(9;2OKXJ{Fgme!RQ1 zuz6ODP*JVA+;8|>@nL@8fs%LlMrY+wQBXw21A~J>jbI;KHae|CIbY*DMP>X@ zJ3C3k`=Y5S=HR%?K^g&;usD4Hc>C1Y*c$UGS`g2Pi;EMXaal~$6QN!2jAcheyyfEJ zO0Xl#2RRyuTmU!mC_FUv|M}V&1x<4apqQoshr_)z2i&o4vztF(cRZlUCM5h?>@Z?Y z1kS#f8CqIeD$Tc}pbE4#9#=mB1HwlEYI5D(p@fl%t>9|@!FM*sE-O0%`iQ`yfB^x9 z(EQ)OS%3cE%?XazH2ABOX!uhOgJmPc$Ir>l1@Z;89_O4E-yYVC0|NsK3JN5ujLSM) z-Q2D~#N4io0GHXm3BpShM0kjvjZLf30M2jfx*xs05*v1@H8qZYFhjCd>EE9w-bqSG zN=knD0&ZaSO2a;|U=VQQ9RZ7>#MlK^>PSlIPnO@f_X^*n^Vd7a04=cWpVEBfm6fe5 zg|?l>Hd$rfC`Liot7&8Z+wr$x$Lj?=?|@IM%E}^#LK8Yx$^0&Gad2eP`0&lj!Qsy( z9R#$~)M^}d6*gXvf*p(eMij{=5GhgIs%a=lKtRyl-3_ACFETP> zcavwgz!JAxJ@1_+a-|^l!MHCVU>)I+&@5MF z<}?1sdG4mxai#%xK!&eBn7{($vAK^az%6Y@)7e@K{z0%H#4(UCh1*_itql$m;Wc%M zZVA}8Achd|dQfv71>z%kgoJcVOtRTy8uvP6$a`5JD2&_@0v?jlP(>27{Z9?!i8BX` z{^!t11HK6cyc-y;1a{xRU>#&Nzttaa^8!%t$w_h%AsOI+ zkOV90=(MzRB9lk%933&D31tmMefS!&8BHb4%E_54N8<=)GI9blb2fO-k?(~zdy4isi=4k3{ko#{6OS?N8PQCWMs%uh1Th|d!K2+IGAi8OK9b0+-+th zxd&|GaT})B?c;^nP$Bz%(h4jY75GNrET1_7iC;=;Y7;}lUr6>b(b2*xf#QmRK|yv- zPB=EKU?0!7M}lFN<*0wh#!jb-RM#Ms^S^lC2K@M8XlOW?%3F8z6CWRcjm3U1U^3&5 zB?OOU4SZSYYH_!H5I_l}>;4zYiCoEDTP~>K4RteFbDB@)<8)6OpM_$Mkc=Lj#+Z)& zh5t(Sc8{dO2Og=#^*r}T1@`=SeX%={jGP8cQCl4xq#BTfukc~LMff6LHv)BB{SGyZ zzROWva&gn^HmmjNP3xfVg(us))5a;voK=8LWH!t_5=mgSR?YD;opKgTbS3xRWL!Dr2 z_!=agNKMi3mm=W0TwY!V{|)|lbv6if#-Aa`%>pK}rBiu0xViBmLOBW_?oNf@A~?b`ulJ%Q*t%gs z8we(aUm_qdCk~#RoPcZfrj*sKOWz-U)@;*O3HS0t84$1`D zSc6anBsLjY`2Tka;YRBJd(nX|x!UaiVgdduZT$ZzK(tRk`t+>(`}@D2X#WfzYV^2m z{nX3L3&a-fH6Y~yKRV3u>i!fcLVgNBH_i6W&OMmOYagKWGHD_TN(yV`b2%TnphP-A z7s0PfpIHqBF1SmNnZ|ps`nqkk{MJJNLXH;DvHAVhg9HTJr+1U3a!uia$+rWXYt)(#t@2#v#Bq%%eZNX@ffR6XN zNI-kw-h}sx8#wa=5*@f!5BZV ze*TA#B)n(c&J|7|U4oJTpCCgn)mg^+@67LwZ6+NkH#f&09OD$mR9mRWu1EH(*|b^s z98h1wc=Zw>a(a67S+p3#`wT%`EGin5n~O*i9`E!|PSM=Lf{hi>B0)bqOQE2qrsgk< zEi5Z8jx)NChK_FiI}}VQgLsQ&bFj02#Oea=+qg;AK1{uK7D%UXLiXYK?%o4a=jAL0iIq9Jocs?cnTjOc6N4=Y(jo&XXCxHblWF; zYH=E@Jwm+HW>;KDn{gGsgT@#6)%cs)naGh{_9Qv7{BKI2yqMWS@zdoN3T^yWuGXiz zqla(yF?$JVh5=k)c=S#yfvtQ2;ZzvOlGx;trbB<{D#pq__R~Tj*vcFRZ1xZ#Cownm zFBNh$^h^w3Um@P0xpEVlIvRNlzc+tnsd0TU=Gj_-$>$;7+cyBa#e3#>U&<_4ms^?uFqnC< zsVP|1h7$JtDW`BKoqs)?fiQcysrh_F819A5H)BrwdBc~i>NHq(e-_u)qO#W3e6!YK zCaWi_b$jtcIyU2C;*7R7#KifgW+tqZAG{2xo5O>}pTfnmr<9bZ3e17j+TPxzP8?3r zV|>3vq`~^m&y54b_K=AjHW}j&UunxMipi;CXJWH*+0b4DfU$M}2Pm2;r$jqdsCwKk zGaM9z8b2MO)D-0Ay8FPb%u$o`LR2f02E*)AZU~siKv{2jX`ncCFc#Z7Rlvv*tv&+_N zSP9Y?JLrcGU0tG}`R8Bo@nh?_LL?hr`~U+T!_aUa8thh5R<>37R2Gk)mGcVz48~4S zQka`7mSb+QFE=&Cz)%ubqBbYey*oImE4co!EhFRLaN+A8Owtrq(z<#5yNqKkUn`&8J;x1C7x?-`J*RmMGf+g_$wv0+EO1D_z|6GJ!nCkZ{xVcrih*8w zkp7pQ9mKo;tTJjXtBy$*;i+CVGHYXNmEU>~g_k-Wr$t2mlb4YwH<(UQNK3(h?GN{p zD%TBBY+IHXpfJ)JEprO|W8=aY36?O+us<=#N5u2?PaTanQx}>mq2LhO9ggR)`N&uc zyIVc=_H?v@qr_7SnuM{%D+n= zH04n*E`x$3TOM!J)wPv1zfMezEmu3$`1*d{D4H=Zqy=!f2uxcYFQ2M_;~y2-G(kZC zMS}SYAyck*{cKS?wa!WlcCr%)BjJ}7WB37|6(zTrT4Zm*4Eq~C*1f^oU~2SdZh(nXA$~y>tgN6QNfjw!7}b<= z@HAwyzT=%Bdef_^{%>#R!SywwqYZF#Jq_4p6lvhH5=h@Z+DyLS&dev%)k#Bu{Ii>V zw6ru~RO6ZKk!||I#k(H-Wz#{-gt=OpK9)ujIQaGM5OUz?oNgfTS-%s*KJVE)pdM^DLpzG;}R9+ z?ELI0+4iJrYuNqiqJSV)LtVX~xY*-p9Gk*m9ROt$5|f`REYQ=0^s3a&*A;iYdl*mLO-df!~ zWSi`$T4xO_#^#P9?F>4rd>P$CuUTi7kt*!h$jn&<{Z4B-(BhZAE@1c|Nk`jTMnku0 z$9+awDOx5#pfNv$czUimzJ(op>f*~6_&c}so1uAWc3wF3TiStv{sBpD%i5qqaIG1R zn(;BJsw+#kZ40^*GQB;iVq-0&qr-}g0T9lQlKrjrWP4c?rbSyr2^D&;ioa*X31!N; zhoy==33|rV`Bg1swhmXR)1w7Q7Ztpxqpe+!HO?1c4g8&5(yTXJobzTo&_YT+$Gu4HTrt2nuwMIkBSCr} zVc`@E(xL9?Bo*8#^CoP-333uUp z0rBox2i6!rki&-Oz|%3dEF&$gOsM64-9Y8ig7C5KkW!O@V>j2^;`A{?^z?!}DhF zc6b`{1tE(9+1nIu?450ngXvUvaFDTrFwRcipFZ2i<>pRzz@ApW&jR4X@lvC#{I_;M zAmwXnGGm`VB3`i3X$>+Y!c9& z{_AT5-<|k(>iDh8t$}XOTd^+nabcx!{(p@t?k-57dJ(BU6|V?F0iL$`PMwZMA!+to zGU##5F#QcbTrjg@GaadzU>y%8-ut{*%m9JV!PUwn2owbxFYQ*UXpc7-p9^qW|Gk)V zw$YMTQsQ&D_yJ$Q%;VzaQ4Eua}aHedj>Ujion-@KA{ycm8tSJM3HbE77 zeRi5!r}r*VDvj4b!_o0lFkD!j9>+&Wk2UetsV(Tq0M&|$kuH_QwS$~15FY@vK;TzVNpY4AuTpmVtt!^K9rxVsF0d8Jpx22gZl83lx60T_;s;jC z=PWrRC6p9YJ`Rph^!G7o6aM4MbzH)HpI`k4deiR@U}mo>jzgpdk6K(5TcvUN#|9>m zUxd1zP&(}PJA%{T$-h*`ax6>oWPkd=jbY`&mnK95;3yb`jAyz-+vgnYlY*_ViCK6C z*rVs_e96Dg4ItSHif(^mB?s4kk*l-Scz&D!#L4B>R_V9tPFkYYkihg7G}AjfyST1| z25vK|>a4Y%<5CcSy!Q9y7O$7Lw;UW(h(E=G&f-kN7e7kg;EiNVs9WL$_vu$8 zJR+f_@EGI{k!gYsa`sqE?84!b{Xm~vB%AevODhYewQl{dkUQUFt)_V!I|%cSBR ztxt)3B}gq5q5|saDNs)^E3EfjparLO1v{5!tGR!C&s#^@8q`w?QMAzZjqmm5{gP{& zwz^SeOX!bx6bz^0wBaMpwZuZo@>{33j85>XBgxZ0arX?Z=XD}_0`fUVwwCb8xkNdf(kPhPt#xy}(mo>G2x+cw@$!-oo zGI`N`8+&_ut#GmmG+2P0u!Xum$Uv`BtiwCl5nWiiyyg5UZ=#+kENJi9O_ACo1ijvI zU(*gGCm88H_IL;Rg}L3^=SaLf45zxwTewk|zxxDof$Vj6fJQ*zJzk@(X z!mp{eh(l#aj}Ak7xGr(wqq}HnX#p|1LTykya|Dc9(Na?areQ$daerm)$OZY`TS3Ud z#=SX%clP!> z2!2mbSsPO7?OOCQatqP0jR2HHPSXV+3P)TZB}JSC@bw0y|R%iX~zcyEsdY69p42Yd$Y z7~t$$X*Vd5RNzj!bEjsyn-Q;z2`@<94 z=I|rZOMg+f2A;4hCxTF|_XhS*Tt;192fhfQw(K!e&SW4_1|GgJ=ymc?rStjd)R+oc z^zl-YxuNN3p|h>qb+@9b?;A-;|GzLMwh~RK{nFpW57Wg~4s3j_DHyMDtI+Dic0iEsJotqeKT1-h7^a7L1 zV$uak78_O7)G~^SOiYe5N;Aj)S=i1V0LPvRb^75={g7;1ju$ESJ1eW-xaudAcW-AW z3cGj4CIFA!VcPsJNU4UAQW`<1PrWZJedrPeYAlb3c>ekk+sRQB)Yj3;LGiWe)MLsBJac4>ax zNnG^R=ZP-J1qsh=8tkv`GI}_{F|TD;%14mA3X#z>l+l#r&l9^G?O#u#qnFNWTnl)e z8joH!;@95-l1q@Cx)C->K*wtNa4q~_MkL9m&XJ4au{SD&yStX!Ep1a?dTL4+AlqR*$f@!ZZHG_ZmS_vX%V)A`)+?sirICkU5O zT~dYY%}ZaEPhx_3p{?^r7CvM{oa1@D3d>zo?9wNw$!N>3RDo^~cSh ze=w4mxVRHnJ_ak|6#7f;m>OR0DABO=mG3;Mh>%e(RspZ4LZjmrVq!%dr|C*{MP!7( zzStHXVxd;$(v}y=q7&V+>2;>-rH{nK=m=ll28ytW--o4h+8@O1ViYl^zIp&L6ZwU$ z%R#(XZb@St6ZTSW@2Bs77I`z@X`-c8GP8s<;m1TKlR7*eEtMmK0A>9&@~-Ebo}lLb zvJ}<6riPfq!?p%b$2YxJf5q;ojps+qPs)jFrUuga6EHCKb$Wc4O~s~a*Pz~giS_iX ze{Vh%N#;jOh?niUl)EHz77p7n?(hC6K;`QHZ7 z+Zo0U;&3wzLV?hg!mG0NUb{%Ye|AvxBLF?yMq^_;N6M6~s;XqvhF5lTbl<)|5Mqfef* z4H%}8vl$EK91@uGJL3e$E%xm$<0Ij4vwr0aPKh%i5;jnTK$5!(3ks%3C!?JH9SU6q zr%+jH)lspM`-0ril)ZJ80wpwLXmAKH>sDX6U}IyG%a;NgaaI!_7nk@-o1DIsNwSyc znVmhTg>Exy7d-O~P7UBXAJ1BUGvk;YGkaR=0(@OKAMc(`jLi)h62S)NZBoC~6f_d< zuy(!veo27S@iOu7U7_9=9sb{i%h*|ZCSHrH0a-_xvU1ZnUdDX|rls}eR8;Nh? z{u?h*n1}*+onw>JEH&kzpP|vv(Cb{I?m=?w2!ONBWB#}GeYygen;SsHyd0_}@8#uW z+~8BuH{qO~wDiT*EKrDSXQ%X?T%GNshg@&X*K8`OmhX3el+(RT$sTSW8$pK2Jepfp zQ1fL2oz;Ofj3IlmjL0Q|$#mvBTl$*H=tJ%1gBJLR?Ye^fioSVmG*;Zs*db#0#u zw1i28!BjO8(&HZdg<=#Z#=G@xjYMx>&Lz$xcEbccXAZmy`@g<~^GOnOz9Fn`j4Ch} zCtnBtNcZE4D7k$46Fi9H?axmbnHc2dvw8mfc>!6|U$)k%`1AYE&PEO)NejhqVt1sd z$Gh#-N7!_!mVjXbQg~0c!W2G=o3U7T-3Fzh%t!;EYuE^O29W|ID%dqLkBQa&@qBEF zDl^@3O&6epIi# z|1X@`{yDJO-5M-&dn&Dy_PeA=RayS&%1A_H)}X~((4al4X2B^)(<|scBL~Q^70nzJ z0az6{j-0ZdC#`C>Q1q2|yEALuQjc`PFLs?eb5Z$knaanYnCs+HMwo9FE#{)0 zgcqh=%~+N%l9(l@{gsW26>rV7C^I)JGq06w!#<6D89fSpEJREg+R0zxz=aOPE5XC zq4_1}f4A0Zw%gwVXsgs#CY`NQ*S;@-pp1!yi+x>Hdqpgu-+zIxm^%Wb+0`5ETyLuK zn(r?-*tn>loy&vLq$+#CO_9j^&2Z@hl*sGicY%G}4PoMwdwbNt=BQb<5gYZG89Uq8 zqRizEqNWA!Mi1828yIjscrNmyuP9$dOtJ%1V1YdaT!ZBPr7IS>Ou-!BSA5U+XSg z@ystNn40uewKDoFX6oQJagWapi{IsVEw9ts~!9 zP~UFk=4G;&O7jbQDh8W9?H>lXz(Z1+#qGFLV2o*De_*^!=c?-RFJ6aoR_=&SO}Y|z z_jG2N?b#pvM4zcp&ErlIZAEZ555A=xAbWd=~wSgo~7>ZYsjV3d+VJ z=_J0cr2$<3&yfILjQ!Dkj{yFVh*E5JvD)J_8umG9x$I|dTt)p$FwldGwbt1Vf9)nj z8~^`e0XBng58nm&hLPT#v9whGMh@sQGvBua)N(Uh`G>}xy+TPUzfXBntcg+r;Q<}% zG*~$|*DPS_n^>-Kp%Q?!y?*VFfs6oJ9Jz(8)NB;D``Z($)^%2J(0uCb{%>i5?st3- z>hj-K!;e?W@ru)Yyw>8GdNBh6!bnK@ol>d|ek@Hrb#0#FARKrRUYqTik~ThhY8_fC z#ePJseTYrn=eFvrjeUbFWp?w$A#llf3y0<-t(cX}jmXUMB*a?ms#ly7CJiGnXV%z~IHE;6g%>2TF_u-Km_<}!Yj)5+E5glE?ZJ6oxDjMm}#rXy|^|F@f zjt8;c=w3YbyM-C1LZ!mU0`8L9?!oc?K2Np#7IF{^j+E2m0Lb*R6HGRs z0v79`_|R;H+iB8mlmY%!*T`23eTL9JL2m(SIRwTu2c{xxUHp%kB7-q^~zvlkrLiN%uW3GaWj%GaEnR` z2&-O!!^HTzyCl}bFOusRwU@6xL3bT^AVRqfIemZ2#fAi3pP`#__c^=Q7=>UPE4L+@L7CwHYQ5%r`l#5~a%I$}Tz|wDHKRs?whs|n zLspiEI`p!R@t4!(nOIz(ME9=XtW{^V>&WNQUHoJKq?H|$r$_Xh3-e1`cVCOZkh=#C zO)v^m_lLl1;MG6nfp*4!_f>#I3>!;bhPmmJgvL2w7Pj zwm-V39wOa_;c;6(Ac#|&z(pcMkojz-)YXlq7hPM=X<3z*dn?6`HxP&gf7=+YaT$9o zO(Qv5dfl`B9q#KgnN)M%Ha=>aQBt+#Cc;pEe>NBGsmaObM!fK@qX8Cl{}%ULOkH_s zxo@-cX=zM8l9DyCu;3##b-0+pAEH`XC|ahn-D$D8wf~B>$&Fu8#Rp|^-aB_;urO~j)D8O%npU!cW;h2sVLvlVrx!0_i+uI4>Uj4FLQYTWJokvTR3iL7=up_r!=s{>f)ps09XWG}6fv~LO#LFkq(w`Ad@H^nDA$^_enCYi=)MZxudCpYhPTC%BRb`AI; z=g;_gWL(s2{D;an69LXPiZLE?jWxHPatDAN56$&Ttymh(%DzI;lVB8f29*5iN?fL1zl)LQfuLJi9$(C9?s-j;i zcCX5N&HQk1xGSS=HF!&;KRInBE)hnr=})p(qcFIAEKoolDiM=O54TqA{x)uQW(Y8K zq9#tN(Y;VcVSd5^D6pliHwf1@x-gP^Wocr8n`@>-2D?uEmDX0zeKA}4NaZq}qUllq z4UcmYIh5iICh7|pwY80Gt|v(qQD!T&6Ms!6edA=CwMi?ld=2oyngK1hJlzZ z?u;BI8A#*w4L8ALd#)re&DL!%wIt8kiH=qc*;hi+*|{pzs#vg9aBHM2fMi_ik?)CM zfm$cM;_%kXQwLygDxiF6-q$32la3j<+S2@N3@-zEzKUecVTx(Y&hG6I#$e%0&P)MK z1Y?umnR5B>*5N=$*8F&5JXt>G+P31ja*&Zr?9q_zGX;7BKN@T z#ZvN2y?SEMI57fT`!}u+)SdpI@|~2x>@caO%zFD2N_WdWCxVTQe*9^krvaH#K{WPv zkN$2|h|(8BZFn3Kbn1MMIxynF{NzL);vGyKZlhkqzBk7#qo^ot6`HLGLzR{$2<7zX zq~UOMgm@?4dzTQ-5SF7TM6KMTqwc(1XaM4B=)?&vj)aQ|wANqqJZ`eJjWGSFq^Hu#wCTl)_$B&okMlR53IQBHs+yU-*C2(w5z(1 zW*|bk0YmML(Rg{e-}4;EJDIPwWo9cW^)Vf-&h>~t0~?)1jzK+Tt}B39+LYK!v`7v-Z+ye?y}Qg2_`$iB;`LX zkE<(+l4trvR%8a^YfBIHPJ-I%=5B|3S-L-?Mzhz}L%Q4G4U?jxHa6zFr;GNbAI@W9 zRK{q-r36V*sJS@W+WZG&k6?5(3-O^2l>XJTUqeQf@aFMHkOxwN!6$+dtK;hkmfp z=0OL2X$5uNP3I)%?$3o1hi*V11m=a&2IR|po)Kv$GBdrMacK77Jh3hOf zqCteRS3+f(JDvIb>9s%m6g=@uvS6D3CNSn z$1mt}Zx)d~A4hBw**~ODahbQ7H6GH+A8-P)$EJ83zU$cAgE8jD z8j?+v1xQ$Y5?MM`nFIX?^g4< z@d7sEyBoB9INZJf8AL;dEZhi3c>s%a;*Bb{7MwA5Ps z+~5ltNljtxLpiR1bd@JQi&cGkoEh@BmYR(oiyONn%PqPq_*>6DsVO9z3*YT>M-u8y z54)54gYr*s&5onhsHl`TjT8#7{Mu`g5gHKbQK>L}Gl1UA-Mj`#*<9zK{&J-<0D0tR z>3_2t7&X-4bLG3c{Q48oKBH{q*D2=x8tc7x)L-A5g#5wDm|wWx-Xh>9Ce1;ijA|`E z^Rvcha@##J++qJJt172U)C&sw_}otwxJa%jR^q77h3o0ovJL?0a(Xl?eq>hLW2#S{ zvuigfdLmgV4hu{@#4^n77H@*Q{cT}rZobZJ)^5l5PKC%Q)BQ31A?09+P=$>>F+fIp zr@P~?$GchLJ@$T1>by(AsGfCEKJ*WfAKA8vYx{f6x9q%D z>h6c91|Z%INqbojO*w)#tSogY0?wa!?a^BZfp#@&NJzT_S^U6xRh8t|pwbjUe&_K7 zy6`kG>$9a6E%&~nyqeGP$TzQuEq>rb^s{OeBTjIInk6X#BK$e(3p$zYQBLM@PG&eg z9?JOm4HMPaxF1^Ftwu+`{ZvWb>vi3du&~rYPqyn>1gwX&70!=KOg3=3d?4KODq=x_%`CRVattABL}t=Xiu&(Gu~4(IPDGzy}xF1y1LSqmtFW)ccUYEXUeKr z*}(MBo3=pzmoL*who@_60lst#2ggFSG=ax}D%i->Qs3_CqF`H#r4vgn+Vt_0wYXt!t|tz{m{mjW=n)^w z*V@`1g3EZh`%WwH=%?pfbQh8jHClNtR{6UOP#F%vSRWO86fc@`wZ()lieS;6)<>Tz z{P-@^e(HD$Q;j5LgR0+5t|$71Obb1n&&_#fh4MiB{~*sxQaz1CH%r{nYps?O;*-}$ zM{M^(621H$cg@WK*DSzmDZB@W-6<5r^sMJlwqE0JaJiZXh-W&pq}RAx*xZ$m=U(sY z#3bstbH!xdL?00u-P$8bhpnbdUIf0Qexc{t6J|Br7HlmfH~yfIW`eVa$ym)uGuLhF z#R)F^nQy;!Kt_~ zauY!CX|JV1p!eu0&GW|2TWDYVer25o-bY>?VK%z%9t#BNk?VPkIz^w!VV))l0-IKy zMQgqfAFH;rMt5}UtOkb$Pw+9y?IxTs5QXK-SdI zY4&*WDPlzr#+S);7xhe5jblTErmLbrMED3eT17TMM#aX+M9}Wx_g-O8P)FFj6#tOE;4`Cc`WI&e7V{upzip0VmmdAHv*4vLQNN)ms?UsMXY;n zA}=k#pMU`W_7;7v>Uf4>!Rg;CgnBIi17X1%%%Pi+dA{w53*FCN$GD$YOR(M&)p)vC z=XwF*rM@d6V96*Oy0r!lZ~Obn30eaC`CZ=%D~17g=w*3y_Qr;>kq$SEYE3i&r25-r z&zFr?C9~DU;XQzd&KM9XW)P-*vkmgr`#LK(Ec}I;?!OLfOuBsNNi3+4Q47T`*jo)= zZbMer?aURyl`td2O1JZ{2bbk5T z1x6}iIQ*y4ls0)SMkL5vQcQ+_=U}{t27)iR4M9_(*$am@`pY|H1dKq9S}%L&WRwZ~ zhB|AL&ipa1V}6(P1ZG|r>zRW+gCzOFlC<50K5ohC;)j-3_4fN#hJR|)(gX%*xY#J5 z-zVz{uXoM&JgsmC<9)~^D6!BkF8*R7gC^(}kb{Ac%Xdu;4YiM%b?tGWJrd1X))p4h z-c`LjU|vD;vkXC+!@I7*W@b)Zb?i;usEb6g;sz8g+WyX~gd5Gi5rYNOYqs95 zqv9d^a+YZ|@ws#hq6^ZShTmmenX-$D_BRgB28Iujt{+*= z_NuqGwjz+Og1oi35bl1gv*QN5=jaO=lfc)%UgWODY}GAsv#^-6`EEA>G}r zNSA6IGNq#0i;Sj3R(w@H z^YP;v4Y*C=(baT*M09QKu;OECq_0YV^crxJvbhBW5`DZD{~-8vY%7nNDl&zA#{J*f zde2bVG4aRb*C>_U$~4rY`BwWOFV++pQgpP8W&jY7q0H+E>Vbp948sc&Eh>!ruhRt9 zZAvzd`{~#~9(>DO=mMMhHjzht4WiXHd8VYYmFC9?F4hj7pT&jn z5Ol(Km(&+^X?+kRBw1H@v2#i=df;HIadz+^#CAQ1dFKKBrMGl}V`k>^n;Cv3GL2k1 zyUYAXLS4T9T3J7ab`TsL!5T9*I=Fr50SP!bD2_Gmbt_NOA<qSj>dD26+uXK_yW1M)@XMwcs!7ODah6AV8UrlYo_^0?wqD4jt&XzEplG|n$^bDI?u zc-1)L8C<$?E{x&2{wP|sfP+ruci(g3R4MO-JVuF4Dpn7c<4_WjC-m{9<7%I7G13{o#OEp7EHo z{xy2S#7dyay|1$u2co2+WoQVS#O+RVs8R9oI4RL%42N znkVm<3FoV^w|3P=Ab51``MOWb&qTw?KRjw0(8Ng`(UZ;c4+K1xUQJ(Z|L%NR2AQ$h z!01|8S>J|F@Up-6nH)o?+4s`aLR!O0MpkyHj)qxF@>qq)^fB@pdaxD!!0o5A=}eo8 zx6R&RED<>Bzl3vuhSQknd)P?)wPL7#e-`)s!4F-}-9{6QAEwYw7USY$Q6b|KQw^2% z995M$C2aGa@*tQJd^Ao?$PifgKr+=L1`6YfzheHvXnO^js5gTGa7 z|8_Y~t#-vtMJW|cf0z<%&0@=!L-fB^VZi(!({Orvnp!R$sE+F$R~CDNgS+1N>2>V; z$G@r6I;u^n$sb9FgWz%4NP`&8f(#eqwX4mZ@t>GkfWP85nHNOZ_VB?Va{{X{B3 z?wpVf0hqlp5{EM{Zd@C+7@#3wV6M7v1;EZndq?%|L(TcU!SPb4OwXQMeZ(wyM|VYR zy^0x7kYo-wEwD`S{qI*)OfC+9Tupty7Z5UQz4t;Mdp3B_wiiu;&uev5EWZSXaQv;l z*T~3K+@(1`>?R^VCG6xu<@Sx}Rg0?1B87>cdyIhS=Lw7o^30GIM~Bl`12-j07kB$L zOOZ>WbiJ1Qho6`k2Pvp+h~7En+1ce~Svaq5msJtIwsY=7lRNZ!E6a7Yb#J`9 zSn6sakZV`hjSBtAeXFnW1a>D}C1Lv{sLbYv*TD#jU8gE;8&gm1?#s$4 zDKx$2+wS4X;>QY=50)5j`Ad;|$YXORM)nKrIci;ZSQpBB*h=VSVpfs6{3i>vQgUn8 zjFe`Ux)|9g^mKJY`mEht4h%Fj7MGWY_s$v0N*`MqJv<-5krRr35|4O0$ zSJ2c9B)$BGalB#QYAtV*_6uEXrNqaPE*WyWq|HArsm$Tm+#OI&Dfp>6i_n5&^;xQ> z+W0YZ4C|M2jHO2z=_~wgdT+c=*P6*d%eR2#)3J?L`S+}-=&s} z7Bn%i`en9@NJ!jI^~Gcb^UH+BG}KnBsA^VJl<-|0zVsmNlA(uE^u7N39x@enYPKTn@aq0b8FFQtlggg>8<9Ao z+pI!~Rm{SU{`R{PEz!wp%+SsepWC2+w?$8)k3O5KZov#jDgogxZ1mvR01!=7x&EUG z`8E9;77OuttZUq^Lnkk%vWklCXrjrW;kd&mtLU)eU28_^h`UV_r;04xY`{OjF>TI&?f62HjfEbh8u%$7(Sj1NzYm7 zm7d$G*$48Kooye1IEwheWSvEz;IrPtK!ELxt0QcE3ZCcYhK5L+gl~HCzkekqzX7$I zb+KTnvb0I{Ceva;Wg5YrJb|p5avKIgCi*)tGa-D3k(m)|W@+5O;E`IM`S(HZ5ds0d zbTCE=rmopaDs6oW_XNTn6?G~vRNG=@C`XQ{n?5t)AZp5;3HdxDP$uQF;JM~2=&1)u z&l{P1Sqb6v@B7HkZU#4!g3T_)fZ66t==*w-kv3Pcv$rFkBG@%G)KXCv`1M{8tk81- z*iuDG#ung#V0V=Kp~WB*>Ph%;c9N^h6@Gcyr;xeJJ6`g?pH{Fq2L7`dZn z_G^~vgy3sDMuM5!#mVE7N}n%eNx)wxCK;8&W3Q}gEY=-SxqSziGlfNYBU>Ei-v!BH zKV;4Xv95WP*bXz^2Q$gW5GgJ2N{J$-#0-9c-0yK&hDUt?u-!z`5 zH9hq1Vurm96OS!qPfXdlt1>2fXnC5`*J2p$T1pb8Z1n&}$s1Q<-#|a6^0G~ykKkmS zTNf`ziVpIr=A)w8oV{F8MuO;Pfq$Ql&b)l}+`V4CZ^Mq?mt%1$%G6|&jnZ(Sv`CBS z#?yxYHKwAZ9Ovvlk4mEG6N0V=^UUOgfZzGS-tEE9^q2|rA-~aF^HE*FQAPRqfoWsq z{R3z}XFti}?569`B9U1IJH_(Xgjl@8^$lB-FJ;yiovbzNRrRk=+$8%Y>qmXV%BB%{ zIZB0j^qM_=?Ik5;RG6W_`H`BMG?ul}>L+ioX1MvYNU%K+IjWr><8(XB7=SdJo4r8h zi&XXx>p6SCW%`BNg5*NZQx?Hvxsn!j14EtZ8a>*kEReB1+Z&Qizr!n(y6N*mzhZqa zt*1tmT=7jjn|fF~E`eywuCNc|EhHfSVX>R5qLXBGc6{QJ7<+!KOICL6EaLIS^9V0w zrF(p`$^Q^ulOYS}Sx*;Vh$l1cXB!eGZ#)x5rGDC8&nOGx?D_m|!JOCWU{)#G)&qJQ zno*ab3BK;0_`Z9e)pp;IBKC)#B{US|s0qBth`v8l9VEe|Z$r8c2`YiQ7daU8K^A=f z3^uW?wfdM@S(YV}JTbBwFFdfY;ZAELYGUEOz2gT0MsEB2s41yA1;RXY6RVwV9X)+f za|<;r?83MY9N5Ji*rw8yll_ysQ$8@soXKqVFX^6_*fDu3mh)3INP8om51Z;Xa>Kxh zb9=mMY4)Y+b^QyWZi@z=*F7p`xcHpiN)xEX!6?^zXV$oA|?ulaqmB9ln%XVC1Ywq^kh_!}}qV z$;Pw2kXc4v4-QH;5E|VR?;m|U$HuAK=y|&LDd6Tr->AysaloHEYZ=MkrJ&*Xgp@Uf z{b}PkuGOYu!&u&y=wXp4nK?c)F*PB@(#Xon{B+z(P)pvGBTDiSLq!dAD#){y=n}M- zuKyOeS)DzdtD29`05O{}8&XgF>I)Qjh4+DG23rS7yVFLb8sJ`Ad`$7?e2x?+rx`)k zZ~r2DO1RAUqmUgl;ijrgo~@7E~YuqJcj(B z{aJGQBT8zN%&(P7c?kgh+t0s?UfHk0h+ z%Tj*lBN?3(+LO)2Y;W-Kdb31ag5op=Ig8a>dY%33^%*_^$4yLcJN~ia{VH9*91KKh z1`o7A)hN6BGI;I_+QftqgQ~6WReIuqduz;~<5OhJ<<(75dGV9yb@9JKE_7JHpTX5^ z5O};f-1l#AX8|AH0YPdx3a_ghn|n3 zthKg#qUZP~K~{N#85UaK%qm=*-0}7*R?JD3kk9@#pn~&2nXa3BVygtVI{w`-@x#`+ zcw&>ON53Ala!~nSu-=S)l2`kOBCnTQ)IK}A05h95Mz(&QDz}@F#x;N?BjWe++~PiN z!447r&ocJ&Yi4GAz8n}t$olC37t|h$11U~O+Ur!#p=QN$yQ43dvShut0@gR=;NG|$ z`a*UcPi;#Qy>U&$OW4^djW8-!f7})b*BdTERRgKCcFqGSaa0lhqFM!7x($T)Ng4;m zm~X7D4@%I-_HYCk%HFba3>!JGO;6`yyv2uYvMxR>LZ@!^8A=-TtLI4S-oxbv}7{;Wr#Nat!^IKpX)AFtNq#Dfv_&`i8W3YuZqm76Za45*6c7LwnW zsp9$*sDfg%(Z*@ng&{@aIil1{%^r8rnQsSnq&OMPE%xWRTZ}8`mDzUNd>k&XbNK@M zk=|Z;%0Nt(wdNhJ*BCP`k>mM+nyMR(~no$m$@i+q%Qi&ZNY+*jnPrzXzkWQS| zG~(?qK$N0oRMU!v`TX>GUP_A zjtpA5cVtnSt%XtV7p|UmU)9e)+;^TVQCkL< z7bPVU_}vE(fqgt3@6EtY(pctltx;@-@oOxI2uS9#Oj%5e>iTk&5}PXt1L2291|CZr@Wt`5px{xwp#VChSO!_3xkp$PWHMzd2!H;` zc=AhqMa5&v`kK=f|GLdN$8C}_zO3H}|wMX>|@l(lOrIx@-; zH_W~)q&9Bj6afTw{pQ z2`PF%4it$LDKbL3AlSw(I$O;Y;^pY3*f?iqxgrt0lQ9Vy6Ql^amfPj-slGr9SuPUB>!)w?@Hc_bEMf-m<;z;k1tR)kAkZR+IqezL+P^ zJ55_X0Tjlvj5q#s#=cFH<<8PKeuozxV@2|d}^vUbIMARs6jJ~ zTHtl+i-Yf|zi-iZ#&4Hz+`3ymHo4rY+pAJi;Z?`xKg-7>K+utb><#!mJzpi=WO6cN zE%m)v!(?h)98l9crYHY4%{V@s4K0M^*#k46@BLmGQIN^)F;RZM$kGk<#)C+oE}^#%V6wD8yOS;| z@n^Ef<>+&aLM*hYgOgyvy9{{H<)jyeEL#@)4wu>g{A3}GOc;k~$_jkUL2>;%`f|N5 zFK!l;z<;)}qszxj6*HtNk?YO}Ha_T1@*=HaQrnS{8(?zEmUAO#d)4`}?_wM{!)ZpM z7`xa%LAuUK_1m!YmwtGx5PnNZ@qa1&_+z=>;jz6=3|EJudE|hHww8i)T1e zuIo5D6LBDrOyM7)RDxpAFE5YwJ)ON>3soHv)@EM3DRM8D!+`x&7W6?+-gdi?CB$C{ z9%5mMakS91H9R2XuT$-EyZTI`h(Ur|k_Wgh3g|6GVIyX*tzT5nmOXu4nqG4RBFZbq z2KI5-Yiofg?XtQCa9+BzS2O*@EL=EZD^0t~pJBK_F01no;)xaV4|AdN|QEQDC*if7M8QZ|&Y z;@?-F2qU^E&;!P-^CxHCz(>C4^h_MYv@0Cp0-Amjy1;q|K{L)-7J(4pn zLwds*4ZK(`uu%D`7&$6qpvL$UVyk~vE1duHC!l9~a&T-!z<>8Ab$pX~A16~%Np_K? zvGpDp=8Ues{5ux{N*D#VL~-(jAyeQ2*t+yIiUrP=f%)#~`R?EL%;@>I8$+h%hxC%F z_%w%u#9_acvEX&-d?%KFef^6{Q?h0{mtS`_{#HC%=}-JnAuT&1q=`tB6rC0puc&}y zWd4uvb=TO+b!WAVNQ4qK68m(9ZKo(XI(dpuLX@_@YbxB17#3=b=qIv%<*543#aa={ zUQ&!=3wF$}mASww*wJ#0L|@Uas^UjU(cr8w>JB>6#Gog}#Okz|t~|A;GJ`j>Lj~kE z>ZVj$L`(u?`Ng$bRZvsi0p;0X*Lb}(u+SIt zUFp)D15IY?(YMW@GY!Oq7VOjlJYhp$N?6#HXt5}hKtmi0QNV0-S{n(sCQ|O>f7Xa) zkRg|s$M`LA!Fi9#pot(%98p)t?YY`Mpr9b*IfQ@?`YUaM^zs|z`F3kXTX__m5Qh?+T zH#puH9vpxH_jJml=l%dAbbEUhe%4SAMyRpbi2dVqo4=wcelvbFKE@d*UAVMbihy}^ zd3ok93E_e%;*1Af?Il_-1R!1jI0hhgrRh+Vk^S_6ffn4ci9&-PySv zV~D9Ryo5Bi{{Qj|wm9{W=UnW6NiO8D7=XCNj=4lZd%Iey!fMk=)+!~m2y>&#bDwf1 z9Cy(b_EDLD>rLJ#)4eD)ExcfIN_rdV`Bck3x$d|W36=&@5I4Ourpg48y{9t z9;L)VJS?V1VpYAER7I?rq?bh`JhUcjA_|hE=hX%3TyVaHm3z9N(Ll&$7YM=Z1(bDS zss!o!GQF4e-MW_(7|9VC<1Vj^+y*nJRwaZ!y46eHt?GE{L7 z&8h1WLpWvn72N$hZ2rMP{0=T|J?}!rB%}9ln9|)Vo`Lv;>&pWJh=JT)!v*Nmd~?G_ zj}dt9f)_?;s7&Fz!|AZ?@4z$?>~`w8^l8cI`tnM7C&-hZX>UD23J3KWTXE2|y2U@E z)$yP(wuvJ}l4fcK9r6X)aKxNog?}g)5`-nwBt_+XO#CSLT|=h3b0|vvJsp3UGnczmy*6#0_jwkTFHXbIXcMkTJE#haY*E66j+a*`|Z{ zEwxpo*+0|R*WPBw!_X@bUZuxR<%VAxJ3VjP2QBQs+hyWtaJJcFQVFA^;ygHNXH3ZJ zu|k&jcCT3H(4}>`X0}7-rq2EeHpxH1t)^#^B;>94A6OM=zlJtp^U!N^VrmnV%tESq` z!A)LKq1o;HsD%pyEU7S6!t!riWZ(+O4fcRV>@1Bad9=IZFL&%unx}_HaU0 zT&_Fu1rj%YWp@!C9s=;6iRsewRxiNGsl;P~j7b20wEx^5Aes&24>%zb+2i(;m%7(T zr^Jgt=btEhQceZGqDo*N75!7<5uyjxw zi#}-khvJ9WfI-DyLoIhnG&}5s=hW0FaniRIKZ&4``OB3l;|9r`>56^~HT;enx`Qqk z?~Ip*g6I;L_7b>I+l_}Ppq6smj*BTMDAJ?KErBK(u1Wr}fq(&1yybq?G<(X>Ez!iJ zaa|kk(e@SNN_%v1QL%{y>p~RD8+SVt{~I7;7KVUB0@ywYqUckU2(Bfid=k=x`8HrthDX%u~T(5 z(E|_2NN|{!|ICC7aoC;@!>v&;;{Wb`C`9R@2EGJvUK;P!K&;MTW?CSE=ZJ-I11~7b_Fpx8kRwY`1{$(wi z9vBhJ$j%;PEoPuUUag)k7t5KFgPU!>bd& z`G7m14Xu>hS9kbIM$8DjgGik0 zACkFH5G!k|RT`?)6kTC-cGpdhAdmn8!f)GLx4izGVNhZgNtGQS68|et%!>Ct-dt#i z-O#AN0R<0yaBnoz34z>h9}0L-fpEa)k>|rpDIK%!2?E;h;4;j-3PU;Q4+OachSI21%C(Fn$ym;~!#+n#Wk(JaQ=6!(v-3ub%qWv3t4bdeu`TLVWmHHy8TMGB z31Cg`bM)LxD~3?;VnN*%v#j7LdOU7^GBdJKuu_pwZV!14g(JK*JijBM5rHNhnGr;Q|O@#ZKS@wZens0kW_&KYjSXK zaxhh#x}eqH{*TeZ!qV+>@&q%}eEa)>qLLDC!t=o{@9{mpv}9eI6@P9P&fVS}BotRy z=J!H6Nj#@nAz$30Nm#u&>S{Ua1f{pOS{hDP8spLuz6z5*1xHaT16L?($~R%sG#(-( z>m@k)S@!8UFonPLfAVu#QvkP)Q`3|B{5u%2EhcJ3Yu38Wwf1|{%Q4RdZIUd8;W4pX z&>BPx>FV%(F3yt>?o?`aO3Z{rbY&oidA)o1^^p%IO!y%x!^Y6+@3e89OlfHu1LNoj z-RKCSzYEYvG!bMVm`gX12xgI7oc$fO)g2yTOk^-%nfI4AsQVhSZz}$SC{XybWoi3@ z8pT&qDe?t8snBf>by;!a!bqC*V6IkbeAslgej#f-leeDSuqv^&^)g}xsK3}A61}wY z9t#a)`-KykAcoc1t10Q7H9SGE?1KhU?;zt0vAd3`#)ky3Dk&JBsEYFiL#E_9bA0RA z;VmuaCu#LgwZ>fyd-lb^8}2*w%hH}A)BDvjdmBzckE-~+UpJaEe|)AuE&oyLXkZN$ zD2vq?a8Sf0C)`IdP3Xi9`BSJRIg#ipLLnU&!n6vzqov^r@nrk8>Z|$@Vex!A=a?Wr)iRN~J zeiD&Tqb4|O(Z$-WdOKK+huk*<=jN z2>yVHIC$rRT|aB3qb@t2*I~6f;1ipJ2USKp^iPbXv)=zl49^akLadU08hU|YGk^0u zmtoZOITMfMcH6N(E^9YJJm>r?i08^QvYkSi%32!R`^xwaN%xr$gk_Mc`UJz8K*^c$>#3hbWXyuxH7ail>{J>;6*@qkk&+GehURow%h0?CRU@YtfQmS zV?(3EqtaWK9;Z3v)l*Zw3Yq!21#1(s&F;^GhvwNvRsUA6>BG%|O=Q)W1{-D(FLjvn zR)b0A(s}aTD#G1}6>|RL`WKHJM9BKeP{9b1+ZT<8l=0+t&NISat*s1f0&T6WPm@8H zrg>BpeUSoAN3eSGVY^+OSF~j55AoMKfOE=jM%(Z{2(nr{O(@UdNe-pRv@~quSu`03 zyUZWE{yj5@t{Sa5&IMPttetfPAxwCFs_4e$0MU9Xl6o}$;(&_f6FZUH_wreBF+HO> zI!{CbZmJ_Qb3GK5zSP#g;kn}AGjlyCrVDpwJEWt}TzzV(uO9C5@2<`W8DM{yyZwI8 z)Oa)37}h#CNyIrc*xYdJ*q@sD^JEh0OB_CsvX*zqdW+jme9Aevz3>Z^wP0%a?1Xe@_D3FY16)bQ<3MMM}V!F@D4>Wsz&J zic5wb2C$%5F&UqivjqI4vnO*5I(U7rl+-1ffQjrr?G`Ky6snh~#PwWZK2E2Tu>$XQ z8TPsU^i5_9L5G!=(IPduolgku{l*+v4D@$f?79zbe3}b-?l?k7WwYPdq{12u@j;Ft9?Bc(`&JbU6_?etFo7Wsb14V7hYXIYe={~xN%{6!Q=R#uE6SJ09Gb*h1V zAkT=jfP7qzGVz=E++dFigbYd)`>WO0Z7o=6q#wWt5Fpv~Tbb!o!bSeOWSn(i5N$@n zf@Tp`^$p1Pa)Nnu@EUE4L*#;A`6+iXGbv2Lr%_d7s^pKW7ZraxX)J5~3wQ85(*&BPfc0jVFgM zM;3Q3Z$?r&$|6mTs|AS~6QrOJ35ms<7MEKGJSD<(0)0z)G4urOoS_wAT8gy=YXs6I z7;+#+<(HHICj~cubYTuO$hr9yUOfq3n%RmsMEAzaKlgoYJu1FQ<~~1#+})#vMTIR? zJ3b2~F?l|sR@YbI3p!!t2fnP98{9NCp>exypDh*AQbO~XJ|J^IJ6+xglyM#kyK_K< zCA9Z{Zup@-XY|Quvd|iO5EdBlTg!A`jw^=X`2McS_R}7(&F_V`=6i#MSoYUMBQXhB z3(gvsEuC?I!60hLl#M<4GwNfE*kfu_I=G?YUzZE`+$WuT-k&xa3^4C)x8 zuEXCuz~Oa2Jsu1T0MUJ499&w<^c{NERL~qy1pGrA_t+70v`|jr67y`iz ziW@Qke|wajg;9Q=k-DauH09>EWuhuAm#bydCOHjFU28)N6Ejo!>`AXtx}C^vpKv+q z$Gr;!&!#5F(^UX(9@DNA*3<;jz){r9scam$u`W^Ek*qXL6@|phj#a%fTbHY=v9(4a zXB*-5T5VhVrqlU>$e$)$il-W5H9$`X8|{R@UiW3LT_cHQc8)kqJo>_EVq&VIq^x)2 z44HareBNdENdhT9x&xn}ygYk>%vz|gds$RhlbMEMWy$~F;a>Lp#L^987}skQSfAA? z(079$(`_`e#Z^4#L5#@}+x#zcdLXLICdo!fOF7*jJuM@Hh#4co<8yRy{mDtqT+8N$ zk60u=*GbG)M}>Anrf9Z)laJ+6eiQ(1%Q5bP{vk04*LvV_E9djp^hra#4zugf%vEEO zzx84ji2XVXKNrMNWmJwOOd!pG6m7|s3z*fO{4v~p z&1#ew5(Zcb%b8xl-a!o32*Xphqw6~7mzpF@wSlS_djbBchVs(T(sCY)MQ8yeT|H;r zR+$)auY_^?eRSgLjsk(4G2f&2uHG;6O(#2TgqUGkA*Lo~d)({}l58yq5q*TZ3&E>* zj}vR=01WUeE3vqUO`jiSKtVCB!^d?D|MEi}^nQUqUG`X@Xtvp#F?IfE@7t5sM}bOOispy4ZAT!VLS3Uqbh$OroGG$=1wNz)^C1Lx9i1>VQPo(+@RB z=JM?3`RSfmsKUj?ajkZ5Zp^@li-V^LjZ}}<-pq7m%~$x7GE~fv?>W24=;lro%C*Rr zl)mp%>!E}WS7v)SqW}5SRTzxV({NcS{h*8@v4Dl`o|2}j@A=pkOKb(#$)dfT?Nm>V zOYD%;4Rxz$lg-@5c5>+CQ+nJJkvgVncdenVF9lS`eQ(Md+{ouwgsF6RzYXFS!Tw=s zq3b;ow3Ah0A+qtsMfixW{|FF=qk6!B7pbDkoFpE>qktDjlV}zBpxJmq+JOcA16f$Z z0-K8g4(*3JbQR-npNxXFQ1}Zh1QILfM_piOW^(kem)G4F@YL!NZ|Fb4#nePR9$LAq zbSXpV6_~+WUBqp>tRv1q;AD?WWoRBc>Tk5x-DPNy&~2UGM;Uo_ZO4Bj9c{r;#4L>S zgA+SbNgDEq0i;c8bmv6dLUx15pce}aZEM-KLAm}WpFv*r@-hU{nV1;(czgfo5k)BU zC7_^T?3akavEteKi5@N&7sJgEiaqbvQrSXtgsDxn$t)Il99N`X{jPDzvNRNUs zR#D@RpHW*r3b|XI`BZ6%t0`}=bHK^t75z0C)owK!{#~Req)CHb|5jh1)zoax{xUrb z^36t%KeFry08Q+&1jyo_$2jbZEAoo0@wByW!(s(OD)US??^wWc!)6ZGLsMX7;dX6C zHyi^)9JWwAI4NBJQuR*c!YM@>l@t~-ipL5?S|oj?p{`*te;4&tj4Vkz1$E*}@24QC zT$LQzVmCBLYh&*)xfgS}2gx-w7+xXykP~(w)1Vb<+>{pYWV8NeEsOM7N@3CE89Qus zwJ74_$J9lyg7;E~l{!*QLC}86ZozWY5~Sz=6-pjE02J*px$hpj`|XkVzgD{Ll~=u^ z{x0b0WBAH!Pu}S-;PX4`xX0-HR0`F8?K&Gv>Lq2-D1N~dj+8vINj7z%0Wwd?JsnA7HZ`ozhUr72XMt@%RAv&zLA=c5iSZ>&GS_?;`(|L7Hrbwl z5|ZW3jSh*CKq-Fv6C?Ep=&o56UGz-$Zf)erz4=)1gP&ofEvgoG&AV-&K?v$HtJ9H% zOg3H|&!+ed!~*MWN#lyr4LrR<%moF#g0u1S_48qv$zb&3>H59UM`E}zQQs4gOn5bR zZZN>!oRBMP<1yb%b!pD1_2hq)VJfUR=3ikJxWJ5!*-PK!|$7&{GwtpuVkFadFt9vQUdpu+JSRW&IB0MWp&Nh2Au8nyREG(=ccL@qAA-$3HeP&EB9w$cCe^S zecw4l#%HG*oLunvJ>BT#@`KchLdf=jQ6J$eMlgpq!vnCkmvj#iG>c+f+J%oDnb(p_#~7V>oC} z?R0;mwy&CV3K4Km6S~p#on7|@=8LqUUaL58d55)TiP380JZy+4^>#sKfhWZLKh=NYGAEPNd0Oi|OIGML z9W4~8`uSzX#-F@}E}U`R0F$ z=d7!2b$GSB=o5z(QJX20860FsL3vjLAO5s!W?rVve+q#57|(C$`&S`RKTwq{nEz=boNIkxDzaJsXjIFT67Cy@^GSg(mki^hRm&+=ZNM zE$2`HxXMM1uu-o;JDoG)vgGdK;`~yUMb$lvEG~^Sz$Q0JCsu}P>~wX$#p-J@!OY*X z+}I$F6uF5RrAs7a)`sf)nVNVQz-a~wX9Zb#31uu1bX($#0%rZge+P7S;5tQTa^tU0 zc@9+XG`n*1IPWrt3gA!mOc~EKUsFiM%*+%CW*t!d784ciHUc?HCr7xIk9Yg2L-HwV z%@(`ck<%5U<#t_t^7W2N9%lp+6M}ktZ-T$05pXCZt;($A3blLJY{wJ{v37vqcw|UI zHY~K?*}ro%`!xr<({_&$$ua_a(`RyR=lmTB{JA~m+bOEpoq4={T=t8nR>H|@XN_QBp>OP! zZYN4D#~U46pSt}$mR_EGz#z`9IXVWV6nQN*eTY(B9fG)QH73H}4>`kEJx8tdK@#qL zl4>vX5)%a}aGAYc#oHanS#3k~DgKA|@t=GN8OT=59O*2Jdt!|#rSx(3vakm}^xrkV z#$XuF9yeIfyx}n_1HV62rX(RpL!8pQr<*K{IdgcSk%qL@U?#AvW7g^iPNFsl`u<0_ z8ZS+rUyxt#Y%64Rh35+cV{VQMcPuYO!sqnVA6vluYQqMaHJk4Rj<%0g%c@V(G%L*H zGOljK;wlRI{))Xhq$evY%k|#)TZ0mdRFMu?3#{p!_7mF+NOW0rOmsfi>~@;dI;u!R z^M|+C4IS5PV05$E=9wW!msaIqiNp-%Jv=ryX?uz=Vx5HPtIi;V?r%> z#Db>ToBZjVFMO@u4`=HSd64nZ5+wE5GJC%_z|A~n&{S{UcY}t2pt$*dZ~I9Y{Ws`W zNNLWEu7276$3h$KcC()|xw%xQM5qIk)+9P2*33^7h|#T$jMt^nT9k(#3jLW}&|>hx$OdxLTv9)?>MHNE}v049khc~!_` z_m2`kD$VFaV&CQ_dbe=ysGtxc;yOFCUGBe7c~(uz3RwgZHv+^~;V#r^2ijjM((tkG z>e@+KL@m$CtUU{*utP|4P0{6M7FC`CV{-KAYRjz%e6ZR^7&BgXbwz#zF;* z?WC{O{_Oh_q>#FYgEw)Jt^2laRTa#!ap6v4XMfExRR$7^KbQL(Bq%Xx4xa=#8F;q4Bq zHf+ujjkpy+xC;e9ofVOvAJ|XMfn{o`sY$QHOCn0<`et86o5yRcoY;<-SBbWc!Lh`j zGA}Q3KKBiy?a^w7mjc&EEQFv2CIfEw&E(AXzr6w>&Gj;|r?nLZIcP_IE_-ILUvkR@ zJXcy3;GhMCUM76`-;3ml6@Oia^kj8&djGqJ!OFrA}A7M4SUM?4-L-!(cT%_n> z5QmrTbL+h^2K}0eftj+!8Mjh{=gk2M6h>P;-i*GIc{kd{)q%X7idrUp!A1e!9W!i> zgORB|h0~R9gC<{n;X{xK)N7*qP6r0M9&hay-a>$|fb&LyredWi&I<|dTOqdWjco)X zG6EP1xR>i)pdc^0U$k1)EP4&%R*7E-?nj&k2(_qUoZXF=3$jU}ou8_iyGP5wlC#8u zkQTiigWj#AOIXQfod$hMRK%;3)d|zVe6h95hzy3v7`^tipQ_^OV)#5 zu!YDUS$=s4I|Q`8L4DVqDtz&Mt&p%`bDSnllTZtF@FBeir_v-2b#U5}SF*-c-i4^n zU+rwve5d^3M_k`K+IMG?bb|zx|3}j~23OLyU3l zaqf6cMU(jU4gKjE88nj0J84Vjvla+k6@6o`p936pC4%*}Qe#m3?KocE9uy2(MTy-S z|5qB!J7nvGb-Q|Df?|_Y5U4MTFF3SJ?1=^Y9(c|Ogs)sK=Y)uNeBGSp^OSm9O9$XA z&Q^)#%Lv+HE|(hmTMp8o-U;ttn?iblfu4pgY|t(?TrR;mxaj{pVW4D&)Hv; z+w8~Ln@9Sk)d;qb`?zMP#rl_&x>0w85xwIuqWHp4wwj>Sh3V8m_IVZ@0`yWLr+EpW0> zMwQDlF*0nr-flcKE;L0RC8Z=$>_nAE13uTe1}(Q9ftKtZTZw@an3ft__2w|G;kw2; zEg;GVDh223_|xx4!D8vc=4>5Ii>(HuBar(&_7d0hG>9D$e>Q6nid6%Gj1e$qI+^Vf+B&o5kZxme8f6(sotaybwgFiMhsFnp~A zH%N4`Ixy;LG(Ui3>9_$Bg)@%cCUSPbG`8C@3uD$11}@GDKipLqT~7 zSZK6ChaZ#`aP%#8!t21q5K6~A*y#a{ZB%O6P?p(BT-@{3@-#euG-b6mLo zx#f8*PtQ^5v)OurqVEqu^IRr|KQxj^%gG@?HU9&3sh=FN%1>n?e1w)_sjJ|ReLkiq zJj&J>r7~`I67TZ9ok_WzYUMMk%uwa;tU^J`{dKsXbw-wq(jhraL0x1f?qn=)i!86p zy7+s@ft=4_e&q&*T`t<3{PC~Zo&7dHb0C|Ky7P~Q#mSELw852LLzwul^(IHxn|EZ1 z%QEHDf@jPZ_qK0W+XNduuAiBFOO@N~`hWGQEYA=#nn8Zjq*S9b6XW9mH6BpEa8aEN zH&sObo3giAp6;KMR8y0SDknvOb98WU@O^*IyqA#DTA%4T+kk@igbW2--SK;SGZHz# zU1fhUUZh|&LKChH%qBSBo|R>CJ9@5;e+&SOJ&1Ofc{ch|=lDf<pz?vOkjSAyFs1+z^Ykyywm+L@XlFSj~X&gPt};z z#Kp!!SppUU6mp4b(^0E+pO34k6Hh~K&(5~Pc1?3|4lGC+hs)EdG1W7M$pABTbHwN( zQ+um3?CBfq`Q@&av0?fL&%peM>u>-`)N)EofVK=diaCy!WYL@u4iVcWS8|qGSpM;I zpEpva-gwo{Ll!gJiRIeS8|FhJ3s~=PPfAY7TU6-Hdh!e&o9|*YpJ?b?E8p9_^@i5* z;>!PN0ouI{%kEd^%2M`p`MjRo*C!Rc-+6jWj@s5WP<-bua><+Bx9i|*5}ZpZm;WKx zSV~$uG?Df}ov4tb_#uF-_=k`ieYfTm8nvVRBPQsvF_W5!%76L6GGHSonD2^nOOp=O z!bw~FscG;^*rP=CLce82GkI!Y#JAPj_VH>He)S)l-v7pK$RI|oK!oB%jwWOh!6Fk? zeSg%*VK|oWDnXIS$fS})>y#x=lafH3Sv?fcJDw;sDmqiWTv$Pv{Nf0f%b4Qw9Y^L9-t6+y6J$9$F- zkD5&uaGFjZqwmw?6tpxHNC@AA>{=s$EV>~^Mwb2BRFv=_jq%cwO;vbI<%jFbi;Qq1 zQDg!Zi_3sl&9tPXq%NPAUtCm?W5)HV(m$h$ZT0m5a>>qtv9YnXJ3{0bE}w_7VZWy( z&N_Zy9|SZa15=I2SXy#=#K3N|bu{31=QX%R1C?sH<+dlF;^X^+NvCp*OwYP6weB*O zNh@is4^<7cnm6FCH>J#Q&BA7n@N6{O6s7-sIDWAVG7TT4qM)VBWN~r39T}AHom^&P zMnFKUK_GpfOkRuw{7#YGUS~%e@)!+HmxT-*8fj;)mnG#DHJM*9NyR?T=ZB_~dG1R9 zKGjZAJtdWlpu%NA{mh9lJZ>I8!bMiO@GR;`eUn<7UXy|7P;GyoSdWv;)lTu z#Z1ZP*tpFaF@zC=jF=2v%k zBS#7a@k^@Ow479sKAqG7ug7lrLg}*Z+RwJ+^tb%3RfOi|^zoO~z^eO3WpZDeT9)CK z7qd2Ihsl<*B*xf6uot~7Ys)`&(+I@_n%IqV&6z~=CV^wFg-h-k{v}C-Pr%Un-dVb zS)nv#Y)c}bvw&htNuq%!y0bIOR6SGgY%8}^dawfUoW;lyc==F-lvhcyH6USe?q0v! zL;m_EV)Ba743IMNQ2+hZTt=a?M7X7lNsfDJNhRibkXcJ}X8aEsq#R|HRdN~kjS4PX zZ^7lFxYClcOy6vqcU0PAkMoEs z?q$2AJ^qN0{KBp4=9&zxDhRF=%!ixuS>TL_{*k>P`K=x9HURDDj`{ck?S0hC>qGE3 zS7CO2soVQje>MBJlBH);2y?ZAw)a@!oV=~8DTR=hnjAHXJrL>>=QprB(Pjb(E+2H(j@L zW&!Oa+h_Cm&^z=eCM;iO$8cmPWWDfQ;Ea}e`HYt!w>x>`b-kWCB-^i~VV`XI=*(oZ zd+aLT$1edH-TeuTWmZ;9`SbjuD_HR&-Zt3 z%*CT1Wi+{rdDV#@UoN_DMte_Xi!uSuX(5xjwm>0!xA$vo`1u6BEnb|e>Y{ni1!L=W z|GYL6OW9&oKr)aSUZ5duiXEymY|xNa#Llg&p)u6IW_o)LMUlhX>2_O6NcTTd58cto z62wTL=L1mERtJ|&ED>;eV}t%YJUk2LA&3Nu$x>0(hzH7Bl62nZAdDE3x0o?bm^8?KG_BN6|~)aWW@n(2uOZ@plo>YWuT_#t9`G(z@USU zp6a>pqVg%`YOz??68fa~4OaWV+#zSeG6I_$DRSoUy3GXLgc=t~Oi^)`sqUE9!o%kDXrX0BUF78y z5ZCo@{Gf7ece!|}DA9)BuCb!?aYO};GUKHQ2N@iv6u=t`;tLWQC{l>5^Gl2fkJF9B zB^nFr&c#u{A|YcHSK5Y?DQsY7#)m_x@FAM;IF5v`13wHZ-3FYkp>+zAiDrD4xSuW- zMTu&~21n*Bb_N+9RoH`@txhM$y0jTdaq*2G@0;TxZB@f(W^yT0*`x^)+rD%lzZn7) zX6B|p(o^&ZsMjw5OYo(QLrYam7MqtpNm8rR)QC*)OEm*0B7Y|@=+r!Sc zKUJaY^^wbQH{SB?G%aGP;57g!+1+8Bq$J(88zM*kd5a~BStm@;Ck^7Rxwm#9?{7EJBesAYwA?AX2G*PmSJ95w#<-z|4M!z6t2vX!X|6UN=m_n?^+ zwcH`UsN7W&0O#w%1Vqy{`@}|bjIfY85 z;IWw<6iZ!|CxLZQeoGY|y+LtAdVfbe;K@JY)~pC!qQ0mIGrBj09U!Cg${dXhgOY$!N2##mfgRvCjXj|Hs27f z=b$Qr5T_zDRkO3R-|IU65bdb^jgr3T>ge%)Q&o|fT5a-XL52ZQMhdTUwJ~?l%J1)& z%UImMI7ZHx6T!&haL7|8fbpxiGn?D21x3NYMPQr0a;`Bq)lb?YH`8X;-t1IFnUL>0n+|-mS zf4qZ}Esx#S)sP7>;KFWmH{3OB*Epp7L=0@BA`uD>yQ-|%TwjpSQl8j&P5l}D$JdjT z$t)~5zdTT$+?YGWNBYGB@X3b|_wt!gdH!Xa~$ zB+bhfV%`?%!6WmZSX^(9qc5-Fm6aA&SAylc-YOX3tc@KiQ-8=+^fHne&i zZ4r{ddS?!28ELIh9MjNbI0e#3QQ;AYmN0lXMC#xU=@me5%86|M_B2Bt&?x{HCp-8L zkhrq7GG%gN!;Nw9RolYdXQS|#>K#!+ieJ^*a!0X;%;-^9tE zAF9*w9C5i2lTGa>r~Nt06{Mhy)n;EIXgSK>Y}w`-0W1Mkg#hz^M6w&O89;m^qnKwC#ZN>(8DM?gbUz&Z@ z&X-u?ggj8J&S-32YBs5iR+fj!z86%~XIU*8*yy41!s$UHkOvsn!w-c7f})0a_TYDc z&}0bvBQS1sIo`)vf%E=ls)xb&9po7RN030_W8rHcp_-m&)Y-#) z6&ucjBoINIPba9Gt$qNq<7&AU*HqAPW^x zdUSlevT|n0;q=Yw9x)2Ifa z5p$qj+6n8nP%clZ(pmJ;m7E(nvPT|~%c%-8XGVumigd~5wawW;K4(%V-_hf)*P8h& z{0l{7D(hfpiNS3LmMH_e`^lm3D=3XCwx_f_JitoxN~ahXGB}{(5PWTJJQ>f8emtsSM=7 zf|fnbn874g%A888rKSs|KVd;oeLuinXi!VV1iX|N+0e~=QIs2%6r&g$KYQtH zODf?&p53PGmVZOkQ+K`-|K+C(S7|=HYhfYiDgE&c?6n=~R2dmhhDik-G`fFt@q3{m zt<7K<`VmfQqHJ(-h`G)TBxL74emv3PAnw-+{?orSASei;s|DzsC1nOmkZtHg~H5_-3QyImeV zo^Pfn{ZI{NvL&;>^LBq!Uu?ENziO=vkt}|@XU+SN;a3UwCba$2 zw=nnDGV-gDb1(r9QBr}A(5C6u2#A;w9iGmM@vaeF8`@@!;tgO4F|39i5v|q3m(#bW zdY!=JxQ(|i9^c|}V}JWJ`ew@=_0Syp*67YIlh1YB3FZQQ&EkIm*F*SzD5khQHnVR) z{;iD8=3ZsIgUV1wnX%SpNI5e{0CX(Os6<)zzAp13$1>rd7K%=wm_OezvX%F-R4g>^LSmBbid1fe}`mXVWFXp%38pPyNr&#tG0Q!>EcQs^5+ z1r;(njrq?97g@nWbg@yK=xBdo&{`Vr$&m12hG0w>qZ^)F*sj(Q%z1F6)*xRhpHaX` z4#latAM2$C-GPnsf-OTPz6SC(4K*$N^!l%f^a5+2A{sIYOJJ8eiPLs4X6W4W*Af=V zhp8vKgT(ZWY925_RcHM6O@R4kaJrlsbUnAoxiw_;S}{n6Ta74FB~5)8xgWy0=-$5QN*ncp|3b`@jL^08d zC~;U`h(Dx^vn++$=f zW4JsA=WEudCy*barqW%rFieGkM01yuHSgK`aI)%+>a)~i2v4NTmHLOBI=#bP&M&0>+`&Gd@yKO*H7f(`gmh+=j34L1P-cG z$9+29O-VesOR3>p>JnK*_^JB~Sj7Qdc4`qqj|~qck%<$;KwDfz0rI(d;aHu$UFS35 z=b%3iK)}$WcjitLtgEemNxs$C9$f(rXQ=F!fj7+0pBahCXbBW(ER={K)+;{B@7Gh* zm7~VvyE^MY=PoLz8upZV|DOP593kwSr5|@y`i8yJQ>WeUqk@VfX6Jj+DP6^DqO*aC z=MPJa)%Mn_o|lc@MwSSy>NJMe{fQDlMW=-GR%tut!}C_nKrdN+|dO(WK$bfLiSTu9*a$+!F?(YBPROr_Qsrn<#155`ZeS5Mn z7?%FNFqfPF{h?$*H(UyOMa958ztF2YBAoRyWvU^5RufuQvRsa81r$qyl5LD$%}B^$ z`4=HEN%qxUcYK-(RjO2Y?_MqZDZs1ji;j_d`KKi`V;VKXE>A&Wp{G1O z2pp)m)Z}A^G~7}sB638WAlbc^o^fueYq*v|B|MwrsTYt2c$rW*9 zNDO?}%Su+Sv7yabE?{ysTr&JsmZp&^ z6LBC;65k?6u)%>zloZxO+RbJ6#<5xYc-r{YDlSXnE9wAB#^b*G)G98@+v;M=dEdlE zrcMP?`R*juSxJ411lV}v2hhVXa629LEnQ-xBx0k&Q^K=_?-HIHH;>R<>ZBG@Y`e_XhR#$~1KA*xP2XpEYOxcJ>`3L@RV zb1l#i^wc(qY9gX^PL0R%8^eN97#9gNNY42pB8V*Xsvr4}98z-*!D((#;>LDMg-20W z7ytMukWic=@W)a`iyFT?AcZ2nWn@-aFtP6xowUm8^i31KJzU&RQJWbp+^d}V7HLRe zfz7Pfck3zQ@QJi<@~4(Puu!&UR92b6W%i5{QK)F{Rxw`G5e_2Pkau5%neC!2y(p!; zD5X9RHJaG0ty23J2TPpPk-WQz!=PZ_5`%#ge1<LE4YE&OEker@7fD6 zt%^>b${wyLU8y|-iIgQf!r$GgPG$^MkZ(JmCnn1dw7UkgLR3MA7?{asX*XC5?U}?~ zY;IUzoJ$a+fWm_Md4B-$m^k!4bH*>xE2XBne2$+7_B7U6z)-n6!uNJ(=>afDZgtqR zSX|{@e*)SiY#S5H5mN?p<_C>^vFKA&PRm(`FZ{kHT{1Q@t~1Z}tOO=NTbf_EP?*k9 zjFF6a$*0p|+y@{@+<;UVm&>Q)gUua{A(3D|15OVoTqH7#$Ww`EwuajD7O$z6!~-Kw zS5w~^cGn|&DNbD~q!J|E0j1| z-x_}wnH}5sS{Y>@WzvFiNir~L+$n41~Lf)v3 zmQa$oo8~CJipt~P+2=*nAk>lQ)8o^v&bOVDgw~AZ>L!g$J#ih3l0`}J{cvHkZ9?Dz zsbidyCP-?UZ7hkA?%dwRKf6mns?eB2QC+=SFffUYAN_8BQebt8zvW==@bg&P&o}H2 zdl8zX_|8yIY$EdBUsL`MAA<;aCuwcmnH2+J0IMyHuiNYN`vQzW?E5|4>_l;ThZ9!2 z6Ff+{HjOGY*ofT1qAK=Rf^%F>h9j^ixN8+#&grf`*-dn8>tL(u@Yy}@jWY^~$=JX` zE=dyjZhRaTr=0$pB!%f>v#zSGy|B6-Dp|DE<_#>&*G86W(ErJoB-|Z*Zr+vTH!#k* z;6{V_$##DN&!>j&lBct!!-*p~r0EOJm)A3FtoByt?{L9gFo-| zI*Q5*U4f`bq02?{fD+l;ZMpd`?}r&p#Ne*Q3<@yivjD__hhj4xP)^+rv@X5Zvr(Dq zR76SQ^4O=Riz4>;vPR7iOg*Hi5(f)~!Y|3FA1YwD&lDj_WA(EiYZ_@3O5)|?zFVr3 zc7l284v!{t$12FH-2Tyx{nPTHvPu=^uF=CJ)ZEU?f{_;00!@nwSLTv>2PekGv%THR zwp$1#N&Bo=z3${Yevlw`LKc`qwcdY$lTfATgfbAiaEV4BNk3Oemf#Tkov)e?u4@PW zSVV9sc_iq~Ne2qQ`y;{`lK+Sl6m7)hb#o0VUBlBmIggb0Ci^+4aQy1QX44-#TY(*( z=CM`DY}j$WV4Lfa3!r$rZ(P_XGXln1e85FW#Iw0wqLltcmf}+F^9dG>LHf$83&;jm zYIi+dE`B$#^AU}NaHzan*=x4(OwSyY`2P1@fJ7P8={ma!moVHKMAVg>;b2#bwN_Aytfy_k4r1PNyE_+*O3 zCAkq--0-E$wX>*_KFsw_`55hbr}VhYz`Wz)xIPk&G(Wn&&R zWBVVW(YU-m4lGY`D&wOwQ!k0vmxuGMt~J?O>m2k_*rph&!0XfA!MVc48BL_6G8*8b z6Do}Y;VYX$14nXrBjmKueqaM)H7ku>W%KCQFD=#D&%p1vO;c*X5RuJfX{jb+tI>SC zevAqO6WSx#lzX`c8>rn0bhk1B}NAUPKKPebQL!8oVM`OWxDTk%S zU-f=F4}X|VIgO8C2~X#1fHuQvFdC?08tHh#WAxcAAJ%JTc;}Usl_?)I2d^{UZ+f1e z;Zq446y~0uSR0%bR|_o{R4P75ba>qGj51u=g4OelEFMEx%gm(g=67cZb0?gF$)hPf z2n<7J(sJUa|><7mRJXqU0nThaWeWtkgu zcm9}+IY7o0Rq*JSii!2X4zFpY4oOSU;%G?JNF_>m$L7;+CR^*0QUe#T!BKCbO{niK zvHhd1oeHF(tN^044ydQf)xS#Q-=*<+bLr_^&-(URuKW?_(jA(XN(|c4#i?~W+_thT zQ{*;V)hy3IGS+y&b@X^SFd~Nm7hID)97mBj?E}^nO_n5?&D#nCLj6j8+Pydfszp7Y z`#tT+I#6)UDz>YgJ2&*hjlq_h zz)o!*Z?CNN4w&GlPmNxEW5Wo-Q2^dfj{vAQZ&^5Qi@u(*OA&PV95;qjsm9Bz6duH> z(f)bKH8?ndfxv3^#&13*9)&wz7Cytj&J=$AP(wU!w%}(2J@@T&O3p}7QGcZC^&dt$ znU}ANg?Ox|Qzq5=J}`gv5esqP5Rd!8fV^{8{D0zq$0G~}i-IWTjkWh91c|~u+C}gu z!UtUSEtlExu(*)N5~Vpp**GL7akD&Z3@zh)NTgklUbCJOg>`NA|n1>N)@qT zK|`z9qRp}(!o9ofOddv;4*@N?ZB?vSHb^nTGbjAAd3R!vc0izP!8gCy zy|`*<9q#QcZg)4&j_hNubUUoB&iC->%gwHQ_$FppY4wPc#DT9vig-^^bgUy~hK@I^ z#r4&s>HDXEa?F8nkQe|s_u6SK^LTBtoz5c%(4@+XKRY^UkCLr*o6h^HaD-9DMhEW) zle7jgj;JrUG0;8l<*x*Ul;U}1vl{*uG|1_Q`FK5<4yPJ$I(fj*U6EK80A!{o>qrl` zw~$CJ7#*J1>zf3s8Jhjt(8qIG6*Xi8L;~Oh>HG}*_urG3Ji>qrb(YFAk>^%%S9{1X z$xGWdZ`aeeh~8cFc!=1zcxE&CT1zrLDbJ%nbQ0{iHbb9E4>3i#;?r~pJIoTBc;K*sR$bs?GoWH-H&pl(Qc9>RIQ z9l(73Uum=8_V+enhXeH9vV4-bOvy+lz|;;AxE7d09&zi&-6X1&320M;BQcsZa5)ss z?HPM~37Wk!NH@b&5}$}(ggUD8*fRyGWpyoXqr<(eINfm8*#8xg60vVQ%ZORvRXpso z!oe-qI&@R*)yoLZ3uo`$r8m+y6FtR7$EwA>oLppRVLk&6%2tp-EZE($Mu%&41z2KK za^`w~8co7@n+c4oRU5$Z%u_l7s*T+b3ySz|!>vl-?V+6LsKdi8BR$m-9O4Xrx!S3# z^3^0R>r7Un$bEfBs$t`zx-d@S;S|{a-g$LWW@4qvk-}xQQ3!lJKl$u*r;)>jsYj~k zfc?(-M(g9p8Rl!qa9-CNA})ibSj_a%O`=M=^TY)rWk zVqaTV~NmSslYnf2YBFHbb`CUC0c^dVkn#Q zQ$x?fkSjrX$^BKbv?t3PCW5@jQNHF+M>zD)wbsb+R0>C^CF?Z~Xr=mX2~oDB%Nen= zeRQB)Q4I}R)zFBO!Z!|tOK4KwyTy)Sx*a3u-rJ|M8{QiLX5hQC4JL*EU?RF%L zND(PBnUCc7PV?D*tTlzR4M=!~aJ!pzN8>gv7 zNk7a>%zU2@3E5bqR}Q?IamU`z7_0}pkkOBqe+HC|rMZ?}DiH?e4Pgbh!!0m?a7xww zikA9|-xDkg!QpfBV+06R#9=MSBEb}|Gx7Nvx+haBC7}S8vULNn83F@|X^r-JE%6zTXl-6I zKpEtC`l^%uT2tfyGLz3s7OFCy%3!L_^@QX|q^8EJsHohif7)8lINi4*<(x$V*xeY- zo50fnoY`w|0~>8N6)oig8#5zI3!t1mnjO>9Qma`zx!~cZ%i?|cC-NRMd8HF5^w9yc zyg^xEJbHYi6DSB1>~wfX>4uK}zg5N2rTx=uQks$2IXlY!(7{6K}VdrlvNq(Cwsn45UdJG%oZia-X3V|~|{Xe!m3DzC!QTD!St z23*#ojUuZ5|Dh;Sgm0MIqeUAXRhR!`JsAX>_O}0p1E4#{0VTfQp5oLPJT4qwQ zvdWA4LNm36jzMYmq=<#DF}QxeEY2 zYi&ll+slPj=uwOBW#AMPJE&X`7N4)I* zOijPVju}x?O@qDIj1m4NL%=e)G0s_e1S7@#MCyppj{&h1%LwkRU> z0jo6pu0m-t=68m~xyFy;SBX&A&adb+)tH{>_l#$U;Ew|B5hVf12pX5te**6sFH`Mu zt}51g!z&dlTH@C2cKf_IO947JM@L6Wn(3t}1tQUC-Bu^;y5=`u!~VC~flv$#w9<+S z0xshO!j}L?XQ6t){uUd9n0Y&0qOX%cZ23VLVbA63)%dV@9K+qsE^zM166%ZN6LX?Bm~O|71(B-Eua*pOPepx7x+S z#bk8x*tIANkhaEhc!j6a`V1NZ`aRGOj!3%QDUu{Fva|#GJwqRGN~`nI-Wlxg%1umg zn|)(qfdj=>ZvuD`-EQu0k{U|lQBc*35P*m$Z(w1>beG-r22eVI)gjOi%%ssr444ji zKU;EWP16j}S7y_$(Fpti-oW$-QeOD3C&ycjGX%|zjuI5K`Ubu zDnfTcf7jZsD1(Nx!?;EC--C%NR|*2hKx~8P&D9)_&Ckl*rX(w2kd;kvaInzKOtM^R zYjZ7q&^9$Mi%A(tf4~8}2pe7AmVjIBhHhJ#x5@Es=?WXWuU z^KxK?6m^IDdi|5XTrNy|qx157lV1P3P$uQdp_zHH?+F#1sksVqZw6Eida_lr(bDP) zx9{riua45BUL6wYFOT(&_ zCkza2id2!JW!0L7#9oFP>mw5IEC%NnJ!PZn=*frkfQANg78bdK`H9_&EzlMr@qtB5L8 zCH?Vb;M~6tcxqHSNv8$*?Z_h(?OnqwOZ(}W@g zPLGqF{gHqj7NpqY)70`cv4@3))$Q|A|Bqr2P?#EihpfB1r8=T_>>;(zS%FC!o5WpT zcYBUaI-M}EL{YWL+M5wuc5+yI<`IAume628k`q+G7El>*`nxpj#$GiL;~ImFox>ty zZDRNz5zkn01B}1;_(!rZTZ?&?$FXxCtx2uMq(}uD>+Lf^S{hc!;+j)M)T?=KOTpRM z{KErSu8$`K2#utOAZ=TZ&l6}wo9@h}H$2oI5?g#*oTV@Z`P#46tC9(eqqp>U3R#+* zhh@GB*1&)uS#L2qq{y*dI}aEq%}&zt2EE=Hvqiu)%g|KI+*Esie}l*6TrB(xFitKd zHPn%aKp7QJLxR$jJ=~riI|)|P%(qSHbXG?vK2@Efu=Iah)aeV?B*7SNc77bX9a=Jk z)+_ZSVqlKnq+64tp#)4SGC=z^by|f;2e7yaTKa=OqNO_J5`uF4sos4Rz;FqDa?K%n zCJ*#M1bNb^VNtG{3;w^s#_9YP5q)Gr2YsocTG+?OCDXQhM)RbtiRCpGf zw08Dh90|61FjoqagB^e+0S8{d>oHcwRT}H>{^EjWJWJ$xmYCMR#lG23(seKiTzi4@yQi}FIA(0Xc2=C&j<>C-s)S5KtFfd`H zv9Ny6ff!KN)ZgL3NWh|@gYIw?mw%H4p=P1?5lH;Ma)GaqT84_|U!ZRuPN3LARf}C*;Aq=MBsU~cVZk$UjF7Zs zR;)pXmnk}k2}h)3G}T?f1Tf0UL0S&wPJ7 zVAfG!B=mM)^Jrz(Q~fAQD=jJkAFAGNGyf-8%7igZoZM=x$j9_Kh{7d$8pz*Jp;RGO z7XK%GM(=i-86VIorZzKnlg>I_4QB9hA2oI0HpQw5#uCIo@S|JYy(iKJ1Og%W#X|(N z^a_9){fuGJ@CbLoz(5E)-{|LaMeuymVUPnw=-2bFn+<%(KJ!%db*F3AX2-JoF$OfA4g-V!u8JzYioJY6 zF0vFLULkz}Dph41NNZ5mynBQCV2g94jE~0es;>2sP}uEPIm`Gl{E{}#nES0pkH_0- zdvrlsZo7AAsw)_=iigu(&+Gfw@nzL*ef_kLj+R52USvi~kJDp3V#9C_Un7&(^D}P& z*|G;#NIuLG-2?o^{?1a}C%hr~>+@PLwq-M=e!Vq02Bdy^y+NGxdj;7oCT{G3e=kC! zj$isWum48rfsc%(HcJ2zq?i`~fx;wjao8KpxI>jYZ8gvy3nmKjYuB~@_)Fma*r|*2 zktGrie%WfJbfI254luYNH{*2#N&d?T%X~dP@X7fsc!!Cqc%VlRsX5nP?AB^+le%Cb z_Tjw+T$O+m)o{RDs<4X5LcBM9N^=CZCdQ%Qix2+PB0 zdzkh^46L_zlcTnvLX2*5%KTKruxnbqS9)@n?1X5enamwP=>MMq zP0l)9Nr7*SqwU;WJRdFIdJo|nSA+r2D`JzgeT5e*5edcRYcQMrQ^cKP78i46-1F-V zPrv{N%ibufkI=Or)}C)c#IQS|v40R$ywwf_2-^%wh2n zoyBiPQ4PYz@(bEM?OcjPpg$=}`cnqy59P6=(V)4KLBh)t4u+qZCQP;e=_E*IL;P== z)W7zNfFOA_jmtIRJd?w5<__0Pp9`Ynbn%_LH%i{-Vvb6_J!OS{L6D{1Y*{vqxZMO2BdM8GZ4YBY)5By_%jc`0mTEo<8@HdIRfeXZ%;st2JB;gwt^k=`Y zn&0Go$qfm!la3!6sbjFnu2L*=yf*9$QOKI)Lf>K^yae!rqdOh5?ZSXlV6FIhfW;tV z!O(+p{Y1gy{QpByt^y!hU8bQBcbbn#)Ve3#Pz5R7sPnKD4vEIFT-loxZ zx_NKIj1huwK4gG@jF$BQ^Vjis`I`A6r)xmK%|CjTOeS2c6@%S5SmX8)3PR5M@+)Ibl>6jLVpmmiYgut@*7MYt@y(C zc%dK6T^h>1W#GR`*}+_l(D2Y$&%Zi@Vly%-7A-)8pVk|Jo=-ly^`&|> zmkhHk7eDNHlQK>}>YY~Uq*Bs!0Y;5>mjeeC(f;!12{Yz& z?DpS%`JEeA7tWYWQPi$~PMI217e{#5i?0XtY}B;*$}Kx3)}OsCZ0$PrHlDox;r7_@ zFfL#4_xk0F#}8q1xFQ?di06-6b?J#=H~@q_y0>%1Pc%g#2!b;hbC#`d+P+Jb&)veO z!g$=hM1m><^fEB`f}jahN>{|P&<$+kLGu{o z0FVj#CSX;tYK{Ur9<)xt;{4x8Ee{A87&JhJgYqflCFzCk7^e=-!O9@fIjhfBQ)DJ( zNF;S{2u%W^WgsXMK~xm!fH7@QW-O_VBenLZ*&M6B912C8YgewMr>8lUq0vnRutc1K zIC}VeyXV}8+f$-mv$^~WJJ)QRGn&ca2qm`hubwt&*A2li0LXarKv- zoGNB>zu4>Q!78nvp-$Y+>QHE`}P2#U(H(nBvCfBW)r zdR%1dfup;PoAvRhs2Cgf9=dVq{Du`v0pR7+$J4%DSkO+|aar#G%$efsnXo5kXCx!Kv- zb$sf&dwATxdpGpKeeXJTD(S;kFIBgm)itPFY)p)gi#?O|Q70{-t^ma_d5)~$mZb~7 z#Tg8mqWGnCUATAqhEA)!AAIZZo*gs3Tl6tAEH9PnE?o#O--ZCNaNSOtrZ@gL@A>`P z6Bhi^d*pbvQgL9ziXOwp91D$(e*NO&k$qMY>vlZ{6gj;LP)RGN=5>xX#GCo~Yh^n} zS1P$+R0GKXlmN;F%p-P;02KmAD-hcPGZXX|A&UTt0%!vgZ>Ua}WC7p}LD&$48X#{$ z_CZMP1U9vR0|06uuY)uL^e8}Eu&xVyKOxHxSOFvl5ZJHH$f1mv^fCY#!nX6mIZkNd z(lrV|K@+cxswhGeO=?I0HH>|4*r`k>tR+zcdc&ZkiluwdH6^pxbSYgYom;$^Fvv}{wSKp$iPu;bz+NoHkc?mcob z_}0yk;M)X21_U;0)~rS6u0eI`__S!%TArJ$)oSY2tB+wA0Q~af;vW|+OiN4a)TK*q zPL5b2Y0|Xj=;Ep_$?4v!_q^FN7k$5A^}6+DZ1bFzkr8??n8{=T0AC=udHLeJCBNps zJ7w+ynx?w-=`RqLRKb~=oU~`l#tAd#9N4)n?Aa5oMpNTE%OVKUuz8!%TUTzLIj+;F zpWVA1AN9two}XT)ZP27;W=hiC%V(>5juxsDE?};}jt7kh7*=MwP&5ERB&g0oCJKN7 ziU4!~n|RRpLbY`*CeWTJuEXt)1BA@f)>Zi8!AW2!eP8wtRW#T3pBlLZ?Z4 z^)M$X#=4ddq1V~h3sgzd5<;(4_Z%%$Cm2^Os?%8Z`YzYjjcsk7)z`W~!()TbY@0m_ z#V`hojUdQ~MXSPsueKgA$}Ho5Jht`@JCB~)zG2O;3+B#UlGkU@uqO}hg*|@?03xv@ zJ~n#g&x_{&v=qZIqtP&|M<)b9ep>P8h80V5b7UJAjM%7%q=dK9 z80f0pEUUB#@OP7tG_|4Qw6IZWTUfbPWr_=TB z)Az?;f8%m%LVq@MCOJ=^JU)H$#Jumm7mLLozAF?8Cr+Mno~sbS zY*3~zgLg?MvqJGFM&&k5Dic9*Kx|Nk9m>Q3na^``C|m8BnkEr|o5~ykhG!54X9g>q zFcLtY&6DPm#>EbWWw>8BmWcCt(Kx6d>fJj1^`n#*cXf(fCYS&C(4R)Fn#twUG~Mj$ z1=T%43)Kn6=6etQAt$1r#ILQn#`NnwCgSp;TD}2^;V<+Wb+ev>eVVrq?Ap&<+&YoN34(HCCj*E?Tt5w^K z@df|_o3*(0JQ4sXii!+>HFjXH?|)f_GsDhG;Z6eaobKg(#$8p*B{)t#N`V+^d9J0zk$TozPe{;p_)MeI)jY^nC%NI z1%n=_EYKqWG(aL~>H(i!&hbM*jsi5TOaTu9pa%*76hK%3gA14kZ~?#%1b!ee^~ON} zJg|2a2qFX@!LirSWHPC1&JcECiHj8HWKo7J%E$!79%EV|g|EHYl<{{}0w2M6I*gBE z{jF?=i0uJDN*Lbg)UFIOXrgKomWcB?f?~L{e=BGIR$6&>%8R>6Pi`?eeD~HptZUch zh(3E^l7){2LFx=&B&^-QT;s_SBK0aoQbZVnqBKQ?-@DPg_fVc+Nn*JV*}rZ%j^iU| zR$>y4qG+C6jvz>KVtg$RPg{G3ZhiU#z*plZK|Q#l~>BTyO6>4vvn6PMQ!O-?~|2iM2I{!?CgweKUFL%sF!b zAT>4RacF3bk?5E$$$1n0x_i%F>o#u2@gl~|k;%TFKhMFz(Z=RuFJvVYPe*AL*48%m ze5Ooa4)+OJc6P_0?&JRN5c>PN&F4=ZUpRB}$?G9DcGYvEUxEy#lH@u~d}=rGnK)%q zISdNRLdB#w=5>y?@G-cVNsVJd1PnG{4#2VjrT{P*7;i#$Z?G@BcXJ*P(V(({$`a+% z0GXhF1i4vY=nOWlz$v>uG#9}pbKk47kWz*SLZhIGL{disWRM0ff-w*zlQJLxRtO%* z5ICYt1b~NNLLmdxFxAebIZwzz|0`g##hLB-75ThoQR94!6h~6G7RIcsis)*LI3|@2 zilTYBxnhYmQqD5Ms);yeZ&6Uk`rV3aw9E|7^&F9ncZdGo9m=7L`0S)OpN;~jT;xyN zTsG6?LR`0n8Ar2nti=|Jy&5)luH!3qaL$N}I{f>$Q`a99JCwB?E79&K2$H0@PgWxF*1wOMUYjmcZ{y<5-Mo>Rk@4c$Q;MRZq9Vm& zF^k2HjfqAO#KFd@>(xULL}G27Ba=}S{p;_`gSz+N7qC5Wc6M;;zYYr{jK&4?=6?UjpJhBG;caZLEIau6)ri-x zj$OV500N;^^qX**G;7i9Y0K7cv9&L{owfxFH3tpm~#*v{tgQu`1Fphlnq z!RietUxShYx+RFq)t!a{S_5P*7!5!%E5QN(9Au`04gkc!s9n)IJuOW|5b9?}WhANb z#d$&mZ^5ua0Wc=wi}Os2Jb5&cLm5MjibSK11X@Q^IvL%bFX|vDqVmeZhkObVCo=q% z(P&({@Y`QjuP@^vmWX4)0sznynRac~eOKOr?W<;1anoIUG|nmDB_hb)*n(c0E- z?}>9xF0T0-$4{FT9r-5w<@4Vb&Rf3WFF|QOITkE@));`g3prXK??H|LaO+B2Couv= z16+hmFW@l%X$E4ivI%lb?PxrJ8wsk~z{LSM4(WWrJ%HQ5tfmG2AT$7_1fnU3%B5A0 zBefVHwJ|mTELSDiVoXPrIg{m53oANZv_fzz40p%=TPQPc>(4KlDvLNnM~}-$OFe($ zn3qpoOT@8Yp^Q*^b!PAmQX|j2vy&mTW!rdE(uoXOHBHky=Z_Bz>c`}8`_KNVQRmXz zpaVegg_8(^wCdXX>WRb6I(B2RIWziqv~_Z6)2&aRkrT`~!?9ClDiw;9q{La@FGkC= zCj2z?0fWJ47}x{=`n7NF?d|PTx9-Vv7a9dNE^>bdM@I)o$EMBAxls05Q0Ym|)ytO_ z%$sxM-;<4-G_BMV(KNk$>91+2sd;&M#}4e{aCs~?E2wurlMPOh9Nx1dE;^FIWX45D zxqEu&Z$Ex;-`nUYI|qly_wVl9xOVo!AF-k;A}m;_8N`7m2Gjr`21Y+{U{zX=U>2Z5 z!7&Z=4|VBP~^_utXdS z7RrGl=B^?t7yww-ZmxrtV=R8Dhg1v}U)XoWKa9+Xvs;$yHR_Ao*If8()so|PNH1BR7kEBet!DQ0Y4LC0hP`|-=iBcVE?!d5 zU^GiZ%vio-2sau-z_kWu3TT@{Db-nepe{frAMoB_&ji%=|Eo-Hz-9p29}0^p%Z?5x z15gY=6hOQIWisgM0e=q9#ThG~PTdY;CXhO7lp&*xVT7tVC1fJ#CB1AYyG$X+>in)yqkyfMx$Zolt7#^npV{Q^we8@KDs;qg`J`gZ{aMzc*)NL9O>$_O)@n3YE?#Kbta(9UliBg9S8v9wIU#p~+qP>z;hRY;HrsUe zmQ5P%+p~MnkfHf?3v#)9^@`>4++4qg4PU-^K4jSN5?UzqA2uQ-DdEbw(?PxZ`uaDj zy!l(OP)Vq0Qbm*b7REBl_^&R@8fDM`3_#>Gkxd!%C;|b%0qF!bXeB2(03ZTJ9BBMO z=vUezOcH2=LFNSP)*xZOzrKV5!UIeN1P>~*V4?%^Af%E&0{|1yh9DdaVlH6i&2Ta( z0~as}%6M*6G7y9YSg%eNA~+kd^t7o4sy*T~3v6`k?>)T+4iQ?ti#Uor`PQ{7~jEc;xJG&S{JDR3ZoJpu;hP(_yodXDh;ta>2 zxd>Y6E8cc)9xra3?=WIwn}MY`yhl8^b!_!wPyc4~e_bgQzt>C##~C&bPSW%g>k6sn za%9<^1APq!Jpc%VR%0ejJ#p<$1q66;(UDdnk)w<2wex40EG9+MeYywPJ2(ggmKxWh zsoY46Ajr*-dor1gSbzj+`)sFA!MUSR#&vnhB*>soz}4xwcIHU`PH& zMbsUjX^JocMIac1>*{aQa-{2krPhH1F|LRyHc!*fl4;brcjKV`8>bFEzIt(1QXEB+ zAMQg_)a`$EAN}L|;R{!e`gwh!49A4n#_sy5qZONj#M&k}ENaQ})hLSg9yny$w+ky~ zF|upZ`X6RZVKSNjT)wqp(+(bwhakwPF=O}d-F^1-snaJ<%$_kVH8rL5fxZ|jy$QOykpzemCKiH+P1x8r_PmqQWG>y-?(^CHaqKOE+&^KX&}Ymv5r- zyS=`Sj^%KQ_1@8HwOju_8WS0D<=knFTAlbd*4?Xy7>8S^@m$i&?i%uN1hGe%;{Uf~ zxnan?sL%Gqxg*&BIn~N3;;1e&jncP=s_Rn`2v+rh{}l30L52aS01!3;E0bHA0jN08 zyaojVNPn=mDn9QD1gi^>*#g8Bvsq&SS{u0cA-Bm#wA>+q<{>Br^bSp$nkHK@tb$k) zE`nL3jN1lz4sBFZWCI3Ij8@{Rf`x)qZ^Q|?dCl6^ELgw{9FdX8et3Z$$sU zVY>Yyip?puIL8ukEPTFbqONKa9v~=&@$E3qyDO?D_O|-X1+G(l=T6h|_as!Zj9c3b zvP8#j^QvrmUB*mn(RcW@{hK#V8KP4wJAO5(^Qft89v=X-D#goNmqPyCk7C%&t;cL! zY8N-i(8;rZnmByi{GWIgS~d|{i8}S@z2fIZ)4%(n!XJbnj3TjwB#4>gzLMw2z8*Jz z*4%H!VsWinwYG2Dl9H4x%aL{O(bL(v=6FDVBnVCa*HR`VBxLfW$#+5@SJKI@UAa7G z=JZix#{RJ6$4WYdiP)H!?OV6pyL%@oDQWEZ3HJ65zy18Sh*iHV z{(HyPfF{iyoSa@fc{FA2f==CfNQ!?HXTe03wa3Bbr9ZJClB3Hwnjt>2?5EC&Oe}RD zSwvdd2Q(oK&o1vF01%T^_=)ufb+Vi$_z0Fr>VD&Uh)^5={!}NqVeA2H+x%9Qw+y+L z^*ODXRy|nOAF6R)EA$nZOu0}4c@olfKym?R0zw1i0pSX458%})gYnwGkZupGR#0^F z%?~Nm^d^PWZ`Y*$Ch#co;4IScgiyL+Y(Ko%naC+(sX9T3V3WDdEI`HRdw=;-%CJhE zw2be`EKs3TNiJ%irWB{ek30T4bgXULqFb1M2@%KCRHuwoM#M3DYqgK*lk+l3UV)>^ zuF0`TaVnJ(#5wZ2TPR%~%H$h!ldOY&L^)OfAP?EZclEVxJr2R%T^Ms;oRdBN$I3Uz zrulFLD{SLw?OawDnNp=V1@U+L?=hAlJ8RuH{Z(?A(Ati}7g8jVot9L$SzG@OJp+UK z<(HD?cZDj%%mJP21~mR=;nFg;7%rrUj(8n5ee|#!&)yVSvzibWd*Rf-z6}F91a&WN zz|8ctUTvD#*x7H{e}v29`+L_e`0m@dxGwG6gvZ2{@c6!F)2?~b?K`#?j5t+l;nKBR z_uF?L1a)lh>E$(a_=w6o(Vks9($mwv9yg(L*B~!%Z-O8^JUz>m;h5;ze^CEnBkR_aB+JtXc`J!c1fVim^OSQJitbSivg%yFaiJqAOR*`;;EHDV1Ssa%esQi zS;(vleA^1yUf(d}xL~Y8C!+x_>t&CPN-1SP0S1-mA3y_mW1KE52?s%~kiwVKV>+n^ z#$gt(!LU%NSR#%E3snQg5gTQ1Y0@YN9D#DI0BHH$t;U=Lxjb3y-;qMiaQ2>Xu85xwJ z0nU47q{eU@z42n>pN^)&2^9xHcWcr#G&!7O-;(j(Ppme^QqvY?MI~a1I2J5aFZ#4F zP1IG|sAIb}VL1nA6CN0|V>zB}iM%xHpr34f{`-^GW<&!(UgYiEm*;7ULQs@4>JSt| za293Miu}4+kNmD`=FH{^YWbFur5Fu{YbTFHJbx5&>Fn2Y7Y!IU6#$%SdH6SPy>00a zfBti+0_UY^x_y^!1-FnS`QzN_vC&Z-x^};O=H!aaJDRmFdfgiUR7z#=^(z7^tGN@$ zDDvb#uUbEK;<$o4G;Y!?H#esO6RW|PImtQx&(Sq2|M+IgR0gBiO8Q2DjoY+sw}0>M z*>k@&@7c{u!J4bBn>Maqv0SB60l={C9q)!$e0949Q?V+w$_96RSJz(lx;1l=U;I;n zy0vnVUjY@9rRJfyk*386-iX29p-J^;@ShV(CyYtbbPA;}nB<@UEg4pB7^?w;FF-H_ zMdq(LXlZJxDxodk$`LIo_o#w;HWL)U6_6T%ss)@RKwW`TU&tf@7=ZYI(+|oxHCx}D zQSLfv8H=s!2SH7?a>=AFn$#@j)xKxUbHJD-WH=N(Ktr6@gJrFushyg% zctSUrZO23q({H4inmCsyt&IA#YA;SJNHuy!fBF%p&{eUF)oc6y+Prn`3iX#AaVp>( zT`nwDYGwgt@@R@cxgwU6f8L|LEXM}=w3oQh5h#MlO9A*V$w5%es(u%?y%*oT8OE_9 zHFAXUF1}EDb^O8Un#{pmd-rPk9PdGr#Il)VwHkHP_FbNa+-%gk14$C3kzlgfGk#q= zs;%FRGsimj8(Q4q#r5rQtK}a4^0~ZsKY>7K>V*~Y>gB_`cg_Zf9zVFx)2D6;84h7I z&Ym!eqNq;Ydi}U~ac*wT*im0ay?pY=s@3^RHx2#$_w3wJ+z4MLW_DK_GJM4OE7wYh zHzuadoV9=V?t*flPn^+X$8FlSebmG$2!eF((d#psxrHwcD+J4;3_dv54rMxHtSCZ5 z1Kcy@Q2+*bZ&jf_&ijgE--ao&LU0ri5sGsW%=GV^KD!}c^ zs6JpH09HJ}q@e#^8MjiE2mlN~hO+H0>Sg6!F);#t-;h@y=PgwwT-CpO`emRg6p%cc zcxqH~5v+vo`5l9tr0MBg=MGG<9m=eYu^01eDQV)UE;D~0lBP9O5l%i9%tcL&ID4UO`q)N)Pt%LDxaiNn@8Ur+~O?&`A)9)Kg@@fS-beyGmz2#Vo+ zYmCJ={gXa8$ainfv8~P)TL3^)R8D$Ic1psQUl!=Jnq_dzkB z6#$ql*3>0`9Nw~~NSC$}(Cc-_5AAQ$v1_l^O?Gbj)3i~m(cm~P%}l>^`h=B8T*5c~ z@ZOz-(YW)-$9@20TgN5{LaD5XEUgA(=11=mi6q~aWB=bd)PjXi2Q^JH03m?3 zLz(k=ZhN)qNu(~5GVl;gMj6X8LM}zTCe*+2-K(+Hiw>ykAk6~35oiR!9k@YYhXV2z zGz8FYz_DXt_5be&(3By(YmnbE}Xw3~{>u74NI;kB~ z)PrSRf|w?X(6nG$6;v*95o|Qa;a63{MZK(}mVT(tyQ+|VYhTS_yJk~UBMx66=-R7q zgGP-l5y!$O4rNdyC{9xZ#o2_{AHz7|Um02j0N2+CI8G%q`tK%PgjN65v)fRKq z3i-ibW+#R}*K0Khini?BWAVnlID>KT>Uo1s7udGb*E(I}HXThncjzO!VMP8?Fy-XYHHw;iIl_Pp}899FPlzHEk&_wIOo!bLPjK&K*&=HHp zo3?Fl7SLej@?~w>wYz-r!qGzqH*Wo_LO*~Si<$qVcK)^P!M(c)@$n_^h9HPrt=cI` z$>u$K<&m12vh%NPJig%fbzAVxt(Uf9SaFd`@6lEq6u>3OvI2$|@R)!y0PPC4rdBx-pb7*l4q$DW zB5U;B)>sg!w%{jX-N@vIWDcH_N63>xFar>@-T> z-~-n+E`rVCy2vQwU)d=-irVg0uO+XFbWL9-H8tX7q@^C*^_L~$SorkOr@z9*t~{S^ z001;aYI0ak4H(uQfMOi?R%IA~&bqtT$~OpORh!Q~MUuM~Ot5xxYt*$bhc9Gtct5P) zB@l@L;L7oXLnqG`Tif;={X1&X!rIW{RY*k z?`zs;pbVaV6k<%d_paJnlRn#nqHL4OWM5TYb`3~CGBm;TL8R#N9i!5stwcXjzOMI z8v3(s?ius0=w-_Uo*%kJ=W|t`lSvtdbM1@Up&*4EnaxE8Wss`$5*&*ov^0P-#`5F6 zJJBr-;=^S7;f2rZfHEg=9CvBchOzA%Gs@&cdQG1L06LoL!2B=w<0IHIfv2Fv1TT*! zf(`N|{M!EZMW}$hf!6^_Ut1^_W>MheQv;+p`P9^ibL+~*KYmU+bF_srQi5|d0PubLdas=8#nabykY&F;M=*mxkc_t7zwZAP#mcOu7$gH&Uw8iW|+Tm*|GG}b6%nZRQV=Rc!N2bB4bE_0PS>7u@H zAw(UV+l(RHuT9S>LsecFp?X88bu{IHacW`jRRNWp;Q)Y~A|wbd`oJ*SLe*1KBhH9% z-yFMq%gM#{;;DZ_ZeIWHr{Aq@EfL4UrwvW1-(1kAg%OH08X)`OA?dw+Rz4ky%y1~Z zTK@WK#`TTzu#3(;e?Xbl>3V$s^dT-^81?wB#L;E{?U(cZ*p&a4n`fPEzb%|QwA>Lq!}! zEtvCGCgRPT&h6SvnK(W(Bg3a|y$$Qu4(i+c+?i8F?wpaHZf$LC#h#GIX!RA3TCh+SP=KHL?mjpd05}Ndgt9mY+Jj}CK^Y3|simnORd0{$vOvIYS?+Q&BhbuhO#&^LsM!(6*T2!o36pAhc)pE^x_tJeCE{54)Im^5mqkpw zIskyNxGbC6D3fd5Y?vXZa1KBjG;w<;WCd@}i?}Hcc-KXz8p+Gf>N{iccl$4m`E{ef zO62VBng7SVujWJcY~9$la}WRw7(S}J z)6?m6Y)k8#iek=(k)aRoXJuya`Fxd1^(yQoj^hjlqoIEhX5`_oUum?Oy7lUt@$6MV z*KXZy?d+yZ9RKvm;}Js!cI(k|?D&b*Jt+$oO2P-@_GjBFC?bW_JE5$tnv@LE(19iH z%d!Cg0_gjOJZFqGh;4gbCsWb{`xCf*Hvo+T;)oXU{O^c1GlA6d5NvRP9-VnKaZ8{3 zmelEKstH4YzQ0sO13Wb+^@PL{y3sg-i(SA9;h zIG~ShtI+^JlSX;?Rkn@0UAu|d4-OF;Im#@l#H(sB=rlNs<=|dK_ukDve-{<@OkgFN zym(pu#+Y+g)pY1R2z$ScDMe8iPyf4h?aI8|T%kymmXd5|?|?HHzpdF| zG#YyJ8(7}y;W(Zvt4R5}1u$=t)3^V?)hqrmHIo5=K|_blnK%E#uFokc$>Yb2nm2y| zhES}M=Gr<2>_Oeyhh4JX(jcSM;@8A1dgn$VooNlBmqK!9Lp_1TY% ziVjS18I>)Sfh)#(OKJn(p8y5)8$uIBs(o?3E6OshP@UFE($m70F=F(4cCCHQb@CRzcH`yCZC$5 zz$wJ%7;*BimSv0!zW$BY?>;b~Q>(}KLlRGX%za_;)zIpz* zeb4?j4o(Tt5wfiGf>Inso_yB$QEy|STet5tef~m)BG19mDLyXN%criDNW6OMuCmWR zA1`P7oNVcrd8765nDeK`X0zIN=y>(=rEWcX^7;H(^S*U|QmOXr*s*=g=t4)5Lh_s(s9?%3C)MOl2S zELf;g2zj#n-c|s>*aC*g*{IBB+j*f(4pZ#Rwyy&K2!=cNTu4)-QJF<*1scWT$BZKtlLqy9bgH=E75_3VwQ*Qbe6RW~JL@8CdER9;@5 zm6gS-v)q_7$>DN&TX&R{r^d#_j2|Y6izFO4db$FvC)5L=XC3k=ii00!R;WBsK` zlhMWz>}sf%R?=h^Wyq$C`Rbr}Qg>9B>4vdmNi7pWNCb-}H0hLn4$n1`P;(J1oKPRt zW*UL^!}$dlb6ikXFqLcGPKs<4V08%|TJrKcJDlL+P@rQaO6~(2qZSKkvKmr%a#m@uPhr z_y;uV+@_0% zW!ZeVs8ZPsVB22N%T}oq$8a3|a2^1>Fe)V|&Oy+@Y+D6Ip3r9vw{uvTnb6Wf)CxoZ zuqrdbiOHH`>#{C0=^0JSfQZ#=q=b=&Vopq!w;eCZpmR4<@%QDtY%NVC8uTACh}nzN z%vF|VqRNWXj0U|l_B9CYED@(H_%;k^)3M9BZ_2;1DZB3`>{2+Zq3^HU1_Vu zOWKT->>T|Lnx+Z8CgwWEw`03Dv8~_2#-|BQ5!&wcQu~_Q#L&W}G;j`{GIHo3NJ|X{mgn z(9ziy0HWW7=QqQt82PtY2lww&t5uN^5g#+!7fa#$)SR50UfsGF4F*RiXKQO~tycRc zJeUZ|0MOPS+6Yi3ukT z{cSMlNA&7K7>#W@b=7J#OE+YM(#(v$gNM7hd!(f#)oT!N>FmjcGbXoa+y3`;TO2>Ap)D6r9*2HAXO>7Lwj?KxE0kfv#sN+l3f zn}FNG7ecC0zak@HgxH}mSGX!OL5wrB5oUUIS9%_uzlKe zB~7vrl&M1oitJn&>@Ct1369GMBZeUN)p;HGVmtnSX^aid001087zpx0tBloaE0*L) z2}6iVuA#^yxtSuI(S|1?z`R9pUnq_a_D}BzE3x;Qom(PKajgDzN$ZZC7B5>Zv9TH6 zv-7Ph7iWC8=>)(i`X|+nlw?rHZl?&ky=C7AUHECWDlX1Ng5CO?^vBm5p|1D=i)rE*uPJ~VXYgq%?`U& z^+^r@Y*;e)#e+K?dJh5sX?p6}13S5Vp_N3k`n#!eSvH5q$1uGA*vYQ$UVklHEU~eZ zWo59K_>D^!diEdWq?j=iH305BL#CX@9rB>2s%mlaELGSX5{UOA^wDAui6Wou{G zr*A)_v4#`@RWW6%I5Md@>-hKp0FTGtyKBeFwd;!8SuU4fxpeXJh4Z&=-e}sa`B$UH z^y@!>&8dEuz{+6X!NaB(TQ+V`DikNqo^Rczt%R{l?cTFj z_0H2m4Ms{B_Q}#}Guea1b_SZ#(XO5N5)^^_UM{_?Y@TTpzox%k=HwNv*Wd`UFfG=L z#eJqx_^^4mmAN#~92D!w7t`>b`*I*da7r)Dp^TEM?VLjZ9con20I!VdzAPItivPf` zwL+C>q-krEp{6N4O}XIQ({ibSrq~F2MUg`R-GXbC?*yPA31Ia zE22XHXq3qj)@cjyUd*v>&>`W%c71LpOI)Q|P{L@qarzidQ=vC6e?51Rt)ug%Q#WS~ z>})jX?VVkfd2+2<{{_MNw@#^$`Bw2|%8kBN9vU2khQ=K#R8R z<71-(niO47`ts@Hm(QL=zIvG$|2A8iohA?pXHA>p-DB^9=E(hV+rLz4-G$acLTfQrMZb3% zpe1SbM5|OIgn~~s<_f%lmn$dt=cFxj@ifr%**s}IHt$GohL)gmDWV-;Jl@*Lf$?sM z=9)6+&&w=&Obyzs*2pM#P~He;*{4* zx)44459&L3n6<4P0E`$r(YtQ_XQ2;9Pn^mZ2o}$o=HTqS@Yg?@wQg(98ULR;*6*$l z(K2;qjGs@wUvO+nUS*6gaeLSEF()amyvKg1SCJ>aHp85%k1{E6002Ps=Da>Fj3IGX zK06`^9Ko*LBL64(4g{f%dUf*4?9ihQou;Q={DbS#fHrC+O$HL`T-Sk1Q_lSAHh6`j zuTPci;0O=tBQ`|7A#Z@>i_;NKR5FATvO?y2o^Rkzu#bptOudN;T)$*NZ=hjbT8^{%Sv$&%r zj%*YKfDo1ZfGmAN;+vr&`%*I;3uea>af-v<(aDtIm@vt5+IH%q*Xst4`Z_))Mx(Bx zZ>xnbh5tt!L8IXeYY$^iJjO598QH$`beu2AdvlE`c6J}R*}CZvj3;5+dP)KZ07YRe z9-|nEj$5}0o&)D;vl3sdo2X2#A{7dPqKh}~UGeuRTPK%Od$*Z33WOq^M!kIYgscA^ z4jMS(%D;!RQj^EdUA*f`=z=wW*}J$M-1S$VcFkvv8@Xe{+R3x$|9fcv;|F(3ILomE zd#8*Xl9rM@^ZO;2AHMi~-Ih@kr?hI{(YIm1^!W=pTrL1yId^)~>gB!KG#NjAwk5+c z3*~z>8xTSg9ujjq9X>QZKZ-eHopWL~To)o`g-Xv9?ymhxet-AK+ z2?UWZo?QHA|J&Ekmn>hCk(PSr#%9rHS@u_Pt7>^u0Fk;l` z;`TuhWZ%KVfeq>_mC9{9cYpK@KQlBM_3j-zUcU-E`R{SlmX4jfWTdB$7(DR&m1_(} zm1-L-)I4sbWyUMj^+m!f-5ZDJ=Dk&_J%#+&k(qUiQJdUV$^Xns!Vs8d>)MGg27pwf z{)$2-#PF^{2>>7f3+!vJ%uHCC{j-Gi%6RODLrn7TfHI^1G6*1+KGuE za`Ig<4+BALaE7TE&k1L3lqS0}*-?7U#;hbO46noDZglnGp%?)8uz71U6SE1!vD_>j zO$`y*$LKZp)p^e}3L{PXarl00UU#9j7mJ%;%=RH&1(L1;NpbI5s2VI0r&P2W&EdT} zBg0=^JoT?>OY07uvoh1Cj2v?C%w^mXaV&fshO}3NG7A^ESa<)~n43&0GjO3Jsgg3p zMc240WAA6&*o>g4UAu3DKJ5X(AWzE+zmBm5R&_f90080`G&lXqpHT;Y=GfJ4Fm*$b z<5)LnPg7*XzQqCa_Hga0!qI-*{2y6tPM+*thXw|dX=Cr$eaI*PaCEJ`<<|u+?p`sk zUu^#6J1dE`x3B*{mu?A!LICg!2wXB}T1I->?yVbiI?ecLbKZo#xPIx}{oq?hgCVea z%f>BQ4g6}fZ^MB6Vzv+IH*`e5p(Co`V}5BM1)COygoI3i_xyVNgluV+t6MF!_`9oud{T0q%9i33SC?NFaCu7EcP>?v^C9ID=akwo zrvyq>>3sL-WpIWRN0A_BhhG|%V#6;D&;B+2ZJJR(*WRrz>)qv*r0JJhl`E4~&_$XC z7@HX0U0^*zQf!NoEW$7)DRPUek0YZhOsfv$q~BA?GYNwii#yZSwP0oyr`Mj4XDLY{ z)u^9p>(aESz6yGp>L2&gbak`E8GWp58*_yoEKZ?*+Eu2asQ~5`-sEHU9ykR>IE83D zcHy@D2ivwSS{xD*5;AqtH&5>emoWJCTelZ1{`uMe_bKGVmQM|cIAy=u(=>hS%B2@i zA4xMZu3k8!(`p4mVfVfRTea_4r@pUiEq4S##t-h(A*jdD(c^NmrB1GHMMj*DY?xC4 zP0q_Cc?C{X0ZmTD8s=0$obw@{mpG?XDURaNK0`)0pcu;{9(*X zcj!EWZU63h8BLLz)K@IAi^)a$T~i~Pe!6OuebXK;okkURYP~!wY{SIfzaJFXyB4=k zKILkUldmf)$f3=vA6&nfnVRh7+i==XD_uRj^WSxB zwrn_^_*DvJCj@r{nAmiWD#IP`tRiwzxxacXut$yPxknznT1zNixYk zyLtBBd(OS*EZ9Go(n$w%*wJ{?`ZXLTS&X_4-sn!-7YjIaoZ@Tz>oe_kT-4 z$J%Ly^J}5aQ)R1+)Vf30+q-Gpp)1JwZDt6F|C49320d1-mwv{`utou8t#=z14Hd}L zH7UQ|3qI$rw!5EpQ2SKU2r-xqKah8y^BA-%`OlD(xceVeF20;M7Fs*gWcH@tp9QaF zE}XcvMK{b&Cl<3uX%FlDVjs!gEi5VGPyT(sver9eG8HAU=P3BRgn^IY3{387IV=;s zAJ9#hRIJrFUrw2Z-t+n#n!Kzuule3D*LX9M4Xvinw7c7OyAM|VJjW?eM%vpEO*u6& z$WQAh+B(uod4+Bb=F}a)`nF!w1Dgu<6e?x;4Sby{%^m|MsL07G<;zbFPct&=blZ|p%=&-WZbaLXaah>(3*2ibt58$THQs6fEA3su1KOjh| zVf8zTz+&*%veoE|C87TA5rI|h`w1iQDI-g7Kv?-M)M=wUMfCr+{>dA;_>Ymq??B<&anW@bDCXdz* zk4qb$8o&P510+mMRd={|{B^!;`;9e@lQhQlaOVdg*EQ70I`a22zc zr109+gkIXogreB15b@kdGc%{7Na42A7tWIP{m)<7rM1Hf6J$o^|LX-{ruX-5FE6Ss zC{4+Ta2SdYEUGQ*AY-P#Siuz$ot|D@oSR;sTOa8iPt3V>&)zXr68Zr8I{3H~Z~B1_ zYkAR!GB_A2_~&!g#Isg_#HP79i9P3l3U`q`*T(2qntYe%vZWF0&&slDRDY-Hw^NjQh~u_d5a;D z;7>7I66U)$eNJ;pYh}#*zaOQC>G4VCwFeqF6UcrcQ8Xrgub`8op^8k!Oq`pW7NsD^ z5Q)t|1=SD?#&4|Y&V0LwQ9uVR)_hs1d3jaxWP=CotEo;F<&*Rqq#c1i^84y~d;3aD z+vs{bI1m#IUd8zm=>a+L6% z_hLFl&|r!m9Ah$iTxPz8z7QDdb{-M3&qSE;x1{ol6hG(?Ik0EHU3Ax0lI0z*F$3-@ zr>?d(rB{_G#GL);5f3|6-*%fulibF>{S)sWlk6WW`q|0$w)Ob%@xVQ+D*Dd@eB5a1 zboKW>5N+xL)6%Ys=zApv3 zq=|@!Gm?@59iCnnmR>hhbu2U;UW#ZJ=HXFJPF8jtJFlq7+|;tNtc;^x=h$T(J4oaZ zACHThGjBQx1X!q2vyfj=p0!uyyuqXi#;7dJ?(Xd9cbQR#9mm<)Gcb8PM!r+kA0Hoi zx_eq$SxzJ-(A2xKFQtE?T6o0077gEED~ZE!pTMv1#_N)^szEmYDi@v_#;2jpS((S% z@at4V4i2X0+&kYcBz$7+7&~joa|;oV40~&1`%@9B-mj*Hf|8HQlBVQCQN1b@Aeqt1 zfxIbXi_EQ`pipYcOhs8OZizp)zG|FAmQkJn6VlYCm>*2C1RHxJ5#z;MJ7nC+zXC5P z8cOY&j;E{Z3+!;-mUJx^~}r3 zuZtYtkHMX2BNA}I3h#AjY&;<>wKDm#mr%YBb+**0Q!Aoxg;hTyC%?S1B6*;6doQIBCDAg1`NHK7KY6hqA^+0OZN*xJ?%#q+!3gZLugt2m0s9jzj z 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 diff --git a/vignettes/WeatherRegimes_vignette.md b/vignettes/WeatherRegimes_vignette.md index 3124815f..0db8b43b 100644 --- a/vignettes/WeatherRegimes_vignette.md +++ b/vignettes/WeatherRegimes_vignette.md @@ -57,25 +57,7 @@ source("/esarchive/scratch/nperez/git/cstools/R/CST_Anomaly.R") # to be removed c(ano_exp, ano_obs) %<-% CST_Anomaly(exp = exp, obs = obs, filter_span = 1) ``` -Check against original ano computation: - -``` -clim <- Clim(var_exp = exp$data, var_obs = obs$data, memb = FALSE) -clim_smoothed_obs <- aperm(apply(clim$clim_obs, - c(1:length(dim(clim$clim_obs)))[-which(names(dim(clim$clim_obs)) == 'ftime')], - .Loess, loess_span = 1), c(2, 1, 3, 4)) -clim_smoothed_exp <- aperm(apply(clim$clim_exp, - c(1:length(dim(clim$clim_exp)))[-which(names(dim(clim$clim_exp)) == 'ftime')], - .Loess, loess_span = 1), c(2, 1, 3, 4)) -anom_obs <- Ano(obs$data, clim_smoothed_obs) -anom_exp <- Ano(exp$data, clim_smoothed_exp) - -all(anom_obs==ano_obs$data) -all(anom_exp == ano_exp$data) -``` - - -- The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span=1`. +The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span = 1`. ### 4- Weather regimes in observations @@ -105,7 +87,7 @@ clim_frequencies <- paste0('freq = ', round(Mean1Dim(WR_obs$statistics$frequency, 1), 1), '%') PlotLayout(PlotEquiMap, c(1, 2), lon = obs$lon, lat = obs$lat, var = WR_obs$data / 100, - titles = paste0(paste0('Cluster ', 1 : 4), ' (', clim_frequencies,' )'), + titles = paste0(paste0('Cluster ', 1:4), ' (', clim_frequencies,' )'), filled.continents = FALSE, axelab = FALSE, draw_separators = TRUE, subsampleg = 1, brks = seq(-16, 16, by = 2), @@ -125,12 +107,11 @@ The matching is based on the minimization of Eucledian distance `method='distanc ```r source("/esarchive/scratch/nperez/git/cstools/R/CST_RegimesAssign.R") -WR_exp <- CST_RegimesAssign(data = ano_exp, ref_maps = WR_obs, method = 'distance', - composite = TRUE) +WR_exp <- CST_RegimesAssign(data = ano_exp, ref_maps = WR_obs, method = 'distance', composite = TRUE, memb = TRUE) ``` -`CST_RegimesAssign()` provides a object of 's2dv_cube' class.... list with 4 elements (`$composite`, `$pvalue`, `$cluster` and `$frequency`) with similar information to that provided by the `WeatherRegime()` function. Further details about the output can be found in the package documentation ([*RegimesAssign documentation*] (https://earth.bsc.es/gitlab/es/s2dverification/blob/develop-Regimes/man/RegimesAssign.Rd)). +`CST_RegimesAssign()` provides a object of 's2dv_cube' class which lists several elements. The composites are stored in the $data element which in the case of `memb = TRUE` corresponds to the mean composites for all member. `$pvalue`, `$cluster` and `$frequency` are stored in element `$statistics. This elements contain similar information to that provided by the `WeatherRegime()` function. Further details about the output can be found in the package documentation. ### 7- Visualisation of the predicted weather regimes @@ -150,3 +131,5 @@ PlotLayout(PlotEquiMap, c(1, 2),lon = exp$lon, lat = exp$lat, bar_extra_labels = c(2, 0, 0, 0), fileout = './Figures/predicted_regimes.png') ``` + +Observed and predicted weather regimes are very similar although their frequencies are slightly different. Cluster 1 is the Atlantic Ridge and cluster 3 the Blocking pattern, while cluster 4 and 2 are the positive and negative phases of the NAO. This patterns can change depending on the period analyzed. -- GitLab From 8a64846e2dc389fdf4b5c6906bf17940ba10e614 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 15:53:50 +0200 Subject: [PATCH 148/184] Dependency for PlotTriangles4Categories added --- DESCRIPTION | 1 + NAMESPACE | 1 + R/PlotTriangles4Categories.R | 3 ++- 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 0492186b..b75353bc 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -57,6 +57,7 @@ Imports: data.table, reshape2, ggplot2, + RColorBrewer, graphics, grDevices, stats, diff --git a/NAMESPACE b/NAMESPACE index 5568fd0c..4011ef12 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -49,6 +49,7 @@ import(s2dverification) import(stats) importFrom(ClimProjDiags,SelBox) importFrom(ClimProjDiags,Subset) +importFrom(RColorBrewer,brewer.pal) importFrom(data.table,CJ) importFrom(data.table,data.table) importFrom(data.table,setkey) diff --git a/R/PlotTriangles4Categories.R b/R/PlotTriangles4Categories.R index 07369a16..fcfb36bb 100644 --- a/R/PlotTriangles4Categories.R +++ b/R/PlotTriangles4Categories.R @@ -71,6 +71,7 @@ #' "Aug", "Sep", "Oct", "Nov", "Dec")) #'@importFrom grDevices dev.new dev.off dev.cur #'@importFrom graphics plot points polygon text title axis +#'@importFrom RColorBrewer brewer.pal #'@export PlotTriangles4Categories <- function(data, brks = NULL, cols = NULL, toptitle = NULL, sig_data = NULL, @@ -354,7 +355,7 @@ PlotTriangles4Categories <- function(data, brks = NULL, cols = NULL, list(fun = saveToFile, files = fileout) } -warning <- function(...) { +.warning <- function(...) { # Function to use the 'warning' R function with our custom settings # Default: no call information, indent to 0, exdent to 3, # collapse to \n -- GitLab From 68677fbca96fb7e7943db9797405aa023eafe31b Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 17:42:50 +0200 Subject: [PATCH 149/184] documentation generated with devtools --- NAMESPACE | 2 + man/CST_RFTemp.Rd | 105 ++++++++++++++++++++++++++++++++++++++++ man/RFTemp.Rd | 108 ++++++++++++++++++++++++++++++++++++++++++ man/dot-downscalet.Rd | 79 ++++++++++++++++++++++++++++++ man/dot-interp2d.Rd | 44 +++++++++++++++++ man/dot-smooth.Rd | 30 ++++++++++++ 6 files changed, 368 insertions(+) create mode 100644 man/CST_RFTemp.Rd create mode 100644 man/RFTemp.Rd create mode 100644 man/dot-downscalet.Rd create mode 100644 man/dot-interp2d.Rd create mode 100644 man/dot-smooth.Rd diff --git a/NAMESPACE b/NAMESPACE index 696a3e89..342847f3 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -17,6 +17,7 @@ export(CST_MultiMetric) export(CST_MultivarRMSE) export(CST_QuantileMapping) export(CST_RFSlope) +export(CST_RFTemp) export(CST_RFWeights) export(CST_RainFARM) export(CST_RegimesAssign) @@ -33,6 +34,7 @@ export(PlotMostLikelyQuantileMap) export(PlotPDFsOLE) export(PlotTriangles4Categories) export(RFSlope) +export(RFTemp) export(RainFARM) export(RegimesAssign) export(SplitDim) diff --git a/man/CST_RFTemp.Rd b/man/CST_RFTemp.Rd new file mode 100644 index 00000000..a7beced6 --- /dev/null +++ b/man/CST_RFTemp.Rd @@ -0,0 +1,105 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RFTemp.R +\name{CST_RFTemp} +\alias{CST_RFTemp} +\title{Temperature downscaling of a CSTools object using lapse rate +correction or a reference field} +\usage{ +CST_RFTemp( + data, + oro, + xlim = NULL, + ylim = NULL, + lapse = 6.5, + lon_dim = "lon", + lat_dim = "lat", + time_dim = NULL, + nolapse = FALSE, + verbose = FALSE, + compute_delta = FALSE, + method = "bilinear", + delta = NULL +) +} +\arguments{ +\item{data}{An object of the class 's2dv_cube' as returned by `CST_Load`, +containing the temperature fields to downscale. +The data object is expected to have an element named \code{$data} +with at least two spatial dimensions named "lon" and "lat". +(these default names can be changed with the \code{lon_dim} and +\code{lat_dim} parameters)} + +\item{oro}{An object of the class 's2dv_cube' as returned by `CST_Load`, +containing fine scale orography (in meters). +The destination downscaling area must be contained in the orography field.} + +\item{xlim}{vector with longitude bounds for downscaling; +the full input field is downscaled if `xlim` and `ylim` are not specified.} + +\item{ylim}{vector with latitude bounds for downscaling} + +\item{lapse}{float with environmental lapse rate} + +\item{lon_dim}{string with name of longitude dimension} + +\item{lat_dim}{string with name of latitude dimension} + +\item{nolapse}{logical, if true `oro` is interpreted as a fine-scale +climatology and used directly for bias correction} + +\item{verbose}{logical if to print diagnostic output} + +\item{compute_delta}{logical if true returns only a delta to be used for +out-of-sample forecasts. Returns an object of the class 's2dv_cube', +containing a delta. Activates `nolapse = TRUE`.} + +\item{method}{string indicating the method used for interpolation: +"nearest" (nearest neighbours followed by smoothing with a circular +uniform weights kernel), "bilinear" (bilinear interpolation) +The two methods provide similar results, but nearest is slightly better +provided that the fine-scale grid is correctly centered as a subdivision +of the large-scale grid} + +\item{delta}{An object of the class 's2dv_cube', containing a delta +to be applied to the downscaled input data. Activates `nolapse = TRUE`. +The grid of this object must coincide with that of the required output.} +} +\value{ +CST_RFTemp() returns a downscaled CSTools object +(i.e., of the class 's2dv_cube'). +} +\description{ +This function implements a simple lapse rate correction of a +temperature field (an object of class 's2dv_cube' as provided by +`CST_Load`) as input. +The input lon grid must be increasing (but can be modulo 360). +The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +The output grid can be irregularly spaced in lon and/or lat. +} +\examples{ +# Generate simple synthetic data and downscale by factor 4 +t <- rnorm(7 * 6 * 2 * 3 * 4)*10 + 273.15 + 10 +dim(t) <- c(dataset = 1, member = 2, sdate = 3, ftime = 4, lat = 6, lon = 7) +lon <- seq(3, 9, 1) +lat <- seq(42, 47, 1) +exp <- list(data = t, lat = lat, lon = lon) +attr(exp, 'class') <- 's2dv_cube' +o <- runif(29*29)*3000 +dim(o) <- c(lat = 29, lon = 29) +lon <- seq(3, 10, 0.25) +lat <- seq(41, 48, 0.25) +oro <- list(data = o, lat = lat, lon = lon) +attr(oro, 'class') <- 's2dv_cube' +res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) +} +\references{ +Method described in ERA4CS MEDSCOPE milestone M3.2: +High-quality climate prediction data available to WP4 +\link[https://www.medscope-project.eu/the-project/deliverables-reports/] +and in H2020 ECOPOTENTIAL Deliverable No. 8.1: +High resolution (1-10 km) climate, land use and ocean change scenarios +\link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +} +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/RFTemp.Rd b/man/RFTemp.Rd new file mode 100644 index 00000000..3945f571 --- /dev/null +++ b/man/RFTemp.Rd @@ -0,0 +1,108 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RFTemp.R +\name{RFTemp} +\alias{RFTemp} +\title{Temperature downscaling of a CSTools object using lapse rate +correction (reduced version)} +\usage{ +RFTemp( + data, + lon, + lat, + oro, + lonoro, + latoro, + xlim = NULL, + ylim = NULL, + lapse = 6.5, + lon_dim = "lon", + lat_dim = "lat", + time_dim = NULL, + nolapse = FALSE, + verbose = FALSE, + compute_delta = FALSE, + method = "bilinear", + delta = NULL +) +} +\arguments{ +\item{data}{Temperature array to downscale. +The input array is expected to have at least two dimensions named +"lon" and "lat" by default +(these default names can be changed with the \code{lon_dim} and +\code{lat_dim} parameters)} + +\item{lon}{Vector or array of longitudes.} + +\item{lat}{Vector or array of latitudes.} + +\item{oro}{Array containing fine-scale orography (in m) +The destination downscaling area must be contained in the orography field.} + +\item{xlim}{vector with longitude bounds for downscaling; +the full input field is downscaled if `xlim` and `ylim` are not specified.} + +\item{ylim}{vector with latitude bounds for downscaling} + +\item{lapse}{float with environmental lapse rate} + +\item{lon_dim}{string with name of longitude dimension} + +\item{lat_dim}{string with name of latitude dimension} + +\item{nolapse}{logical, if true `oro` is interpreted as a +fine-scale climatology and used directly for bias correction} + +\item{verbose}{logical if to print diagnostic output} + +\item{compute_delta}{logical if true returns only a delta to be used for +out-of-sample forecasts.} + +\item{method}{string indicating the method used for interpolation: +"nearest" (nearest neighbours followed by smoothing with a circular +uniform weights kernel), "bilinear" (bilinear interpolation) +The two methods provide similar results, but nearest is slightly better +provided that the fine-scale grid is correctly centered as a subdivision +of the large-scale grid} + +\item{delta}{matrix containing a delta to be applied to the downscaled +input data. The grid of this matrix is supposed to be same as that of +the required output field} +} +\value{ +CST_RFTemp() returns a downscaled CSTools object + +RFTemp() returns a list containing the fine-scale +longitudes, latitudes and the downscaled fields. +} +\description{ +This function implements a simple lapse rate correction of a +temperature field (a multidimensional array) as input. +The input lon grid must be increasing (but can be modulo 360). +The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +The output grid can be irregularly spaced in lon and/or lat. +} +\examples{ +# Generate simple synthetic data and downscale by factor 4 +t <- rnorm(7 * 6 * 4 * 3)*10 + 273.15 + 10 +dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 7) +lon <- seq(3, 9, 1) +lat <- seq(42, 47, 1) +o <- runif(29*29)*3000 +dim(o) <- c(lat = 29, lon = 29) +lono <- seq(3, 10, 0.25) +lato <- seq(41, 48, 0.25) +res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4, 8), ylim=c(43, 46), + lapse=6.5) +} +\references{ +Method described in ERA4CS MEDSCOPE milestone M3.2: +High-quality climate prediction data available to WP4 +\link[https://www.medscope-project.eu/the-project/deliverables-reports/] +and in H2020 ECOPOTENTIAL Deliverable No. 8.1: +High resolution (1-10 km) climate, land use and ocean change scenarios +\link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +} +\author{ +Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/dot-downscalet.Rd b/man/dot-downscalet.Rd new file mode 100644 index 00000000..9b28e05e --- /dev/null +++ b/man/dot-downscalet.Rd @@ -0,0 +1,79 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RFTemp.R +\name{.downscalet} +\alias{.downscalet} +\title{Lapse-rate temperature correction downscaling} +\usage{ +.downscalet( + t, + lon, + lat, + oro, + lono, + lato, + xlim = NULL, + ylim = NULL, + radius = 0, + lapse = 6.5, + nolapse = FALSE, + verbose = FALSE, + compute_delta = FALSE, + method = "bilinear", + delta = NULL +) +} +\arguments{ +\item{t}{matrix of input temperature data} + +\item{lon}{vector of input longitudes} + +\item{lat}{vector of input latitudes} + +\item{oro}{matrix of topographical elevations (in meters) +The destination downscaling area must be contained in the orography field.} + +\item{lono}{vector of orography longitudes} + +\item{lato}{vector of orography latitudes} + +\item{xlim}{vector of longitude bounds; the full input field is downscaled if `xlim` and `ylim` are not specified.} + +\item{ylim}{vector of latitude bounds} + +\item{radius}{smoothing radius expressed in longitude units +(default is half a large-scale pixel)} + +\item{lapse}{environmental lapse rate (in K/Km)} + +\item{nolapse}{logical, if true `oro` is interpreted as a fine-scale +climatology and used directly for bias correction} + +\item{verbose}{logical if to print diagnostic output} + +\item{compute_delta}{logical if true returns only a delta to be used for +out-of-sample forecasts.} + +\item{delta}{matrix containing a delta to be applied to the input data. +The grid of this matrix is supposed to be same as +that of the required output field} +} +\value{ +A downscaled temperature matrix +} +\description{ +Downscales a temperature field using a lapse-rate +correction based on a reference orography. Time-averaging is done on all +dimensions after the first two. +} +\examples{ +lon=5:20 +lat=35:40 +t=runif(16*6); dim(t)=c(16,6) +lono=seq(5,20,0.1) +lato=seq(35,40,0.1) +o=runif(151*51)*2000; dim(o)=c(151,51) +td=.downscalet(t,lon, lat,o,lono,lato,c(8,12),c(36,38)) +} +\author{ +Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/dot-interp2d.Rd b/man/dot-interp2d.Rd new file mode 100644 index 00000000..b03c6eee --- /dev/null +++ b/man/dot-interp2d.Rd @@ -0,0 +1,44 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RFTemp.R +\name{.interp2d} +\alias{.interp2d} +\title{Nearest neighbour interpolation} +\usage{ +.interp2d(z, lon, lat, lonp, latp, method = "bilinear") +} +\arguments{ +\item{z}{matrix with the input field to interpolate (assumed to +include also a third time dimension)} + +\item{lon}{vector of input longitudes} + +\item{lat}{vector of input latitudes} + +\item{lonp}{vector of output longitudes} + +\item{latp}{vector of output latitudes} + +\item{method}{string indicating the interpolation method +("nearest" or "bilinear" (default))} +} +\value{ +The interpolated field. +} +\description{ +The input field is interpolated onto the output +coordinate grid using nearest neighbours or bilinear interpolation. +The input lon grid must be monotone increasing. +The input lat grid can be irregularly spaced (e.g. a Gaussian grid) +The output grid can be irregularly spaced in lon and/or lat. +} +\examples{ +lon=5:11 +lat=35:40 +z=runif(7*6*2); dim(z)=c(7,6,2) +lonp=seq(5,10,0.2) +latp=seq(35,40,0.2) +zo <- .interp2d(z, lon, lat, lonp, latp, method="nearest") +} +\author{ +Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +} diff --git a/man/dot-smooth.Rd b/man/dot-smooth.Rd new file mode 100644 index 00000000..a992c541 --- /dev/null +++ b/man/dot-smooth.Rd @@ -0,0 +1,30 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_RFTemp.R +\name{.smooth} +\alias{.smooth} +\title{Smoothening using convolution with a circular kernel} +\usage{ +.smooth(z, sdim) +} +\arguments{ +\item{z}{matrix with the input field to smoothen, with dimensions `c(ns, ns)`} + +\item{sdim}{the smoothing kernel radius in pixel} +} +\value{ +The smoothened field. +} +\description{ +The input field is convolved with a circular kernel with equal +weights. Takes into account missing values. +} +\examples{ +z <- rnorm(64 * 64) +dim(z) <- c(64, 64) +zs <- smooth(z, 8) +sd(zs) +# [1] 0.1334648 +} +\author{ +Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} +} -- GitLab From 903e69a3d18f168d41335fd2ba5394f59be51892 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:17:10 +0200 Subject: [PATCH 150/184] noRd for internal functions --- R/CST_RFTemp.R | 32 +++++++++--------- man/dot-downscalet.Rd | 79 ------------------------------------------- man/dot-interp2d.Rd | 44 ------------------------ man/dot-smooth.Rd | 30 ---------------- 4 files changed, 16 insertions(+), 169 deletions(-) delete mode 100644 man/dot-downscalet.Rd delete mode 100644 man/dot-interp2d.Rd delete mode 100644 man/dot-smooth.Rd diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index a974b65f..a8e43c74 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -238,14 +238,14 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' @param verbose logical if to print diagnostic output #' @return A downscaled temperature matrix #' @examples -#' lon=5:20 -#' lat=35:40 -#' t=runif(16*6); dim(t)=c(16,6) -#' lono=seq(5,20,0.1) -#' lato=seq(35,40,0.1) -#' o=runif(151*51)*2000; dim(o)=c(151,51) -#' td=.downscalet(t,lon, lat,o,lono,lato,c(8,12),c(36,38)) - +#' lon = 5:20 +#' lat = 35:40 +#' t = runif(16 * 6); dim(t) = c(16, 6) +#' lono = seq(5, 20, 0.1) +#' lato = seq(35, 40, 0.1) +#' o = runif(151 * 51) * 2000; dim(o) = c(151, 51) +#' td = .downscalet(t, lon, lat, o, lono, lato, c(8, 12), c(36, 38)) +#' @noRd .downscalet <- function(t, lon, lat, oro, lono, lato, xlim = NULL, ylim = NULL, radius = 0, lapse = 6.5, nolapse = FALSE, @@ -417,13 +417,13 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' ("nearest" or "bilinear" (default)) #' @return The interpolated field. #' @examples -#' lon=5:11 -#' lat=35:40 -#' z=runif(7*6*2); dim(z)=c(7,6,2) -#' lonp=seq(5,10,0.2) -#' latp=seq(35,40,0.2) -#' zo <- .interp2d(z, lon, lat, lonp, latp, method="nearest") - +#' lon = 5:11 +#' lat = 35:40 +#' z = runif(7 * 6 * 2); dim(z) = c(7, 6, 2) +#' lonp = seq(5, 10, 0.2) +#' latp = seq(35, 40, 0.2) +#' zo <- .interp2d(z, lon, lat, lonp, latp, method = "nearest") +#' @noRd .interp2d <- function(z, lon, lat, lonp, latp, method="bilinear") { nx <- length(lonp) @@ -512,7 +512,7 @@ RFTemp <- function(data, lon, lat, oro, lonoro, latoro, #' zs <- smooth(z, 8) #' sd(zs) #' # [1] 0.1334648 - +#' @noRd .smooth <- function(z, sdim) { nsx <- dim(z)[1] nsy <- dim(z)[2] diff --git a/man/dot-downscalet.Rd b/man/dot-downscalet.Rd deleted file mode 100644 index 9b28e05e..00000000 --- a/man/dot-downscalet.Rd +++ /dev/null @@ -1,79 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/CST_RFTemp.R -\name{.downscalet} -\alias{.downscalet} -\title{Lapse-rate temperature correction downscaling} -\usage{ -.downscalet( - t, - lon, - lat, - oro, - lono, - lato, - xlim = NULL, - ylim = NULL, - radius = 0, - lapse = 6.5, - nolapse = FALSE, - verbose = FALSE, - compute_delta = FALSE, - method = "bilinear", - delta = NULL -) -} -\arguments{ -\item{t}{matrix of input temperature data} - -\item{lon}{vector of input longitudes} - -\item{lat}{vector of input latitudes} - -\item{oro}{matrix of topographical elevations (in meters) -The destination downscaling area must be contained in the orography field.} - -\item{lono}{vector of orography longitudes} - -\item{lato}{vector of orography latitudes} - -\item{xlim}{vector of longitude bounds; the full input field is downscaled if `xlim` and `ylim` are not specified.} - -\item{ylim}{vector of latitude bounds} - -\item{radius}{smoothing radius expressed in longitude units -(default is half a large-scale pixel)} - -\item{lapse}{environmental lapse rate (in K/Km)} - -\item{nolapse}{logical, if true `oro` is interpreted as a fine-scale -climatology and used directly for bias correction} - -\item{verbose}{logical if to print diagnostic output} - -\item{compute_delta}{logical if true returns only a delta to be used for -out-of-sample forecasts.} - -\item{delta}{matrix containing a delta to be applied to the input data. -The grid of this matrix is supposed to be same as -that of the required output field} -} -\value{ -A downscaled temperature matrix -} -\description{ -Downscales a temperature field using a lapse-rate -correction based on a reference orography. Time-averaging is done on all -dimensions after the first two. -} -\examples{ -lon=5:20 -lat=35:40 -t=runif(16*6); dim(t)=c(16,6) -lono=seq(5,20,0.1) -lato=seq(35,40,0.1) -o=runif(151*51)*2000; dim(o)=c(151,51) -td=.downscalet(t,lon, lat,o,lono,lato,c(8,12),c(36,38)) -} -\author{ -Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} -} diff --git a/man/dot-interp2d.Rd b/man/dot-interp2d.Rd deleted file mode 100644 index b03c6eee..00000000 --- a/man/dot-interp2d.Rd +++ /dev/null @@ -1,44 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/CST_RFTemp.R -\name{.interp2d} -\alias{.interp2d} -\title{Nearest neighbour interpolation} -\usage{ -.interp2d(z, lon, lat, lonp, latp, method = "bilinear") -} -\arguments{ -\item{z}{matrix with the input field to interpolate (assumed to -include also a third time dimension)} - -\item{lon}{vector of input longitudes} - -\item{lat}{vector of input latitudes} - -\item{lonp}{vector of output longitudes} - -\item{latp}{vector of output latitudes} - -\item{method}{string indicating the interpolation method -("nearest" or "bilinear" (default))} -} -\value{ -The interpolated field. -} -\description{ -The input field is interpolated onto the output -coordinate grid using nearest neighbours or bilinear interpolation. -The input lon grid must be monotone increasing. -The input lat grid can be irregularly spaced (e.g. a Gaussian grid) -The output grid can be irregularly spaced in lon and/or lat. -} -\examples{ -lon=5:11 -lat=35:40 -z=runif(7*6*2); dim(z)=c(7,6,2) -lonp=seq(5,10,0.2) -latp=seq(35,40,0.2) -zo <- .interp2d(z, lon, lat, lonp, latp, method="nearest") -} -\author{ -Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} -} diff --git a/man/dot-smooth.Rd b/man/dot-smooth.Rd deleted file mode 100644 index a992c541..00000000 --- a/man/dot-smooth.Rd +++ /dev/null @@ -1,30 +0,0 @@ -% Generated by roxygen2: do not edit by hand -% Please edit documentation in R/CST_RFTemp.R -\name{.smooth} -\alias{.smooth} -\title{Smoothening using convolution with a circular kernel} -\usage{ -.smooth(z, sdim) -} -\arguments{ -\item{z}{matrix with the input field to smoothen, with dimensions `c(ns, ns)`} - -\item{sdim}{the smoothing kernel radius in pixel} -} -\value{ -The smoothened field. -} -\description{ -The input field is convolved with a circular kernel with equal -weights. Takes into account missing values. -} -\examples{ -z <- rnorm(64 * 64) -dim(z) <- c(64, 64) -zs <- smooth(z, 8) -sd(zs) -# [1] 0.1334648 -} -\author{ -Jost von Hardenberg, \email{j.vonhardenberg@isac.cnr.it} -} -- GitLab From 00c52890db03e81e265feb9afed403e4af0b3b12 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:20:51 +0200 Subject: [PATCH 151/184] time_dim parameter defined in RFTemp --- R/CST_RFTemp.R | 6 ++++-- man/CST_RFTemp.Rd | 2 ++ man/RFTemp.Rd | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index a8e43c74..e710a4d9 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -29,6 +29,7 @@ #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension +#' @param time_dim a vector of character string indicating the name of temporal dimension. By default, it is set to NULL and it considers "ftime", "sdate" and "time" as temporal dimensions. #' @param verbose logical if to print diagnostic output #' @param nolapse logical, if true `oro` is interpreted as a fine-scale #' climatology and used directly for bias correction @@ -64,9 +65,9 @@ #' attr(oro, 'class') <- 's2dv_cube' #' res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) -CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, +CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, - nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, + nolapse = FALSE, verbose = FALSE, compute_delta = FALSE, method = "bilinear", delta = NULL) { if (!inherits(data, "s2dv_cube")) { @@ -127,6 +128,7 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse=6.5, #' @param lapse float with environmental lapse rate #' @param lon_dim string with name of longitude dimension #' @param lat_dim string with name of latitude dimension +#' @param time_dim a vector of character string indicating the name of temporal dimension. By default, it is set to NULL and it considers "ftime", "sdate" and "time" as temporal dimensions. #' @param verbose logical if to print diagnostic output #' @param nolapse logical, if true `oro` is interpreted as a #' fine-scale climatology and used directly for bias correction diff --git a/man/CST_RFTemp.Rd b/man/CST_RFTemp.Rd index a7beced6..d3b0c6a2 100644 --- a/man/CST_RFTemp.Rd +++ b/man/CST_RFTemp.Rd @@ -44,6 +44,8 @@ the full input field is downscaled if `xlim` and `ylim` are not specified.} \item{lat_dim}{string with name of latitude dimension} +\item{time_dim}{a vector of character string indicating the name of temporal dimension. By default, it is set to NULL and it considers "ftime", "sdate" and "time" as temporal dimensions.} + \item{nolapse}{logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction} diff --git a/man/RFTemp.Rd b/man/RFTemp.Rd index 3945f571..d09d351a 100644 --- a/man/RFTemp.Rd +++ b/man/RFTemp.Rd @@ -50,6 +50,8 @@ the full input field is downscaled if `xlim` and `ylim` are not specified.} \item{lat_dim}{string with name of latitude dimension} +\item{time_dim}{a vector of character string indicating the name of temporal dimension. By default, it is set to NULL and it considers "ftime", "sdate" and "time" as temporal dimensions.} + \item{nolapse}{logical, if true `oro` is interpreted as a fine-scale climatology and used directly for bias correction} -- GitLab From 194e6febbcb8653edfbc84c4c4c0fafd10fa0ffa Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:25:54 +0200 Subject: [PATCH 152/184] remove link tag for hyperlinks --- R/CST_RFTemp.R | 8 ++++---- man/CST_RFTemp.Rd | 4 ++-- man/RFTemp.Rd | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index e710a4d9..14c41642 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -10,10 +10,10 @@ #' The output grid can be irregularly spaced in lon and/or lat. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 -#' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] +#' [https://www.medscope-project.eu/the-project/deliverables-reports/]([https://www.medscope-project.eu/the-project/deliverables-reports/) #' and in H2020 ECOPOTENTIAL Deliverable No. 8.1: #' High resolution (1-10 km) climate, land use and ocean change scenarios -#' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +#' [https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) #' @param data An object of the class 's2dv_cube' as returned by `CST_Load`, #' containing the temperature fields to downscale. #' The data object is expected to have an element named \code{$data} @@ -109,10 +109,10 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse = 6.5, #' The output grid can be irregularly spaced in lon and/or lat. #' @references Method described in ERA4CS MEDSCOPE milestone M3.2: #' High-quality climate prediction data available to WP4 -#' \link[https://www.medscope-project.eu/the-project/deliverables-reports/] +#' [https://www.medscope-project.eu/the-project/deliverables-reports/]([https://www.medscope-project.eu/the-project/deliverables-reports/) #' and in H2020 ECOPOTENTIAL Deliverable No. 8.1: #' High resolution (1-10 km) climate, land use and ocean change scenarios -#' \link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +#' [https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) #' @param data Temperature array to downscale. #' The input array is expected to have at least two dimensions named #' "lon" and "lat" by default diff --git a/man/CST_RFTemp.Rd b/man/CST_RFTemp.Rd index d3b0c6a2..8ab5b6f3 100644 --- a/man/CST_RFTemp.Rd +++ b/man/CST_RFTemp.Rd @@ -97,10 +97,10 @@ res <- CST_RFTemp(exp, oro, xlim=c(4,8), ylim=c(43, 46), lapse=6.5) \references{ Method described in ERA4CS MEDSCOPE milestone M3.2: High-quality climate prediction data available to WP4 -\link[https://www.medscope-project.eu/the-project/deliverables-reports/] +[https://www.medscope-project.eu/the-project/deliverables-reports/]([https://www.medscope-project.eu/the-project/deliverables-reports/) and in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios -\link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) } \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} diff --git a/man/RFTemp.Rd b/man/RFTemp.Rd index d09d351a..628faf2d 100644 --- a/man/RFTemp.Rd +++ b/man/RFTemp.Rd @@ -100,10 +100,10 @@ res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4, 8), ylim=c(43, 46), \references{ Method described in ERA4CS MEDSCOPE milestone M3.2: High-quality climate prediction data available to WP4 -\link[https://www.medscope-project.eu/the-project/deliverables-reports/] +[https://www.medscope-project.eu/the-project/deliverables-reports/]([https://www.medscope-project.eu/the-project/deliverables-reports/) and in H2020 ECOPOTENTIAL Deliverable No. 8.1: High resolution (1-10 km) climate, land use and ocean change scenarios -\link[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf] +[https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf](https://www.ecopotential-project.eu/images/ecopotential/documents/D8.1.pdf) } \author{ Jost von Hardenberg - ISAC-CNR, \email{j.vonhardenberg@isac.cnr.it} -- GitLab From 1373e0bdc229140637e32a4f7baeaec6c767d88d Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:39:42 +0200 Subject: [PATCH 153/184] definition of parameter latoro and lonoro --- R/CST_RFTemp.R | 12 +++++++----- man/RFTemp.Rd | 12 ++++++------ 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 14c41642..9d8fd10b 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -120,6 +120,8 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse = 6.5, #' \code{lat_dim} parameters) #' @param lon Vector or array of longitudes. #' @param lat Vector or array of latitudes. +#' @param lon Vector or array of longitudes corresponding to the fine orography. +#' @param lat Vector or array of latitudes corresponding to the fine orography. #' @param oro Array containing fine-scale orography (in m) #' The destination downscaling area must be contained in the orography field. #' @param xlim vector with longitude bounds for downscaling; @@ -150,21 +152,21 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse = 6.5, #' @import multiApply #' @examples #' # Generate simple synthetic data and downscale by factor 4 -#' t <- rnorm(7 * 6 * 4 * 3)*10 + 273.15 + 10 +#' t <- rnorm(7 * 6 * 4 * 3) * 10 + 273.15 + 10 #' dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 7) #' lon <- seq(3, 9, 1) #' lat <- seq(42, 47, 1) -#' o <- runif(29*29)*3000 +#' o <- runif(29 * 29) * 3000 #' dim(o) <- c(lat = 29, lon = 29) #' lono <- seq(3, 10, 0.25) #' lato <- seq(41, 48, 0.25) -#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4, 8), ylim=c(43, 46), -#' lapse=6.5) +#' res <- RFTemp(t, lon, lat, o, lono, lato, xlim = c(4, 8), ylim = c(43, 46), +#' lapse = 6.5) RFTemp <- function(data, lon, lat, oro, lonoro, latoro, xlim = NULL, ylim = NULL, lapse = 6.5, lon_dim = "lon", lat_dim = "lat", time_dim = NULL, - nolapse = FALSE, verbose=FALSE, compute_delta = FALSE, + nolapse = FALSE, verbose = FALSE, compute_delta = FALSE, method = "bilinear", delta = NULL) { # Check/detect time_dim diff --git a/man/RFTemp.Rd b/man/RFTemp.Rd index 628faf2d..f9fd5270 100644 --- a/man/RFTemp.Rd +++ b/man/RFTemp.Rd @@ -32,9 +32,9 @@ The input array is expected to have at least two dimensions named (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters)} -\item{lon}{Vector or array of longitudes.} +\item{lon}{Vector or array of longitudes corresponding to the fine orography.} -\item{lat}{Vector or array of latitudes.} +\item{lat}{Vector or array of latitudes corresponding to the fine orography.} \item{oro}{Array containing fine-scale orography (in m) The destination downscaling area must be contained in the orography field.} @@ -86,16 +86,16 @@ The output grid can be irregularly spaced in lon and/or lat. } \examples{ # Generate simple synthetic data and downscale by factor 4 -t <- rnorm(7 * 6 * 4 * 3)*10 + 273.15 + 10 +t <- rnorm(7 * 6 * 4 * 3) * 10 + 273.15 + 10 dim(t) <- c(sdate = 3, ftime = 4, lat = 6, lon = 7) lon <- seq(3, 9, 1) lat <- seq(42, 47, 1) -o <- runif(29*29)*3000 +o <- runif(29 * 29) * 3000 dim(o) <- c(lat = 29, lon = 29) lono <- seq(3, 10, 0.25) lato <- seq(41, 48, 0.25) -res <- RFTemp(t, lon, lat, o, lono, lato, xlim=c(4, 8), ylim=c(43, 46), - lapse=6.5) +res <- RFTemp(t, lon, lat, o, lono, lato, xlim = c(4, 8), ylim = c(43, 46), + lapse = 6.5) } \references{ Method described in ERA4CS MEDSCOPE milestone M3.2: -- GitLab From db54dfc54a3bc77e59440621bbbe885da7adef86 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:52:24 +0200 Subject: [PATCH 154/184] fixing latoro lonoro definition --- R/CST_RFTemp.R | 4 ++-- man/RFTemp.Rd | 8 ++++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/R/CST_RFTemp.R b/R/CST_RFTemp.R index 9d8fd10b..cebac85a 100644 --- a/R/CST_RFTemp.R +++ b/R/CST_RFTemp.R @@ -120,8 +120,8 @@ CST_RFTemp <- function(data, oro, xlim = NULL, ylim = NULL, lapse = 6.5, #' \code{lat_dim} parameters) #' @param lon Vector or array of longitudes. #' @param lat Vector or array of latitudes. -#' @param lon Vector or array of longitudes corresponding to the fine orography. -#' @param lat Vector or array of latitudes corresponding to the fine orography. +#' @param lonoro Vector or array of longitudes corresponding to the fine orography. +#' @param latoro Vector or array of latitudes corresponding to the fine orography. #' @param oro Array containing fine-scale orography (in m) #' The destination downscaling area must be contained in the orography field. #' @param xlim vector with longitude bounds for downscaling; diff --git a/man/RFTemp.Rd b/man/RFTemp.Rd index f9fd5270..106ae6e2 100644 --- a/man/RFTemp.Rd +++ b/man/RFTemp.Rd @@ -32,13 +32,17 @@ The input array is expected to have at least two dimensions named (these default names can be changed with the \code{lon_dim} and \code{lat_dim} parameters)} -\item{lon}{Vector or array of longitudes corresponding to the fine orography.} +\item{lon}{Vector or array of longitudes.} -\item{lat}{Vector or array of latitudes corresponding to the fine orography.} +\item{lat}{Vector or array of latitudes.} \item{oro}{Array containing fine-scale orography (in m) The destination downscaling area must be contained in the orography field.} +\item{lonoro}{Vector or array of longitudes corresponding to the fine orography.} + +\item{latoro}{Vector or array of latitudes corresponding to the fine orography.} + \item{xlim}{vector with longitude bounds for downscaling; the full input field is downscaled if `xlim` and `ylim` are not specified.} -- GitLab From d21512ca91d5e97ba27ac5d9577e3813b49f338c Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:54:08 +0200 Subject: [PATCH 155/184] RF_Temp listed in NEWS --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 208fec39..19caa068 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,6 +9,7 @@ + PlotTriangles4Categories new plotting function to convert any 3-d numerical array to a grid of coloured triangles. + CST_WeatherRegimes/WeatherRegimes and CST_RegimeAssign/RegimeAssign + PlotPDFsOLE plots two probability density gaussian functions and the optimal linear estimation + + CST_RFTemp/RF_Temp functions available for downscaling temperature - Fixes + CST_Anomaly handles exp, obs or both -- GitLab From 25aad46ed3a94e2f8d8ad8a2f2058bca31f52c9f Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 18:55:33 +0200 Subject: [PATCH 156/184] fix the link to the package CRAN site --- vignettes/ENSclustering_vignette.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/ENSclustering_vignette.Rmd b/vignettes/ENSclustering_vignette.Rmd index 52707d73..af8d5c6f 100644 --- a/vignettes/ENSclustering_vignette.Rmd +++ b/vignettes/ENSclustering_vignette.Rmd @@ -14,7 +14,7 @@ Ensemble clustering ### Introduction Ensemble forecasts provide insight on average weather conditions from sub-seasonal to seasonal timescales. With large ensembles, it is useful to group members according to similar characteristics and to select the most representative member of each cluster. This allows to characterize forecast scenarios in a multi-model (or single model) ensemble prediction. In particular, at the regional level, this function can be used to identify the subset of ensemble members that best represent the full range of possible outcomes that may be fed in turn to downscaling applications. The choice of the ensemble members can be done by selecting different options within the function in order to meet the requirements of specific climate information products that can be tailored to different regions and user needs. -For a detailed description of the tool please refer to the CSTools guide : +For a detailed description of the tool please refer to the CSTools guide : ### Steps of the vignette -- GitLab From 0175425d907ed493f99f72fb6d7be851c8ec185b Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 19:24:44 +0200 Subject: [PATCH 157/184] tests fixed in wrong branch --- tests/testthat/test-CST_WeatherRegimes.R | 42 ++++++++++++------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R index 33e75e24..3f0c1dd3 100644 --- a/tests/testthat/test-CST_WeatherRegimes.R +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -13,8 +13,8 @@ test_that("Sanity checks", { paste0("Parameter 'data' must be an array with named dimensions.")) data1 <- 1 : 20 - dim(data1) <- c(lat = 5, lon=4) - data1 <- list(data = data1 , lat=1:5) + dim(data1) <- c(lat = 5, lon = 4) + data1 <- list(data = data1 , lat = 1:5) class(data1) <- 's2dv_cube' expect_error( CST_WeatherRegimes(data = data1), @@ -29,38 +29,38 @@ test_that("Sanity checks", { paste0("Parameter 'lat' must be specified.")) data1 <- 1 : 400 - dim(data1) <- c(time = 20, lat = 5, lon=4) - data1 <- list(data = data1, lat=1:5) + dim(data1) <- c(time = 20, lat = 5, lon = 4) + data1 <- list(data = data1, lat = 1:5) class(data1) <- 's2dv_cube' expect_error( CST_WeatherRegimes(data = data1), paste0("Parameter 'ncenters' must be specified.")) expect_error( - CST_WeatherRegimes(data = data1, ncenters=3), + CST_WeatherRegimes(data = data1, ncenters = 3), paste0("Parameter 'lon' must be specified.")) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS= FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 - dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) - data1 <- list(data = data1, lat=1:5) + dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon = 4) + data1 <- list(data = data1, lat = 1:5) class(data1) <- 's2dv_cube' nclusters <- 3 expect_equal( dim(CST_WeatherRegimes(data = data1 , ncenters = nclusters, - EOFS = FALSE)$statistics$frequency),c(2, nclusters)) + EOFs = FALSE)$statistics$frequency), c(2, nclusters)) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFS= FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 - dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon=4) - data1 <- list(data = data1, lat=1:5 ,lon=1:4) + dim(data1) <- c(sdate = 2, ftime = 10, lat = 5, lon = 4) + data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_equal( @@ -68,32 +68,32 @@ test_that("Sanity checks", { c('pvalue', 'cluster', 'frequency', 'persistence')) expect_equal( - names(CST_WeatherRegimes(data = data1 , ncenters = 4, method='ward.D')$statistics), + names(CST_WeatherRegimes(data = data1 , ncenters = 4, method = 'ward.D')$statistics), c('pvalue', 'cluster')) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters=4)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters = 4)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 - dim(data1) <- c(time = 20, lat = 5, lon=4) + dim(data1) <- c(time = 20, lat = 5, lon = 4) data1[4,,] <- NA - data1 <- list(data = data1, lat=1:5 ,lon=1:4) + data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_error( - CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE), + CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE), paste0("Parameter 'data' contains NAs in the 'time' dimensions.")) data1 <- 1 : 400 - dim(data1) <- c(time = 20, lat = 5, lon=4) + dim(data1) <- c(time = 20, lat = 5, lon = 4) data1[,2,3] <- NA - data1 <- list(data = data1, lat=1:5 ,lon=1:4) + data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_equal( - any(is.na(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), + any(is.na(CST_WeatherRegimes(data = data1, ncenters =3, EOFs = FALSE)$data)), TRUE) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters=3, EOFS = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters =3, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) }) -- GitLab From 2b1ef57a6d505d407b26027d9d053755cbd363f5 Mon Sep 17 00:00:00 2001 From: nperez Date: Mon, 29 Jun 2020 19:40:45 +0200 Subject: [PATCH 158/184] fixed tests --- tests/testthat/test-CST_WeatherRegimes.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R index 3f0c1dd3..e2bc6feb 100644 --- a/tests/testthat/test-CST_WeatherRegimes.R +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -41,7 +41,7 @@ test_that("Sanity checks", { paste0("Parameter 'lon' must be specified.")) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFS = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 @@ -53,9 +53,9 @@ test_that("Sanity checks", { expect_equal( dim(CST_WeatherRegimes(data = data1 , ncenters = nclusters, - EOFs = FALSE)$statistics$frequency), c(2, nclusters)) + EOFS = FALSE)$statistics$frequency), c(2, nclusters)) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFs = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFS = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 @@ -81,7 +81,7 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_error( - CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE), + CST_WeatherRegimes(data = data1, ncenters = 3, EOFS = FALSE), paste0("Parameter 'data' contains NAs in the 'time' dimensions.")) data1 <- 1 : 400 @@ -90,10 +90,10 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_equal( - any(is.na(CST_WeatherRegimes(data = data1, ncenters =3, EOFs = FALSE)$data)), + any(is.na(CST_WeatherRegimes(data = data1, ncenters =3, EOFS = FALSE)$data)), TRUE) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters =3, EOFs = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters =3, EOFS = FALSE)$data)), c('lat', 'lon', 'cluster')) }) -- GitLab From 97a50a5dfd54b0608f88ccbb82f936542ebbef60 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 11:47:35 +0200 Subject: [PATCH 159/184] Fixes reported problems --- R/CST_SaveExp.R | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 3c0050a0..842b8fd0 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -40,17 +40,19 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { stop("Parameter 'data' must be of the class 's2dv_cube', ", "as output by CSTools::CST_Load.") } - sdates <- lapply(1:length(data$Datasets), function(x) {data$Datasets[[x]]$InitializationDates[[1]]})[[1]] + sdates <- lapply(1:length(data$Datasets), function(x) { + data$Datasets[[x]]$InitializationDates[[1]]})[[1]] if (!is.character(attributes(data$Variable)$units)) { units <- attributes(data$Variable)$variable$units } else { units <- attributes(data$Variable)$units } - cdo_grid_name = attr(lon, 'cdo_grid_name') - projection = attr(lon, 'projection') + cdo_grid_name = attr(data$lon, 'cdo_grid_name') + projection = attr(data$lon, 'projection') var_name <- data$Variable$varName time_values <- data$Dates$start - dim(time_values) <- c(time = length(time_values)/length(sdates), sdate = length(sdates)) + dim(time_values) <- c(time = length(time_values) / length(sdates), + sdate = length(sdates)) SaveExp(data = data$data, lon = data$lon, lat = data$lat, Dataset = names(data$Datasets), var_name = var_name, units = units, cdo_grid_name = cdo_grid_name, projection = projection, @@ -122,12 +124,11 @@ SaveExp <- function(data, lon, lat, Dataset, var_name, units, startdates, Dates, dimname[which(dimname == "lat")] <- "latitude" names(dim(data))[which(dimname == "lat")] <- "latitude" } -names(dim(data)) <- dimname - + names(dim(data)) <- dimname if (is.null(dimname)) { stop("Element 'data' in parameter 'data' must have named dimensions.") } -sdate_pos <- which(dimname == "sdate") + sdate_pos <- which(dimname == "sdate") if (length(sdate_pos) == 0) { stop("Element 'data' in parameter 'data' hasn't 'sdate' dimension.") @@ -136,8 +137,8 @@ sdate_pos <- which(dimname == "sdate") " dimension.") } -dataset_pos <- which(dimname == "dataset" | dimname == "dat") -dims <- dim(data) + dataset_pos <- which(dimname == "dataset" | dimname == "dat") + dims <- dim(data) if (length(dataset_pos) == 0) { warning("Element 'data' in parameter 'data' hasn't 'dataset' dimension. ", "All data is stored in the same 'dataset' folder.") @@ -149,9 +150,9 @@ dims <- dim(data) stop("Element 'data' in parameter 'data' has more than one 'dataset'", " dimension.") } -n_datasets <- dim(data)[dataset_pos] # number of folder by dataset -# dataset names: -datasets <- Dataset + n_datasets <- dim(data)[dataset_pos] # number of folder by dataset + # dataset names: + datasets <- Dataset if (n_datasets > length(datasets)) { warning("Dimension 'dataset' in element 'data' from parameter 'data' ", "is greater than those listed in element 'Datasets' and the ", @@ -163,11 +164,11 @@ datasets <- Dataset " first element will be used.") datasets <- datasets[1 : n_datasets] } -# var names: + # var names: if ('var' %in% dimname) { var_pos <- which(dimname == 'var') if (dims[var_pos] == 1) { - data$data <- adrop(data, drop = var_pos) + data <- adrop(data, drop = var_pos) dimname <- names(dim(data)) } } @@ -180,10 +181,10 @@ datasets <- Dataset "must be a character string.") } -known_dim_names <- c("var", "lat", "latitude", "lon", "longitude", "time", - "ftime", "sdate", "dataset", "dat", "nlevel", "levels") -dims_var <- NULL -list_pos <- 1 + known_dim_names <- c("var", "lat", "latitude", "lon", "longitude", "time", + "ftime", "sdate", "dataset", "dat", "nlevel", "levels") + dims_var <- NULL + list_pos <- 1 if (any(dimname == 'longitude') | any(dimname == 'lon')) { dim_lon <- ncdim_def(name = 'lon', units = 'degrees', @@ -225,7 +226,7 @@ list_pos <- 1 target_dims = list(c('member', 'time', 'latitude', 'longitude'), NULL, 'time'), fun = .saveExp, var_name = var_name, units = units, dims_var = dims_var, cdo_grid_name = cdo_grid_name, projection = projection, - destination = destination) + destination = path) } } -- GitLab From 762e03dbd4eef5939cade0cbc7d4d04785ff1d4d Mon Sep 17 00:00:00 2001 From: ncortesi Date: Tue, 30 Jun 2020 11:51:38 +0200 Subject: [PATCH 160/184] Added figure with regime persistency --- vignettes/WeatherRegimes_vignette.md | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/vignettes/WeatherRegimes_vignette.md b/vignettes/WeatherRegimes_vignette.md index 0db8b43b..0d80a812 100644 --- a/vignettes/WeatherRegimes_vignette.md +++ b/vignettes/WeatherRegimes_vignette.md @@ -96,8 +96,20 @@ PlotLayout(PlotEquiMap, c(1, 2), lon = obs$lon, lat = obs$lat, +### 6- Visualisation of the observed regime persistency -### 6- Weather regimes in the predictions +source("/esarchive/scratch/nperez/git/cstools/R/PlotTriangles4Categories.R") ## to be removed +freq_obs <- WR_obs$statistics$persistence +freq_obs[is.na(freq_obs)] <- 0 +dim(freq_obs) <- c(dimx = 20, dimcat = 4, dimy = 1) + +PlotTriangles4Categories(freq_obs, toptitle = 'Persistence', + xtitle = 'Start Dates', ytitle = '', ylab = FALSE, + xlabels = substr(sdates, 1, 4), cex_leg = 0.8, + lab_legend = c('AR', 'NAO-', 'BL', 'NAO+'), figure.width = 1.5, + fileout = "./Figures/Obs_Persistence.png") + +### 7- Weather regimes in the predictions Predicted anomalies for each day, month, member and lead time are matched with the observed clusters (obtained in step 4). The assignment of the anomalies to a pre-defined set of clusters guarantees that the predicted weather regimes have very similar spatial structures to the observed regimes, which is an essential requirement for the verification of weather regimes. This is an example of how to produce a set of weather regimes based on the predictions that can be verified with the observational dataset, but this approach can be also used in an operational context for which the probability of occurence of each cluster could be estimated. @@ -113,8 +125,7 @@ WR_exp <- CST_RegimesAssign(data = ano_exp, ref_maps = WR_obs, method = 'distanc `CST_RegimesAssign()` provides a object of 's2dv_cube' class which lists several elements. The composites are stored in the $data element which in the case of `memb = TRUE` corresponds to the mean composites for all member. `$pvalue`, `$cluster` and `$frequency` are stored in element `$statistics. This elements contain similar information to that provided by the `WeatherRegime()` function. Further details about the output can be found in the package documentation. - -### 7- Visualisation of the predicted weather regimes +### 8- Visualisation of the predicted weather regimes The outputs of `RegimesAssign()` have been represented to be compared with those obtained for the observational classification (step 5). -- GitLab From 5bee9776a364f62e854476a1713bc66085e43b57 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 12:50:53 +0200 Subject: [PATCH 161/184] Fix in dates --- R/CST_SaveExp.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 842b8fd0..83bbaf53 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -221,9 +221,10 @@ SaveExp <- function(data, lon, lat, Dataset, var_name, units, startdates, Dates, dir.create(path, recursive = TRUE) startdate <- gsub("-", "", startdates) - + dim(startdate) <- c(sdate = length(startdate)) Apply(list(data, startdate, Dates), - target_dims = list(c('member', 'time', 'latitude', 'longitude'), NULL, 'time'), + target_dims = list(c('member', 'time', 'latitude', 'longitude'), + NULL, 'time'), fun = .saveExp, var_name = var_name, units = units, dims_var = dims_var, cdo_grid_name = cdo_grid_name, projection = projection, destination = path) -- GitLab From b3a7387bca06e3b4ac312716e13b96b8679fdce5 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 13:20:16 +0200 Subject: [PATCH 162/184] documentation automatically generated with devtools --- NAMESPACE | 2 ++ man/SaveExp.Rd | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 man/SaveExp.Rd diff --git a/NAMESPACE b/NAMESPACE index 342847f3..ba2dc402 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -37,6 +37,7 @@ export(RFSlope) export(RFTemp) export(RainFARM) export(RegimesAssign) +export(SaveExp) export(SplitDim) export(WeatherRegime) export(as.s2dv_cube) @@ -47,6 +48,7 @@ import(multiApply) import(ncdf4) import(qmap) import(rainfarmr) +import(s2dv) import(s2dverification) import(stats) importFrom(ClimProjDiags,SelBox) diff --git a/man/SaveExp.Rd b/man/SaveExp.Rd new file mode 100644 index 00000000..f2999518 --- /dev/null +++ b/man/SaveExp.Rd @@ -0,0 +1,69 @@ +% Generated by roxygen2: do not edit by hand +% Please edit documentation in R/CST_SaveExp.R +\name{SaveExp} +\alias{SaveExp} +\title{Save an experiment in a format compatible with CST_Load} +\usage{ +SaveExp( + data, + lon, + lat, + Dataset, + var_name, + units, + startdates, + Dates, + cdo_grid_name, + projection, + destination +) +} +\arguments{ +\item{data}{an multi-dimensional array with named dimensions (longitude, latitude, time, member, sdate)} + +\item{Dataset}{a vector of character string indicating the names of the datasets} + +\item{var_name}{a character string indicating the name of the variable to be saved} + +\item{units}{a character string indicating the units of the variable} + +\item{startdates}{a vector of dates indicating the initialization date of each simulations} + +\item{Dates}{a matrix of dates with two dimension 'time' and 'sdate'.} + +\item{cdo_grid_name}{a character string indicating the name of the grid e.g.: 'r360x181'} + +\item{projection}{a character string indicating the projection name} + +\item{destination}{a character string indicating the path where to store the NetCDF files} + +\item{vector}{of latitud corresponding to the latitudinal dimension in data} +} +\value{ +the function creates as many files as sdates per dataset. Each file could contain multiple members +The path will be created with the name of the variable and each Datasets. +} +\description{ +This function is created for compatibility with CST_Load/Load for saving post-processed datasets such as those calibrated of downscaled with CSTools functions +} +\examples{ +data <- lonlat_data$exp$data +lon <- lonlat_data$exp$lon +lat <- lonlat_data$exp$lat +Dataset <- 'XXX' +var_name <- 'tas' +units <- 'k' +startdates <- lapply(1:length(lonlat_data$exp$Datasets), + function(x) { + lonlat_data$exp$Datasets[[x]]$InitializationDates[[1]]})[[1]] +Dates <- lonlat_data$exp$Dates$start +dim(Dates) <- c(time = length(Dates)/length(startdates), sdate = length(startdates)) +cdo_grid_name = attr(lonlat_data$exp$lon, 'cdo_grid_name') +projection = attr(lonlat_data$exp$lon, 'projection') +destination = '/esarchive/scratch/nperez/git/Flor/cstools/' +SaveExp(data, lon, lat, Dataset, var_name, units, startdates, Dates, + cdo_grid_name, projection, destination) +} +\author{ +Perez-Zanon Nuria, \email{nuria.perez@bsc.es} +} -- GitLab From 527da14a2e6edcc91ecdd17c41d8c96f6508996a Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 13:21:20 +0200 Subject: [PATCH 163/184] fix listed in NEWs --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 19caa068..1a9069e5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -20,6 +20,7 @@ + DESCRIPTION specifies the minimum multiApply version required + EnsClustering has a fixed 'closest_member' output + PlotCombinedMap handles masks correctly + + CST_SaveExp uses multiApply and save time dimension correctly ### CSTools 3.0.0 **Submission date to CRAN: 10-02-2020** -- GitLab From 281befdd6f965a5ecc84cb11129bf288915bd64c Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 13:28:47 +0200 Subject: [PATCH 164/184] adding s2dv dependency to DESCRIPTION --- DESCRIPTION | 1 + 1 file changed, 1 insertion(+) diff --git a/DESCRIPTION b/DESCRIPTION index 0492186b..09b9cf06 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -47,6 +47,7 @@ Depends: maps Imports: s2dverification, + s2dv, rainfarmr, multiApply (>= 2.1.1), qmap, -- GitLab From b8eff7b1ceadcd82ab67c210bb3000906327d657 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 13:48:17 +0200 Subject: [PATCH 165/184] dontrun examples using local paths --- R/CST_SaveExp.R | 4 +++- man/SaveExp.Rd | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 83bbaf53..6335c67b 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -84,6 +84,7 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { #'@import multiApply #' #'@examples +#'\dontrun{ #'data <- lonlat_data$exp$data #'lon <- lonlat_data$exp$lon #'lat <- lonlat_data$exp$lat @@ -97,9 +98,10 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { #'dim(Dates) <- c(time = length(Dates)/length(startdates), sdate = length(startdates)) #'cdo_grid_name = attr(lonlat_data$exp$lon, 'cdo_grid_name') #'projection = attr(lonlat_data$exp$lon, 'projection') -#'destination = '/esarchive/scratch/nperez/git/Flor/cstools/' +#'destination = './path/' #'SaveExp(data, lon, lat, Dataset, var_name, units, startdates, Dates, #' cdo_grid_name, projection, destination) +#'} #'@export SaveExp <- function(data, lon, lat, Dataset, var_name, units, startdates, Dates, cdo_grid_name, projection, destination) { diff --git a/man/SaveExp.Rd b/man/SaveExp.Rd index f2999518..626a64be 100644 --- a/man/SaveExp.Rd +++ b/man/SaveExp.Rd @@ -47,6 +47,7 @@ The path will be created with the name of the variable and each Datasets. This function is created for compatibility with CST_Load/Load for saving post-processed datasets such as those calibrated of downscaled with CSTools functions } \examples{ +\dontrun{ data <- lonlat_data$exp$data lon <- lonlat_data$exp$lon lat <- lonlat_data$exp$lat @@ -60,10 +61,11 @@ Dates <- lonlat_data$exp$Dates$start dim(Dates) <- c(time = length(Dates)/length(startdates), sdate = length(startdates)) cdo_grid_name = attr(lonlat_data$exp$lon, 'cdo_grid_name') projection = attr(lonlat_data$exp$lon, 'projection') -destination = '/esarchive/scratch/nperez/git/Flor/cstools/' +destination = './path/' SaveExp(data, lon, lat, Dataset, var_name, units, startdates, Dates, cdo_grid_name, projection, destination) } +} \author{ Perez-Zanon Nuria, \email{nuria.perez@bsc.es} } -- GitLab From 09a5027409a0cceeb434ecc27cfbca171d855a7a Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 13:58:24 +0200 Subject: [PATCH 166/184] only request Reorder to be loaded from s2dv --- NAMESPACE | 2 +- R/CST_SaveExp.R | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index ba2dc402..e070ff78 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -48,7 +48,6 @@ import(multiApply) import(ncdf4) import(qmap) import(rainfarmr) -import(s2dv) import(s2dverification) import(stats) importFrom(ClimProjDiags,SelBox) @@ -79,6 +78,7 @@ importFrom(maps,map) importFrom(plyr,.) importFrom(plyr,dlply) importFrom(reshape2,melt) +importFrom(s2dv,Reorder) importFrom(utils,glob2rx) importFrom(utils,head) importFrom(utils,tail) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 6335c67b..0b585669 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -18,7 +18,7 @@ #' #'@importFrom ClimProjDiags Subset #'@import ncdf4 -#'@import s2dv +#'@importFrom s2dv Reorder #'@import multiApply #' #'@examples @@ -80,7 +80,7 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { #' #'@importFrom ClimProjDiags Subset #'@import ncdf4 -#'@import s2dv +#'@importFrom s2dv Reorder #'@import multiApply #' #'@examples -- GitLab From 2a92f077c0b7254a95b49eaab4ae041f20309e18 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 14:07:27 +0200 Subject: [PATCH 167/184] adding name of parameters lon,lat to SaveExp --- R/CST_SaveExp.R | 4 ++-- man/SaveExp.Rd | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index 0b585669..c3e04c2a 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -64,8 +64,8 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { #'@author Perez-Zanon Nuria, \email{nuria.perez@bsc.es} #' #'@param data an multi-dimensional array with named dimensions (longitude, latitude, time, member, sdate) -#'@param vector of logitud corresponding to the longitudinal dimension in data -#'@param vector of latitud corresponding to the latitudinal dimension in data +#'@param lon vector of logitud corresponding to the longitudinal dimension in data +#'@param lat vector of latitud corresponding to the latitudinal dimension in data #'@param Dataset a vector of character string indicating the names of the datasets #'@param var_name a character string indicating the name of the variable to be saved #'@param units a character string indicating the units of the variable diff --git a/man/SaveExp.Rd b/man/SaveExp.Rd index 626a64be..40ace2db 100644 --- a/man/SaveExp.Rd +++ b/man/SaveExp.Rd @@ -21,6 +21,10 @@ SaveExp( \arguments{ \item{data}{an multi-dimensional array with named dimensions (longitude, latitude, time, member, sdate)} +\item{lon}{vector of logitud corresponding to the longitudinal dimension in data} + +\item{lat}{vector of latitud corresponding to the latitudinal dimension in data} + \item{Dataset}{a vector of character string indicating the names of the datasets} \item{var_name}{a character string indicating the name of the variable to be saved} @@ -36,8 +40,6 @@ SaveExp( \item{projection}{a character string indicating the projection name} \item{destination}{a character string indicating the path where to store the NetCDF files} - -\item{vector}{of latitud corresponding to the latitudinal dimension in data} } \value{ the function creates as many files as sdates per dataset. Each file could contain multiple members -- GitLab From 4a0023214e2682f52713af4e94e4ca8307314847 Mon Sep 17 00:00:00 2001 From: ncortesi Date: Tue, 30 Jun 2020 15:57:23 +0200 Subject: [PATCH 168/184] Added first version of persistence figure --- R/Obs_Persistence.png | Bin 0 -> 528023 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 R/Obs_Persistence.png diff --git a/R/Obs_Persistence.png b/R/Obs_Persistence.png new file mode 100644 index 0000000000000000000000000000000000000000..6e4c33058489ed0491441ea7d77179861cbd1ebc GIT binary patch literal 528023 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 z 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 literal 0 HcmV?d00001 -- GitLab From c974624016050a7107b9c0d1297e6f329d77fe23 Mon Sep 17 00:00:00 2001 From: ncortesi Date: Tue, 30 Jun 2020 15:58:24 +0200 Subject: [PATCH 169/184] Added first version of persistence figure --- vignettes/WeatherRegimes_vignette.md | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/vignettes/WeatherRegimes_vignette.md b/vignettes/WeatherRegimes_vignette.md index 0d80a812..dc03bd97 100644 --- a/vignettes/WeatherRegimes_vignette.md +++ b/vignettes/WeatherRegimes_vignette.md @@ -11,6 +11,7 @@ The functions to compute the Weather Regimes are part of CSTools while plotting library(CSTools) library(s2dverification) library(zeallot) +library(RColorBrewer) ## for PlotTriangles4Categories ``` @@ -57,7 +58,7 @@ source("/esarchive/scratch/nperez/git/cstools/R/CST_Anomaly.R") # to be removed c(ano_exp, ano_obs) %<-% CST_Anomaly(exp = exp, obs = obs, filter_span = 1) ``` -The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span = 1`. +The LOESS filter has been applied to the climatology to remove the short-term variability and retain the annual cycle. The parameter `loess_span` should be adapted to the length of the period used to compute the climatology (e.g. season, month, week,...). In this example we are using daily data, so we have selected `loess_span = 1`. ### 4- Weather regimes in observations @@ -69,6 +70,7 @@ from the stats R package. In this example we have made different assumptions: fo ```r source("/esarchive/scratch/nperez/git/cstools/R/CST_WeatherRegimes.R") # to be removed library(multiApply) # to be removed +library(abind) # to be removed WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFS = FALSE, ncenters = 4) ``` @@ -80,7 +82,7 @@ WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFS = FALSE, ncenters = 4) ### 5- Visualisation of the observed weather regimes -To plot the composite maps of each regime and the mean frequencies of each cluster, we have employed the `PlotLayout()` and `PlotEquiMap()` functions available in s2dverifcation. The object `WR_obs$data` is divided by 100 to change from Pa to hPa. As the `WR_obs$statistics$frequency` provides the monthly frequencies the climatological frequencies are obtained as the average across the 20 years of the monthly frequencies. Note that these frequencies could change as a consequence of the randomness inherent to the iterative processes involved in the k-means. +To plot the composite maps of each regime and the mean frequencies of each cluster, we have employed the `PlotLayout()` and `PlotEquiMap()` functions available in s2dverifcation. The object `WR_obs$data` is divided by 100 to change from Pa to hPa. As the `WR_obs$statistics$frequency` provides the monthly frequencies, the climatological frequencies are obtained as the average across the 20 years of the monthly frequencies. Note that these frequencies could slightly change as a consequence of the randomness inherent to the iterative processes involved in the k-means. ```r clim_frequencies <- paste0('freq = ', @@ -96,19 +98,23 @@ PlotLayout(PlotEquiMap, c(1, 2), lon = obs$lon, lat = obs$lat, -### 6- Visualisation of the observed regime persistency +### 6- Visualisation of the observed regime persistence -source("/esarchive/scratch/nperez/git/cstools/R/PlotTriangles4Categories.R") ## to be removed +Persistence measures the average number of days a regime lasts before evolving to a different regime. To plot regime persistence for each start date, we have employed the `PlotTriangles4Categories()` function available in CSTools. + +```r freq_obs <- WR_obs$statistics$persistence freq_obs[is.na(freq_obs)] <- 0 -dim(freq_obs) <- c(dimx = 20, dimcat = 4, dimy = 1) +dim(freq_obs) <- c(dimy = 20, dimcat = 4, dimx = 1) PlotTriangles4Categories(freq_obs, toptitle = 'Persistence', - xtitle = 'Start Dates', ytitle = '', ylab = FALSE, - xlabels = substr(sdates, 1, 4), cex_leg = 0.8, - lab_legend = c('AR', 'NAO-', 'BL', 'NAO+'), figure.width = 1.5, - fileout = "./Figures/Obs_Persistence.png") - + xtitle = 'Start Dates', ytitle = '', xlab = FALSE, + ylabels = substr(sdates, 1, 4), cex_leg = 0.6, + lab_legend = c('AR', 'NAO-', 'BL', 'NAO+'), figure.width = .7) + +``` + + ### 7- Weather regimes in the predictions Predicted anomalies for each day, month, member and lead time are matched with the observed clusters (obtained in step 4). The assignment of the anomalies to a pre-defined set of clusters guarantees that the predicted weather regimes have very similar spatial structures to the observed regimes, which is an essential requirement for the verification of weather regimes. This is an example of how to produce a set of weather regimes based on the predictions that can be verified with the observational dataset, but this approach can be also used in an operational context for which the probability of occurence of each cluster could be estimated. -- GitLab From 0dc038979ed26eef50779ca2979ef3df82713a41 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 18:42:54 +0200 Subject: [PATCH 170/184] Vignette formatting --- {R => vignettes/Figures}/Obs_Persistence.png | Bin ...ignette.md => WeatherRegimes_vignette.Rmd} | 24 +++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) rename {R => vignettes/Figures}/Obs_Persistence.png (100%) rename vignettes/{WeatherRegimes_vignette.md => WeatherRegimes_vignette.Rmd} (93%) diff --git a/R/Obs_Persistence.png b/vignettes/Figures/Obs_Persistence.png similarity index 100% rename from R/Obs_Persistence.png rename to vignettes/Figures/Obs_Persistence.png diff --git a/vignettes/WeatherRegimes_vignette.md b/vignettes/WeatherRegimes_vignette.Rmd similarity index 93% rename from vignettes/WeatherRegimes_vignette.md rename to vignettes/WeatherRegimes_vignette.Rmd index dc03bd97..47d78aee 100644 --- a/vignettes/WeatherRegimes_vignette.md +++ b/vignettes/WeatherRegimes_vignette.Rmd @@ -1,7 +1,18 @@ +--- +author: "Verónica Torralba, Nicola Cortesi and Núria Pérez-Zanón" +date: "`r Sys.Date()`" +output: rmarkdown::html_vignette +vignette: > + %\VignetteEngine{knitr::knitr} + %\VignetteIndexEntry{Weather Regime Analysis} + %\usepackage[utf8]{inputenc} +--- + + Weather regime analysis ======================== - Weather regimes are a set of patterns able to characterize the different circulation structures occurring each month/season. This vignette aims to illustrate a step-by-step example of how to perform a weather regime assessment using s2dverification functionalities. +Weather regimes are a set of patterns able to characterize the different circulation structures occurring each month/season. This vignette aims to illustrate a step-by-step example of how to perform a weather regime assessment using CSTools functionalities. ### 1- Required packages @@ -11,7 +22,6 @@ The functions to compute the Weather Regimes are part of CSTools while plotting library(CSTools) library(s2dverification) library(zeallot) -library(RColorBrewer) ## for PlotTriangles4Categories ``` @@ -54,7 +64,6 @@ The weather regimes classification is based on daily anomalies, which have been ```r -source("/esarchive/scratch/nperez/git/cstools/R/CST_Anomaly.R") # to be removed c(ano_exp, ano_obs) %<-% CST_Anomaly(exp = exp, obs = obs, filter_span = 1) ``` @@ -68,9 +77,6 @@ from the stats R package. In this example we have made different assumptions: fo ```r -source("/esarchive/scratch/nperez/git/cstools/R/CST_WeatherRegimes.R") # to be removed -library(multiApply) # to be removed -library(abind) # to be removed WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFS = FALSE, ncenters = 4) ``` @@ -113,8 +119,12 @@ PlotTriangles4Categories(freq_obs, toptitle = 'Persistence', lab_legend = c('AR', 'NAO-', 'BL', 'NAO+'), figure.width = .7) ``` + + + + ### 7- Weather regimes in the predictions Predicted anomalies for each day, month, member and lead time are matched with the observed clusters (obtained in step 4). The assignment of the anomalies to a pre-defined set of clusters guarantees that the predicted weather regimes have very similar spatial structures to the observed regimes, which is an essential requirement for the verification of weather regimes. This is an example of how to produce a set of weather regimes based on the predictions that can be verified with the observational dataset, but this approach can be also used in an operational context for which the probability of occurence of each cluster could be estimated. @@ -124,7 +134,6 @@ The matching is based on the minimization of Eucledian distance `method='distanc ```r -source("/esarchive/scratch/nperez/git/cstools/R/CST_RegimesAssign.R") WR_exp <- CST_RegimesAssign(data = ano_exp, ref_maps = WR_obs, method = 'distance', composite = TRUE, memb = TRUE) ``` @@ -149,4 +158,5 @@ PlotLayout(PlotEquiMap, c(1, 2),lon = exp$lon, lat = exp$lat, ``` + Observed and predicted weather regimes are very similar although their frequencies are slightly different. Cluster 1 is the Atlantic Ridge and cluster 3 the Blocking pattern, while cluster 4 and 2 are the positive and negative phases of the NAO. This patterns can change depending on the period analyzed. -- GitLab From 5f121eb061c0f8ff9096fe808383f664002b129b Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 18:43:42 +0200 Subject: [PATCH 171/184] WR vignette listed in NEWs --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 1a9069e5..fab70c70 100644 --- a/NEWS.md +++ b/NEWS.md @@ -10,6 +10,7 @@ + CST_WeatherRegimes/WeatherRegimes and CST_RegimeAssign/RegimeAssign + PlotPDFsOLE plots two probability density gaussian functions and the optimal linear estimation + CST_RFTemp/RF_Temp functions available for downscaling temperature + + Weather Regimes vignette - Fixes + CST_Anomaly handles exp, obs or both -- GitLab From 076b93d36028497d64b0e7cb18c12c0a3755731f Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 19:11:19 +0200 Subject: [PATCH 172/184] WR Test fixed --- tests/testthat/test-CST_WeatherRegimes.R | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/tests/testthat/test-CST_WeatherRegimes.R b/tests/testthat/test-CST_WeatherRegimes.R index e2bc6feb..5f2967a1 100644 --- a/tests/testthat/test-CST_WeatherRegimes.R +++ b/tests/testthat/test-CST_WeatherRegimes.R @@ -41,7 +41,7 @@ test_that("Sanity checks", { paste0("Parameter 'lon' must be specified.")) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFS = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 @@ -53,9 +53,9 @@ test_that("Sanity checks", { expect_equal( dim(CST_WeatherRegimes(data = data1 , ncenters = nclusters, - EOFS = FALSE)$statistics$frequency), c(2, nclusters)) + EOFs = FALSE)$statistics$frequency), c(2, nclusters)) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFS = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, nclusters, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) data1 <- 1 : 400 @@ -81,7 +81,7 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_error( - CST_WeatherRegimes(data = data1, ncenters = 3, EOFS = FALSE), + CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE), paste0("Parameter 'data' contains NAs in the 'time' dimensions.")) data1 <- 1 : 400 @@ -90,10 +90,10 @@ test_that("Sanity checks", { data1 <- list(data = data1, lat = 1:5 ,lon = 1:4) class(data1) <- 's2dv_cube' expect_equal( - any(is.na(CST_WeatherRegimes(data = data1, ncenters =3, EOFS = FALSE)$data)), + any(is.na(CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE)$data)), TRUE) expect_equal( - names(dim(CST_WeatherRegimes(data = data1, ncenters =3, EOFS = FALSE)$data)), + names(dim(CST_WeatherRegimes(data = data1, ncenters = 3, EOFs = FALSE)$data)), c('lat', 'lon', 'cluster')) }) -- GitLab From 364470805ee224ca7609d007018613e462f991eb Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 19:39:09 +0200 Subject: [PATCH 173/184] bumped version number 3.1.0 --- DESCRIPTION | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 64088472..f481e5fe 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,9 +1,9 @@ Package: CSTools Title: Assessing Skill of Climate Forecasts on Seasonal-to-Decadal Timescales -Version: 3.0.0 +Version: 3.1.0 Authors@R: c( - person("Nuria", "Perez-Zanon", , "nuria.perez@bsc.es", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-8568-3071")), + person("Núria", "Pérez-Zanón", , "nuria.perez@bsc.es", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-8568-3071")), person("Louis-Philippe", "Caron", , "louis-philippe.caron@bsc.es", role = "aut", comment = c(ORCID = "0000-0001-5221-0147")), person("Carmen", "Alvarez-Castro", , "carmen.alvarez-castro@cmcc.it", role = "aut"), person("Jost", "von Hardenberg", , email = c("j.vonhardenberg@isac.cnr.it", "jost.hardenberg@polito.it"), role = "aut", comment = c(ORCID = "0000-0002-5312-8070")), @@ -15,8 +15,11 @@ Authors@R: c( person("Deborah", "Verfaillie", , "deborah.verfaillie@bsc.es", role = "aut"), person("Lauriane", "Batte", , "lauriane.batte@meteo.fr", role = "ctb"), person("Filippo", "Cali Quaglia", , "filippo.caliquaglia@gmail.com", role = "ctb"), + person("Chihchung", "Chou", , "chihchung.chou@bsc.es", role = "ctb"), + person("Nicola", "Cortesi", , "nicola.cortesi@bsc.es", role = "ctb"), person("Susanna", "Corti", , "s.corti@isac.cnr.it", role = "ctb"), person("Paolo", "Davini", , "p.davini@isac.cnr.it", role = "ctb"), + person("Marta", "Dominguez", , "mdomingueza@aemet.es", role = "ctb"), person("Federico", "Fabiano", , "f.fabiano@isac.cnr.it", role = "ctb"), person("Ignazio", "Giuntoli", , "i.giuntoli@isac.cnr.it", role = "ctb"), person("Raul", "Marcos", , "raul.marcos@bsc.es", role = "ctb"), -- GitLab From 5cd35aa3699cdc661ebb145c84cc36e7f433f067 Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 20:09:25 +0200 Subject: [PATCH 174/184] Persistence plot size --- vignettes/WeatherRegimes_vignette.Rmd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vignettes/WeatherRegimes_vignette.Rmd b/vignettes/WeatherRegimes_vignette.Rmd index 47d78aee..2b7b6128 100644 --- a/vignettes/WeatherRegimes_vignette.Rmd +++ b/vignettes/WeatherRegimes_vignette.Rmd @@ -121,8 +121,7 @@ PlotTriangles4Categories(freq_obs, toptitle = 'Persistence', ``` - - + ### 7- Weather regimes in the predictions -- GitLab From aad899f10cfa2b61831e2e7eb83614cdeaa3485c Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 20:32:31 +0200 Subject: [PATCH 175/184] Fix accents and markdown suggest --- DESCRIPTION | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index f481e5fe..92c36476 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -3,7 +3,7 @@ Title: Assessing Skill of Climate Forecasts on Seasonal-to-Decadal Timescales Version: 3.1.0 Authors@R: c( - person("Núria", "Pérez-Zanón", , "nuria.perez@bsc.es", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-8568-3071")), + person("Nuria", "Perez-Zanon", , "nuria.perez@bsc.es", role = c("aut", "cre"), comment = c(ORCID = "0000-0001-8568-3071")), person("Louis-Philippe", "Caron", , "louis-philippe.caron@bsc.es", role = "aut", comment = c(ORCID = "0000-0001-5221-0147")), person("Carmen", "Alvarez-Castro", , "carmen.alvarez-castro@cmcc.it", role = "aut"), person("Jost", "von Hardenberg", , email = c("j.vonhardenberg@isac.cnr.it", "jost.hardenberg@polito.it"), role = "aut", comment = c(ORCID = "0000-0002-5312-8070")), @@ -71,6 +71,7 @@ Suggests: zeallot, testthat, knitr, + markdown, rmarkdown VignetteBuilder: knitr License: Apache License 2.0 -- GitLab From d8a9e7c2f581d39dfd7dc38b30b04649df3e94ae Mon Sep 17 00:00:00 2001 From: nperez Date: Tue, 30 Jun 2020 21:04:41 +0200 Subject: [PATCH 176/184] commit avoiding long examples to run --- R/CST_EnsClustering.R | 6 ++++-- R/CST_RegimesAssign.R | 4 ++++ R/CST_WeatherRegimes.R | 4 ++++ man/CST_EnsClustering.Rd | 4 ++-- man/CST_RegimesAssign.Rd | 2 ++ man/CST_WeatherRegimes.Rd | 2 ++ man/EnsClustering.Rd | 2 ++ man/RegimesAssign.Rd | 2 ++ man/WeatherRegimes.Rd | 2 ++ 9 files changed, 24 insertions(+), 4 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index 53bf013a..f0624d3e 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -78,7 +78,7 @@ #' res <- CST_EnsClustering(exp, numclus = 3, #' cluster_dim = c("member", "dataset", "sdate")) #' iclus = res$cluster[2, 1, 3] -#'\donttest{ +#'\dontrun{ #' print(paste("Cluster of 2. member, 1. dataset, 3. sdate:", iclus)) #' print(paste("Frequency (numerosity) of cluster (", iclus, ") :", res$freq[iclus])) #' library(s2dverification) @@ -88,7 +88,7 @@ #'} #' # Example 2: Cluster on members retaining 4 EOFs during #' # preliminary dimensional reduction -#'\donttest{ +#'\dontrun{ #' res <- CST_EnsClustering(exp, numclus = 3, numpcs = 4, cluster_dim = "member") #' # Example 3: Cluster on members, retain 80% of variance during #' # preliminary dimensional reduction @@ -161,9 +161,11 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, #' \code{$lat} (selected longitudes of output fields). #' #' @examples +#'\dontrun{ #' exp <- lonlat_data$exp #' res <- EnsClustering(exp$data, exp$lat, exp$lon, numclus = 3, #' cluster_dim = c("member", "dataset", "sdate")) +#'} #'@export EnsClustering <- function(data, lat, lon, time_moment = "mean", numclus = NULL, diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index b0817a71..580cf1e5 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -31,9 +31,11 @@ #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples +#'\dontrun{ #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) #'res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) #'res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) +#'} #'@export #' @@ -105,10 +107,12 @@ CST_RegimesAssign <- function(data, ref_maps, #'@import multiApply #'@importFrom ClimProjDiags Subset #'@examples +#'\dontrun{ #'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, #' EOFs = FALSE, ncenters = 4)$composite #'res1 <- RegimesAssign(data = lonlat_data$exp$data, ref_maps = drop(regimes), #' lat = lonlat_data$exp$lat, composite = FALSE) +#'} #'@export RegimesAssign <- function(data, ref_maps, lat, method = "distance", composite = FALSE, diff --git a/R/CST_WeatherRegimes.R b/R/CST_WeatherRegimes.R index f4495a29..72ab3987 100644 --- a/R/CST_WeatherRegimes.R +++ b/R/CST_WeatherRegimes.R @@ -37,8 +37,10 @@ #'@import s2dverification #'@import multiApply #'@examples +#'\dontrun{ #'res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) #'res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = TRUE, ncenters = 3) +#'} #'@export #' CST_WeatherRegimes <- function(data, ncenters = NULL, @@ -110,8 +112,10 @@ CST_WeatherRegimes <- function(data, ncenters = NULL, #'@import s2dverification #'@import multiApply #'@examples +#'\dontrun{ #'res <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, #' EOFs = FALSE, ncenters = 4) +#'} #'@export WeatherRegime <- function(data, ncenters = NULL, diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index 6ee79b7c..c68af505 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -104,7 +104,7 @@ exp <- lonlat_data$exp res <- CST_EnsClustering(exp, numclus = 3, cluster_dim = c("member", "dataset", "sdate")) iclus = res$cluster[2, 1, 3] -\donttest{ +\dontrun{ print(paste("Cluster of 2. member, 1. dataset, 3. sdate:", iclus)) print(paste("Frequency (numerosity) of cluster (", iclus, ") :", res$freq[iclus])) library(s2dverification) @@ -114,7 +114,7 @@ PlotEquiMap(res$repr_field[iclus, , ], exp$lon, exp$lat, } # Example 2: Cluster on members retaining 4 EOFs during # preliminary dimensional reduction -\donttest{ +\dontrun{ res <- CST_EnsClustering(exp, numclus = 3, numpcs = 4, cluster_dim = "member") # Example 3: Cluster on members, retain 80\% of variance during # preliminary dimensional reduction diff --git a/man/CST_RegimesAssign.Rd b/man/CST_RegimesAssign.Rd index 22b762b2..43df97c4 100644 --- a/man/CST_RegimesAssign.Rd +++ b/man/CST_RegimesAssign.Rd @@ -43,10 +43,12 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ +\dontrun{ regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) res1 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = FALSE) res2 <- CST_RegimesAssign(data = lonlat_data$exp, ref_maps = regimes, composite = TRUE) } +} \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} diff --git a/man/CST_WeatherRegimes.Rd b/man/CST_WeatherRegimes.Rd index a840c595..a243a76a 100644 --- a/man/CST_WeatherRegimes.Rd +++ b/man/CST_WeatherRegimes.Rd @@ -54,9 +54,11 @@ The cluster analysis can be performed with the traditional k-means or those meth included in the hclust (stats package). } \examples{ +\dontrun{ res1 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) res2 <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = TRUE, ncenters = 3) } +} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 30d81f87..986c6d4d 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -67,10 +67,12 @@ and returns a number of scenarios, with representative members for each of them. The clustering is performed in a reduced EOF space. } \examples{ +\dontrun{ exp <- lonlat_data$exp res <- EnsClustering(exp$data, exp$lat, exp$lon, numclus = 3, cluster_dim = c("member", "dataset", "sdate")) } +} \author{ Federico Fabiano - ISAC-CNR, \email{f.fabiano@isac.cnr.it} diff --git a/man/RegimesAssign.Rd b/man/RegimesAssign.Rd index d578e5b2..c145e8ef 100644 --- a/man/RegimesAssign.Rd +++ b/man/RegimesAssign.Rd @@ -46,10 +46,12 @@ for which the minimum Eucledian distance (method=’distance’) or highest spat (method=‘ACC’) is obtained. } \examples{ +\dontrun{ regimes <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, EOFs = FALSE, ncenters = 4)$composite res1 <- RegimesAssign(data = lonlat_data$exp$data, ref_maps = drop(regimes), lat = lonlat_data$exp$lat, composite = FALSE) +} } \references{ Torralba, V. (2019) Seasonal climate prediction for the wind energy sector: methods and tools for the development of a climate service. Thesis. Available online: \url{https://eprints.ucm.es/56841/} diff --git a/man/WeatherRegimes.Rd b/man/WeatherRegimes.Rd index 812585ce..3f77841e 100644 --- a/man/WeatherRegimes.Rd +++ b/man/WeatherRegimes.Rd @@ -61,9 +61,11 @@ The cluster analysis can be performed with the traditional k-means or those meth included in the hclust (stats package). } \examples{ +\dontrun{ res <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, EOFs = FALSE, ncenters = 4) } +} \references{ Cortesi, N., V., Torralba, N., González-Reviriego, A., Soret, and F.J., Doblas-Reyes (2019). Characterization of European wind speed variability using weather regimes. Climate Dynamics,53, -- GitLab From f5addc95f5b288cc7055053c664a02b65a685aeb Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 10:29:05 +0200 Subject: [PATCH 177/184] Timelapse running examples --- R/CST_EnsClustering.R | 9 +++++---- man/CST_EnsClustering.Rd | 7 ++++--- man/EnsClustering.Rd | 2 +- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/R/CST_EnsClustering.R b/R/CST_EnsClustering.R index f0624d3e..93a34d9f 100644 --- a/R/CST_EnsClustering.R +++ b/R/CST_EnsClustering.R @@ -73,22 +73,23 @@ #' \code{$lon} (selected longitudes of output fields), #' \code{$lat} (selected longitudes of output fields). #' @examples +#'\donttest{ #' exp <- lonlat_data$exp #' # Example 1: Cluster on all start dates, members and models #' res <- CST_EnsClustering(exp, numclus = 3, #' cluster_dim = c("member", "dataset", "sdate")) #' iclus = res$cluster[2, 1, 3] -#'\dontrun{ +#' #' print(paste("Cluster of 2. member, 1. dataset, 3. sdate:", iclus)) #' print(paste("Frequency (numerosity) of cluster (", iclus, ") :", res$freq[iclus])) #' library(s2dverification) #' PlotEquiMap(res$repr_field[iclus, , ], exp$lon, exp$lat, #' filled.continents = FALSE, #' toptitle = paste("Representative field of cluster", iclus)) -#'} +#' #' # Example 2: Cluster on members retaining 4 EOFs during #' # preliminary dimensional reduction -#'\dontrun{ +#' #' res <- CST_EnsClustering(exp, numclus = 3, numpcs = 4, cluster_dim = "member") #' # Example 3: Cluster on members, retain 80% of variance during #' # preliminary dimensional reduction @@ -161,7 +162,7 @@ CST_EnsClustering <- function(exp, time_moment = "mean", numclus = NULL, #' \code{$lat} (selected longitudes of output fields). #' #' @examples -#'\dontrun{ +#'\donttest{ #' exp <- lonlat_data$exp #' res <- EnsClustering(exp$data, exp$lat, exp$lon, numclus = 3, #' cluster_dim = c("member", "dataset", "sdate")) diff --git a/man/CST_EnsClustering.Rd b/man/CST_EnsClustering.Rd index c68af505..a7ca4a9c 100644 --- a/man/CST_EnsClustering.Rd +++ b/man/CST_EnsClustering.Rd @@ -99,22 +99,23 @@ the maximum distance between a member in a cluster and the cluster centroid deviation for each cluster (i.e. how much the cluster is compact). } \examples{ +\donttest{ exp <- lonlat_data$exp # Example 1: Cluster on all start dates, members and models res <- CST_EnsClustering(exp, numclus = 3, cluster_dim = c("member", "dataset", "sdate")) iclus = res$cluster[2, 1, 3] -\dontrun{ + print(paste("Cluster of 2. member, 1. dataset, 3. sdate:", iclus)) print(paste("Frequency (numerosity) of cluster (", iclus, ") :", res$freq[iclus])) library(s2dverification) PlotEquiMap(res$repr_field[iclus, , ], exp$lon, exp$lat, filled.continents = FALSE, toptitle = paste("Representative field of cluster", iclus)) -} + # Example 2: Cluster on members retaining 4 EOFs during # preliminary dimensional reduction -\dontrun{ + res <- CST_EnsClustering(exp, numclus = 3, numpcs = 4, cluster_dim = "member") # Example 3: Cluster on members, retain 80\% of variance during # preliminary dimensional reduction diff --git a/man/EnsClustering.Rd b/man/EnsClustering.Rd index 986c6d4d..510fc168 100644 --- a/man/EnsClustering.Rd +++ b/man/EnsClustering.Rd @@ -67,7 +67,7 @@ and returns a number of scenarios, with representative members for each of them. The clustering is performed in a reduced EOF space. } \examples{ -\dontrun{ +\donttest{ exp <- lonlat_data$exp res <- EnsClustering(exp$data, exp$lat, exp$lon, numclus = 3, cluster_dim = c("member", "dataset", "sdate")) -- GitLab From 007c12d99c60dfc98f77ad2b4b3b1a2cf1d58d56 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 10:54:52 +0200 Subject: [PATCH 178/184] subtitle fixed in vignette --- vignettes/WeatherRegimes_vignette.Rmd | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/vignettes/WeatherRegimes_vignette.Rmd b/vignettes/WeatherRegimes_vignette.Rmd index 2b7b6128..97a4a10a 100644 --- a/vignettes/WeatherRegimes_vignette.Rmd +++ b/vignettes/WeatherRegimes_vignette.Rmd @@ -45,10 +45,12 @@ c(exp, obs) %<-% CST_Load(var = 'psl', exp = 'system4_m1', lonmin = 274.5, lonmax = 45, output = 'lonlat') ``` + Notice that you need the files to be stored locally in your computer or server with correct configuration file. If you are interested into run this vignette, contact nuria.perez at bsc.es to get a data sample. The objects returned by `CST_Load()` are s2v_cube class. They contains among others, the array with the requested data. + ```r > dim(exp$data) dataset member sdate ftime lat lon @@ -58,7 +60,8 @@ dataset member sdate ftime lat lon 1 1 20 31 77 186 ``` -## #3- Daily anomalies based on a smoothed climatology) + +### 3- Daily anomalies based on a smoothed climatology) The weather regimes classification is based on daily anomalies, which have been computed by following these steps: -- GitLab From 38ae20c5519222a8360c3242964fd08f2f15f305 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 10:59:22 +0200 Subject: [PATCH 179/184] Fix in WR argument name --- vignettes/WeatherRegimes_vignette.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vignettes/WeatherRegimes_vignette.Rmd b/vignettes/WeatherRegimes_vignette.Rmd index 97a4a10a..62e4883d 100644 --- a/vignettes/WeatherRegimes_vignette.Rmd +++ b/vignettes/WeatherRegimes_vignette.Rmd @@ -80,7 +80,7 @@ from the stats R package. In this example we have made different assumptions: fo ```r -WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFS = FALSE, ncenters = 4) +WR_obs <- CST_WeatherRegimes(data = ano_obs, EOFs = FALSE, ncenters = 4) ``` -- GitLab From 857bba707e3da5b6e8dca45d56d252b9fa361756 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 12:10:39 +0200 Subject: [PATCH 180/184] Remove links to function from qmap in doc --- R/CST_QuantileMapping.R | 12 ++++++------ man/CST_QuantileMapping.Rd | 14 ++------------ 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/R/CST_QuantileMapping.R b/R/CST_QuantileMapping.R index 25651241..9ecf9233 100644 --- a/R/CST_QuantileMapping.R +++ b/R/CST_QuantileMapping.R @@ -14,11 +14,11 @@ #' #'@details The different methods are: #'\itemize{ -#'\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{\link[qmap]{fitQmapPTF}}.} -#' \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} -#'\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} -#'\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} -#'\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{\link[qmap]{fitQmapSSPLIN}}}.} +#'\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{?qmap::fitQmapPTF}.} +#' \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{?qmap::fitQmapDIST}.} +#'\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{?qmap::fitQmapRQUANT}.} +#'\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{?qmap::fitQmapQUANT}.} +#'\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{?qmap::fitQmapSSPLIN}.} #'All methods accepts some common arguments: #'\itemize{ #'\item{wet.day} {logical indicating whether to perform wet day correction or not.(Not available in 'DIS' method)} @@ -29,7 +29,7 @@ #'@import multiApply #'@import abind #' -#'@seealso \code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} +#'@seealso \code{qmap::fitQmap} and \code{qmap::doQmap} #'@examples #'library(qmap) #'exp <- 1 : (1 * 5 * 10 * 6 * 2 * 3) diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index ad8f4b6c..9f4e8d4a 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -40,17 +40,7 @@ an oject of class \code{s2dv_cube} containing the experimental data after applyi This function is a wrapper from fitQmap and doQmap from package 'qmap'to be applied in CSTools objects of class 's2dv_cube'. The quantile mapping adjustment between an experiment, tipically a hindcast, and observations is applied to the experiment itself or to a provided forecast. } \details{ -The different methods are: -\itemize{ -\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{\link[qmap]{fitQmapPTF}}.} -\item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} -\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} -\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} -\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{\link[qmap]{fitQmapSSPLIN}}}.} -All methods accepts some common arguments: -\itemize{ -\item{wet.day} {logical indicating whether to perform wet day correction or not.(Not available in 'DIS' method)} -\item{qstep} {NULL or a numeric value between 0 and 1.}} + } \examples{ library(qmap) @@ -85,7 +75,7 @@ res <- CST_QuantileMapping(exp = exp, obs = obs, sample_dims = 'time', } } \seealso{ -\code{\link[qmap]{fitQmap}} and \code{\link[qmap]{doQmap}} +\code{qmap::fitQmap} and \code{qmap::doQmap} } \author{ Nuria Perez-Zanon, \email{nuria.perez@bsc.es} -- GitLab From 242ee25de37f6365eeceb359f510ab4bd76c51e6 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 12:58:00 +0200 Subject: [PATCH 181/184] Fixing deatils in QM --- R/CST_QuantileMapping.R | 2 +- man/CST_QuantileMapping.Rd | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/R/CST_QuantileMapping.R b/R/CST_QuantileMapping.R index 25651241..b7fd210c 100644 --- a/R/CST_QuantileMapping.R +++ b/R/CST_QuantileMapping.R @@ -18,7 +18,7 @@ #' \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} #'\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} #'\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} -#'\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{\link[qmap]{fitQmapSSPLIN}}}.} +#'\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{?qmap::fitQmapSSPLIN}.}} #'All methods accepts some common arguments: #'\itemize{ #'\item{wet.day} {logical indicating whether to perform wet day correction or not.(Not available in 'DIS' method)} diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index ad8f4b6c..8f2a8526 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -46,7 +46,7 @@ The different methods are: \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} \item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} \item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} -\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{\link[qmap]{fitQmapSSPLIN}}}.} +\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{?qmap::fitQmapSSPLIN}.}} All methods accepts some common arguments: \itemize{ \item{wet.day} {logical indicating whether to perform wet day correction or not.(Not available in 'DIS' method)} -- GitLab From 9107387208aa071ba0d2fc66d772be0523a4a099 Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 13:51:06 +0200 Subject: [PATCH 182/184] Debian errors --- R/CST_QuantileMapping.R | 8 ++++---- man/CST_QuantileMapping.Rd | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/R/CST_QuantileMapping.R b/R/CST_QuantileMapping.R index 3971f2a0..3923569a 100644 --- a/R/CST_QuantileMapping.R +++ b/R/CST_QuantileMapping.R @@ -14,10 +14,10 @@ #' #'@details The different methods are: #'\itemize{ -#'\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{\link[qmap]{fitQmapPTF}}.} -#' \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} -#'\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} -#'\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} +#'\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{?qmap::fitQmapPTF}.} +#' \item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{?qmap::fitQmapDIST}.} +#'\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{?qmap::fitQmapRQUANT}.} +#'\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{?qmap::fitQmapQUANT}.} #'\item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{?qmap::fitQmapSSPLIN}.}} #'All methods accepts some common arguments: #'\itemize{ diff --git a/man/CST_QuantileMapping.Rd b/man/CST_QuantileMapping.Rd index 797f5598..e78c8d56 100644 --- a/man/CST_QuantileMapping.Rd +++ b/man/CST_QuantileMapping.Rd @@ -42,10 +42,10 @@ This function is a wrapper from fitQmap and doQmap from package 'qmap'to be appl \details{ The different methods are: \itemize{ -\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{\link[qmap]{fitQmapPTF}}.} -\item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{\link[qmap]{fitQmapDIST}}.} -\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{\link[qmap]{fitQmapRQUANT}}.} -\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{\link[qmap]{fitQmapQUANT}}.} +\item{'PTF'} {fits a parametric transformations to the quantile-quantile relation of observed and modelled values. See \code{?qmap::fitQmapPTF}.} +\item{'DIST'} {fits a theoretical distribution to observed and to modelled time series. See \code{?qmap::fitQmapDIST}.} +\item{'RQUANT'} {estimates the values of the quantile-quantile relation of observed and modelled time series for regularly spaced quantiles using local linear least square regression. See \code{?qmap::fitQmapRQUANT}.} +\item{'QUANT'} {estimates values of the empirical cumulative distribution function of observed and modelled time series for regularly spaced quantiles. See \code{?qmap::fitQmapQUANT}.} \item{'SSPLIN'} {fits a smoothing spline to the quantile-quantile plot of observed and modelled time series. See \code{?qmap::fitQmapSSPLIN}.}} All methods accepts some common arguments: \itemize{ -- GitLab From 3f34c061824a5f262e817f2b1708d2d792f746ea Mon Sep 17 00:00:00 2001 From: nperez Date: Wed, 1 Jul 2020 16:16:29 +0200 Subject: [PATCH 183/184] startR as suggested package --- DESCRIPTION | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 92c36476..07433f27 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -72,7 +72,8 @@ Suggests: testthat, knitr, markdown, - rmarkdown + rmarkdown, + startR VignetteBuilder: knitr License: Apache License 2.0 Encoding: UTF-8 -- GitLab From 7b9c3d7ee58f0ad3414971fc76c7fe1f1ff2d752 Mon Sep 17 00:00:00 2001 From: nperez Date: Thu, 2 Jul 2020 10:51:58 +0200 Subject: [PATCH 184/184] removing Subset from ClimProjDiags dependency --- NAMESPACE | 1 - R/CST_RegimesAssign.R | 2 -- R/CST_SaveExp.R | 2 -- 3 files changed, 5 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 8ba1c4cd..9f9a0e34 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -51,7 +51,6 @@ import(rainfarmr) import(s2dverification) import(stats) importFrom(ClimProjDiags,SelBox) -importFrom(ClimProjDiags,Subset) importFrom(RColorBrewer,brewer.pal) importFrom(data.table,CJ) importFrom(data.table,data.table) diff --git a/R/CST_RegimesAssign.R b/R/CST_RegimesAssign.R index 580cf1e5..60f0d704 100644 --- a/R/CST_RegimesAssign.R +++ b/R/CST_RegimesAssign.R @@ -29,7 +29,6 @@ #' \code{$frequency} (A vector of integers (from k=1,...k n reference maps) indicating the percentage of assignations corresponding to each map.), #'@import s2dverification #'@import multiApply -#'@importFrom ClimProjDiags Subset #'@examples #'\dontrun{ #'regimes <- CST_WeatherRegimes(data = lonlat_data$obs, EOFs = FALSE, ncenters = 4) @@ -105,7 +104,6 @@ CST_RegimesAssign <- function(data, ref_maps, #' #'@import s2dverification #'@import multiApply -#'@importFrom ClimProjDiags Subset #'@examples #'\dontrun{ #'regimes <- WeatherRegime(data = lonlat_data$obs$data, lat = lonlat_data$obs$lat, diff --git a/R/CST_SaveExp.R b/R/CST_SaveExp.R index c3e04c2a..b98f3668 100644 --- a/R/CST_SaveExp.R +++ b/R/CST_SaveExp.R @@ -16,7 +16,6 @@ #' #'@seealso \code{\link{CST_Load}}, \code{\link{as.s2dv_cube}} and \code{\link{s2dv_cube}} #' -#'@importFrom ClimProjDiags Subset #'@import ncdf4 #'@importFrom s2dv Reorder #'@import multiApply @@ -78,7 +77,6 @@ CST_SaveExp <- function(data, destination = "./CST_Data") { #'@return the function creates as many files as sdates per dataset. Each file could contain multiple members #' The path will be created with the name of the variable and each Datasets. #' -#'@importFrom ClimProjDiags Subset #'@import ncdf4 #'@importFrom s2dv Reorder #'@import multiApply -- GitLab

k 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