Source code for perda.utils.gps_trimmer

import ipywidgets as widgets
import numpy as np

from ..core_data_structures.data_instance import DataInstance
from ..plotting.parametric_trimmer import plot_parametric_trimmer
from ..plotting.plotting_constants import (
    DEFAULT_FONT_CONFIG,
    DEFAULT_LAYOUT_CONFIG,
    FontConfig,
    LayoutConfig,
)
from ..units import Timescale


[docs] def plot_gps_trimmer( lat: DataInstance, lon: DataInstance, timestamp_unit: Timescale, title: str | None = None, layout_config: LayoutConfig = DEFAULT_LAYOUT_CONFIG, font_config: FontConfig = DEFAULT_FONT_CONFIG, ) -> widgets.VBox: """ Interactive GPS coordinate trimmer with a dual-handle range slider. Displays a 2D scatter plot of GPS coordinates (longitude vs latitude) alongside an ipywidgets IntRangeSlider that trims which points are shown. Designed for use in Jupyter notebooks. Parameters ---------- lat : DataInstance Latitude values. Must have the same length and identical timestamps as `lon`. lon : DataInstance Longitude values. Must have the same length and identical timestamps as `lat`. timestamp_unit : Timescale Timestamp unit used for the slider timestamp labels. Pass ``aly.data.timestamp_unit``. title : str | None, optional layout_config : LayoutConfig, optional font_config : FontConfig, optional Returns ------- ipywidgets.VBox Examples -------- >>> from perda.utils import plot_gps_trimmer >>> widget = plot_gps_trimmer(lat_di, lon_di, aly.data.timestamp_unit, title="GPS Track") >>> display(widget) """ if len(lat) != len(lon): raise ValueError( f"lat and lon DataInstances have different lengths ({len(lat)} vs {len(lon)}). " "Align them first using a join (e.g., inner_join_data_instances, left_join_data_instances)." ) if not np.array_equal(lat.timestamp_np, lon.timestamp_np): raise ValueError( "lat and lon DataInstances have mismatched timestamps. " "Align them first using a join (e.g., inner_join_data_instances, left_join_data_instances)." ) return plot_parametric_trimmer( x=lon.value_np, y=lat.value_np, timestamps=lat.timestamp_np, x_label="Longitude", y_label="Latitude", title=title, timestamp_unit=timestamp_unit, layout_config=layout_config, font_config=font_config, )