nwb-linkml/nwb_linkml/schema/core.nwb.ecephys.yaml
sneakers-the-rat 4faaa8efe8 I believe that's a full translation
or at least all the semantics are present. it's not pretty by any stretch of the imagination
2023-08-25 00:22:47 -07:00

588 lines
22 KiB
YAML

name: core.nwb.ecephys
id: core.nwb.ecephys
imports:
- core.nwb.base
- hdmf-common.table
- nwb.language
default_prefix: core.nwb.ecephys/
classes:
ElectricalSeries:
name: ElectricalSeries
description: 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.
is_a: TimeSeries
attributes:
filtering:
name: filtering
description: 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.
range: text
data:
name: data
description: Recorded voltage data.
multivalued: false
range: ElectricalSeries_data
required: true
electrodes:
name: electrodes
description: DynamicTableRegion pointer to the electrodes that this time series
was generated from.
multivalued: false
range: ElectricalSeries_electrodes
required: true
channel_conversion:
name: channel_conversion
description: 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.
multivalued: false
range: ElectricalSeries_channel_conversion
required: false
ElectricalSeries_data:
name: ElectricalSeries_data
description: Recorded voltage data.
attributes:
unit:
name: unit
description: 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'.
range: text
array:
name: array
range: ElectricalSeries_data_Array
ElectricalSeries_data_Array:
name: ElectricalSeries_data_Array
is_a: Arraylike
attributes:
num_times:
name: num_times
range: numeric
required: true
num_channels:
name: num_channels
range: numeric
required: false
num_samples:
name: num_samples
range: numeric
required: false
ElectricalSeries_electrodes:
name: ElectricalSeries_electrodes
description: DynamicTableRegion pointer to the electrodes that this time series
was generated from.
is_a: DynamicTableRegion
ElectricalSeries_channel_conversion:
name: ElectricalSeries_channel_conversion
description: 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.
attributes:
axis:
name: axis
description: The zero-indexed axis of the 'data' dataset that the channel-specific
conversion factor corresponds to. This value is fixed to 1.
range: int32
array:
name: array
range: ElectricalSeries_channel_conversion_Array
ElectricalSeries_channel_conversion_Array:
name: ElectricalSeries_channel_conversion_Array
is_a: Arraylike
attributes:
num_channels:
name: num_channels
range: float32
required: true
SpikeEventSeries:
name: SpikeEventSeries
description: '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).'
is_a: ElectricalSeries
attributes:
data:
name: data
description: Spike waveforms.
multivalued: false
range: SpikeEventSeries_data
required: true
timestamps:
name: timestamps
description: 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.
multivalued: false
range: SpikeEventSeries_timestamps
required: true
SpikeEventSeries_data:
name: SpikeEventSeries_data
description: Spike waveforms.
attributes:
unit:
name: unit
description: Unit of measurement for waveforms, which is fixed to 'volts'.
range: text
array:
name: array
range: SpikeEventSeries_data_Array
SpikeEventSeries_data_Array:
name: SpikeEventSeries_data_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: numeric
required: true
num_samples:
name: num_samples
range: numeric
required: true
num_channels:
name: num_channels
range: numeric
required: false
SpikeEventSeries_timestamps:
name: SpikeEventSeries_timestamps
description: 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:
interval:
name: interval
description: Value is '1'
range: int32
unit:
name: unit
description: Unit of measurement for timestamps, which is fixed to 'seconds'.
range: text
array:
name: array
range: SpikeEventSeries_timestamps_Array
SpikeEventSeries_timestamps_Array:
name: SpikeEventSeries_timestamps_Array
is_a: Arraylike
attributes:
num_times:
name: num_times
range: float64
required: true
FeatureExtraction:
name: FeatureExtraction
description: Features, such as PC1 and PC2, that are extracted from signals stored
in a SpikeEventSeries or other source.
is_a: NWBDataInterface
attributes:
description:
name: description
description: Description of features (eg, ''PC1'') for each of the extracted
features.
multivalued: false
range: FeatureExtraction_description
required: true
features:
name: features
description: Multi-dimensional array of features extracted from each event.
multivalued: false
range: FeatureExtraction_features
required: true
times:
name: times
description: Times of events that features correspond to (can be a link).
multivalued: false
range: FeatureExtraction_times
required: true
electrodes:
name: electrodes
description: DynamicTableRegion pointer to the electrodes that this time series
was generated from.
multivalued: false
range: FeatureExtraction_electrodes
required: true
FeatureExtraction_description:
name: FeatureExtraction_description
description: Description of features (eg, ''PC1'') for each of the extracted features.
attributes:
array:
name: array
range: FeatureExtraction_description_Array
FeatureExtraction_description_Array:
name: FeatureExtraction_description_Array
is_a: Arraylike
attributes:
num_features:
name: num_features
range: text
required: true
FeatureExtraction_features:
name: FeatureExtraction_features
description: Multi-dimensional array of features extracted from each event.
attributes:
array:
name: array
range: FeatureExtraction_features_Array
FeatureExtraction_features_Array:
name: FeatureExtraction_features_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: float32
required: false
num_channels:
name: num_channels
range: float32
required: false
num_features:
name: num_features
range: float32
required: false
FeatureExtraction_times:
name: FeatureExtraction_times
description: Times of events that features correspond to (can be a link).
attributes:
array:
name: array
range: FeatureExtraction_times_Array
FeatureExtraction_times_Array:
name: FeatureExtraction_times_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: float64
required: true
FeatureExtraction_electrodes:
name: FeatureExtraction_electrodes
description: DynamicTableRegion pointer to the electrodes that this time series
was generated from.
is_a: DynamicTableRegion
EventDetection:
name: EventDetection
description: Detected spike events from voltage trace(s).
is_a: NWBDataInterface
attributes:
detection_method:
name: detection_method
description: Description of how events were detected, such as voltage threshold,
or dV/dT threshold, as well as relevant values.
multivalued: false
range: EventDetection_detection_method
required: true
source_idx:
name: source_idx
description: 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.
multivalued: false
range: EventDetection_source_idx
required: true
times:
name: times
description: Timestamps of events, in seconds.
multivalued: false
range: EventDetection_times
required: true
EventDetection_detection_method:
name: EventDetection_detection_method
description: Description of how events were detected, such as voltage threshold,
or dV/dT threshold, as well as relevant values.
EventDetection_source_idx:
name: EventDetection_source_idx
description: 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.
attributes:
array:
name: array
range: EventDetection_source_idx_Array
EventDetection_source_idx_Array:
name: EventDetection_source_idx_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: int32
required: true
EventDetection_times:
name: EventDetection_times
description: Timestamps of events, in seconds.
attributes:
unit:
name: unit
description: Unit of measurement for event times, which is fixed to 'seconds'.
range: text
array:
name: array
range: EventDetection_times_Array
EventDetection_times_Array:
name: EventDetection_times_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: float64
required: true
EventWaveform:
name: EventWaveform
description: 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.
is_a: NWBDataInterface
attributes:
SpikeEventSeries:
name: SpikeEventSeries
description: SpikeEventSeries object(s) containing detected spike event waveforms.
multivalued: true
range: SpikeEventSeries
required: false
FilteredEphys:
name: FilteredEphys
description: 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.
is_a: NWBDataInterface
attributes:
ElectricalSeries:
name: ElectricalSeries
description: ElectricalSeries object(s) containing filtered electrophysiology
data.
multivalued: true
range: ElectricalSeries
required: true
LFP:
name: LFP
description: 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.
is_a: NWBDataInterface
attributes:
ElectricalSeries:
name: ElectricalSeries
description: ElectricalSeries object(s) containing LFP data for one or more
channels.
multivalued: true
range: ElectricalSeries
required: true
ElectrodeGroup:
name: ElectrodeGroup
description: A physical grouping of electrodes, e.g. a shank of an array.
is_a: NWBContainer
attributes:
description:
name: description
description: Description of this electrode group.
range: text
location:
name: location
description: Location of electrode group. Specify the area, layer, comments
on estimation of area/layer, etc. Use standard atlas names for anatomical
regions when possible.
range: text
position:
name: position
description: stereotaxic or common framework coordinates
multivalued: false
range: ElectrodeGroup_position
required: false
ElectrodeGroup_position:
name: ElectrodeGroup_position
description: stereotaxic or common framework coordinates
ClusterWaveforms:
name: ClusterWaveforms
description: 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.
is_a: NWBDataInterface
attributes:
waveform_filtering:
name: waveform_filtering
description: Filtering applied to data before generating mean/sd
multivalued: false
range: ClusterWaveforms_waveform_filtering
required: true
waveform_mean:
name: waveform_mean
description: 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)
multivalued: false
range: ClusterWaveforms_waveform_mean
required: true
waveform_sd:
name: waveform_sd
description: Stdev of waveforms for each cluster, using the same indices as
in mean
multivalued: false
range: ClusterWaveforms_waveform_sd
required: true
ClusterWaveforms_waveform_filtering:
name: ClusterWaveforms_waveform_filtering
description: Filtering applied to data before generating mean/sd
ClusterWaveforms_waveform_mean:
name: ClusterWaveforms_waveform_mean
description: 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)
attributes:
array:
name: array
range: ClusterWaveforms_waveform_mean_Array
ClusterWaveforms_waveform_mean_Array:
name: ClusterWaveforms_waveform_mean_Array
is_a: Arraylike
attributes:
num_clusters:
name: num_clusters
range: float32
required: false
num_samples:
name: num_samples
range: float32
required: false
ClusterWaveforms_waveform_sd:
name: ClusterWaveforms_waveform_sd
description: Stdev of waveforms for each cluster, using the same indices as in
mean
attributes:
array:
name: array
range: ClusterWaveforms_waveform_sd_Array
ClusterWaveforms_waveform_sd_Array:
name: ClusterWaveforms_waveform_sd_Array
is_a: Arraylike
attributes:
num_clusters:
name: num_clusters
range: float32
required: false
num_samples:
name: num_samples
range: float32
required: false
Clustering:
name: Clustering
description: DEPRECATED Clustered spike data, whether from automatic clustering
tools (e.g., klustakwik) or as a result of manual sorting.
is_a: NWBDataInterface
attributes:
description:
name: description
description: Description of clusters or clustering, (e.g. cluster 0 is noise,
clusters curated using Klusters, etc)
multivalued: false
range: Clustering_description
required: true
num:
name: num
description: Cluster number of each event
multivalued: false
range: Clustering_num
required: true
peak_over_rms:
name: peak_over_rms
description: Maximum ratio of waveform peak to RMS on any channel in the cluster
(provides a basic clustering metric).
multivalued: false
range: Clustering_peak_over_rms
required: true
times:
name: times
description: Times of clustered events, in seconds. This may be a link to
times field in associated FeatureExtraction module.
multivalued: false
range: Clustering_times
required: true
Clustering_description:
name: Clustering_description
description: Description of clusters or clustering, (e.g. cluster 0 is noise,
clusters curated using Klusters, etc)
Clustering_num:
name: Clustering_num
description: Cluster number of each event
attributes:
array:
name: array
range: Clustering_num_Array
Clustering_num_Array:
name: Clustering_num_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: int32
required: true
Clustering_peak_over_rms:
name: Clustering_peak_over_rms
description: Maximum ratio of waveform peak to RMS on any channel in the cluster
(provides a basic clustering metric).
attributes:
array:
name: array
range: Clustering_peak_over_rms_Array
Clustering_peak_over_rms_Array:
name: Clustering_peak_over_rms_Array
is_a: Arraylike
attributes:
num_clusters:
name: num_clusters
range: float32
required: true
Clustering_times:
name: Clustering_times
description: Times of clustered events, in seconds. This may be a link to times
field in associated FeatureExtraction module.
attributes:
array:
name: array
range: Clustering_times_Array
Clustering_times_Array:
name: Clustering_times_Array
is_a: Arraylike
attributes:
num_events:
name: num_events
range: float64
required: true