From 9e55ce2f6c43a84edc78e575f3c2b04641c866ee Mon Sep 17 00:00:00 2001
From: Lene Wasskog <lene.wasskog@nibio.no>
Date: Fri, 21 Feb 2025 13:08:19 +0100
Subject: [PATCH] feat: Add env vars for archived weather data

---
 .gitlab-ci.yml |  2 ++
 ADASMELIAE.py  | 26 +++++++++++++++++++-------
 README.md      |  8 ++++++--
 env-sample     | 10 ++++++++--
 4 files changed, 35 insertions(+), 11 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4c00b30..1cfcb52 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -29,6 +29,8 @@ deployment:
     - echo "TMP_DIR=$TMP_DIR" >> $ENV_FILE
     - echo "WEATHER_DATA_DIR=$WEATHER_DATA_DIR" >> $ENV_FILE
     - echo "WEATHER_DATA_FILENAME_DATEFORMAT=$WEATHER_DATA_FILENAME_DATEFORMAT" >> $ENV_FILE
+    - echo "ARCHIVE_WEATHER_DATA_DIR=$ARCHIVE_WEATHER_DATA_DIR" >> $ENV_FILE
+    - echo "ARCHIVE_WEATHER_DATA_FILENAME_DATEFORMAT=$ARCHIVE_WEATHER_DATA_FILENAME_DATEFORMAT" >> $ENV_FILE
     - echo "RESULT_TIF_DIR=$RESULT_TIF_DIR" >> $ENV_FILE
     - echo "RESULT_MAPFILE_DIR=$RESULT_MAPFILE_DIR" >> $ENV_FILE
     - echo "MAPSERVER_RESULT_TIF_DIR=$MAPSERVER_RESULT_TIF_DIR" >> $ENV_FILE
diff --git a/ADASMELIAE.py b/ADASMELIAE.py
index c18c87b..572fbb5 100755
--- a/ADASMELIAE.py
+++ b/ADASMELIAE.py
@@ -45,13 +45,13 @@ DEBUG = (
 model_id = os.getenv("MODEL_ID")
 home_dir = os.getenv("HOME_DIR")
 weather_data_dir = os.getenv("WEATHER_DATA_DIR")
+archive_weather_data_dir = os.getenv("ARCHIVE_WEATHER_DATA_DIR")
 result_tif_base_dir = os.getenv("RESULT_TIF_DIR")
 result_mapfile_base_dir = os.getenv("RESULT_MAPFILE_DIR")
 tmp_dir = os.getenv("TMP_DIR")
 template_dir = f"{home_dir}mapfile/"
-
-
 weather_data_filename_pattern = os.getenv("WEATHER_DATA_FILENAME_DATEFORMAT")
+archive_weather_data_filename_pattern = os.getenv("ARCHIVE_WEATHER_DATA_FILENAME_DATEFORMAT")
 start_MM_DD = os.getenv("START_DATE_MM_DD")
 end_MM_DD = os.getenv("END_DATE_MM_DD")
 
@@ -127,7 +127,7 @@ def remove_temporary_files():
 
 # Remove previously calculated results
 def remove_old_results(tif_dir, mapfile_dir):
-    logging.info("Remove previously calculated results")
+    logging.info(f"Remove previously calculated results from {tif_dir} and {mapfile_dir}")
     if glob.glob(f"{tif_dir}*.tif"):
         run_command(command=f"rm {tif_dir}*.tif")
     if glob.glob(f"rm {mapfile_dir}*.map"):
@@ -202,8 +202,20 @@ if __name__ == "__main__":
     if today < start_date:
         logging.error("Model period not started. Quit.")
         sys.exit()
-    
-    weather_data_file = weather_data_dir + weather_data_filename_pattern.replace('%Y', str(year))
+
+    if year == today.year:
+        weather_data_file = f"{weather_data_dir}{weather_data_filename_pattern.replace('%Y', str(year))}"
+    else:
+        weather_data_file = f"{archive_weather_data_dir}{year}/{archive_weather_data_filename_pattern.replace('%Y', str(year))}"
+
+    if not os.path.exists(weather_data_file):
+        logging.error(f"Weather data file {weather_data_file} not found. Quit.")
+        sys.exit()
+
+    logging.info(
+        f"Use weather data from file {weather_data_file}"
+    )
+
     max_temp_in_period_file = f"{tmp_dir}{year}_max_temp_for_period.nc"
     unmasked_result_file = f"{tmp_dir}{year}_unmasked_result.nc"
     final_result_file = f"{tmp_dir}{year}_result.nc"
@@ -317,8 +329,8 @@ if __name__ == "__main__":
         {
             "model_id": model_id,
             "timestep_dates": timestep_dates,
-            "mapserver_data_dir": f"os.getenv('MAPSERVER_RESULT_TIF_DIR'){year}",
-            "mapserver_mapfile_dir": f"os.getenv('MAPSERVER_RESULT_MAPFILE_DIR'){year}",
+            "mapserver_data_dir": f"{os.getenv('MAPSERVER_RESULT_TIF_DIR')}{year}/",
+            "mapserver_mapfile_dir": f"{os.getenv('MAPSERVER_RESULT_MAPFILE_DIR')}{year}/",
             "mapserver_log_file": os.getenv("MAPSERVER_LOG_FILE"),
             "mapserver_image_path": os.getenv("MAPSERVER_IMAGE_PATH"),
             "mapserver_extent": os.getenv("MAPSERVER_EXTENT"),
diff --git a/README.md b/README.md
index 9a8730a..21a4d19 100644
--- a/README.md
+++ b/README.md
@@ -41,10 +41,14 @@ END_DATE_MM_DD=04-01
 HOME_DIR=/foo/home/ADASMELIAE/
 # Path to folder for intermediary results
 TMP_DIR=/foo/home/ADASMELIAE/tmp/
-# Path to the weather data
+# Directory containing weather data for current year
 WEATHER_DATA_DIR=/foo/weather/
-# Used to construct filename from current year
+# Weather data filename pattern
 WEATHER_DATA_FILENAME_DATEFORMAT="%Y_with_forecast.nc"
+# Directory containing archived weather data for previous years
+ARCHIVE_WEATHER_DATA_DIR=/foo/weather/archive/
+# Archived weather data filename pattern
+ARCHIVE_WEATHER_DATA_FILENAME_DATEFORMAT="%Y.nc"
 # Path to the output (GeoTIFF) files as seen from the running model code
 RESULT_TIF_DIR=/foo/out/tif/
 # Path to the generated mapfile as seen from the running model code
diff --git a/env-sample b/env-sample
index 75dfd90..d4e0ffa 100644
--- a/env-sample
+++ b/env-sample
@@ -12,10 +12,16 @@ END_DATE_MM_DD=04-01
 HOME_DIR=/foo/home/ADASMELIAE/
 # Path to folder for intermediary results
 TMP_DIR=/foo/home/ADASMELIAE/tmp/
-# Path to the weather data
+# Path to folder for intermediary results
+TMP_DIR=/Users/lenewasskog/Projects/grid/ADASMELIAE/tmp/
+# Directory containing weather data for current year
 WEATHER_DATA_DIR=/foo/weather/
-# Used to construct filename from current year
+# Weather data filename pattern
 WEATHER_DATA_FILENAME_DATEFORMAT="%Y_with_forecast.nc"
+# Directory containing archived weather data for previous years
+ARCHIVE_WEATHER_DATA_DIR=/foo/weather/archive/
+# Archived weather data filename pattern
+ARCHIVE_WEATHER_DATA_FILENAME_DATEFORMAT="%Y.nc"
 # Path to the output (GeoTIFF) files as seen from the running model code
 RESULT_TIF_DIR=/foo/out/tif/
 # Path to the generated mapfile as seen from the running model code
-- 
GitLab