b391aa6475
change snakemake output file format
91 lines
1.9 KiB
Python
91 lines
1.9 KiB
Python
"""
|
|
Reads biomass transport costs for different countries of the JRC report
|
|
|
|
"The JRC-EU-TIMES model.
|
|
Bioenergy potentials
|
|
for EU and neighbouring countries."
|
|
(2015)
|
|
|
|
converts them from units 'EUR per km/ton' -> 'EUR/ (km MWh)'
|
|
|
|
assuming as an approximation energy content of wood pellets
|
|
|
|
@author: bw0928
|
|
"""
|
|
|
|
import pandas as pd
|
|
import tabula as tbl
|
|
|
|
ENERGY_CONTENT = 4.8 # unit MWh/t (wood pellets)
|
|
|
|
def get_countries():
|
|
|
|
pandas_options = dict(
|
|
skiprows=range(6),
|
|
header=None,
|
|
index_col=0
|
|
)
|
|
|
|
return tbl.read_pdf(
|
|
str(snakemake.input.transport_cost_data),
|
|
pages="145",
|
|
multiple_tables=False,
|
|
pandas_options=pandas_options
|
|
)[0].index
|
|
|
|
|
|
def get_cost_per_tkm(page, countries):
|
|
|
|
pandas_options = dict(
|
|
skiprows=range(6),
|
|
header=0,
|
|
sep=' |,',
|
|
engine='python',
|
|
index_col=False,
|
|
)
|
|
|
|
sc = tbl.read_pdf(
|
|
str(snakemake.input.transport_cost_data),
|
|
pages=page,
|
|
multiple_tables=False,
|
|
pandas_options=pandas_options
|
|
)[0]
|
|
sc.index = countries
|
|
sc.columns = sc.columns.str.replace("€", "EUR")
|
|
|
|
return sc
|
|
|
|
|
|
def build_biomass_transport_costs():
|
|
|
|
countries = get_countries()
|
|
|
|
sc1 = get_cost_per_tkm(146, countries)
|
|
sc2 = get_cost_per_tkm(147, countries)
|
|
|
|
# take mean of both supply chains
|
|
to_concat = [sc1["EUR/km/ton"], sc2["EUR/km/ton"]]
|
|
transport_costs = pd.concat(to_concat, axis=1).mean(axis=1)
|
|
|
|
# convert tonnes to MWh
|
|
transport_costs /= ENERGY_CONTENT
|
|
transport_costs.name = "EUR/km/MWh"
|
|
|
|
# rename country names
|
|
to_rename = {
|
|
"UK": "GB",
|
|
"XK": "KO",
|
|
"EL": "GR"
|
|
}
|
|
transport_costs.rename(to_rename, inplace=True)
|
|
|
|
# add missing Norway with data from Sweden
|
|
transport_costs["NO"] = transport_costs["SE"]
|
|
|
|
transport_costs.to_csv(snakemake.output[0])
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
build_biomass_transport_costs()
|