def test_select(self): fridge_meter = ElecMeter() fridge = Appliance({'type':'fridge', 'instance':1}) fridge_meter.appliances = [fridge] mg = MeterGroup([fridge_meter]) self.assertEqual(mg.select_using_appliances(category='cold'), mg)
def test_getitem(self): fridge_meter = ElecMeter() fridge = Appliance({'type': 'fridge', 'instance': 1}) fridge_meter.appliances = [fridge] mg = MeterGroup([fridge_meter]) # test good keys for key in [ 'fridge', ('fridge', 1), { 'type': 'fridge' }, { 'type': 'fridge', 'instance': 1 } ]: self.assertEqual(mg[key], fridge_meter) # test bad key values for key in [ 'foo', ('foo', 2), ('fridge', 2), { 'type': 'fridge', 'instance': -12 } ]: with self.assertRaises(KeyError): mg[key] # test bad key types for key in [True, False, ['fridge']]: with self.assertRaises(TypeError): mg[key]
def test_select(self): fridge_meter = ElecMeter() fridge = Appliance({'type': 'fridge', 'instance': 1}) fridge_meter.appliances = [fridge] mg = MeterGroup([fridge_meter]) self.assertEqual(mg.select_using_appliances(category='cold'), mg)
def test_wiring_graph(self): meter1 = ElecMeter(metadata={'site_meter': True}, meter_id=ElecMeterID(1,1,'REDD')) meter2 = ElecMeter(metadata={'submeter_of': 1}, meter_id=ElecMeterID(2,1,'REDD')) meter3 = ElecMeter(metadata={'submeter_of': 2}, meter_id=ElecMeterID(3,1,'REDD')) mg = MeterGroup([meter1, meter2, meter3]) wiring_graph = mg.wiring_graph() self.assertIs(mg.mains(), meter1) self.assertEqual(mg.meters_directly_downstream_of_mains().meters, [meter2]) self.assertEqual(wiring_graph.nodes(), [meter2, meter3, meter1])
def test_pipeline(self): meter1 = ElecMeter(store=self.datastore, metadata=self.meter_meta, meter_id=METER_ID) # load co_test.h5 dataset = DataSet(join(data_dir(), 'co_test.h5')) meter2 = dataset.buildings[1].elec.mains() for meter in [meter1, meter2]: for chunksize in [None, 2**10, 2**29]: if chunksize is None: load_kwargs = {} else: load_kwargs = {'chunksize': chunksize} source_node = meter.get_source_node(**load_kwargs) good_sections = GoodSections(source_node) good_sections.run() combined = good_sections.results #.simple() meter.clear_cache() meter.good_sections(**load_kwargs) meter.good_sections(**load_kwargs) meter.clear_cache() dataset.store.close()
def test_from_list(self): meters = [] for i in range(1,6): meters.append(ElecMeter(meter_id=ElecMeterID(i, 1, None))) mg = global_meter_group.from_list([ ElecMeterID(1,1,None), (ElecMeterID(2,1,None), (ElecMeterID(3,1,None), ElecMeterID(4,1,None), ElecMeterID(5,1,None))) ]) """
def test_getitem(self): fridge_meter = ElecMeter() fridge = Appliance({'type':'fridge', 'instance':1}) fridge_meter.appliances = [fridge] mg = MeterGroup([fridge_meter]) # test good keys for key in ['fridge', ('fridge', 1), {'type':'fridge'}, {'type':'fridge', 'instance': 1}]: self.assertEqual(mg[key], fridge_meter) # test bad key values for key in ['foo', ('foo', 2), ('fridge', 2), {'type':'fridge', 'instance': -12}]: with self.assertRaises(KeyError): mg[key] # test bad key types for key in [True, False, (1,2,3), ['fridge']]: with self.assertRaises(TypeError): mg[key]
def test_proportion_of_energy_submetered(self): meters = [] for i in [1, 2, 3]: meter_meta = self.datastore.load_metadata( 'building1')['elec_meters'][i] meter_id = ElecMeterID(i, 1, 'REDD') meter = ElecMeter(self.datastore, meter_meta, meter_id) meters.append(meter) mains = meters[0] mg = MeterGroup(meters) self.assertEqual(mg.proportion_of_energy_submetered(), 1.0)
def test_from_list(self): meters = [] for i in range(1, 6): meters.append(ElecMeter(meter_id=ElecMeterID(i, 1, None))) mg = global_meter_group.from_list([ ElecMeterID(1, 1, None), (ElecMeterID(2, 1, None), (ElecMeterID(3, 1, None), ElecMeterID(4, 1, None), ElecMeterID(5, 1, None))) ]) self.assertEqual(mg.meters[0], meters[0]) self.assertEqual(mg.meters[1].meters[0], meters[1]) self.assertEqual(len(mg.meters[1].meters[1].meters), 3) self.assertEqual(len(mg.meters), 2)
def setUpClass(cls): filename = join(data_dir(), 'energy.h5') cls.datastore = HDFDataStore(filename) ElecMeter.load_meter_devices(cls.datastore)
def setUpClass(cls): filename = join(data_dir(), 'energy_complex.h5') cls.datastore = HDFDataStore(filename) ElecMeter.load_meter_devices(cls.datastore) cls.meter_meta = cls.datastore.load_metadata( 'building1')['elec_meters'][METER_ID.instance]
def test_full_results_with_no_sections_raises_runtime_error(self): mg = MeterGroup([ElecMeter(), ElecMeter()]) with self.assertRaises(RuntimeError): mg.dropout_rate(full_results=True)
def setUpClass(cls): filename = join(data_dir(), 'energy_complex.h5') cls.datastore = HDFDataStore(filename) ElecMeter.load_meter_devices(cls.datastore) cls.meter_meta = cls.datastore.load_metadata('building1')['elec_meters'][METER_ID.instance]