Source code for ezmsg.event.rate
import ezmsg.core as ez
from ezmsg.baseproc import BaseTransformerUnit
from ezmsg.util.messages.axisarray import AxisArray
from ezmsg.event.kernel_activation import (
ActivationKernelType,
BinAggregation,
BinnedKernelActivation,
BinnedKernelActivationSettings,
)
[docs]
class EventRateSettings(ez.Settings):
bin_duration: float = 0.05
[docs]
class Rate(BinnedKernelActivation):
"""
Event rate calculator (events per second).
Counts events per bin and divides by bin_duration to get rate in events/second.
"""
[docs]
def __init__(self, settings: EventRateSettings) -> None:
super().__init__(
BinnedKernelActivationSettings(
kernel_type=ActivationKernelType.COUNT,
tau=1.0, # Not used for COUNT
bin_duration=settings.bin_duration,
aggregation=BinAggregation.SUM,
scale_by_value=False,
normalize=False,
rate_normalize=True,
)
)
[docs]
class EventRate(BaseTransformerUnit[EventRateSettings, AxisArray, AxisArray, Rate]):
"""Unit for computing event rate from sparse events."""
SETTINGS = EventRateSettings