name: core.nwb.misc id: core.nwb.misc imports: - core.nwb.base - hdmf-common.table - core.nwb.ecephys - nwb.language 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 AbstractFeatureSeries__data: name: AbstractFeatureSeries__data description: Values of each feature at each time. attributes: name: name: name ifabsent: string(data) range: string required: true equals_string: data unit: name: unit description: Since there can be different units for different features, store the units in 'feature_units'. The default value for this attribute is "see 'feature_units'". range: text array: name: array range: AbstractFeatureSeries__data__Array AbstractFeatureSeries__data__Array: name: AbstractFeatureSeries__data__Array is_a: Arraylike attributes: num_times: name: num_times range: numeric required: true num_features: name: num_features range: numeric required: false 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 DecompositionSeries__data: name: DecompositionSeries__data description: Data decomposed into frequency bands. attributes: name: name: name ifabsent: string(data) range: string required: true equals_string: data unit: name: unit description: Base unit of measurement for working with the data. Actual stored values are not necessarily stored in these units. To access the data in these units, multiply 'data' by 'conversion'. range: text array: name: array range: DecompositionSeries__data__Array DecompositionSeries__data__Array: name: DecompositionSeries__data__Array is_a: Arraylike attributes: num_times: name: num_times range: numeric required: true num_channels: name: num_channels range: numeric required: true num_bands: name: num_bands range: numeric required: true DecompositionSeries__source_channels: name: DecompositionSeries__source_channels description: DynamicTableRegion pointer to the channels that this decomposition series was generated from. is_a: DynamicTableRegion attributes: name: name: name ifabsent: string(source_channels) range: string required: true equals_string: source_channels 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 Units__spike_times_index: name: Units__spike_times_index description: Index into the spike_times dataset. is_a: VectorIndex attributes: name: name: name ifabsent: string(spike_times_index) range: string required: true equals_string: spike_times_index Units__spike_times: name: Units__spike_times description: Spike times for each unit in seconds. is_a: VectorData attributes: name: name: name ifabsent: string(spike_times) range: string required: true equals_string: spike_times resolution: name: resolution description: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate from which spike times were extracted, but could be larger if the acquisition time series was downsampled or smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be between samples. range: float64 Units__obs_intervals_index: name: Units__obs_intervals_index description: Index into the obs_intervals dataset. is_a: VectorIndex attributes: name: name: name ifabsent: string(obs_intervals_index) range: string required: true equals_string: obs_intervals_index Units__obs_intervals: name: Units__obs_intervals description: Observation intervals for each unit. is_a: VectorData attributes: name: name: name ifabsent: string(obs_intervals) range: string required: true equals_string: obs_intervals Units__electrodes_index: name: Units__electrodes_index description: Index into electrodes. is_a: VectorIndex attributes: name: name: name ifabsent: string(electrodes_index) range: string required: true equals_string: electrodes_index Units__electrodes: name: Units__electrodes description: Electrode that each spike unit came from, specified using a DynamicTableRegion. is_a: DynamicTableRegion attributes: name: name: name ifabsent: string(electrodes) range: string required: true equals_string: electrodes Units__waveform_mean: name: Units__waveform_mean description: Spike waveform mean for each spike unit. is_a: VectorData attributes: name: name: name ifabsent: string(waveform_mean) range: string required: true equals_string: waveform_mean sampling_rate: name: sampling_rate description: Sampling rate, in hertz. range: float32 unit: name: unit description: Unit of measurement. This value is fixed to 'volts'. range: text Units__waveform_sd: name: Units__waveform_sd description: Spike waveform standard deviation for each spike unit. is_a: VectorData attributes: name: name: name ifabsent: string(waveform_sd) range: string required: true equals_string: waveform_sd sampling_rate: name: sampling_rate description: Sampling rate, in hertz. range: float32 unit: name: unit description: Unit of measurement. This value is fixed to 'volts'. range: text Units__waveforms: name: Units__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. is_a: VectorData attributes: name: name: name ifabsent: string(waveforms) range: string required: true equals_string: waveforms sampling_rate: name: sampling_rate description: Sampling rate, in hertz. range: float32 unit: name: unit description: Unit of measurement. This value is fixed to 'volts'. range: text Units__waveforms_index: name: Units__waveforms_index description: Index into the waveforms dataset. One value for every spike event. See 'waveforms' for more detail. is_a: VectorIndex attributes: name: name: name ifabsent: string(waveforms_index) range: string required: true equals_string: waveforms_index Units__waveforms_index_index: name: Units__waveforms_index_index description: Index into the waveforms_index dataset. One value for every unit (row in the table). See 'waveforms' for more detail. is_a: VectorIndex attributes: name: name: name ifabsent: string(waveforms_index_index) range: string required: true equals_string: waveforms_index_index