def evaluate(self, data_collection): """Determine the value of the target parameter and, according to that value, choose which meter to run. Returns ------- out : dict Contains the results of each meter run. """ output_data_collection = DataCollection() for i in data_collection.get_data(**self.iterable).value: variable_name = self.variable["name"] variable_value = i.get("value") variable_tags = self.variable.get("tags", []) data_container = DataContainer(name=variable_name, value=variable_value, tags=variable_tags) input_data_collection = data_collection.copy() input_data_collection.add_data(data_container) outputs = self.meter.evaluate(input_data_collection) tags = i.get("tags", []) outputs.add_tags(tags) output_data_collection.add_data_collection(outputs) return output_data_collection
def evaluate(self, data_collection): """Determine the value of the target parameter and, according to that value, choose which meter to run. Returns ------- out : dict Contains the results of each meter run. """ output_data_collection = DataCollection() for i in data_collection.get_data(**self.iterable).value: variable_name = self.variable["name"] variable_value = i.get("value") variable_tags = self.variable.get("tags",[]) data_container = DataContainer( name=variable_name, value=variable_value, tags=variable_tags) input_data_collection = data_collection.copy() input_data_collection.add_data(data_container) outputs = self.meter.evaluate(input_data_collection) tags = i.get("tags", []) outputs.add_tags(tags) output_data_collection.add_data_collection(outputs) return output_data_collection
def test_data_collection_json(): dc1 = DataCollection(item1="item1_value", item2="item2_value", tags=["tag1"]) dc1.add_data_collection(DataCollection(item1="item1_value", item2="item2_value", tags=["tag2"])) json_data = dc1.json() json.dumps(json_data) assert len(json_data["item1"]) == 2 assert len(json_data["item2"]) == 2 assert json_data["item1"][0]["value"] == "item1_value" assert json_data["item1"][0]["tags"] in [["tag1"], ["tag2"]]
def evaluate(self, data_collection): """Overrides normal execution to evaluate meters in sequence, collecting outputs. Returns ------- out : dict Collected outputs from all meters in the sequence. """ input_data_collection = data_collection.copy() output_data_collection = DataCollection() for meter in self.sequence: meter_result = meter.evaluate(input_data_collection) input_data_collection.add_data_collection(meter_result) output_data_collection.add_data_collection(meter_result) return output_data_collection
def evaluate(self, data_collection): """Overrides normal execution to evaluate meters in sequence, collecting outputs. Returns ------- out : dict Collected outputs from all meters in the sequence. """ input_data_collection = data_collection.copy() output_data_collection = DataCollection() for meter in self.sequence: meter_result = meter.evaluate(input_data_collection) input_data_collection.add_data_collection(meter_result) output_data_collection.add_data_collection(meter_result) return output_data_collection
def test_fuel_type_tag_filter(): meter_yaml = """ !obj:eemeter.meter.FuelTypeTagFilter { fuel_type_search_name: active_fuel_type, input_mapping: { active_fuel_type: {}, }, meter: !obj:eemeter.meter.Sequence { sequence: [ !obj:eemeter.meter.DummyMeter { input_mapping: { value: { name: active_fuel_type } }, output_mapping: { result: { name: result1 } }, }, !obj:eemeter.meter.DummyMeter { input_mapping: { value: {} }, output_mapping: { result: { name: result2 } }, } ] } } """ meter = load(meter_yaml) data_collection = DataCollection(active_fuel_type="electricity") data_collection_include = DataCollection(value="value_include") data_collection_exclude = DataCollection(value="value_exclude") data_collection.add_data_collection(data_collection_include, tagspace=["electricity"]) data_collection.add_data_collection(data_collection_exclude, tagspace=["natural_gas"]) output_data_collection = meter.evaluate(data_collection) assert output_data_collection.get_data("result1").value == "electricity" assert output_data_collection.get_data("result2").value == "value_include"