In [1]:
import imp
from datetime import datetime, timedelta
import pandas as pd

# loads module from temp directory
dag = imp.load_source("disaggregator","../disaggregator/disaggregator.py")


/usr/local/lib/python2.7/dist-packages/pandas/io/excel.py:626: UserWarning: Installed openpyxl is not supported at this time. Use >=1.6.1 and <2.0.0.
  .format(openpyxl_compat.start_ver, openpyxl_compat.stop_ver))

This notebook outlines a sample usage of the disaggregator module

For clarity describing the process in a general way, the data is not real.


In [2]:
# dataframe with power and time
length = 10
now = datetime.utcnow()
times = [now + timedelta(seconds=15*60*x) for x in range(0, length)]
powers = [1. + (.1*x) for x in range(length)]
df1 = pd.DataFrame({'time': times,'power':powers})
df2 = pd.DataFrame({'time': times,'power':powers})
print df1


   power                       time
0    1.0 2014-06-18 20:25:45.559091
1    1.1 2014-06-18 20:40:45.559091
2    1.2 2014-06-18 20:55:45.559091
3    1.3 2014-06-18 21:10:45.559091
4    1.4 2014-06-18 21:25:45.559091
5    1.5 2014-06-18 21:40:45.559091
6    1.6 2014-06-18 21:55:45.559091
7    1.7 2014-06-18 22:10:45.559091
8    1.8 2014-06-18 22:25:45.559091
9    1.9 2014-06-18 22:40:45.559091

In [3]:
# single devices with independently sampled data
fridge_example_1 = dag.DeviceInstance(df1)
fridge_example_2 = dag.DeviceInstance(df2)


---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-ea4728d2f7e6> in <module>()
      1 # single devices with independently sampled data
----> 2 fridge_example_1 = dag.DeviceInstance(df1)
      3 fridge_example_2 = dag.DeviceInstance(df2)

TypeError: Can't instantiate abstract class DeviceInstance with abstract methods learn_parameters

In [4]:
# grouped devices form a device type
fridges = [fridge_example_1,fridge_example_2]
refrigerator = dag.DeviceType(fridges)

refrigerator.learn_parameters()

In [5]:
# want to disaggregate this data
raw_aggregated_data = pd.DataFrame()

# grouped device_types form a building
device_types = [refrigerator]
building1 = dag.MeteredUnit()

# decide how likely each appliance is
building1.learn_device_types(raw_aggregated_data,device_types)

## (probably does something like this):
# probabilities = []
# for appliance_type in [refrigerator]:
#     probabilities.append(appliance_type.probability_present(raw_aggregated_data))

# disaggregation for this building
building1.learn_disaggregator_parameters()
disaggregated_data, confidences = building1.disaggregate(raw_aggregated_data)