Skip to content
/ WIFA_UQ Public

This repository is designed to develop an open-source Python framework integrating tools to perform calibration and bias correction with uncertainty quantification. It is built on top of WIFA, which uses WindIO as an input data standard.

License

Notifications You must be signed in to change notification settings

EUFLOW/WIFA_UQ

Repository files navigation

WIFA-UQ

Coverage Documentation

Description

Uncertainty quantification for wind farm wake modeling.

This repository is designed to develop an open-source Python framework integrating tools to perform calibration and bias correction with uncertainty quantification. It is built on top of WIFA, which uses WindIO as an input data standard.

Features

  • Model Error Databases — Sample uncertain wake model parameters and compare against reference data (LES or SCADA)
  • Flexible Calibration — Global (single best parameters) or local (condition-dependent) calibration strategies
  • ML Bias Prediction — XGBoost, PCE, SIR, and linear models to predict residual bias from atmospheric features
  • Sensitivity Analysis — SHAP values, Sobol indices, and SIR directions for feature importance
  • Multi-Farm Support — Combine data from multiple wind farms with Leave-One-Group-Out cross-validation
  • windIO Integration — Uses the windIO standard for wind energy system definitions

Documentation

Full documentation is available at EUFLOW.github.io/WIFA_UQ

Useful links

Quick Start

pixi install
pixi run python examples/run.py examples/kul_les_example.yaml

Architecture Diagrams


┌─────────────────────────────────────────────────────────────────┐
│                                                                 │
│   Reference Data          Wake Model (e.g., PyWake/foxes/WAYVE) │
│   (LES / SCADA)          with uncertain params                  │
│        │                        │                               │
│        │    ┌───────────────────┘                               │
│        ▼    ▼                                                   │
│   ┌──────────────┐                                              │
│   │  Calibration │ → Find params that minimize bias             │
│   └──────────────┘                                              │
│           │                                                     │
│           ▼                                                     │
│   ┌──────────────┐                                              │
│   │ Bias         │ → Learn: bias = f(ABL_height, wind_veer,...) │
│   │ Prediction   │                                              │
│   └──────────────┘                                              │
│           │                                                     │
│           ▼                                                     │
│   Corrected Output = PyWake(calibrated) - predicted_bias        │
│                                                                 │
│   Result: Lower error on held-out test cases                    │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

┌─────────────────────────────────────────────────────────────────┐
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────────┐   │
│  │ Preprocessing│───▶│  Database    │───▶│ Error Prediction │   │
│  │              │    │  Generation  │    │                  │   │
│  └──────────────┘    └──────────────┘    └─────────┬────────┘   │
│                                                    │            │
│                      ┌─────────────────────────────┼────────┐   │
│                      │                             ▼        │   │
│                      │  ┌─────────────┐   ┌──────────────┐  │   │
│                      │  │ Calibrator  │   │ BiasPredictor│  │   │
│                      │  │ (Global/    │   │ (XGB/SIR)    │  │   │
│                      │  │  Local)     │   └──────────────┘  │   │
│                      │  └─────────────┘                     │   │
│                      │         MainPipeline                 │   │
│                      └──────────────────────────────────────┘   │
│                                                                 │
│  ┌──────────────────────────────────────────────────────────┐   │
│  │              Sensitivity Analysis                        │   │
│  │  ┌────────┐  ┌─────────────────┐  ┌─────────────────┐    │   │
│  │  │  SHAP  │  │ SIR Directions  │  │  PCE Sobol      │    │   │
│  │  └────────┘  └─────────────────┘  └─────────────────┘    │   │
│  └──────────────────────────────────────────────────────────┘   │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

About

This repository is designed to develop an open-source Python framework integrating tools to perform calibration and bias correction with uncertainty quantification. It is built on top of WIFA, which uses WindIO as an input data standard.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 6

Languages