windIO: a community-focused data I/O format#

The repository defines two frameworks defining the inputs and outputs for systems engineering MDAO of wind turbine and plants. The github repository is here. The frameworks are implemented in two yaml-schemas, one for the turbine and one for the plant, to enforce an ontology of how data should be organized. The reference wind turbines designed within the IEA Wind Systems Engineering Task are checked against the schema through unit testing. You can access the yaml files at the following links:

Installation#

windIO is typically included as a dependency in software that uses the windIO data format, so users will normally not need to install it directly. However, it can be useful to install the windIO package to access version converters or during integration into a software package. In that case, windIO can be installed from PyPI with the following command:

pip install windIO

Supporting windIO in your software#

The windIO data format is defined by the schemas included in this repository. In order for a software to support windIO, it must support the data as described in the schemas and use the included functions to validate the data. windIO should be included as a dependency. It is distributed through PyPI and can be installed as a package with pip. The suggested method of incorporating windIO into your code is:

import windIO

# Other code here

windIO.validate(input="path/to/input.yaml", schema_type="plant/wind_energy_system <for example>")
windIO.load_yaml("path/to/input.yaml")

# Conversion to your software's data structures here

Software library reference#

windIO.enforce_no_additional_properties(schema)#

Recursively set additionalProperties: false for all objects in the schema

windIO.validate(input: dict | str | Path, schema_type: str, restrictive: bool = True) None#

Validates a given windIO input based on the selected schema type.

Parameters:
  • input (dict | str | Path) – Input data or path to file to be validated.

  • schema_type (str) – Type of schema to be used for validation. This must map to one of the schema files available in the schemas/plant or schemas/turbine folders. Examples of valid schema types are ‘plant/wind_energy_system’ or ‘turbine/IEAontology_schema’.

  • restrictive (bool, optional) – If True, the schema will be modified to enforce that no additional properties are allowed. Defaults to True.

Raises:
  • FileNotFoundError – If the schema type is not found in the schemas folder.

  • TypeError – If the input type is not supported.

  • jsonschema.exceptions.ValidationError – If the input data fails validation against the schema.

  • jsonschema.exceptions.SchemaError – if the schema itself is invalid.

Returns:

None

Contents#