def recalculate_activity_parameters(self, group: str, global_params: dict = None ) -> Optional[dict]: new_values = self.get_altered_values(group) if global_params is None: global_params = {} data = ActivityParameter.load(group) if not data: return for name, amount in new_values.items(): data[name]["amount"] = amount new_symbols = get_new_symbols(data.values(), set(data)) missing = new_symbols.difference(global_params) if missing: raise MissingName( "The following variables aren't defined:\n{}".format( "|".join(missing))) glo = self._static(global_params, needed=new_symbols) if new_symbols else None ParameterSet(data, glo).evaluate_and_set_amount_field() return self._prune_result_data(data)
def parameter_exchange_dependencies(self) -> dict: """ Schema: {param1: List[tuple], param2: List[tuple]} """ parameters = defaultdict(list) for act in self.initial.act_by_group_db: exchanges = self.initial.exc_by_group(act.group) for exc, formula in exchanges.items(): params = get_new_symbols([formula]) # Convert exchange from int to Index exc = Index.build_from_exchange(ExchangeDataset.get_by_id(exc)) for param in params: parameters[param].append(exc) return parameters
def recalculate_activity_parameters(self, group: str, global_params: dict = None) -> dict: data = self.initial.act_by_group(group) if not data: return {} new_values = self.parameters.data_by_group(group) glo = global_params or {} for name, amount in new_values.items(): data[name]["amount"] = amount new_symbols = get_new_symbols(data.values(), set(data)) missing = new_symbols.difference(global_params) if missing: raise MissingName("The following variables aren't defined:\n{}".format("|".join(missing))) glo = Parameters.static(glo, needed=new_symbols) if new_symbols else None ParameterSet(data, glo).evaluate_and_set_amount_field() return StaticParameters.prune_result_data(data)