mirror of
https://github.com/Hestia-Homes/Model.git
synced 2026-06-08 11:17:27 +00:00
handling case of nothing to re-baseline
This commit is contained in:
parent
d287df1b82
commit
21348e7641
1 changed files with 46 additions and 44 deletions
|
|
@ -718,58 +718,60 @@ async def model_engine(body: PlanTriggerRequest):
|
|||
scoring_data = p.base_difference_record.df.copy()
|
||||
rebaselining_scoring_data.append(scoring_data)
|
||||
|
||||
rebaselining_scoring_data = pd.concat(rebaselining_scoring_data)
|
||||
rebaselining_scoring_data = (
|
||||
pd.concat(rebaselining_scoring_data) if len(rebaselining_scoring_data) else pd.DataFrame([])
|
||||
)
|
||||
predictions_by_model_and_uprn = {}
|
||||
if not rebaselining_scoring_data.empty:
|
||||
logger.info(f"{rebaselining_scoring_data.shape[0]} properties require re-baselineing")
|
||||
|
||||
# Trigger re-scoring
|
||||
rebaselining_scoring_data["is_post_sap10_starting"] = True
|
||||
# Trigger re-scoring
|
||||
rebaselining_scoring_data["is_post_sap10_starting"] = True
|
||||
|
||||
rebaselining_response = model_api.predict_all(
|
||||
df=rebaselining_scoring_data,
|
||||
bucket=get_settings().DATA_BUCKET,
|
||||
model_prefixes=model_api.BASELINE_MODEL_PREFIXES,
|
||||
extract_ids=False,
|
||||
extract_uprn=True
|
||||
)
|
||||
rebaselining_response = model_api.predict_all(
|
||||
df=rebaselining_scoring_data,
|
||||
bucket=get_settings().DATA_BUCKET,
|
||||
model_prefixes=model_api.BASELINE_MODEL_PREFIXES,
|
||||
extract_ids=False,
|
||||
extract_uprn=True
|
||||
)
|
||||
|
||||
# Update EPC records with new model predictions
|
||||
input_properties_by_uprn = {int(p.uprn): p for p in input_properties if p.uprn is not None}
|
||||
# Update EPC records with new model predictions
|
||||
input_properties_by_uprn = {int(p.uprn): p for p in input_properties if p.uprn is not None}
|
||||
|
||||
# Pre-index predictions for each model by UPRN
|
||||
model_names = [
|
||||
"retrofit_sap_baseline_predictions",
|
||||
"retrofit_carbon_baseline_predictions",
|
||||
"retrofit_heat_baseline_predictions",
|
||||
]
|
||||
predictions_by_model_and_uprn = {}
|
||||
for model in model_names:
|
||||
df = rebaselining_response[model]
|
||||
predictions_by_model_and_uprn[model] = dict(zip(df["uprn"].astype(int), df["predictions"]))
|
||||
# Pre-index predictions for each model by UPRN
|
||||
model_names = [
|
||||
"retrofit_sap_baseline_predictions",
|
||||
"retrofit_carbon_baseline_predictions",
|
||||
"retrofit_heat_baseline_predictions",
|
||||
]
|
||||
for model in model_names:
|
||||
df = rebaselining_response[model]
|
||||
predictions_by_model_and_uprn[model] = dict(zip(df["uprn"].astype(int), df["predictions"]))
|
||||
|
||||
for uprn_int in rebaselining_scoring_data["uprn"].unique().astype(int):
|
||||
try:
|
||||
property_instance = input_properties_by_uprn[uprn_int]
|
||||
if property_instance is None:
|
||||
logger.warning(f"No property found for UPRN {uprn_int} during rebaselining update.")
|
||||
continue
|
||||
# Gather predictions for this UPRN
|
||||
for uprn_int in rebaselining_scoring_data["uprn"].unique().astype(int):
|
||||
try:
|
||||
new_sap = predictions_by_model_and_uprn["retrofit_sap_baseline_predictions"][uprn_int]
|
||||
new_carbon = predictions_by_model_and_uprn["retrofit_carbon_baseline_predictions"][uprn_int]
|
||||
new_heat_demand = predictions_by_model_and_uprn["retrofit_heat_baseline_predictions"][uprn_int]
|
||||
except KeyError as e:
|
||||
logger.warning(f"Missing prediction for UPRN {uprn_int}: {e}")
|
||||
continue
|
||||
# Update EPC record
|
||||
property_instance.epc_record.insert_new_performance_values(
|
||||
new_sap=new_sap,
|
||||
new_epc=sap_to_epc(new_sap),
|
||||
new_carbon=new_carbon,
|
||||
new_heat_demand=new_heat_demand,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Error updating EPC record for UPRN {uprn_int}: {e}")
|
||||
property_instance = input_properties_by_uprn[uprn_int]
|
||||
if property_instance is None:
|
||||
logger.warning(f"No property found for UPRN {uprn_int} during rebaselining update.")
|
||||
continue
|
||||
# Gather predictions for this UPRN
|
||||
try:
|
||||
new_sap = predictions_by_model_and_uprn["retrofit_sap_baseline_predictions"][uprn_int]
|
||||
new_carbon = predictions_by_model_and_uprn["retrofit_carbon_baseline_predictions"][uprn_int]
|
||||
new_heat_demand = predictions_by_model_and_uprn["retrofit_heat_baseline_predictions"][uprn_int]
|
||||
except KeyError as e:
|
||||
logger.warning(f"Missing prediction for UPRN {uprn_int}: {e}")
|
||||
continue
|
||||
# Update EPC record
|
||||
property_instance.epc_record.insert_new_performance_values(
|
||||
new_sap=new_sap,
|
||||
new_epc=sap_to_epc(new_sap),
|
||||
new_carbon=new_carbon,
|
||||
new_heat_demand=new_heat_demand,
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"Error updating EPC record for UPRN {uprn_int}: {e}")
|
||||
|
||||
kwh_client = KwhData(bucket=get_settings().DATA_BUCKET, read_consumption_data=True)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue