Skip to main content

PersIst is a JupyterLab extension to enable persistent interactive visualizations in JupyterLab notebooks.

Project description

Persist

Persistent and Reusable Interactions in Computational Notebooks

Binder

This repository contains source code for Persist (PyPi) extension.

Persist is a JupyterLab extension to enable persistent interactive outputs in JupyterLab notebooks. Check out the introductory video below.

https://github.com/visdesignlab/persist/assets/14944083/c6a9347b-7c93-4d0d-9e60-e10707578327

Watch on Youtube with CC

Publication

Persist is developed as part of a publication and is currently under review.

Teaser image from the pre-print. The figure describes the workflow showing high level working of Persist technique.

Abstract

Computational notebooks, such as Jupyter, support rich data visualization. However, even when visualizations in notebooks are interactive, they still are a dead end: Interactive data manipulations, such as selections, applying labels, filters, categorizations, or fixes to column or cell values, could be efficiently apply in interactive visual components, but interactive components typically cannot manipulate Python data structures. Furthermore, actions performed in interactive plots are volatile, i.e., they are lost as soon as the cell is re-run, prohibiting reusability and reproducibility. To remedy this, we introduce Persist, a family of techniques to capture and apply interaction provenance to enable persistence of interactions. When interactions manipulate data, we make the transformed data available in dataframes that can be accessed in downstream code cells. We implement our approach as a JupyterLab extension that supports tracking interactions in Vega-Altair plots and in a data table view. Persist can re-execute the interaction provenance when a notebook or a cell is re-executed enabling reproducibility and re-use.

We evaluated Persist in a user study targeting data manipulations with 11 participants skilled in Python and Pandas, comparing it to traditional code-based approaches. Participants were consistently faster with Persist, were able to correctly complete more tasks, and expressed a strong preference for Persist.

Requirements

- JupyterLab >= 4.0.0 or Jupyter Notebook >= 7.0.0
- pandas >= 0.25
- altair >= 5
- ipywidgets
- anywidget

Install

To install the extension, execute:

pip install persist_ext

If the Jupyter server is running, you might have to reload the browser page and restart the kernel.

Uninstall

To remove the extension, execute:

pip uninstall persist_ext

Contributing

Development install

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

persist_ext-1.6.0.tar.gz (21.8 MB view details)

Uploaded Source

Built Distribution

persist_ext-1.6.0-py3-none-any.whl (5.1 MB view details)

Uploaded Python 3

File details

Details for the file persist_ext-1.6.0.tar.gz.

File metadata

  • Download URL: persist_ext-1.6.0.tar.gz
  • Upload date:
  • Size: 21.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-httpx/0.24.1

File hashes

Hashes for persist_ext-1.6.0.tar.gz
Algorithm Hash digest
SHA256 182b3f30e1ada8bfc5f10f4c40fe9aa259fd2abeca45d3ac04f4e9f9c4188a78
MD5 e4dba8e9e5473df0beb088a581e2f3a3
BLAKE2b-256 7984ee3b8d035976643600a3db447b60b7b47a067cb89d4ac3438daa6aac09d6

See more details on using hashes here.

Provenance

File details

Details for the file persist_ext-1.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for persist_ext-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9c1bf9d9600508f9959b171566ecbd6e1b79a098247a10d5e0b49305bcdbf6ec
MD5 90fdc43792bc071732086b692edff966
BLAKE2b-256 49cd79527065f12f6d3211c65467cc4b7ee7d9c9d695399a4457060ad4edd4b2

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page