open-gira is comprised of a set of snakemake rules which call scripts and library code to request data, process it and produce results.


The key idea of snakemake is similar to make in that the workflow is determined from the end (the files users want) to the beginning (the files users have, if any) by applying general rules with pattern matching on file and folder names.

A example invocation looks like:

snakemake --cores 2 -- results/wales-latest_filter-road/edges.geoparquet

Here, we ask snakemake to use up to 2 CPUs to produce a target file, in this case, the edges of the Welsh road network. snakemake pattern matches wales-latest as the OSM dataset name and filter-road as the network type we want to filter for.

To check what work we're going to request before commencing, use the -n flag:

snakemake -n --cores 2 -- results/wales-latest_filter-road/edges.geoparquet

This will explain which rules will be required to run to produce the target file. It may be helpful to visualise which rules are expected to run, too.


The snakemake configuration details are in config/config.yml. You can edit this to set the target OSM infrastructure datasets, number of spatial slices, and hazard datasets. See config/ and the documentation for each workflow for more details on the configuration variables.