Skip to main content

Persist: Persistent and Reusable Interactions in Computational Notebooks

What Is Persist?

Computational notebooks like JupyterLab have become indispensable tools, enabling seamless integration of code, visualizations, and text. However, modern notebooks limit the usefulness of interactions in visualizations in two significant ways. First, the results of interactions in visualizations cannot be accessed in code. For example, a filter applied in a visualization cannot be applied directly to the data in the notebook. Second, unlike code changes, interactions with data visualizations are transient – they are lost when the cell is re-executed or the kernel is restarted. In this post, we introduce our solution to these issues: Persist, a JupyterLab extension that enables persistent interaction and data manipulation with visualizations in notebooks.


Paper

For a more in depth description of the project, check out the 2024 EuroVis Submission.

Kiran Gadhave, Zach Cutler, Alexander Lex
Persist: Persistent and Reusable Interactions in Computational Notebooks
Computer Graphics Forum (EuroVis), to appear, 43(3): doi:10.31219/osf.io/9x8eq, 2024.

Project Team

Persist is a project developed at the University of Utah.

Alexander Lex, PI, University of Utah
Kiran Gadhave, PhD Student, University of Utah
Zach Cutler, PhD Student, University of Utah

Contact

If you have any questions, please e-mail us.

Acknowledgements

The widget architecture of Persist is created using anywidget projects.

The interactive visualizations used by Persist are based on the excellent, Vega-Lite and Vega-Altair projects. Specifically the implementation of JupyterChart class in Vega-Altair was of great help in understanding how Vega-Altair chart can be turned into a widget. We gratefully acknowledge funding from the National Science Foundation (IIS 1751238 and CNS 213756).

Example banner