Skip to main content

Welcome to PyNNLF

PyNNLF (Python for Network Net Load Forecasting) is a tool to evaluate net load forecasting model performance in a reliable and reproducible way.

This tool evaluates net load forecasting models aiming to make new net load forecasting research more reliable and reproducible. It includes a library of public net load datasets and common forecasting models, including simple benchmark models. Users input the forecast problem and model specification, and the tool outputs evaluation results.

It also allows users to add datasets, models, and modify hyperparameters. Researchers claiming a new or superior model can compare their model with existing ones on public datasets. The target audience includes researchers in academia or industry focused on evaluating and optimizing net load forecasting models.

A visual illustration of the tool workflow is shown below.

Home Illustration

Input

  1. Forecast Target: Dataset and forecast horizon defined in the YAML spec at example_project/specs/experiment.yaml.
  2. Model Specification: Model and hyperparameters defined in the YAML spec at example_project/specs/experiment.yaml.

Output

  1. a1_experiment_result.csv – Contains accuracy (cross-validated test n-RMSE), stability (accuracy standard deviation), and training time.
  2. a2_hyperparameter.csv – Lists the hyperparameters used for each model.
  3. a3_cross_validation_result.csv – Detailed results for each cross-validation split.
  4. cv_plots/ – Folder with plots including:
    • Observation vs forecast (time plot)
    • Observation vs forecast (scatter plot)
    • Residual time plot
    • Residual histogram
  5. cv_test/ and cv_train/ – Folders containing time series of observations, forecasts, and residuals for each cross-validation split.

Tool Output Naming Convention

Format: [experiment_no]_[experiment_date]_[dataset]_[forecast_horizon]_[model]_[hyperparameter]

Example: E00001_250915_ds0_fh30_m6_lr_hp1

Installation Instruction

  1. Install the package: On macOS, use python3/pip3 if python/pip are not available.

    python -m pip install pynnlf
    

How to Use The Tool

  1. Initialize a workspace in any directory you want (example name: my_project). By default, only the sample dataset (ds0) is included. You can choose to download all datasets if needed: On macOS, use python3 -c if python -c is not available.

    python -c "import pynnlf; pynnlf.init('my_project')"
    
  2. Set up your experiment in my_project/specs/experiment.yaml.

  3. Run the experiment:

    python -c "import pynnlf; pynnlf.run_experiment('my_project/specs/experiment.yaml')"
    
  4. View results under my_project/experiment_result.

CI

CI (Continuous Integration) is automated testing that runs on code changes. CI is available to run smoke tests on 3 models and check whether results fall within the standard benchmark.

Output

The tool will output the evaluation result in my_project/experiment_result as one folder.

Full Documentation

Detailed documentation including examples, testing, detailed guide, API reference, features & limitations, etc. can be seen here. PyNNLF Documentation

Acknowledgements

This project is part of Samhan's PhD study, supported by the University International Postgraduate Award (UIPA) Scholarship from UNSW, the Industry Collaboration Project Scholarship from Ausgrid, and the RACE for 2030 Scholarship. We also acknowledge Solcast and the Australian Bureau of Meteorology (BOM) for providing access to historical weather datasets for this research. We further acknowledge the use of Python libraries including Pandas, NumPy, PyTorch, Scikit-learn, XGBoost, Prophet, Statsmodels, and Matplotlib. Finally, we thank the reviewers and editor of the Journal of Open Source Software for their valuable feedback and guidance.

The authors declare that they have no competing financial, personal, or professional interests related to this work.

Contributors

  • M. Syahman Samhan (m.samhan@unsw.edu.au): Lead developer and researcher. Responsible for conceptualization, implementation, documentation, and experimentation.
  • Anna Bruce: Supervisor. Provided guidance on research direction and methodology.
  • Baran Yildiz: Supervisor. Provided guidance on research direction and methodology.

Metadata

Release files for pynnlf 0.2.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pynnlf 0.2.5
File Size Uploaded
pynnlf-0.2.5.tar.gz 81.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pynnlf 0.2.5
File Interpreter ABI Platform
pynnlf-0.2.5-py3-none-any.whl Python 3 none any Details

Total release size: 180.1 kB

Release files / pynnlf-0.2.5.tar.gz

Download URL pynnlf-0.2.5.tar.gz
Size 81.8 kB
Tags Source
SHA-256 checksum
How to use checksums
534c9fa2eb080985f6fac813cdc33959308d2c945a55fa70e28e58d3be5b8451
BLAKE2b-256 checksum
How to use checksums
998f2fab41ce7a7998a2f339ea666e50bb3819dd9d2736c7115986e6776a1ff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / pynnlf-0.2.5-py3-none-any.whl

Download URL pynnlf-0.2.5-py3-none-any.whl
Size 98.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fcc5eea00ae2e893d763d250dd7fc7941d85e5368b42134126258152d822554c
BLAKE2b-256 checksum
How to use checksums
94d49b92e6ccb9150be5d829ad32d23a59663c72ffb2644b2907adba504feead
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.2.5 This release

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page