-
Notifications
You must be signed in to change notification settings - Fork 18
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add .jinja
suffix; reorganise template rules
#409
Changes from 1 commit
cda7680
656241c
0740e0f
f7a3055
01d6b17
777edf1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -32,9 +32,7 @@ localrules: all, clean | |
wildcard_constraints: | ||
resolution = "continental|national|regional|ehighways" | ||
|
||
ruleorder: area_to_capacity_limits > hydro_capacities > biofuels > nuclear_regional_capacity > dummy_tech_locations_template | ||
ruleorder: bio_techs_and_locations_template > techs_and_locations_template | ||
ruleorder: create_controlled_road_transport_annual_demand_and_installed_capacities > dummy_tech_locations_template | ||
ruleorder: techs_and_locations_template > dummy_tech_locations_template | ||
|
||
ALL_CF_TECHNOLOGIES = [ | ||
"wind-onshore", "wind-offshore", "open-field-pv", | ||
|
@@ -96,30 +94,28 @@ rule all_tests: | |
) | ||
|
||
|
||
rule dummy_tech_locations_template: # needed to provide `techs_and_locations_template` with a locational CSV linked to each technology that has no location-specific data to define. | ||
message: "Create empty {wildcards.resolution} location-specific data file for the {wildcards.tech_group} tech `{wildcards.tech}`." # Update ruleorder at the top of the file if you instead want the techs_and_locations_template rule to be used to generate a file | ||
input: rules.locations_template.output.csv | ||
output: "build/data/{resolution}/{tech_group}/{tech}.csv" | ||
conda: "envs/shell.yaml" | ||
shell: "cp {input} {output}" | ||
|
||
|
||
rule techs_and_locations_template: | ||
message: "Create {wildcards.resolution} definition file for the {wildcards.tech_group} tech `{wildcards.tech}`." | ||
message: "Create {wildcards.resolution} definition file for {wildcards.tech_and_group}." | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Consider naming this "group_and_tech", highlighting that groups comes first. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Also, a workflow-wide wildcard_constraint that requires this wildcard to contain |
||
input: | ||
template = techs_template_dir + "{tech_group}/{tech}.yaml", | ||
locations = "build/data/{resolution}/{tech_group}/{tech}.csv" | ||
template = techs_template_dir + "{tech_and_group}.yaml.jinja", | ||
locations = "build/data/{resolution}/{tech_and_group}.csv" | ||
params: | ||
scaling_factors = config["scaling-factors"], | ||
capacity_factors = config["capacity-factors"]["average"], | ||
max_power_densities = config["parameters"]["maximum-installable-power-density"], | ||
heat_pump_shares = config["parameters"]["heat-pump"]["heat-pump-shares"], | ||
wildcard_constraints: | ||
tech_group = "(?!transmission).*" # i.e. all but transmission | ||
# Exclude all outputs that have their own `techs_and_locations_template` implementation | ||
tech_and_group = "(?!transmission\/|supply\/biofuel).*" | ||
conda: "envs/default.yaml" | ||
output: "build/models/{resolution}/techs/{tech_group}/{tech}.yaml" | ||
output: "build/models/{resolution}/techs/{tech_and_group}.yaml" | ||
script: "scripts/template_techs.py" | ||
|
||
use rule techs_and_locations_template as dummy_tech_locations_template with: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. consistent naming would be "dummy_techs_and_locations_template". There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Anyways, maybe different names would be more helpful in communicating the difference. I don't really understand why this is called a "dummy". Is it maybe: "tech_and_locations_template_with(out)_location_specific_data"? That seems the be the differentiating factor to me. Or even more radical and better in my opinion: "model_component_with(out)_location_specific_data". We don't have a clear rule, but typically rules are named by (1) what they do or (2) what they produce, not by their inputs (here: template). Or: "module_with(out)_location_specific_data". That's how we call these files in the documentation. My favourite right now. |
||
# For all cases where we don't have any location-specific data that we want to supply to the template | ||
input: | ||
template = techs_template_dir + "{tech_and_group}.yaml.jinja", | ||
locations = rules.locations_template.output.csv | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Unrelated to this PR: Should this rule be called There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. or There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Personally, I like |
||
|
||
rule no_params_model_template: | ||
message: "Create {wildcards.resolution} configuration files from templates where no parameterisation is required." | ||
|
@@ -146,7 +142,7 @@ rule no_params_template: | |
rule model_template: | ||
message: "Generate top-level {wildcards.resolution} model configuration file from template" | ||
input: | ||
template = model_template_dir + "example-model.yaml", | ||
template = model_template_dir + "example-model.yaml.jinja", | ||
non_model_files = expand( | ||
brynpickering marked this conversation as resolved.
Show resolved
Hide resolved
|
||
"build/models/{template}", template=["environment.yaml", "README.md"] | ||
), | ||
brynpickering marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you use a plug-in for that? My VSCode seems to understand it's jinja (the icon is jinja), but I don't get any syntax highlighting or problems.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, found the answer myself, haha.