Split an evaluation pipeline up for reproducible and easily editable code.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Patrick Günther 091b10e7ef Updated README 3 months ago
docs Documentation update 3 months ago
grapheval Removing deprecated code (NodeSet, NodeSetItem, NodePlotGroup) 3 months ago
.gitignore Added pyproject.toml 8 months ago
README.md Updated README 3 months ago
pyproject.toml Added pyproject.toml 8 months ago



GraphEval is a project which aims to simplify the task of evaluating data. It is especially useful if similar tasks should be performed with only slight variations and to condense long jupyter notebooks into much shorter, self-documenting code. Another advantage is that GraphEval provides zero-effort caching at each step to save computation time, which automatically detects if re-computing is necessary.

This works in three simple steps:

  • First, splitting the whole pipeline into a set of atomic steps, which are called nodes (for example "Do a linear regression").
  • Compile the nodes to a graph, essentially plugging their in- and outputs together.
  • Request the result you want from the respective node.

The graph takes care of solving the dependencies (i.e. feeding every node with the required data) and eventually loading from and saving to cache. On top of that, results can also be visualized using the matplotlib wrapper proplot by giving every node the knowledge of how to add its results to a figure.

GraphEval can also be seen as an extension to splitting a pipeline into basic python functions. From this point of view, it has the main advantage of lazy evaluation and caching.

To render the docs, got to the docs directory and run make html. This will put the html docs into /docs-build. A rendered version of the docs can be found here.

Please note that this project is in an early phase of development. You are encouraged to report issues etc.