Skip to main content

Widgets and type annotations for storing function results of any types

Project description

napari-result-stack

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.

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

napari-result-stack-0.0.1.tar.gz (19.5 kB view hashes)

Uploaded Source

Built Distribution

napari_result_stack-0.0.1-py3-none-any.whl (23.4 kB view hashes)

Uploaded Python 3

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