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

277 lines
12 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
- core.nwb.file.include
- core.nwb.file
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
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