This project focuses on wind forecasting using various deep learning models. It includes data preprocessing, model implementation, and training scripts for different architectures such as STTRE and Spacetimeformer.
Ultra-Short-Term Probabilistic Spatio-Temporal Modeling of Wind Farm Dynamics and Disturbances for Wake Steering Control
This open-source framework aims to predict wind speed and direction in the short term, specifically tailored for wake steering control applications in wind farms.
📚 Table of Contents
To ensure consistent handling of Jupyter notebooks in this repository, please follow these steps after cloning:
-
Install
nbstripout
using Mamba:mamba install nbstripout
-
Set up
nbstripout
for this repository:nbstripout --install --attributes .gitattributes
The examples
folder contains scripts for downloading and processing input data:
examples/download_flasc_data.py
This script downloads the SMARTEOLE wake steering experiment data and extracts it to the inputs
folder.
The install_rc
folder contains scripts and YAML files for setting up Python environments for both CUDA and ROCm:
install.sh
: Script to create and activate the environmentswind_forecasting_cuda.yaml
: Conda environment for CUDA-based setupswind_forecasting_rocm.yaml
: Conda environment for ROCm-based setupsexport_environments.sh
: Script to export environment configurations
To set up the environments, run:
install_rc/install.sh
The wind_forecasting/models
directory contains implementations of various forecasting models:
- STTRE
- Spacetimeformer
- Autoformer
- Informer2020
Each model has its own subdirectory with specific implementation details and training scripts.
The wind_forecasting/preprocessing
folder contains scripts for data preprocessing:
preprocessing_main.ipynb
: Main script for loading and preprocessing dataload_data.sh
: Script for loading the data in the HPCdata_loader.py
: Contains methods for loading datadata_inspector.py
: Methods for plotting and analysing datadata_filter.py
: Methods for filtering and arranging data
The rc_jobs
folder contains SLURM scripts for running jobs on HPC environments:
job.slurm
: General job script for NVIDIA GPUsjob_amd.slurm
: Job script for AMD GPUsjob_preprocess.slurm
: Job script for preprocessing data
To submit a job from the HPC to the cluster, use:
sbatch rc_jobs/job.slurm
Click to expand
wind-forecasting/
├── examples/
│ ├── download_flasc_data.py
│ ├── SCADA_SMARTEOLE_Overview.ipynb
│ └── inputs/
│ ├── awaken_data
│ └── SMARTEOLE-WFC-open-dataset
├── lut/
├── rc_jobs/
│ ├── estimate_job_start_time.sh
│ ├── job.slurm
│ ├── job_amd.slurm
│ └── job_preprocess.slurm
├── install_rc/
│ ├── export_environments.sh
│ ├── install.sh
│ ├── setup.py
│ ├── wind_forecasting_cuda.yaml
│ └── wind_forecasting_rocm.yaml
├── wind_forecasting/
│ ├── models/
│ │ ├── Autoformer/
│ │ ├── Informer2020/
│ │ └── spacetimeformer/
│ ├── preprocessing/
│ │ ├── preprocessing_main.ipynb
│ │ ├── data_loader.py
│ │ ├── data_inspector.py
│ │ ├── data_filter.py
│ │ └── load_data.sh
│ ├── postprocessing/
│ └── run_scripts/
│ ├── train_informer.py
│ └── train_spacetimeformer.py
├── .gitignore
├── .gitattributes
├── .gitmodules
├── STTRE.ipynb
├── STTRE.py
└── README.md
- Clone the repository and set up the Jupyter notebook collaboration as described in the setup section.
- Download the required data using the script in
examples
or use your own data. - Set up the appropriate environment (CUDA or ROCm) using the scripts in the
install_rc
folder. - Preprocess the data using the script in the
wind_forecasting/preprocessing
folder. - Train and evaluate models using the scripts in the
wind_forecasting/models
directory. - For running jobs on HPC environments, use the SLURM scripts provided in the
rc_jobs
folder.