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
Copy file name to clipboardExpand all lines: docs/format/source/format_description.rst
+19-18Lines changed: 19 additions & 18 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -380,24 +380,25 @@ continuously (e.g., a 30 kHz 0/1 trace of a TTL channel) is a ``TimeSeries``. Ed
380
380
times derived from that trace are an ``EventsTable``. The continuous-vs-edges
381
381
distinction is independent of where the data is stored in the file hierarchy.
382
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
400
-
signals, debouncing, filtering, selection).
383
+
*Place all EventsTable instances in /events.* Event tables are organized by data
384
+
modality, not by processing stage. All ``EventsTable`` instances for the session
385
+
go in the top-level ``/events`` group.
386
+
387
+
Use the optional ``source_description`` attribute on each ``EventsTable`` to record
388
+
where the events came from, as a short human-readable phrase. Examples:
389
+
390
+
- ``"Acquisition system"``
391
+
- ``"Thresholding of analog signal ANALOG1 at 3 V"``
392
+
- ``"Manual video review"``
393
+
394
+
Use the longer ``description`` attribute for the narrative of how the event times
395
+
were computed (channels used, encoding scheme, algorithm parameters, etc.).
396
+
397
+
*Each EventsTable holds events of a single type.* All rows in a given table should
398
+
share the same set of per-event metadata columns. Store events of different types
399
+
(licks vs. stimulus presentations vs. rewards) in separate ``EventsTable``
400
+
instances within ``/events``. APIs may provide helpers to merge tables across
0 commit comments