Skip to content

The measurement and verification methodology of the H2020 project SENSEI

License

Notifications You must be signed in to change notification settings

hebes-io/eensight

Repository files navigation

logo

PyPI version

The eensight tool for measurement and verification of energy efficiency improvements

The eensight Python package implements the measurement and verification (M&V) methodology that has been developed by the H2020 project SENSEI - Smart Energy Services to Improve the Energy Efficiency of the European Building Stock.

The online book Rethinking Measurement and Verification of Energy Savings (accessible here) explains in detail both the methodology and its implementation.

Installation

eensight can be installed by pip:

pip install eensight

Usage

1. Through the command line

All the functionality in eensight is organized around data pipelines. Each pipeline consumes data and other artifacts (such as models) produced by a previous pipeline, and produces new data and artifacts for its successor pipelines.

There are four (4) pipelines in eensight. The names of the pipelines and the associations between pipelines and namespaces are summarized below:

train test apply
preprocess
predict
evaluate
adjust

The primary way of using eensight is through the command line. The first argument is always the name of the pipeline to run, such as:

eensight run predict --namespace train

The command

eensight run --help

prints the documentation for all the options that can be passed to the command line.

2. As a library

The pipelines of eensight are separate from the methods that implement them, so that the latter can be used directly:

import pandas as pd

from eensight.methods.prediction.baseline import UsagePredictor
from eensight.methods.prediction.activity import estimate_activity

non_occ_features = ["temperature", "dew point temperature"]

activity = estimate_activity(
    X, 
    y, 
    non_occ_features=non_occ_features, 
    exog="temperature",
    assume_hurdle=False,

)

X_act = pd.concat([X, activity.to_frame("activity")], axis=1)
model = UsagePredictor(skip_calendar=True).fit(X_act, y)