Result stack
Widgets and type annotations for storing function results of any types
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]
andStored[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]
andStored[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.
Supported data:
- Information not submitted
Plugin type:
GitHub activity:
- Stars: 0
- Forks: 0
- Issues + PRs: 0