This repository provides a modular, research-grade pipeline for short-term hydropower generation forecasting* at the Bui Dam (Ghana), using advanced deep learning models—including LSTM, Transformer, Seq2Seq, and their tunable variants.
# Hydropower Generation Forecasting at Bui Dam
---
## Project Overview
This repository provides a **modular, research-grade pipeline** for **short-term hydropower generation forecasting** at the Bui Dam (Ghana), using advanced deep learning models—including LSTM, Transformer, Seq2Seq, and their tunable variants.
Key features:
- **End-to-end reproducible workflow**: from raw data QC to explainability and uncertainty analysis.
- **Modular codebase** with robust configuration, CLI, and comprehensive documentation.
- **Feature ablation and model comparison**: supports scientific experimentation and publication-ready output.
- **Research-grade diagnostics:** SHAP feature importance, MC Dropout uncertainty, skill tables, and publication-ready figures.
---
## Quickstart
**1. Clone the repository:**
```bash
git clone
github.com
cd Bui-Hydro-DL
````
**2. Install dependencies (recommended: use conda or \[venv]):**
```bash
conda env create -f environment.yml
conda activate bui-forecast
# or
pip install -r requirements.txt
```
**3. Prepare data:**
* Place provided CSVs (`Exp_A_MetOnly.csv`, `Exp_B_MetHydro.csv`) in the `data/` directory.
**4. Run your first analysis:**
```bash
# Run a data QC notebook (see Notebooks section below)
jupyter notebook notebooks/00_Data_Exploration_and_QC.ipynb
# Or train a model
python train.py --config configs/your_experiment.yaml
```
---
## Project Structure
```text
LSTMv0.3.0/
├── .gitignore
├── README.md
├── environment.yml
├── requirements.txt
├── config.py # Global configuration and paths
├── models.py # All model architectures
├── data.py # Data loading, cleaning, feature engineering
├── evaluation.py # Metrics, SHAP, confidence intervals
├── inference.py # Model inference and uncertainty quantification
├── collinearity.py # Multicollinearity detection and pruning
├── cv.py # Time-series cross-validation u …