helpers: importing networks with override_components (#128)
* helpers: importing networks with override_components (closes #122) [skip travis] * Update scripts/plot_network.py Co-Authored-By: FabianHofmann <hofmann@fias.uni-frankfurt.de> Co-authored-by: FabianHofmann <hofmann@fias.uni-frankfurt.de>
This commit is contained in:
parent
543bb95759
commit
cd85d61470
@ -40,11 +40,57 @@ def configure_logging(snakemake, skip_handlers=False):
|
|||||||
})
|
})
|
||||||
logging.basicConfig(**kwargs)
|
logging.basicConfig(**kwargs)
|
||||||
|
|
||||||
|
def load_network(import_name=None, custom_components=None):
|
||||||
|
"""
|
||||||
|
Helper for importing a pypsa.Network with additional custom components.
|
||||||
|
|
||||||
|
Parameters
|
||||||
|
----------
|
||||||
|
import_name : str
|
||||||
|
As in pypsa.Network(import_name)
|
||||||
|
custom_components : dict
|
||||||
|
Dictionary listing custom components.
|
||||||
|
For using ``snakemake.config['override_components']``
|
||||||
|
in ``config.yaml`` define:
|
||||||
|
|
||||||
|
.. code:: yaml
|
||||||
|
|
||||||
|
override_components:
|
||||||
|
ShadowPrice:
|
||||||
|
component: ["shadow_prices","Shadow price for a global constraint.",np.nan]
|
||||||
|
attributes:
|
||||||
|
name: ["string","n/a","n/a","Unique name","Input (required)"]
|
||||||
|
value: ["float","n/a",0.,"shadow value","Output"]
|
||||||
|
|
||||||
|
Returns
|
||||||
|
-------
|
||||||
|
pypsa.Network
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pypsa
|
||||||
|
from pypsa.descriptors import Dict
|
||||||
|
|
||||||
|
override_components = None
|
||||||
|
override_component_attrs = None
|
||||||
|
|
||||||
|
if custom_components is not None:
|
||||||
|
override_components = pypsa.components.components.copy()
|
||||||
|
override_component_attrs = Dict({k : v.copy() for k,v in pypsa.components.component_attrs.items()})
|
||||||
|
for k, v in custom_components.items():
|
||||||
|
override_components.loc[k] = v['component']
|
||||||
|
override_component_attrs[k] = pd.DataFrame(columns = ["type","unit","default","description","status"])
|
||||||
|
for attr, val in v['attributes'].items():
|
||||||
|
override_component_attrs[k].loc[attr] = val
|
||||||
|
|
||||||
|
return pypsa.Network(import_name=import_name,
|
||||||
|
override_components=override_components,
|
||||||
|
override_component_attrs=override_component_attrs)
|
||||||
|
|
||||||
def pdbcast(v, h):
|
def pdbcast(v, h):
|
||||||
return pd.DataFrame(v.values.reshape((-1, 1)) * h.values,
|
return pd.DataFrame(v.values.reshape((-1, 1)) * h.values,
|
||||||
index=v.index, columns=h.index)
|
index=v.index, columns=h.index)
|
||||||
|
|
||||||
def load_network(fn, tech_costs, config, combine_hydro_ps=True):
|
def load_network_for_plots(fn, tech_costs, config, combine_hydro_ps=True):
|
||||||
import pypsa
|
import pypsa
|
||||||
from add_electricity import update_transmission_costs, load_costs
|
from add_electricity import update_transmission_costs, load_costs
|
||||||
|
|
||||||
|
@ -172,7 +172,7 @@ def plot_map(n, ax=None, attribute='p_nom', opts={}):
|
|||||||
|
|
||||||
return fig
|
return fig
|
||||||
|
|
||||||
#n = load_network(snakemake.input.network, opts, combine_hydro_ps=False)
|
#n = load_network_for_plots(snakemake.input.network, opts, combine_hydro_ps=False)
|
||||||
|
|
||||||
|
|
||||||
def plot_total_energy_pie(n, ax=None):
|
def plot_total_energy_pie(n, ax=None):
|
||||||
@ -261,7 +261,7 @@ if __name__ == "__main__":
|
|||||||
map_figsize = opts['map']['figsize']
|
map_figsize = opts['map']['figsize']
|
||||||
map_boundaries = opts['map']['boundaries']
|
map_boundaries = opts['map']['boundaries']
|
||||||
|
|
||||||
n = load_network(snakemake.input.network, snakemake.input.tech_costs, snakemake.config)
|
n = load_network_for_plots(snakemake.input.network, snakemake.input.tech_costs, snakemake.config)
|
||||||
|
|
||||||
scenario_opts = snakemake.wildcards.opts.split('-')
|
scenario_opts = snakemake.wildcards.opts.split('-')
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user