From 040d77ddf11d7ea9f80ae1f1c3d8047ae7631ea2 Mon Sep 17 00:00:00 2001
From: "louis.heraut" <louis.heraut@inrae.fr>
Date: Fri, 11 Mar 2022 23:57:55 +0100
Subject: [PATCH] read write fst

---
 Rcode/advanced_settings.R         | 10 ++--
 Rcode/processing/analyse.R        | 54 +++++++++++++--------
 Rcode/processing/extract.R        |  3 --
 Rcode/processing/format.R         | 58 ++++++++++------------
 Rcode/processing/read_write.R     | 10 ++--
 Rcode/processing/script_analyse.R | 80 ++++++++++++++++++++-----------
 main.R                            | 27 ++++++++---
 7 files changed, 145 insertions(+), 97 deletions(-)

diff --git a/Rcode/advanced_settings.R b/Rcode/advanced_settings.R
index 8e33d91..e77fe01 100644
--- a/Rcode/advanced_settings.R
+++ b/Rcode/advanced_settings.R
@@ -154,9 +154,13 @@ yearNA_lim = 10
 sampleSpan = c('05-01', '11-30')
 
 ### 3.4. Saving option _______________________________________________
-data_saving = TRUE
-# meta_saving = TRUE
-fast_format = FALSE
+saving = c(
+    'data'
+    'meta',
+    'analyse'
+)
+
+fast_format = TRUE
 
 ### 3.5. Statistical option __________________________________________
 # The risk of the Mann-Kendall trend detection test
diff --git a/Rcode/processing/analyse.R b/Rcode/processing/analyse.R
index ef2291c..0eb1025 100644
--- a/Rcode/processing/analyse.R
+++ b/Rcode/processing/analyse.R
@@ -102,12 +102,12 @@ get_intercept = function (df_Xtrend, df_Xlist, unit2day=365.25) {
 ### 1.1. XA __________________________________________________________
 # Realise the trend analysis of the average annual flow (QA)
 # hydrological variable
-get_XAtrend = function (df_data, df_meta, period, per.start, alpha, dayLac_lim, yearNA_lim, funct=mean, df_flag=NULL, df_mod=tibble(), ...) {
+get_XAtrend = function (df_data, df_meta, period, perStart, alpha, dayLac_lim, yearNA_lim, funct=mean, df_flag=NULL, df_mod=tibble(), ...) {
 
     print(paste0('Computes XA trend of ',
                  as.character(substitute(funct)),
                  ' function with hydrological month start ',
-                 substr(per.start, 1, 2)))
+                 substr(perStart, 1, 2)))
     
     if (!is.null(df_flag)) {
         # Local corrections if needed
@@ -122,7 +122,7 @@ get_XAtrend = function (df_data, df_meta, period, per.start, alpha, dayLac_lim,
     res = missing_data(df_data, df_meta,
                        dayLac_lim=dayLac_lim,
                        yearNA_lim=yearNA_lim,
-                       yearStart=per.start,
+                       perStart=perStart,
                        df_mod=df_mod)
     df_data = res$data
     df_mod = res$mod
@@ -146,7 +146,7 @@ get_XAtrend = function (df_data, df_meta, period, per.start, alpha, dayLac_lim,
                               funct=funct,
                               timestep='year',
                               period=per,
-                              per.start=per.start,
+                              per.start=perStart,
                               pos.datetime=1,
                               ...)
         
@@ -180,10 +180,10 @@ get_XAtrend = function (df_data, df_meta, period, per.start, alpha, dayLac_lim,
 ### 1.2. QMNA ________________________________________________________
 # Realise the trend analysis of the monthly minimum flow in the
 # year (QMNA) hydrological variable
-get_QMNAtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
+get_QMNAtrend = function (df_data, df_meta, period, perStart, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
 
     print(paste0('Computes QMNA trend with hydrological month start ',
-                 substr(per.start, 1, 2)))
+                 substr(perStart, 1, 2)))
     
     # Local corrections if needed
     res = flag_data(df_data, df_meta,
@@ -196,6 +196,7 @@ get_QMNAtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
     res = missing_data(df_data, df_meta,
                        dayLac_lim=dayLac_lim,
                        yearNA_lim=yearNA_lim,
+                       perStart=perStart,
                        df_mod=df_mod)
     df_data = res$data
     df_mod = res$mod
@@ -214,9 +215,10 @@ get_QMNAtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
     Imax = 0
     # Blank tibble for data to return
     df_QMNAtrendB = tibble()
-
+    
     # For all periods
     for (per in period) {
+        
         # Prepare the data to fit the entry of extract.Var
         df_QMNAlist = prepare(df_data, colnamegroup=c('code'))
         # Compute the montly mean over the data
@@ -235,7 +237,7 @@ get_QMNAtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
         df_QMNAEx = extract.Var(data.station=df_QMNAlist,
                                 funct=min,
                                 period=per,
-                                per.start=per.start,
+                                per.start=perStart,
                                 timestep='year',
                                 pos.datetime=1,
                                 na.rm=TRUE)
@@ -302,34 +304,43 @@ rollmean_code = function (df_data, Code, nroll=10, df_mod=NULL) {
 
 # Realises the trend analysis of the minimum 10 day average flow
 # over the year (VCN10) hydrological variable
-get_VCN10trend = function (df_data, df_meta, period, per.start, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
+get_VCN10trend = function (df_data, df_meta, period, perStart, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
 
     print(paste0('Computes VCN10 trend with hydrological month start ',
-                 substr(per.start, 1, 2)))
+                 substr(perStart, 1, 2)))
     
     # Get all different stations code
     Code = levels(factor(df_meta$code))
 
+    print('flag')
+    
     # Local corrections if needed
     res = flag_data(df_data, df_meta,
                     df_flag=df_flag,
                     df_mod=df_mod)
     df_data = res$data
     df_mod = res$mod
+
+    print('roll')
     
     # Computes the rolling average by 10 days over the data
     res = rollmean_code(df_data, Code, 10, df_mod=df_mod)
     df_data_roll = res$data
     df_mod = res$mod
 
+    print('miss')
+
     # Removes incomplete data from time series
     res = missing_data(df_data_roll, df_meta,
                        dayLac_lim=dayLac_lim,
                        yearNA_lim=yearNA_lim,
+                       perStart=perStart,
                        df_mod=df_mod)
     df_data_roll = res$data
     df_mod = res$mod
 
+    print('sample')
+    
     # Samples the data
     res = sampling_data(df_data_roll, df_meta,
                         sampleSpan=sampleSpan,
@@ -337,6 +348,8 @@ get_VCN10trend = function (df_data, df_meta, period, per.start, alpha, sampleSpa
     df_data_roll = res$data
     df_mod = res$mod
 
+    print('ok')
+    
     # Make sure to convert the period to a list
     period = as.list(period)
     # Set the max interval period as the minimal possible
@@ -352,7 +365,7 @@ get_VCN10trend = function (df_data, df_meta, period, per.start, alpha, sampleSpa
         df_VCN10Ex = extract.Var(data.station=df_VCN10list,
                                  funct=min,
                                  period=per,
-                                 per.start=per.start,
+                                 per.start=perStart,
                                  timestep='year',
                                  pos.datetime=1,
                                  na.rm=TRUE)
@@ -421,10 +434,10 @@ which_underfirst = function (L, UpLim, select_longest=TRUE) {
     return (id)
 }
 
-get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, thresold_type='VCN10', select_longest=TRUE, df_mod=tibble()) {
+get_tDEBtrend = function (df_data, df_meta, period, perStart, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, thresold_type='VCN10', select_longest=TRUE, df_mod=tibble()) {
 
     print(paste0('Computes tDEB trend with hydrological month start ',
-                 substr(per.start, 1, 2)))
+                 substr(perStart, 1, 2)))
     
     # Get all different stations code
     Code = levels(factor(df_meta$code))
@@ -447,7 +460,8 @@ get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
     df_data = missing_data(df_data,
                            df_meta=df_meta,
                            dayLac_lim=dayLac_lim,
-                           yearNA_lim=yearNA_lim)
+                           yearNA_lim=yearNA_lim,
+                           perStart=perStart)
     
     # Samples the data
     df_data = sampling_data(df_data,
@@ -459,6 +473,7 @@ get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
                        df_meta=df_meta,
                        dayLac_lim=dayLac_lim,
                        yearNA_lim=yearNA_lim,
+                       perStart=perStart,
                        df_mod=df_mod)
     df_data_roll = res$data
     df_mod = res$mod
@@ -496,7 +511,7 @@ get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
                               funct=min,
                               timestep='year',
                               period=per,
-                              per.start=per.start,
+                              per.start=perStart,
                               pos.datetime=1,
                               na.rm=TRUE)
         
@@ -533,7 +548,7 @@ get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
             df_tDEBEx_code = extract.Var(data.station=df_tDEBlist_code,
                                         funct=which_underfirst,
                                         period=per,
-                                        per.start=per.start,
+                                        per.start=perStart,
                                         timestep='year',
                                         pos.datetime=1,
                                         UpLim=QT_code,
@@ -589,10 +604,10 @@ get_tDEBtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
 ### 1.5. tCEN date ___________________________________________________
 # Realises the trend analysis of the date of the minimum 10 day
 # average flow over the year (VCN10) hydrological variable
-get_tCENtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
+get_tCENtrend = function (df_data, df_meta, period, perStart, alpha, sampleSpan, dayLac_lim, yearNA_lim, df_flag, df_mod=tibble()) {
 
     print(paste0('Computes tCEN trend with hydrological month start ',
-                 substr(per.start, 1, 2)))
+                 substr(perStart, 1, 2)))
     
     # Get all different stations code
     Code = levels(factor(df_meta$code))
@@ -615,6 +630,7 @@ get_tCENtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
     res = missing_data(df_data_roll, df_meta,
                        dayLac_lim=dayLac_lim,
                        yearNA_lim=yearNA_lim,
+                       perStart=perStart,
                        df_mod=df_mod)
     df_data_roll = res$data
     df_mod = res$mod
@@ -641,7 +657,7 @@ get_tCENtrend = function (df_data, df_meta, period, per.start, alpha, sampleSpan
         df_tCENEx = extract.Var(data.station=df_tCENlist,
                                funct=which.min,
                                period=per,
-                               per.start=per.start,
+                               per.start=perStart,
                                timestep='year',
                                pos.datetime=1)
 
diff --git a/Rcode/processing/extract.R b/Rcode/processing/extract.R
index 6953e74..d6e51b0 100644
--- a/Rcode/processing/extract.R
+++ b/Rcode/processing/extract.R
@@ -592,9 +592,6 @@ extract_data = function (computer_data_path, filedir, filename,
         df_data = tibble(Date=as.Date(as.character(df_data$Date),
                                       format="%Y%m%d"),
                          Value=df_data$Qls * 1E-3,
-                         Qmmj=df_data$Qmmj,
-                         val_H=as.character(df_data$val_H),
-                         val_I=as.character(df_data$val_I),
                          code=code)
         return (df_data)
 
diff --git a/Rcode/processing/format.R b/Rcode/processing/format.R
index 42c3cb5..ba27251 100644
--- a/Rcode/processing/format.R
+++ b/Rcode/processing/format.R
@@ -128,7 +128,7 @@ flag_data = function (df_data, df_meta, df_flag, Code=NULL, df_mod=NULL) {
 }
 
 ### 1.3. Manages missing data ________________________________________
-missing_data = function (df_data, df_meta, dayLac_lim=3, yearNA_lim=10, yearStart='01-01', Code=NULL, df_mod=NULL) {
+missing_data = function (df_data, df_meta, dayLac_lim=3, yearNA_lim=10, perStart='01-01', Code=NULL, df_mod=NULL) {
 
     if (is.null(Code)) {
         # Get all different stations code
@@ -137,7 +137,7 @@ missing_data = function (df_data, df_meta, dayLac_lim=3, yearNA_lim=10, yearStar
     } else {
         nCode = length(Code)
     }
- 
+
     for (code in Code) {        
         # Extracts the data corresponding to the code
         df_data_code = df_data[df_data$code == code,]
@@ -178,18 +178,19 @@ missing_data = function (df_data, df_meta, dayLac_lim=3, yearNA_lim=10, yearStar
                 }
             }
         }
-                
-        DateMD = substr(df_data_code$Date, 6, 10)
-        idyearStart = which(DateMD == yearStart)
-        if (DateMD[1] != yearStart) {
-            idyearStart = c(1, idyearStart)
+
+        DateMD = format(df_data_code$Date, "%m-%d")
+        idperStart = which(DateMD == perStart)
+
+        if (DateMD[1] != perStart) {
+            idperStart = c(1, idperStart)
         }
-        NidyearStart = length(idyearStart)
-        
-        for (i in 1:NidyearStart) {
-            Start = df_data_code$Date[idyearStart[i]]
-            if (i < NidyearStart) {
-                End = df_data_code$Date[idyearStart[i+1] - 1]
+        NidperStart = length(idperStart)
+
+        for (i in 1:NidperStart) {
+            Start = df_data_code$Date[idperStart[i]]
+            if (i < NidperStart) {
+                End = df_data_code$Date[idperStart[i+1] - 1]
             } else {
                 End = df_data_code$Date[length(df_data_code$Date)]
             }
@@ -198,9 +199,9 @@ missing_data = function (df_data, df_meta, dayLac_lim=3, yearNA_lim=10, yearStar
             df_data_code_year = df_data_code[OkYear,]
 
             StartReal = as.Date(paste(substr(Start, 1, 4),
-                                      yearStart, sep='-'))
+                                      perStart, sep='-'))
             EndReal = as.Date(paste(as.numeric(substr(Start, 1, 4)) + 1,
-                                    yearStart, sep='-'))
+                                    perStart, sep='-'))
             
             nbDate = as.numeric(difftime(EndReal, StartReal,
                                          units="days"))
@@ -270,18 +271,14 @@ sampling_data = function (df_data, df_meta, sampleSpan=c('05-01', '11-30'), Code
     # 1972 is leap year reference is case of leap year comparison
     sampleStart = as.Date(paste('1972', sampleSpan[1], sep='-'))
     sampleEnd = as.Date(paste('1972', sampleSpan[2], sep='-'))
-    
-    for (code in Code) {        
-        # Extracts the data corresponding to the code
-        df_data_code = df_data[df_data$code == code,]
-        
-        DateMD = substr(df_data_code$Date, 6, 10)
-        Date = paste('1972', DateMD, sep='-')
-        
-        df_data_code$Value[Date < sampleStart | Date > sampleEnd] = NA
 
+    DateMD = format(df_data$Date, "%m-%d")
+    Date = paste('1972', DateMD, sep='-')
+    
+    df_data$Value[Date < sampleStart | Date > sampleEnd] = NA
 
-        if (!is.null(df_mod)) {
+    if (!is.null(df_mod)) {
+        for (code in Code) {
             df_mod = add_mod(df_mod, code,
                              type='Seasonal sampling ',
                              fun_name='NA assignment',
@@ -289,13 +286,8 @@ sampling_data = function (df_data, df_meta, sampleSpan=c('05-01', '11-30'), Code
                                            ' and after ', sampleEnd,
                                            sep=''))
         }
-        
-        # Leap year verification
-        # print(df_data_code[df_data_code$Date > as.Date("1992-02-25"),])
-
-        df_data[df_data$code == code,] = df_data_code
     }
-
+  
     if (!is.null(df_mod)) {
         res = list(data=df_data, mod=df_mod)
         return (res)
@@ -306,8 +298,6 @@ sampling_data = function (df_data, df_meta, sampleSpan=c('05-01', '11-30'), Code
 
 
 ## 2. DURING TREND ANALYSE ___________________________________________
-
-
 date_correction = function (df_XEx, per) {
 
     # Takes the first date as example
@@ -555,7 +545,7 @@ clean = function (df_Xtrend, df_XEx, df_Xlist) {
     df_Xtrend = relocate(df_Xtrend, intercept, .after=trend)
 
     # Creates a list of results to return
-    res = list(trend=df_Xtrend, data=df_Xlist$data, info=df_Xlist$info)
+    res = list(trend=df_Xtrend, data=df_Xlist$data)
     return (res)
 }
 
diff --git a/Rcode/processing/read_write.R b/Rcode/processing/read_write.R
index 6e0f310..859bc30 100644
--- a/Rcode/processing/read_write.R
+++ b/Rcode/processing/read_write.R
@@ -107,23 +107,25 @@ write_critique = function (df_critique, resdir, filename='critique') {
 # write_critique(df_critique, resdir)
 
 ### 1.4. Fast for R __________________________________________________
-write_dataFST = function (df_data, resdir, filedir='fst') {
+write_dataFST = function (df_data, resdir, filedir='fst',
+                          filename='data.fst') {
     
     outdir = file.path(resdir, filedir)
     if (!(file.exists(outdir))) {
         dir.create(outdir, recursive=TRUE)
     }
-    outfile = file.path(outdir, 'data.fst')
+    outfile = file.path(outdir, filename)
     fst::write_fst(df_data, outfile, compress=0)
 }
 
-write_metaFST = function (df_meta, resdir, filedir='fst') {
+write_metaFST = function (df_meta, resdir, filedir='fst',
+                          filename='meta.fst') {
     
     outdir = file.path(resdir, filedir)
     if (!(file.exists(outdir))) {
         dir.create(outdir, recursive=TRUE)
     }
-    outfile = file.path(outdir, 'meta.fst')
+    outfile = file.path(outdir, filename)
     fst::write_fst(df_meta, outfile, compress=0)
 }
 
diff --git a/Rcode/processing/script_analyse.R b/Rcode/processing/script_analyse.R
index e2871a4..1074f03 100644
--- a/Rcode/processing/script_analyse.R
+++ b/Rcode/processing/script_analyse.R
@@ -63,13 +63,13 @@ if ('station_trend_analyse' %in% to_do) {
     )
 
     if (fast_format) {
-        monthAll = matrix(rep(paste0(formatC(1:12, width=2,
+        perSTARTAll = matrix(rep(paste0(formatC(1:12, width=2,
                                              flag=0),
                                      '-01'),
                               length(varAll)),
                           nrow=length(varAll), byrow=TRUE)
     } else {
-        monthAll = matrix(c('09-01',
+        perSTARTAll = matrix(c('09-01',
                             '01-01',
                             '01-01',
                             '01-01',
@@ -87,17 +87,17 @@ if ('station_trend_analyse' %in% to_do) {
         type = c(type, typeAll[Ok])
         glose = c(glose, gloseAll[Ok])
     }
-    month = matrix(monthAll[varAll %in% to_analyse,],
+    perSTART = matrix(perSTARTAll[varAll %in% to_analyse,],
                    nrow=length(var))
-    nbMonth = ncol(month)
+    nbPerStart = ncol(perSTART)
     
 ### 1.3. Trend analyses ______________________________________________
-    for (i in 1:nbMonth) {
+    for (i in 1:nbPerStart) {
         # QA trend
         if ('QA' %in% var) {
             res = get_XAtrend(df_data, df_meta,
                               period=trend_period,
-                              per.start=month['QA' == var, i],
+                              perStart=perSTART['QA' == var, i],
                               alpha=alpha,
                               dayLac_lim=dayLac_lim,
                               yearNA_lim=yearNA_lim,
@@ -113,7 +113,7 @@ if ('station_trend_analyse' %in% to_do) {
         if ('QMNA' %in% var) {            
             res = get_QMNAtrend(df_data, df_meta,
                                 period=trend_period,
-                                per.start=month['QMNA' == var, i],
+                                perStart=perSTART['QMNA' == var, i],
                                 alpha=alpha,
                                 sampleSpan=sampleSpan,
                                 dayLac_lim=dayLac_lim,
@@ -128,7 +128,7 @@ if ('station_trend_analyse' %in% to_do) {
         if ('VCN10' %in% var) {
             res = get_VCN10trend(df_data, df_meta,
                                  period=trend_period,
-                                 per.start=month['VCN10' == var, i],
+                                 perStart=perSTART['VCN10' == var, i],
                                  alpha=alpha,
                                  sampleSpan=sampleSpan,
                                  dayLac_lim=dayLac_lim,
@@ -143,7 +143,7 @@ if ('station_trend_analyse' %in% to_do) {
         if ('tDEB' %in% var) {
             res = get_tDEBtrend(df_data, df_meta, 
                                 period=trend_period,
-                                per.start=month['tDEB' == var, i],
+                                perStart=perSTART['tDEB' == var, i],
                                 alpha=alpha,
                                 sampleSpan=sampleSpan,
                                 thresold_type='VCN10',
@@ -160,7 +160,7 @@ if ('station_trend_analyse' %in% to_do) {
         if ('tCEN' %in% var) {
             res = get_tCENtrend(df_data, df_meta, 
                                 period=trend_period,
-                                per.start=month['tCEN' == var, i],
+                                perStart=perSTART['tCEN' == var, i],
                                 alpha=alpha,
                                 sampleSpan=sampleSpan,
                                 dayLac_lim=dayLac_lim,
@@ -173,7 +173,7 @@ if ('station_trend_analyse' %in% to_do) {
     
 
 ### 1.3. Saving ______________________________________________________
-        if (meta_saving) {
+        if ('meta' %in% saving) {
             # Sourcing the R file
             source(file.path('Rcode', 'processing', 'read_write.R'),
                    encoding='UTF-8')
@@ -184,7 +184,7 @@ if ('station_trend_analyse' %in% to_do) {
             }
         }
 
-        if (data_saving) {
+        if ('data' %in% saving) {
             # Sourcing the R file
             source(file.path('Rcode', 'processing', 'read_write.R'),
                    encoding='UTF-8')
@@ -195,24 +195,48 @@ if ('station_trend_analyse' %in% to_do) {
                 df_datatmp = get(paste('df_', v, 'data', sep=''))
                 # Gets the modification file of the data for the variable
                 df_modtmp = get(paste('df_', v, 'mod', sep=''))
-                # Gets the trend results for the variable
-                res_trendtmp = get(paste('res_', v, 'trend', sep=''))
 
+                monthStart = substr(perSTART[v == var, i], 1, 2)
+                
+                # Writes modified data
+                write_data(df_datatmp, df_modtmp, resdir,
+                           filedir=file.path('modified_data',
+                                             v, monthStart))
+                
                 if (fast_format) {
                     write_dataFST(df_datatmp, resdir,
-                                  filedir=file.path('fst',
-                                                    month[v == var, i],
-                                                    v))
-                } else {
-                    # Writes modified data
-                    write_data(df_datatmp, df_modtmp, resdir,
-                               filedir=file.path('modified_data',
-                                                 month[v == var, i],
-                                                 v))
-                    # Writes trend analysis results
+                                  filedir='fst',
+                                  filename=paste0('data_', v,
+                                                  '_', monthStart,
+                                                  '.fst'))
+                }
+            }
+        }
+
+        if ('analyse' %in% saving) {
+            # Sourcing the R file
+            source(file.path('Rcode', 'processing', 'read_write.R'),
+                   encoding='UTF-8')
+            
+            # For all the variable
+            for (v in var) {
+                # Gets the trend results for the variable
+                res_trendtmp = get(paste('res_', v, 'trend', sep=''))
+
+                monthStart = substr(perSTART[v == var, i], 1, 2)
+
+                # Writes trend analysis results
                     write_analyse(res_trendtmp, resdir,
                                   filedir=file.path('trend_analyses',
-                                                    v))
+                                                    v, monthStart))
+                
+                if (fast_format) {
+                    write_dataFST(res_trendtmp$data,
+                                  resdir,
+                                  filedir='fst',
+                                  filename=paste0(v, 'Ex_',
+                                                  monthStart,
+                                                  '.fst'))
                 }
             }
         }
@@ -282,7 +306,7 @@ if ('climate_trend_analyse' %in% to_do) {
     # TA trend
     res = get_XAtrend(df_data_P, df_climate_meta,
                       period=trend_period,
-                      per.start='09-01',
+                      perStart='09-01',
                       alpha=alpha,
                       dayLac_lim=dayLac_lim,
                       yearNA_lim=yearNA_lim,
@@ -295,7 +319,7 @@ if ('climate_trend_analyse' %in% to_do) {
     # PA trend
     res = get_XAtrend(df_data_T, df_climate_meta,
                       period=trend_period,
-                      per.start='09-01',
+                      perStart='09-01',
                       alpha=alpha,
                       dayLac_lim=dayLac_lim,
                       yearNA_lim=yearNA_lim,
@@ -309,7 +333,7 @@ if ('climate_trend_analyse' %in% to_do) {
     # ETPA trend
     res = get_XAtrend(df_data_ETP, df_climate_meta,
                       period=trend_period,
-                      per.start='09-01',
+                      perStart='09-01',
                       alpha=alpha,
                       dayLac_lim=dayLac_lim,
                       yearNA_lim=yearNA_lim,
diff --git a/main.R b/main.R
index 5d03743..a26bbb8 100644
--- a/main.R
+++ b/main.R
@@ -101,8 +101,8 @@ filename =
 to_do =
     c(
         'station_extraction',
-        'station_trend_analyse'
-        # 'station_trend_plot'
+        'station_trend_analyse',
+        'station_trend_plot'
     )
 
 ## 4. ANALYSIS PARAMETERS ____________________________________________
@@ -112,7 +112,9 @@ to_do =
 # - periodSub tends to represent the period with the most accessible
 # flow data
 periodAll = c("1800-01-01", "2020-12-31")
-periodSub = c("1968-01-01", "2020-12-31")
+periodSub =
+    # NULL
+    c("1968-01-01", "2020-12-31")
 
 # Periods of time to average. More precisely :
 # - periodRef tends to represent the reference period of the climate
@@ -137,9 +139,22 @@ modify_advanced_settings = FALSE
 # Sets working directory
 setwd(computer_work_path)
 
-# Creates list of period for analyses
-trend_period = list(periodAll, periodSub)
-mean_period = list(periodRef, periodCur)
+# Creates list of period for trend analysis
+trend_period = list()
+if (!is.null(periodAll)) {
+    trend_period = append(trend_period, list(periodAll))
+}
+if (!is.null(periodSub)) {
+    trend_period = append(trend_period, list(periodSub))
+}
+# Creates list of period for average analysis
+mean_period = list()
+if (!is.null(periodRef)) {
+    mean_period = append(mean_period, list(periodRef))
+}
+if (!is.null(periodCur)) {
+    mean_period = append(mean_period, list(periodCur))
+}
 
 # Gets the path to the advanced settings
 advanced_settings_path = file.path('Rcode', 'advanced_settings.R')
-- 
GitLab