opendsm

An open-source python package for implementing and developing standard methods for calculating normalized metered energy consumption and avoided energy use.

https://github.com/opendsm/opendsm

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 (13.2%) to scientific vocabulary

Keywords

building-energy efficiency energy energy-data energy-efficiency

Keywords from Contributors

weather weather-station weather-data cryptocurrencies climate-change climate-data notebook docs
Last synced: 6 months ago · JSON representation

Repository

An open-source python package for implementing and developing standard methods for calculating normalized metered energy consumption and avoided energy use.

Basic Info
  • Host: GitHub
  • Owner: opendsm
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Homepage: https://opendsm.energy
  • Size: 147 MB
Statistics
  • Stars: 231
  • Watchers: 20
  • Forks: 71
  • Open Issues: 5
  • Releases: 20
Topics
building-energy efficiency energy energy-data energy-efficiency
Created over 9 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Maintainers

README.md

OpenDSM: Tools for calculating metered energy savings

PyPI Version Supported Versions License Code Style


OpenDSM (formerly OpenEEmeter) — an open-source library used to measure the impacts of demand-side programs by using historical data to fit models and then create predictions (counterfactuals) to compare to post-intervention, observed energy usage.

Background - Why use OpenDSM

Energy efficiency programs have traditionally focused on addressing long-term load growth and reducing customer energy bills rather than serving as reliable grid resources. However, as utilities work to decarbonize power generation, buildings, and transportation, demand-side programs (e.g. energy efficiency, load shifting, electrification, and demand response programs) must evolve into dependable, scalable grid assets. Ultimately, decarbonizing the power grid will require both supply and demand-side solutions. While supply-side production is easily quantified, measuring the impacts of demand-side programs has historically been challenging due to inconsistent and opaque measurement methodologies.

OpenDSM solves these problems with accurate, efficient, and transparent models designed to measure demand-side program impacts. OpenDSM gives all stakeholders full visibility and confidence in the results.

OpenDSM builds upon the shoulders of OpenEEmeter and the CalTRACK Methods which themselves are built upon the foundational work of the Princeton Scorekeeping Method (PRISM 1986) for the daily and billing models and Lawrence Berkeley National Laboratory's Time-of-Week and Temperature Model (TOWT 2011) for the hourly energy efficiency and demand response models. OpenDSM models have been proven to meet or exceed the predictive capablity of the aforementioned models. These models adhere to a statistical approach, as opposed to an engineering approach, so that these models can be efficiently run on millions of meters at a time, while still providing accurate predictions.

Using default settings in OpenDSM will provide accurate and stable model predictions suitable for savings measurements from demand side interventions. Settings can be modified and sufficiency requirements can be bypassed for research and development purposes; however, the outputs of such models are no longer OpenDSM compliant measurements as the modifications mean that these models are no longer verified and approved by the OpenDSM Working Group.

Installation

OpenDSM is a python package and can be installed with pip.

~~~~~~~~~~~~~~~ $ pip install opendsm ~~~~~~~~~~~~~~~

Features

  • Models:

    • Energy Efficiency Daily Model
    • Energy Efficiency Billing (Monthly) Model
    • Energy Efficiency Non-Solar Hourly Model
    • Energy Efficiency Solar Hourly Model
    • Demand Response Hourly Model
  • Flexible sources of temperature data. See EEweather.

  • Data sufficiency checking

  • Model serialization

  • First-class warnings reporting

Documentation

Documenation for this library can be found here.

Future Development

The OpenDSM project growth goals fall into two categories:

  1. Community goals - we want help our community thrive and continue to grow.
  2. Technical goals - we want to keep building the library in new ways that make it as easy as possible to use.

Community goals

  1. Improve repository structure, architecture, and API

The first step of being able to contribute to a project is to understand how the repository is laid out and how OpenDSM is architected. We have made giant steps in this area as of late, but there is additional organizational work to be done. This will continue to be an ongoing area of work.

  1. Make it easier to contribute

As our user base grows, the need and desire for users to contribute back to the library also grows, and we want to make this as seamless as possible. This means writing and maintaining contribution guides, and creating checklists to guide users through the process.

Technical goals

  1. Update the Demand Response (DR) model

In the most recent release, the hourly energy efficiency (EE) model has been entirely changed and updated. Much like the billing model is to the daily model, the DR model is a subset of the EE hourly model. Many of the improvements seen in the EE hourly model could be realized in the DR model if it were finalized. It is currently in a functional state within a branch, but its parameters have not been optimized rendering it unusable for measurements. In the meantime, the existing DR model is still available.

  1. Reassess existing sufficiency and disqualification criteria

The existing sufficiency and disqualification criteria exist as conservative estimates from OpenEEmeter and CalTRACK recommendations. There is almost certainly room for these criteria to be revisited so that more meters would pass and be approved for measurement.

  1. Determine the sufficiency requirements of PV installation date in the hourly model

The hourly EE model currently has the capability of ingesting a PV installation date and generating an additional feature that can much better represent a meter who installs a solar PV system mid-baseline year. However, this feature currently is classified as experimental and not allowed for official measurement because we have not quantified how much data is required post-installation to be able to accurately predict the meter's behavior in the reporting year.

  1. Improve the daily model

There are two potential areas of improvement of the daily model. First it could be extended to allow additional sources of information, but this must carefully be considered as the primary usage of the daily model is to be able to disaggregate heating and cooling usage. The second area of improvement would be to allow an additional break point within both the cooling and heating regions such that the model would be able to change slope. This should likely still be limited such that the model's slope in each region is appropriately constrained. A new smoothing function would also need to be developed.

  1. Integrate EEweather

EEweather is commonly used to obtain weather information to be used within OpenDSM. If it were more tightly coupled, it would streamline the most standard use of OpenDSM. As an example this could simplify several of the data classes such that the aggregation of weather data would be done within EEweather instead of within data classes where it is a more complex procedure

  1. Integrate GRIDmeter

GRIDmeter is frequently used after DR/EEmeter in order to correct models for external population-level effects by using non-participant meters. Similarly to EEweather, this process could be streamlines and made more cohesive by fully integrating it into OpenDSM.

  1. Organize and revise existing test suite

The existing testing suite is the last remaining vestige of the library prior to the extensive reorganization and API changes made. It would be well served to update the testing suite to make it easier for future contributors to know how and where they should develop their tests for any new features or bugs found.

  1. Greater weather coverage

The weather station coverage in the EEweather package includes full coverage of US and Australia, but with some technical work, it could be expanded to include greater, or even worldwide coverage.

License

This project is licensed under Apache 2.0.

Other resources

Owner

  • Name: OpenDSM
  • Login: opendsm
  • Kind: organization
  • Email: info@lfenergy.org

Collaboratively advancing the future of demand-side energy

GitHub Events

Total
  • Create event: 34
  • Issues event: 7
  • Release event: 7
  • Watch event: 7
  • Delete event: 41
  • Issue comment event: 15
  • Push event: 129
  • Pull request review event: 18
  • Pull request event: 50
  • Fork event: 2
Last Year
  • Create event: 34
  • Issues event: 7
  • Release event: 7
  • Watch event: 7
  • Delete event: 41
  • Issue comment event: 15
  • Push event: 129
  • Pull request review event: 18
  • Pull request event: 50
  • Fork event: 2

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 2,219
  • Total Committers: 49
  • Avg Commits per committer: 45.286
  • Development Distribution Score (DDS): 0.493
Past Year
  • Commits: 201
  • Committers: 5
  • Avg Commits per committer: 40.2
  • Development Distribution Score (DDS): 0.552
Top Committers
Name Email Commits
Phil Ngo n****l@g****m 1,126
Jason Chulock j****n@r****m 218
travis-recurve 1****e@u****m 153
Stephen Suffian s****e@o****o 118
Tom Plagge t****e@g****m 97
pyup-bot g****t@p****o 62
hshaban h****n@g****m 49
Stephen Suffian s****n@p****e 47
Steve s****e@r****m 46
joydeep-recurve j****p@r****m 36
Tom Plagge t****e@o****o 34
Stephen Suffian s****n@g****m 28
toshi09 t****s@g****m 26
James Fenna j****s@c****p 24
ArminRecurve A****n@r****m 20
Marc-Antoine m****c@M****l 18
Eric Potash e****c@k****t 17
Michael Keasey m****l@r****m 15
Peter Olson p****n@g****m 12
Vikhyati Singh v****i@o****o 10
Mariano Teehan m****o@r****m 8
Dave Yeager d****r@o****o 6
Jeremy Wickersheimer j****s@g****m 5
Eric Dill t****e@g****m 4
Phillips N****s@d****m 4
Arpan Kotecha a****a@g****m 3
Joe Glass j****z@g****m 3
Phil Ngo 1****e@u****m 3
Reetu Mutti r****u@o****o 3
Arpan Kotecha a****n@o****o 2
and 19 more...
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 4
  • Total pull requests: 40
  • Average time to close issues: over 2 years
  • Average time to close pull requests: 21 days
  • Total issue authors: 4
  • Total pull request authors: 7
  • Average comments per issue: 4.25
  • Average comments per pull request: 0.2
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 4
Past Year
  • Issues: 1
  • Pull requests: 38
  • Average time to close issues: about 18 hours
  • Average time to close pull requests: 2 days
  • Issue authors: 1
  • Pull request authors: 6
  • Average comments per issue: 2.0
  • Average comments per pull request: 0.21
  • Merged pull requests: 27
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • nmerket (1)
  • vsitucal-personal (1)
  • tedtanaka (1)
  • Viktoriya-An (1)
Pull Request Authors
  • travis-recurve (22)
  • ssuffian (5)
  • jason-recurve (4)
  • dependabot[bot] (4)
  • khosravym (2)
  • emmanuel-ferdman (2)
  • canchola-recurve (1)
Top Labels
Issue Labels
Pull Request Labels
dependencies (4)

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 2,943 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 9
  • Total maintainers: 2
pypi.org: opendsm

Measure demand-side program impacts

  • Versions: 9
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 2,943 Last month
Rankings
Dependent packages count: 9.6%
Average: 31.9%
Dependent repos count: 54.2%
Maintainers (2)
Last synced: 6 months ago

Dependencies

Dockerfile docker
  • python 3.6.6 build
docker-compose.yml docker
  • eemeter_shell latest
Pipfile pypi
  • black ==18.6b4 develop
  • coverage * develop
  • jupyterlab * develop
  • nbsphinx * develop
  • pytest * develop
  • pytest-cov * develop
  • pytest-profiling * develop
  • pytest-xdist * develop
  • snapshottest ==0.6.0 develop
  • sphinx * develop
  • sphinx-autobuild * develop
  • sphinxcontrib-spelling * develop
  • tox * develop
  • twine * develop
  • typing * develop
  • click ==7.0
  • eeweather >=0.3.12
  • matplotlib *
  • pandas ==0.25.2
  • scipy ==1.4.1
  • sqlalchemy *
  • statsmodels ==0.11.1
Pipfile.lock pypi
  • 148 dependencies
docs/rtd-requirements.txt pypi
  • nbsphinx ==0.4.2
  • sphinxcontrib-spelling ==4.2.1
setup.py pypi