..
SPDX-FileCopyrightText: 2019-2024 The PyPSA-Eur Authors
SPDX-License-Identifier: CC-BY-4.0
.. _intro:
##########################################
Introduction
##########################################
.. raw:: html
.. note::
Find the introductory slides `here `__.
.. warning::
The video only introduces the electricity-only part of PyPSA-Eur.
Workflow
=========
The generation of the model is controlled by the open workflow management system
`Snakemake `__. In a nutshell, the ``Snakefile``
declares for each script in the ``scripts`` directory a rule which describes
which files the scripts consume and produce (their corresponding input and
output files). The ``snakemake`` tool then runs the scripts in the correct order
according to the rules' input and output dependencies. Moreover, ``snakemake``
will track what parts of the workflow have to be regenerated when files or
scripts were modified.
For instance, an invocation to
.. code:: bash
.../pypsa-eur % snakemake -call results/networks/base_s_128_elec_lvopt_.nc
follows this dependency graph
.. image:: img/intro-workflow.png
:class: full-width
to solve an electricity system model.
The **blocks** represent the individual rules which are required to create the
file referenced in the command above. The **arrows** indicate the outputs from
preceding rules which another rule takes as input data.
.. note::
The dependency graph was generated using
``snakemake --dag results/networks/base_s_128_elec_lvopt_.nc -F | sed -n "/digraph/,/}/p" | dot -Tpng -o doc/img/intro-workflow.png``
For the use of ``snakemake``, it makes sense to familiarize yourself quickly
with the `basic tutorial
`__ and then
read carefully through the documentation of the `command line interface
`__, noting the
arguments ``-j``, ``-c``, ``-f``, ``-F``, ``-n``, ``-r``, ``--dag`` and ``-t``
in particular.
Scenarios, Configuration and Modification
=========================================
It is easy to run PyPSA-Eur for multiple scenarios using the `wildcards feature
`__
of ``snakemake``. Wildcards allow to generalise a rule to produce all files that
follow a `regular expression
`__ pattern, which defines
a particular scenario. One can think of a wildcard as a parameter that shows
up in the input/output file names and thereby determines which rules to run,
what data to retrieve and what files to produce. Details are explained in
:ref:`wildcards` and :ref:`scenario`.
The model also has several further configuration options collected in the
``config/config.default.yaml`` file located in the root directory, which that are not part of
the scenarios. Options are explained in :ref:`config`.
Folder Structure
================
- ``scripts``: Includes all the Python scripts executed by the ``snakemake`` rules.
- ``rules``: Includes all the ``snakemake`` rules loaded in the ``Snakefile``.
- ``envs``: Includes all the ``conda`` environment specifications to run the workflow.
- ``data``: Includes input data that is not produced by any ``snakemake`` rule.
- ``cutouts``: Stores raw weather data cutouts from ``atlite``.
- ``resources``: Stores intermediate results of the workflow which can be picked up again by subsequent rules.
- ``results``: Stores the solved PyPSA network data, summary files and plots.
- ``logs``: Stores log files.
- ``benchmarks``: Stores ``snakemake`` benchmarks.
- ``doc``: Includes the documentation of PyPSA-Eur.
- ``graphics``: Includes some graphics for the documentation of PyPSA-Eur.
System Requirements
===================
Building the model with the scripts in this repository runs on a regular computer.
But optimising for investment and operation decisions across many scenarios requires a strong interior-point solver
like `Gurobi `__ or `CPLEX `__ with more memory.
Open-source solvers like `HiGHS ` can also be used for smaller problems.