nwb-linkml/nwb_linkml/schema/core.nwb.ecephys.include.yaml
sneakers-the-rat be21325123 Cleaner code generation, npytyping type hints for arrays
- split off generated subclasses into "include" files, not sure if that's good, but in any case we have them separable now.
- more work on cleanly un-nesting scalar and 1D-vector data into attributes and lists, respectively
- brought the pydantic generator in-repo to do a bunch of overrides
2023-08-28 22:16:58 -07:00

283 lines
10 KiB
YAML

name: core.nwb.ecephys.include
id: core.nwb.ecephys.include
imports:
- core.nwb.base
- hdmf-common.table
- core.nwb.device
- nwb.language
- core.nwb.ecephys.include
- core.nwb.ecephys
default_prefix: core.nwb.ecephys.include/
classes:
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
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: true
range: float32
required: false
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
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: true
range: float64
required: true
FeatureExtraction__description:
name: FeatureExtraction__description
description: Description of features (eg, ''PC1'') for each of the extracted features.
attributes:
description:
name: description
description: Description of features (eg, ''PC1'') for each of the extracted
features.
multivalued: true
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:
times:
name: times
description: Times of events that features correspond to (can be a link).
multivalued: true
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__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:
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: true
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
times:
name: times
description: Timestamps of events, in seconds.
multivalued: true
range: float64
required: true
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__num:
name: Clustering__num
description: Cluster number of each event
attributes:
num:
name: num
description: Cluster number of each event
multivalued: true
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:
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: true
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:
times:
name: times
description: Times of clustered events, in seconds. This may be a link to
times field in associated FeatureExtraction module.
multivalued: true
range: float64
required: true