From df4d3ee3585facbefa7edaf98f3eff801612ff57 Mon Sep 17 00:00:00 2001
From: "louis.heraut" <louis.heraut@inrae.fr>
Date: Fri, 21 Jan 2022 17:40:09 +0100
Subject: [PATCH] INI variable

---
 processing/analyse.R | 29 ++++++++++++++-----------
 processing/format.R  | 51 +++++++++++++++++++++++++++-----------------
 2 files changed, 48 insertions(+), 32 deletions(-)

diff --git a/processing/analyse.R b/processing/analyse.R
index 53691f0..6c42952 100644
--- a/processing/analyse.R
+++ b/processing/analyse.R
@@ -275,7 +275,7 @@ get_VCN10trend = function (df_data, df_meta, period, p_thresold) {
 ### 1.4. tINI date
 
 which_underfirst = function (L, UpLim) {
-    id = which(L < UpLim)[1]
+    id = which(L <= UpLim)[1]
     return (id)
 }
 
@@ -321,6 +321,9 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) {
             # Gets the code
             code = Code[k]
             
+            per.start = df_meta$start_year[df_meta$code == code]
+            per.start = paste(sprintf("%02d", per.start), '-01', sep='')
+            
             # Get the data associated to the code
             df_data_roll_code = df_data_roll[df_data_roll$code == code,]
 
@@ -337,25 +340,22 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) {
                                         funct=min,
                                         timestep='year',
                                         period=per,
+                                        per.start=per.start,
                                         pos.datetime=1,
                                         na.rm=TRUE)
 
-            print(code)
+            # print(code)
+            # print(df_QNAEx_code)
             
-            print(df_QNAEx_code)
             QNAmax = max(df_QNAEx_code$values, na.rm=TRUE)
-            print(QNAmax)
+
+            # print(QNAmax)
+            # print(per.start)
 
 
             # Prepare the data to fit the entry of extract.Var
             df_tINIlist_code = prepare(df_data_roll_code,
                                        colnamegroup=c('code'))
-
-            per.start = df_meta$start_year[df_meta$code == code]
-            per.start = paste(sprintf("%02d", per.start), '-01', sep='')
-
-            
-            print(per.start)
             
             # Compute the yearly min over the averaged data
             df_tINIEx_code = extract.Var(data.station=df_tINIlist_code,
@@ -369,6 +369,11 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) {
             df_tINIEx_code$group1 = k
             df_tINIlist_code$data$group = k
             df_tINIlist_code$info$group = k
+
+            # Converts index of the tINI to the julian date associated
+            df_tINIEx_code = prepare_date(df_tINIEx_code,
+                                          df_tINIlist_code,
+                                          per.start=per.start)
             
             # Store the results
             df_tINIEx = bind_rows(df_tINIEx, df_tINIEx_code)
@@ -382,9 +387,7 @@ get_tINItrend = function (df_data, df_meta, period, p_thresold) {
 
         # print(df_tINIEx)
         # print(df_tINIlist)
-        
-        # Converts index of the tINI to the julian date associated
-        df_tINIEx = prepare_date(df_tINIEx, df_tINIlist)
+
         
         # Compute the trend analysis
         df_tINItrend = Estimate.stats(data.extract=df_tINIEx,
diff --git a/processing/format.R b/processing/format.R
index a7a03db..84c928f 100644
--- a/processing/format.R
+++ b/processing/format.R
@@ -110,46 +110,59 @@ reprepare = function(df_XEx, df_Xlist, colnamegroup=NULL) {
 
 
 
-prepare_date = function(df_XEx, df_Xlist) {
+prepare_date = function(df_XEx, df_Xlist, per.start="01-01") {
 
-    dateStart_group = summarise(group_by(df_Xlist$data, group),
+    df_dateStart = summarise(group_by(df_Xlist$data, group),
                                 Date = min(Date))
     # filter(group_by(df_Xlist$data, group), Date == min(Date))
     
-    dateStart_group$Date_julian = NA
-    date = as.Date(dateStart_group$Date)
-    origin = as.Date(paste(format(dateStart_group$Date, "%Y"),
-                           '-01-01', sep=''))
+    df_dateStart$Date_julian = NA
+    df_dateStart$DateHydro_julian = NA
     
-    for (i in 1:nrow(dateStart_group)) {
+    date = as.Date(df_dateStart$Date)
+    
+    date_per.start = as.Date(paste(substr(date, 1, 4),
+                                   '-', per.start, sep=''))
+    
+    date[date < date_per.start] = date_per.start[date < date_per.start]
+    df_dateStart$Date = date
+    
+    origin = as.Date(paste(format(df_dateStart$Date, "%Y"),
+                           '-', per.start, sep=''))
+
+    originHydro = as.Date(paste(format(df_dateStart$Date, "%Y"),
+                                '-01-01', sep=''))
+
+    for (i in 1:nrow(df_dateStart)) {
         dateJultmp = julian(date[i], origin=origin[i])
-        dateStart_group$Date_julian[i] = dateJultmp
+        df_dateStart$Date_julian[i] = dateJultmp
+        dateJulHydrotmp = julian(date[i], origin=originHydro[i])
+        df_dateStart$DateHydro_julian[i] = dateJulHydrotmp
     }
 
-    dateStart_group$Year = format(dateStart_group$Date, "%Y")
+    df_dateStart$Year = format(df_dateStart$Date, "%Y")
     
-    for (group in dateStart_group$group) {
-        OkdateStart_group = dateStart_group$group == group
-        Shift = dateStart_group$Date_julian[OkdateStart_group]
-        year = dateStart_group$Year[OkdateStart_group]
+    for (group in df_dateStart$group) {
+        Ok_dateStart = df_dateStart$group == group
+        Shift = df_dateStart$Date_julian[Ok_dateStart]
+        year = df_dateStart$Year[Ok_dateStart]
         OkXEx_code_year = df_XEx$group1 == group & df_XEx$datetime == year
         df_XEx$values[OkXEx_code_year] =
             df_XEx$values[OkXEx_code_year] + Shift
 
-        OkXEx_code = df_XEx$group1 == group        
-        XEx_code = df_XEx$values[OkXEx_code]
+        OkXEx_code = df_XEx$group1 == group
+
+        ShiftHydro = df_dateStart$DateHydro_julian[Ok_dateStart]
+        df_XEx$values[OkXEx_code] = df_XEx$values[OkXEx_code] + ShiftHydro
         
+        XEx_code = df_XEx$values[OkXEx_code]
         meanXEx_code = mean(XEx_code, na.rm=TRUE)
         dXEx_code = meanXEx_code - XEx_code
         stdXEx_code = sd(XEx_code, na.rm=TRUE)
-
         OkOverStd = dXEx_code >= stdXEx_code*3
         OkOverStd[is.na(OkOverStd)] = FALSE
-        
         XEx_code[OkOverStd] = XEx_code[OkOverStd] + 365
 
-        print(OkOverStd)
-
         # print(group)
         # print(df_XEx$datetime[df_XEx$group1 == group][dXEx_code >= stdXEx_code*3])
         
-- 
GitLab