nwb-linkml/nwb_linkml/schema/core.nwb.file.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

695 lines
29 KiB
YAML

name: core.nwb.file.include
id: core.nwb.file.include
imports:
- core.nwb.base
- hdmf-common.table
- core.nwb.device
- core.nwb.ecephys
- core.nwb.icephys
- core.nwb.ogen
- core.nwb.ophys
- core.nwb.epoch
- core.nwb.misc
- nwb.language
- core.nwb.file.include
- core.nwb.file
default_prefix: core.nwb.file.include/
classes:
NWBFile__file_create_date:
name: NWBFile__file_create_date
description: 'A record of the date the file was created and of subsequent modifications.
The date is stored in UTC with local timezone offset as ISO 8601 extended formatted
strings: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with
no timezone offset. Date accuracy is up to milliseconds. The file can be created
after the experiment was run, so this may differ from the experiment start time.
Each modification to the nwb file adds a new entry to the array.'
attributes:
file_create_date:
name: file_create_date
description: 'A record of the date the file was created and of subsequent
modifications. The date is stored in UTC with local timezone offset as ISO
8601 extended formatted strings: 2018-09-28T14:43:54.123+02:00. Dates stored
in UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds.
The file can be created after the experiment was run, so this may differ
from the experiment start time. Each modification to the nwb file adds a
new entry to the array.'
multivalued: true
range: isodatetime
required: true
NWBFile__acquisition:
name: NWBFile__acquisition
description: Data streams recorded from the system, including ephys, ophys, tracking,
etc. This group should be read-only after the experiment is completed and timestamps
are corrected to a common timebase. The data stored here may be links to raw
data stored in external NWB files. This will allow keeping bulky raw data out
of the file while preserving the option of keeping some/all in the file. Acquired
data includes tracking and experimental data streams (i.e., everything measured
from the system). If bulky data is stored in the /acquisition group, the data
can exist in a separate NWB file that is linked to by the file being used for
processing and analysis.
attributes:
NWBDataInterface:
name: NWBDataInterface
description: Acquired, raw data.
multivalued: true
range: NWBDataInterface
required: false
DynamicTable:
name: DynamicTable
description: Tabular data that is relevant to acquisition
multivalued: true
range: DynamicTable
required: false
NWBFile__analysis:
name: NWBFile__analysis
description: Lab-specific and custom scientific analysis of data. There is no
defined format for the content of this group - the format is up to the individual
user/lab. To facilitate sharing analysis data between labs, the contents here
should be stored in standard types (e.g., neurodata_types) and appropriately
documented. The file can store lab-specific and custom data analysis without
restriction on its form or schema, reducing data formatting restrictions on
end users. Such data should be placed in the analysis group. The analysis data
should be documented so that it could be shared with other labs.
attributes:
NWBContainer:
name: NWBContainer
description: Custom analysis results.
multivalued: true
range: NWBContainer
required: false
DynamicTable:
name: DynamicTable
description: Tabular data that is relevant to data stored in analysis
multivalued: true
range: DynamicTable
required: false
NWBFile__scratch:
name: NWBFile__scratch
description: A place to store one-off analysis results. Data placed here is not
intended for sharing. By placing data here, users acknowledge that there is
no guarantee that their data meets any standard.
attributes:
ScratchData:
name: ScratchData
description: Any one-off datasets
multivalued: true
range: ScratchData
required: false
NWBContainer:
name: NWBContainer
description: Any one-off containers
multivalued: true
range: NWBContainer
required: false
DynamicTable:
name: DynamicTable
description: Any one-off tables
multivalued: true
range: DynamicTable
required: false
NWBFile__processing:
name: NWBFile__processing
description: The home for ProcessingModules. These modules perform intermediate
analysis of data that is necessary to perform before scientific analysis. Examples
include spike clustering, extracting position from tracking data, stitching
together image slices. ProcessingModules can be large and express many data
sets from relatively complex analysis (e.g., spike detection and clustering)
or small, representing extraction of position information from tracking video,
or even binary lick/no-lick decisions. Common software tools (e.g., klustakwik,
MClust) are expected to read/write data here. 'Processing' refers to intermediate
analysis of the acquired data to make it more amenable to scientific analysis.
attributes:
ProcessingModule:
name: ProcessingModule
description: Intermediate analysis of acquired data.
multivalued: true
range: ProcessingModule
required: false
NWBFile__stimulus:
name: NWBFile__stimulus
description: Data pushed into the system (eg, video stimulus, sound, voltage,
etc) and secondary representations of that data (eg, measurements of something
used as a stimulus). This group should be made read-only after experiment complete
and timestamps are corrected to common timebase. Stores both presented stimuli
and stimulus templates, the latter in case the same stimulus is presented multiple
times, or is pulled from an external stimulus library. Stimuli are here defined
as any signal that is pushed into the system as part of the experiment (eg,
sound, video, voltage, etc). Many different experiments can use the same stimuli,
and stimuli can be re-used during an experiment. The stimulus group is organized
so that one version of template stimuli can be stored and these be used multiple
times. These templates can exist in the present file or can be linked to a remote
library file.
attributes:
presentation:
name: presentation
description: Stimuli presented during the experiment.
multivalued: false
range: NWBFile__stimulus__presentation
required: true
templates:
name: templates
description: Template stimuli. Timestamps in templates are based on stimulus
design and are relative to the beginning of the stimulus. When templates
are used, the stimulus instances must convert presentation times to the
experiment`s time reference frame.
multivalued: false
range: NWBFile__stimulus__templates
required: true
NWBFile__stimulus__presentation:
name: NWBFile__stimulus__presentation
description: Stimuli presented during the experiment.
attributes:
TimeSeries:
name: TimeSeries
description: TimeSeries objects containing data of presented stimuli.
multivalued: true
range: TimeSeries
required: false
NWBFile__stimulus__templates:
name: NWBFile__stimulus__templates
description: Template stimuli. Timestamps in templates are based on stimulus design
and are relative to the beginning of the stimulus. When templates are used,
the stimulus instances must convert presentation times to the experiment`s time
reference frame.
attributes:
TimeSeries:
name: TimeSeries
description: TimeSeries objects containing template data of presented stimuli.
multivalued: true
range: TimeSeries
required: false
Images:
name: Images
description: Images objects containing images of presented stimuli.
multivalued: true
range: Images
required: false
NWBFile__general:
name: NWBFile__general
description: Experimental metadata, including protocol, notes and description
of hardware device(s). The metadata stored in this section should be used to
describe the experiment. Metadata necessary for interpreting the data is stored
with the data. General experimental metadata, including animal strain, experimental
protocols, experimenter, devices, etc, are stored under 'general'. Core metadata
(e.g., that required to interpret data fields) is stored with the data itself,
and implicitly defined by the file specification (e.g., time is in seconds).
The strategy used here for storing non-core metadata is to use free-form text
fields, such as would appear in sentences or paragraphs from a Methods section.
Metadata fields are text to enable them to be more general, for example to represent
ranges instead of numerical values. Machine-readable metadata is stored as attributes
to these free-form datasets. All entries in the below table are to be included
when data is present. Unused groups (e.g., intracellular_ephys in an optophysiology
experiment) should not be created unless there is data to store within them.
attributes:
data_collection:
name: data_collection
description: Notes about data collection and analysis.
multivalued: false
range: text
required: false
experiment_description:
name: experiment_description
description: General description of the experiment.
multivalued: false
range: text
required: false
experimenter:
name: experimenter
description: Name of person(s) who performed the experiment. Can also specify
roles of different people involved.
multivalued: false
range: NWBFile__general__experimenter
required: false
institution:
name: institution
description: Institution(s) where experiment was performed.
multivalued: false
range: text
required: false
keywords:
name: keywords
description: Terms to search over.
multivalued: false
range: NWBFile__general__keywords
required: false
lab:
name: lab
description: Laboratory where experiment was performed.
multivalued: false
range: text
required: false
notes:
name: notes
description: Notes about the experiment.
multivalued: false
range: text
required: false
pharmacology:
name: pharmacology
description: Description of drugs used, including how and when they were administered.
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
multivalued: false
range: text
required: false
protocol:
name: protocol
description: Experimental protocol, if applicable. e.g., include IACUC protocol
number.
multivalued: false
range: text
required: false
related_publications:
name: related_publications
description: Publication information. PMID, DOI, URL, etc.
multivalued: false
range: NWBFile__general__related_publications
required: false
session_id:
name: session_id
description: Lab-specific ID for the session.
multivalued: false
range: text
required: false
slices:
name: slices
description: Description of slices, including information about preparation
thickness, orientation, temperature, and bath solution.
multivalued: false
range: text
required: false
source_script:
name: source_script
description: Script file or link to public source code used to create this
NWB file.
multivalued: false
range: NWBFile__general__source_script
required: false
stimulus:
name: stimulus
description: Notes about stimuli, such as how and where they were presented.
multivalued: false
range: text
required: false
surgery:
name: surgery
description: Narrative description about surgery/surgeries, including date(s)
and who performed surgery.
multivalued: false
range: text
required: false
virus:
name: virus
description: Information about virus(es) used in experiments, including virus
ID, source, date made, injection location, volume, etc.
multivalued: false
range: text
required: false
LabMetaData:
name: LabMetaData
description: Place-holder than can be extended so that lab-specific meta-data
can be placed in /general.
multivalued: true
range: LabMetaData
required: false
devices:
name: devices
description: Description of hardware devices used during experiment, e.g.,
monitors, ADC boards, microscopes, etc.
multivalued: false
range: NWBFile__general__devices
required: false
subject:
name: subject
description: Information about the animal or person from which the data was
measured.
multivalued: false
range: NWBFile__general__subject
required: false
extracellular_ephys:
name: extracellular_ephys
description: Metadata related to extracellular electrophysiology.
multivalued: false
range: NWBFile__general__extracellular_ephys
required: false
intracellular_ephys:
name: intracellular_ephys
description: Metadata related to intracellular electrophysiology.
multivalued: false
range: NWBFile__general__intracellular_ephys
required: false
optogenetics:
name: optogenetics
description: Metadata describing optogenetic stimuluation.
multivalued: false
range: NWBFile__general__optogenetics
required: false
optophysiology:
name: optophysiology
description: Metadata related to optophysiology.
multivalued: false
range: NWBFile__general__optophysiology
required: false
NWBFile__general__experimenter:
name: NWBFile__general__experimenter
description: Name of person(s) who performed the experiment. Can also specify
roles of different people involved.
attributes:
experimenter:
name: experimenter
description: Name of person(s) who performed the experiment. Can also specify
roles of different people involved.
multivalued: true
range: text
required: false
NWBFile__general__keywords:
name: NWBFile__general__keywords
description: Terms to search over.
attributes:
keywords:
name: keywords
description: Terms to search over.
multivalued: true
range: text
required: false
NWBFile__general__related_publications:
name: NWBFile__general__related_publications
description: Publication information. PMID, DOI, URL, etc.
attributes:
related_publications:
name: related_publications
description: Publication information. PMID, DOI, URL, etc.
multivalued: true
range: text
required: false
NWBFile__general__source_script:
name: NWBFile__general__source_script
description: Script file or link to public source code used to create this NWB
file.
attributes:
file_name:
name: file_name
description: Name of script file.
range: text
NWBFile__general__devices:
name: NWBFile__general__devices
description: Description of hardware devices used during experiment, e.g., monitors,
ADC boards, microscopes, etc.
attributes:
Device:
name: Device
description: Data acquisition devices.
multivalued: true
range: Device
required: false
NWBFile__general__subject:
name: NWBFile__general__subject
description: Information about the animal or person from which the data was measured.
is_a: Subject
NWBFile__general__extracellular_ephys:
name: NWBFile__general__extracellular_ephys
description: Metadata related to extracellular electrophysiology.
attributes:
ElectrodeGroup:
name: ElectrodeGroup
description: Physical group of electrodes.
multivalued: true
range: ElectrodeGroup
required: false
electrodes:
name: electrodes
description: A table of all electrodes (i.e. channels) used for recording.
multivalued: false
range: NWBFile__general__extracellular_ephys__electrodes
required: false
NWBFile__general__extracellular_ephys__electrodes:
name: NWBFile__general__extracellular_ephys__electrodes
description: A table of all electrodes (i.e. channels) used for recording.
is_a: DynamicTable
attributes:
x:
name: x
description: x coordinate of the channel location in the brain (+x is posterior).
multivalued: true
range: float32
y:
name: y
description: y coordinate of the channel location in the brain (+y is inferior).
multivalued: true
range: float32
z:
name: z
description: z coordinate of the channel location in the brain (+z is right).
multivalued: true
range: float32
imp:
name: imp
description: Impedance of the channel, in ohms.
multivalued: true
range: float32
location:
name: location
description: Location of the electrode (channel). Specify the area, layer,
comments on estimation of area/layer, stereotaxic coordinates if in vivo,
etc. Use standard atlas names for anatomical regions when possible.
multivalued: true
range: text
filtering:
name: filtering
description: Description of hardware filtering, including the filter name
and frequency cutoffs.
multivalued: true
range: text
group:
name: group
description: Reference to the ElectrodeGroup this electrode is a part of.
multivalued: true
range: ElectrodeGroup
group_name:
name: group_name
description: Name of the ElectrodeGroup this electrode is a part of.
multivalued: true
range: text
rel_x:
name: rel_x
description: x coordinate in electrode group
multivalued: true
range: float32
rel_y:
name: rel_y
description: y coordinate in electrode group
multivalued: true
range: float32
rel_z:
name: rel_z
description: z coordinate in electrode group
multivalued: true
range: float32
reference:
name: reference
description: Description of the reference electrode and/or reference scheme
used for this electrode, e.g., "stainless steel skull screw" or "online
common average referencing".
multivalued: true
range: text
NWBFile__general__intracellular_ephys:
name: NWBFile__general__intracellular_ephys
description: Metadata related to intracellular electrophysiology.
attributes:
filtering:
name: filtering
description: '[DEPRECATED] Use IntracellularElectrode.filtering instead. Description
of filtering used. Includes filtering type and parameters, frequency fall-off,
etc. If this changes between TimeSeries, filter description should be stored
as a text attribute for each TimeSeries.'
multivalued: false
range: text
required: false
IntracellularElectrode:
name: IntracellularElectrode
description: An intracellular electrode.
multivalued: true
range: IntracellularElectrode
required: false
sweep_table:
name: sweep_table
description: '[DEPRECATED] Table used to group different PatchClampSeries.
SweepTable is being replaced by IntracellularRecordingsTable and SimultaneousRecordingsTable
tables. Additional SequentialRecordingsTable, RepetitionsTable and ExperimentalConditions
tables provide enhanced support for experiment metadata.'
multivalued: false
range: NWBFile__general__intracellular_ephys__sweep_table
required: false
intracellular_recordings:
name: intracellular_recordings
description: A table to group together a stimulus and response from a single
electrode and a single simultaneous recording. Each row in the table represents
a single recording consisting typically of a stimulus and a corresponding
response. In some cases, however, only a stimulus or a response are recorded
as as part of an experiment. In this case both, the stimulus and response
will point to the same TimeSeries while the idx_start and count of the invalid
column will be set to -1, thus, indicating that no values have been recorded
for the stimulus or response, respectively. Note, a recording MUST contain
at least a stimulus or a response. Typically the stimulus and response are
PatchClampSeries. However, the use of AD/DA channels that are not associated
to an electrode is also common in intracellular electrophysiology, in which
case other TimeSeries may be used.
multivalued: false
range: NWBFile__general__intracellular_ephys__intracellular_recordings
required: false
simultaneous_recordings:
name: simultaneous_recordings
description: A table for grouping different intracellular recordings from
the IntracellularRecordingsTable table together that were recorded simultaneously
from different electrodes
multivalued: false
range: NWBFile__general__intracellular_ephys__simultaneous_recordings
required: false
sequential_recordings:
name: sequential_recordings
description: A table for grouping different sequential recordings from the
SimultaneousRecordingsTable table together. This is typically used to group
together sequential recordings where the a sequence of stimuli of the same
type with varying parameters have been presented in a sequence.
multivalued: false
range: NWBFile__general__intracellular_ephys__sequential_recordings
required: false
repetitions:
name: repetitions
description: A table for grouping different sequential intracellular recordings
together. With each SequentialRecording typically representing a particular
type of stimulus, the RepetitionsTable table is typically used to group
sets of stimuli applied in sequence.
multivalued: false
range: NWBFile__general__intracellular_ephys__repetitions
required: false
experimental_conditions:
name: experimental_conditions
description: A table for grouping different intracellular recording repetitions
together that belong to the same experimental experimental_conditions.
multivalued: false
range: NWBFile__general__intracellular_ephys__experimental_conditions
required: false
NWBFile__general__intracellular_ephys__sweep_table:
name: NWBFile__general__intracellular_ephys__sweep_table
description: '[DEPRECATED] Table used to group different PatchClampSeries. SweepTable
is being replaced by IntracellularRecordingsTable and SimultaneousRecordingsTable
tables. Additional SequentialRecordingsTable, RepetitionsTable and ExperimentalConditions
tables provide enhanced support for experiment metadata.'
is_a: SweepTable
NWBFile__general__intracellular_ephys__intracellular_recordings:
name: NWBFile__general__intracellular_ephys__intracellular_recordings
description: A table to group together a stimulus and response from a single electrode
and a single simultaneous recording. Each row in the table represents a single
recording consisting typically of a stimulus and a corresponding response. In
some cases, however, only a stimulus or a response are recorded as as part of
an experiment. In this case both, the stimulus and response will point to the
same TimeSeries while the idx_start and count of the invalid column will be
set to -1, thus, indicating that no values have been recorded for the stimulus
or response, respectively. Note, a recording MUST contain at least a stimulus
or a response. Typically the stimulus and response are PatchClampSeries. However,
the use of AD/DA channels that are not associated to an electrode is also common
in intracellular electrophysiology, in which case other TimeSeries may be used.
is_a: IntracellularRecordingsTable
NWBFile__general__intracellular_ephys__simultaneous_recordings:
name: NWBFile__general__intracellular_ephys__simultaneous_recordings
description: A table for grouping different intracellular recordings from the
IntracellularRecordingsTable table together that were recorded simultaneously
from different electrodes
is_a: SimultaneousRecordingsTable
NWBFile__general__intracellular_ephys__sequential_recordings:
name: NWBFile__general__intracellular_ephys__sequential_recordings
description: A table for grouping different sequential recordings from the SimultaneousRecordingsTable
table together. This is typically used to group together sequential recordings
where the a sequence of stimuli of the same type with varying parameters have
been presented in a sequence.
is_a: SequentialRecordingsTable
NWBFile__general__intracellular_ephys__repetitions:
name: NWBFile__general__intracellular_ephys__repetitions
description: A table for grouping different sequential intracellular recordings
together. With each SequentialRecording typically representing a particular
type of stimulus, the RepetitionsTable table is typically used to group sets
of stimuli applied in sequence.
is_a: RepetitionsTable
NWBFile__general__intracellular_ephys__experimental_conditions:
name: NWBFile__general__intracellular_ephys__experimental_conditions
description: A table for grouping different intracellular recording repetitions
together that belong to the same experimental experimental_conditions.
is_a: ExperimentalConditionsTable
NWBFile__general__optogenetics:
name: NWBFile__general__optogenetics
description: Metadata describing optogenetic stimuluation.
attributes:
OptogeneticStimulusSite:
name: OptogeneticStimulusSite
description: An optogenetic stimulation site.
multivalued: true
range: OptogeneticStimulusSite
required: false
NWBFile__general__optophysiology:
name: NWBFile__general__optophysiology
description: Metadata related to optophysiology.
attributes:
ImagingPlane:
name: ImagingPlane
description: An imaging plane.
multivalued: true
range: ImagingPlane
required: false
NWBFile__intervals:
name: NWBFile__intervals
description: Experimental intervals, whether that be logically distinct sub-experiments
having a particular scientific goal, trials (see trials subgroup) during an
experiment, or epochs (see epochs subgroup) deriving from analysis of data.
attributes:
epochs:
name: epochs
description: Divisions in time marking experimental stages or sub-divisions
of a single recording session.
multivalued: false
range: NWBFile__intervals__epochs
required: false
trials:
name: trials
description: Repeated experimental events that have a logical grouping.
multivalued: false
range: NWBFile__intervals__trials
required: false
invalid_times:
name: invalid_times
description: Time intervals that should be removed from analysis.
multivalued: false
range: NWBFile__intervals__invalid_times
required: false
TimeIntervals:
name: TimeIntervals
description: Optional additional table(s) for describing other experimental
time intervals.
multivalued: true
range: TimeIntervals
required: false
NWBFile__intervals__epochs:
name: NWBFile__intervals__epochs
description: Divisions in time marking experimental stages or sub-divisions of
a single recording session.
is_a: TimeIntervals
NWBFile__intervals__trials:
name: NWBFile__intervals__trials
description: Repeated experimental events that have a logical grouping.
is_a: TimeIntervals
NWBFile__intervals__invalid_times:
name: NWBFile__intervals__invalid_times
description: Time intervals that should be removed from analysis.
is_a: TimeIntervals
NWBFile__units:
name: NWBFile__units
description: Data about sorted spike units.
is_a: Units
Subject__age:
name: Subject__age
description: Age of subject. Can be supplied instead of 'date_of_birth'.
attributes:
reference:
name: reference
description: Age is with reference to this event. Can be 'birth' or 'gestational'.
If reference is omitted, 'birth' is implied.
range: text