Skip to content

baglab.diagnostics

baglab.diagnostics

Diagnostics utilities for topic rate, delay, and gap analysis.

latency_chain(timestamps_dict)

Visualize pipeline latency across multiple topics.

For each topic, computes rate statistics and relative timing.

Parameters

timestamps_dict : dict[str, pd.Series] Mapping of topic name to timestamp series (float seconds).

Returns

pd.DataFrame DataFrame with columns "topic", "mean_hz", "mean_dt", "std_dt", "min_dt", "max_dt", sorted by topic name.

topic_delay(pub_stamp, recv_stamp)

Compute publish-to-receive delay statistics.

Parameters

pub_stamp : pd.Series Publish timestamps as float seconds (header.stamp converted). recv_stamp : pd.Series Receive timestamps as float seconds (index converted).

Returns

dict[str, pd.Series | float] Dictionary with keys "delay" (per-message pd.Series), "mean", "max", "std", "median".

message_gaps(timestamps, expected_rate)

Find gaps (missing messages) in a topic.

A gap is defined as a period longer than 1.5 * (1 / expected_rate).

Parameters

timestamps : pd.Series Timestamps as float seconds. expected_rate : float Expected publish rate in Hz.

Returns

pd.DataFrame DataFrame with columns "start", "end", "duration", "expected_count" for each detected gap.

topic_rate(timestamps)

Compute topic publish rate statistics.

Parameters

timestamps : pd.Series | pd.DatetimeIndex Timestamps as float seconds (e.g., from stamp_to_sec) or as a pd.DatetimeIndex.

Returns

dict[str, float | int] Dictionary with keys "mean_hz", "std_hz", "min_dt", "max_dt", "count", "duration".