Mercurial > repos > siwaa > redelac_stics_a
view redelacComputeAclim.R @ 0:80842c5ecb58 draft default tip
"planemo upload for repository https://forgemia.inra.fr/redelac/redelac-toolbox/-/tree/68f4e9db390070700af804f77468145abfc26bc0/tools/REDELACcomputeAclim commit 68f4e9db390070700af804f77468145abfc26bc0-dirty"
| author | siwaa |
|---|---|
| date | Tue, 24 Feb 2026 08:53:06 +0000 |
| parents | |
| children |
line wrap: on
line source
library(data.table) #version 1.14.2 library(dplyr) #version 1.0.10 library(ggplot2) library(rlang) library(stringr) sessionInfo() args = commandArgs(trailingOnly = TRUE) climatPath = args[1] horizons = args[2] rdsOut = args[3] csvOut = args[4] png1Out = args[5] png2Out = args[6] liste_mailles_SAFRAN <- list.dirs(climatPath,full.names = F,recursive = F) #agregation des fichiers climatiques dans un unique fichier fichier_climat_tot<- NULL for(maille_DRIAS in liste_mailles_SAFRAN){ setwd(paste0(climatPath,"/",maille_DRIAS)) filenames <- list.files() fichier_climat_maille_tot <- NULL f=1 for (filename in filenames) { file <- as.data.frame(fread(filename,sep="\t", dec=".", header=FALSE)) if (f==1) {fichier_climat_maille_tot <-file} else {fichier_climat_maille_tot <- bind_rows(fichier_climat_maille_tot,file)} f=f+1 } fichier_climat_tot<- bind_rows(fichier_climat_tot,fichier_climat_maille_tot) setwd("../..") } #rm(file,fichier_climat_maille_tot) #entete des colonnes # column 1: name of weather file # column 2: year # column 3: month # column 4: day in month # column 5: Julian day # column 6: minimum temperature (degrees C) # column 7: maximum temperature (degrees C) # column 8: global radiation (MJ m-2 j-1) # column 9: Penman PET (mm j-1) # column 10: rainfall (mm j-1) # column 11: wind (m s-1) # column 12: vapour pressure (mbars) # column 13: CO2 content(ppm) names(fichier_climat_tot) names(fichier_climat_tot)<- c("maille_DRIAS","annee","mois","jcal","jjulien","TN","TX","RG","ETP","P","V","PV","CO2") # sanityzing trimedHorizon <-str_trim(horizons) purgedHorizon <-str_sub(trimedHorizon, 1, nchar(trimedHorizon)-1) listHory <- lapply(unlist(strsplit(purgedHorizon, ",")), function(x) {tmpdata <- str_split(str_trim(x), " ")[[1]]; paste0("(annee<", tmpdata[3], ")&(annee>",tmpdata[2], ")~\"", tmpdata[1], "\"" )}) listHory paste(listHory, collapse = ",", sep = "") horizonsFilter <- parse_expr(paste(listHory, collapse = ",", sep = "")) listHory fichier_climat_tot <- fichier_climat_tot %>% mutate(horizon=case_when(!!horizonsFilter)) #fichier_climat_tot <- fichier_climat_tot %>% # mutate(horizon=case_when((annee>1990)&(annee<2025)~"ref")) #ecriture du fichier saveRDS(fichier_climat_tot, rdsOut) fichier_aclim_an <- fichier_climat_tot %>% select(maille_DRIAS,horizon,annee,V)%>% group_by(maille_DRIAS,horizon,annee)%>% summarise(Vmed = median(V,na.rm=T))%>% mutate(aclim=-6.2*log(Vmed)+17.5) fichier_aclim_hor <- fichier_aclim_an %>% select(maille_DRIAS,horizon,annee,aclim)%>% group_by(maille_DRIAS,horizon)%>% summarise(aclim = median(aclim,na.rm=T))%>% filter(is.na(horizon)==F) #ecriture des valeurs de aclim par maille SAFRAN et horizon write.table(fichier_aclim_hor,csvOut,sep=";",dec=",",row.names = F) #tracage des valeurs calculees de aclim # ggplot()+geom_boxplot(data=fichier_aclim_an,aes(y=aclim)) # ggplot()+geom_boxplot(data=fichier_aclim_an,aes(y=aclim,x=horizon)) # ggplot()+geom_boxplot(data=fichier_aclim_an,aes(y=aclim,x=as.factor(maille_DRIAS))) ggplot()+geom_line(data=fichier_aclim_an ,aes(x=annee,y=aclim,group=maille_DRIAS,color=as.factor(maille_DRIAS))) ggsave(png1Out) ggplot()+ geom_boxplot(data=fichier_aclim_an %>% filter(is.na(horizon)==F),aes(x=as.factor(maille_DRIAS),y=aclim,fill=horizon))+ xlab("Maille DRIAS")+ theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1)) ggsave(png2Out)
