From 337b981f97ad0b2437737255bd83751ce3af3c2b Mon Sep 17 00:00:00 2001
From: "Daniel.Frisinghelli" <daniel.frisinghelli@eurac.edu>
Date: Fri, 2 Jul 2021 14:13:16 +0200
Subject: [PATCH] Input and Output module.

---
 climax/main/config.py                   | 20 ----------------
 climax/main/downscale.py                |  6 ++---
 climax/main/io.py                       | 32 +++++++++++++++++++++++++
 climax/main/preprocess/download_ERA5.py |  2 +-
 4 files changed, 36 insertions(+), 24 deletions(-)
 create mode 100644 climax/main/io.py

diff --git a/climax/main/config.py b/climax/main/config.py
index e6b7e49..ae9b692 100644
--- a/climax/main/config.py
+++ b/climax/main/config.py
@@ -4,7 +4,6 @@
 # -*- coding: utf-8 -*-
 
 # builtins
-import pathlib
 import datetime
 
 # externals
@@ -13,25 +12,6 @@ import numpy as np
 # locals
 from climax.core.constants import PREDICTANDS
 
-# -----------------------------------------------------------------------------
-# Paths to input data ---------------------------------------------------------
-# -----------------------------------------------------------------------------
-
-# project root path
-ROOT = pathlib.Path('/mnt/CEPH_PROJECTS/FACT_CLIMAX/')
-
-# path to this file
-HERE = pathlib.Path(__file__).parent
-
-# path to ERA5 reanalysis data
-ERA5_PATH = ROOT.joinpath('REANALYSIS')
-
-# path to OBServation data
-OBS_PATH = ROOT.joinpath('OBSERVATION')
-
-# path to save trained models
-MODEL_PATH = ROOT.joinpath('Models')
-
 # -----------------------------------------------------------------------------
 # ERA5 downscaling configuration ----------------------------------------------
 # -----------------------------------------------------------------------------
diff --git a/climax/main/downscale.py b/climax/main/downscale.py
index ce969d2..2f441f4 100644
--- a/climax/main/downscale.py
+++ b/climax/main/downscale.py
@@ -19,9 +19,9 @@ from pysegcnn.core.trainer import NetworkTrainer
 from pysegcnn.core.logging import log_conf
 from climax.core.dataset import ERA5Dataset, NetCDFDataset
 from climax.core.constants import ERA5_VARIABLES
-from climax.main.config import (ERA5_PATH, ERA5_PLEVELS, OBS_PATH, PREDICTAND,
-                                CALIB_PERIOD, MODEL_PATH, SHUFFLE, BATCH_SIZE,
-                                LR, TRAIN_CONFIG)
+from climax.main.config import (ERA5_PLEVELS, PREDICTAND, CALIB_PERIOD,
+                                SHUFFLE, BATCH_SIZE, LR, TRAIN_CONFIG)
+from climax.main.io import ERA5_PATH, OBS_PATH, MODEL_PATH
 
 
 if __name__ == '__main__':
diff --git a/climax/main/io.py b/climax/main/io.py
new file mode 100644
index 0000000..179375f
--- /dev/null
+++ b/climax/main/io.py
@@ -0,0 +1,32 @@
+"""Climax input and output files."""
+
+# !/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+# builtins
+import pathlib
+
+# -----------------------------------------------------------------------------
+# Paths to input data ---------------------------------------------------------
+# -----------------------------------------------------------------------------
+
+# project root path
+ROOT = pathlib.Path('~/FACT_CLIMAX')
+ROOT = pathlib.Path('/mnt/CEPH_PROJECTS/FACT_CLIMAX/')
+
+# path to this file
+HERE = pathlib.Path(__file__).parent
+
+# path to ERA5 reanalysis data
+ERA5_PATH = ROOT.joinpath('REANALYSIS')
+
+# path to OBServation data
+OBS_PATH = ROOT.joinpath('OBSERVATION')
+
+# path to save trained models
+MODEL_PATH = ROOT.joinpath('Models')
+
+# create input and output paths
+for path in [ERA5_PATH, OBS_PATH, MODEL_PATH]:
+    if not path.exists():
+        path.mkdir(parents=True, exist_ok=True)
diff --git a/climax/main/preprocess/download_ERA5.py b/climax/main/preprocess/download_ERA5.py
index 3c8ff18..cec572d 100644
--- a/climax/main/preprocess/download_ERA5.py
+++ b/climax/main/preprocess/download_ERA5.py
@@ -13,7 +13,7 @@ import numpy as np
 
 # locals
 from climax.core.constants import ERA5_P_VARIABLES, ERA5_VARIABLES
-from climax.main.config import ERA5_PATH
+from climax.main.io import ERA5_PATH
 
 # pressure levels
 pressure_levels = ['850', '500']
-- 
GitLab