diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c0b8fde --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.snakemake +processed_data/* +results/* \ No newline at end of file diff --git a/env/dag.yaml b/env/dag.yaml new file mode 100644 index 0000000..d755c83 --- /dev/null +++ b/env/dag.yaml @@ -0,0 +1,4 @@ +channels: + - anaconda +dependencies: + - graphviz \ No newline at end of file diff --git a/env/osemosys.yaml b/env/osemosys.yaml new file mode 100644 index 0000000..eabb85d --- /dev/null +++ b/env/osemosys.yaml @@ -0,0 +1,5 @@ +channels: + - conda-forge + - defaults +dependencies: + - glpk \ No newline at end of file diff --git a/scripts/osemosys_run.sh b/scripts/osemosys_run.sh new file mode 100644 index 0000000..137e286 --- /dev/null +++ b/scripts/osemosys_run.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash +MODELRUN=$1 +RESULTS="results\/$MODELRUN" +echo $RESULTS +mkdir results/$MODELRUN +mkdir processed_data/$MODELRUN +cat model/model.txt > processed_data/$MODELRUN/osemosys.txt +sed -i '' "s/res\/csv/$RESULTS/g" processed_data/$MODELRUN/osemosys.txt diff --git a/snakefile b/snakefile new file mode 100644 index 0000000..ee9a4ce --- /dev/null +++ b/snakefile @@ -0,0 +1,35 @@ +MODELRUNS = ['bau', 'currentpolicies', 'sdg7'] + +rule all: + input: ["results/{modelrun}/csv/AccumulatedNewCapacity.csv".format(modelrun=x) for x in MODELRUNS] + message: "Running pipeline to generate the files '{input}'" + +rule prepare_model: + output: "processed_data/{modelrun}/osemosys.txt" + params: modelrun="{modelrun}" + shell: + "bash scripts/osemosys_run.sh {params.modelrun}" + +rule solve: + input: data="data/data_{modelrun}.txt", model="processed_data/{modelrun}/osemosys.txt" + output: results="results/{modelrun}.sol",csv="results/{modelrun}/csv/AccumulatedNewCapacity.csv" + log: "processed_data/{modelrun}/glpsol.log" + conda: "env/osemosys.yaml" + shell: + "glpsol -d {input.data} -m {input.model} -o {output.results} > {log}" + +rule clean: + shell: + "rm -f processed_data/*/*.pdf processed_data/*/*.sol processed_data/*/*.csv *.png" + +rule make_dag: + output: pipe("dag.txt") + shell: + "snakemake --dag > {output}" + +rule plot_dag: + input: "dag.txt" + output: "dag.png" + conda: "env/dag.yaml" + shell: + "dot -Tpng {input} > dag.png && open dag.png" \ No newline at end of file