Source code for trunx.config
"""Configuration variables for the project.
Used for centralizing paths definitions, among other things.
"""
import os
from pathlib import Path
from typing import Literal
import yaml
# Root of the repository.
project_root = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))
[docs]
def load_config(project_root):
"""Load project configuration file."""
with open(os.path.join(project_root, "config.yaml")) as p:
config = yaml.safe_load(p)
return config
config = load_config(project_root)
mode = config.get("mode", "local")
# Determine base directory based on mode
if mode == "server":
base_dir = config["server_base_dir"]
elif mode == "local":
base_dir = project_root
else:
raise ValueError(f"Invalid mode '{mode}'. Must be 'local' or 'server'.")
data_folder = Path(os.path.join(base_dir, "data/"))
raw_data_folder = Path(os.path.join(base_dir, "data/raw/"))
clean_data_folder = Path(os.path.join(base_dir, "data/clean/"))
threepg_data_folder = Path(os.path.join(base_dir, "data/threepg_inputs/"))
intermediate_data_folder = Path(os.path.join(base_dir, "data/intermediate/"))
results_data_folder = Path(os.path.join(base_dir, "data/results/"))
era5_data_folder = Path(os.path.join(base_dir, "data/raw/ERA5/"))
icos_raw_data_folder = raw_data_folder / "ICOS"
icp_raw_data_folder = raw_data_folder / "ICP"
# Define key constants
Species = Literal["spruce", "pine", "beech", "oak"]
Levels = Literal["tree", "plot"]
SPECIES_INDICES = {
"Picea abies": 1,
"Pinus sylvestris": 2,
"Fagus sylvatica": 3,
"Quercus robur": 4,
"Quercus petraea": 5,
}