From 5d63bc76d04524feb6f428f02b07927f935601a6 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:02:56 +0200 Subject: [PATCH 01/13] Sketch linear slide --- Snakefile | 23 +++++++++++++ scripts/build_linear_slide.py | 61 +++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 scripts/build_linear_slide.py diff --git a/Snakefile b/Snakefile index 7ab75448..ae0766c4 100644 --- a/Snakefile +++ b/Snakefile @@ -299,3 +299,26 @@ rule join_scenario_results: directory("results/joined_scenarios/{scenario_group}/joined/") shell: "python scripts/join_scenarios.py {input} {output}" + + +linear_slides = {"A": ("example_base", "example_more_re", 2)} + +def extend_scenario_groups(wildcards): + + lb, ub, n = linear_slides[wildcards.name_slide] + return [os.path.join("results",scenario,"preprocessed") for scenario in [lb, ub]] + +def get_n(wildcards): + n = linear_slides[wildcards.name_slide][2] + return n + +rule build_linear_slide: + input: + extend_scenario_groups + output: + directory("results/linear_slides/{name_slide}") + params: + n=get_n, + logfile="logs/{name_slide}.log", + shell: + "python scripts/build_linear_slide.py {input[0]} {input[1]} {output} {params.n} {params.logfile}" diff --git a/scripts/build_linear_slide.py b/scripts/build_linear_slide.py new file mode 100644 index 00000000..1af10894 --- /dev/null +++ b/scripts/build_linear_slide.py @@ -0,0 +1,61 @@ +# coding: utf-8 +r""" +Inputs +------- +scenario_specs : str + ``scenarios/{scenario}.yml``: path of input file (.yml) containing scenario specifications +destination : str + ``results/{scenario}/preprocessed``: path of output directory +logfile : str + ``logs/{scenario}.log``: path to logfile + +Outputs +--------- +oemoflex.EnergyDatapackage + EnergyDatapackage that can be read by oemof.tabular, with data (scalars and timeseries) + as csv and metadata (describing resources and foreign key relations) as json. + +Description +------------- +The script creates an empty EnergyDatapackage from the specifications given in the scenario_specs, +fills it with scalar and timeseries data, infers the metadata and saves it to the given destination. +Further, additional parameters like emission limit are saved in a separate file. +""" +import os +import sys +from oemof_b3.config import config +from oemoflex.model.datapackage import EnergyDataPackage +from oemoflex.model.variations import EDPSensitivity + + +if __name__ == "__main__": + path_lb = sys.argv[1] + + path_ub = sys.argv[2] + + destination = sys.argv[3] + + n = int(sys.argv[4]) + + logfile = sys.argv[5] + + logger = config.add_snake_logger(logfile, "build_linear_slide") + + if not os.path.exists(destination): + os.mkdir(destination) + + lb = EnergyDataPackage.from_csv_dir(path_lb) + ub = EnergyDataPackage.from_csv_dir(path_ub) + + lb.stack_components() + ub.stack_components() + + sensitivity = EDPSensitivity(lb, ub) + + logger.info(f"Creating {n} samples.") + samples = sensitivity.get_linear_slide(n) + + for n_sample, sample in samples.items(): + # TODO get edps and use sample.basepath + path = os.path.join(destination, str(n_sample) + ".csv") + sample.to_csv(path) From ffa117bea2cc504596734b1bf03cc86bafc99b40 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Mon, 4 Apr 2022 17:45:13 +0200 Subject: [PATCH 02/13] Save as EnergyDataPackage --- scripts/build_linear_slide.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/scripts/build_linear_slide.py b/scripts/build_linear_slide.py index 1af10894..b5e1f8ed 100644 --- a/scripts/build_linear_slide.py +++ b/scripts/build_linear_slide.py @@ -56,6 +56,11 @@ samples = sensitivity.get_linear_slide(n) for n_sample, sample in samples.items(): - # TODO get edps and use sample.basepath - path = os.path.join(destination, str(n_sample) + ".csv") - sample.to_csv(path) + + sample.unstack_components() + + path = os.path.join(destination, str(n_sample)) + + sample.basepath = path + + sample.to_csv_dir(path) From 98f7deafa17a1eedc48c465f77c507b13ea7f324 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Mon, 4 Apr 2022 18:35:32 +0200 Subject: [PATCH 03/13] Integrate linear slides into pipeline --- Snakefile | 53 ++++++++++++++++++++--------------- scripts/build_linear_slide.py | 2 +- 2 files changed, 31 insertions(+), 24 deletions(-) diff --git a/Snakefile b/Snakefile index ae0766c4..09909f0b 100644 --- a/Snakefile +++ b/Snakefile @@ -9,6 +9,11 @@ scenario_groups = { "base-scenarios": ["base-2050","base-2050-high_capacity_cost"], } +linear_slides = {"A": ("example_base", "example_more_re", 2)} + +wildcard_constraints: + subfolder="|".join(list(linear_slides.keys()) + ["scenarios"]) + resource_plots = ['scal_conv_pp-capacity_net_el'] @@ -20,15 +25,15 @@ rule plot_all_resources: rule plot_all_examples: input: expand( - "results/{scenario}/plotted/{plot_type}", - scenario=scenario_groups["examples"], + "results/scenarios/{example}/plotted/{plot_type}", + example=scenario_groups["examples"], plot_type=["scalars", "dispatch"], ) rule plot_all_scenarios: input: expand( - "results/{scenario}/plotted/{plot_type}", + "results/scenarios/{scenario}/plotted/{plot_type}", scenario=scenario_groups["base-scenarios"], plot_type=["scalars", "dispatch"], ) @@ -57,9 +62,9 @@ rule create_input_data_overview: rule prepare_example: input: - "examples/{scenario}/preprocessed/" + "examples/{example}/preprocessed/" output: - directory("results/{scenario}/preprocessed") + directory("results/scenarios/{example}/preprocessed") wildcard_constraints: # necessary to distinguish from those scenarios that are not pre-fabricated scenario="|".join(scenario_groups["examples"]) @@ -170,7 +175,7 @@ rule build_datapackage: get_paths_scenario_input, scenario="scenarios/{scenario}.yml" output: - directory("results/{scenario}/preprocessed") + directory("results/scenarios/{scenario}/preprocessed") params: logfile="logs/{scenario}.log" shell: @@ -178,9 +183,9 @@ rule build_datapackage: rule optimize: input: - "results/{scenario}/preprocessed" + "results/{subfolder}/{scenario}/preprocessed" output: - directory("results/{scenario}/optimized/") + directory("results/{subfolder}/{scenario}/optimized/") params: logfile="logs/{scenario}.log" shell: @@ -188,9 +193,9 @@ rule optimize: rule postprocess: input: - "results/{scenario}/optimized" + "results/{subfolder}/{scenario}/optimized" output: - directory("results/{scenario}/postprocessed/") + directory("results/{subfolder}/{scenario}/postprocessed/") params: logfile="logs/{scenario}.log" shell: @@ -198,17 +203,17 @@ rule postprocess: rule create_results_table: input: - "results/{scenario}/postprocessed/" + "results/{subfolder}/{scenario}/postprocessed/" output: - directory("results/{scenario}/tables/") + directory("results/{subfolder}/{scenario}/tables/") shell: "python scripts/create_results_table.py {input} {output}" rule plot_dispatch: input: - "results/{scenario}/postprocessed/" + "results/{subfolder}/{scenario}/postprocessed/" output: - directory("results/{scenario}/plotted/dispatch") + directory("results/{subfolder}/{scenario}/plotted/dispatch") shell: "python scripts/plot_dispatch.py {input} {output}" @@ -223,9 +228,9 @@ rule plot_conv_pp_scalars: rule plot_scalar_results: input: - "results/{scenario}/postprocessed/" + "results/{subfolder}/{scenario}/postprocessed/" output: - directory("results/{scenario}/plotted/scalars/") + directory("results/{subfolder}/{scenario}/plotted/scalars/") shell: "python scripts/plot_scalar_results.py {input} {output}" @@ -241,13 +246,13 @@ rule report: input: template="report/report.md", template_interactive="report/report_interactive.md", - plots_scalars="results/{scenario}/plotted/scalars", - plots_dispatch="results/{scenario}/plotted/dispatch", + plots_scalars="results/{subfolder}/{scenario}/plotted/scalars", + plots_dispatch="results/{subfolder}/{scenario}/plotted/dispatch", output: - directory("results/{scenario}/report/") + directory("results/{subfolder}/{scenario}/report/") params: logfile="logs/{scenario}.log", - all_plots="results/{scenario}/plotted/", + all_plots="results/{subfolder}/{scenario}/plotted/", run: import os import shutil @@ -301,12 +306,12 @@ rule join_scenario_results: "python scripts/join_scenarios.py {input} {output}" -linear_slides = {"A": ("example_base", "example_more_re", 2)} + def extend_scenario_groups(wildcards): lb, ub, n = linear_slides[wildcards.name_slide] - return [os.path.join("results",scenario,"preprocessed") for scenario in [lb, ub]] + return [os.path.join("results", "scenarios", scenario, "preprocessed") for scenario in [lb, ub]] def get_n(wildcards): n = linear_slides[wildcards.name_slide][2] @@ -316,7 +321,9 @@ rule build_linear_slide: input: extend_scenario_groups output: - directory("results/linear_slides/{name_slide}") + directory("results/{name_slide}") + wildcard_constraints: + name_slide="|".join(linear_slides.keys()) params: n=get_n, logfile="logs/{name_slide}.log", diff --git a/scripts/build_linear_slide.py b/scripts/build_linear_slide.py index b5e1f8ed..83b68f1d 100644 --- a/scripts/build_linear_slide.py +++ b/scripts/build_linear_slide.py @@ -59,7 +59,7 @@ sample.unstack_components() - path = os.path.join(destination, str(n_sample)) + path = os.path.join(destination, str(n_sample), "preprocessed") sample.basepath = path From 47d7fd662928ec525bf8838fe02681827cd1e99a Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 20 May 2022 13:47:58 +0200 Subject: [PATCH 04/13] Fix wildcard constraint for prepare_example --- Snakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Snakefile b/Snakefile index 09909f0b..50db037a 100644 --- a/Snakefile +++ b/Snakefile @@ -67,7 +67,7 @@ rule prepare_example: directory("results/scenarios/{example}/preprocessed") wildcard_constraints: # necessary to distinguish from those scenarios that are not pre-fabricated - scenario="|".join(scenario_groups["examples"]) + example="|".join(scenario_groups["examples"]) run: import shutil shutil.copytree(src=input[0], dst=output[0]) From fb8f403a7cfc4c8d8580f6b98f39c8e4d1bbde41 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 20 May 2022 14:00:59 +0200 Subject: [PATCH 05/13] Rename rule --- Snakefile | 22 ++++++++----------- ...d_linear_slide.py => build_sensitivity.py} | 0 2 files changed, 9 insertions(+), 13 deletions(-) rename scripts/{build_linear_slide.py => build_sensitivity.py} (100%) diff --git a/Snakefile b/Snakefile index 41d4c760..c1b3496a 100644 --- a/Snakefile +++ b/Snakefile @@ -9,10 +9,10 @@ scenario_groups = { "all-scenarios": [os.path.splitext(scenario)[0] for scenario in os.listdir("scenarios")] } -linear_slides = {"A": ("example_base", "example_more_re", 2)} +sensitivities = {"A": ("example_base", "example_more_re", 2)} wildcard_constraints: - subfolder="|".join(list(linear_slides.keys()) + ["scenarios"]) + subfolder="|".join(list(sensitivities.keys()) + ["scenarios"]) resource_plots = ['scal_conv_pp-capacity_net_el'] @@ -325,27 +325,23 @@ rule join_scenario_results: shell: "python scripts/join_scenarios.py {input} {output}" - - - def extend_scenario_groups(wildcards): - - lb, ub, n = linear_slides[wildcards.name_slide] + lb, ub, n = sensitivities[wildcards.sensitivity] return [os.path.join("results", "scenarios", scenario, "preprocessed") for scenario in [lb, ub]] def get_n(wildcards): - n = linear_slides[wildcards.name_slide][2] + n = sensitivities[wildcards.sensitivity][2] return n -rule build_linear_slide: +rule build_sensitivity: input: extend_scenario_groups output: - directory("results/{name_slide}") + directory("results/{sensitivity}") wildcard_constraints: - name_slide="|".join(linear_slides.keys()) + sensitivity="|".join(sensitivities.keys()) params: n=get_n, - logfile="logs/{name_slide}.log", + logfile="logs/{sensitivity}.log", shell: - "python scripts/build_linear_slide.py {input[0]} {input[1]} {output} {params.n} {params.logfile}" + "python scripts/build_sensitivity.py {input[0]} {input[1]} {output} {params.n} {params.logfile}" diff --git a/scripts/build_linear_slide.py b/scripts/build_sensitivity.py similarity index 100% rename from scripts/build_linear_slide.py rename to scripts/build_sensitivity.py From 56c9b7f345e72401df18ee4c954ebf6ecfe39bca Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 20 May 2022 14:06:25 +0200 Subject: [PATCH 06/13] Collect sensitivities in subfolder 'sensitivites' --- Snakefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Snakefile b/Snakefile index c1b3496a..9686e759 100644 --- a/Snakefile +++ b/Snakefile @@ -12,7 +12,7 @@ scenario_groups = { sensitivities = {"A": ("example_base", "example_more_re", 2)} wildcard_constraints: - subfolder="|".join(list(sensitivities.keys()) + ["scenarios"]) + subfolder="|".join([os.path.join("sensitivities/", item) for item in list(sensitivities.keys())] + ["scenarios"]) resource_plots = ['scal_conv_pp-capacity_net_el'] @@ -337,7 +337,7 @@ rule build_sensitivity: input: extend_scenario_groups output: - directory("results/{sensitivity}") + directory("results/sensitivities/{sensitivity}") wildcard_constraints: sensitivity="|".join(sensitivities.keys()) params: From 7d59cf957796c69eaa7ba97975b5a764030e7c54 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Fri, 20 May 2022 14:35:42 +0200 Subject: [PATCH 07/13] Load EnergyDatapackage from metadata --- scripts/build_sensitivity.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/build_sensitivity.py b/scripts/build_sensitivity.py index 83b68f1d..249265d8 100644 --- a/scripts/build_sensitivity.py +++ b/scripts/build_sensitivity.py @@ -44,8 +44,8 @@ if not os.path.exists(destination): os.mkdir(destination) - lb = EnergyDataPackage.from_csv_dir(path_lb) - ub = EnergyDataPackage.from_csv_dir(path_ub) + lb = EnergyDataPackage.from_metadata(os.path.join(path_lb, "datapackage.json")) + ub = EnergyDataPackage.from_metadata(os.path.join(path_ub, "datapackage.json")) lb.stack_components() ub.stack_components() From 42a9ea7b00939fcf0aff71724f83148a18bf2b81 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Sun, 22 May 2022 20:33:52 +0200 Subject: [PATCH 08/13] Infer metadata for each sample --- scripts/build_sensitivity.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/scripts/build_sensitivity.py b/scripts/build_sensitivity.py index 249265d8..4e3351ac 100644 --- a/scripts/build_sensitivity.py +++ b/scripts/build_sensitivity.py @@ -26,6 +26,7 @@ from oemof_b3.config import config from oemoflex.model.datapackage import EnergyDataPackage from oemoflex.model.variations import EDPSensitivity +from oemof_b3.model import foreign_keys_update if __name__ == "__main__": @@ -64,3 +65,5 @@ sample.basepath = path sample.to_csv_dir(path) + + sample.infer_metadata(foreign_keys_update) From 4789dd61e0c50c15021fea4f3715761482136ffe Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Sun, 22 May 2022 20:34:31 +0200 Subject: [PATCH 09/13] Use scenarios with different parameters for components for sensitivity --- Snakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Snakefile b/Snakefile index 9686e759..8d08721f 100644 --- a/Snakefile +++ b/Snakefile @@ -9,7 +9,7 @@ scenario_groups = { "all-scenarios": [os.path.splitext(scenario)[0] for scenario in os.listdir("scenarios")] } -sensitivities = {"A": ("example_base", "example_more_re", 2)} +sensitivities = {"A": ("2050-gas_lessCH4", "2050-gas_moreCH4", 2)} wildcard_constraints: subfolder="|".join([os.path.join("sensitivities/", item) for item in list(sensitivities.keys())] + ["scenarios"]) From 1a53ebec136f53af71384baa638bb0d0b65994eb Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Sun, 22 May 2022 21:02:41 +0200 Subject: [PATCH 10/13] Add rule that joins samples of sensitvities --- Snakefile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Snakefile b/Snakefile index 8d08721f..8a494114 100644 --- a/Snakefile +++ b/Snakefile @@ -345,3 +345,20 @@ rule build_sensitivity: logfile="logs/{sensitivity}.log", shell: "python scripts/build_sensitivity.py {input[0]} {input[1]} {output} {params.n} {params.logfile}" + + +def get_sample_of_sensitivity(wildcards): + return [ + os.path.join("results", "sensitivities", wildcards.sensitivity, sample, "postprocessed") + for sample in os.listdir(os.path.join("results", "sensitivities", wildcards.sensitivity)) + if not (sample == ".snakemake_timestamp" or sample == "joined") + ] + + +rule join_sensitivity_results: + input: + get_sample_of_sensitivity + output: + directory("results/sensitivities/{sensitivity}/joined/") + shell: + "python scripts/join_scenarios.py {input} {output}" \ No newline at end of file From c056fca23ece2d9aaa0c848e9fdcdf971b119fd1 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Sun, 29 May 2022 17:37:42 +0200 Subject: [PATCH 11/13] Rename wildcard --- Snakefile | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/Snakefile b/Snakefile index 8a494114..91de8b8a 100644 --- a/Snakefile +++ b/Snakefile @@ -12,7 +12,7 @@ scenario_groups = { sensitivities = {"A": ("2050-gas_lessCH4", "2050-gas_moreCH4", 2)} wildcard_constraints: - subfolder="|".join([os.path.join("sensitivities/", item) for item in list(sensitivities.keys())] + ["scenarios"]) + single_scenarios="|".join([os.path.join("sensitivities/", item) for item in list(sensitivities.keys())] + ["scenarios"]) resource_plots = ['scal_conv_pp-capacity_net_el'] @@ -186,9 +186,9 @@ rule build_datapackage: rule optimize: input: - "results/{subfolder}/{scenario}/preprocessed" + "results/{single_scenarios}/{scenario}/preprocessed" output: - directory("results/{subfolder}/{scenario}/optimized/") + directory("results/{single_scenarios}/{scenario}/optimized/") params: logfile="logs/{scenario}.log" shell: @@ -196,9 +196,9 @@ rule optimize: rule postprocess: input: - "results/{subfolder}/{scenario}/optimized" + "results/{single_scenarios}/{scenario}/optimized" output: - directory("results/{subfolder}/{scenario}/postprocessed/") + directory("results/{single_scenarios}/{scenario}/postprocessed/") params: logfile="logs/{scenario}.log" shell: @@ -206,9 +206,9 @@ rule postprocess: rule create_results_table: input: - "results/{subfolder}/{scenario}/postprocessed/" + "results/{single_scenarios}/{scenario}/postprocessed/" output: - directory("results/{subfolder}/{scenario}/tables/") + directory("results/{single_scenarios}/{scenario}/tables/") params: logfile="logs/{scenario}.log" shell: @@ -226,9 +226,9 @@ rule create_joined_results_table: rule plot_dispatch: input: - "results/{subfolder}/{scenario}/postprocessed/" + "results/{single_scenarios}/{scenario}/postprocessed/" output: - directory("results/{subfolder}/{scenario}/plotted/dispatch") + directory("results/{single_scenarios}/{scenario}/plotted/dispatch") params: logfile="logs/{scenario}.log" shell: @@ -244,9 +244,9 @@ rule plot_conv_pp_scalars: rule plot_scalar_results: input: - "results/{subfolder}/{scenario}/postprocessed/" + "results/{single_scenarios}/{scenario}/postprocessed/" output: - directory("results/{subfolder}/{scenario}/plotted/scalars/") + directory("results/{single_scenarios}/{scenario}/plotted/scalars/") params: logfile="logs/{scenario}.log" shell: @@ -266,13 +266,13 @@ rule report: input: template="report/report.md", template_interactive="report/report_interactive.md", - plots_scalars="results/{subfolder}/{scenario}/plotted/scalars", - plots_dispatch="results/{subfolder}/{scenario}/plotted/dispatch", + plots_scalars="results/{single_scenarios}/{scenario}/plotted/scalars", + plots_dispatch="results/{single_scenarios}/{scenario}/plotted/dispatch", output: - directory("results/{subfolder}/{scenario}/report/") + directory("results/{single_scenarios}/{scenario}/report/") params: logfile="logs/{scenario}.log", - all_plots="results/{subfolder}/{scenario}/plotted/", + all_plots="results/{single_scenarios}/{scenario}/plotted/", run: import os import shutil From 73c3a60ad4f5c02ab50c85d2eb593e079e7f1e8e Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Sun, 29 May 2022 17:44:45 +0200 Subject: [PATCH 12/13] Plot sensitivity results --- Snakefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Snakefile b/Snakefile index 91de8b8a..47d456a0 100644 --- a/Snakefile +++ b/Snakefile @@ -254,11 +254,13 @@ rule plot_scalar_results: rule plot_joined_scalars: input: - "results/joined_scenarios/{scenario_group}/joined/" + "results/{joined_scenarios}/{scenario_group}/joined/" output: - directory("results/joined_scenarios/{scenario_group}/joined_plotted/") + directory("results/{joined_scenarios}/{scenario_group}/joined_plotted/") params: logfile="logs/{scenario_group}.log" + wildcard_constraints: + joined_scenarios="joined_scenarios|sensitivities" shell: "python scripts/plot_scalar_results.py {input} {output} {params.logfile}" @@ -351,7 +353,7 @@ def get_sample_of_sensitivity(wildcards): return [ os.path.join("results", "sensitivities", wildcards.sensitivity, sample, "postprocessed") for sample in os.listdir(os.path.join("results", "sensitivities", wildcards.sensitivity)) - if not (sample == ".snakemake_timestamp" or sample == "joined") + if not (sample == ".snakemake_timestamp" or sample == "joined" or sample == "joined_plotted") ] From f49b3481b4917dd29871b8e6d8e866e9faa11092 Mon Sep 17 00:00:00 2001 From: jnnr <32454596+jnnr@users.noreply.github.com> Date: Mon, 30 May 2022 11:16:49 +0200 Subject: [PATCH 13/13] Save additional scalars with the samples --- scripts/build_sensitivity.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/scripts/build_sensitivity.py b/scripts/build_sensitivity.py index 4e3351ac..9690af5e 100644 --- a/scripts/build_sensitivity.py +++ b/scripts/build_sensitivity.py @@ -27,7 +27,8 @@ from oemoflex.model.datapackage import EnergyDataPackage from oemoflex.model.variations import EDPSensitivity from oemof_b3.model import foreign_keys_update - +import oemof_b3.tools.data_processing as dp +from pandas.testing import assert_frame_equal if __name__ == "__main__": path_lb = sys.argv[1] @@ -48,6 +49,18 @@ lb = EnergyDataPackage.from_metadata(os.path.join(path_lb, "datapackage.json")) ub = EnergyDataPackage.from_metadata(os.path.join(path_ub, "datapackage.json")) + # load additional scalars and make sure that they are the same + # TODO: Currently, varying the parameters for the constraints is not supported. + # As soon as the additional scalars representing for contraints are part of the + # datapackage, this step can be removed. + additional_scalars_lb = dp.load_b3_scalars( + os.path.join(path_lb, "additional_scalars.csv") + ) + additional_scalars_ub = dp.load_b3_scalars( + os.path.join(path_ub, "additional_scalars.csv") + ) + assert_frame_equal(additional_scalars_lb, additional_scalars_ub) + lb.stack_components() ub.stack_components() @@ -66,4 +79,6 @@ sample.to_csv_dir(path) + dp.save_df(additional_scalars_lb, os.path.join(path, "additional_scalars.csv")) + sample.infer_metadata(foreign_keys_update)