Source code for Modules.UncertaintyTube.uncertainty_tubes

from scipy.__config__ import show
from .uncertainty_tubes_stats import uncertainty_tubes_summary_statistics
from .uncertainty_tubes_mesh import uncertainty_tubes_mesh
from .uncertainty_tubes_vis import visualize_uncertainty_tubes
import numpy as np


[docs] def uncertainty_tubes(trajectories, colormap="viridis", plotter=None, resolution=20, e_proj=1, sym=False, clim=None, n_jobs=1): """ Generate and visualize 3D uncertainty tubes from trajectories. Parameters ---------- trajectories : np.ndarray Array of shape (n_steps, n_starting_locations, n_ensemble_members, 3) representing the 3D trajectories. colormap (str, optional): Colormap to use for rendering the tube. Defaults to "viridis". plotter (matplotlib.axes.Axes or pyvista.Plotter, optional): The plotting object to use. If None, a new Matplotlib figure/axis is created. resolution (int, optional): Number of points to sample on each cross-section boundary. Defaults to 20. e_proj (float, optional): Exponent controlling the superellipse shape. e_proj=1 creates a standard ellipse. Defaults to 1. sym (bool, optional): If True, forces the superellipse to be symmetric. Defaults to False. n_jobs (int, optional): Number of parallel jobs to use. If n_jobs=1, uses sequential processing. Defaults to 1. Returns ------- matplotlib.axes.Axes or pyvista.Plotter: The plotting object with the visualization. """ # Stage 1: Statistics summary_statistics = uncertainty_tubes_summary_statistics(trajectories, n_jobs=n_jobs) # Stage 2: Mesh Generation mesh_data = uncertainty_tubes_mesh( summary_statistics, resolution=resolution, e_proj=e_proj, sym=sym, n_jobs=n_jobs ) # Stage 3: Visualization plotter = visualize_uncertainty_tubes(mesh_data, colormap=colormap, clim=clim, plotter=plotter) return plotter