def retrieving_max_shift(): ref = gdx_to_df(gdx_file, 'DEM_RES_FP') new = gdx_to_df(gdx_file, 'demand_new_res') old_indexr = ref.index.names old_indexn = new.index.names ref['C'] = [zone_dict[z] for z in ref.index.get_level_values('Z')] new['C'] = [zone_dict[z] for z in new.index.get_level_values('Z')] ref.set_index('C', append=True, inplace=True) new.set_index('C', append=True, inplace=True) ref = ref.reorder_levels(['C'] + old_indexr) new = new.reorder_levels(['C'] + old_indexn) shiftedtot=0 for i in ref.index: value1 = float(ref.get_value(i,'DEM_RES_FP')) value2 = float(new.get_value((i[0],i[1],i[2],i[3],'L'),'demand_new_res')) shifted = (value1-value2) # shifted = abs(shifted) # print value1,value2,shifted ref.set_value(i,'DEM_RES_FP',shifted) shiftedtot = shiftedtot + shifted ref.reset_index(inplace=True) new.reset_index(inplace=True) maxshift = pivot_table(ref, 'DEM_RES_FP', index=['Z'], columns=['C'], aggfunc=np.max) # print shiftedtot return maxshift
def retrieving_stor_cap_c(): stor = gdx_to_df(gdx_file, 'p_cap_c') old_index = stor.index.names stor['C'] = [zone_dict[z] for z in stor.index.get_level_values('Z')] stor.set_index('C', append=True, inplace=True) stor = stor.reorder_levels(['C'] + old_index) stor = pivot_table(stor.reset_index(), 'p_cap_c', index=['Y','Z','S'], columns=['C'], aggfunc=np.sum) return stor
def retrieving_cap(): cap = gdx_to_df(gdx_file, 'cap') old_index = cap.index.names cap['C'] = [zone_dict[z] for z in cap.index.get_level_values('Z')] cap.set_index('C', append=True, inplace=True) cap = cap.reorder_levels(['C'] + old_index) cap.reset_index(inplace=True) cap = pivot_table(cap, 'cap', index=['Y', 'Z', 'G'], columns=['C'], aggfunc=np.sum) return cap
def retrieving_edr_cost(): costgDR = gdx_to_df(gdx_file, 'costgDR') old_index = costgDR.index.names costgDR['C'] = [zone_dict[z] for z in costgDR.index.get_level_values('Z')] costgDR.set_index('C', append=True, inplace=True) costgDR = costgDR.reorder_levels(['C'] + old_index) costgDR.reset_index(inplace=True) costgDR = pivot_table(costgDR, 'costgDR', index=['Z'], columns=['C'], aggfunc=np.sum) return costgDR
def retrieving_res_s(): res_s = gdx_to_df(gdx_file, 'res_s') old_index = res_s.index.names # print old_index res_s['C'] = [storage[z] for z in res_s.index.get_level_values('Z')] res_s.set_index('C', append=True, inplace=True) res_s = res_s.reorder_levels(['C'] + old_index) for i in res_s.index: value = float(res_s.get_value(i,'res_s')) res_s.set_value(i,'res_s',value) res_s = pivot_table(res_s.reset_index(), 'res_s', index=['Y','R'], columns=['C'], aggfunc=np.sum) return res_s
def retrieving_stor_d(): stord = gdx_to_df(gdx_file, 'p_d') old_index = stord.index.names stord['C'] = [zone_dict[z] for z in stord.index.get_level_values('Z')] stord.set_index('C', append=True, inplace=True) stord = stord.reorder_levels(['C'] + old_index) for i in stord.index: value = float(stord.get_value(i,'p_d'))*weight[i[2]-1] stord.set_value(i,'p_d',value) stord.reset_index(inplace=True) stord = pivot_table(stord, 'p_d', index=['Y'], columns=['C'], aggfunc=np.sum) return stord
def retrieving_gen(): gen = gdx_to_df(gdx_file, 'gen') old_index = gen.index.names gen['C'] = [zone_dict[z] for z in gen.index.get_level_values('Z')] gen.set_index('C', append=True, inplace=True) gen = gen.reorder_levels(['C'] + old_index) for i in gen.index: value = float(gen.get_value(i,'gen'))*weight[i[2]-1] gen.set_value(i,'gen',value) gen.reset_index(inplace=True) gen = pivot_table(gen, 'gen', index=['Y', 'G'], columns=['C'], aggfunc=np.sum) return gen
def retrieving_res_DR(): res_DR = gdx_to_df(gdx_file, 'res_DR') old_index = res_DR.index.names # print old_index res_DR['C'] = [resDR[z] for z in res_DR.index.get_level_values('Z')] res_DR.set_index('C', append=True, inplace=True) res_DR = res_DR.reorder_levels(['C'] + old_index) for i in res_DR.index: value = float(res_DR.get_value(i,'res_DR'))*weight[i[2]-1] res_DR.set_value(i,'res_DR',value) res_DR = pivot_table(res_DR.reset_index(), 'res_DR', index=['Y','R'], columns=['C'],aggfunc=np.sum) return res_DR
def test_read_out_parameters(self): gdx_file = os.path.join(os.getcwd(), "tests", "test_database.gdx") create_test_database(gdx_file) df_param_s = ga.gdx_to_df(gdx_file, "Param_S") self.assertEqual(len(df_param_s), 10) self.assertEqual(sum(df_param_s["Param_S"]), 60.0) self.assertEqual(df_param_s.index.names, ["S"]) self.assertEqual(df_param_s.columns, ["Param_S"]) df_param_s_s = ga.gdx_to_df(gdx_file, "Param_S_S") self.assertEqual(len(df_param_s_s), 100) self.assertEqual(sum(df_param_s_s["Param_S_S"]), 0) self.assertEqual(df_param_s_s.index.names, ["S", "SS"]) self.assertEqual(df_param_s_s.columns, ["Param_S_S"]) df_param_s_i = ga.gdx_to_df(gdx_file, "Param_S_I") self.assertEqual(len(df_param_s_i), 100) self.assertEqual(sum(df_param_s_i["Param_S_I"]), 0) self.assertEqual(df_param_s_i.index.names, ["S", "I"]) self.assertEqual(df_param_s_i.columns, ["Param_S_I"])
def test_read_out_sets(self): gdx_file = os.path.join(os.getcwd(), "tests", "test_database.gdx") create_test_database(gdx_file) df_s = ga.gdx_to_df(gdx_file, "S") self.assertEqual(len(df_s), 10) df_subs = ga.gdx_to_df(gdx_file, "SubS") self.assertEqual(len(df_subs), 10) self.assertEqual(len(df_subs[df_subs["SubS"]]), 5) df_i = ga.gdx_to_df(gdx_file, "I") self.assertEqual(len(df_i), 10) df_subi = ga.gdx_to_df(gdx_file, "SubI") self.assertEqual(len(df_subi), 10) self.assertEqual(len(df_subi[df_subi["SubI"]]), 5) df_subsi = ga.gdx_to_df(gdx_file, "SubSI") self.assertEqual(len(df_subsi), 100) self.assertEqual(len(df_subsi[df_subsi["SubSI"]]), 25) df_subs_empty = ga.gdx_to_df(gdx_file, "SubSEmpty") self.assertEqual(len(df_subs_empty), 10) self.assertEqual(len(df_subs_empty[df_subs_empty["SubSEmpty"]]), 0)
def retrieving_curt(): curt = gdx_to_df(gdx_file, 'curt') old_index = curt.index.names curt['C'] = [curtail[z] for z in curt.index.get_level_values('Z')] curt.set_index('C', append=True, inplace=True) curt = curt.reorder_levels(['C'] + old_index) # print curt.index.names for i in curt.index: value = float(curt.get_value(i,'curt'))*weight[i[2]-1] curt.set_value(i,'curt',value) curt.reset_index(inplace=True) curt = pivot_table(curt, 'curt', index=['Y'], columns=['C'], aggfunc=np.sum) return curt
def retrieving_demand(): new = gdx_to_df(gdx_file, 'demand_unit') old_index = new.index.names new['C'] = [zone_dict[z] for z in new.index.get_level_values('Z')] new.set_index('C', append=True, inplace=True) new = new.reorder_levels(['C'] + old_index) print new.index.names for i in new.index: value = float(new.get_value(i,'demand_unit'))*weight[i[1]-1] new.set_value(i,'demand_unit',value) new.reset_index(inplace=True) new = pivot_table(new, 'demand_unit', index=['Z'], columns=['C'], aggfunc=np.sum) # print shiftedtot return new
from gams_addon import gdx_to_df, DomainInfo from openpyxl.styles import Style, Border, Alignment, Protection, Font, colors file = 'results\out_db_40_DR.gdx' gdx_file = os.path.join(os.getcwd(), '%s' % file) writefile = os.getcwd() + '\\' + 'excel\output_elasticity_model.xlsx' writer = ExcelWriter(writefile) print gdx_file zone_dict = dict() zone_dict['BEL_Z'] = 'BEL' print 'Retrieving price_unit_clone' price_unit = gdx_to_df(gdx_file, 'price_unit_clone') old_index = price_unit.index.names price_unit['C'] = [zone_dict[z] for z in price_unit.index.get_level_values('Z')] price_unit.set_index('C', append=True, inplace=True) price_unit = price_unit.reorder_levels(['C'] + old_index) price_unit.reset_index(inplace=True) price_unit = pivot_table(price_unit, 'price_unit_clone', index=['P', 'T','Z'], columns=['C'], aggfunc=np.sum) print 'Retrieving demand_unit' demand_unit = gdx_to_df(gdx_file, 'demand_unit') old_index = demand_unit.index.names demand_unit['C'] = [zone_dict[z] for z in demand_unit.index.get_level_values('Z')] demand_unit.set_index('C', append=True, inplace=True) demand_unit = demand_unit.reorder_levels(['C'] + old_index) demand_unit.reset_index(inplace=True) demand_unit = pivot_table(demand_unit, 'demand_unit', index=['P','T','Z'], columns=['C'], aggfunc=np.sum)