Revision 47c79dcd
Added by Benoit Parmentier almost 10 years ago
climate/research/oregon/interpolation/global_run_scalingup_assessment_part1.R | ||
---|---|---|
5 | 5 |
#Part 1 create summary tables and inputs for figure in part 2 and part 3. |
6 | 6 |
#AUTHOR: Benoit Parmentier |
7 | 7 |
#CREATED ON: 03/23/2014 |
8 |
#MODIFIED ON: 01/28/2015
|
|
8 |
#MODIFIED ON: 01/20/2015
|
|
9 | 9 |
#Version: 4 |
10 | 10 |
#PROJECT: Environmental Layers project |
11 | 11 |
#TO DO: |
... | ... | |
55 | 55 |
|
56 | 56 |
#### FUNCTION USED IN SCRIPT |
57 | 57 |
|
58 |
function_analyses_paper1 <-"contribution_of_covariates_paper_interpolation_functions_07182014.R" #first interp paper |
|
59 |
function_analyses_paper2 <-"multi_timescales_paper_interpolation_functions_08132014.R" |
|
58 |
#function_analyses_paper1 <-"contribution_of_covariates_paper_interpolation_functions_07182014.R" #first interp paper |
|
59 |
#function_analyses_paper2 <-"multi_timescales_paper_interpolation_functions_08132014.R" |
|
60 |
#function_analyses_paper1 <-"contribution_of_covariates_paper_interpolation_functions_07182014.R" #first interp paper |
|
61 |
function_assessment_part1 <-"global_run_scalingup_assessment_part1_01202015.R" |
|
60 | 62 |
|
61 |
load_obj <- function(f) |
|
62 |
{ |
|
63 |
env <- new.env() |
|
64 |
nm <- load(f, env)[1] |
|
65 |
env[[nm]] |
|
66 |
} |
|
67 |
|
|
68 |
create_dir_fun <- function(out_dir,out_suffix){ |
|
69 |
if(!is.null(out_suffix)){ |
|
70 |
out_name <- paste("output_",out_suffix,sep="") |
|
71 |
out_dir <- file.path(out_dir,out_name) |
|
72 |
} |
|
73 |
#create if does not exists: create the output dir as defined |
|
74 |
if(!file.exists(out_dir)){ |
|
75 |
dir.create(out_dir) |
|
76 |
} |
|
77 |
return(out_dir) |
|
78 |
} |
|
79 |
|
|
80 |
extract_list_from_list_obj<-function(obj_list,list_name){ |
|
81 |
library(plyr) |
|
82 |
|
|
83 |
#Create a list of an object from a given list of object using a name prodived as input |
|
84 |
|
|
85 |
list_tmp<-vector("list",length(obj_list)) |
|
86 |
for (i in 1:length(obj_list)){ |
|
87 |
tmp <- obj_list[[i]][[list_name]] #double bracket to return data.frame |
|
88 |
list_tmp[[i]] <- as.data.frame(tmp) #deal with spdf... |
|
89 |
} |
|
90 |
return(list_tmp) #this is a data.frame |
|
91 |
} |
|
92 |
|
|
93 |
#This extract a data.frame object from raster prediction obj and combine them in one data.frame |
|
94 |
extract_from_list_obj<-function(obj_list,list_name){ |
|
95 |
#extract object from list of list. This useful for raster_prediction_obj |
|
96 |
library(plyr) |
|
97 |
list_tmp<-vector("list",length(obj_list)) |
|
98 |
for (i in 1:length(obj_list)){ |
|
99 |
tmp <- obj_list[[i]] |
|
100 |
if(inherits(tmp,"try-error")){ |
|
101 |
print(paste("no model generated or error in list",sep=" ")) #change message for any model type... |
|
102 |
list_tmp[[i]] <- NULL #double bracket to return data.frame |
|
103 |
}else{ |
|
104 |
#tmp<-obj_list[[i]][[list_name]] #double bracket to return data.frame |
|
105 |
list_tmp[[i]] <- as.data.frame(tmp[[list_name]]) |
|
106 |
} |
|
107 |
# |
|
108 |
#tmp<-obj_list[[i]][[list_name]] #double bracket to return data.frame |
|
109 |
#list_tmp[[i]]<- as.data.frame(tmp) #if spdf |
|
110 |
} |
|
111 |
# |
|
112 |
#list_tmp <-list_tmp[!is.null(list_tmp)] |
|
113 |
list_tmp <- list_tmp[unlist(lapply(list_tmp,FUN=function(x){!is.null(x)}))] |
|
114 |
|
|
115 |
tb_list_tmp<-do.call(rbind.fill,list_tmp) #long rownames |
|
116 |
#tb_list_tmp<-do.call(rbind,list_tmp) #long rownames |
|
117 |
return(tb_list_tmp) #this is a data.frame |
|
118 |
} |
|
119 |
|
|
120 |
## Function to mosaic modis or other raster images |
|
121 |
|
|
122 |
mosaic_m_raster_list<-function(j,list_param){ |
|
123 |
#This functions returns a subset of tiles from the modis grid. |
|
124 |
#Arguments: modies grid tile,list of tiles |
|
125 |
#Output: spatial grid data frame of the subset of tiles |
|
126 |
#Note that rasters are assumed to be in the same projection system!! |
|
127 |
|
|
128 |
#rast_list<-vector("list",length(mosaic_list)) |
|
129 |
#for (i in 1:length(mosaic_list)){ |
|
130 |
# read the individual rasters into a list of RasterLayer objects |
|
131 |
# this may be changed so that it is not read in the memory!!! |
|
132 |
|
|
133 |
#parse output... |
|
134 |
|
|
135 |
#j<-list_param$j |
|
136 |
mosaic_list<-list_param$mosaic_list |
|
137 |
out_path<-list_param$out_path |
|
138 |
out_names<-list_param$out_rastnames |
|
139 |
file_format <- list_param$file_format |
|
140 |
NA_flag_val <- list_param$NA_flag_val |
|
141 |
out_suffix <- list_param$out_suffix |
|
142 |
## Start |
|
143 |
|
|
144 |
if(class(mosaic_list[[j]])=="list"){ |
|
145 |
m_list <- unlist(mosaic_list[[j]]) |
|
146 |
} |
|
147 |
input.rasters <- lapply(m_list, raster) |
|
148 |
mosaiced_rast<-input.rasters[[1]] |
|
149 |
|
|
150 |
for (k in 2:length(input.rasters)){ |
|
151 |
mosaiced_rast<-mosaic(mosaiced_rast,input.rasters[[k]], fun=mean) |
|
152 |
#mosaiced_rast<-mosaic(mosaiced_rast,raster(input.rasters[[k]]), fun=mean) |
|
153 |
} |
|
154 |
|
|
155 |
data_name<-paste("mosaiced_",sep="") #can add more later... |
|
156 |
#raster_name<-paste(data_name,out_names[j],".tif", sep="") |
|
157 |
raster_name<-paste(data_name,out_names[j],file_format, sep="") |
|
158 |
|
|
159 |
writeRaster(mosaiced_rast, NAflag=NA_flag_val,filename=file.path(out_path,raster_name),overwrite=TRUE) |
|
160 |
#Writing the data in a raster file format... |
|
161 |
rast_list<-file.path(out_path,raster_name) |
|
162 |
|
|
163 |
## The Raster and rgdal packages write temporary files on the disk when memory is an issue. This can potential build up |
|
164 |
## in long loops and can fill up hard drives resulting in errors. The following sections removes these files |
|
165 |
## as they are created in the loop. This code section can be transformed into a "clean-up function later on |
|
166 |
## Start remove |
|
167 |
#tempfiles<-list.files(tempdir(),full.names=T) #GDAL transient files are not removed |
|
168 |
#files_to_remove<-grep(out_suffix,tempfiles,value=T) #list files to remove |
|
169 |
#if(length(files_to_remove)>0){ |
|
170 |
# file.remove(files_to_remove) |
|
171 |
#} |
|
172 |
#now remove temp files from raster package located in rasterTmpDir |
|
173 |
removeTmpFiles(h=0) #did not work if h is not set to 0 |
|
174 |
## end of remove section |
|
175 |
|
|
176 |
return(rast_list) |
|
177 |
} |
|
178 |
|
|
179 |
### Function: |
|
180 |
pred_data_info_fun <- function(k,list_data,pred_mod,sampling_dat_info){ |
|
181 |
#Summarizing input info from sampling and df used in training/testing |
|
182 |
|
|
183 |
data <- list_data[[k]] |
|
184 |
sampling_dat <- sampling_dat_info[[k]] |
|
185 |
if(data!="try-error"){ |
|
186 |
n <- nrow(data) |
|
187 |
n_mod <- vector("numeric",length(pred_mod)) |
|
188 |
for(j in 1:length(pred_mod)){ |
|
189 |
n_mod[j] <- sum(!is.na(data[[pred_mod[j]]])) |
|
190 |
} |
|
191 |
n <- rep(n,length(pred_mod)) |
|
192 |
sampling_dat <- sampling_dat[rep(seq_len(nrow(sampling_dat)), each=length(pred_mod)),] |
|
193 |
row.names(sampling_dat) <- NULL |
|
194 |
df_n <- data.frame(n,n_mod,pred_mod) |
|
195 |
df_n <- cbind(df_n,sampling_dat) |
|
196 |
}else{ |
|
197 |
n <- rep(NA,length(pred_mod)) |
|
198 |
n_mod <- vector("numeric",length(pred_mod)) |
|
199 |
n_mod <- rep(NA,length(pred_mod)) |
|
200 |
df_n <- data.frame(n,n_mod,pred_mod) |
|
201 |
sampling_dat <- sampling_dat[rep(seq_len(nrow(sampling_dat)), each=length(pred_mod)),] |
|
202 |
row.names(sampling_dat) <- NULL |
|
203 |
df_n <- data.frame(n,n_mod,pred_mod) |
|
204 |
df_n <- cbind(df_n,sampling_dat) |
|
205 |
|
|
206 |
} |
|
207 |
return(df_n) |
|
208 |
} |
|
209 |
|
|
210 |
extract_daily_training_testing_info <- function(i,list_param){ |
|
211 |
#This function extracts training and testing information from the raster object produced for each tile |
|
212 |
#This is looping through tiles... |
|
213 |
##Functions used |
|
214 |
#Defined outside this script: |
|
215 |
#pred_data_info_fun |
|
216 |
|
|
217 |
##### Parse parameters and arguments #### |
|
218 |
|
|
219 |
raster_obj_file <- list_param$list_raster_obj_files[i] |
|
220 |
use_month <- list_param$use_month |
|
221 |
use_day <- list_param$use_day |
|
222 |
tile_id <- list_param$list_names_tile_id[i] |
|
223 |
|
|
224 |
### Start script ## |
|
225 |
|
|
226 |
raster_obj <- load_obj(unlist(raster_obj_file)) #may not need unlist |
|
227 |
nb_models <- length((raster_obj$clim_method_mod_obj[[1]]$formulas)) |
|
228 |
pred_mod <- paste("mod",c(1:nb_models,"_kr"),sep="") |
|
229 |
#we are assuming no monthly hold out... |
|
230 |
#we are assuming only one specific daily prop? |
|
231 |
nb_models <- length(pred_mod) |
|
232 |
#names(raster_obj$method_mod_obj[[1]]) |
|
233 |
var_interp <- unique(raster_obj$tb_diagnostic_s$var_interp) |
|
234 |
method_interp <- unique(raster_obj$tb_diagnostic_s$method_interp) |
|
235 |
|
|
236 |
if(use_day==TRUE){ |
|
237 |
|
|
238 |
list_data_day_v <- try(extract_list_from_list_obj(raster_obj$validation_mod_obj,"data_v")) |
|
239 |
list_data_day_s <- try(extract_list_from_list_obj(raster_obj$validation_mod_obj,"data_s")) |
|
240 |
sampling_dat_day <- extract_list_from_list_obj(raster_obj$method_mod_obj,"daily_dev_sampling_dat") |
|
241 |
#debug(pred_data_info_fun) |
|
242 |
#list_pred_data_day_s_info <- pred_data_info_fun(1,list_data=list_data_day_s,pred_mod=pred_mod,sampling_dat_info=sampling_dat_day) |
|
243 |
list_pred_data_day_s_info <- lapply(1:length(sampling_dat_day),FUN=pred_data_info_fun, |
|
244 |
list_data=list_data_day_s,pred_mod=pred_mod,sampling_dat_info=sampling_dat_day) |
|
245 |
list_pred_data_day_v_info <- lapply(1:length(sampling_dat_day),FUN=pred_data_info_fun, |
|
246 |
list_data=list_data_day_v,pred_mod=pred_mod,sampling_dat_info=sampling_dat_day) |
|
247 |
pred_data_day_s_info <- do.call(rbind,list_pred_data_day_s_info) |
|
248 |
pred_data_day_v_info <- do.call(rbind,list_pred_data_day_v_info) |
|
249 |
pred_data_day_s_info$training <- rep(1,nrow(pred_data_day_s_info)) |
|
250 |
pred_data_day_v_info$training <- rep(0,nrow(pred_data_day_v_info)) |
|
251 |
pred_data_day_info <-rbind(pred_data_day_v_info,pred_data_day_s_info) |
|
252 |
|
|
253 |
pred_data_day_info$method_interp <- rep(method_interp,nrow(pred_data_day_info)) |
|
254 |
pred_data_day_info$var_interp <- rep(var_interp,nrow(pred_data_day_info)) |
|
255 |
pred_data_day_info$tile_id <- rep(tile_id,nrow(pred_data_day_info)) |
|
256 |
} |
|
257 |
|
|
258 |
if(use_month==TRUE){ |
|
259 |
|
|
260 |
list_data_month_s <- try(extract_list_from_list_obj(raster_obj$validation_mod_month_obj,"data_s")) |
|
261 |
list_data_month_v <- try(extract_list_from_list_obj(raster_obj$validation_mod_month_obj,"data_v")) |
|
262 |
sampling_dat_month <- extract_list_from_list_obj(raster_obj$clim_method_mod_obj,"sampling_month_dat") |
|
263 |
list_pred_data_month_s_info <- lapply(1:length(sampling_dat_month),FUN=pred_data_info_fun, |
|
264 |
list_data=list_data_month_s,pred_mod=pred_mod,sampling_dat_info=sampling_dat_month) |
|
265 |
list_pred_data_month_v_info <- mclapply(1:length(sampling_dat_month),FUN=pred_data_info_fun, |
|
266 |
list_data=list_data_month_v,pred_mod=pred_mod,sampling_dat_info=sampling_dat_month,mc.preschedule=FALSE,mc.cores = 1) |
|
267 |
#Note for list_pred_data_month_v_info it will be try-error when there is no holdout. |
|
268 |
#combine training and testing later? also combined with accuracy |
|
269 |
pred_data_month_s_info <- do.call(rbind,list_pred_data_month_s_info) |
|
270 |
#Adding a column for training: if data item used as training then it is 1 |
|
271 |
pred_data_month_s_info$training <- try(rep(1,nrow(pred_data_month_s_info))) |
|
272 |
|
|
273 |
#Remove try-error?? |
|
274 |
list_pred_data_month_v_info_tmp <- remove_from_list_fun(list_pred_data_month_v_info) |
|
275 |
list_pred_data_month_v_info <- list_pred_data_month_v_info_tmp$list |
|
276 |
if (length(list_pred_data_month_v_info)>0){ |
|
277 |
pred_data_month_v_info <- do.call(rbind,list_pred_data_month_v_info) |
|
278 |
pred_data_month_v_info$training <- try(rep(0,nrow(pred_data_month_v_info))) |
|
279 |
pred_data_month_info <- rbind(pred_data_month_v_info,pred_data_month_s_info) |
|
280 |
}else{ |
|
281 |
pred_data_month_info <- pred_data_month_s_info |
|
282 |
} |
|
283 |
|
|
284 |
pred_data_month_info$method_interp <- rep(method_interp,nrow(pred_data_month_info)) |
|
285 |
pred_data_month_info$var_interp <- rep(var_interp,nrow(pred_data_month_info)) |
|
286 |
pred_data_month_info$tile_id <- rep(tile_id,nrow(pred_data_month_info)) |
|
287 |
} |
|
288 |
|
|
289 |
if(use_month==FALSE){ |
|
290 |
pred_data_month_info <- NULL |
|
291 |
} |
|
292 |
if(use_day==FALSE){ |
|
293 |
pred_data_day_info <- NULL |
|
294 |
} |
|
295 |
#prepare object to return |
|
296 |
pred_data_info_obj <- list(pred_data_month_info,pred_data_day_info) |
|
297 |
names(pred_data_info_obj) <- c("pred_data_month_info","pred_data_day_info") |
|
298 |
#could add data.frame data_s and data_v later... |
|
299 |
### |
|
300 |
return(pred_data_info_obj) |
|
301 |
} |
|
302 |
|
|
303 |
remove_from_list_fun <- function(l_x,condition_class ="try-error"){ |
|
304 |
index <- vector("list",length(l_x)) |
|
305 |
for (i in 1:length(l_x)){ |
|
306 |
if (inherits(l_x[[i]],condition_class)){ |
|
307 |
index[[i]] <- FALSE #remove from list |
|
308 |
}else{ |
|
309 |
index[[i]] <- TRUE |
|
310 |
} |
|
311 |
} |
|
312 |
l_x<-l_x[unlist(index)] #remove from list all elements using subset |
|
313 |
|
|
314 |
obj <- list(l_x,index) |
|
315 |
names(obj) <- c("list","valid") |
|
316 |
return(obj) |
|
317 |
} |
|
318 |
|
|
319 |
##Function to list predicted tif |
|
320 |
list_tif_fun <- function(i,in_dir_list,pattern_str){ |
|
321 |
#list.files(path=x,pattern=".*predicted_mod1_0_1.*20100101.*.tif",full.names=T)}) |
|
322 |
pat_str<- pattern_str[i] |
|
323 |
list_tif_files_dates <-lapply(in_dir_list, |
|
324 |
FUN=function(x,pat_str){list.files(path=x,pattern=pat_str,full.names=T)},pat_str=pat_str) |
|
325 |
return(list_tif_files_dates) |
|
326 |
} |
|
327 |
|
|
328 |
calculate_summary_from_tb_diagnostic <-function(tb_diagnostic,metric_names){#,out_prefix,out_path){ |
|
329 |
#now boxplots and mean per models |
|
330 |
library(gdata) #Nesssary to use cbindX |
|
331 |
|
|
332 |
### Start script |
|
333 |
y_var_name<-unique(tb_diagnostic$var_interp) #extract the name of interpolated variable: dailyTmax, dailyTmin |
|
334 |
|
|
335 |
mod_names<-sort(unique(tb_diagnostic$pred_mod)) #models that have accuracy metrics |
|
336 |
t<-melt(tb_diagnostic, |
|
337 |
#measure=mod_var, |
|
338 |
id=c("date","pred_mod","prop"), |
|
339 |
na.rm=F) |
|
340 |
t$value<-as.numeric(t$value) #problem with char!!! |
|
341 |
avg_tb<-cast(t,pred_mod~variable,mean) |
|
342 |
avg_tb$var_interp<-rep(y_var_name,times=nrow(avg_tb)) |
|
343 |
median_tb<-cast(t,pred_mod~variable,median) |
|
344 |
|
|
345 |
#avg_tb<-cast(t,pred_mod~variable,mean) |
|
346 |
tb<-tb_diagnostic |
|
347 |
|
|
348 |
#mod_names<-sort(unique(tb$pred_mod)) #kept for clarity |
|
349 |
tb_mod_list<-lapply(mod_names, function(k) subset(tb, pred_mod==k)) #this creates a list of 5 based on models names |
|
350 |
names(tb_mod_list)<-mod_names |
|
351 |
#mod_metrics<-do.call(cbind,tb_mod_list) |
|
352 |
#debug here |
|
353 |
if(length(tb_mod_list)>1){ |
|
354 |
mod_metrics<-do.call(cbindX,tb_mod_list) #column bind the list?? |
|
355 |
}else{ |
|
356 |
mod_metrics<-tb_mod_list[[1]] |
|
357 |
} |
|
358 |
|
|
359 |
test_names<-lapply(1:length(mod_names),function(k) paste(names(tb_mod_list[[1]]),mod_names[k],sep="_")) |
|
360 |
#test names are used when plotting the boxplot for the different models |
|
361 |
names(mod_metrics)<-unlist(test_names) |
|
362 |
rows_total<-lapply(tb_mod_list,nrow) |
|
363 |
avg_tb$n<-rows_total #total number of predictions on which the mean is based |
|
364 |
median_tb$n<-rows_total |
|
365 |
summary_obj<-list(avg_tb,median_tb) |
|
366 |
names(summary_obj)<-c("avg","median") |
|
367 |
return(summary_obj) |
|
368 |
} |
|
369 |
|
|
370 |
#boxplot_month_from_tb(tb_diagnostic,metric_names,out_prefix,out_path) |
|
371 |
## Function to display metrics by months/seasons |
|
372 |
calculate_summary_from_tb_month_diagnostic <-function(tb_diagnostic,metric_names){ #,out_prefix,out_path){ |
|
373 |
|
|
374 |
#Generate boxplot per month for models and accuracy metrics |
|
375 |
#Input parameters: |
|
376 |
#1) df: data frame containing accurayc metrics (RMSE etc.) per day) |
|
377 |
#2) metric_names: metrics used for validation |
|
378 |
#3) out_prefix |
|
379 |
# |
|
380 |
|
|
381 |
################# |
|
382 |
## BEGIN |
|
383 |
y_var_name<-unique(tb_diagnostic$var_interp) #extract the name of interpolated variable: dailyTmax, dailyTmin |
|
384 |
date_f<-strptime(tb_diagnostic$date, "%Y%m%d") # interpolation date being processed |
|
385 |
tb_diagnostic$month<-strftime(date_f, "%m") # current month of the date being processed |
|
386 |
mod_names<-sort(unique(tb_diagnostic$pred_mod)) #models that have accuracy metrics |
|
387 |
tb_mod_list<-lapply(mod_names, function(k) subset(tb_diagnostic, pred_mod==k)) #this creates a list of 5 based on models names |
|
388 |
names(tb_mod_list)<-mod_names |
|
389 |
t<-melt(tb_diagnostic, |
|
390 |
#measure=mod_var, |
|
391 |
id=c("date","pred_mod","prop","month"), |
|
392 |
na.rm=F) |
|
393 |
t$value<-as.numeric(t$value) #problem with char!!! |
|
394 |
tb_mod_m_avg <-cast(t,pred_mod+month~variable,mean) #monthly mean for every model |
|
395 |
tb_mod_m_avg$var_interp<-rep(y_var_name,times=nrow(tb_mod_m_avg)) |
|
396 |
|
|
397 |
tb_mod_m_sd <-cast(t,pred_mod+month~variable,sd) #monthly sd for every model |
|
398 |
tb_mod_m_list <-lapply(mod_names, function(k) subset(tb_mod_m_avg, pred_mod==k)) #this creates a list of 5 based on models names |
|
399 |
|
|
400 |
summary_month_obj <-c(tb_mod_m_list,tb_mod_m_avg,tb_mod_m_sd) |
|
401 |
names(summary_month_obj)<-c("tb_list","metric_month_avg","metric_month_sd") |
|
402 |
return(summary_month_obj) |
|
403 |
} |
|
404 |
|
|
405 |
create_raster_prediction_obj<- function(in_dir_list,interpolation_method, y_var_name,out_prefix,out_path_list=NULL){ |
|
406 |
|
|
407 |
|
|
408 |
#gather all necessary info: |
|
409 |
lf_validation_mod_month_obj <- lapply(in_dir_list,FUN=function(x){list.files(path=x,pattern="gam_CAI_validation_mod_month_obj_dailyTmax.*.RData",full.names=T)}) |
|
410 |
lf_validation_mod_obj <- lapply(in_dir_list,FUN=function(x){list.files(path=x,pattern="gam_CAI_validation_mod_obj_dailyTmax.*.RData",full.names=T)}) |
|
411 |
lf_clim_method_mod_obj <- lapply(in_dir_list,FUN=function(x){mixedsort(list.files(path=x,pattern="clim_obj_CAI_month_.*._TMAX_0_1_.*.RData",full.names=T))}) |
|
412 |
lf_method_mod_obj <- lapply(in_dir_list,FUN=function(x){list.files(path=x,pattern="method_mod_obj_gam_CAI_dailyTmax.*.RData",full.names=T)}) |
|
413 |
|
|
414 |
tb_month_diagnostic_v_list <- mclapply(lf_validation_mod_month_obj,FUN=function(x){try( x<- load_obj(x)); try(extract_from_list_obj(x,"metrics_v"))},mc.preschedule=FALSE,mc.cores = 6) |
|
415 |
tb_month_diagnostic_s_list <- mclapply(lf_validation_mod_month_obj,FUN=function(x){try( x<- load_obj(x)); try(extract_from_list_obj(x,"metrics_s"))},mc.preschedule=FALSE,mc.cores = 6) |
|
416 |
tb_diagnostic_v_list <- mclapply(lf_validation_mod_obj,FUN=function(x){try( x<- load_obj(x)); try(extract_from_list_obj(x,"metrics_v"))},mc.preschedule=FALSE,mc.cores = 6) |
|
417 |
tb_diagnostic_s_list <- mclapply(lf_validation_mod_obj,FUN=function(x){try( x<- load_obj(x)); try(extract_from_list_obj(x,"metrics_s"))},mc.preschedule=FALSE,mc.cores = 6) |
|
418 |
|
|
419 |
#rownames(tb_month_diagnostic_v)<-NULL #remove row names |
|
420 |
#tb_month_diagnostic_v$method_interp <- interpolation_method |
|
421 |
|
|
422 |
#Call functions to create plots of metrics for validation dataset |
|
423 |
metric_names<-c("rmse","mae","me","r","m50") |
|
424 |
summary_metrics_v_list <- lapply(tb_diagnostic_v_list,FUN=function(x){try(calculate_summary_from_tb_diagnostic(x,metric_names))}) |
|
425 |
summary_month_metrics_v_list <- lapply(tb_diagnostic_v_list,FUN=function(x){try(calculate_summary_from_tb_month_diagnostic(x,metric_names))}) |
|
426 |
#list_summalist_summary_metrics_vry_month_metrics_v <- calculate_summary_from_tb_month_diagnostic(list_tb_diagnostic_v[[1]],metric_names) |
|
427 |
|
|
428 |
#if (interpolation_method %in% c("gam_CAI","kriging_CAI","gwr_CAI","gam_fusion","kriging_fusion","gwr_fusion")){ |
|
429 |
lf_raster_obj <- vector("list",length=length(in_dir_list)) |
|
430 |
for (i in 1:length(in_dir_list)){ |
|
431 |
|
|
432 |
clim_method_mod_obj <- try(lapply(lf_clim_method_mod_obj[[i]],FUN=try(load_obj))) |
|
433 |
method_mod_obj <- try(load_obj(lf_method_mod_obj[[i]])) |
|
434 |
validation_mod_month_obj <- try(load_obj(lf_validation_mod_month_obj[[i]])) |
|
435 |
validation_mod_obj <- try(load_obj(lf_validation_mod_obj[[i]])) |
|
436 |
|
|
437 |
tb_month_diagnostic_v <- try(tb_month_diagnostic_v_list[[i]]) |
|
438 |
tb_month_diagnostic_s <- try(tb_month_diagnostic_s_list[[i]]) |
|
439 |
tb_diagnostic_v <- try(tb_diagnostic_v_list[[i]]) |
|
440 |
tb_diagnostic_s <- try(tb_diagnostic_s_list[[i]]) |
|
441 |
|
|
442 |
summary_metrics_v <- summary_metrics_v_list[[i]] |
|
443 |
summary_month_metrics_v <- summary_month_metrics_v_list[[i]] |
|
444 |
|
|
445 |
raster_prediction_obj <- list(clim_method_mod_obj,method_mod_obj,validation_mod_obj,validation_mod_month_obj, tb_diagnostic_v, |
|
446 |
tb_diagnostic_s,tb_month_diagnostic_v,tb_month_diagnostic_s,summary_metrics_v,summary_month_metrics_v) |
|
447 |
names(raster_prediction_obj) <-c ("clim_method_mod_obj","method_mod_obj","validation_mod_obj","validation_mod_month_obj","tb_diagnostic_v", |
|
448 |
"tb_diagnostic_s","tb_month_diagnostic_v","tb_month_diagnostic_s","summary_metrics_v","summary_month_metrics_v") |
|
449 |
if(is.null(out_path_list)){ |
|
450 |
out_path <- in_dir_list[[i]] |
|
451 |
} |
|
452 |
if(!is.null(out_path_list)){ |
|
453 |
out_path <- out_path_list[[i]] |
|
454 |
} |
|
455 |
lf_raster_obj[[i]] <- file.path(out_path,paste("raster_prediction_obj_",interpolation_method,"_", y_var_name,out_prefix_str[i],".RData",sep="")) |
|
456 |
|
|
457 |
save(raster_prediction_obj,file= file.path(out_path,paste("raster_prediction_obj_",interpolation_method,"_", y_var_name,out_prefix_str[i],".RData",sep=""))) |
|
458 |
} |
|
459 |
return(lf_raster_obj) |
|
460 |
} |
|
461 |
|
|
63 |
source(function_assessment_part1) |
|
462 | 64 |
############################## |
463 | 65 |
#### Parameters and constants |
464 | 66 |
|
465 | 67 |
#reg1 (North Am), reg2(Europe),reg3(Asia), reg4 (South Am), reg5 (Africa), reg6 (Australia-Asia) |
466 | 68 |
#master directory containing the definition of tile size and tiles predicted |
467 |
in_dir1 <- "/nobackupp6/aguzman4/climateLayers/output1500x4500_km/"
|
|
69 |
in_dir1 <- "/nobackupp4/aguzman4/climateLayers/output1000x3000_km/"
|
|
468 | 70 |
|
469 |
region_names <- c("reg1") #selected region names |
|
71 |
region_names <- c("reg1","reg6") #selected region names
|
|
470 | 72 |
|
471 | 73 |
in_dir_list <- list.dirs(path=in_dir1,recursive=FALSE) #get the list regions processed for this run |
472 | 74 |
#basename(in_dir_list) |
... | ... | |
495 | 97 |
|
496 | 98 |
y_var_name <- "dailyTmax" |
497 | 99 |
interpolation_method <- c("gam_CAI") |
498 |
out_prefix<-"run10_global_analyses_01282015"
|
|
100 |
out_prefix<-"run10_global_analyses_01202015"
|
|
499 | 101 |
|
500 | 102 |
#out_dir<-"/data/project/layers/commons/NEX_data/" #On NCEAS Atlas |
501 | 103 |
out_dir <- "/nobackup/bparmen1/" #on NEX |
... | ... | |
851 | 453 |
# create_dir_fun(file.path(output_atlas_dir,as.character(df_tile_processed$tile_coord[i]),"/shapefiles"),out_suffix=NULL) |
852 | 454 |
#} |
853 | 455 |
|
854 |
#Copy summary textfiles back to atlas |
|
456 |
#Copy summary textfiles and mosaic back to atlas
|
|
855 | 457 |
|
856 | 458 |
Atlas_dir <- file.path("/data/project/layers/commons/NEX_data/",basename(out_dir))#,"output/subset/shapefiles") |
857 | 459 |
Atlas_hostname <- "parmentier@atlas.nceas.ucsb.edu" |
Also available in: Unified diff
splitting code for script part global assessment of accuracy, removing functions