cigvis.vispynodes.volume_image module#

class cigvis.vispynodes.volume_image.OverlaySpec(name: 'str', volume: 'Optional[np.ndarray]' = None, preproc: 'Optional[Callable]' = None, forcefp32: 'bool' = True, cmap: 'Any' = 'grays', cmap_name: 'Any' = None, axis_cmaps: 'Optional[Dict[str, Any]]'=None, axis_cmap_names: 'Optional[Dict[str, Any]]'=None, axes: 'Tuple[str, ...]'=('x', 'y', 'z'), clim: 'Optional[Tuple[float, float]]'=None, interpolation: 'str' = 'nearest', method: 'str' = 'auto', texture_format: 'Optional[str]' = 'auto', dtype: 'Any' = <class 'numpy.float32'>)#

Bases: object

axes: Tuple[str, ...] = ('x', 'y', 'z')#
axis_cmap_names: Dict[str, Any] | None = None#
axis_cmaps: Dict[str, Any] | None = None#
clim: Tuple[float, float] | None = None#
cmap: Any = 'grays'#
cmap_for_axis(axis: str)#
cmap_name: Any = None#
cmap_name_for_axis(axis: str)#
dtype#

alias of float32

forcefp32: bool = True#
interpolation: str = 'nearest'#
method: str = 'auto'#
name: str#
preproc: Callable | None = None#
texture_format: str | None = 'auto'#
volume: ndarray | None = None#
class cigvis.vispynodes.volume_image.VolumeImage(volume: ndarray, *, preproc: Callable | None = None, cmap: Any = 'grays', clim: List | Tuple | None = None, interpolation: str = 'linear', method: str = 'auto', texture_format: str | None = None, display_range: Dict[str, Tuple[int, int]] | None = None)#

Bases: object

Manager for one base volume and multiple overlays, and for creating axis-aligned slice nodes (AxisAlignedImage) while keeping them independent.

Key improvement:
  • Use SliceProvider (mutable volume reference) so replacing overlay volumes does NOT require swapping image_funcs closures.

add_overlay_volume(*, name: str, volume: ndarray, cmap: Any, clim: List | Tuple | None = None, interpolation: str = 'nearest', preproc: Callable | None = None, method: str | None = None, texture_format: str | None = None, forcefp32: bool = True, axes=None, cmap_names: Any = None)#
create_slices(x_pos: List | int | float | None = None, y_pos: List | int | float | None = None, z_pos: List | int | float | None = None, pos: Dict[str, List[int]] | List | Tuple | None = None) Dict[str, List[AxisAlignedImage]]#
nodes(*, intersection_lines: bool = False, line_color=(1, 1, 1), line_width: float = 2.0)#
refresh_overlay(name: str)#

Re-upload current slice for a ‘volume3d’ overlay. Useful for in-place edits, or when you want immediate refresh without dragging.

remove_overlay(name: str) bool#

Remove an overlay volume from all existing slice nodes.

replace_overlay_volume(name: str, new_volume: ndarray, *, preproc: Callable | None = None, refresh: bool = True, validate: bool = True, reinit_meta_if_needed: bool = False)#

Workflow-friendly: vol -> AI model -> new mask volume (NEW reference) -> update.

With SliceProvider, we only swap provider.volume; we DO NOT replace image_funcs.