mirror of
https://github.com/p2p-ld/nwb-linkml.git
synced 2024-11-10 00:34:29 +00:00
sneakers-the-rat
4faaa8efe8
or at least all the semantics are present. it's not pretty by any stretch of the imagination
588 lines
22 KiB
YAML
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
|