Result stack

napari-result-stack

Widgets and type annotations for storing function results of any types

License BSD-3 PyPI Python Version tests codecov napari hub

Widgets and type annotations for storing function results of any types.

Stored type

Type Stored[T] is equivalent to T for the type checker, but magicgui is aware of this annotation and behaves as a "storage" for the T instances.

from pathlib import Path
import pandas as pd
from magicgui import magicgui
from napari_result_stack import Stored

# Returned values will be stored in a result stack.
@magicgui
def provide_data(path: Path) -> Stored[pd.DataFrame]:
    return pd.read_csv(path)

# You can choose one of the values stored in the result stack
# for the argument `df` from a ComboBox widget.
@magicgui
def print_data(df: Stored[pd.DataFrame]):
    print(df)

  • Different types use different storage. e.g. Stored[int] and Stored[str] do not share the same place.
  • Even for the same type, you can specify the second key to split the storage. e.g. Stored[int], Stored[int, 0] and Stored[int, "my-plugin-name"] use the distinct storages.

Manually store variables

Stored.valuesof[T] is a list-like object that returns a view of the values stored in Stored[T]. This value view is useful if you want to store values outside @magicgui.

from magicgui.widgets import PushButton
from datetime import datetime
from napari_result_stack import Stored

button = PushButton(text="Click!")

@button.changed.connect
def _record_now():
    Stored.valuesof[datetime].append(datetime.now())

Result stack widget

napari-result-stack provides a plugin widget that is helpful to inspect all the stored values.

Show code
from napari_result_stack import Stored
from magicgui import magicgui
import numpy as np
import pandas as pd

@magicgui
def f0() -> Stored[pd.DataFrame]:
    return pd.DataFrame(np.random.random((4, 3)))

@magicgui
def f1(x: Stored[pd.DataFrame]) -> Stored[float]:
    return np.mean(np.array(x))

viewer.window.add_dock_widget(f0, name="returns a DataFrame")
viewer.window.add_dock_widget(f1, name="mean of a DataFrame")


This napari plugin was generated with Cookiecutter using @napari's cookiecutter-napari-plugin template.

Installation

You can install napari-result-stack via pip:

pip install napari-result-stack

To install latest development version :

pip install git+https://github.com/hanjinliu/napari-result-stack.git

Contributing

Contributions are very welcome. Tests can be run with tox, please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the BSD-3 license, "napari-result-stack" is free and open source software

Issues

If you encounter any problems, please file an issue along with a detailed description.

Version:

  • 0.0.1

Last updated:

  • 27 January 2023

First released:

  • 27 January 2023

License:

Supported data:

  • Information not submitted

Plugin type:

GitHub activity:

  • Stars: 0
  • Forks: 0
  • Issues + PRs: 0

Python versions supported:

Operating system:

Requirements:

  • numpy
  • magicgui
  • qtpy

Sign up to receive updates