• Stars
    star
    180
  • Rank 209,069 (Top 5 %)
  • Language
    Jupyter Notebook
  • License
    BSD 3-Clause "New...
  • Created over 7 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

This library provides a framework for assessing wind plant performance using operational assessment (OA) methodologies that consume time series data from wind plants. The goal of the project is to provide an open source implementation of common data structures, analysis methods, and utility functions relevant to wind plant OA.

OpenOA

Binder Badge Gitter Badge Journal of Open Source Software Badge

Documentation Badge Tests Badge Code Coverage Badge

pre-commit Code style: black Imports: isort


This library provides a framework for working with large timeseries data from wind plants, such as SCADA. Its development has been motivated by the WP3 Benchmarking (PRUF) project, which aims to provide a reference implementation for plant-level performance assessment.

Analysis routines are grouped by purpose into methods, and these methods in turn rely on more abstract toolkits. In addition to the provided analysis methods, anyone can write their own, which is intended to provide natural growth of tools within this framework.

The library is written around Pandas Data Frames, utilizing a flexible backend so that data loading, processing, and analysis could be performed using other libraries, such as Dask and Spark, in the future.

If you would like to try out the code before installation or simply explore the possibilities, please see our examples on Binder.

If you use this software in your work, please cite our JOSS article with the following BibTex:

@article{Perr-Sauer2021,
  doi = {10.21105/joss.02171},
  url = {https://doi.org/10.21105/joss.02171},
  year = {2021},
  publisher = {The Open Journal},
  volume = {6},
  number = {58},
  pages = {2171},
  author = {Jordan Perr-Sauer and Mike Optis and Jason M. Fields and Nicola Bodini and Joseph C.Y. Lee and Austin Todd and Eric Simley and Robert Hammond and Caleb Phillips and Monte Lunacek and Travis Kemper and Lindy Williams and Anna Craig and Nathan Agarwal and Shawn Sheng and John Meissner},
  title = {OpenOA: An Open-Source Codebase For Operational Analysis of Wind Farms},
  journal = {Journal of Open Source Software}
}

Requirements

  • Python 3.6+ with pip.

We strongly recommend using the Anaconda Python distribution and creating a new conda environment for OpenOA. You can download Anaconda through their website.

After installing Anaconda, create and activate a new conda environment with the name "openoa-env":

conda create --name openoa-env python=3.8
conda activate openoa-env

Installation

Clone the repository and install the library and its dependencies using pip:

git clone https://github.com/NREL/OpenOA.git
pip install ./OpenOA

You should now be able to import operational_analysis from the Python interpreter:

python
>>> import operational_analysis

Common Installation Issues:

  • In Windows you may get an error regarding geos_c.dll. To fix this install Shapely using:
conda install Shapely
  • In Windows, an ImportError regarding win32api can also occur. This can be resolved by fixing the version of pywin32 as follows:
pip install --upgrade pywin32==255

Development

Development dependencies are provided through the develop extra flag in setup.py. Here, we install OpenOA, with development dependencies, in editable mode, and activate the pre-commit workflow (note: this second step must be done before committing any changes):

pip install -e "./OpenOA[develop]"
pre-commit install

Occasionally, you will need to update the dependencies in the pre-commit workflow, which will provide an error when this needs to happen. When it does, this can normally be resolved with the below code, after which you can continue with your normal git workflow:

pre-commit autoupdate
git add .pre-commit-config.yaml

Example Notebooks and Data

The example data will be automaticaly extracted as needed by the tests. To manually extract the example data for use with the example notebooks, use the following command:

unzip examples/data/la_haute_borne.zip -d examples/data/la_haute_borne/

In addition, you will need to install the packages required for running the examples with the following command:

pip install -r ./OpenOA/examples/requirements.txt

The example notebooks are located in the examples directory. We suggest installing the Jupyter notebook server to run the notebooks interactively. The notebooks can also be viewed statically on Read The Docs.

jupyter notebook

Testing

Tests are written in the Python unittest framework and are runnable using pytest. There are two types of tests, unit tests (located in test/unit) run quickly and are automatically for every pull request to the OpenOA repository. Regression tests (located at test/regression) provide a comprehensive suite of scientific tests that may take a long time to run (up to 20 minutes on our machines). These tests should be run locally before submitting a pull request, and are run weekly on the develop and main branches.

To run all unit and regresison tests:

pytest

To run unit tests only:

pytest test/unit

To run all tests and generate a code coverage report

pytest --cov=operational_analysis

Documentation

Documentation is automatically built by, and visible through, Read The Docs.

You can build the documentation with sphinx, but will need to ensure Pandoc is installed on your computer first:

cd sphinx
pip install -r requirements.txt
make html

Contributors

Alphabetically: Nathan Agarwal, Nicola Bodini, Anna Craig, Jason Fields, Rob Hammond, Travis Kemper, Joseph Lee, Monte Lunacek, John Meissner, Mike Optis, Jordan Perr-Sauer, Sebastian Pfaffel, Caleb Phillips, Charlie Plumley, Eliot Quon, Sheungwen Sheng, Eric Simley, and Lindy Williams.

More Repositories

1

api-umbrella

Open source API management platform
Ruby
1,944
star
2

EnergyPlus

EnergyPlusâ„¢ is a whole building energy simulation program that engineers, architects, and researchers use to model both energy consumption and water use in buildings.
C++
1,044
star
3

OpenStudio

OpenStudio is a cross-platform collection of software tools to support whole building energy modeling using EnergyPlus and advanced daylight analysis using Radiance.
C++
484
star
4

SAM

System Advisor Model (SAM)
C++
318
star
5

floris

A controls-oriented engineering wake model.
Python
197
star
6

Radiance

This repo has been archived. Please refer to https://github.com/LBNL-ETA/Radiance/tree/master for the latest updates.
C
156
star
7

vagrant-boxes

Shell
146
star
8

rdtools

PV Analysis Tools in Python
Python
144
star
9

SOWFA

Roff
127
star
10

ReEDS-2.0

Python
115
star
11

resstock

Highly granular modeling of residential building stocks at national, regional, and local scales using OpenStudio/EnergyPlus.
Ruby
103
star
12

HPC

A collection of various resources, examples, and executables for the general NREL HPC user community's benefit. Use the following website for accessing documentation.
Jupyter Notebook
103
star
13

pysam

Python Wrapper for the System Advisor Model
C
99
star
14

ROSCO

A Reference Open Source Controller for Wind Turbines
Python
96
star
15

PowerGridworld

PowerGridworld provides users with a lightweight, modular, and customizable framework for creating power-systems-focused, multi-agent Gym environments that readily integrate with existing training frameworks for reinforcement learning (RL). https://arxiv.org/abs/2111.05969
Python
95
star
16

reV

Renewable Energy Potential (reV) Model
Python
92
star
17

hsds-examples

Examples of using the HSDS Service to Access NREL WIND Toolkit data
Jupyter Notebook
85
star
18

REopt_API

The model for the REopt API, which is used as the back-end for the REopt Webtool (reopt.nrel.gov/tool), and can be accessed directly via the NREL Developer Network (https://developer.nrel.gov/docs/energy-optimization/reopt)
Python
82
star
19

bifacial_radiance

Toolkit for working with RADIANCE for the ray-trace modeling of Bifacial Photovoltaics
Python
81
star
20

openstudio-standards

Ruby
78
star
21

ssc

SAM Simulation Core (SSC) contains the underlying performance and financial models for SAM
C++
78
star
22

sup3r

The Super-Resolution for Renewable Resource Data (sup3r) software uses generative adversarial networks to create synthetic high-resolution wind and solar spatiotemporal data from coarse low-resolution inputs.
Python
68
star
23

phygnn

physics-guided neural networks (phygnn)
Python
68
star
24

floorspace.js

JavaScript
66
star
25

ditto

DiTTo is a Distribution Transformation Tool that aims at providing an open source framework to convert various distribution systems modeling formats.
Python
66
star
26

dgen

The Distributed Generation Market Demand (dGen) model simulates customer adoption of distributed energy resources (DERs) for residential, commercial, and industrial entities in the United States and other countries.
Python
57
star
27

mappymatch

Pure-python package for map matching
Python
54
star
28

PhIRE

Python
54
star
29

wex

WEX, which is short for WxWidgets Extensions, is a cross-platform library of graphical user interface tools that extends the popular open-source project WxWidgets. WEX includes many features including the powerful DView program (https://github.com/NREL/wex/wiki/DView), which provides an easy-to-use way to visualize complex time series data.
C
54
star
30

nfp

Keras layers for end-to-end learning with rdkit and pymatgen
Python
52
star
31

alfabet

Machine learning predictions of bond dissociation energy
Python
52
star
32

turbine-models

Documentation for the turbine models in this repository is available below.
Python
51
star
33

WindSE

Python
48
star
34

SolarPILOT

SolarPILOT power tower layout and optimization tool
C++
43
star
35

developer.nrel.gov

An issue tracker for NREL's APIs available at https://developer.nrel.gov
HTML
43
star
36

OpenStudio-server

The OpenStudio Server is a docker or Helm deployable instance which allows for large-scale parametric analyses of building energy models using the OpenStudio or URBANopt CLIs.
Ruby
43
star
37

gdx-pandas

Python interface to read and write GAMS GDX files using pandas.DataFrames as the intermediate data format.
Python
43
star
38

EvoProtGrad

Directed evolution of proteins in sequence space with gradients
Jupyter Notebook
43
star
39

BuildingsBench

Large-scale pretraining and benchmarking for short-term load forecasting.
Jupyter Notebook
42
star
40

BuildingMOTIF

Building Metadata OnTology Interoperability Framework (BuildingMOTIF)
Jupyter Notebook
42
star
41

dynamo

A modular MATLAB toolkit for Dynamic programming (DP) and Approximate Dynamic Programming (ADP) for Adaptive Modeling and Optimization
MATLAB
41
star
42

PRAS

NREL's Probabilistic Resource Adequacy Suite (PRAS)
Julia
40
star
43

OpenStudio-HPXML

Modeling of residential buildings in EnergyPlus using OpenStudio/HPXML.
Ruby
38
star
44

alfalfa

Alfalfa is a web service that enables runtime interaction with building energy models (OpenStudio/EnergyPlus and FMUs compiled from Modelica or Spawn) over REST APIs.
Python
38
star
45

PyPSCAD

36
star
46

OPFLearn.jl

A Julia package that efficiently creates representative datasets for machine learning approaches to AC optimal power flow
Julia
36
star
47

ParaEMT_public

Python
35
star
48

graph-env

Reinforcement learning for combinatorial optimization over directed graphs
Python
34
star
49

SolTrace

SolTrace
C++
33
star
50

elm

ELM is a collection of utilities to apply Large Language Models (LLMs) to energy research.
Python
33
star
51

windtools

Python tools for wind simulation setup, data processing, and analysis
Python
33
star
52

MATBOX_Microstructure_analysis_toolbox

MATBOX is an open-source MATLAB toolbox dedicated to microstructure analsyis of porous/heterogeneous materials
MATLAB
32
star
53

PyDSS

Python
32
star
54

PV_ICE

An open-source tool to quantify Solar Photovoltaics (PV) Energy and Mass Flows in the Circular Economy, from a Reliability and Lifetime approach
HTML
32
star
55

REopt-Analysis-Scripts

Jupyter Notebook
31
star
56

OpenStudio-analysis-spreadsheet

The OpenStudio Analysis Spreadsheet is a front-end for the OpenStudio Server, allowing for users to create large-scale cloud analyses using OpenStudio measures.
Ruby
31
star
57

SOWFA-6

30
star
58

lk

LK (Language Kit) is a simple but powerful scripting language that is designed to be small, fast, and easily embedded in other applications. The core LK engine, including lexical analyzer, parser, compiler, and virtual machine is only dependent on the Standard C++ Library (STL), making it extremely lightweight and portable.
C
30
star
59

GEOPHIRES-v2

GEOPHIRES v2.0: a free and open-source geothermal techno-economic simulator
Python
30
star
60

flasc

A rich floris-driven suite for SCADA analysis
Jupyter Notebook
28
star
61

bifacialvf

Bifacial PV View Factor model for system performance calculation
Python
28
star
62

OCHRE

A Python-based building energy modeling (BEM) tool designed to model flexible loads in residential buildings
Python
28
star
63

rlmolecule

A reinforcement learning library for material and molecule optimization
Python
27
star
64

MoorPy

Python
27
star
65

EnergyPlusRelease

Fortran
27
star
66

ComStock

National scale modeling of the U.S. commercial building stock supported by U.S. DOE, LADWP, and others and maintained by NREL
Ruby
25
star
67

openfast-turbine-models

A repository of OpenFAST turbine models developed by NREL researchers.
Jupyter Notebook
25
star
68

BACnet

Java
24
star
69

api-umbrella-gatekeeper

See the https://github.com/NREL/api-umbrella repository instead.
JavaScript
23
star
70

m2p

Python
23
star
71

ROSCO_toolbox

A repository for generating ROSCO controller input files and more.
Python
23
star
72

OpenStudio-PAT

The Parametric Analysis Tool (PAT) is part of the OpenStudio collection of software tools.
Ruby
23
star
73

api-umbrella-web

See the https://github.com/NREL/api-umbrella repository instead.
Ruby
22
star
74

OpenWARP

Please visit http://nrel.github.io/OpenWARP/ for more information.
Python
22
star
75

REopt.jl

Julia
22
star
76

ATB-calc

Python files and Jupyter notebooks for processing the Annual Technology Baseline (ATB) electricity data and determining LCOE and other metrics.
Python
22
star
77

HOPP

Jupyter Notebook
21
star
78

PyPSSE

Python
21
star
79

reVX

The Renewable Energy Potential(V) eXchange Tool: reVX
Python
21
star
80

OpenStudio-Prototype-Buildings

Ruby
20
star
81

buildstockbatch

Python
20
star
82

docker-openstudio

Repository for managing the builds of OpenStudio Docker images.
Dockerfile
20
star
83

Panel-Segmentation

This open-source package provides a framework for automatically detecting and extracting metadata from solar array installations in satellite images.
Jupyter Notebook
20
star
84

ProgressiveHedging.jl

Basic progressive hedging implementation in Julia
Julia
20
star
85

powerscenarios

Realistic renewable energy scenarios for stochastic grid optimization problems
MATLAB
20
star
86

electrolyzer

Python
19
star
87

hive

HIVEâ„¢ is a mobility services research platform
Python
19
star
88

hescore-hpxml

HPXML to Home Energy Score Translator
Python
18
star
89

OpenStudio-fault-measure-gem

OpenStudio measures for modeling building faults
Ruby
18
star
90

CampusEnergyModeling

MATLAB
18
star
91

latex_editing

TeX
18
star
92

OpenStudio-resources

HTML
18
star
93

rex

REsource eXtraction Tool (rex)
Python
18
star
94

OpenStudio-ERI

Energy Rating Index (ERI) calculation via OpenStudio/EnergyPlus.
Ruby
17
star
95

NRWAL

The National Renewable Energy Laboratory Wind Analysis Libray (NRWAL)
Python
17
star
96

fastsim

Python
17
star
97

DSS-SimPy-RL

This repository is an Reinforcement Learning Platform for learning agents to control cyber-physical Power Distribution Systems resiliently. The cyber environment in based on SimPy Discrete Event Simulator, while the distribution system is backened by Open-DSS.
Python
17
star
98

rplexos

C++
16
star
99

hsds-viz

Interactive Visualization of WIND Toolkit Data using HSDS Data Service
JavaScript
16
star
100

PIDG

R
15
star