EventCatalog Specification v2.6.0
Version
Version: 2.6.0
Date: 2026-03-05
Status: Implementation
Depends on:
cogpy.datasets.schemas(Events,Intervals)
Overview
EventCatalog provides a unified, lightweight event representation that bridges:
Analysis workflows: typed containers (
Events,Intervals) for integration with pynapple/MNE-style pipelines.Visualization workflows: event export for frontends like TensorScope (tables, navigation, overlays).
It is a wrapper around a pandas DataFrame with:
a minimal required schema (
event_id,t)optional standardized columns (intervals/spatial/spectral/metadata/provenance)
conversion and factory helpers for common detector outputs
This is intentionally non-breaking and additive. It does not replace the existing
strict detector contract cogpy.datasets.schemas.EventCatalog (which assumes interval
fields are present); instead it provides a more general “bridge” catalog suitable for
point events and interval events.
Schema
Required Columns
event_id:str | int— unique identifiert:float— event time in seconds (peak/center)
Optional Interval Columns
t0:float— start time (seconds)t1:float— end time (seconds)duration:float— computed ast1 - t0when missing (requirest0,t1)
Optional Spatial Columns
channel:int | strAP:floatML:float
Optional Spectral Columns
freq:floatf0,f1:floatbandwidth:float(computed asf1 - f0when missing)
Optional Metadata / Provenance Columns
label:strscore:floatvalue:floatfamily:strdetector:strsource_signal:strpipeline:str
Core API
Converters:
to_events()→Eventsto_intervals()→Intervals(requirest0,t1)to_point_intervals(half_window)→Intervalsto_event_stream(style=...)→ serializable event stream for frontends
Factories:
from_hmaxima(...)from_blob_candidates(...)from_burst_dict(...)from_spwr_mat(...)
Queries:
filter_by_time(t_min, t_max)filter_by_channel(channels)filter_by_spatial(AP, ML, radius)
Success Criteria
EventCatalogimplemented incogpy.eventsFactories cover common existing detector outputs
Converters to
Events,Intervals, and serializable event streams workValidation and basic filters are tested
Example demonstrates end-to-end usage