epyc: Computational experiment management in Python

epyc is a Python module for controlling a long-running series of computational experiments, as is often found when writing simulations of complex networks and other such domains. There is often a need to perform a computation across a multi-dimensional parameter space, varying the parameters, performing and aggregating multiple repetitions, and wrangling results for analysis and presentation. Often the experiments being performed are on such a scale as to require the use of a computing cluster to perform multiple experiments simultaneously.

Managing all these tasks is complicated, so epyc tries to automate the process. It provides a way to define a lab that performs an experiment (or, more likely, a sequence of experiments) whose parameters and results are recorded in a lab notebook for later retrieval. Laboratories can be sequential (for a single machine) or parallel (to use a multicore or cluster of machines); lab notebooks can be persistent to allow experiments to be fired-off and their results retrieved later - handy if you use a laptop. Notebooks store all the data and metadata immutably in a portable format to improve the reproducibility of computational experiments.

epyc also includes a small number of experiment combinators that separate the logic of a single experiment from the logic of performing multiple repetitions and other structuring tasks. This means that any experiment can be repeated and statistically summarised, for example.

Indices and tables