-
Notifications
You must be signed in to change notification settings - Fork 16
/
nwb.ecephys.yaml
333 lines (324 loc) · 11.8 KB
/
nwb.ecephys.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
groups:
- neurodata_type_def: ElectricalSeries
neurodata_type_inc: TimeSeries
doc: A time series of acquired voltage data from extracellular recordings.
The data field is an int or float array storing data in volts. The first
dimension should always represent time. The second dimension, if present,
should represent channels.
attributes:
- name: filtering
dtype: text
doc: Filtering applied to all channels of the data. For example, if this ElectricalSeries represents
high-pass-filtered data (also known as AP Band), then this value could be "High-pass 4-pole Bessel filter
at 500 Hz". If this ElectricalSeries represents low-pass-filtered LFP data and the type of filter is unknown,
then this value could be "Low-pass filter at 300 Hz". If a non-standard filter type is used, provide as much
detail about the filter properties as possible.
required: false
datasets:
- name: data
dtype: numeric
dims:
- - num_times
- - num_times
- num_channels
- - num_times
- num_channels
- num_samples
shape:
- - null
- - null
- null
- - null
- null
- null
doc: Recorded voltage data.
attributes:
- name: unit
dtype: text
value: volts
doc: Base unit of measurement for working with the data. This value is fixed to
'volts'. Actual stored values are not necessarily stored in these units. To
access the data in these units, multiply 'data' by 'conversion', followed by
'channel_conversion' (if present), and then add 'offset'.
- name: electrodes
neurodata_type_inc: DynamicTableRegion
doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
- name: channel_conversion
dtype: float32
dims:
- num_channels
shape:
- null
doc: Channel-specific conversion factor. Multiply the data in the 'data' dataset by these
values along the channel axis (as indicated by axis attribute) AND by the global
conversion factor in the 'conversion' attribute of 'data' to get the data values in
Volts, i.e, data in Volts = data * data.conversion * channel_conversion. This
approach allows for both global and per-channel data conversion factors needed
to support the storage of electrical recordings as native values generated by data
acquisition systems. If this dataset is not present, then there is no channel-specific
conversion factor, i.e. it is 1 for all channels.
quantity: '?'
attributes:
- name: axis
dtype: int32
value: 1
doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
factor corresponds to. This value is fixed to 1.
- neurodata_type_def: SpikeEventSeries
neurodata_type_inc: ElectricalSeries
doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
field should describe how events were detected. All SpikeEventSeries should
reside in a module (under EventWaveform interface) even if the spikes were reported
and stored by hardware. All events span the same recording channels and store
snapshots of equal duration. TimeSeries::data array structure: [num events]
[num channels] [num samples] (or [num events] [num samples] for single electrode)."
datasets:
- name: data
dtype: numeric
dims:
- - num_events
- num_samples
- - num_events
- num_channels
- num_samples
shape:
- - null
- null
- - null
- null
- null
doc: Spike waveforms.
attributes:
- name: unit
dtype: text
value: volts
doc: Unit of measurement for waveforms, which is fixed to 'volts'.
- name: timestamps
dtype: float64
dims:
- num_times
shape:
- null
doc: Timestamps for samples stored in data, in seconds, relative to the
common experiment master-clock stored in NWBFile.timestamps_reference_time.
Timestamps are required for the events. Unlike for TimeSeries, timestamps are
required for SpikeEventSeries and are thus re-specified here.
attributes:
- name: interval
dtype: int32
value: 1
doc: Value is '1'
- name: unit
dtype: text
value: seconds
doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
- neurodata_type_def: FeatureExtraction
neurodata_type_inc: NWBDataInterface
default_name: FeatureExtraction
doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
SpikeEventSeries or other source.
datasets:
- name: description
dtype: text
dims:
- num_features
shape:
- null
doc: Description of features (eg, ''PC1'') for each of the extracted features.
- name: features
dtype: float32
dims:
- num_events
- num_channels
- num_features
shape:
- null
- null
- null
doc: Multi-dimensional array of features extracted from each event.
- name: times
dtype: float64
dims:
- num_events
shape:
- null
doc: Times of events that features correspond to (can be a link).
- name: electrodes
neurodata_type_inc: DynamicTableRegion
doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
- neurodata_type_def: EventDetection
neurodata_type_inc: NWBDataInterface
default_name: EventDetection
doc: Detected spike events from voltage trace(s).
datasets:
- name: detection_method
dtype: text
doc: Description of how events were detected, such as voltage threshold, or dV/dT
threshold, as well as relevant values.
- name: source_idx
dtype: int32
dims:
- num_events
shape:
- null
doc: Indices (zero-based) into source ElectricalSeries::data array corresponding
to time of event. ''description'' should define what is meant by time of
event (e.g., .25 ms before action potential peak, zero-crossing time, etc).
The index points to each event from the raw data.
- name: times
dtype: float64
dims:
- num_events
shape:
- null
doc: Timestamps of events, in seconds.
attributes:
- name: unit
dtype: text
value: seconds
doc: Unit of measurement for event times, which is fixed to 'seconds'.
links:
- name: source_electricalseries
target_type: ElectricalSeries
doc: Link to the ElectricalSeries that this data was calculated from. Metadata
about electrodes and their position can be read from that ElectricalSeries so
it's not necessary to include that information here.
- neurodata_type_def: EventWaveform
neurodata_type_inc: NWBDataInterface
default_name: EventWaveform
doc: Represents either the waveforms of detected events, as extracted from a raw
data trace in /acquisition, or the event waveforms that were stored during experiment
acquisition.
groups:
- neurodata_type_inc: SpikeEventSeries
doc: SpikeEventSeries object(s) containing detected spike event waveforms.
quantity: '*'
- neurodata_type_def: FilteredEphys
neurodata_type_inc: NWBDataInterface
default_name: FilteredEphys
doc: Electrophysiology data from one or more channels that has been subjected to filtering.
Examples of filtered data include Theta and Gamma (LFP has its own interface).
FilteredEphys modules publish an ElectricalSeries for each filtered channel or
set of channels. The name of each ElectricalSeries is arbitrary but should be
informative. The source of the filtered data, whether this is from analysis of
another time series or as acquired by hardware, should be noted in each's TimeSeries::description
field. There is no assumed 1::1 correspondence between filtered ephys signals
and electrodes, as a single signal can apply to many nearby electrodes, and one
electrode may have different filtered (e.g., theta and/or gamma) signals represented.
Filter properties should be noted in the ElectricalSeries 'filtering' attribute.
groups:
- neurodata_type_inc: ElectricalSeries
doc: ElectricalSeries object(s) containing filtered electrophysiology data.
quantity: '+'
- neurodata_type_def: LFP
neurodata_type_inc: NWBDataInterface
default_name: LFP
doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
will identify which channels are providing LFP data. Filter properties should
be noted in the ElectricalSeries 'filtering' attribute.
groups:
- neurodata_type_inc: ElectricalSeries
doc: ElectricalSeries object(s) containing LFP data for one or more channels.
quantity: '+'
- neurodata_type_def: ElectrodeGroup
neurodata_type_inc: NWBContainer
doc: A physical grouping of electrodes, e.g. a shank of an array.
attributes:
- name: description
dtype: text
doc: Description of this electrode group.
- name: location
dtype: text
doc: Location of electrode group. Specify the area, layer, comments on estimation
of area/layer, etc. Use standard atlas names for anatomical regions when possible.
datasets:
- name: position
dtype:
- name: x
dtype: float32
doc: x coordinate
- name: y
dtype: float32
doc: y coordinate
- name: z
dtype: float32
doc: z coordinate
doc: stereotaxic or common framework coordinates
quantity: '?'
links:
- name: device
target_type: Device
doc: Link to the device that was used to record from this electrode group.
# The types below have been deprecated
- neurodata_type_def: ClusterWaveforms
neurodata_type_inc: NWBDataInterface
default_name: ClusterWaveforms
doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
clusters. Ideally, the waveform analysis should be performed on data that is only
high-pass filtered. This is a separate module because it is expected to require
updating. For example, IMEC probes may require different storage requirements
to store/display mean waveforms, requiring a new interface or an extension of
this one.
datasets:
- name: waveform_filtering
dtype: text
doc: Filtering applied to data before generating mean/sd
- name: waveform_mean
dtype: float32
dims:
- num_clusters
- num_samples
shape:
- null
- null
doc: The mean waveform for each cluster, using the same indices for each wave
as cluster numbers in the associated Clustering module (i.e, cluster 3 is in
array slot [3]). Waveforms corresponding to gaps in cluster sequence should
be empty (e.g., zero- filled)
- name: waveform_sd
dtype: float32
dims:
- num_clusters
- num_samples
shape:
- null
- null
doc: Stdev of waveforms for each cluster, using the same indices as in mean
links:
- name: clustering_interface
target_type: Clustering
doc: Link to Clustering interface that was the source of the clustered data
- neurodata_type_def: Clustering
neurodata_type_inc: NWBDataInterface
default_name: Clustering
doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
klustakwik) or as a result of manual sorting.
datasets:
- name: description
dtype: text
doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
curated using Klusters, etc)
- name: num
dtype: int32
dims:
- num_events
shape:
- null
doc: Cluster number of each event
- name: peak_over_rms
dtype: float32
dims:
- num_clusters
shape:
- null
doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
a basic clustering metric).
- name: times
dtype: float64
dims:
- num_events
shape:
- null
doc: Times of clustered events, in seconds. This may be a link to times field
in associated FeatureExtraction module.