nwb-linkml/nwb_schema_language/src/data/tests/nwb.file.yaml

502 lines
21 KiB
YAML

groups:
- neurodata_type_def: NWBFile
neurodata_type_inc: NWBContainer
name: root
doc: An NWB file storing cellular-based neurophysiology data from a single
experimental session.
attributes:
- name: nwb_version
dtype: text
value: "2.6.0"
doc: 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.
datasets:
- name: file_create_date
dtype: isodatetime
dims:
- num_modifications
shape:
- null
doc: '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.'
- name: identifier
dtype: text
doc: 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.
- name: session_description
dtype: text
doc: A description of the experimental session and data in the file.
- name: session_start_time
dtype: isodatetime
doc: '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.'
- name: timestamps_reference_time
dtype: isodatetime
doc: '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).'
groups:
- name: acquisition
doc: 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.
groups:
- neurodata_type_inc: NWBDataInterface
doc: Acquired, raw data.
quantity: '*'
- neurodata_type_inc: DynamicTable
doc: Tabular data that is relevant to acquisition
quantity: '*'
- name: analysis
doc: 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.
groups:
- neurodata_type_inc: NWBContainer
doc: Custom analysis results.
quantity: '*'
- neurodata_type_inc: DynamicTable
doc: Tabular data that is relevant to data stored in analysis
quantity: '*'
- name: scratch
doc: '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.'
quantity: '?'
groups:
- neurodata_type_inc: NWBContainer
doc: Any one-off containers
quantity: '*'
- neurodata_type_inc: DynamicTable
doc: Any one-off tables
quantity: '*'
datasets:
- neurodata_type_inc: ScratchData
doc: Any one-off datasets
quantity: '*'
- name: processing
doc: "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."
groups:
- neurodata_type_inc: ProcessingModule
doc: Intermediate analysis of acquired data.
quantity: '*'
- name: stimulus
doc: '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.'
groups:
- name: presentation
doc: Stimuli presented during the experiment.
groups:
- neurodata_type_inc: TimeSeries
doc: TimeSeries objects containing data of presented stimuli.
quantity: '*'
- name: templates
doc: '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.'
groups:
- neurodata_type_inc: TimeSeries
doc: TimeSeries objects containing template data of presented stimuli.
quantity: '*'
- neurodata_type_inc: Images
doc: Images objects containing images of presented stimuli.
quantity: '*'
- name: general
doc: "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."
datasets:
- name: data_collection
dtype: text
doc: Notes about data collection and analysis.
quantity: '?'
- name: experiment_description
dtype: text
doc: General description of the experiment.
quantity: '?'
- name: experimenter
dtype: text
doc: Name of person(s) who performed the experiment. Can also specify roles
of different people involved.
quantity: '?'
dims:
- num_experimenters
shape:
- null
- name: institution
dtype: text
doc: Institution(s) where experiment was performed.
quantity: '?'
- name: keywords
dtype: text
dims:
- num_keywords
shape:
- null
doc: Terms to search over.
quantity: '?'
- name: lab
dtype: text
doc: Laboratory where experiment was performed.
quantity: '?'
- name: notes
dtype: text
doc: Notes about the experiment.
quantity: '?'
- name: pharmacology
dtype: text
doc: Description of drugs used, including how and when they were administered.
Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
quantity: '?'
- name: protocol
dtype: text
doc: Experimental protocol, if applicable. e.g., include IACUC protocol number.
quantity: '?'
- name: related_publications
dtype: text
doc: Publication information. PMID, DOI, URL, etc.
dims:
- num_publications
shape:
- null
quantity: '?'
- name: session_id
dtype: text
doc: Lab-specific ID for the session.
quantity: '?'
- name: slices
dtype: text
doc: Description of slices, including information about preparation thickness,
orientation, temperature, and bath solution.
quantity: '?'
- name: source_script
dtype: text
doc: Script file or link to public source code used to create this NWB file.
quantity: '?'
attributes:
- name: file_name
dtype: text
doc: Name of script file.
- name: stimulus
dtype: text
doc: Notes about stimuli, such as how and where they were presented.
quantity: '?'
- name: surgery
dtype: text
doc: Narrative description about surgery/surgeries, including date(s) and who
performed surgery.
quantity: '?'
- name: virus
dtype: text
doc: Information about virus(es) used in experiments, including virus ID, source,
date made, injection location, volume, etc.
quantity: '?'
groups:
- neurodata_type_inc: LabMetaData
doc: Place-holder than can be extended so that lab-specific meta-data can be
placed in /general.
quantity: '*'
- name: devices
doc: Description of hardware devices used during experiment, e.g., monitors,
ADC boards, microscopes, etc.
quantity: '?'
groups:
- neurodata_type_inc: Device
doc: Data acquisition devices.
quantity: '*'
- name: subject
neurodata_type_inc: Subject
doc: Information about the animal or person from which the data was measured.
quantity: '?'
- name: extracellular_ephys
doc: Metadata related to extracellular electrophysiology.
quantity: '?'
groups:
- neurodata_type_inc: ElectrodeGroup
doc: Physical group of electrodes.
quantity: '*'
- name: electrodes
neurodata_type_inc: DynamicTable
doc: A table of all electrodes (i.e. channels) used for recording.
quantity: '?'
datasets:
- name: x
neurodata_type_inc: VectorData
dtype: float32
doc: x coordinate of the channel location in the brain (+x is posterior).
quantity: '?'
- name: y
neurodata_type_inc: VectorData
dtype: float32
doc: y coordinate of the channel location in the brain (+y is inferior).
quantity: '?'
- name: z
neurodata_type_inc: VectorData
dtype: float32
doc: z coordinate of the channel location in the brain (+z is right).
quantity: '?'
- name: imp
neurodata_type_inc: VectorData
dtype: float32
doc: Impedance of the channel, in ohms.
quantity: '?'
- name: location
neurodata_type_inc: VectorData
dtype: text
doc: 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.
- name: filtering
neurodata_type_inc: VectorData
dtype: text
doc: Description of hardware filtering, including the filter name and frequency cutoffs.
quantity: '?'
- name: group
neurodata_type_inc: VectorData
dtype:
target_type: ElectrodeGroup
reftype: object
doc: Reference to the ElectrodeGroup this electrode is a part of.
- name: group_name
neurodata_type_inc: VectorData
dtype: text
doc: Name of the ElectrodeGroup this electrode is a part of.
- name: rel_x
neurodata_type_inc: VectorData
dtype: float32
doc: x coordinate in electrode group
quantity: '?'
- name: rel_y
neurodata_type_inc: VectorData
dtype: float32
doc: y coordinate in electrode group
quantity: '?'
- name: rel_z
neurodata_type_inc: VectorData
dtype: float32
doc: z coordinate in electrode group
quantity: '?'
- name: reference
neurodata_type_inc: VectorData
dtype: text
doc: Description of the reference electrode and/or reference scheme used for this electrode, e.g.,
"stainless steel skull screw" or "online common average referencing".
quantity: '?'
- name: intracellular_ephys
doc: Metadata related to intracellular electrophysiology.
quantity: '?'
datasets:
- name: filtering
dtype: text
doc: '[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.'
quantity: '?'
groups:
- neurodata_type_inc: IntracellularElectrode
doc: An intracellular electrode.
quantity: '*'
- name: sweep_table
neurodata_type_inc: SweepTable
doc: '[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.'
quantity: '?'
- name: intracellular_recordings
neurodata_type_inc: IntracellularRecordingsTable
doc: 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.
quantity: '?'
- name: simultaneous_recordings
neurodata_type_inc: SimultaneousRecordingsTable
doc: A table for grouping different intracellular recordings from the IntracellularRecordingsTable
table together that were recorded simultaneously from different electrodes
quantity: '?'
- name: sequential_recordings
neurodata_type_inc: SequentialRecordingsTable
doc: 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.
quantity: '?'
- name: repetitions
neurodata_type_inc: RepetitionsTable
doc: 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.
quantity: '?'
- name: experimental_conditions
neurodata_type_inc: ExperimentalConditionsTable
doc: A table for grouping different intracellular recording repetitions together
that belong to the same experimental experimental_conditions.
quantity: '?'
- name: optogenetics
doc: Metadata describing optogenetic stimuluation.
quantity: '?'
groups:
- neurodata_type_inc: OptogeneticStimulusSite
doc: An optogenetic stimulation site.
quantity: '*'
- name: optophysiology
doc: Metadata related to optophysiology.
quantity: '?'
groups:
- neurodata_type_inc: ImagingPlane
doc: An imaging plane.
quantity: '*'
- name: intervals
doc: 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.
quantity: '?'
groups:
- name: epochs
neurodata_type_inc: TimeIntervals
doc: Divisions in time marking experimental stages or sub-divisions of a single
recording session.
quantity: '?'
- name: trials
neurodata_type_inc: TimeIntervals
doc: Repeated experimental events that have a logical grouping.
quantity: '?'
- name: invalid_times
neurodata_type_inc: TimeIntervals
doc: Time intervals that should be removed from analysis.
quantity: '?'
- neurodata_type_inc: TimeIntervals
doc: Optional additional table(s) for describing other experimental time intervals.
quantity: '*'
- name: units
neurodata_type_inc: Units
doc: Data about sorted spike units.
quantity: '?'
- neurodata_type_def: LabMetaData
neurodata_type_inc: NWBContainer
doc: Lab-specific meta-data.
- neurodata_type_def: Subject
neurodata_type_inc: NWBContainer
doc: Information about the animal or person from which the data was measured.
datasets:
- name: age
dtype: text
doc: Age of subject. Can be supplied instead of 'date_of_birth'.
quantity: '?'
attributes:
- name: reference
doc: "Age is with reference to this event. Can be 'birth' or
'gestational'. If reference is omitted, 'birth' is implied."
dtype: text
required: false
default_value: birth
- name: date_of_birth
dtype: isodatetime
doc: Date of birth of subject. Can be supplied instead of 'age'.
quantity: '?'
- name: description
dtype: text
doc: Description of subject and where subject came from (e.g., breeder, if
animal).
quantity: '?'
- name: genotype
dtype: text
doc: Genetic strain. If absent, assume Wild Type (WT).
quantity: '?'
- name: sex
dtype: text
doc: Gender of subject.
quantity: '?'
- name: species
dtype: text
doc: Species of subject.
quantity: '?'
- name: strain
dtype: text
doc: Strain of subject.
quantity: '?'
- name: subject_id
dtype: text
doc: ID of animal/person used/participating in experiment (lab convention).
quantity: '?'
- name: weight
dtype: text
doc: Weight at time of experiment, at time of surgery and at other important
times.
quantity: '?'
datasets:
- neurodata_type_def: ScratchData
neurodata_type_inc: NWBData
doc: Any one-off datasets
attributes:
- name: notes
doc: 'Any notes the user has about the dataset being stored'
dtype: text