""" Reliability Analysis Tools. Functions for analyzing packet delivery reliability. """ from typing import Dict, Any def analyze_loss_breakdown(loss_data: Dict[str, int]) -> Dict[str, Any]: """ Analyze packet loss breakdown. Args: loss_data: Dictionary with loss counts by type Returns: Dictionary with loss analysis """ total_loss = sum(loss_data.values()) if total_loss == 0: return { "total_loss": 0, "rates": {}, "primary_cause": "none", } rates = {k: round(v / total_loss * 100, 2) for k, v in loss_data.items() if v > 0} # Find primary cause primary_cause = ( max(loss_data.items(), key=lambda x: x[1])[0] if loss_data else "none" ) return { "total_loss": total_loss, "rates": rates, "primary_cause": primary_cause, } def calculate_pdr_metrics(total_sent: int, total_received: int) -> Dict[str, Any]: """ Calculate PDR metrics. Args: total_sent: Total packets sent total_received: Total packets received Returns: Dictionary with PDR analysis """ pdr = total_received / total_sent if total_sent > 0 else 0 return { "total_sent": total_sent, "total_received": total_received, "pdr": round(pdr * 100, 2), "delivered": total_received, "lost": total_sent - total_received, }