A Framework to capture and reproduce the Absolute State of Jupyter Notebooks
Preprint
Abstract
Jupyter Notebooks are an enormously popular tool for creating and narrating computational research projects. They also have enormous potential for creating reproducible scientific research artifacts. Capturing the complete state of a notebook has additional benefits; for instance, the notebook execution may be split between local and remote resources, where the latter may have more powerful processing capabilities or store large or access-limited data. There are several challenges for making notebooks fully reproducible when examined in detail. The notebook code must be replicated entirely, and the underlying Python runtime environments must be identical. More subtle problems arise in replicating referenced data, external library dependencies, and runtime variable states. This paper presents solutions to these problems using Juptyer's standard extension mechanisms to create an archivable system state for a running notebook. We show that the overhead for these additional mechanisms, which involve interacting with the underlying Linux kernel, does not introduce substantial execution time overheads, demonstrating the approach's feasibility.Keywords
All Related Versions
- Version 1, 2022-03-31, ArXiv
- Published version: , 1.
This publication has 5 references indexed in Scilit:
- Software Must be Recognised as an Important Output of Scholarly ResearchInternational Journal of Digital Curation, 2021
- Context-aware Execution Migration Tool for Data Science Jupyter Notebooks on Hybrid Clouds2021
- Jupyter: Thinking and Storytelling With Code and DataComputing in Science & Engineering, 2021
- Ten simple rules for writing and sharing computational analyses in Jupyter NotebooksPLOS Computational Biology, 2019
- Neurophysiological analytics for all! Free open-source software tools for documenting, analyzing, visualizing, and sharing using electronic notebooksJournal of Neurophysiology, 2016