Skip to content

Public API

The top-level package gathers the most important public types and entrypoints in one place. Use DiagnosticsSpec when you want app-scoped perf logging config on AppSpec(...) instead of relying on environment variables alone.

compneurovis

Public authoring surface for CompNeuroVis.

Classes:

Name Description
ActionSpec
AttributeRef
AppSpec
BoolValueSpec
ChoiceValueSpec
ControlPresentationSpec
ControlSpec
DiagnosticsSpec
Scene
Field

Dense labeled array with named axes and coordinate metadata.

Geometry
GridGeometry
HistoryCaptureMode
LayoutSpec
LinePlotViewSpec
MorphologyGeometry
MorphologyViewSpec
StateGraphViewSpec

Static directed graph with live-colored nodes and edges.

PanelSpec
ReplaySession

Session that replays a precomputed sequence of frame replacements.

ScalarValueSpec
SeriesSpec
StateBinding

Resolve a view or control value from frontend-owned state.

SurfaceViewSpec
ViewSpec
XYValueSpec
VispyFrontendWindow

Functions:

Name Description
build_replay_app

Build an app that replays precomputed frames through ReplaySession.

build_surface_app

Build a static surface app from field data, optional geometry, and views.

grid_field

Create a Field/GridGeometry pair from a 2-D array and coordinate vectors.

run_app

ActionSpec dataclass

ActionSpec(
    id: str,
    label: str,
    payload: dict[str, Any] = dict(),
    shortcuts: tuple[str, ...] = (),
    selection_mode: bool = False,
    selection_payload_key: str = "entity_id",
)

Attributes:

Name Type Description
id str
label str
payload dict[str, Any]
shortcuts tuple[str, ...]
selection_mode bool
selection_payload_key str

id instance-attribute

id: str

label instance-attribute

label: str

payload class-attribute instance-attribute

payload: dict[str, Any] = field(default_factory=dict)

shortcuts class-attribute instance-attribute

shortcuts: tuple[str, ...] = ()

selection_mode class-attribute instance-attribute

selection_mode: bool = False

selection_payload_key class-attribute instance-attribute

selection_payload_key: str = 'entity_id'

AttributeRef dataclass

AttributeRef(owner: str, attribute: str)

Methods:

Name Description
read
write

Attributes:

Name Type Description
owner str
attribute str

owner instance-attribute

owner: str

attribute instance-attribute

attribute: str

read

read(root: Any) -> Any

write

write(root: Any, value: Any) -> None

AppSpec dataclass

AppSpec(
    scene: Scene | None = None,
    session: Any = None,
    interaction_target: Any = None,
    title: str | None = None,
    diagnostics: "DiagnosticsSpec | None" = None,
)

Attributes:

Name Type Description
scene Scene | None
session Any
interaction_target Any
title str | None
diagnostics 'DiagnosticsSpec | None'

scene class-attribute instance-attribute

scene: Scene | None = None

session class-attribute instance-attribute

session: Any = None

interaction_target class-attribute instance-attribute

interaction_target: Any = None

title class-attribute instance-attribute

title: str | None = None

diagnostics class-attribute instance-attribute

diagnostics: 'DiagnosticsSpec | None' = None

BoolValueSpec dataclass

BoolValueSpec(default: bool = False)

Attributes:

Name Type Description
default bool

default class-attribute instance-attribute

default: bool = False

ChoiceValueSpec dataclass

ChoiceValueSpec(default: str, options: tuple[str, ...])

Attributes:

Name Type Description
default str
options tuple[str, ...]

default instance-attribute

default: str

options instance-attribute

options: tuple[str, ...]

ControlPresentationSpec dataclass

ControlPresentationSpec(
    kind: str | None = None,
    steps: int | None = None,
    scale: str = "linear",
    shape: str | None = None,
)

Attributes:

Name Type Description
kind str | None
steps int | None
scale str
shape str | None

kind class-attribute instance-attribute

kind: str | None = None

steps class-attribute instance-attribute

steps: int | None = None

scale class-attribute instance-attribute

scale: str = 'linear'

shape class-attribute instance-attribute

shape: str | None = None

ControlSpec dataclass

ControlSpec(
    id: str,
    label: str,
    value_spec: ControlValueSpec,
    presentation: ControlPresentationSpec | None = None,
    state_key: str | None = None,
    send_to_session: bool = False,
    target: AttributeRef | None = None,
)

Methods:

Name Description
default_value
resolved_state_key

Attributes:

Name Type Description
id str
label str
value_spec ControlValueSpec
presentation ControlPresentationSpec | None
state_key str | None
send_to_session bool
target AttributeRef | None

id instance-attribute

id: str

label instance-attribute

label: str

value_spec instance-attribute

value_spec: ControlValueSpec

presentation class-attribute instance-attribute

presentation: ControlPresentationSpec | None = None

state_key class-attribute instance-attribute

state_key: str | None = None

send_to_session class-attribute instance-attribute

send_to_session: bool = False

target class-attribute instance-attribute

target: AttributeRef | None = None

default_value

default_value() -> Any

resolved_state_key

resolved_state_key() -> str

DiagnosticsSpec dataclass

DiagnosticsSpec(
    perf_log_enabled: bool = False,
    perf_log_dir: str | Path | None = None,
    perf_echo_stderr: bool = False,
)

Attributes:

Name Type Description
perf_log_enabled bool
perf_log_dir str | Path | None
perf_echo_stderr bool

perf_log_enabled class-attribute instance-attribute

perf_log_enabled: bool = False

perf_log_dir class-attribute instance-attribute

perf_log_dir: str | Path | None = None

perf_echo_stderr class-attribute instance-attribute

perf_echo_stderr: bool = False

Scene dataclass

Scene(
    fields: dict[str, Field],
    geometries: dict[str, Geometry],
    views: dict[str, ViewSpec],
    operators: dict[str, OperatorSpec] = dict(),
    controls: dict[str, ControlSpec] = dict(),
    actions: dict[str, ActionSpec] = dict(),
    layout: LayoutSpec = LayoutSpec(),
    metadata: dict[str, Any] = dict(),
)

Methods:

Name Description
replace_view
replace_operator
replace_control

Attributes:

Name Type Description
fields dict[str, Field]
geometries dict[str, Geometry]
views dict[str, ViewSpec]
operators dict[str, OperatorSpec]
controls dict[str, ControlSpec]
actions dict[str, ActionSpec]
layout LayoutSpec
metadata dict[str, Any]

fields instance-attribute

fields: dict[str, Field]

geometries instance-attribute

geometries: dict[str, Geometry]

views instance-attribute

views: dict[str, ViewSpec]

operators class-attribute instance-attribute

operators: dict[str, OperatorSpec] = field(
    default_factory=dict
)

controls class-attribute instance-attribute

controls: dict[str, ControlSpec] = field(
    default_factory=dict
)

actions class-attribute instance-attribute

actions: dict[str, ActionSpec] = field(default_factory=dict)

layout class-attribute instance-attribute

layout: LayoutSpec = field(default_factory=LayoutSpec)

metadata class-attribute instance-attribute

metadata: dict[str, Any] = field(default_factory=dict)

replace_view

replace_view(view_id: str, updates: dict[str, Any]) -> None

replace_operator

replace_operator(
    operator_id: str, updates: dict[str, Any]
) -> None

replace_control

replace_control(
    control_id: str, updates: dict[str, Any]
) -> None

Field dataclass

Field(
    id: str,
    values: ndarray,
    dims: tuple[str, ...],
    coords: dict[str, ndarray],
    unit: str | None = None,
    attrs: dict[str, Any] = dict(),
)

Dense labeled array with named axes and coordinate metadata.

Methods:

Name Description
axis_index
coord
with_values
append
resolve_indexer
select

Attributes:

Name Type Description
id str
values ndarray
dims tuple[str, ...]
coords dict[str, ndarray]
unit str | None
attrs dict[str, Any]

id instance-attribute

id: str

values instance-attribute

values: ndarray

dims instance-attribute

dims: tuple[str, ...]

coords instance-attribute

coords: dict[str, ndarray]

unit class-attribute instance-attribute

unit: str | None = None

attrs class-attribute instance-attribute

attrs: dict[str, Any] = field(default_factory=dict)

axis_index

axis_index(dim: str) -> int

coord

coord(dim: str) -> np.ndarray

with_values

with_values(
    values: ndarray,
    coords: Mapping[str, ndarray] | None = None,
    attrs_update: Mapping[str, Any] | None = None,
) -> Field

append

append(
    dim: str,
    values: ndarray,
    coord_values: ndarray,
    *,
    max_length: int | None = None,
    attrs_update: Mapping[str, Any] | None = None,
) -> Field

resolve_indexer

resolve_indexer(
    dim: str, selector: Any
) -> int | slice | np.ndarray

select

select(selectors: Mapping[str, Any]) -> Field

Geometry dataclass

Geometry(id: str)

Attributes:

Name Type Description
id str

id instance-attribute

id: str

GridGeometry dataclass

GridGeometry(
    id: str,
    dims: tuple[str, str],
    coords: dict[str, ndarray],
    metadata: dict[str, Any] = dict(),
)

Bases: Geometry

Attributes:

Name Type Description
id str
kind str
dims tuple[str, str]
coords dict[str, ndarray]
metadata dict[str, Any]

id instance-attribute

id: str

kind class-attribute

kind: str = 'grid'

dims instance-attribute

dims: tuple[str, str]

coords instance-attribute

coords: dict[str, ndarray]

metadata class-attribute instance-attribute

metadata: dict[str, Any] = field(default_factory=dict)

HistoryCaptureMode

Bases: StrEnum

Attributes:

Name Type Description
ON_DEMAND
FULL

ON_DEMAND class-attribute instance-attribute

ON_DEMAND = 'on_demand'

FULL class-attribute instance-attribute

FULL = 'full'

LayoutSpec dataclass

LayoutSpec(
    title: str = "CompNeuroVis",
    panels: tuple[PanelSpec, ...] = (),
    panel_grid: tuple[tuple[str, ...], ...] = (),
)

Methods:

Name Description
resolved_panels
panels_of_kind
panel
panel_for_view
patch_panel

Apply dataclasses.replace changes to one panel in the panels tuple.

replace_panels

Replace the full panel inventory and optional grid. Does not re-normalize.

normalize_panels

Attributes:

Name Type Description
title str
panels tuple[PanelSpec, ...]
panel_grid tuple[tuple[str, ...], ...]

title class-attribute instance-attribute

title: str = 'CompNeuroVis'

panels class-attribute instance-attribute

panels: tuple[PanelSpec, ...] = ()

panel_grid class-attribute instance-attribute

panel_grid: tuple[tuple[str, ...], ...] = ()

resolved_panels

resolved_panels() -> tuple[PanelSpec, ...]

panels_of_kind

panels_of_kind(kind: str) -> tuple[PanelSpec, ...]

panel

panel(panel_id: str) -> PanelSpec | None

panel_for_view

panel_for_view(
    view_id: str, *, kind: str | None = None
) -> PanelSpec | None

patch_panel

patch_panel(panel_id: str, **changes) -> bool

Apply dataclasses.replace changes to one panel in the panels tuple.

Returns True if the panel was found and patched, False if not found.

replace_panels

replace_panels(
    panels: "tuple[PanelSpec, ...]",
    panel_grid: "tuple[tuple[str, ...], ...]" = (),
) -> None

Replace the full panel inventory and optional grid. Does not re-normalize.

normalize_panels

normalize_panels(
    *,
    views: dict[str, ViewSpec],
    controls: dict[str, ControlSpec],
    actions: dict[str, ActionSpec],
) -> None

LinePlotViewSpec dataclass

LinePlotViewSpec(
    id: str,
    title: str = "",
    field_id: str = "",
    operator_id: str | None = None,
    x_dim: str | None = None,
    series_dim: str | None = None,
    selectors: dict[str, SelectorValue] = dict(),
    x_label: str = "x",
    y_label: str = "y",
    x_unit: str = "",
    y_unit: str = "",
    pen: ValueOrBinding = "k",
    background_color: ValueOrBinding = "w",
    show_legend: bool = True,
    series_colors: dict[str, ValueOrBinding] = dict(),
    series_palette: tuple[ValueOrBinding, ...] = (),
    rolling_window: float | None = None,
    trim_to_rolling_window: bool = False,
    max_refresh_hz: float | None = None,
    y_min: float | None = None,
    y_max: float | None = None,
    x_major_tick_spacing: float | None = None,
    x_minor_tick_spacing: float | None = None,
)

Bases: ViewSpec

Attributes:

Name Type Description
id str
title str
field_id str
operator_id str | None
x_dim str | None
series_dim str | None
selectors dict[str, SelectorValue]
x_label str
y_label str
x_unit str
y_unit str
pen ValueOrBinding
background_color ValueOrBinding
show_legend bool
series_colors dict[str, ValueOrBinding]
series_palette tuple[ValueOrBinding, ...]
rolling_window float | None
trim_to_rolling_window bool
max_refresh_hz float | None
y_min float | None
y_max float | None
x_major_tick_spacing float | None
x_minor_tick_spacing float | None

id instance-attribute

id: str

title class-attribute instance-attribute

title: str = ''

field_id class-attribute instance-attribute

field_id: str = ''

operator_id class-attribute instance-attribute

operator_id: str | None = None

x_dim class-attribute instance-attribute

x_dim: str | None = None

series_dim class-attribute instance-attribute

series_dim: str | None = None

selectors class-attribute instance-attribute

selectors: dict[str, SelectorValue] = field(
    default_factory=dict
)

x_label class-attribute instance-attribute

x_label: str = 'x'

y_label class-attribute instance-attribute

y_label: str = 'y'

x_unit class-attribute instance-attribute

x_unit: str = ''

y_unit class-attribute instance-attribute

y_unit: str = ''

pen class-attribute instance-attribute

pen: ValueOrBinding = 'k'

background_color class-attribute instance-attribute

background_color: ValueOrBinding = 'w'

show_legend class-attribute instance-attribute

show_legend: bool = True

series_colors class-attribute instance-attribute

series_colors: dict[str, ValueOrBinding] = field(
    default_factory=dict
)

series_palette class-attribute instance-attribute

series_palette: tuple[ValueOrBinding, ...] = ()

rolling_window class-attribute instance-attribute

rolling_window: float | None = None

trim_to_rolling_window class-attribute instance-attribute

trim_to_rolling_window: bool = False

max_refresh_hz class-attribute instance-attribute

max_refresh_hz: float | None = None

y_min class-attribute instance-attribute

y_min: float | None = None

y_max class-attribute instance-attribute

y_max: float | None = None

x_major_tick_spacing class-attribute instance-attribute

x_major_tick_spacing: float | None = None

x_minor_tick_spacing class-attribute instance-attribute

x_minor_tick_spacing: float | None = None

MorphologyGeometry dataclass

MorphologyGeometry(
    id: str,
    positions: ndarray,
    orientations: ndarray,
    radii: ndarray,
    lengths: ndarray,
    entity_ids: tuple[str, ...],
    section_names: tuple[str, ...],
    xlocs: ndarray,
    colors: ndarray | None = None,
    labels: tuple[str, ...] = (),
    metadata: dict[str, Any] = dict(),
)

Bases: Geometry

Methods:

Name Description
entity_index
label_for
entity_info

Attributes:

Name Type Description
id str
kind str
positions ndarray
orientations ndarray
radii ndarray
lengths ndarray
entity_ids tuple[str, ...]
section_names tuple[str, ...]
xlocs ndarray
colors ndarray | None
labels tuple[str, ...]
metadata dict[str, Any]

id instance-attribute

id: str

kind class-attribute

kind: str = 'morphology'

positions instance-attribute

positions: ndarray

orientations instance-attribute

orientations: ndarray

radii instance-attribute

radii: ndarray

lengths instance-attribute

lengths: ndarray

entity_ids instance-attribute

entity_ids: tuple[str, ...]

section_names instance-attribute

section_names: tuple[str, ...]

xlocs instance-attribute

xlocs: ndarray

colors class-attribute instance-attribute

colors: ndarray | None = None

labels class-attribute instance-attribute

labels: tuple[str, ...] = ()

metadata class-attribute instance-attribute

metadata: dict[str, Any] = field(default_factory=dict)

entity_index

entity_index(entity_id: str) -> int

label_for

label_for(entity_id: str) -> str

entity_info

entity_info(entity_id: str) -> dict[str, Any]

MorphologyViewSpec dataclass

MorphologyViewSpec(
    id: str,
    title: str = "",
    geometry_id: str = "morphology",
    color_field_id: str | None = None,
    entity_dim: str = "segment",
    sample_dim: str | None = "time",
    color_map: str = "scalar",
    color_limits: ValueOrBinding = None,
    color_norm: str = "auto",
    background_color: ValueOrBinding = "white",
    max_refresh_hz: float | None = None,
)

Bases: ViewSpec

Attributes:

Name Type Description
id str
title str
geometry_id str
color_field_id str | None
entity_dim str
sample_dim str | None
color_map str
color_limits ValueOrBinding
color_norm str
background_color ValueOrBinding
max_refresh_hz float | None

id instance-attribute

id: str

title class-attribute instance-attribute

title: str = ''

geometry_id class-attribute instance-attribute

geometry_id: str = 'morphology'

color_field_id class-attribute instance-attribute

color_field_id: str | None = None

entity_dim class-attribute instance-attribute

entity_dim: str = 'segment'

sample_dim class-attribute instance-attribute

sample_dim: str | None = 'time'

color_map class-attribute instance-attribute

color_map: str = 'scalar'

color_limits class-attribute instance-attribute

color_limits: ValueOrBinding = None

color_norm class-attribute instance-attribute

color_norm: str = 'auto'

background_color class-attribute instance-attribute

background_color: ValueOrBinding = 'white'

max_refresh_hz class-attribute instance-attribute

max_refresh_hz: float | None = None

StateGraphViewSpec dataclass

StateGraphViewSpec(
    id: str,
    title: str = "",
    node_field_id: str = "",
    edge_field_id: str = "",
    node_positions: tuple[
        tuple[str, float, float], ...
    ] = (),
    edges: tuple[tuple[str, str, str], ...] = (),
    node_color_map: str = "fire",
    edge_color_map: str = "bwr",
    node_color_limits: tuple[float, float] = (0.0, 1.0),
    edge_color_limits: tuple[float, float] = (-0.1, 0.1),
    node_size: float = 20.0,
    background_color: Any = "white",
    max_refresh_hz: float | None = None,
)

Bases: ViewSpec

Static directed graph with live-colored nodes and edges.

node_positions: each entry is (state_name, x, y) in normalized [0,1] canvas space. edges: each entry is (source_state, target_state, edge_id). node_field_id: Field with dims=("state",); values are current state occupancies. edge_field_id: Field with dims=("edge",); values are net fluxes or rates.

Attributes:

Name Type Description
id str
title str
node_field_id str
edge_field_id str
node_positions tuple[tuple[str, float, float], ...]
edges tuple[tuple[str, str, str], ...]
node_color_map str
edge_color_map str
node_color_limits tuple[float, float]
edge_color_limits tuple[float, float]
node_size float
background_color Any
max_refresh_hz float | None

id instance-attribute

id: str

title class-attribute instance-attribute

title: str = ''

node_field_id class-attribute instance-attribute

node_field_id: str = ''

edge_field_id class-attribute instance-attribute

edge_field_id: str = ''

node_positions class-attribute instance-attribute

node_positions: tuple[tuple[str, float, float], ...] = ()

edges class-attribute instance-attribute

edges: tuple[tuple[str, str, str], ...] = ()

node_color_map class-attribute instance-attribute

node_color_map: str = 'fire'

edge_color_map class-attribute instance-attribute

edge_color_map: str = 'bwr'

node_color_limits class-attribute instance-attribute

node_color_limits: tuple[float, float] = (0.0, 1.0)

edge_color_limits class-attribute instance-attribute

edge_color_limits: tuple[float, float] = (-0.1, 0.1)

node_size class-attribute instance-attribute

node_size: float = 20.0

background_color class-attribute instance-attribute

background_color: Any = 'white'

max_refresh_hz class-attribute instance-attribute

max_refresh_hz: float | None = None

PanelSpec dataclass

PanelSpec(
    id: str,
    kind: str,
    view_ids: tuple[str, ...] = (),
    control_ids: tuple[str, ...] = (),
    action_ids: tuple[str, ...] = (),
    operator_ids: tuple[str, ...] = (),
    host_kind: str = "independent_canvas",
    title: str | None = None,
    camera_distance: float | None = 200.0,
    camera_elevation: float = 30.0,
    camera_azimuth: float = 30.0,
)

Attributes:

Name Type Description
id str
kind str
view_ids tuple[str, ...]
control_ids tuple[str, ...]
action_ids tuple[str, ...]
operator_ids tuple[str, ...]
host_kind str
title str | None
camera_distance float | None
camera_elevation float
camera_azimuth float

id instance-attribute

id: str

kind instance-attribute

kind: str

view_ids class-attribute instance-attribute

view_ids: tuple[str, ...] = ()

control_ids class-attribute instance-attribute

control_ids: tuple[str, ...] = ()

action_ids class-attribute instance-attribute

action_ids: tuple[str, ...] = ()

operator_ids class-attribute instance-attribute

operator_ids: tuple[str, ...] = ()

host_kind class-attribute instance-attribute

host_kind: str = 'independent_canvas'

title class-attribute instance-attribute

title: str | None = None

camera_distance class-attribute instance-attribute

camera_distance: float | None = 200.0

camera_elevation class-attribute instance-attribute

camera_elevation: float = 30.0

camera_azimuth class-attribute instance-attribute

camera_azimuth: float = 30.0

ReplaySession

ReplaySession(
    *,
    scene: Scene,
    field_id: str,
    frames,
    interval_live: bool = True,
)

Bases: BufferedSession

Session that replays a precomputed sequence of frame replacements.

Methods:

Name Description
startup_scene
read_updates
idle_sleep
shutdown
emit
initialize
is_live
advance
handle

Attributes:

Name Type Description
scene
field_id
frames
index
interval_live

scene instance-attribute

scene = scene

field_id instance-attribute

field_id = field_id

frames instance-attribute

frames = list(frames)

index instance-attribute

index = 0

interval_live instance-attribute

interval_live = interval_live

startup_scene classmethod

startup_scene() -> Scene | None

read_updates

read_updates() -> list[SessionUpdate]

idle_sleep

idle_sleep() -> float

shutdown

shutdown() -> None

emit

emit(update: SessionUpdate) -> None

initialize

initialize()

is_live

is_live() -> bool

advance

advance() -> None

handle

handle(command) -> None

ScalarValueSpec dataclass

ScalarValueSpec(
    default: float | int,
    min: float | int | None = None,
    max: float | int | None = None,
    value_type: Literal["float", "int"] = "float",
)

Attributes:

Name Type Description
default float | int
min float | int | None
max float | int | None
value_type Literal['float', 'int']

default instance-attribute

default: float | int

min class-attribute instance-attribute

min: float | int | None = None

max class-attribute instance-attribute

max: float | int | None = None

value_type class-attribute instance-attribute

value_type: Literal['float', 'int'] = 'float'

SeriesSpec dataclass

SeriesSpec(
    key: str,
    label: str,
    source: AttributeRef,
    color: Any = "k",
)

Attributes:

Name Type Description
key str
label str
source AttributeRef
color Any

key instance-attribute

key: str

label instance-attribute

label: str

source instance-attribute

source: AttributeRef

color class-attribute instance-attribute

color: Any = 'k'

StateBinding dataclass

StateBinding(key: str)

Resolve a view or control value from frontend-owned state.

Attributes:

Name Type Description
key str

key instance-attribute

key: str

SurfaceViewSpec dataclass

SurfaceViewSpec(
    id: str,
    title: str = "",
    field_id: str = "",
    geometry_id: str | None = None,
    color_map: ValueOrBinding = "bwr",
    color_limits: ValueOrBinding = None,
    color_by: ValueOrBinding = "height",
    surface_color: ValueOrBinding = (0.5, 0.6, 0.8, 1.0),
    surface_shading: ValueOrBinding = "unlit",
    surface_alpha: ValueOrBinding = 1.0,
    background_color: ValueOrBinding = "white",
    render_axes: ValueOrBinding = False,
    axes_in_middle: ValueOrBinding = True,
    tick_count: ValueOrBinding = 5,
    tick_length_scale: ValueOrBinding = 1.0,
    tick_label_size: ValueOrBinding = 12.0,
    axis_label_size: ValueOrBinding = 16.0,
    axis_color: ValueOrBinding = "black",
    text_color: ValueOrBinding = "black",
    axis_alpha: ValueOrBinding = 1.0,
    axis_labels: tuple[str, str, str] | None = None,
    max_refresh_hz: float | None = None,
)

Bases: ViewSpec

Attributes:

Name Type Description
id str
title str
field_id str
geometry_id str | None
color_map ValueOrBinding
color_limits ValueOrBinding
color_by ValueOrBinding
surface_color ValueOrBinding
surface_shading ValueOrBinding
surface_alpha ValueOrBinding
background_color ValueOrBinding
render_axes ValueOrBinding
axes_in_middle ValueOrBinding
tick_count ValueOrBinding
tick_length_scale ValueOrBinding
tick_label_size ValueOrBinding
axis_label_size ValueOrBinding
axis_color ValueOrBinding
text_color ValueOrBinding
axis_alpha ValueOrBinding
axis_labels tuple[str, str, str] | None
max_refresh_hz float | None

id instance-attribute

id: str

title class-attribute instance-attribute

title: str = ''

field_id class-attribute instance-attribute

field_id: str = ''

geometry_id class-attribute instance-attribute

geometry_id: str | None = None

color_map class-attribute instance-attribute

color_map: ValueOrBinding = 'bwr'

color_limits class-attribute instance-attribute

color_limits: ValueOrBinding = None

color_by class-attribute instance-attribute

color_by: ValueOrBinding = 'height'

surface_color class-attribute instance-attribute

surface_color: ValueOrBinding = (0.5, 0.6, 0.8, 1.0)

surface_shading class-attribute instance-attribute

surface_shading: ValueOrBinding = 'unlit'

surface_alpha class-attribute instance-attribute

surface_alpha: ValueOrBinding = 1.0

background_color class-attribute instance-attribute

background_color: ValueOrBinding = 'white'

render_axes class-attribute instance-attribute

render_axes: ValueOrBinding = False

axes_in_middle class-attribute instance-attribute

axes_in_middle: ValueOrBinding = True

tick_count class-attribute instance-attribute

tick_count: ValueOrBinding = 5

tick_length_scale class-attribute instance-attribute

tick_length_scale: ValueOrBinding = 1.0

tick_label_size class-attribute instance-attribute

tick_label_size: ValueOrBinding = 12.0

axis_label_size class-attribute instance-attribute

axis_label_size: ValueOrBinding = 16.0

axis_color class-attribute instance-attribute

axis_color: ValueOrBinding = 'black'

text_color class-attribute instance-attribute

text_color: ValueOrBinding = 'black'

axis_alpha class-attribute instance-attribute

axis_alpha: ValueOrBinding = 1.0

axis_labels class-attribute instance-attribute

axis_labels: tuple[str, str, str] | None = None

max_refresh_hz class-attribute instance-attribute

max_refresh_hz: float | None = None

ViewSpec dataclass

ViewSpec(id: str, title: str = '')

Attributes:

Name Type Description
id str
title str

id instance-attribute

id: str

title class-attribute instance-attribute

title: str = ''

XYValueSpec dataclass

XYValueSpec(
    default: dict[str, float] = (
        lambda: {"x": 0.5, "y": 0.5}
    )(),
    x_range: tuple[float, float] = (0.0, 1.0),
    y_range: tuple[float, float] = (0.0, 1.0),
    x_label: str = "X",
    y_label: str = "Y",
)

Methods:

Name Description
default_value

Attributes:

Name Type Description
default dict[str, float]
x_range tuple[float, float]
y_range tuple[float, float]
x_label str
y_label str

default class-attribute instance-attribute

default: dict[str, float] = field(
    default_factory=lambda: {"x": 0.5, "y": 0.5}
)

x_range class-attribute instance-attribute

x_range: tuple[float, float] = (0.0, 1.0)

y_range class-attribute instance-attribute

y_range: tuple[float, float] = (0.0, 1.0)

x_label class-attribute instance-attribute

x_label: str = 'X'

y_label class-attribute instance-attribute

y_label: str = 'Y'

default_value

default_value() -> dict[str, float]

VispyFrontendWindow

VispyFrontendWindow(app_spec: AppSpec)

Bases: QMainWindow

Methods:

Name Description
paintEvent
resizeEvent
line_plot_panel
controls_panel
viewport_for
keyPressEvent
closeEvent

Attributes:

Name Type Description
app_spec
scene Scene | None
state dict[str, Any]
transport PipeTransport | None
refresh_planner RefreshPlanner | None
interaction_target
viewports dict[str, Viewport3DPanel]
view_hosts dict[str, IndependentCanvas3DHostPanel]
line_plot_host_panels dict[str, LinePlotHostPanel]
line_plot_panels dict[str, LinePlotPanel]
controls_host_panels dict[str, ControlsHostPanel]
controls_panels dict[str, ControlsPanel]
state_graph_host_panels dict[str, StateGraphHostPanel]
state_graph_panels dict[str, StateGraphPanel]
timer
viewport Viewport3DPanel | None

app_spec instance-attribute

app_spec = app_spec

scene instance-attribute

scene: Scene | None = None

state instance-attribute

state: dict[str, Any] = {}

transport instance-attribute

transport: PipeTransport | None = None

refresh_planner instance-attribute

refresh_planner: RefreshPlanner | None = None

interaction_target instance-attribute

interaction_target = resolve_interaction_target_source(
    interaction_target
)

viewports instance-attribute

viewports: dict[str, Viewport3DPanel] = {}

view_hosts instance-attribute

view_hosts: dict[str, IndependentCanvas3DHostPanel] = {}

line_plot_host_panels instance-attribute

line_plot_host_panels: dict[str, LinePlotHostPanel] = {}

line_plot_panels instance-attribute

line_plot_panels: dict[str, LinePlotPanel] = {}

controls_host_panels instance-attribute

controls_host_panels: dict[str, ControlsHostPanel] = {}

controls_panels instance-attribute

controls_panels: dict[str, ControlsPanel] = {}

state_graph_host_panels instance-attribute

state_graph_host_panels: dict[str, StateGraphHostPanel] = {}

state_graph_panels instance-attribute

state_graph_panels: dict[str, StateGraphPanel] = {}

timer instance-attribute

timer = QTimer(self)

viewport property

viewport: Viewport3DPanel | None

paintEvent

paintEvent(event) -> None

resizeEvent

resizeEvent(event) -> None

line_plot_panel

line_plot_panel(view_id: str) -> LinePlotPanel | None

controls_panel

controls_panel(panel_id: str) -> ControlsPanel | None

viewport_for

viewport_for(view_id: str) -> Viewport3DPanel | None

keyPressEvent

keyPressEvent(event) -> None

closeEvent

closeEvent(event) -> None

build_replay_app

build_replay_app(
    *, scene: Scene, field_id: str, frames
) -> AppSpec

Build an app that replays precomputed frames through ReplaySession.

build_surface_app

build_surface_app(
    *,
    field: Field,
    geometry: GridGeometry | None = None,
    title: str = "Surface",
    surface_view: SurfaceViewSpec | None = None,
    line_views: tuple[LinePlotViewSpec, ...] = (),
    operators: dict[str, OperatorSpec] | None = None,
    controls: dict[str, ControlSpec] | None = None,
    panels: tuple[PanelSpec, ...] = (),
    panel_grid: tuple[tuple[str, ...], ...] = (),
) -> AppSpec

Build a static surface app from field data, optional geometry, and views.

grid_field

grid_field(
    *,
    field_id: str,
    values: ndarray,
    x_coords: ndarray,
    y_coords: ndarray,
    x_dim: str = "x",
    y_dim: str = "y",
    unit: str | None = None,
) -> tuple[Field, GridGeometry]

Create a Field/GridGeometry pair from a 2-D array and coordinate vectors.

run_app

run_app(app_spec: AppSpec) -> None