Basic Usage#
This example demonstrates the fundamental operations of DataLab-Kernel.
Creating a Workspace#
from datalab_kernel import Workspace, Plotter
from sigima import create_signal, create_image
import numpy as np
# Create workspace (auto-detects DataLab)
workspace = Workspace()
plotter = Plotter(workspace)
print(f"Operating mode: {workspace.mode}")
Working with Signals#
# Create time-domain signal
t = np.linspace(0, 1, 1000)
freq = 5 # Hz
signal = np.sin(2 * np.pi * freq * t) + 0.2 * np.random.randn(len(t))
# Create signal object with metadata
sig = create_signal(
"Noisy Sine Wave",
t, signal,
units=("s", "V"),
labels=("Time", "Amplitude"),
)
# Add to workspace
workspace.add("sine_wave", sig)
# Visualize
plotter.plot("sine_wave")
Working with Images#
# Create 2D Gaussian
size = 128
x = np.linspace(-3, 3, size)
y = np.linspace(-3, 3, size)
X, Y = np.meshgrid(x, y)
gaussian = np.exp(-(X**2 + Y**2) / 2)
# Add some noise
noisy_gaussian = gaussian + 0.1 * np.random.randn(size, size)
# Create image object
img = create_image(
"Noisy Gaussian",
noisy_gaussian.astype(np.float32),
units=("mm", "mm", "a.u."),
labels=("X", "Y", "Intensity"),
)
# Add and visualize
workspace.add("gaussian", img)
plotter.plot("gaussian")
Workspace Operations#
# List all objects
print("Objects:", workspace.list())
# Check existence
print("Has 'sine_wave':", workspace.exists("sine_wave"))
print("Has 'unknown':", workspace.exists("unknown"))
# Object count
print("Count:", len(workspace))
# Iteration
for name in workspace:
print(f" - {name}")
# Retrieve object
retrieved = workspace.get("sine_wave")
print("Retrieved signal title:", retrieved.title)
# Rename
workspace.rename("gaussian", "gaussian_2d")
print("After rename:", workspace.list())
# Remove
workspace.remove("gaussian_2d")
print("After remove:", workspace.list())
Containment Check#
# Using 'in' operator
if "sine_wave" in workspace:
print("Signal exists!")
if "nonexistent" not in workspace:
print("Object not found")