From 4f5204f064d37ba0ec2988ba16a7011d7f0a45cd Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Fri, 7 Apr 2017 12:01:01 +0200
Subject: [PATCH] clarify data acquisition; TODO: improve doc + usage

---
 pkg/R/Data.R            | 16 +++++++---------
 pkg/R/computeForecast.R |  2 --
 pkg/R/getData.R         |  6 +++++-
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/pkg/R/Data.R b/pkg/R/Data.R
index 610c0c4..39f3837 100644
--- a/pkg/R/Data.R
+++ b/pkg/R/Data.R
@@ -57,18 +57,16 @@ Data = R6::R6Class("Data",
 		getStdHorizon = function()
 			24 - as.POSIXlt( private$.data[[1]]$time[1] )$hour + 1
 		,
-		append = function(time, exo_hat)
-			private$.data[[length(private$.data)+1]] <- list("time"=time,"exo_hat"=exo_hat)
-		,
-		append = function(time, serie, exo)
+		append = function(time, serie, exo, exo_hat)
 		{
-			index <- length(private$.data)
 			level = mean(serie, na.rm=TRUE)
 			centered_serie = serie - level
-			private$.data[[index]]$time <- time
-			private$.data[[index]]$centered_serie <- centered_serie
-			private$.data[[index]]$level <- level
-			private$.data[[index]]$exo <- exo
+			private$.data[[length(private$.data)+1]] <- list(
+				"time"=time, #H-24 --> H-1
+				"centered_serie"=centered_serie, #at 'time'
+				"level"=level, #at 'time'
+				"exo"=exo, #at 'time' (yersteday 0am to last midnight)
+				"exo_hat"=exo_hat) #today 0am to next midnight
 		},
 		getTime = function(index)
 		{
diff --git a/pkg/R/computeForecast.R b/pkg/R/computeForecast.R
index 53dbc14..4bab811 100644
--- a/pkg/R/computeForecast.R
+++ b/pkg/R/computeForecast.R
@@ -34,8 +34,6 @@
 #'   memory=500, horizon=12, ncores=1)
 #' \dontrun{#Sketch for real-time mode:
 #' data <- Data$new()
-#' # Initialize: first day has no predictions attached
-#' data$initialize()
 #' forecaster <- MyForecaster$new(myJumpPredictFunc)
 #' repeat {
 #'   # In the morning 7am+ or afternoon 1pm+:
diff --git a/pkg/R/getData.R b/pkg/R/getData.R
index 4e2e3fd..268c54a 100644
--- a/pkg/R/getData.R
+++ b/pkg/R/getData.R
@@ -86,7 +86,11 @@ getData = function(ts_data, exo_data, input_tz="GMT", date_format="%d/%m/%Y %H:%
 		}
 
 		exo = as.data.frame( exo_df[i,2:(1+nb_exos)] )
-		exo_hat = as.data.frame( exo_df[i,(1+nb_exos+1):(1+2*nb_exos)] )
+		exo_hat =
+			if (i < nrow(exo_df))
+				as.data.frame( exo_df[i+1,(1+nb_exos+1):(1+2*nb_exos)] )
+			else
+				NA #exogenous prediction for next day are useless on last day
 		data$append(time, serie, exo, exo_hat)
 		if (i >= limit)
 			break
-- 
2.44.0