def calculate_combined_cost_results(self): #calculate and format export costs cost_unit = cfg.cfgfile.get( 'case', 'currency_year_id') + " " + cfg.cfgfile.get( 'case', 'currency_name') if self.supply.export_costs is not None: setattr(self.outputs, 'export_costs', self.supply.export_costs) self.export_costs_df = self.outputs.return_cleaned_output( 'export_costs') del self.outputs.export_costs util.replace_index_name(self.export_costs_df, 'FINAL_ENERGY', 'SUPPLY_NODE_EXPORT') keys = ["EXPORT", "SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key, name in zip(keys, names): self.export_costs_df = pd.concat([self.export_costs_df], keys=[key], names=[name]) self.export_costs_df.columns = [cost_unit.upper()] else: self.export_costs_df = None #calculate and format emobodied supply costs self.embodied_energy_costs_df = self.demand.outputs.return_cleaned_output( 'demand_embodied_energy_costs') self.embodied_energy_costs_df.columns = [cost_unit.upper()] # del self.demand.outputs.demand_embodied_energy_costs keys = ["DOMESTIC", "SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key, name in zip(keys, names): self.embodied_energy_costs_df = pd.concat( [self.embodied_energy_costs_df], keys=[key], names=[name]) #calculte and format direct demand emissions self.demand_costs_df = self.demand.outputs.return_cleaned_output( 'levelized_costs') # del self.demand.outputs.levelized_costs keys = ["DOMESTIC", "DEMAND"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key, name in zip(keys, names): self.demand_costs_df = pd.concat([self.demand_costs_df], keys=[key], names=[name]) # levels_to_keep = cfg.output_levels # levels_to_keep = [x.upper() for x in levels_to_keep] # levels_to_keep += names + [self.geography.upper() +'_SUPPLY', 'SUPPLY_NODE'] keys = ['EXPORTED', 'SUPPLY-SIDE', 'DEMAND-SIDE'] names = ['COST TYPE'] self.outputs.costs = util.df_list_concatenate([ self.export_costs_df, self.embodied_energy_costs_df, self.demand_costs_df ], keys=keys, new_names=names) # util.replace_index_name(self.outputs.costs, self.geography.upper() +'_EARNED', self.geography.upper() +'_SUPPLY') # util.replace_index_name(self.outputs.costs, self.geography.upper() +'_CONSUMED', self.geography.upper()) self.outputs.costs[self.outputs.costs < 0] = 0 self.outputs.costs = self.outputs.costs[ self.outputs.costs[cost_unit.upper()] != 0]
def calculate_combined_emissions_results(self): #calculate and format export emissions if self.supply.export_emissions is not None: setattr(self.outputs,'export_emissions',self.supply.export_emissions) if 'supply_geography' not in cfg.output_combined_levels: util.remove_df_levels(self.outputs.export_emissions,self.geography +'_supply') self.export_emissions_df = self.outputs.return_cleaned_output('export_emissions') del self.outputs.export_emissions util.replace_index_name(self.export_emissions_df, 'FINAL_ENERGY','SUPPLY_NODE_EXPORT') keys = ["EXPORT","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.export_emissions_df = pd.concat([self.export_emissions_df],keys=[key],names=[name]) else: self.export_emissions_df = None #calculate and format emobodied supply emissions self.embodied_emissions_df = self.demand.outputs.return_cleaned_output('demand_embodied_emissions') # del self.demand.outputs.demand_embodied_emissions keys = ["DOMESTIC","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.embodied_emissions_df = pd.concat([self.embodied_emissions_df],keys=[key],names=[name]) #calculte and format direct demand emissions self.direct_emissions_df= self.demand.outputs.return_cleaned_output('demand_direct_emissions') # del self.demand.outputs.demand_direct_emissions keys = ["DOMESTIC","DEMAND"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.direct_emissions_df = pd.concat([self.direct_emissions_df],keys=[key],names=[name]) if 'supply_geography' in cfg.output_combined_levels: keys = self.direct_emissions_df.index.get_level_values(self.geography.upper()).values names = self.geography.upper() +'_SUPPLY' self.direct_emissions_df[names] = keys self.direct_emissions_df.set_index(names,append=True,inplace=True) # levels_to_keep = cfg.output_levels # levels_to_keep = [x.upper() for x in levels_to_keep] # levels_to_keep += names + [self.geography.upper() +'_SUPPLY', 'SUPPLY_NODE'] keys = ['EXPORTED', 'SUPPLY-SIDE', 'DEMAND-SIDE'] names = ['EMISSIONS TYPE'] self.outputs.emissions = util.df_list_concatenate([self.export_emissions_df, self.embodied_emissions_df, self.direct_emissions_df],keys=keys,new_names = names) # util.replace_index_name(self.outputs.emissions, "ENERGY","FINAL_ENERGY") util.replace_index_name(self.outputs.emissions, self.geography.upper() +'_EMITTED', self.geography.upper() +'_SUPPLY') util.replace_index_name(self.outputs.emissions, self.geography.upper() +'_CONSUMED', self.geography.upper()) self.outputs.emissions= self.outputs.emissions[self.outputs.emissions['VALUE']!=0] emissions_unit = cfg.cfgfile.get('case','mass_unit') self.outputs.emissions.columns = [emissions_unit.upper()]
def calculate_combined_emissions_results(self): #calculate and format export emissions if self.supply.export_emissions is not None: setattr(self.outputs,'export_emissions',self.supply.export_emissions) if 'supply_geography' not in cfg.output_combined_levels: util.remove_df_levels(self.outputs.export_emissions,cfg.primary_geography +'_supply') self.export_emissions_df = self.outputs.return_cleaned_output('export_emissions') del self.outputs.export_emissions util.replace_index_name(self.export_emissions_df, 'FINAL_ENERGY','SUPPLY_NODE_EXPORT') keys = ["EXPORT","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.export_emissions_df = pd.concat([self.export_emissions_df],keys=[key],names=[name]) else: self.export_emissions_df = None #calculate and format emobodied supply emissions self.embodied_emissions_df = self.demand.outputs.return_cleaned_output('demand_embodied_emissions') # del self.demand.outputs.demand_embodied_emissions keys = ["DOMESTIC","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.embodied_emissions_df = pd.concat([self.embodied_emissions_df],keys=[key],names=[name]) #calculte and format direct demand emissions self.direct_emissions_df= self.demand.outputs.return_cleaned_output('demand_direct_emissions') # del self.demand.outputs.demand_direct_emissions keys = ["DOMESTIC","DEMAND"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND",cfg.primary_geography.upper() +'_EMITTED'] for key,name in zip(keys,names): self.direct_emissions_df = pd.concat([self.direct_emissions_df],keys=[key],names=[name]) if cfg.primary_geography+'_supply' in cfg.output_combined_levels: keys = self.direct_emissions_df.index.get_level_values(cfg.primary_geography.upper()).values names = cfg.primary_geography.upper() +'_SUPPLY' self.direct_emissions_df[names] = keys self.direct_emissions_df.set_index(names,append=True,inplace=True) # levels_to_keep = cfg.output_levels # levels_to_keep = [x.upper() for x in levels_to_keep] # levels_to_keep += names + [cfg.primary_geography.upper() +'_SUPPLY', 'SUPPLY_NODE'] keys = ['EXPORTED', 'SUPPLY-SIDE', 'DEMAND-SIDE'] names = ['EMISSIONS TYPE'] self.outputs.c_emissions = util.df_list_concatenate([self.export_emissions_df, self.embodied_emissions_df, self.direct_emissions_df],keys=keys,new_names = names) # util.replace_index_name(self.outputs.c_emissions, "ENERGY","FINAL_ENERGY") util.replace_index_name(self.outputs.c_emissions, cfg.primary_geography.upper() +'-EMITTED', cfg.primary_geography.upper() +'_SUPPLY') util.replace_index_name(self.outputs.c_emissions, cfg.primary_geography.upper() +'-CONSUMED', cfg.primary_geography.upper()) self.outputs.c_emissions= self.outputs.c_emissions[self.outputs.c_emissions['VALUE']!=0] emissions_unit = cfg.cfgfile.get('case','mass_unit') self.outputs.c_emissions.columns = [emissions_unit.upper()]
def calculate_combined_cost_results(self): #calculate and format export costs cost_unit = cfg.cfgfile.get('case','currency_year_id') + " " + cfg.cfgfile.get('case','currency_name') if self.supply.export_costs is not None: setattr(self.outputs,'export_costs',self.supply.export_costs) self.export_costs_df = self.outputs.return_cleaned_output('export_costs') del self.outputs.export_costs util.replace_index_name(self.export_costs_df, 'FINAL_ENERGY','SUPPLY_NODE_EXPORT') keys = ["EXPORT","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.export_costs_df = pd.concat([self.export_costs_df],keys=[key],names=[name]) self.export_costs_df.columns = [cost_unit.upper()] else: self.export_costs_df = None #calculate and format emobodied supply costs self.embodied_energy_costs_df = self.demand.outputs.return_cleaned_output('demand_embodied_energy_costs') self.embodied_energy_costs_df.columns = [cost_unit.upper()] # del self.demand.outputs.demand_embodied_energy_costs keys = ["DOMESTIC","SUPPLY"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.embodied_energy_costs_df = pd.concat([self.embodied_energy_costs_df],keys=[key],names=[name]) #calculte and format direct demand emissions self.demand_costs_df= self.demand.outputs.return_cleaned_output('levelized_costs') # del self.demand.outputs.levelized_costs keys = ["DOMESTIC","DEMAND"] names = ['EXPORT/DOMESTIC', "SUPPLY/DEMAND"] for key,name in zip(keys,names): self.demand_costs_df = pd.concat([self.demand_costs_df],keys=[key],names=[name]) # levels_to_keep = cfg.output_levels # levels_to_keep = [x.upper() for x in levels_to_keep] # levels_to_keep += names + [self.geography.upper() +'_SUPPLY', 'SUPPLY_NODE'] keys = ['EXPORTED', 'SUPPLY-SIDE', 'DEMAND-SIDE'] names = ['COST TYPE'] self.outputs.costs = util.df_list_concatenate([self.export_costs_df, self.embodied_energy_costs_df, self.demand_costs_df],keys=keys,new_names=names) # util.replace_index_name(self.outputs.costs, self.geography.upper() +'_EARNED', self.geography.upper() +'_SUPPLY') # util.replace_index_name(self.outputs.costs, self.geography.upper() +'_CONSUMED', self.geography.upper()) self.outputs.costs[self.outputs.costs<0]=0 self.outputs.costs= self.outputs.costs[self.outputs.costs[cost_unit.upper()]!=0]