SoftwareX (Feb 2024)

Davos: A Python package “smuggler” for constructing lightweight reproducible notebooks

  • Paxton C. Fitzpatrick,
  • Jeremy R. Manning

Journal volume & issue
Vol. 25
p. 101614

Abstract

Read online

Reproducibility is a core requirement of modern scientific research. For computational research, reproducibility means that code should produce the same results, even when run on different systems. A standard approach to ensuring reproducibility entails packaging a project’s dependencies along with its primary code base. Existing solutions vary in how deeply these dependencies are specified, ranging from virtual environments, to containers, to virtual machines. Each of these existing solutions requires installing or setting up a system for running the desired code, increasing the complexity and time cost of both sharing and engaging with reproducible science. Here, we propose a lighter-weight solution: the Davos package. When used in combination with a notebook-based Python project, Davos provides a mechanism for specifying the correct versions of the project’s dependencies directly within the code that requires them, and automatically installing them in an isolated environment when the code is run. The Davos package further ensures that these packages and specific versions are used every time the notebook’s code is executed. This enables researchers to share a complete reproducible copy of their code within a single Jupyter notebook file.

Keywords