# bricepetit/aieg_forecasting architecture

> Architecture diagram of the GitHub repository bricepetit/aieg_forecasting, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bricepetit/aieg_forecasting
- Repository: https://github.com/bricepetit/aieg_forecasting

## Overview

AIEG Forecasting predicts short-term electricity consumption and production, then evaluates forecasts, applies a production-versus-consumption optimization, and monitors performance as actual values arrive. The documented workflow starts with data preparation, followed by training, evaluation and inference; inference predictions feed optimization and monitoring. The graph includes the visible data, feature, model and configuration layers. Pipeline relationships and capabilities follow the README; implementation details for unsampled pipeline sections are not assumed.

Main entry points: [`src/pipelines/inference_pipeline.py`](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/inference_pipeline.py) (Inference pipeline), [`src/pipelines/data_pipeline.py`](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/data_pipeline.py) (Data pipeline), [`src/pipelines/training_pipeline.py`](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/training_pipeline.py) (Training pipeline), [`src/data/dataset_loader.py`](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/dataset_loader.py) (Dataset loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_data["Data preparation"]
  node_data_pipe["Data pipeline<br/>[data_pipeline.py]"]
  node_mysql_client["MySQL client<br/>[mysql_client.py]"]
  node_download["Data download<br/>[download_data.py]"]
  node_weather_loader["Weather loader<br/>[weather_loader.py]"]
  node_preprocess["Preprocessing<br/>[preprocessing.py]"]
  node_dataset["Dataset loader<br/>[dataset_loader.py]"]
end

subgraph group_forecast["Forecasting"]
  node_features["Time-series features<br/>[ts_features.py]"]
  node_stats["Statistical features<br/>[stats_features.py]"]
  node_train["Training pipeline"]
  node_generators["Data generators<br/>[base_generators.py]"]
  node_models["Forecast models<br/>[pytorch_models.py]"]
  node_evaluation["Evaluation pipeline"]
  node_metrics["Forecast metrics<br/>[metrics.py]"]
  node_inference["Inference pipeline"]
end

subgraph group_operations["Forecast operations"]
  node_optimization["Production optimizer"]
  node_monitoring["Performance monitoring"]
end

subgraph group_config["Configuration"]
  node_config_loader["Config loader<br/>[config_loader.py]"]
end

node_operator(("Pipeline operator"))
node_mysql[("MySQL source")]
node_weather[("Weather source")]

node_operator -->|"runs"| node_data_pipe
node_operator -->|"runs"| node_train
node_operator -->|"runs"| node_evaluation
node_operator -->|"runs"| node_inference
node_operator -->|"runs"| node_optimization
node_operator -->|"runs"| node_monitoring
node_data_pipe -->|"loads settings"| node_config_loader
node_train -->|"loads settings"| node_config_loader
node_inference -->|"loads settings"| node_config_loader
node_data_pipe -->|"downloads data"| node_download
node_download -->|"queries"| node_mysql_client
node_mysql_client -->|"reads"| node_mysql
node_data_pipe -.->|"loads weather"| node_weather_loader
node_weather_loader -.->|"fetches weather"| node_weather
node_data_pipe -->|"processes data"| node_preprocess
node_data_pipe -->|"writes H5"| node_dataset
node_train -->|"loads H5"| node_dataset
node_evaluation -->|"loads test data"| node_dataset
node_inference -->|"loads input data"| node_dataset
node_train -->|"builds batches"| node_generators
node_generators -->|"uses"| node_features
node_generators -->|"uses"| node_stats
node_train -->|"trains"| node_models
node_evaluation -->|"loads model"| node_models
node_evaluation -->|"computes metrics"| node_metrics
node_inference -->|"loads model"| node_models
node_inference -->|"builds inputs"| node_features
node_inference -->|"builds inputs"| node_stats
node_inference -->|"prediction YAML"| node_optimization
node_inference -->|"prediction YAML"| node_monitoring
node_monitoring -->|"loads actuals"| node_dataset
node_monitoring -->|"computes metrics"| node_metrics

click node_data_pipe "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/data_pipeline.py"
click node_mysql_client "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/mysql_client.py"
click node_download "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/download_data.py"
click node_weather_loader "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/weather_loader.py"
click node_preprocess "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/preprocessing.py"
click node_dataset "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/dataset_loader.py"
click node_features "https://github.com/bricepetit/aieg_forecasting/blob/main/src/features/ts_features.py"
click node_stats "https://github.com/bricepetit/aieg_forecasting/blob/main/src/features/stats_features.py"
click node_train "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/training_pipeline.py"
click node_generators "https://github.com/bricepetit/aieg_forecasting/blob/main/src/data_generator/base_generators.py"
click node_models "https://github.com/bricepetit/aieg_forecasting/blob/main/src/models/pytorch_models.py"
click node_evaluation "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/evaluation_pipeline.py"
click node_metrics "https://github.com/bricepetit/aieg_forecasting/blob/main/src/evaluation/metrics.py"
click node_inference "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/inference_pipeline.py"
click node_optimization "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/optimization_pipeline.py"
click node_monitoring "https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/monitoring_pipeline.py"
click node_config_loader "https://github.com/bricepetit/aieg_forecasting/blob/main/src/configs/config_loader.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_data_pipe,node_mysql_client,node_download,node_weather_loader,node_preprocess,node_dataset toneBlue
class node_features,node_stats,node_train,node_generators,node_models,node_evaluation,node_metrics,node_inference,node_mysql,node_weather toneAmber
class node_optimization,node_monitoring toneMint
class node_config_loader toneRose
class node_operator toneIndigo
```

## Components

### Data preparation

- [Data pipeline](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/data_pipeline.py): `src/pipelines/data_pipeline.py`
- [MySQL client](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/mysql_client.py): `src/data/mysql_client.py`
- [Data download](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/download_data.py): `src/data/download_data.py`
- [Weather loader](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/weather_loader.py): `src/data/weather_loader.py`
- [Preprocessing](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/preprocessing.py): `src/data/preprocessing.py`
- [Dataset loader](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data/dataset_loader.py): `src/data/dataset_loader.py`

### Forecasting

- [Time-series features](https://github.com/bricepetit/aieg_forecasting/blob/main/src/features/ts_features.py): `src/features/ts_features.py`
- [Statistical features](https://github.com/bricepetit/aieg_forecasting/blob/main/src/features/stats_features.py): `src/features/stats_features.py`
- [Training pipeline](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/training_pipeline.py): `src/pipelines/training_pipeline.py`
- [Data generators](https://github.com/bricepetit/aieg_forecasting/blob/main/src/data_generator/base_generators.py): `src/data_generator/base_generators.py`
- [Forecast models](https://github.com/bricepetit/aieg_forecasting/blob/main/src/models/pytorch_models.py): `src/models/pytorch_models.py`
- [Evaluation pipeline](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/evaluation_pipeline.py): `src/pipelines/evaluation_pipeline.py`
- [Forecast metrics](https://github.com/bricepetit/aieg_forecasting/blob/main/src/evaluation/metrics.py): `src/evaluation/metrics.py`
- [Inference pipeline](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/inference_pipeline.py): `src/pipelines/inference_pipeline.py`

### Forecast operations

- [Production optimizer](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/optimization_pipeline.py): `src/pipelines/optimization_pipeline.py`
- [Performance monitoring](https://github.com/bricepetit/aieg_forecasting/blob/main/src/pipelines/monitoring_pipeline.py): `src/pipelines/monitoring_pipeline.py`

### Configuration

- [Config loader](https://github.com/bricepetit/aieg_forecasting/blob/main/src/configs/config_loader.py): `src/configs/config_loader.py`

### Other components

- **Pipeline operator**
- **MySQL source**
- **Weather source**

## Connections

- Pipeline operator → Data pipeline: runs
- Pipeline operator → Training pipeline: runs
- Pipeline operator → Evaluation pipeline: runs
- Pipeline operator → Inference pipeline: runs
- Pipeline operator → Production optimizer: runs
- Pipeline operator → Performance monitoring: runs
- Data pipeline → Config loader: loads settings
- Training pipeline → Config loader: loads settings
- Inference pipeline → Config loader: loads settings
- Data pipeline → Data download: downloads data
- Data download → MySQL client: queries
- MySQL client → MySQL source: reads
- Data pipeline → Weather loader: loads weather
- Weather loader → Weather source: fetches weather
- Data pipeline → Preprocessing: processes data
- Data pipeline → Dataset loader: writes H5
- Training pipeline → Dataset loader: loads H5
- Evaluation pipeline → Dataset loader: loads test data
- Inference pipeline → Dataset loader: loads input data
- Training pipeline → Data generators: builds batches
- Data generators → Time-series features: uses
- Data generators → Statistical features: uses
- Training pipeline → Forecast models: trains
- Evaluation pipeline → Forecast models: loads model
- Evaluation pipeline → Forecast metrics: computes metrics
- Inference pipeline → Forecast models: loads model
- Inference pipeline → Time-series features: builds inputs
- Inference pipeline → Statistical features: builds inputs
- Inference pipeline → Production optimizer: prediction YAML
- Inference pipeline → Performance monitoring: prediction YAML
- Performance monitoring → Dataset loader: loads actuals
- Performance monitoring → Forecast metrics: computes metrics
