nilmtk

Non-Intrusive Load Monitoring Toolkit (nilmtk)

https://github.com/nilmtk/nilmtk

Science Score: 59.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
    Found 11 DOI reference(s) in README
  • Academic publication links
    Links to: arxiv.org
  • Committers with academic emails
    10 of 56 committers (17.9%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (17.6%) to scientific vocabulary

Keywords

algorithms disaggregation energy energy-disaggregation forecasting ipython-notebook nilm nilm-algorithms nilmtk python
Last synced: 6 months ago · JSON representation

Repository

Non-Intrusive Load Monitoring Toolkit (nilmtk)

Basic Info
  • Host: GitHub
  • Owner: nilmtk
  • License: apache-2.0
  • Language: Python
  • Default Branch: master
  • Homepage: http://nilmtk.github.io
  • Size: 50.7 MB
Statistics
  • Stars: 880
  • Watchers: 65
  • Forks: 480
  • Open Issues: 125
  • Releases: 5
Topics
algorithms disaggregation energy energy-disaggregation forecasting ipython-notebook nilm nilm-algorithms nilmtk python
Created about 12 years ago · Last pushed 8 months ago
Metadata Files
Readme License

README.md

NILMTK: Non-Intrusive Load Monitoring Toolkit

Non-Intrusive Load Monitoring (NILM) is the process of estimating the energy consumed by individual appliances given just a whole-house power meter reading. In other words, it produces an (estimated) itemised energy bill from just a single, whole-house power meter.

NILMTK is a toolkit designed to help researchers evaluate the accuracy of NILM algorithms. If you are a new Python user, it is recommended to educate yourself on Pandas, Pytables and other tools from the Python ecosystem.

⚠️It may take time for the NILMTK authors to get back to you regarding queries/issues. However, you are more than welcome to propose changes, support! Remember to check existing issue tickets, especially the open ones.

Documentation

NILMTK Documentation

Installation

UV Support

This Python package uses uv for installation. uv is a fast and modern Python package manager that replaces tools like pip and virtualenv, with support for pyproject.toml and ultra-fast dependency resolution.

To install NILMTK, first install uv and then run:
uv pip install git+https://github.com/nilmtk/nilmtk.git

Docker Support

Docker is an open-source platform for developing, shipping, and running applications in lightweight, portable containers that bundle code, runtime, libraries, and system tools into a single package. It ensures everyone runs the same environment, regardless of host OS, and keeps NILMTK’s dependencies contained without polluting the system Python.

Build and run locally docker build -t nilmtk-uv . docker run --rm -it nilmtk-uv bash Pull the pre-built image docker pull ghcr.io/enfuego27826/nilmtk:latest docker run --rm -it ghcr.io/enfuego27826/nilmtk:latest bash

It came to our attention that some users follow third-party tutorials to install NILMTK. Always remember to check the dates of such tutorials, many are very outdated and don't reflect NILMTK's current version or the recommended/supported setup.

Why a toolkit for NILM?

We quote our NILMTK paper explaining the need for a NILM toolkit:

Empirically comparing disaggregation algorithms is currently virtually impossible. This is due to the different data sets used, the lack of reference implementations of these algorithms and the variety of accuracy metrics employed.

What NILMTK provides

To address this challenge, we present the Non-intrusive Load Monitoring Toolkit (NILMTK); an open source toolkit designed specifically to enable the comparison of energy disaggregation algorithms in a reproducible manner. This work is the first research to compare multiple disaggregation approaches across multiple publicly available data sets. NILMTK includes:

  • parsers for a range of existing data sets (8 and counting)
  • a collection of preprocessing algorithms
  • a set of statistics for describing data sets
  • a number of reference benchmark disaggregation algorithms
  • a common set of accuracy metrics
  • and much more!

Publications

If you use NILMTK in academic work then please consider citing our papers. Here are some of the publications (contributors, please update this as required):

  1. Nipun Batra, Jack Kelly, Oliver Parson, Haimonti Dutta, William Knottenbelt, Alex Rogers, Amarjeet Singh, Mani Srivastava. NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring. In: 5th International Conference on Future Energy Systems (ACM e-Energy), Cambridge, UK. 2014. DOI:10.1145/2602044.2602051. arXiv:1404.3878.
  2. Nipun Batra, Jack Kelly, Oliver Parson, Haimonti Dutta, William Knottenbelt, Alex Rogers, Amarjeet Singh, Mani Srivastava. NILMTK: An Open Source Toolkit for Non-intrusive Load Monitoring". In: NILM Workshop, Austin, US. 2014 [pdf]
  3. Jack Kelly, Nipun Batra, Oliver Parson, Haimonti Dutta, William Knottenbelt, Alex Rogers, Amarjeet Singh, Mani Srivastava. Demo Abstract: NILMTK v0.2: A Non-intrusive Load Monitoring Toolkit for Large Scale Data Sets. In the first ACM Workshop On Embedded Systems For Energy-Efficient Buildings, 2014. DOI:10.1145/2674061.2675024. arXiv:1409.5908.
  4. Nipun Batra, Rithwik Kukunuri, Ayush Pandey, Raktim Malakar, Rajat Kumar, Odysseas Krystalakos, Mingjun Zhong, Paulo Meira, and Oliver Parson. 2019. Towards reproducible state-of-the-art energy disaggregation. In Proceedings of the 6th ACM International Conference on Systems for Energy-Efficient Buildings, Cities, and Transportation (BuildSys '19). Association for Computing Machinery, New York, NY, USA, 193–202. DOI:10.1145/3360322.3360844

Please note that NILMTK has evolved a lot since most of these papers were published! Please use the online docs as a guide to the current API.

Brief history

  • August 2019: v0.4 released with the new API. See also NILMTK-Contrib.
  • June 2019: v0.3.1 released on Anaconda Cloud.
  • Jav 2018: Initial Python 3 support on the v0.3 branch
  • Nov 2014: NILMTK wins best demo award at ACM BuildSys
  • July 2014: v0.2 released
  • June 2014: NILMTK presented at ACM e-Energy
  • April 2014: v0.1 released

For more detail, please see our changelog.

Owner

  • Name: nilmtk
  • Login: nilmtk
  • Kind: organization

GitHub Events

Total
  • Issues event: 8
  • Watch event: 55
  • Issue comment event: 15
  • Push event: 4
  • Pull request review comment event: 5
  • Pull request review event: 7
  • Pull request event: 7
  • Fork event: 21
Last Year
  • Issues event: 8
  • Watch event: 55
  • Issue comment event: 15
  • Push event: 4
  • Pull request review comment event: 5
  • Pull request review event: 7
  • Pull request event: 7
  • Fork event: 21

Committers

Last synced: 6 months ago

All Time
  • Total Commits: 1,716
  • Total Committers: 56
  • Avg Commits per committer: 30.643
  • Development Distribution Score (DDS): 0.488
Past Year
  • Commits: 16
  • Committers: 3
  • Avg Commits per committer: 5.333
  • Development Distribution Score (DDS): 0.438
Top Committers
Name Email Commits
Jack Kelly j****t@x****k 878
nipunreddevil n****l@g****m 444
Paulo Meira 1****a 123
Oliver Parson o****6@e****k 36
Oliver Parson o****n@g****m 28
Rishi Baijal r****4@i****n 24
josemao j****a@d****s 24
ayushp20.com a****0@g****l 11
beckel b****l@i****h 10
Mridul Malpotra m****a@g****m 10
Raktim Malakar r****5@g****m 10
Guillaume Levasseur p****l@p****t 10
Dhru Harsh Darshakbhai 2****7@i****n 9
magusverma m****1@i****n 7
Oliver Parson o****n@b****k 6
Rajat r****2@g****m 6
Oliver Parson o****p@e****k 5
oliver parson o****n@d****k 5
enfuego27826 a****9@g****m 5
prince7003 1****3 5
Oliver Parson u****r@E****l 4
Batra Nipun n****a@N****l 4
Andrea a****i@g****m 3
Florian Kalinke f****a@g****m 3
Hetvi Shastri h****9@g****m 3
unknown r****0@g****m 3
Andrea Monacchi a****i@s****t 3
Batra Nipun n****a@d****U 3
Oliver Parson u****r@E****g 2
Joulo u****r@d****k 2
and 26 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 873
  • Total pull requests: 134
  • Average time to close issues: 9 months
  • Average time to close pull requests: about 1 month
  • Total issue authors: 246
  • Total pull request authors: 52
  • Average comments per issue: 4.43
  • Average comments per pull request: 1.58
  • Merged pull requests: 87
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 8
  • Pull requests: 10
  • Average time to close issues: N/A
  • Average time to close pull requests: 1 day
  • Issue authors: 7
  • Pull request authors: 2
  • Average comments per issue: 0.13
  • Average comments per pull request: 0.5
  • Merged pull requests: 6
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • JackKelly (177)
  • nipunbatra (140)
  • gjwo (25)
  • PMeira (21)
  • sanketvijaydesai (18)
  • walidsliti (16)
  • RishiBaijal (12)
  • suni9915 (11)
  • nekovolta (10)
  • deploy15 (9)
  • oliparson (9)
  • GautierAppert (9)
  • haderazzini (9)
  • DilanAgkoc (8)
  • bundit786 (8)
Pull Request Authors
  • prince7003 (20)
  • ayushp20 (14)
  • rajat-tech-002 (12)
  • beckel (8)
  • enfuego27826 (8)
  • pilillo (6)
  • raktim2015 (6)
  • nipunbatra (5)
  • levaphenyl (5)
  • klemenjak (3)
  • PMeira (3)
  • camilomarino (3)
  • Rithwikksvr (3)
  • hetvishastri (3)
  • MartinNeighbours (3)
Top Labels
Issue Labels
DataStore and format conversion (93) enhancement (84) question (57) bug (55) design (48) Building (34) outdated (34) documentation (32) NILM algorithm (30) Statistics and correlations (29) refactoring (25) pre-processing (17) Testing (17) Installation (15) HMM (12) Performance (11) support (10) Combinatorial Optimization (8) NILM metrics (8) simplify (6) invalid (5) needs more info (5) duplicate (4) Good as first PR (3) RE-API (2) discussion (2) offtopic (2) Review (2) in progress (2) planning (1)
Pull Request Labels
DataStore and format conversion (3) enhancement (1) bug (1)

Packages

  • Total packages: 1
  • Total downloads: unknown
  • Total dependent packages: 0
  • Total dependent repositories: 0
  • Total versions: 2
proxy.golang.org: github.com/nilmtk/nilmtk
  • Versions: 2
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.4%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago

Dependencies

setup.py pypi
  • hmmlearn >=0.2.1
  • jupyterlab *
  • matplotlib ==3.1.3
  • networkx ==2.1
  • numpy *
  • pandas ==0.25.3
  • pyyaml *
  • scikit-learn >=0.21.2
  • scipy *
  • tables *
environment.yml conda
  • hmmlearn
  • jupyterlab
  • matplotlib-base >=3.1.0,<3.2.0
  • networkx 2.1
  • nilm_metadata
  • nilmtk
  • nose
  • numpy >=1.13.3,<1.20
  • pandas >=0.25.3,<1.0
  • pytables
  • python >=3.6
  • scikit-learn >=0.21.2
  • scipy >=1.0.0