nwb-linkml/nwb_linkml/schema/core.nwb.file.yaml

665 lines
27 KiB
YAML

name: core.nwb.file
id: core.nwb.file
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
default_prefix: core.nwb.file/
classes:
ScratchData:
name: ScratchData
description: Any one-off datasets
is_a: NWBData
attributes:
name:
name: name
range: string
required: true
notes:
name: notes
description: Any notes the user has about the dataset being stored
range: text
tree_root: true
NWBFile:
name: NWBFile
description: An NWB file storing cellular-based neurophysiology data from a single
experimental session.
is_a: NWBContainer
attributes:
name:
name: name
ifabsent: string(root)
range: string
required: true
equals_string: root
nwb_version:
name: nwb_version
description: File version string. Use semantic versioning, e.g. 1.2.1. This
will be the name of the format with trailing major, minor and patch numbers.
range: text
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
identifier:
name: identifier
description: A unique text identifier for the file. For example, concatenated
lab name, file creation date/time and experimentalist, or a hash of these
and/or other values. The goal is that the string should be unique to all
other files.
multivalued: false
range: text
required: true
session_description:
name: session_description
description: A description of the experimental session and data in the file.
multivalued: false
range: text
required: true
session_start_time:
name: session_start_time
description: 'Date and time of the experiment/session start. The date is stored
in UTC with local timezone offset as ISO 8601 extended formatted string:
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.'
multivalued: false
range: isodatetime
required: true
timestamps_reference_time:
name: timestamps_reference_time
description: 'Date and time corresponding to time zero of all timestamps.
The date is stored in UTC with local timezone offset as ISO 8601 extended
formatted string: 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. All
times stored in the file use this time as reference (i.e., time zero).'
multivalued: false
range: isodatetime
required: true
acquisition:
name: 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.
multivalued: true
any_of:
- range: NWBDataInterface
- range: DynamicTable
analysis:
name: 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.
multivalued: true
any_of:
- range: NWBContainer
- range: DynamicTable
scratch:
name: 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.
multivalued: true
any_of:
- range: NWBContainer
- range: DynamicTable
processing:
name: 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.
multivalued: true
any_of:
- range: ProcessingModule
stimulus:
name: 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.
multivalued: false
range: NWBFile__stimulus
required: true
general:
name: 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.
multivalued: false
range: NWBFile__general
required: true
intervals:
name: 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.
multivalued: false
range: NWBFile__intervals
required: false
units:
name: units
description: Data about sorted spike units.
multivalued: false
range: Units
required: false
tree_root: true
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:
name:
name: name
ifabsent: string(stimulus)
range: string
required: true
equals_string: stimulus
presentation:
name: presentation
description: Stimuli presented during the experiment.
multivalued: true
any_of:
- range: TimeSeries
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: true
any_of:
- range: TimeSeries
- range: Images
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:
name:
name: name
ifabsent: string(general)
range: string
required: true
equals_string: general
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: true
range: text
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: true
range: text
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: true
range: text
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
lab_meta_data:
name: lab_meta_data
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: true
any_of:
- range: Device
subject:
name: subject
description: Information about the animal or person from which the data was
measured.
multivalued: false
range: 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: true
any_of:
- range: OptogeneticStimulusSite
optophysiology:
name: optophysiology
description: Metadata related to optophysiology.
multivalued: true
any_of:
- range: ImagingPlane
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:
name:
name: name
ifabsent: string(source_script)
range: string
required: true
equals_string: source_script
file_name:
name: file_name
description: Name of script file.
range: text
value:
name: value
range: text
required: true
NWBFile__general__extracellular_ephys:
name: NWBFile__general__extracellular_ephys
description: Metadata related to extracellular electrophysiology.
attributes:
name:
name: name
ifabsent: string(extracellular_ephys)
range: string
required: true
equals_string: extracellular_ephys
electrode_group:
name: electrode_group
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: DynamicTable
required: false
NWBFile__general__intracellular_ephys:
name: NWBFile__general__intracellular_ephys
description: Metadata related to intracellular electrophysiology.
attributes:
name:
name: name
ifabsent: string(intracellular_ephys)
range: string
required: true
equals_string: intracellular_ephys
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
intracellular_electrode:
name: intracellular_electrode
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: SweepTable
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: IntracellularRecordingsTable
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: SimultaneousRecordingsTable
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: SequentialRecordingsTable
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: RepetitionsTable
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: ExperimentalConditionsTable
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:
name:
name: name
ifabsent: string(intervals)
range: string
required: true
equals_string: intervals
epochs:
name: epochs
description: Divisions in time marking experimental stages or sub-divisions
of a single recording session.
multivalued: false
range: TimeIntervals
required: false
trials:
name: trials
description: Repeated experimental events that have a logical grouping.
multivalued: false
range: TimeIntervals
required: false
invalid_times:
name: invalid_times
description: Time intervals that should be removed from analysis.
multivalued: false
range: TimeIntervals
required: false
time_intervals:
name: time_intervals
description: Optional additional table(s) for describing other experimental
time intervals.
multivalued: true
range: TimeIntervals
required: false
LabMetaData:
name: LabMetaData
description: Lab-specific meta-data.
is_a: NWBContainer
attributes:
name:
name: name
range: string
required: true
tree_root: true
Subject:
name: Subject
description: Information about the animal or person from which the data was measured.
is_a: NWBContainer
attributes:
name:
name: name
range: string
required: true
age:
name: age
description: Age of subject. Can be supplied instead of 'date_of_birth'.
multivalued: false
range: Subject__age
required: false
date_of_birth:
name: date_of_birth
description: Date of birth of subject. Can be supplied instead of 'age'.
multivalued: false
range: isodatetime
required: false
description:
name: description
description: Description of subject and where subject came from (e.g., breeder,
if animal).
multivalued: false
range: text
required: false
genotype:
name: genotype
description: Genetic strain. If absent, assume Wild Type (WT).
multivalued: false
range: text
required: false
sex:
name: sex
description: Gender of subject.
multivalued: false
range: text
required: false
species:
name: species
description: Species of subject.
multivalued: false
range: text
required: false
strain:
name: strain
description: Strain of subject.
multivalued: false
range: text
required: false
subject_id:
name: subject_id
description: ID of animal/person used/participating in experiment (lab convention).
multivalued: false
range: text
required: false
weight:
name: weight
description: Weight at time of experiment, at time of surgery and at other
important times.
multivalued: false
range: text
required: false
tree_root: true
Subject__age:
name: Subject__age
description: Age of subject. Can be supplied instead of 'date_of_birth'.
attributes:
name:
name: name
ifabsent: string(age)
range: string
required: true
equals_string: age
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
value:
name: value
range: text
required: true