Added unit tests for floor cleaning

This commit is contained in:
Khalim Conn-Kowlessar 2023-06-08 18:35:25 +01:00
parent 3d6ed88634
commit 3cfa878912
7 changed files with 408 additions and 16 deletions

View file

@ -1,3 +1,4 @@
import pandas as pd
from tqdm import tqdm
from epc_data.temp_inputs import input_data
@ -41,5 +42,14 @@ def handler():
# For testing:
from epc_data.cleaning.Floor import CleanFloor
descriptions = {x["floor-description"] for x in data}
out = []
for description in descriptions:
res = CleanFloor(description).clean()
out.append(
{
"original_description": description,
**res
}
)
df = pd.DataFrame(out)
df = df.sort_values("original_description")

View file

@ -14,47 +14,104 @@ class CleanFloor:
"""
description_lower = self.description.lower().strip()
assumed = "assumed" in description_lower
to_unheated_space = "to unheated space" in description_lower
to_external_air = "to external air" in description_lower
is_suspended = "suspended" in description_lower
is_solid = "solid" in description_lower
thermal_transmittence, thermal_transmittence_unit, insulation_thickness = None, None, None
is_valid = "invalid" not in description_lower
if "another dwelling below" in description_lower:
if "another dwelling below" in description_lower or "other premises below" in description_lower:
return self._make_clean_output(
is_valid=is_valid,
has_dwelling_below=True,
thermal_transmittence=None,
thermal_transmittence_unit=None,
to_unheated_space=to_unheated_space,
assumed=assumed
to_external_air=to_external_air,
is_suspended=is_suspended,
is_solid=is_solid,
assumed=assumed,
insulation_thickness=insulation_thickness
)
thermal_transmittence, thermal_transmittence_unit = None, None
if "insulated" in description_lower:
bh
if "insulation" in description_lower or "insulated" in description_lower:
insulation_thickness = self._find_insulation_thickness(
description_lower, to_unheated_space, to_external_air, is_suspended, is_solid
)
elif "thermal transmittance" in description_lower:
thermal_transmittence, thermal_transmittence_unit = extract_thermal_transmittence(description_lower)
return self._make_clean_output(
is_valid=is_valid,
has_dwelling_below=False,
thermal_transmittence=thermal_transmittence,
thermal_transmittence_unit=thermal_transmittence_unit,
to_unheated_space=to_unheated_space,
assumed=assumed
to_external_air=to_external_air,
is_suspended=is_suspended,
is_solid=is_solid,
assumed=assumed,
insulation_thickness=insulation_thickness
)
@classmethod
def _find_insulation_thickness(cls, description_lower, to_unheated_space):
def _find_insulation_thickness(cls, description_lower, to_unheated_space, to_external_air, is_suspended, is_solid):
if to_unheated_space:
desc_split = description_lower.split("to unheated space,")[-1].strip().split("(assumed)")[0].strip()
if to_unheated_space | to_external_air | is_suspended | is_solid:
if to_unheated_space:
split_on = "to unheated space,"
elif to_external_air:
split_on = "to external air,"
elif is_suspended:
split_on = "suspended,"
elif is_solid:
split_on = "solid,"
else:
raise NotImplementedError("Not handled this 2")
desc_split = description_lower.split(split_on)[-1].strip().split("(assumed)")[0].strip()
return search_split_description(desc_split)
raise NotImplementedError("Not handled this")
@staticmethod
def _make_clean_output(
has_dwelling_below, thermal_transmittence, thermal_transmittence_unit, to_unheated_space, assumed
is_valid,
has_dwelling_below,
thermal_transmittence,
thermal_transmittence_unit,
to_unheated_space,
to_external_air,
is_suspended,
is_solid,
assumed,
insulation_thickness
) -> Dict[str, Union[str, bool, int, None]]:
"""
:param is_valid:
:param has_dwelling_below:
:param thermal_transmittence:
:param thermal_transmittence_unit:
:param to_unheated_space:
:param to_external_air:
:param is_suspended:
:param is_solid:
:param assumed:
:param insulation_thickness:
:return:
"""
return {
"is_valid": is_valid,
"has_dwelling_below": has_dwelling_below,
"thermal_transmittence": thermal_transmittence,
"thermal_transmittence_unit": thermal_transmittence_unit,
"to_unheated_space": to_unheated_space,
"assumed": assumed
"to_external_air": to_external_air,
"is_suspended": is_suspended,
"is_solid": is_solid,
"assumed": assumed,
"insulation_thickness": insulation_thickness
}

View file

@ -36,8 +36,16 @@ def search_split_description(desc: str) -> str:
:param desc: Description to be searched.
:return: Result of the search.
"""
if desc == "insulated":
return "average"
if desc == "limited":
return "below average"
outputs = {
"insulated": "average",
"limited": "below average",
"no insulation": "none",
"limited insulation": "below average",
}
out = outputs.get(desc, None)
if out:
return out
raise NotImplementedError("Handle me")

View file

@ -3,4 +3,5 @@ python-dotenv
tqdm
pandas
mypy
pytest
pytest
mock

View file

@ -0,0 +1,72 @@
import pytest
from epc_data.tests.test_data.EpcClean_test_floor_cases import clean_floor_cases
from epc_data.cleaning.Floor import CleanFloor
from unittest.mock import patch
class TestEpcClean:
class TestCleanFloor:
@patch('epc_data.cleaning.cleaning_utils.search_split_description')
def test_find_insulation_thickness_to_unheated_space(self, mock_search_split_description):
# Set up the mock to return a specific value
mock_search_split_description.return_value = 'average'
# clean_floor = CleanFloor('description to unheated space')
insulation_thickness = CleanFloor._find_insulation_thickness(
'to unheated space, insulated', True, False, False, False
)
assert insulation_thickness == 'average'
@patch('epc_data.cleaning.cleaning_utils.search_split_description')
def test_find_insulation_thickness_to_external_air(self, mock_search_split_description):
# Set up the mock to return a specific value
mock_search_split_description.return_value = 'below average'
# clean_floor = CleanFloor('To external air, limited insulation')
insulation_thickness = CleanFloor._find_insulation_thickness(
'to external air, limited insulation', False, True, False, False
)
assert insulation_thickness == 'below average'
@patch('epc_data.cleaning.cleaning_utils.search_split_description')
def test_find_insulation_thickness_is_suspended(self, mock_search_split_description):
# Set up the mock to return a specific value
mock_search_split_description.return_value = 'none'
# clean_floor = CleanFloor('description suspended')
insulation_thickness = CleanFloor._find_insulation_thickness(
'suspended, no insulation', False, False, True, False
)
assert insulation_thickness == 'none'
@patch('epc_data.cleaning.cleaning_utils.search_split_description')
def test_find_insulation_thickness_is_solid(self, mock_search_split_description):
# Set up the mock to return a specific value
mock_search_split_description.return_value = 'none'
# clean_floor = CleanFloor('description solid')
insulation_thickness = CleanFloor._find_insulation_thickness(
'solid, no insulation (assumed)', False, False, False, True
)
assert insulation_thickness == 'none'
def test_find_insulation_thickness_not_handled(self):
clean_floor = CleanFloor('description not handled')
with pytest.raises(NotImplementedError):
clean_floor._find_insulation_thickness(
'description not handled', False, False, False, False
)
def test_clean_floor(self):
for test_case in clean_floor_cases:
result = CleanFloor(test_case['original_description']).clean()
# Ensure the output ordering is correct
expected_result = {key: test_case[key] for key in result.keys()}
expected_result["desc"] = test_case["original_description"]
result["desc"] = test_case["original_description"]
assert result == expected_result

View file

@ -10,5 +10,8 @@ def test__extract_thermal_transmittence():
def test__search_split_roof_description():
assert search_split_description("insulated") == "average"
assert search_split_description("limited") == "below average"
assert search_split_description("no insulation") == "none"
assert search_split_description("limited insulation") == "below average"
with pytest.raises(NotImplementedError):
search_split_description("unknown")

View file

@ -0,0 +1,241 @@
clean_floor_cases = [
{'original_description': 'Average thermal transmittance 0.11 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.11, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.19 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.19, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.10 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.1, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.12 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.12, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.90 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.9, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.24 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.24, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.30 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.3, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.14 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.14, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.29 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.29, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': '(other premises below)', 'is_valid': True, 'has_dwelling_below': True,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'To external air, insulated (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': True, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'average'},
{'original_description': 'Average thermal transmittance 0.63 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.63, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Suspended, no insulation (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': True, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'none'},
{'original_description': 'Average thermal transmittance 0.08 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.08, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.17 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.17, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Solid, insulated', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': True, 'assumed': False,
'insulation_thickness': 'average'},
{'original_description': 'Average thermal transmittance 0.44 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.44, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.13 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.13, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.07 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.07, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Solid, limited insulation (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': True, 'assumed': True,
'insulation_thickness': 'below average'},
{'original_description': 'Average thermal transmittance 0.42 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.42, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.35 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.35, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.36 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.36, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.23 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.23, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.21 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.21, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.20 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.2, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.66 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.66, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.15 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.15, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.28 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.28, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.43 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.43, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.59 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.59, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'To external air, limited insulation (assumed)', 'is_valid': True,
'has_dwelling_below': False, 'thermal_transmittence': None, 'thermal_transmittence_unit': None,
'to_unheated_space': False, 'to_external_air': True, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'below average'},
{'original_description': 'Average thermal transmittance 0.34 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.34, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.47 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.47, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'To external air, no insulation (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': True, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'none'},
{'original_description': 'Average thermal transmittance 0.48 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.48, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.32 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.32, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.50 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.5, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.09 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.09, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.33 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.33, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.25 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.25, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.72 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.72, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.55 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.55, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': '(another dwelling below)', 'is_valid': True, 'has_dwelling_below': True,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.18 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.18, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.16 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.16, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'To unheated space, limited insulation (assumed)', 'is_valid': True,
'has_dwelling_below': False, 'thermal_transmittence': None, 'thermal_transmittence_unit': None,
'to_unheated_space': True, 'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'below average'},
{'original_description': 'Suspended, insulated', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': True, 'is_solid': False, 'assumed': False,
'insulation_thickness': 'average'},
{'original_description': 'Solid, insulated (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': True, 'assumed': True,
'insulation_thickness': 'average'},
{'original_description': 'Average thermal transmittance 0.31 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.31, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Solid, no insulation (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': True, 'assumed': True,
'insulation_thickness': 'none'},
{'original_description': 'Average thermal transmittance 0.22 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.22, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'To unheated space, no insulation (assumed)', 'is_valid': True,
'has_dwelling_below': False, 'thermal_transmittence': None, 'thermal_transmittence_unit': None,
'to_unheated_space': True, 'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'none'},
{'original_description': 'Average thermal transmittance 0.27 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.27, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Suspended, limited insulation (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': True, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'below average'},
{'original_description': 'To unheated space, insulated', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': True,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': 'average'},
{'original_description': 'To unheated space, insulated (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': True,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'average'},
{'original_description': 'Average thermal transmittance 0.05 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.05, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Average thermal transmittance 0.49 W/m-¦K', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': 0.49, 'thermal_transmittence_unit': 'w/m-¦k', 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': False, 'is_solid': False, 'assumed': False,
'insulation_thickness': None},
{'original_description': 'Suspended, insulated (assumed)', 'is_valid': True, 'has_dwelling_below': False,
'thermal_transmittence': None, 'thermal_transmittence_unit': None, 'to_unheated_space': False,
'to_external_air': False, 'is_suspended': True, 'is_solid': False, 'assumed': True,
'insulation_thickness': 'average'}]