mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
123 lines
3.2 KiB
Python
123 lines
3.2 KiB
Python
# Using a simply python file as settings for now
|
|
# TODO: migrate to dynaconf
|
|
|
|
TOTAL_FLOOR_AREA_NATIONAL_AVERAGE = 70
|
|
FLOOR_HEIGHT_NATIONAL_AVERAGE = 2.45
|
|
|
|
COLUMNS_TO_MERGE_ON = [
|
|
"PROPERTY_TYPE",
|
|
"BUILT_FORM",
|
|
"CONSTRUCTION_AGE_BAND",
|
|
"NUMBER_HABITABLE_ROOMS",
|
|
"NUMBER_HEATED_ROOMS"
|
|
]
|
|
|
|
FULLY_GLAZED_DESCRIPTIONS = [
|
|
"Fully double glazed",
|
|
"High performance glazing",
|
|
"Fully triple glazed",
|
|
"Full secondary glazing",
|
|
"Multiple glazing throughout",
|
|
]
|
|
|
|
FIXED_FEATURES = [
|
|
'PROPERTY_TYPE',
|
|
'BUILT_FORM',
|
|
'CONSTRUCTION_AGE_BAND',
|
|
'NUMBER_HABITABLE_ROOMS',
|
|
'CONSTITUENCY',
|
|
'NUMBER_HEATED_ROOMS',
|
|
'FIXED_LIGHTING_OUTLETS_COUNT',
|
|
'FLOOR_HEIGHT',
|
|
'FLOOR_LEVEL',
|
|
'TOTAL_FLOOR_AREA',
|
|
]
|
|
|
|
COMPONENT_FEATURES = [
|
|
'TRANSACTION_TYPE',
|
|
'WALLS_DESCRIPTION',
|
|
'FLOOR_DESCRIPTION',
|
|
'LIGHTING_DESCRIPTION',
|
|
'ROOF_DESCRIPTION',
|
|
'MAINHEAT_DESCRIPTION',
|
|
'HOTWATER_DESCRIPTION',
|
|
'MAIN_FUEL',
|
|
'MECHANICAL_VENTILATION',
|
|
'SECONDHEAT_DESCRIPTION',
|
|
'ENERGY_TARIFF', # Not sure if this is relevant
|
|
'SOLAR_WATER_HEATING_FLAG',
|
|
'PHOTO_SUPPLY',
|
|
'WINDOWS_DESCRIPTION',
|
|
'GLAZED_TYPE',
|
|
'MULTI_GLAZE_PROPORTION',
|
|
'LIGHTING_DESCRIPTION',
|
|
'LOW_ENERGY_LIGHTING',
|
|
'NUMBER_OPEN_FIREPLACES',
|
|
'MAINHEATCONT_DESCRIPTION',
|
|
'EXTENSION_COUNT',
|
|
# 'GLAZED_AREA', # May not need this since we have MULTI_GLAZE_PROPORTION
|
|
]
|
|
|
|
# For these fields, we take an average if we have multiple values
|
|
AVERAGE_FIXED_FEATURES = [
|
|
"TOTAL_FLOOR_AREA",
|
|
"FLOOR_HEIGHT"
|
|
]
|
|
|
|
# For these fields, we take the latest value if we have multiple values
|
|
# Since more recent EPCs have been conducted with more rigour, we assume that the latest value is
|
|
# the most accurate
|
|
LATEST_FIELD = [
|
|
"NUMBER_HABITABLE_ROOMS",
|
|
"NUMBER_HEATED_ROOMS",
|
|
"FIXED_LIGHTING_OUTLETS_COUNT",
|
|
"FLOOR_LEVEL",
|
|
"CONSTRUCTION_AGE_BAND", # This is a field we're probably want to use verisk data for
|
|
]
|
|
|
|
# If we see thee features changing, we don't use the EPC, since deem it not to be reliable
|
|
MANDATORY_FIXED_FEATURES = [
|
|
"PROPERTY_TYPE",
|
|
"BUILT_FORM",
|
|
"CONSTITUENCY"
|
|
]
|
|
|
|
# For particularly old EPC data, we have inconsistent records so we'll only include EPCS that were
|
|
# conducted after 2010, since SAP09 was introduced in 2009 an later SAP12 was introduced in England
|
|
# and Wales from 31 July 2014
|
|
EARLIEST_EPC_DATE = "2014-08-01"
|
|
|
|
RDSAP_RESPONSE = "CURRENT_ENERGY_EFFICIENCY"
|
|
HEAT_DEMAND_RESPONSE = "ENERGY_CONSUMPTION_CURRENT"
|
|
|
|
def ordinal(n):
|
|
if 10 <= n % 100 <= 20:
|
|
suffix = 'th'
|
|
else:
|
|
suffix = {1: 'st', 2: 'nd', 3: 'rd'}.get(n % 10, 'th')
|
|
|
|
return str(n) + suffix
|
|
|
|
FLOOR_LEVEL_MAP = {
|
|
"Basement": -1,
|
|
"Ground": 0,
|
|
"ground floor": 0,
|
|
"20+": 20,
|
|
"21st or above": 21,
|
|
**{str(i).zfill(2): i for i in range(0, 21)},
|
|
**{ordinal(i): i for i in range(-1, 21)},
|
|
**{str(i): i for i in range(-1, 21)},
|
|
**{i: i for i in range(-1, 21)},
|
|
}
|
|
|
|
BUILT_FORM_REMAP = {
|
|
"Enclosed End-Terrace": "End-Terrace",
|
|
"Enclosed Mid-Terrace": "Mid-Terrace",
|
|
}
|
|
|
|
DATA_PROCESSOR_SETTINGS = {
|
|
'low_memory': False,
|
|
'epc_minimum_count': 1,
|
|
'column_mappings': {'UPRN': [int, str]}
|
|
}
|
|
|