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.