def prepare_input_measures(property_recommendations, goal): """ Basic function to convert recommendations_to_upload to a format that is suitable for the optimiser - large :param property_recommendations: object containing the recommendations, created in the plan trigger api :param goal: goal to be optimised for, should be one of the keys in gain_map. E.g. if the gain is SAP points, the goal should reflect that desired gain :return: Nested list of input measures """ goal_map = { "Increase EPC": "sap_points" } goal_key = goal_map[goal] if not goal_key: raise NotImplementedError("Not implemented this gain type - investigate me") input_measures = [] for recs in property_recommendations: input_measures.append( [ { "id": rec["recommendation_id"], "cost": rec["cost"], "gain": rec[goal_key], "type": rec["type"] } for rec in recs ] ) return input_measures