Skip to content

Commit

Permalink
Update readme (#96)
Browse files Browse the repository at this point in the history
* Update readme

* add abstract, remove juypterlab requierement

* add binder link once more

* link the notebooks individually

* phrasing update

* line breaks in citation

* update citation

* open instructions
  • Loading branch information
keckelt authored Apr 9, 2024
1 parent 9f07458 commit 05b6694
Show file tree
Hide file tree
Showing 2 changed files with 67 additions and 55 deletions.
27 changes: 27 additions & 0 deletions Extension-Setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## Setup

Using template version 4.0.5:

```bash
🎤 What is your extension kind?
frontend
🎤 Extension author name
Klaus Eckelt
🎤 Extension author email
klaus.eckelt@jku.at
🎤 JavaScript package name
loops
🎤 Python package name
loops
🎤 Extension short description
A JupyterLab extension to support iterative data analysis.
🎤 Does the extension have user settings?
Yes
🎤 Do you want to set up Binder example?
Yes
🎤 Do you want to set up tests for the extension?
Yes
🎤 Git remote repository URL
https://github.com/jku-vds-lab/loops

```
95 changes: 40 additions & 55 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,56 @@
# loops

[![Github Actions Status](https://github.com/jku-vds-lab/loops/workflows/Build/badge.svg)](https://github.com/jku-vds-lab/loops/actions/workflows/build.yml)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jku-vds-lab/loops/main?urlpath=lab)
A JupyterLab extension to support iterative data analysis.
Loops is a JupyterLab extension to support iterative and exploratory data analysis in computational notebooks.

## Requirements
Loops automatically tracks the notebook's history and visualizes it next to the notebook.
Loops shows the evolution of the notebook over time and highlights differences between versions to reveal the impact of changes made within a notebook.
Loops visualizes differences in code, markdown, tables, visualizations, and images.
For a quick overview of loops, see our preview video on YouTube:

- JupyterLab >= 4.0.0
[<img src="https://img.youtube.com/vi/jCUwLm5wfNo/maxresdefault.jpg" width=50% height=50%>](https://www.youtube.com/watch?v=jCUwLm5wfNo)

## Install
Try loops yourself on Binder with two example notebooks for which the analysis process has been recorded. Loops is part of JuypterLab's sidebar and can be opened from there.

To install the extension, execute:
- Use Case 1: Concert Data Analaysis [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jku-vds-lab/loops/main?labpath=notebooks/Use%20Case%201.ipynb)
- Use Case 2: What-If Analysis on Cancer Patient Data [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jku-vds-lab/loops/main?labpath=notebooks/Use%20Case%202.ipynb)

```bash
pip install loops
```
To learn more about loops, read our [paper](https://jku-vds-lab.at/publications/2024_loops/).
Abstract:

## Uninstall
> Exploratory data science is an iterative process of obtaining, cleaning, profiling, analyzing, and interpreting data. This cyclical way of working creates challenges within the linear structure of computational notebooks, leading to issues with code quality, recall, and reproducibility. To remedy this, we present Loops, a set of visual support techniques for iterative and exploratory data analysis in computational notebooks. Loops leverages provenance information to visualize the impact of changes made within a notebook. In visualizations of the notebook provenance, we trace the evolution of the notebook over time and highlight differences between versions. Loops visualizes the provenance of code, markdown, tables, visualizations, and images and their respective differences. Analysts can explore these differences in detail in a separate view. Loops not only improves the reproducibility of notebooks but also supports analysts in their data science work by showing the effects of changes and facilitating comparison of multiple versions. We demonstrate our approach's utility and potential impact in two use cases and feedback from notebook users from various backgrounds.

To remove the extension, execute:
## Feedback

```bash
pip uninstall loops
Your comments and feedback are welcome. Write an email to klaus.eckelt@jku.at and let us know what you think!
If you have discovered an issue or have a feature suggestion, feel free to [create an issue on GitHub](https://github.com/jku-vds-lab/loops/issues).

## Citing Loops

Klaus Eckelt, Kiran Gadhave, Alexander Lex, Marc Streit.
**Loops: Leveraging Provenance and Visualization to Support Exploratory Data Analysis in Notebooks**.
OSF Preprint, doi:10.31219/osf.io/79eyn, 2024.

```
@article{2024_loops,
title = {Loops: Leveraging Provenance and Visualization to Support Exploratory Data Analysis in Notebooks},
author = {Klaus Eckelt and Kiran Gadhave and Alexander Lex and Marc Streit},
journal = {OSF Preprint},
doi = {10.31219/osf.io/79eyn},
url = {https://doi.org/10.31219/osf.io/79eyn},
year = {2024}
}
```

---

## Contributing

[![Github Actions Status](https://github.com/jku-vds-lab/loops/workflows/Build/badge.svg)](https://github.com/jku-vds-lab/loops/actions/workflows/build.yml)[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/jku-vds-lab/loops/main?urlpath=lab)

There are two ways to set up _loops_ for development:

- with [VS Code devContainers](https://code.visualstudio.com/docs/devcontainers/containers) (recommended), which sets up Jupyter and the dependencies in a container
- with a local setup, the default way for JupyterLab extension. Works with every Code Editor
- with [VS Code devContainers](https://code.visualstudio.com/docs/devcontainers/containers) (recommended), which sets up Jupyter and the dependencies in a container.
- with a local setup, the default way for JupyterLab extension. Works with every code editor.

### Development in DevContainer

Expand All @@ -50,11 +72,12 @@ With the above requirements fullfilled, you will see the following popup when op
Alternatively, you can also reopen the project in a devcontainer via the command prompt:
![VS Code command prmpt](https://github.com/jku-vds-lab/loops/assets/10337788/e2f624a0-9238-4d32-856b-7e47c937a496)

By reopening in the container, you will get an environment with Jupyter Lab and the packages from the docker image and it will also install all dependencies of the extension and the extension itself. Therefore, this process will take a while when doing it for the first time. You can watch the set up process by opening the log in the terminal. When the extension is installed, the terminal should look similar to this:
By reopening in the container, you will get an environment with Jupyter Lab and the packages from the docker image and it will also install all dependencies of the extension as well as the extension itself. Therefore, this process will take a while when doing it for the first time. You can watch the set up process by opening the log in the terminal. When the extension is installed, the terminal should look similar to this:

![image](https://github.com/jku-vds-lab/loops/assets/10337788/16f8eb34-6f0d-45d1-aa5b-17772feab31a)

All you need to do, is running `jlpm watch` in the VS Code terminal afterwards. The terminal can also be used to add further python packages.
All you need to do, is running `jlpm watch` in the VS Code terminal afterwards so that the extension gets updated when you make code changes.
The terminal can also be used to add further python packages.

### Local Development

Expand Down Expand Up @@ -104,16 +127,6 @@ By default, the `jlpm build` command generates the source maps for this extensio
python -m jupyter lab build --minimize=False
```

### Development uninstall

```bash
python -m pip uninstall loops
```

In development mode, you will also need to remove the symlink created by `jupyter labextension develop`
command. To find its location, you can run `jupyter labextension list` to figure out where the `labextensions`
folder is located. Then you can remove the symlink named `loops` within that folder.

### Testing the extension

#### Frontend tests
Expand All @@ -137,31 +150,3 @@ More information are provided within the [ui-tests](./ui-tests/README.md) README
### Packaging the extension

See [RELEASE](RELEASE.md)

## Setup

Using template version 4.0.5:

```bash
🎤 What is your extension kind?
frontend
🎤 Extension author name
Klaus Eckelt
🎤 Extension author email
klaus.eckelt@jku.at
🎤 JavaScript package name
loops
🎤 Python package name
loops
🎤 Extension short description
A JupyterLab extension to support iterative data analysis.
🎤 Does the extension have user settings?
Yes
🎤 Do you want to set up Binder example?
Yes
🎤 Do you want to set up tests for the extension?
Yes
🎤 Git remote repository URL
https://github.com/jku-vds-lab/loops

```

0 comments on commit 05b6694

Please sign in to comment.