Quick Start

Minimal Example

import velot

# Load a dataset
adata = velot.datasets.pancreas()

# Preprocess
adata = velot.pp.prepare(
    adata, root_cluster="Ductal", cluster_key="clusters"
)

# Compute velocity
velot.tl.velocity(adata)

# Visualize
velot.pl.velocity_stream(adata, color="clusters")

Step-by-Step Example

For more control over individual pipeline stages:

import velot

adata = velot.datasets.pancreas()

# Step 1: Preprocessing
adata = velot.pp.prepare(
    adata, root_cluster="Ductal", cluster_key="clusters"
)

# Step 2: Build spatial-temporal windows
velot.tl.build_windows(adata, n_clusters=10, window_size=50)

# Step 3: Compute OT velocity
velot.tl.compute_ot_velocity(
    adata, reg=0.05, lambda_time=1.0, lambda_knn=1.0
)

# Step 4: Smooth with neural network
velot.tl.smooth_velocity(
    adata, n_epochs=200, lambda_smooth=0.5
)

# Step 5: Project to UMAP for visualization
velot.tl.project_to_umap(adata)

# Visualize
velot.pl.velocity_stream(adata, color="clusters")

Evaluating Velocity Quality

edges = [
    ("Ngn3 low EP", "Ngn3 high EP"),
    ("Ngn3 high EP", "Fev+"),
    ("Fev+", "Alpha"),
    ("Fev+", "Beta"),
]

results = velot.metrics.summary(
    adata, cluster_edges=edges, cluster_key="clusters"
)

velot.pl.metric_summary(results)

Trajectory Analysis

velot.tl.compute_trajectories(
    adata,
    start_cluster="Ngn3 low EP",
    direction="forward",
    n_trajectories=20,
)

velot.pl.trajectories(adata, color="clusters")