# -------- species distribution modellin all species based on SSDM -------- # ------ load all the required libraries ---------------------------------- libs <- c('tidyverse','lubridate','purrr','here','SSDM','raster','parallel');lapply(libs, library,character.only=TRUE) # ---------- load environmetal variables --------------------------------- all_env <- load_var(path = 'spatial/input_raster_sep/',Norm = FALSE,format = '.grd') all_env_s <- raster::stack('spatial/input_raster/env_all.grd') all_env_w <- raster::stack('spatial/input_raster_winter/env_winter.grd') # ------ check for multicollinearity among predictors -------------------- rast_vals_s <- raster::values(all_env_s)%>%as_tibble() rast_vals_w <- raster::values(all_env_w)%>%as_tibble() rast_vif_s<-car::vif(lm(bathy~chl_s+dist+sal_s+slope+sst_s+uo_s+vo_s,data=rast_vals_s)) rast_vif_w<-car::vif(lm(bathy~chl_w+dist+sal_w+slope+sst_w+uo_w+vo_w,data=rast_vals_w)) # --------- load and prepare all data ------------------------------------ all_data <- read_csv('data/tidy/processed_combined_all_species_for_ssdm.csv') all_data_noThin <- load_occ(path = 'data/tidy/',file = 'processed_combined_all_species_for_ssdm.csv', Env = all_env_s,Xcol = 'Longitude',Ycol = 'Latitude', Spcol = 'species_season',GeoRes = FALSE,sep=',')%>% mutate_if(is.factor,as.character) all_data_Thin <- load_occ(path = 'data/tidy/',file = "processed_combined_all_species_for_ssdm.csv", Env = all_env_s,Xcol = 'Longitude',Ycol = 'Latitude', Spcol = 'species_season',GeoRes = TRUE,sep=',')%>% mutate_if(is.factor,as.character) # --------------- prepare data for modelling ------------------------------ Species_Season <- all_data_Thin%>%dplyr::select(species_season)%>%distinct()%>%pull(species_season) # ----- names of SDM that can be considered ---------------------------- models<-c('CTA', 'SVM','GLM','GAM','MARS','GBM','RF','ANN','MAXENT') models_sel <- c('CTA', 'SVM','GLM','MARS','GBM','RF','ANN') # ----------- start species distribution modelling ----------------------- system.time(for(i in 1:length(Species_Season)){ name_sdm <- Species_Season[i] species = Species_Season[i] species_occurence <- all_data_noThin%>%filter(species_season==Species_Season[i])%>%as.data.frame() # ---- species and season to be considered for modeling ----------------------------- cat("Species distribution modelling :", name_sdm, "\n\n") # --- try-catch block just in case ---------------------------------------- if(str_detect(Species_Season[i],pattern = 'Summer')){ enm <- try(ensemble_modelling(algorithms = models_sel, species_occurence, Env = all_env_s, Xcol='Longitude', Ycol='Latitude', name = name_sdm, save = TRUE, path = here::here("analysis/out_ssdm_no_thin/"), trees=1000,ensemble.metric = 'AUC', cv = 'holdout',cv.param = c(0.7,3), ensemble.thresh = 0.7, final.fit.data = "holdout", SDM.projections = TRUE,gbm.args = list(n.trees=1500), tmp = FALSE, verbose = TRUE),silent = TRUE) }else if(str_detect(Species_Season[i],pattern = 'Winter')){ enm <- try(ensemble_modelling(algorithms = models_sel, species_occurence, Env = all_env_w, Xcol='Longitude', Ycol='Latitude', name = name_sdm, save = TRUE, path = here::here("analysis/out_ssdm_no_thin/"), trees=1000,ensemble.metric = 'AUC', cv = 'holdout',cv.param = c(0.7,3), ensemble.thresh = 0.7, final.fit.data = "holdout", SDM.projections = TRUE,gbm.args = list(n.trees=1500), tmp = FALSE, verbose = TRUE),silent = TRUE) } if (inherits(enm, "try-error")) { enm <- NULL } else { if (!is.null(enm)) { assign(name_sdm,enm) save(list=name_sdm,file = here::here("analysis/out_ssdm_no_thin/",paste(species,'.RData',sep = ''))) } } rm(enm) }) # ----------- ssdm after thing -------------------------------------------- Sys.sleep(10) system.time(for(i in 1:length(Species_Season)){ name_sdm <- Species_Season[i] species = Species_Season[i] species_occurence <- all_data_Thin%>%filter(species_season==Species_Season[i])%>%as.data.frame() # ---- species and season to be considered for modeling ----------------------------- cat("Species distribution modelling :", name_sdm, "\n\n") # --- try-catch block just in case ---------------------------------------- if(str_detect(Species_Season[i],pattern = 'Summer')){ enm <- try(ensemble_modelling(algorithms = models_sel, species_occurence, Env = all_env_s, Xcol='Longitude', Ycol='Latitude', name = name_sdm, save = TRUE, path = here::here("analysis/out_ssdm_thin/"), trees=1000,ensemble.metric = 'AUC', cv = 'holdout',cv.param = c(0.7,3), ensemble.thresh = 0.7, final.fit.data = 'holdout', SDM.projections = TRUE,gbm.args = list(n.trees=1500), tmp = FALSE, verbose = TRUE),silent = TRUE) }else if(str_detect(Species_Season[i],pattern = 'Winter')){ enm <- try(ensemble_modelling(algorithms = models_sel, species_occurence, Env = all_env_w, Xcol='Longitude', Ycol='Latitude', name = name_sdm, save = TRUE, path = here::here("analysis/out_ssdm_thin/"), trees=1000,ensemble.metric = 'AUC', cv = 'holdout',cv.param = c(0.7,3), ensemble.thresh = 0.7, final.fit.data = 'holdout', SDM.projections = TRUE,gbm.args = list(n.trees=1500), tmp = FALSE, verbose = TRUE),silent = TRUE) } if (inherits(enm, "try-error")) { enm <- NULL } else { if (!is.null(enm)) { assign(name_sdm,enm) save(list=name_sdm,file = here::here("analysis/out_ssdm_thin/",paste(species,'.RData',sep = ''))) } } rm(enm) })