power-station-dictionary

A power station dictionary that enables mapping between various naming conventions and associated plant metadata

https://github.com/osuked/power-station-dictionary

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.3%) to scientific vocabulary

Keywords

energy-data power-stations
Last synced: 9 months ago · JSON representation

Repository

A power station dictionary that enables mapping between various naming conventions and associated plant metadata

Basic Info
Statistics
  • Stars: 28
  • Watchers: 1
  • Forks: 9
  • Open Issues: 22
  • Releases: 5
Topics
energy-data power-stations
Created over 5 years ago · Last pushed over 1 year ago
Metadata Files
Readme License

README.md

Power Station Dictionary

The Power Station Dictionary is a site that enables mapping between various power plant ids and automatically extracts data relating to those plants from Frictionless Data packages.

N.b. This project is currently in active development.


Any and all contributions are very welcome. If you are less comfortable editing via GitHub please contribute via this Google Sheet (GitHub is still preferred if possible).



Motivation

Existing work into increasing the visibility of energy data has focused on improving the ability of humans to find datasets, which has historically been a key issue within a highly fragmented energy data landscape. Groups such as the Energy Data Taskforce have prompted a new wave of metadata standardisation and data cataloguing initiatives which have gone a long way to solving this issue, opening up new opportunities such as the creation of digital twins of the power grid. However, these new opportunities bring new challenges. To enable a digital twin of the energy system we need to be able to "describe relationships between assets and datasets", requiring two core extensions to our existing toolset:

  1. Field-level metadata that describes the contents of individual columns in a dataset
  2. "Mapping" datasets that are able to express the relationships between other datasets

Dictionary Diagram

These additions enable us to move from improving the ability of humans to discover datasets to making it easier for machines to automatically find and extract relevant data - a need that will only increase as the number and size of datasets continues to grow. The benefits extend beyond our digital colleagues though - by pivoting data exploration to be about finding objects/assets, which then reveal the datasets (and attributes) they are linked to, we can create a more intuitive search experience. Similar to Google’s move from searching for "Things not Strings", the data dictionary lets us search for "Assets not Datasets".

To illustrate the benefits of such a framework we are building a pilot dictionary focused on improving the discoverability, linkage, and automated extraction of data relating to power stations on the GB system. Power stations were chosen due to the high number of datasets they relate to, the wide range of ids used to describe them, and the current duplication in efforts to link them across industry and academia. We will then demonstrate how the dictionary can be used for analysis with two case studies: one researching the carbon intensity of individual generators by matching power output and carbon emission datasets, the second linking wholesale price and renewable subsidy data to help explain why wind subsidies have fallen below the average market price.



Dictionary Framework

Dictionary Schema & Core Dataset

The dictionary is composed of two files, a csv containing ids that relate to different power stations and a json containing metadata written as an extension to the Frictionless Data Tabular schema. "Frictionless Data (FD) is an open-source toolkit that brings simplicity to the data experience" through an open-source standard that defines a specification for describing metadata relating to different types of datasets. Once a dataset has been described using the specification it then becomes incredibly easy to load it using different programming languages as well as export it into a wide range of different formats. What makes FD different to most other specifications is that they provide a comprehensive way to describe individual columns within a dataset, including their formats and constraints.

The majority of the schema is the same as the Tabular Schema published by FD. The core change is the use of foreignKeys to link to external datasets that use ids specified in the dictionary, a separate attributes entry then describes the columns which should be extracted from the dataset. The hierarchy attribute for each column then describes whether the ids in that column have a same-as or part-of relationship with the asset they’re linked to. A further url_format entry then provides a way to convert specific IDs into urls (e.g. with wikidata ids).

The datasets linked to the dictionary must be described using the FD tabular schema, however, the metadata does not need to be stored adjacent to the raw source and could be generated by a third party rather than the original data provider. Data-providers from within the energy sector already using this format include Public Utility Data Library and Open Power System Data. As well as being able to link into the dictionary by publishing your datasets using this standard you can make use of a wider ecosystem of data tools.


Building the Knowledge Graph/Website

Once the dictionary has been created a Python library then uses it to programmatically identify the different assets it contains, and then extract data relating to those assets from the datasets linked to the dictionary. The generation steps are as follows:

  1. Each row of the dictionary is iterated over with the associated ids extracted for each asset
  2. The datasets linked to the dictionary which contain an id relating to the current asset are identified
  3. The relevant attributes for each asset which are contained in the linked datasets are then extracted
  4. For each asset the outputted linked ids, datasets, and attributes are then used to populate a markdown template which forms the basis of a webpage within the dictionary site



Installation

To install the powerdict library please run:

bash pip install powerdict


Development Set-Up

To set-up a new environment you can run the following from the batch_scripts directory

bash setup_env

Alternatively you can run these commands

bash call conda env create -f environment.yml call conda activate PowerDict call ipython kernel install --user --name=PowerDict


Publishing to PyPi

To publish the powerdict module to PyPi simply run the following from the batch_scripts directory

bash pypi_publish

or follow these commands

bash call conda activate PowerDict call python setup.py sdist bdist_wheel call twine upload --skip-existing dist/*

When prompted you should enter your PyPi username and password

After this you will be able to install the latest version of powerdict using pip install powerdict

Owner

  • Name: Open Source UK Energy Data
  • Login: OSUKED
  • Kind: organization

OSUKED is a combination of API wrappers, git-scrapers and Python tools for the UK energy sector

GitHub Events

Total
  • Watch event: 4
  • Delete event: 1
  • Pull request event: 2
  • Fork event: 2
Last Year
  • Watch event: 4
  • Delete event: 1
  • Pull request event: 2
  • Fork event: 2

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 212
  • Total Committers: 5
  • Avg Commits per committer: 42.4
  • Development Distribution Score (DDS): 0.481
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
AyrtonB A****n@O****m 110
Ayrton Bourn a****n@o****m 49
AyrtonB A****B@u****m 48
Aiden Kerr A****r@e****k 3
jsteinemann j****n@e****k 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 25
  • Total pull requests: 9
  • Average time to close issues: 6 months
  • Average time to close pull requests: 10 months
  • Total issue authors: 3
  • Total pull request authors: 5
  • Average comments per issue: 0.24
  • Average comments per pull request: 0.56
  • Merged pull requests: 3
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 2
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 0.0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • AyrtonB (23)
  • Jess-St (1)
  • Rabscuttler (1)
Pull Request Authors
  • Jess-St (3)
  • axsy99 (2)
  • ClemAtt (2)
  • AidenJK (2)
  • AyrtonB (1)
Top Labels
Issue Labels
enhancement (5) good first issue (2)
Pull Request Labels

Packages

  • Total packages: 3
  • Total downloads:
    • pypi 37 last-month
  • Total dependent packages: 0
    (may contain duplicates)
  • Total dependent repositories: 1
    (may contain duplicates)
  • Total versions: 40
  • Total maintainers: 1
proxy.golang.org: github.com/OSUKED/Power-Station-Dictionary
  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 9 months ago
proxy.golang.org: github.com/osuked/power-station-dictionary
  • Versions: 17
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 9 months ago
pypi.org: powerdict

A power station dictionary that enables mapping between various naming conventions and associated plant metadata

  • Versions: 6
  • Dependent Packages: 0
  • Dependent Repositories: 1
  • Downloads: 37 Last month
Rankings
Dependent packages count: 7.4%
Forks count: 13.4%
Stargazers count: 14.9%
Average: 19.9%
Dependent repos count: 22.2%
Downloads: 41.6%
Maintainers (1)
Last synced: 9 months ago

Dependencies

.github/workflows/auto-release.yml actions
  • actions/checkout master composite
  • actions/setup-python v1 composite
  • marvinpinto/action-automatic-releases latest composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/generate_output_dataset.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • stefanzweifel/git-auto-commit-action v4 composite
.github/workflows/update_ids.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v1 composite
  • stefanzweifel/git-auto-commit-action v4 composite
environment.yml pypi
  • SwaggerPlugin *
  • configparser *
  • feautils *
  • junix *
  • mkdocs-material-extensions *
  • mkdocstrings *
  • nbdev *
setup.py pypi