MetricsCollector ================ Metrics collection for test runs. Collects timing and quality metrics during test execution. Classes ------- .. py:class:: TimingResult Result of a timing measurement. **Methods:** .. py:method:: duration_ms() Duration in milliseconds. .. py:class:: TimingContext Context manager for timing an operation. Usage: with ctx.timing("watershed_stroke") as t: effect.apply(...) print(f"Took {t.duration_ms:.1f}ms") **Methods:** .. py:method:: __init__() Initialize timing context. .. py:method:: duration_seconds() Duration in seconds (available after context exits). .. py:method:: duration_ms() Duration in milliseconds (available after context exits). .. py:class:: MetricValue A recorded metric value. .. py:class:: MetricsCollector Collects timing and quality metrics during tests. Usage: collector = MetricsCollector() # Time an operation with collector.timing("watershed_stroke"): effect.apply(...) # Record a custom metric collector.record_metric("voxel_count", 1247, "voxels") # Get all metrics metrics = collector.get_metrics() **Methods:** .. py:method:: __init__() Initialize metrics collector. .. py:method:: timing() Create a timing context for measuring operation duration. .. py:method:: record_metric() Record a custom metric. .. py:method:: get_metrics() Get all collected metrics as a dictionary. .. py:method:: get_timing() Get timing for a specific operation. .. py:method:: get_metric() Get a specific metric. .. py:method:: clear() Clear all collected metrics. Functions --------- .. py:function:: duration_ms() Duration in milliseconds. .. py:function:: duration_seconds() Duration in seconds (available after context exits). .. py:function:: duration_ms() Duration in milliseconds (available after context exits). .. py:function:: timing() Create a timing context for measuring operation duration. Args: operation: Name of the operation being timed. Returns: Context manager that records duration on exit. .. py:function:: record_metric() Record a custom metric. Args: name: Metric name (e.g., "voxel_count", "dice_coefficient"). value: Metric value. unit: Optional unit string (e.g., "voxels", "ms"). .. py:function:: get_metrics() Get all collected metrics as a dictionary. Returns: Dictionary with "timings" and "metrics" keys. .. py:function:: get_timing() Get timing for a specific operation. Args: operation: Operation name. Returns: TimingResult or None if not found. .. py:function:: get_metric() Get a specific metric. Args: name: Metric name. Returns: MetricValue or None if not found. .. py:function:: clear() Clear all collected metrics.