You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clarify TimeIntervals/EventsTable docs and routing (#688)
* Clarify time-anchored data storage: TimeIntervals, EventsTable, and /events placement
Fixes#686 and #687.
- Harmonize /intervals/* group docstrings (epochs, trials).
- Rewrite TimeIntervals and EventsTable type docstrings to describe
the type and give a usable decision rule, rather than restating
historical use.
- Replace the placeholder docstring on the /events group and its
inner EventsTable slot.
- Add a FAQ entry to format_description.rst covering: trials-table
convention; TimeIntervals vs EventsTable; TimeSeries vs EventsTable
for digital lines; EventsTable placement (/acquisition, /processing,
/events, /analysis); /events vs /processing/behavior disambiguation;
borderline edge-times case.
- Expand BehavioralEvents and AnnotationSeries deprecation entries
in the 2.10.0 release notes with field-level migration guidance.
* Update format_release_notes.rst
- Experimenter-added annotations (e.g., "subject was distracted here", "experimenter adjusted the stimulus here").
376
+
- Events occurring multiple times per trial with variable count, where ragged trial columns would be awkward.
377
+
378
+
*Continuous digital traces are TimeSeries, not EventsTable.* A digital line sampled
379
+
continuously (e.g., a 30 kHz 0/1 trace of a TTL channel) is a ``TimeSeries``. Edge
380
+
times derived from that trace are an ``EventsTable``. The continuous-vs-edges
381
+
distinction is independent of where the data is stored in the file hierarchy.
382
+
383
+
*Place EventsTable instances based on how the data was derived.* ``EventsTable`` is
384
+
allowed in multiple groups, mirroring ``TimeSeries`` placement conventions:
385
+
386
+
- ``/acquisition`` — events emitted directly by the acquisition system (Neuralynx ``.nev``, Open Ephys event channels, TTL edges parsed from a directly-recorded digital line).
387
+
- ``/processing/<module>`` — events derived by user processing: filtering, debouncing, detection algorithms, or events annotated with experimental context.
388
+
- ``/events`` — primary experimental event tables for the session, ready to be used in downstream analysis. The ``BehavioralEvents`` replacement case from NWBEP001.
389
+
- ``/analysis`` — events tied to final scientific analysis.
390
+
391
+
The ``/events`` versus ``/processing/behavior/`` choice is the most common source of
392
+
confusion. Prefer ``/events`` when the table is a top-level experimental annotation
393
+
ready for downstream analysis. Prefer ``/processing`` when the table is an
394
+
intermediate output consumed by other processing steps.
395
+
396
+
For the borderline case of edge times derived from a directly-recorded digital line,
397
+
default to ``/acquisition``. Edge detection on a binary line is information-preserving
398
+
— the events are what the acquisition system would have emitted if configured to do
399
+
so. Reserve ``/processing`` for cases involving actual decisions (thresholding analog
0 commit comments