From 1b39147b57d59f39aedca4819cd6befd3715d494 Mon Sep 17 00:00:00 2001 From: Khalim Conn-Kowlessar Date: Sat, 2 Dec 2023 17:28:51 +0000 Subject: [PATCH] Fixed test_sap_model_prep --- backend/Property.py | 5 ++++- backend/tests/test_sap_model_prep.py | 27 +++++++++++++++------------ 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/backend/Property.py b/backend/Property.py index a9d7645d..c04a3ed9 100644 --- a/backend/Property.py +++ b/backend/Property.py @@ -4,7 +4,7 @@ import os import pandas as pd from etl.epc.DataProcessor import DataProcessor -from etl.epc.settings import POTENTIAL_COLUMNS, EFFICIENCY_FEATURES +from etl.epc.settings import POTENTIAL_COLUMNS, EFFICIENCY_FEATURES, BUILT_FORM_REMAP from etl.epc_clean.epc_attributes.all_cleaners import all_cleaner_map from utils.logger import setup_logger from utils.s3 import read_dataframe_from_s3_parquet @@ -271,6 +271,9 @@ class Property(Definitions): if not self.data: raise ValueError("Property does not contain data") + # We need to implement an EPC cleaning process, which we run on the EPC data, immediately after we download + # it + self.data["built-form"] = BUILT_FORM_REMAP.get(self.data["built-form"], self.data["built-form"]) self.set_energy() self.set_ventilation() self.set_solar_pv() diff --git a/backend/tests/test_sap_model_prep.py b/backend/tests/test_sap_model_prep.py index 887e8e6e..f20e4993 100644 --- a/backend/tests/test_sap_model_prep.py +++ b/backend/tests/test_sap_model_prep.py @@ -204,9 +204,9 @@ class TestSapModelPrep: 'external_insulation': False, 'internal_insulation': False, 'walls_thermal_transmittance_ENDING': 0.7, 'is_park_home_ENDING': False, 'walls_insulation_thickness_ENDING': 'average', 'external_insulation_ENDING': False, 'internal_insulation_ENDING': False, - 'floor_thermal_transmittance': 0.64, 'is_to_unheated_space': False, 'is_to_external_air': False, + 'floor_thermal_transmittance': 0.52, 'is_to_unheated_space': False, 'is_to_external_air': False, 'is_suspended': True, 'is_solid': False, 'another_property_below': False, - 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.64, + 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.52, 'floor_insulation_thickness_ENDING': 'none', 'roof_thermal_transmittance': 1.5, 'is_pitched': True, 'is_roof_room': False, 'is_loft': False, 'is_flat': False, 'is_thatched': False, 'is_at_rafters': False, 'has_dwelling_above': False, 'roof_insulation_thickness': 'below average', @@ -260,7 +260,7 @@ class TestSapModelPrep: 'no_individual_heating_or_community_network': False, 'complex_fuel_type': 'Unknown', 'fuel_type_ENDING': 'oil', 'main-fuel_tariff_type_ENDING': 'Unknown', 'is_community_ENDING': False, 'no_individual_heating_or_community_network_ENDING': False, 'complex_fuel_type_ENDING': 'Unknown', - 'estimated_perimeter_STARTING': 44.77882152472145, 'estimated_perimeter_ENDING': 44.77882152472145, + 'estimated_perimeter_STARTING': 30.531014675946444, 'estimated_perimeter_ENDING': 30.531014675946444, 'HOT_WATER_ENERGY_EFF_STARTING': "Good", "FLOOR_ENERGY_EFF_STARTING": "Unknown", "WINDOWS_ENERGY_EFF_STARTING": "Good", @@ -310,7 +310,7 @@ class TestSapModelPrep: recommendation = { "recommendation_id": 0, "new_u_value": 0.7, - "type": "wall_insulation" + "type": "cavity_wall_insulation" } test_record = create_recommendation_scoring_data( @@ -356,7 +356,7 @@ class TestSapModelPrep: assert test_record[c].values[0] == row[c] - def test_solid_wall_insulation(self, cleaned, cleaning_data): + def test_internal_wall_insulation(self, cleaned, cleaning_data): starting_epc2 = { 'low-energy-fixed-light-count': '2', 'address': 'FLAT 12, WAREHOUSE W, 3 WESTERN GATEWAY', @@ -513,6 +513,7 @@ class TestSapModelPrep: data=starting_epc2 ) home2.get_components(cleaned) + home2.set_number_lighting_outlets(None) data_processor2 = DataProcessor(None, newdata=True) data_processor2.insert_data(pd.DataFrame([home2.get_model_data()])) @@ -530,7 +531,7 @@ class TestSapModelPrep: recommendation2 = { "recommendation_id": 0, "new_u_value": 0.21, - "type": "wall_insulation" + "type": "internal_wall_insulation" } test_record2 = create_recommendation_scoring_data( @@ -644,9 +645,9 @@ class TestSapModelPrep: 'is_park_home': False, 'walls_insulation_thickness': 'none', 'external_insulation': False, 'internal_insulation': False, 'walls_thermal_transmittance_ENDING': 2.0, 'is_park_home_ENDING': False, 'walls_insulation_thickness_ENDING': 'none', 'external_insulation_ENDING': False, - 'internal_insulation_ENDING': False, 'floor_thermal_transmittance': 0.62, 'is_to_unheated_space': False, + 'internal_insulation_ENDING': False, 'floor_thermal_transmittance': 0.51, 'is_to_unheated_space': False, 'is_to_external_air': False, 'is_suspended': True, 'is_solid': False, 'another_property_below': False, - 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.62, + 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.51, 'floor_insulation_thickness_ENDING': 'none', 'roof_thermal_transmittance': 2.3, 'is_pitched': True, 'is_roof_room': False, 'is_loft': False, 'is_flat': False, 'is_thatched': False, 'is_at_rafters': False, 'has_dwelling_above': False, 'roof_insulation_thickness': 'none', 'roof_thermal_transmittance_ENDING': 2.3, @@ -699,7 +700,7 @@ class TestSapModelPrep: 'no_individual_heating_or_community_network': False, 'complex_fuel_type': 'Unknown', 'fuel_type_ENDING': 'mains gas', 'main-fuel_tariff_type_ENDING': 'Unknown', 'is_community_ENDING': False, 'no_individual_heating_or_community_network_ENDING': False, 'complex_fuel_type_ENDING': 'Unknown', - 'estimated_perimeter_STARTING': 41.634120622393354, 'estimated_perimeter_ENDING': 41.634120622393354, + 'estimated_perimeter_STARTING': 30.06908711617298, 'estimated_perimeter_ENDING': 30.06908711617298, 'HOT_WATER_ENERGY_EFF_STARTING': "Good", "FLOOR_ENERGY_EFF_STARTING": "Unknown", "WINDOWS_ENERGY_EFF_STARTING": "Average", @@ -732,6 +733,7 @@ class TestSapModelPrep: data=starting_epc3 ) home3.get_components(cleaned) + home3.set_number_lighting_outlets(None) data_processor3 = DataProcessor(None, newdata=True) data_processor3.insert_data(pd.DataFrame([home3.get_model_data()])) @@ -851,9 +853,9 @@ class TestSapModelPrep: 'is_park_home': False, 'walls_insulation_thickness': 'none', 'external_insulation': False, 'internal_insulation': False, 'walls_thermal_transmittance_ENDING': 1.7, 'is_park_home_ENDING': False, 'walls_insulation_thickness_ENDING': 'none', 'external_insulation_ENDING': False, - 'internal_insulation_ENDING': False, 'floor_thermal_transmittance': 0.66, 'is_to_unheated_space': False, + 'internal_insulation_ENDING': False, 'floor_thermal_transmittance': 0.53, 'is_to_unheated_space': False, 'is_to_external_air': False, 'is_suspended': False, 'is_solid': True, 'another_property_below': False, - 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.66, + 'floor_insulation_thickness': 'none', 'floor_thermal_transmittance_ENDING': 0.53, 'floor_insulation_thickness_ENDING': 'none', 'roof_thermal_transmittance': 0.21, 'is_pitched': True, 'is_roof_room': False, 'is_loft': True, 'is_flat': False, 'is_thatched': False, 'is_at_rafters': False, 'has_dwelling_above': False, 'roof_insulation_thickness': '200', 'roof_thermal_transmittance_ENDING': 0.21, @@ -907,7 +909,7 @@ class TestSapModelPrep: 'no_individual_heating_or_community_network': False, 'complex_fuel_type': 'Unknown', 'fuel_type_ENDING': 'mains gas', 'main-fuel_tariff_type_ENDING': 'Unknown', 'is_community_ENDING': False, 'no_individual_heating_or_community_network_ENDING': False, 'complex_fuel_type_ENDING': 'Unknown', - 'estimated_perimeter_STARTING': 37.54197650630557, 'estimated_perimeter_ENDING': 37.54197650630557, + 'estimated_perimeter_STARTING': 27.113649698998472, 'estimated_perimeter_ENDING': 27.113649698998472, 'HOT_WATER_ENERGY_EFF_STARTING': "Good", "FLOOR_ENERGY_EFF_STARTING": "Unknown", "WINDOWS_ENERGY_EFF_STARTING": "Average", @@ -940,6 +942,7 @@ class TestSapModelPrep: data=starting_epc4 ) home4.get_components(cleaned) + home4.set_number_lighting_outlets(None) data_processor4 = DataProcessor(None, newdata=True) data_processor4.insert_data(pd.DataFrame([home4.get_model_data()]))