name: core.nwb.misc id: core.nwb.misc imports: - core.nwb.base - hdmf-common.table - core.nwb.ecephys - nwb.language - core.nwb.misc.include - core.nwb.misc prefixes: core.nwb.misc: prefix_prefix: core.nwb.misc prefix_reference: https://example.com/core.nwb.misc/ default_prefix: core.nwb.misc classes: AbstractFeatureSeries: name: AbstractFeatureSeries description: Abstract features, such as quantitative descriptions of sensory stimuli. The TimeSeries::data field is a 2D array, storing those features (e.g., for visual grating stimulus this might be orientation, spatial frequency and contrast). Null stimuli (eg, uniform gray) can be marked as being an independent feature (eg, 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values, or through use of the TimeSeries::control fields. A set of features is considered to persist until the next set of features is defined. The final set of features stored should be the null set. This is useful when storing the raw stimulus is impractical. is_a: TimeSeries attributes: name: name: name range: string required: true data: name: data description: Values of each feature at each time. multivalued: false range: AbstractFeatureSeries__data required: true feature_units: name: feature_units description: Units of each feature. multivalued: true range: text required: false features: name: features description: Description of the features represented in TimeSeries::data. multivalued: true range: text required: true tree_root: true AnnotationSeries: name: AnnotationSeries description: Stores user annotations made during an experiment. The data[] field stores a text array, and timestamps are stored for each annotation (ie, interval=1). This is largely an alias to a standard TimeSeries storing a text array but that is identifiable as storing annotations in a machine-readable way. is_a: TimeSeries attributes: name: name: name range: string required: true data: name: data description: Annotations made during an experiment. multivalued: true range: text required: true tree_root: true IntervalSeries: name: IntervalSeries description: Stores intervals of data. The timestamps field stores the beginning and end of intervals. The data field stores whether the interval just started (>0 value) or ended (<0 value). Different interval types can be represented in the same series by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature C, etc). The field data stores an 8-bit integer. This is largely an alias of a standard TimeSeries but that is identifiable as representing time intervals in a machine-readable way. is_a: TimeSeries attributes: name: name: name range: string required: true data: name: data description: Use values >0 if interval started, <0 if interval ended. multivalued: true range: int8 required: true tree_root: true DecompositionSeries: name: DecompositionSeries description: Spectral analysis of a time series, e.g. of an LFP or a speech signal. is_a: TimeSeries attributes: name: name: name range: string required: true data: name: data description: Data decomposed into frequency bands. multivalued: false range: DecompositionSeries__data required: true metric: name: metric description: The metric used, e.g. phase, amplitude, power. multivalued: false range: text required: true source_channels: name: source_channels description: DynamicTableRegion pointer to the channels that this decomposition series was generated from. multivalued: false range: DecompositionSeries__source_channels required: false bands: name: bands description: Table for describing the bands that this series was generated from. There should be one row in this table for each band. multivalued: false range: DynamicTable required: true tree_root: true Units: name: Units description: Data about spiking units. Event times of observed units (e.g. cell, synapse, etc.) should be concatenated and stored in spike_times. is_a: DynamicTable attributes: name: name: name range: string required: true spike_times_index: name: spike_times_index description: Index into the spike_times dataset. multivalued: false range: Units__spike_times_index required: false spike_times: name: spike_times description: Spike times for each unit in seconds. multivalued: false range: Units__spike_times required: false obs_intervals_index: name: obs_intervals_index description: Index into the obs_intervals dataset. multivalued: false range: Units__obs_intervals_index required: false obs_intervals: name: obs_intervals description: Observation intervals for each unit. multivalued: false range: Units__obs_intervals required: false electrodes_index: name: electrodes_index description: Index into electrodes. multivalued: false range: Units__electrodes_index required: false electrodes: name: electrodes description: Electrode that each spike unit came from, specified using a DynamicTableRegion. multivalued: false range: Units__electrodes required: false electrode_group: name: electrode_group description: Electrode group that each spike unit came from. multivalued: true range: ElectrodeGroup waveform_mean: name: waveform_mean description: Spike waveform mean for each spike unit. multivalued: false range: Units__waveform_mean required: false waveform_sd: name: waveform_sd description: Spike waveform standard deviation for each spike unit. multivalued: false range: Units__waveform_sd required: false waveforms: name: waveforms description: Individual waveforms for each spike on each electrode. This is a doubly indexed column. The 'waveforms_index' column indexes which waveforms in this column belong to the same spike event for a given unit, where each waveform was recorded from a different electrode. The 'waveforms_index_index' column indexes the 'waveforms_index' column to indicate which spike events belong to a given unit. For example, if the 'waveforms_index_index' column has values [2, 5, 6], then the first 2 elements of the 'waveforms_index' column correspond to the 2 spike events of the first unit, the next 3 elements of the 'waveforms_index' column correspond to the 3 spike events of the second unit, and the next 1 element of the 'waveforms_index' column corresponds to the 1 spike event of the third unit. If the 'waveforms_index' column has values [3, 6, 8, 10, 12, 13], then the first 3 elements of the 'waveforms' column contain the 3 spike waveforms that were recorded from 3 different electrodes for the first spike time of the first unit. See https://nwb-schema.readthedocs.io/en/stable/format_description.html#doubly-ragged-arrays for a graphical representation of this example. When there is only one electrode for each unit (i.e., each spike time is associated with a single waveform), then the 'waveforms_index' column will have values 1, 2, ..., N, where N is the number of spike events. The number of electrodes for each spike event should be the same within a given unit. The 'electrodes' column should be used to indicate which electrodes are associated with each unit, and the order of the waveforms within a given unit x spike event should be in the same order as the electrodes referenced in the 'electrodes' column of this table. The number of samples for each waveform must be the same. multivalued: false range: Units__waveforms required: false waveforms_index: name: waveforms_index description: Index into the waveforms dataset. One value for every spike event. See 'waveforms' for more detail. multivalued: false range: Units__waveforms_index required: false waveforms_index_index: name: waveforms_index_index description: Index into the waveforms_index dataset. One value for every unit (row in the table). See 'waveforms' for more detail. multivalued: false range: Units__waveforms_index_index required: false tree_root: true