Skip to content

Commit

Permalink
Linting and some notes
Browse files Browse the repository at this point in the history
  • Loading branch information
willu47 committed Aug 9, 2019
1 parent 05bcef9 commit da8c2cd
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 34 deletions.
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
xlrd
xlrd
pandas
87 changes: 54 additions & 33 deletions scripts/generate_pickle.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,28 @@
"""Generate a pickle file from TEMBA solution
Notes
-----
Could use existing CSVFiles melted into narrow dataframes::
>>> df = pd.read_csv('CSVFiles/EmissionActivityRatio.csv')
>>> df.melt(id_vars=['TECHNOLOGY','EMISSION','MODEOFOPERATION'],
var_name='YEAR',
value_name="EmissionActivityRatio")
"""
import sys
import pandas as pd


def main(data_file : str, pickle_file : str):
"""
def main(data_file, pickle_file):
Arguments
---------
data_file : str
Path to the solution file
pickle_file : str
Path to which to write the pickle file
"""

df = pd.read_csv(data_file, sep='$', header=None, skiprows=2)
df.columns = ['temp']
Expand All @@ -10,36 +31,36 @@ def main(data_file, pickle_file):

params = df.parameter.unique()
all_params = {}
cols = {'NewCapacity':['r','t','y'],
'AccumulatedNewCapacity':['r','t','y'],
'TotalCapacityAnnual':['r','t','y'],
'CapitalInvestment':['r','t','y'],
'AnnualVariableOperatingCost':['r','t','y'],
'AnnualFixedOperatingCost':['r','t','y'],
'SalvageValue':['r','t','y'],
'DiscountedSalvageValue':['r','t','y'],
'TotalTechnologyAnnualActivity':['r','t','y'],
'RateOfActivity':['r','l','t','m','y'],
'RateOfTotalActivity':['r','t','l','y'],
'Demand':['r','l','f','y'],
'TotalAnnualTechnologyActivityByMode':['r','t','m','y'],
'TotalTechnologyModelPeriodActivity':['r','t'],
'ProductionByTechnologyAnnual':['r','t','f','y'],
'AnnualTechnologyEmissionByMode':['r','t','e','m','y'],
'AnnualTechnologyEmission':['r','t','e','y'],
'AnnualEmissions':['r','e','y'],
'UseByTechnologyAnnual':['r','t','f','y']
}
cols = {'NewCapacity': ['r','t','y'],
'AccumulatedNewCapacity':['r','t','y'],
'TotalCapacityAnnual':['r','t','y'],
'CapitalInvestment':['r','t','y'],
'AnnualVariableOperatingCost':['r','t','y'],
'AnnualFixedOperatingCost':['r','t','y'],
'SalvageValue':['r','t','y'],
'DiscountedSalvageValue':['r','t','y'],
'TotalTechnologyAnnualActivity':['r','t','y'],
'RateOfActivity':['r','l','t','m','y'],
'RateOfTotalActivity':['r','t','l','y'],
'Demand':['r','l','f','y'],
'TotalAnnualTechnologyActivityByMode':['r','t','m','y'],
'TotalTechnologyModelPeriodActivity':['r','t'],
'ProductionByTechnologyAnnual':['r','t','f','y'],
'AnnualTechnologyEmissionByMode':['r','t','e','m','y'],
'AnnualTechnologyEmission':['r','t','e','y'],
'AnnualEmissions':['r','e','y'],
'UseByTechnologyAnnual':['r','t','f','y']
}

for each in params:
df_p = df[df.parameter == each].copy()
df_p[cols[each]] = df_p['id'].str.split(',',expand=True)
df_p[cols[each]] = df_p['id'].str.split(',', expand=True)
cols[each].append('value')
df_p = df_p[cols[each]] # Reorder dataframe to include 'value' as last column
all_params[each] = pd.DataFrame(df_p) # Create a dataframe for each parameter
df_p = df_p.rename(columns={'value':each})
df_p = df_p.rename(columns={'value': each})
df_p.to_csv(str(each) + '.csv', index=None) # Print data for each paramter to a CSV file


lines = []

parsing = False
Expand All @@ -51,26 +72,25 @@ def main(data_file, pickle_file):

output_table = []
input_table= []
emission_table= []

with open(data_file, 'r') as f:
for line in f:
if line.startswith('set YEAR'):
start_year = line.split(' ')[3]
if line.startswith('set COMMODITY'): # Extracts list of COMMODITIES from data file. Some models use FUEL instead.
elif line.startswith('set COMMODITY'): # Extracts list of COMMODITIES from data file. Some models use FUEL instead.
fuel_list = line.split(' ')[3:-1]
if line.startswith('set FUEL'): # Extracts list of FUELS from data file. Some models use COMMODITIES instead.
elif line.startswith('set FUEL'): # Extracts list of FUELS from data file. Some models use COMMODITIES instead.
fuel_list = line.split(' ')[3:-1]
if line.startswith('set TECHNOLOGY'):
elif line.startswith('set TECHNOLOGY'):
tech_list = line.split(' ')[3:-1]
if line.startswith('set STORAGE'):
elif line.startswith('set STORAGE'):
storage_list = line.split(' ')[3:-1]
if line.startswith('set EMISSION'):
elif line.startswith('set EMISSION'):
emission_list = line.split(' ')[3:-1]
if line.startswith('set MODE_OF_OPERATION'):
elif line.startswith('set MODE_OF_OPERATION'):
mode_list = line.split(' ')[3:-1]

emission_table = []
# Emission activity ratios-reading them from the data file
with open(data_file, 'r') as f:
for line in f:
Expand Down Expand Up @@ -227,7 +247,7 @@ def main(data_file, pickle_file):
#########
df_ems_ys['EmissionActivityRatio'] = df_ems_ys['EmissionActivityRatio'].astype(float)
df_ems_ys['YearSplit'] = df_ems_ys['YearSplit'].astype(float)
df_activity['RateOfActivity']=df_activity['RateOfActivity'].astype(float)
df_activity['RateOfActivity'] = df_activity['RateOfActivity'].astype(float)
df_ems_ys.set_index(['t','m','y','l'],inplace=True)
df_antechem=df_activity.join(df_ems_ys, on=['t','m','y','l'])
#df_antechem is for Annual technology emissions
Expand Down Expand Up @@ -267,6 +287,7 @@ def main(data_file, pickle_file):
pickle_file = sys.argv[2]
try:
main(data_file, pickle_file)
sys.exit(0)
except:
sys.exit(1)

Expand Down

0 comments on commit da8c2cd

Please sign in to comment.