diff --git a/+misc/getNamespaceDir.m b/+misc/getNamespaceDir.m
index 283f82fc..ab8bcd60 100644
--- a/+misc/getNamespaceDir.m
+++ b/+misc/getNamespaceDir.m
@@ -1,4 +1,4 @@
-function [namespaceDir] = getNamespaceDir(varargin)
+function namespaceDir = getNamespaceDir(varargin)
% Get the location of the namespaces directory regardless of current MATLAB working directory.
% started: 2020.07.02 [11:20:30]
% inputs
@@ -8,51 +8,18 @@
% changelog
% 2020.07.02 [11:24:10] - Function created and added warning if namespaces directory could not be found. - Biafra Ahanonu.
+ % 2020.12.29 [13:40:00] - Function simplified to use local namespace directory first.
% TODO
%
-
- try
- % Get the actual location of the matnwb directory.
- fnDir = misc.getMatnwbDir();
-
- % Get full path name to namespaces directory and list of files
- namespaceDir = fullfile(fnDir, 'namespaces');
-
- % Check directory exists else throw a warning letting the user know.
- dirExists = subfxnDirCheck(namespaceDir,1);
- if dirExists==0
- namespaceDir = subfxnDefaultNamespaces();
- elseif dirExists==1
- % Do nothing.
- end
- catch err
- % Attempt to load namespaces directory using prior methods.
- namespaceDir = subfxnDefaultNamespaces();
- disp(repmat('@',1,7))
- disp(getReport(err,'extended','hyperlinks','on'));
- disp(repmat('@',1,7))
- end
-end
-function dirExists = subfxnDirCheck(namespaceDir,dispWarning)
- if exist(namespaceDir,'dir')==7
- dirExists = 1;
- else
- dirExists = 0;
- if dispWarning==1
- warning('Directory "namespaces" not found at %s. Using defaults.',namespaceDir)
- end
- end
-end
-function namespaceDir = subfxnDefaultNamespaces()
- try
- namespaceDir = fullfile(misc.getWorkspace(), 'namespaces');
- dirExists = subfxnDirCheck(namespaceDir,0);
- if dirExists==0
- namespaceDir = 'namespaces';
- subfxnDirCheck(namespaceDir,0);
- end
- catch
- namespaceDir = 'namespaces';
- subfxnDirCheck(namespaceDir,0);
+
+ localNamespace = fullfile(misc.getWorkspace(), 'namespaces');
+ rootNamespace = fullfile(misc.getMatnwbDir(), 'namespaces');
+ if 7 == exist(localNamespace, 'dir')
+ namespaceDir = localNamespace;
+ elseif 7 == exist(rootNamespace, 'dir')
+ namespaceDir = rootNamespace;
+ else
+ warning('Directory "namespaces" not found.');
+ namespaceDir = '';
end
end
\ No newline at end of file
diff --git a/+tests/+system/smokeTest.m b/+tests/+system/smokeTest.m
index edab24a7..7b6b30c1 100644
--- a/+tests/+system/smokeTest.m
+++ b/+tests/+system/smokeTest.m
@@ -5,14 +5,10 @@
function setupOnce(testCase)
rootPath = fullfile(fileparts(mfilename('fullpath')), '..', '..');
testCase.applyFixture(matlab.unittest.fixtures.PathFixture(rootPath));
-% corePath = fullfile(rootPath, 'schema', 'core', 'nwb.namespace.yaml');
-% testCase.TestData.registry = generateCore(corePath);
+generateCore();
end
function teardownOnce(testCase)
-% classes = fieldnames(testCase.TestData.registry);
-% files = strcat(fullfile('+types', classes), '.m');
-% delete(files{:});
end
function setup(testCase)
diff --git a/+tests/+unit/multipleShapesTest.m b/+tests/+unit/multipleShapesTest.m
index b803d0b6..25ff6109 100644
--- a/+tests/+unit/multipleShapesTest.m
+++ b/+tests/+unit/multipleShapesTest.m
@@ -3,11 +3,9 @@
end
function setupOnce(testCase)
-fileLoc = fileparts(mfilename('fullpath'));
-rootPath = fullfile(fileLoc, '..', '..');
-schemaPath = fullfile(fileLoc, 'multipleShapesSchema', 'mss.namespace.yaml');
+schemaPath = fullfile(misc.getMatnwbDir(),...
+ '+tests', '+unit', 'multipleShapesSchema', 'mss.namespace.yaml');
generateExtension(schemaPath);
-testCase.applyFixture(matlab.unittest.fixtures.PathFixture(rootPath));
end
function setup(testCase)
@@ -15,7 +13,7 @@ function setup(testCase)
end
function teardownOnce(~)
-rmdir(fullfile('+types', '+mss'), 's');
+% rmdir(fullfile('+types', '+mss'), 's');
end
function testMultipleShapesDataset(testCase)
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index eb953a23..00000000
--- a/.gitmodules
+++ /dev/null
@@ -1,18 +0,0 @@
-[submodule "nwb-schema/2.2.5"]
- path = nwb-schema/2.2.5
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
-[submodule "nwb-schema/2.2.4"]
- path = nwb-schema/2.2.4
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
-[submodule "nwb-schema/2.2.3"]
- path = nwb-schema/2.2.3
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
-[submodule "nwb-schema/2.2.2"]
- path = nwb-schema/2.2.2
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
-[submodule "nwb-schema/2.2.1"]
- path = nwb-schema/2.2.1
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
-[submodule "nwb-schema/2.2.0"]
- path = nwb-schema/2.2.0
- url = https://github.com/NeurodataWithoutBorders/nwb-schema
diff --git a/NwbFile.m b/NwbFile.m
index a3b8dea4..fe193444 100644
--- a/NwbFile.m
+++ b/NwbFile.m
@@ -42,10 +42,13 @@ function export(obj, filename)
try
output_file_id = H5F.create(filename);
catch ME % if file exists, open and edit
- isLibraryError = strcmp(ME.identifier,...
- 'MATLAB:imagesci:hdf5lib:libraryError');
- isFileExistsError = isLibraryError &&...
- contains(ME.message, '''File exists''');
+ if verLessThan('matlab', '9.9') % < 2020b
+ isFileExistsError = strcmp(ME.identifier, 'MATLAB:imagesci:hdf5lib:libraryError')...
+ && contains(ME.message, '''File exists''');
+ else
+ isFileExistsError = strcmp(ME.identifier, 'MATLAB:imagesci:hdf5io:resourceAlreadyExists');
+ end
+
if isFileExistsError
output_file_id = H5F.open(filename, 'H5F_ACC_RDWR', 'H5P_DEFAULT');
else
diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 10cbc811..aaad1764 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -5,13 +5,11 @@ pool:
vmImage: 'ubuntu-latest'
steps:
- - checkout: self
- submodules: recursive
-
- task: InstallMATLAB@0
# default to latest version of Matlab installed
#inputs:
# release: R2020a
+ - checkout: self
- task: UsePythonVersion@0
inputs:
@@ -25,5 +23,5 @@ steps:
- task: RunMATLABCommand@0
inputs:
- command: "try, addpath(genpath(pwd)); generateCore(); results = nwbtest; if isempty(results), exit(1); end; catch err, disp(err.message); exit(1); end"
+ command: "try, addpath(genpath(pwd)); results = nwbtest; if isempty(results), exit(1); end; catch err, disp(err.message); exit(1); end"
diff --git a/nwb-schema/2.2.0 b/nwb-schema/2.2.0
deleted file mode 160000
index 62c73400..00000000
--- a/nwb-schema/2.2.0
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 62c73400565afc28f67ede4f2e86023c33167cf8
diff --git a/nwb-schema/2.2.0/core/nwb.base.yaml b/nwb-schema/2.2.0/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.0/core/nwb.behavior.yaml b/nwb-schema/2.2.0/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.0/core/nwb.device.yaml b/nwb-schema/2.2.0/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.0/core/nwb.ecephys.yaml b/nwb-schema/2.2.0/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.0/core/nwb.epoch.yaml b/nwb-schema/2.2.0/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.0/core/nwb.file.yaml b/nwb-schema/2.2.0/core/nwb.file.yaml
new file mode 100644
index 00000000..a2e449e7
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.file.yaml
@@ -0,0 +1,429 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.1.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 relevent 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 relevent 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_def: ScratchData
+ neurodata_type_inc: NWBData
+ doc: Any one-off datasets
+ quantity: '*'
+ attributes:
+ - name: notes
+ doc: 'Any notes the user has about the dataset being stored'
+ dtype: text
+ - 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: '*'
+ - 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_def: LabMetaData
+ neurodata_type_inc: NWBContainer
+ 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: '*'
+ - neurodata_type_def: Subject
+ neurodata_type_inc: NWBContainer
+ name: subject
+ doc: Information about the animal or person from which the data was measured.
+ quantity: '?'
+ datasets:
+ - name: age
+ dtype: text
+ doc: Age of subject. Can be supplied instead of 'date_of_birth'.
+ quantity: '?'
+ - 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: 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: '?'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
diff --git a/nwb-schema/2.2.0/core/nwb.icephys.yaml b/nwb-schema/2.2.0/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.0/core/nwb.image.yaml b/nwb-schema/2.2.0/core/nwb.image.yaml
new file mode 100644
index 00000000..517ddae0
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.image.yaml
@@ -0,0 +1,173 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.0/core/nwb.misc.yaml b/nwb-schema/2.2.0/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.0/core/nwb.namespace.yaml b/nwb-schema/2.2.0/core/nwb.namespace.yaml
new file mode 100644
index 00000000..8c2db520
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.0
diff --git a/nwb-schema/2.2.0/core/nwb.ogen.yaml b/nwb-schema/2.2.0/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.0/core/nwb.ophys.yaml b/nwb-schema/2.2.0/core/nwb.ophys.yaml
new file mode 100644
index 00000000..d2063ece
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.ophys.yaml
@@ -0,0 +1,314 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - width|height
+ - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz.
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.0/core/nwb.retinotopy.yaml b/nwb-schema/2.2.0/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..6b72f8b2
--- /dev/null
+++ b/nwb-schema/2.2.0/core/nwb.retinotopy.yaml
@@ -0,0 +1,118 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ NOTE: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ neurodata_type_inc: AxisMap
+ doc: Phase response to stimulus on the first measured axis.
+ - name: axis_1_power_map
+ neurodata_type_inc: AxisMap
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ - name: axis_2_phase_map
+ neurodata_type_inc: AxisMap
+ doc: Phase response to stimulus on the second measured axis.
+ - name: axis_2_power_map
+ neurodata_type_inc: AxisMap
+ quantity: '?'
+ doc: Power response to stimulus on the second measured axis.
+ - name: sign_map
+ neurodata_type_inc: RetinotopyMap
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - num_axes
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius', 'theta'].
+ - name: focal_depth_image
+ neurodata_type_inc: RetinotopyImage
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ attributes:
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: vasculature_image
+ neurodata_type_inc: RetinotopyImage
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+
+datasets:
+- neurodata_type_def: RetinotopyMap
+ neurodata_type_inc: NWBData
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Abstract two-dimensional map of responses. Array structure: [num_rows][num_columns]'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+
+- neurodata_type_def: AxisMap
+ neurodata_type_inc: RetinotopyMap
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Abstract two-dimensional map of responses to stimuli along a single response axis (e.g. eccentricity)
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+- neurodata_type_def: RetinotopyImage
+ neurodata_type_inc: GrayscaleImage
+ dtype: uint16
+ doc: 'Gray-scale image related to retinotopic mapping. Array structure: [num_rows][num_columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.0/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.2.0/hdmf-common-schema/common/namespace.yaml
new file mode 100644
index 00000000..69e78a57
--- /dev/null
+++ b/nwb-schema/2.2.0/hdmf-common-schema/common/namespace.yaml
@@ -0,0 +1,21 @@
+namespaces:
+- name: hdmf-common
+ doc: Common data structures provided by HDMF
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ full_name: HDMF Common
+ schema:
+ - doc: data types for a column-based table
+ source: table.yaml
+ title: Table data types
+ - doc: data types for different types of sparse matrices
+ source: sparse.yaml
+ version: 1.1.0
diff --git a/nwb-schema/2.2.0/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.2.0/hdmf-common-schema/common/sparse.yaml
new file mode 100644
index 00000000..49f9a526
--- /dev/null
+++ b/nwb-schema/2.2.0/hdmf-common-schema/common/sparse.yaml
@@ -0,0 +1,24 @@
+groups:
+- data_type_def: CSRMatrix
+ doc: a compressed sparse row matrix
+ attributes:
+ - name: shape
+ dtype: int
+ shape:
+ - 2
+ doc: the shape of this sparse matrix
+ datasets:
+ - name: indices
+ dtype: int
+ shape:
+ - null
+ doc: column indices
+ - name: indptr
+ dtype: int
+ shape:
+ - null
+ doc: index pointer
+ - name: data
+ shape:
+ - null
+ doc: values in the matrix
diff --git a/nwb-schema/2.2.0/hdmf-common-schema/common/table.yaml b/nwb-schema/2.2.0/hdmf-common-schema/common/table.yaml
new file mode 100644
index 00000000..1e4fbed3
--- /dev/null
+++ b/nwb-schema/2.2.0/hdmf-common-schema/common/table.yaml
@@ -0,0 +1,125 @@
+datasets:
+- data_type_def: Data
+ doc: An abstract data type for a dataset.
+
+- data_type_def: Index
+ data_type_inc: Data
+ doc: Pointers that index data values.
+ attributes:
+ - name: target
+ dtype:
+ target_type: Data
+ reftype: object
+ doc: Target dataset that this index applies to.
+
+- data_type_def: VectorData
+ data_type_inc: Data
+ doc: An n-dimensional dataset representing a column of a DynamicTable.
+ If used without an accompanying VectorIndex, first dimension is
+ along the rows of the DynamicTable and each step along the first
+ dimension is a cell of the larger table. VectorData can also be
+ used to represent a ragged array if paired with a VectorIndex.
+ This allows for storing arrays of varying length in a single cell
+ of the DynamicTable by indexing into this VectorData. The first
+ vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at
+ VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of what these vectors represent.
+
+- data_type_def: VectorIndex
+ data_type_inc: Index
+ doc: Used with VectorData to encode a ragged array. An array of indices
+ into the first dimension of the target VectorData, and forming a map
+ between the rows of a DynamicTable and the indices of the VectorData.
+ attributes:
+ - name: target
+ dtype:
+ target_type: VectorData
+ reftype: object
+ doc: Reference to the target dataset that this index applies to.
+
+- data_type_def: ElementIdentifiers
+ data_type_inc: Data
+ default_name: element_id
+ dtype: int
+ dims:
+ - num_elements
+ shape:
+ - null
+ doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
+
+- data_type_def: DynamicTableRegion
+ data_type_inc: VectorData
+ dtype: int
+ doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a
+ link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s)
+ (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without
+ data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s.
+ `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell
+ of a `DynamicTable` can reference many rows of another `DynamicTable`.
+ attributes:
+ - name: table
+ dtype:
+ target_type: DynamicTable
+ reftype: object
+ doc: Reference to the DynamicTable object that this region applies to.
+ - name: description
+ dtype: text
+ doc: Description of what this table region points to.
+
+groups:
+- data_type_def: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- data_type_def: DynamicTable
+ data_type_inc: Container
+ doc: A group containing multiple datasets that are aligned on the first dimension
+ (Currently, this requirement if left up to APIs to check and enforce). Apart from
+ a column that contains unique identifiers for each row there are no other required
+ datasets. Users are free to add any number of VectorData objects here. Table functionality
+ is already supported through compound types, which is analogous to storing an
+ array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides
+ an alternative structure to choose from when optimizing storage for anticipated
+ access patterns. Additionally, this type provides a way of creating a table without
+ having to define a compound type up front. Although this convenience may be attractive,
+ users should think carefully about how data will be accessed. DynamicTable is
+ more appropriate for column-centric access, whereas a dataset with a compound
+ type would be more appropriate for row-centric access. Finally, data size should
+ also be taken into account. For small tables, performance loss may be an acceptable
+ trade-off for the flexibility of a DynamicTable. For example, DynamicTable was
+ originally developed for storing trial data and spike unit metadata. Both of these
+ use cases are expected to produce relatively small tables, so the spatial locality
+ of multiple datasets present in a DynamicTable is not expected to have a significant
+ performance impact. Additionally, requirements of trial and unit metadata tables
+ are sufficiently diverse that performance implications can be overlooked in favor
+ of usability.
+ attributes:
+ - name: colnames
+ dtype: text
+ dims:
+ - num_columns
+ shape:
+ - null
+ doc: The names of the columns in this table. This should be used to specify
+ an order to the columns.
+ - name: description
+ dtype: text
+ doc: Description of what is in this dynamic table.
+ datasets:
+ - name: id
+ data_type_inc: ElementIdentifiers
+ dtype: int
+ dims:
+ - num_rows
+ shape:
+ - null
+ doc: Array of unique identifiers for the rows of this dynamic table.
+ - data_type_inc: VectorData
+ doc: Vector columns of this dynamic table.
+ quantity: '*'
+ - data_type_inc: VectorIndex
+ doc: Indices for the vector columns of this dynamic table.
+ quantity: '*'
diff --git a/nwb-schema/2.2.1 b/nwb-schema/2.2.1
deleted file mode 160000
index 5d6160ec..00000000
--- a/nwb-schema/2.2.1
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5d6160eccc6e4c786fc328c8f1d227420f933bda
diff --git a/nwb-schema/2.2.1/core/nwb.base.yaml b/nwb-schema/2.2.1/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.1/core/nwb.behavior.yaml b/nwb-schema/2.2.1/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.1/core/nwb.device.yaml b/nwb-schema/2.2.1/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.1/core/nwb.ecephys.yaml b/nwb-schema/2.2.1/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.1/core/nwb.epoch.yaml b/nwb-schema/2.2.1/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.1/core/nwb.file.yaml b/nwb-schema/2.2.1/core/nwb.file.yaml
new file mode 100644
index 00000000..e92204c4
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.file.yaml
@@ -0,0 +1,429 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.2.1
+ 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 relevent 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 relevent 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_def: ScratchData
+ neurodata_type_inc: NWBData
+ doc: Any one-off datasets
+ quantity: '*'
+ attributes:
+ - name: notes
+ doc: 'Any notes the user has about the dataset being stored'
+ dtype: text
+ - 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: '*'
+ - 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_def: LabMetaData
+ neurodata_type_inc: NWBContainer
+ 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: '*'
+ - neurodata_type_def: Subject
+ neurodata_type_inc: NWBContainer
+ name: subject
+ doc: Information about the animal or person from which the data was measured.
+ quantity: '?'
+ datasets:
+ - name: age
+ dtype: text
+ doc: Age of subject. Can be supplied instead of 'date_of_birth'.
+ quantity: '?'
+ - 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: 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: '?'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
diff --git a/nwb-schema/2.2.1/core/nwb.icephys.yaml b/nwb-schema/2.2.1/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.1/core/nwb.image.yaml b/nwb-schema/2.2.1/core/nwb.image.yaml
new file mode 100644
index 00000000..517ddae0
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.image.yaml
@@ -0,0 +1,173 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.1/core/nwb.misc.yaml b/nwb-schema/2.2.1/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.1/core/nwb.namespace.yaml b/nwb-schema/2.2.1/core/nwb.namespace.yaml
new file mode 100644
index 00000000..485caaed
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.1
diff --git a/nwb-schema/2.2.1/core/nwb.ogen.yaml b/nwb-schema/2.2.1/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.1/core/nwb.ophys.yaml b/nwb-schema/2.2.1/core/nwb.ophys.yaml
new file mode 100644
index 00000000..d2063ece
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.ophys.yaml
@@ -0,0 +1,314 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - width|height
+ - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz.
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.1/core/nwb.retinotopy.yaml b/nwb-schema/2.2.1/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..6b72f8b2
--- /dev/null
+++ b/nwb-schema/2.2.1/core/nwb.retinotopy.yaml
@@ -0,0 +1,118 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ NOTE: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ neurodata_type_inc: AxisMap
+ doc: Phase response to stimulus on the first measured axis.
+ - name: axis_1_power_map
+ neurodata_type_inc: AxisMap
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ - name: axis_2_phase_map
+ neurodata_type_inc: AxisMap
+ doc: Phase response to stimulus on the second measured axis.
+ - name: axis_2_power_map
+ neurodata_type_inc: AxisMap
+ quantity: '?'
+ doc: Power response to stimulus on the second measured axis.
+ - name: sign_map
+ neurodata_type_inc: RetinotopyMap
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - num_axes
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius', 'theta'].
+ - name: focal_depth_image
+ neurodata_type_inc: RetinotopyImage
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ attributes:
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: vasculature_image
+ neurodata_type_inc: RetinotopyImage
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+
+datasets:
+- neurodata_type_def: RetinotopyMap
+ neurodata_type_inc: NWBData
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Abstract two-dimensional map of responses. Array structure: [num_rows][num_columns]'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+
+- neurodata_type_def: AxisMap
+ neurodata_type_inc: RetinotopyMap
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Abstract two-dimensional map of responses to stimuli along a single response axis (e.g. eccentricity)
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+- neurodata_type_def: RetinotopyImage
+ neurodata_type_inc: GrayscaleImage
+ dtype: uint16
+ doc: 'Gray-scale image related to retinotopic mapping. Array structure: [num_rows][num_columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - row_col
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.1/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.2.1/hdmf-common-schema/common/namespace.yaml
new file mode 100644
index 00000000..f8d224c3
--- /dev/null
+++ b/nwb-schema/2.2.1/hdmf-common-schema/common/namespace.yaml
@@ -0,0 +1,21 @@
+namespaces:
+- name: hdmf-common
+ doc: Common data structures provided by HDMF
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ full_name: HDMF Common
+ schema:
+ - doc: data types for a column-based table
+ source: table.yaml
+ title: Table data types
+ - doc: data types for different types of sparse matrices
+ source: sparse.yaml
+ version: 1.1.2
diff --git a/nwb-schema/2.2.1/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.2.1/hdmf-common-schema/common/sparse.yaml
new file mode 100644
index 00000000..49f9a526
--- /dev/null
+++ b/nwb-schema/2.2.1/hdmf-common-schema/common/sparse.yaml
@@ -0,0 +1,24 @@
+groups:
+- data_type_def: CSRMatrix
+ doc: a compressed sparse row matrix
+ attributes:
+ - name: shape
+ dtype: int
+ shape:
+ - 2
+ doc: the shape of this sparse matrix
+ datasets:
+ - name: indices
+ dtype: int
+ shape:
+ - null
+ doc: column indices
+ - name: indptr
+ dtype: int
+ shape:
+ - null
+ doc: index pointer
+ - name: data
+ shape:
+ - null
+ doc: values in the matrix
diff --git a/nwb-schema/2.2.1/hdmf-common-schema/common/table.yaml b/nwb-schema/2.2.1/hdmf-common-schema/common/table.yaml
new file mode 100644
index 00000000..1e4fbed3
--- /dev/null
+++ b/nwb-schema/2.2.1/hdmf-common-schema/common/table.yaml
@@ -0,0 +1,125 @@
+datasets:
+- data_type_def: Data
+ doc: An abstract data type for a dataset.
+
+- data_type_def: Index
+ data_type_inc: Data
+ doc: Pointers that index data values.
+ attributes:
+ - name: target
+ dtype:
+ target_type: Data
+ reftype: object
+ doc: Target dataset that this index applies to.
+
+- data_type_def: VectorData
+ data_type_inc: Data
+ doc: An n-dimensional dataset representing a column of a DynamicTable.
+ If used without an accompanying VectorIndex, first dimension is
+ along the rows of the DynamicTable and each step along the first
+ dimension is a cell of the larger table. VectorData can also be
+ used to represent a ragged array if paired with a VectorIndex.
+ This allows for storing arrays of varying length in a single cell
+ of the DynamicTable by indexing into this VectorData. The first
+ vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at
+ VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of what these vectors represent.
+
+- data_type_def: VectorIndex
+ data_type_inc: Index
+ doc: Used with VectorData to encode a ragged array. An array of indices
+ into the first dimension of the target VectorData, and forming a map
+ between the rows of a DynamicTable and the indices of the VectorData.
+ attributes:
+ - name: target
+ dtype:
+ target_type: VectorData
+ reftype: object
+ doc: Reference to the target dataset that this index applies to.
+
+- data_type_def: ElementIdentifiers
+ data_type_inc: Data
+ default_name: element_id
+ dtype: int
+ dims:
+ - num_elements
+ shape:
+ - null
+ doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
+
+- data_type_def: DynamicTableRegion
+ data_type_inc: VectorData
+ dtype: int
+ doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a
+ link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s)
+ (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without
+ data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s.
+ `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell
+ of a `DynamicTable` can reference many rows of another `DynamicTable`.
+ attributes:
+ - name: table
+ dtype:
+ target_type: DynamicTable
+ reftype: object
+ doc: Reference to the DynamicTable object that this region applies to.
+ - name: description
+ dtype: text
+ doc: Description of what this table region points to.
+
+groups:
+- data_type_def: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- data_type_def: DynamicTable
+ data_type_inc: Container
+ doc: A group containing multiple datasets that are aligned on the first dimension
+ (Currently, this requirement if left up to APIs to check and enforce). Apart from
+ a column that contains unique identifiers for each row there are no other required
+ datasets. Users are free to add any number of VectorData objects here. Table functionality
+ is already supported through compound types, which is analogous to storing an
+ array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides
+ an alternative structure to choose from when optimizing storage for anticipated
+ access patterns. Additionally, this type provides a way of creating a table without
+ having to define a compound type up front. Although this convenience may be attractive,
+ users should think carefully about how data will be accessed. DynamicTable is
+ more appropriate for column-centric access, whereas a dataset with a compound
+ type would be more appropriate for row-centric access. Finally, data size should
+ also be taken into account. For small tables, performance loss may be an acceptable
+ trade-off for the flexibility of a DynamicTable. For example, DynamicTable was
+ originally developed for storing trial data and spike unit metadata. Both of these
+ use cases are expected to produce relatively small tables, so the spatial locality
+ of multiple datasets present in a DynamicTable is not expected to have a significant
+ performance impact. Additionally, requirements of trial and unit metadata tables
+ are sufficiently diverse that performance implications can be overlooked in favor
+ of usability.
+ attributes:
+ - name: colnames
+ dtype: text
+ dims:
+ - num_columns
+ shape:
+ - null
+ doc: The names of the columns in this table. This should be used to specify
+ an order to the columns.
+ - name: description
+ dtype: text
+ doc: Description of what is in this dynamic table.
+ datasets:
+ - name: id
+ data_type_inc: ElementIdentifiers
+ dtype: int
+ dims:
+ - num_rows
+ shape:
+ - null
+ doc: Array of unique identifiers for the rows of this dynamic table.
+ - data_type_inc: VectorData
+ doc: Vector columns of this dynamic table.
+ quantity: '*'
+ - data_type_inc: VectorIndex
+ doc: Indices for the vector columns of this dynamic table.
+ quantity: '*'
diff --git a/nwb-schema/2.2.2 b/nwb-schema/2.2.2
deleted file mode 160000
index 7931e59a..00000000
--- a/nwb-schema/2.2.2
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 7931e59ad1e97433ce4a450fa5bc2dab81af6f8d
diff --git a/nwb-schema/2.2.2/core/nwb.base.yaml b/nwb-schema/2.2.2/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.2/core/nwb.behavior.yaml b/nwb-schema/2.2.2/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.2/core/nwb.device.yaml b/nwb-schema/2.2.2/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.2/core/nwb.ecephys.yaml b/nwb-schema/2.2.2/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.2/core/nwb.epoch.yaml b/nwb-schema/2.2.2/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.2/core/nwb.file.yaml b/nwb-schema/2.2.2/core/nwb.file.yaml
new file mode 100644
index 00000000..98b8b838
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.file.yaml
@@ -0,0 +1,429 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.2.2
+ 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 relevent 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 relevent 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_def: ScratchData
+ neurodata_type_inc: NWBData
+ doc: Any one-off datasets
+ quantity: '*'
+ attributes:
+ - name: notes
+ doc: 'Any notes the user has about the dataset being stored'
+ dtype: text
+ - 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: '*'
+ - 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_def: LabMetaData
+ neurodata_type_inc: NWBContainer
+ 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: '*'
+ - neurodata_type_def: Subject
+ neurodata_type_inc: NWBContainer
+ name: subject
+ doc: Information about the animal or person from which the data was measured.
+ quantity: '?'
+ datasets:
+ - name: age
+ dtype: text
+ doc: Age of subject. Can be supplied instead of 'date_of_birth'.
+ quantity: '?'
+ - 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: 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: '?'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
diff --git a/nwb-schema/2.2.2/core/nwb.icephys.yaml b/nwb-schema/2.2.2/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.2/core/nwb.image.yaml b/nwb-schema/2.2.2/core/nwb.image.yaml
new file mode 100644
index 00000000..50d3367a
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.image.yaml
@@ -0,0 +1,192 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - r, g, b
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - 3
+ doc: Images presented to subject, either grayscale or RGB
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.2/core/nwb.misc.yaml b/nwb-schema/2.2.2/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.2/core/nwb.namespace.yaml b/nwb-schema/2.2.2/core/nwb.namespace.yaml
new file mode 100644
index 00000000..6075b0f3
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.2
diff --git a/nwb-schema/2.2.2/core/nwb.ogen.yaml b/nwb-schema/2.2.2/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.2/core/nwb.ophys.yaml b/nwb-schema/2.2.2/core/nwb.ophys.yaml
new file mode 100644
index 00000000..0ca7ae6f
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.ophys.yaml
@@ -0,0 +1,315 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - width|height
+ - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz.
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ quantity: '+'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.2/core/nwb.retinotopy.yaml b/nwb-schema/2.2.2/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..e8972395
--- /dev/null
+++ b/nwb-schema/2.2.2/core/nwb.retinotopy.yaml
@@ -0,0 +1,234 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ This group does not store the raw responses imaged during retinotopic mapping or the
+ stimuli presented, but rather the resulting phase and power maps after applying a Fourier
+ transform on the averaged responses.
+ Note: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the first measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_1_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the second measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the second measured axis. Response is scaled so 0.0 is
+ no power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - axis_1, axis_2
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius',
+ 'theta'].
+ - name: focal_depth_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ quantity: '?'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
+ - name: sign_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: vasculature_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.2/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.2.2/hdmf-common-schema/common/namespace.yaml
new file mode 100644
index 00000000..42df23e4
--- /dev/null
+++ b/nwb-schema/2.2.2/hdmf-common-schema/common/namespace.yaml
@@ -0,0 +1,21 @@
+namespaces:
+- name: hdmf-common
+ doc: Common data structures provided by HDMF
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ full_name: HDMF Common
+ schema:
+ - doc: data types for a column-based table
+ source: table.yaml
+ title: Table data types
+ - doc: data types for different types of sparse matrices
+ source: sparse.yaml
+ version: 1.1.3
diff --git a/nwb-schema/2.2.2/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.2.2/hdmf-common-schema/common/sparse.yaml
new file mode 100644
index 00000000..49f9a526
--- /dev/null
+++ b/nwb-schema/2.2.2/hdmf-common-schema/common/sparse.yaml
@@ -0,0 +1,24 @@
+groups:
+- data_type_def: CSRMatrix
+ doc: a compressed sparse row matrix
+ attributes:
+ - name: shape
+ dtype: int
+ shape:
+ - 2
+ doc: the shape of this sparse matrix
+ datasets:
+ - name: indices
+ dtype: int
+ shape:
+ - null
+ doc: column indices
+ - name: indptr
+ dtype: int
+ shape:
+ - null
+ doc: index pointer
+ - name: data
+ shape:
+ - null
+ doc: values in the matrix
diff --git a/nwb-schema/2.2.2/hdmf-common-schema/common/table.yaml b/nwb-schema/2.2.2/hdmf-common-schema/common/table.yaml
new file mode 100644
index 00000000..9ed2ff0e
--- /dev/null
+++ b/nwb-schema/2.2.2/hdmf-common-schema/common/table.yaml
@@ -0,0 +1,155 @@
+datasets:
+- data_type_def: Data
+ doc: An abstract data type for a dataset.
+
+- data_type_def: Index
+ data_type_inc: Data
+ doc: Pointers that index data values.
+ attributes:
+ - name: target
+ dtype:
+ target_type: Data
+ reftype: object
+ doc: Target dataset that this index applies to.
+
+- data_type_def: VectorData
+ data_type_inc: Data
+ doc: An n-dimensional dataset representing a column of a DynamicTable.
+ If used without an accompanying VectorIndex, first dimension is
+ along the rows of the DynamicTable and each step along the first
+ dimension is a cell of the larger table. VectorData can also be
+ used to represent a ragged array if paired with a VectorIndex.
+ This allows for storing arrays of varying length in a single cell
+ of the DynamicTable by indexing into this VectorData. The first
+ vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at
+ VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+ dims:
+ - - dim0
+ - - dim0
+ - dim1
+ - - dim0
+ - dim1
+ - dim2
+ - - dim0
+ - dim1
+ - dim2
+ - dim3
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of what these vectors represent.
+
+- data_type_def: VectorIndex
+ data_type_inc: Index
+ doc: Used with VectorData to encode a ragged array. An array of indices
+ into the first dimension of the target VectorData, and forming a map
+ between the rows of a DynamicTable and the indices of the VectorData.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: target
+ dtype:
+ target_type: VectorData
+ reftype: object
+ doc: Reference to the target dataset that this index applies to.
+
+- data_type_def: ElementIdentifiers
+ data_type_inc: Data
+ default_name: element_id
+ dtype: int
+ dims:
+ - num_elements
+ shape:
+ - null
+ doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
+
+- data_type_def: DynamicTableRegion
+ data_type_inc: VectorData
+ dtype: int
+ doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a
+ link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s)
+ (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without
+ data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s.
+ `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell
+ of a `DynamicTable` can reference many rows of another `DynamicTable`.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: table
+ dtype:
+ target_type: DynamicTable
+ reftype: object
+ doc: Reference to the DynamicTable object that this region applies to.
+ - name: description
+ dtype: text
+ doc: Description of what this table region points to.
+
+groups:
+- data_type_def: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- data_type_def: DynamicTable
+ data_type_inc: Container
+ doc: A group containing multiple datasets that are aligned on the first dimension
+ (Currently, this requirement if left up to APIs to check and enforce). Apart from
+ a column that contains unique identifiers for each row there are no other required
+ datasets. Users are free to add any number of VectorData objects here. Table functionality
+ is already supported through compound types, which is analogous to storing an
+ array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides
+ an alternative structure to choose from when optimizing storage for anticipated
+ access patterns. Additionally, this type provides a way of creating a table without
+ having to define a compound type up front. Although this convenience may be attractive,
+ users should think carefully about how data will be accessed. DynamicTable is
+ more appropriate for column-centric access, whereas a dataset with a compound
+ type would be more appropriate for row-centric access. Finally, data size should
+ also be taken into account. For small tables, performance loss may be an acceptable
+ trade-off for the flexibility of a DynamicTable. For example, DynamicTable was
+ originally developed for storing trial data and spike unit metadata. Both of these
+ use cases are expected to produce relatively small tables, so the spatial locality
+ of multiple datasets present in a DynamicTable is not expected to have a significant
+ performance impact. Additionally, requirements of trial and unit metadata tables
+ are sufficiently diverse that performance implications can be overlooked in favor
+ of usability.
+ attributes:
+ - name: colnames
+ dtype: text
+ dims:
+ - num_columns
+ shape:
+ - null
+ doc: The names of the columns in this table. This should be used to specify
+ an order to the columns.
+ - name: description
+ dtype: text
+ doc: Description of what is in this dynamic table.
+ datasets:
+ - name: id
+ data_type_inc: ElementIdentifiers
+ dtype: int
+ dims:
+ - num_rows
+ shape:
+ - null
+ doc: Array of unique identifiers for the rows of this dynamic table.
+ - data_type_inc: VectorData
+ doc: Vector columns of this dynamic table.
+ quantity: '*'
+ - data_type_inc: VectorIndex
+ doc: Indices for the vector columns of this dynamic table.
+ quantity: '*'
diff --git a/nwb-schema/2.2.3 b/nwb-schema/2.2.3
deleted file mode 160000
index 6b2ca916..00000000
--- a/nwb-schema/2.2.3
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 6b2ca91695929866b7de257b79a316788eece1ae
diff --git a/nwb-schema/2.2.3/core/nwb.base.yaml b/nwb-schema/2.2.3/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.3/core/nwb.behavior.yaml b/nwb-schema/2.2.3/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.3/core/nwb.device.yaml b/nwb-schema/2.2.3/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.3/core/nwb.ecephys.yaml b/nwb-schema/2.2.3/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.3/core/nwb.epoch.yaml b/nwb-schema/2.2.3/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.3/core/nwb.file.yaml b/nwb-schema/2.2.3/core/nwb.file.yaml
new file mode 100644
index 00000000..b1738eff
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.file.yaml
@@ -0,0 +1,439 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.2.3
+ 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 relevent 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 relevent 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: '*'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
+ - 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: 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
diff --git a/nwb-schema/2.2.3/core/nwb.icephys.yaml b/nwb-schema/2.2.3/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.3/core/nwb.image.yaml b/nwb-schema/2.2.3/core/nwb.image.yaml
new file mode 100644
index 00000000..50d3367a
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.image.yaml
@@ -0,0 +1,192 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - r, g, b
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - 3
+ doc: Images presented to subject, either grayscale or RGB
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.3/core/nwb.misc.yaml b/nwb-schema/2.2.3/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.3/core/nwb.namespace.yaml b/nwb-schema/2.2.3/core/nwb.namespace.yaml
new file mode 100644
index 00000000..83e82d89
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.3
diff --git a/nwb-schema/2.2.3/core/nwb.ogen.yaml b/nwb-schema/2.2.3/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.3/core/nwb.ophys.yaml b/nwb-schema/2.2.3/core/nwb.ophys.yaml
new file mode 100644
index 00000000..9314d351
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.ophys.yaml
@@ -0,0 +1,326 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - width|height
+ - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_inc: PlaneSegmentation
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+
+- neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz. If the corresponding TimeSeries is present, the rate should be stored
+ there instead.
+ quantity: '?'
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_inc: OpticalChannel
+ doc: An optical channel used to record from an imaging plane.
+ quantity: '+'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_inc: CorrectedImageStack
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+
+- neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.3/core/nwb.retinotopy.yaml b/nwb-schema/2.2.3/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..e8972395
--- /dev/null
+++ b/nwb-schema/2.2.3/core/nwb.retinotopy.yaml
@@ -0,0 +1,234 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ This group does not store the raw responses imaged during retinotopic mapping or the
+ stimuli presented, but rather the resulting phase and power maps after applying a Fourier
+ transform on the averaged responses.
+ Note: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the first measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_1_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the second measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the second measured axis. Response is scaled so 0.0 is
+ no power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - axis_1, axis_2
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius',
+ 'theta'].
+ - name: focal_depth_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ quantity: '?'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
+ - name: sign_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: vasculature_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.3/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.2.3/hdmf-common-schema/common/namespace.yaml
new file mode 100644
index 00000000..42df23e4
--- /dev/null
+++ b/nwb-schema/2.2.3/hdmf-common-schema/common/namespace.yaml
@@ -0,0 +1,21 @@
+namespaces:
+- name: hdmf-common
+ doc: Common data structures provided by HDMF
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ full_name: HDMF Common
+ schema:
+ - doc: data types for a column-based table
+ source: table.yaml
+ title: Table data types
+ - doc: data types for different types of sparse matrices
+ source: sparse.yaml
+ version: 1.1.3
diff --git a/nwb-schema/2.2.3/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.2.3/hdmf-common-schema/common/sparse.yaml
new file mode 100644
index 00000000..49f9a526
--- /dev/null
+++ b/nwb-schema/2.2.3/hdmf-common-schema/common/sparse.yaml
@@ -0,0 +1,24 @@
+groups:
+- data_type_def: CSRMatrix
+ doc: a compressed sparse row matrix
+ attributes:
+ - name: shape
+ dtype: int
+ shape:
+ - 2
+ doc: the shape of this sparse matrix
+ datasets:
+ - name: indices
+ dtype: int
+ shape:
+ - null
+ doc: column indices
+ - name: indptr
+ dtype: int
+ shape:
+ - null
+ doc: index pointer
+ - name: data
+ shape:
+ - null
+ doc: values in the matrix
diff --git a/nwb-schema/2.2.3/hdmf-common-schema/common/table.yaml b/nwb-schema/2.2.3/hdmf-common-schema/common/table.yaml
new file mode 100644
index 00000000..9ed2ff0e
--- /dev/null
+++ b/nwb-schema/2.2.3/hdmf-common-schema/common/table.yaml
@@ -0,0 +1,155 @@
+datasets:
+- data_type_def: Data
+ doc: An abstract data type for a dataset.
+
+- data_type_def: Index
+ data_type_inc: Data
+ doc: Pointers that index data values.
+ attributes:
+ - name: target
+ dtype:
+ target_type: Data
+ reftype: object
+ doc: Target dataset that this index applies to.
+
+- data_type_def: VectorData
+ data_type_inc: Data
+ doc: An n-dimensional dataset representing a column of a DynamicTable.
+ If used without an accompanying VectorIndex, first dimension is
+ along the rows of the DynamicTable and each step along the first
+ dimension is a cell of the larger table. VectorData can also be
+ used to represent a ragged array if paired with a VectorIndex.
+ This allows for storing arrays of varying length in a single cell
+ of the DynamicTable by indexing into this VectorData. The first
+ vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at
+ VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+ dims:
+ - - dim0
+ - - dim0
+ - dim1
+ - - dim0
+ - dim1
+ - dim2
+ - - dim0
+ - dim1
+ - dim2
+ - dim3
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of what these vectors represent.
+
+- data_type_def: VectorIndex
+ data_type_inc: Index
+ doc: Used with VectorData to encode a ragged array. An array of indices
+ into the first dimension of the target VectorData, and forming a map
+ between the rows of a DynamicTable and the indices of the VectorData.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: target
+ dtype:
+ target_type: VectorData
+ reftype: object
+ doc: Reference to the target dataset that this index applies to.
+
+- data_type_def: ElementIdentifiers
+ data_type_inc: Data
+ default_name: element_id
+ dtype: int
+ dims:
+ - num_elements
+ shape:
+ - null
+ doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
+
+- data_type_def: DynamicTableRegion
+ data_type_inc: VectorData
+ dtype: int
+ doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a
+ link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s)
+ (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without
+ data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s.
+ `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell
+ of a `DynamicTable` can reference many rows of another `DynamicTable`.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: table
+ dtype:
+ target_type: DynamicTable
+ reftype: object
+ doc: Reference to the DynamicTable object that this region applies to.
+ - name: description
+ dtype: text
+ doc: Description of what this table region points to.
+
+groups:
+- data_type_def: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- data_type_def: DynamicTable
+ data_type_inc: Container
+ doc: A group containing multiple datasets that are aligned on the first dimension
+ (Currently, this requirement if left up to APIs to check and enforce). Apart from
+ a column that contains unique identifiers for each row there are no other required
+ datasets. Users are free to add any number of VectorData objects here. Table functionality
+ is already supported through compound types, which is analogous to storing an
+ array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides
+ an alternative structure to choose from when optimizing storage for anticipated
+ access patterns. Additionally, this type provides a way of creating a table without
+ having to define a compound type up front. Although this convenience may be attractive,
+ users should think carefully about how data will be accessed. DynamicTable is
+ more appropriate for column-centric access, whereas a dataset with a compound
+ type would be more appropriate for row-centric access. Finally, data size should
+ also be taken into account. For small tables, performance loss may be an acceptable
+ trade-off for the flexibility of a DynamicTable. For example, DynamicTable was
+ originally developed for storing trial data and spike unit metadata. Both of these
+ use cases are expected to produce relatively small tables, so the spatial locality
+ of multiple datasets present in a DynamicTable is not expected to have a significant
+ performance impact. Additionally, requirements of trial and unit metadata tables
+ are sufficiently diverse that performance implications can be overlooked in favor
+ of usability.
+ attributes:
+ - name: colnames
+ dtype: text
+ dims:
+ - num_columns
+ shape:
+ - null
+ doc: The names of the columns in this table. This should be used to specify
+ an order to the columns.
+ - name: description
+ dtype: text
+ doc: Description of what is in this dynamic table.
+ datasets:
+ - name: id
+ data_type_inc: ElementIdentifiers
+ dtype: int
+ dims:
+ - num_rows
+ shape:
+ - null
+ doc: Array of unique identifiers for the rows of this dynamic table.
+ - data_type_inc: VectorData
+ doc: Vector columns of this dynamic table.
+ quantity: '*'
+ - data_type_inc: VectorIndex
+ doc: Indices for the vector columns of this dynamic table.
+ quantity: '*'
diff --git a/nwb-schema/2.2.4 b/nwb-schema/2.2.4
deleted file mode 160000
index 24fba617..00000000
--- a/nwb-schema/2.2.4
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 24fba6174ddbad171ee5bb824edfa31f86b1b16d
diff --git a/nwb-schema/2.2.4/core/nwb.base.yaml b/nwb-schema/2.2.4/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.4/core/nwb.behavior.yaml b/nwb-schema/2.2.4/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.4/core/nwb.device.yaml b/nwb-schema/2.2.4/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.4/core/nwb.ecephys.yaml b/nwb-schema/2.2.4/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.4/core/nwb.epoch.yaml b/nwb-schema/2.2.4/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.4/core/nwb.file.yaml b/nwb-schema/2.2.4/core/nwb.file.yaml
new file mode 100644
index 00000000..3c141b49
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.file.yaml
@@ -0,0 +1,439 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.2.4
+ 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 relevent 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 relevent 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: '*'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
+ - 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: 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
diff --git a/nwb-schema/2.2.4/core/nwb.icephys.yaml b/nwb-schema/2.2.4/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.4/core/nwb.image.yaml b/nwb-schema/2.2.4/core/nwb.image.yaml
new file mode 100644
index 00000000..50d3367a
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.image.yaml
@@ -0,0 +1,192 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - r, g, b
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - 3
+ doc: Images presented to subject, either grayscale or RGB
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.4/core/nwb.misc.yaml b/nwb-schema/2.2.4/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.4/core/nwb.namespace.yaml b/nwb-schema/2.2.4/core/nwb.namespace.yaml
new file mode 100644
index 00000000..3a992098
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.4
diff --git a/nwb-schema/2.2.4/core/nwb.ogen.yaml b/nwb-schema/2.2.4/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.4/core/nwb.ophys.yaml b/nwb-schema/2.2.4/core/nwb.ophys.yaml
new file mode 100644
index 00000000..9314d351
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.ophys.yaml
@@ -0,0 +1,326 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - width|height
+ - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_inc: PlaneSegmentation
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+
+- neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz. If the corresponding TimeSeries is present, the rate should be stored
+ there instead.
+ quantity: '?'
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - x, y
+ - x, y, z
+ shape:
+ - 2
+ - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_inc: OpticalChannel
+ doc: An optical channel used to record from an imaging plane.
+ quantity: '+'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_inc: CorrectedImageStack
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+
+- neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.4/core/nwb.retinotopy.yaml b/nwb-schema/2.2.4/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..e8972395
--- /dev/null
+++ b/nwb-schema/2.2.4/core/nwb.retinotopy.yaml
@@ -0,0 +1,234 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ This group does not store the raw responses imaged during retinotopic mapping or the
+ stimuli presented, but rather the resulting phase and power maps after applying a Fourier
+ transform on the averaged responses.
+ Note: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the first measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_1_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the second measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the second measured axis. Response is scaled so 0.0 is
+ no power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - axis_1, axis_2
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius',
+ 'theta'].
+ - name: focal_depth_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ quantity: '?'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
+ - name: sign_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: vasculature_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.4/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.2.4/hdmf-common-schema/common/namespace.yaml
new file mode 100644
index 00000000..42df23e4
--- /dev/null
+++ b/nwb-schema/2.2.4/hdmf-common-schema/common/namespace.yaml
@@ -0,0 +1,21 @@
+namespaces:
+- name: hdmf-common
+ doc: Common data structures provided by HDMF
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ full_name: HDMF Common
+ schema:
+ - doc: data types for a column-based table
+ source: table.yaml
+ title: Table data types
+ - doc: data types for different types of sparse matrices
+ source: sparse.yaml
+ version: 1.1.3
diff --git a/nwb-schema/2.2.4/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.2.4/hdmf-common-schema/common/sparse.yaml
new file mode 100644
index 00000000..49f9a526
--- /dev/null
+++ b/nwb-schema/2.2.4/hdmf-common-schema/common/sparse.yaml
@@ -0,0 +1,24 @@
+groups:
+- data_type_def: CSRMatrix
+ doc: a compressed sparse row matrix
+ attributes:
+ - name: shape
+ dtype: int
+ shape:
+ - 2
+ doc: the shape of this sparse matrix
+ datasets:
+ - name: indices
+ dtype: int
+ shape:
+ - null
+ doc: column indices
+ - name: indptr
+ dtype: int
+ shape:
+ - null
+ doc: index pointer
+ - name: data
+ shape:
+ - null
+ doc: values in the matrix
diff --git a/nwb-schema/2.2.4/hdmf-common-schema/common/table.yaml b/nwb-schema/2.2.4/hdmf-common-schema/common/table.yaml
new file mode 100644
index 00000000..9ed2ff0e
--- /dev/null
+++ b/nwb-schema/2.2.4/hdmf-common-schema/common/table.yaml
@@ -0,0 +1,155 @@
+datasets:
+- data_type_def: Data
+ doc: An abstract data type for a dataset.
+
+- data_type_def: Index
+ data_type_inc: Data
+ doc: Pointers that index data values.
+ attributes:
+ - name: target
+ dtype:
+ target_type: Data
+ reftype: object
+ doc: Target dataset that this index applies to.
+
+- data_type_def: VectorData
+ data_type_inc: Data
+ doc: An n-dimensional dataset representing a column of a DynamicTable.
+ If used without an accompanying VectorIndex, first dimension is
+ along the rows of the DynamicTable and each step along the first
+ dimension is a cell of the larger table. VectorData can also be
+ used to represent a ragged array if paired with a VectorIndex.
+ This allows for storing arrays of varying length in a single cell
+ of the DynamicTable by indexing into this VectorData. The first
+ vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at
+ VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+ dims:
+ - - dim0
+ - - dim0
+ - dim1
+ - - dim0
+ - dim1
+ - dim2
+ - - dim0
+ - dim1
+ - dim2
+ - dim3
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of what these vectors represent.
+
+- data_type_def: VectorIndex
+ data_type_inc: Index
+ doc: Used with VectorData to encode a ragged array. An array of indices
+ into the first dimension of the target VectorData, and forming a map
+ between the rows of a DynamicTable and the indices of the VectorData.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: target
+ dtype:
+ target_type: VectorData
+ reftype: object
+ doc: Reference to the target dataset that this index applies to.
+
+- data_type_def: ElementIdentifiers
+ data_type_inc: Data
+ default_name: element_id
+ dtype: int
+ dims:
+ - num_elements
+ shape:
+ - null
+ doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
+
+- data_type_def: DynamicTableRegion
+ data_type_inc: VectorData
+ dtype: int
+ doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a
+ link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s)
+ (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without
+ data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s.
+ `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell
+ of a `DynamicTable` can reference many rows of another `DynamicTable`.
+ dims:
+ - num_rows
+ shape:
+ - null
+ attributes:
+ - name: table
+ dtype:
+ target_type: DynamicTable
+ reftype: object
+ doc: Reference to the DynamicTable object that this region applies to.
+ - name: description
+ dtype: text
+ doc: Description of what this table region points to.
+
+groups:
+- data_type_def: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- data_type_def: DynamicTable
+ data_type_inc: Container
+ doc: A group containing multiple datasets that are aligned on the first dimension
+ (Currently, this requirement if left up to APIs to check and enforce). Apart from
+ a column that contains unique identifiers for each row there are no other required
+ datasets. Users are free to add any number of VectorData objects here. Table functionality
+ is already supported through compound types, which is analogous to storing an
+ array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides
+ an alternative structure to choose from when optimizing storage for anticipated
+ access patterns. Additionally, this type provides a way of creating a table without
+ having to define a compound type up front. Although this convenience may be attractive,
+ users should think carefully about how data will be accessed. DynamicTable is
+ more appropriate for column-centric access, whereas a dataset with a compound
+ type would be more appropriate for row-centric access. Finally, data size should
+ also be taken into account. For small tables, performance loss may be an acceptable
+ trade-off for the flexibility of a DynamicTable. For example, DynamicTable was
+ originally developed for storing trial data and spike unit metadata. Both of these
+ use cases are expected to produce relatively small tables, so the spatial locality
+ of multiple datasets present in a DynamicTable is not expected to have a significant
+ performance impact. Additionally, requirements of trial and unit metadata tables
+ are sufficiently diverse that performance implications can be overlooked in favor
+ of usability.
+ attributes:
+ - name: colnames
+ dtype: text
+ dims:
+ - num_columns
+ shape:
+ - null
+ doc: The names of the columns in this table. This should be used to specify
+ an order to the columns.
+ - name: description
+ dtype: text
+ doc: Description of what is in this dynamic table.
+ datasets:
+ - name: id
+ data_type_inc: ElementIdentifiers
+ dtype: int
+ dims:
+ - num_rows
+ shape:
+ - null
+ doc: Array of unique identifiers for the rows of this dynamic table.
+ - data_type_inc: VectorData
+ doc: Vector columns of this dynamic table.
+ quantity: '*'
+ - data_type_inc: VectorIndex
+ doc: Indices for the vector columns of this dynamic table.
+ quantity: '*'
diff --git a/nwb-schema/2.2.5 b/nwb-schema/2.2.5
deleted file mode 160000
index aa7702e1..00000000
--- a/nwb-schema/2.2.5
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit aa7702e1cc5be2b85f19206e0d1d50bc4bd7e296
diff --git a/nwb-schema/2.2.5/core/nwb.base.yaml b/nwb-schema/2.2.5/core/nwb.base.yaml
new file mode 100644
index 00000000..f926cab3
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.base.yaml
@@ -0,0 +1,206 @@
+datasets:
+- neurodata_type_def: NWBData
+ neurodata_type_inc: Data
+ doc: An abstract data type for a dataset.
+
+- neurodata_type_def: Image
+ neurodata_type_inc: NWBData
+ dtype: numeric
+ dims:
+ - - x
+ - y
+ - - x
+ - y
+ - r, g, b
+ - - x
+ - y
+ - r, g, b, a
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - 4
+ doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the
+ third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or
+ (x, y, (r, g, b, a)).
+ attributes:
+ - name: resolution
+ dtype: float32
+ doc: Pixel resolution of the image, in pixels per centimeter.
+ required: false
+ - name: description
+ dtype: text
+ doc: Description of the image.
+ required: false
+
+groups:
+- neurodata_type_def: NWBContainer
+ neurodata_type_inc: Container
+ doc: An abstract data type for a generic container storing collections of data and
+ metadata. Base type for all data and metadata containers.
+
+- neurodata_type_def: NWBDataInterface
+ neurodata_type_inc: NWBContainer
+ doc: An abstract data type for a generic container storing collections of data,
+ as opposed to metadata.
+
+- neurodata_type_def: TimeSeries
+ neurodata_type_inc: NWBDataInterface
+ doc: General purpose time series.
+ attributes:
+ - name: description
+ dtype: text
+ default_value: no description
+ doc: Description of the time series.
+ required: false
+ - name: comments
+ dtype: text
+ default_value: no comments
+ doc: Human-readable comments about the TimeSeries. This second descriptive field
+ can be used to store additional information, or descriptive information if the
+ primary description field is populated with a computer-readable string.
+ required: false
+ datasets:
+ - name: data
+ dims:
+ - - num_times
+ - - num_times
+ - num_DIM2
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - - num_times
+ - num_DIM2
+ - num_DIM3
+ - num_DIM4
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension
+ should always represent time. This can also be used to store binary data
+ (e.g., image frames). This can also be a link to data stored in an external file.
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as signed 16-bit integers (int16 range
+ -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data
+ acquisition system gain is 8000X, then the 'conversion' multiplier to get from
+ raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
+ required: false
+ - name: resolution
+ dtype: float32
+ default_value: -1.0
+ doc: Smallest meaningful difference between values in data, stored in the specified
+ by unit, e.g., the change in value of the least significant bit, or a larger
+ number if signal noise is known to be present. If unknown, use -1.0.
+ required: false
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: starting_time
+ dtype: float64
+ doc: Timestamp of the first sample in seconds. When timestamps are uniformly
+ spaced, the timestamp of the first sample can be specified and all subsequent
+ ones calculated from the sampling rate attribute.
+ quantity: '?'
+ attributes:
+ - name: rate
+ dtype: float32
+ doc: Sampling rate, in Hz.
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for time, which is fixed to 'seconds'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Timestamps for samples stored in data, in seconds, relative to the
+ common experiment master-clock stored in NWBFile.timestamps_reference_time.
+ quantity: '?'
+ attributes:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+ - name: control
+ dtype: uint8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Numerical labels that apply to each time point in data for the purpose of
+ querying and slicing data by these values. If present, the length of this
+ array should be the same size as the first dimension of data.
+ quantity: '?'
+ - name: control_description
+ dtype: text
+ dims:
+ - num_control_values
+ shape:
+ - null
+ doc: Description of each control value. Must be present if control is present.
+ If present, control_description[0] should describe time points where control == 0.
+ quantity: '?'
+ groups:
+ - name: sync
+ doc: Lab-specific time and sync information as provided directly from hardware
+ devices and that is necessary for aligning all acquired time information to
+ a common timebase. The timestamp array stores time in the common timebase.
+ This group will usually only be populated in TimeSeries that are
+ stored external to the NWB file, in files storing raw data. Once timestamp
+ data is calculated, the contents of 'sync' are mostly for archival purposes.
+ quantity: '?'
+
+- neurodata_type_def: ProcessingModule
+ neurodata_type_inc: NWBContainer
+ doc: A collection of processed data.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of processed data.
+ groups:
+ - neurodata_type_inc: NWBDataInterface
+ doc: Data objects stored in this collection.
+ quantity: '*'
+ - neurodata_type_inc: DynamicTable
+ doc: Tables stored in this collection.
+ quantity: '*'
+
+- neurodata_type_def: Images
+ neurodata_type_inc: NWBDataInterface
+ default_name: Images
+ doc: A collection of images.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this collection of images.
+ datasets:
+ - neurodata_type_inc: Image
+ doc: Images stored in this collection.
+ quantity: '+'
diff --git a/nwb-schema/2.2.5/core/nwb.behavior.yaml b/nwb-schema/2.2.5/core/nwb.behavior.yaml
new file mode 100644
index 00000000..300b48db
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.behavior.yaml
@@ -0,0 +1,116 @@
+groups:
+- neurodata_type_def: SpatialSeries
+ neurodata_type_inc: TimeSeries
+ doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\
+ \ is a 2D array storing position or direction relative to some reference frame.\
+ \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\
+ \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\
+ \ for direction. For example, if representing gaze direction, 'straight-ahead'\
+ \ might be a specific pixel on the monitor, or some other point in space. For\
+ \ position data, the 0,0 point might be the top-left corner of an enclosure, as\
+ \ viewed from the tracking camera. The unit of data will indicate how to interpret\
+ \ SpatialSeries values."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: 1-D or 2-D array storing position or direction relative to some reference frame.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value
+ is 'meters'. Actual stored values are not necessarily stored in these units.
+ To access the data in these units, multiply 'data' by 'conversion'.
+ required: false
+ - name: reference_frame
+ dtype: text
+ doc: Description defining what exactly 'straight-ahead' means.
+ quantity: '?'
+
+- neurodata_type_def: BehavioralEpochs
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEpochs
+ doc: TimeSeries for storing behavioral epochs. The objective of this and the other
+ two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is
+ to provide generic hooks for software tools/scripts. This allows a tool/script
+ to take the output one specific interface (e.g., UnitTimes) and plot that data
+ relative to another data modality (e.g., behavioral events) without having to
+ define all possible modalities in advance. Declaring one of these interfaces means
+ that one or more TimeSeries of the specified type is published. These TimeSeries
+ should reside in a group having the same name as the interface. For example, if
+ a BehavioralTimeSeries interface is declared, the module will have one or more
+ TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs
+ should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries
+ is for continuous data.
+ groups:
+ - neurodata_type_inc: IntervalSeries
+ doc: IntervalSeries object containing start and stop times of epochs.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralEvents
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralEvents
+ doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing behavioral events.
+ quantity: '*'
+
+- neurodata_type_def: BehavioralTimeSeries
+ neurodata_type_inc: NWBDataInterface
+ default_name: BehavioralTimeSeries
+ doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs
+ for more details.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing continuous behavioral data.
+ quantity: '*'
+
+- neurodata_type_def: PupilTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: PupilTracking
+ doc: Eye-tracking data, representing pupil size.
+ groups:
+ - neurodata_type_inc: TimeSeries
+ doc: TimeSeries object containing time series data on pupil size.
+ quantity: '+'
+
+- neurodata_type_def: EyeTracking
+ neurodata_type_inc: NWBDataInterface
+ default_name: EyeTracking
+ doc: Eye-tracking data, representing direction of gaze.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing data measuring direction of gaze.
+ quantity: '*'
+
+- neurodata_type_def: CompassDirection
+ neurodata_type_inc: NWBDataInterface
+ default_name: CompassDirection
+ doc: With a CompassDirection interface, a module publishes a SpatialSeries object
+ representing a floating point value for theta. The SpatialSeries::reference_frame
+ field should indicate what direction corresponds to 0 and which is the direction
+ of rotation (this should be clockwise). The si_unit for the SpatialSeries should
+ be radians or degrees.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing direction of gaze travel.
+ quantity: '*'
+
+- neurodata_type_def: Position
+ neurodata_type_inc: NWBDataInterface
+ default_name: Position
+ doc: Position data, whether along the x, x/y or x/y/z axis.
+ groups:
+ - neurodata_type_inc: SpatialSeries
+ doc: SpatialSeries object containing position data.
+ quantity: '+'
diff --git a/nwb-schema/2.2.5/core/nwb.device.yaml b/nwb-schema/2.2.5/core/nwb.device.yaml
new file mode 100644
index 00000000..d883e59a
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.device.yaml
@@ -0,0 +1,14 @@
+groups:
+- neurodata_type_def: Device
+ neurodata_type_inc: NWBContainer
+ doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of the device (e.g., model, firmware version, processing software version, etc.)
+ as free-form text.
+ required: false
+ - name: manufacturer
+ dtype: text
+ doc: The name of the manufacturer of the device.
+ required: false
diff --git a/nwb-schema/2.2.5/core/nwb.ecephys.yaml b/nwb-schema/2.2.5/core/nwb.ecephys.yaml
new file mode 100644
index 00000000..90c8655d
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.ecephys.yaml
@@ -0,0 +1,324 @@
+groups:
+- neurodata_type_def: ElectricalSeries
+ neurodata_type_inc: TimeSeries
+ doc: A time series of acquired voltage data from extracellular recordings.
+ The data field is an int or float array storing data in volts. The first
+ dimension should always represent time. The second dimension, if present,
+ should represent channels.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_channels
+ - - num_times
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Recorded voltage data.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: 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' and
+ 'channel_conversion' (if present).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+ - name: channel_conversion
+ dtype: float32
+ dims:
+ - num_channels
+ shape:
+ - null
+ doc: 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.
+ quantity: '?'
+ attributes:
+ - name: axis
+ dtype: int32
+ value: 1
+ doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion
+ factor corresponds to. This value is fixed to 1.
+
+- neurodata_type_def: SpikeEventSeries
+ neurodata_type_inc: ElectricalSeries
+ doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This
+ may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
+ field should describe how events were detected. All SpikeEventSeries should
+ reside in a module (under EventWaveform interface) even if the spikes were reported
+ and stored by hardware. All events span the same recording channels and store
+ snapshots of equal duration. TimeSeries::data array structure: [num events]
+ [num channels] [num samples] (or [num events] [num samples] for single electrode)."
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_events
+ - num_samples
+ - - num_events
+ - num_channels
+ - num_samples
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveforms.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement for waveforms, which is fixed to 'volts'.
+ - name: timestamps
+ dtype: float64
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: 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:
+ - name: interval
+ dtype: int32
+ value: 1
+ doc: Value is '1'
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
+
+- neurodata_type_def: FeatureExtraction
+ neurodata_type_inc: NWBDataInterface
+ default_name: FeatureExtraction
+ doc: Features, such as PC1 and PC2, that are extracted from signals stored in a
+ SpikeEventSeries or other source.
+ datasets:
+ - name: description
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of features (eg, ''PC1'') for each of the extracted features.
+ - name: features
+ dtype: float32
+ dims:
+ - num_events
+ - num_channels
+ - num_features
+ shape:
+ - null
+ - null
+ - null
+ doc: Multi-dimensional array of features extracted from each event.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of events that features correspond to (can be a link).
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion pointer to the electrodes that this time series was generated from.
+
+- neurodata_type_def: EventDetection
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventDetection
+ doc: Detected spike events from voltage trace(s).
+ datasets:
+ - name: detection_method
+ dtype: text
+ doc: Description of how events were detected, such as voltage threshold, or dV/dT
+ threshold, as well as relevant values.
+ - name: source_idx
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: 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.
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Timestamps of events, in seconds.
+ attributes:
+ - name: unit
+ dtype: text
+ value: seconds
+ doc: Unit of measurement for event times, which is fixed to 'seconds'.
+ links:
+ - name: source_electricalseries
+ target_type: ElectricalSeries
+ doc: Link to the ElectricalSeries that this data was calculated from. Metadata
+ about electrodes and their position can be read from that ElectricalSeries so
+ it's not necessary to include that information here.
+
+- neurodata_type_def: EventWaveform
+ neurodata_type_inc: NWBDataInterface
+ default_name: EventWaveform
+ doc: Represents either the waveforms of detected events, as extracted from a raw
+ data trace in /acquisition, or the event waveforms that were stored during experiment
+ acquisition.
+ groups:
+ - neurodata_type_inc: SpikeEventSeries
+ doc: SpikeEventSeries object(s) containing detected spike event waveforms.
+ quantity: '*'
+
+- neurodata_type_def: FilteredEphys
+ neurodata_type_inc: NWBDataInterface
+ default_name: FilteredEphys
+ doc: Electrophysiology data from one or more channels that has been subjected to filtering.
+ Examples of filtered data include Theta and Gamma (LFP has its own interface).
+ FilteredEphys modules publish an ElectricalSeries for each filtered channel or
+ set of channels. The name of each ElectricalSeries is arbitrary but should be
+ informative. The source of the filtered data, whether this is from analysis of
+ another time series or as acquired by hardware, should be noted in each's TimeSeries::description
+ field. There is no assumed 1::1 correspondence between filtered ephys signals
+ and electrodes, as a single signal can apply to many nearby electrodes, and one
+ electrode may have different filtered (e.g., theta and/or gamma) signals represented.
+ Filter properties should be noted in the ElectricalSeries.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing filtered electrophysiology data.
+ quantity: '+'
+
+- neurodata_type_def: LFP
+ neurodata_type_inc: NWBDataInterface
+ default_name: LFP
+ doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries
+ will identify which channels are providing LFP data. Filter properties should
+ be noted in the ElectricalSeries description or comments field.
+ groups:
+ - neurodata_type_inc: ElectricalSeries
+ doc: ElectricalSeries object(s) containing LFP data for one or more channels.
+ quantity: '+'
+
+- neurodata_type_def: ElectrodeGroup
+ neurodata_type_inc: NWBContainer
+ doc: A physical grouping of electrodes, e.g. a shank of an array.
+ attributes:
+ - name: description
+ dtype: text
+ doc: Description of this electrode group.
+ - name: location
+ dtype: text
+ doc: Location of electrode group. Specify the area, layer, comments on estimation
+ of area/layer, etc. Use standard atlas names for anatomical regions when possible.
+ datasets:
+ - name: position
+ dtype:
+ - name: x
+ dtype: float32
+ doc: x coordinate
+ - name: y
+ dtype: float32
+ doc: y coordinate
+ - name: z
+ dtype: float32
+ doc: z coordinate
+ doc: stereotaxic or common framework coordinates
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the device that was used to record from this electrode group.
+
+# The types below have been deprecated
+- neurodata_type_def: ClusterWaveforms
+ neurodata_type_inc: NWBDataInterface
+ default_name: ClusterWaveforms
+ doc: DEPRECATED The mean waveform shape, including standard deviation, of the different
+ clusters. Ideally, the waveform analysis should be performed on data that is only
+ high-pass filtered. This is a separate module because it is expected to require
+ updating. For example, IMEC probes may require different storage requirements
+ to store/display mean waveforms, requiring a new interface or an extension of
+ this one.
+ datasets:
+ - name: waveform_filtering
+ dtype: text
+ doc: Filtering applied to data before generating mean/sd
+ - name: waveform_mean
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: 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)
+ - name: waveform_sd
+ dtype: float32
+ dims:
+ - num_clusters
+ - num_samples
+ shape:
+ - null
+ - null
+ doc: Stdev of waveforms for each cluster, using the same indices as in mean
+ links:
+ - name: clustering_interface
+ target_type: Clustering
+ doc: Link to Clustering interface that was the source of the clustered data
+
+- neurodata_type_def: Clustering
+ neurodata_type_inc: NWBDataInterface
+ default_name: Clustering
+ doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g.,
+ klustakwik) or as a result of manual sorting.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters
+ curated using Klusters, etc)
+ - name: num
+ dtype: int32
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Cluster number of each event
+ - name: peak_over_rms
+ dtype: float32
+ dims:
+ - num_clusters
+ shape:
+ - null
+ doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
+ a basic clustering metric).
+ - name: times
+ dtype: float64
+ dims:
+ - num_events
+ shape:
+ - null
+ doc: Times of clustered events, in seconds. This may be a link to times field
+ in associated FeatureExtraction module.
diff --git a/nwb-schema/2.2.5/core/nwb.epoch.yaml b/nwb-schema/2.2.5/core/nwb.epoch.yaml
new file mode 100644
index 00000000..c4164691
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.epoch.yaml
@@ -0,0 +1,44 @@
+groups:
+- neurodata_type_def: TimeIntervals
+ neurodata_type_inc: DynamicTable
+ doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
+ to.
+ datasets:
+ - name: start_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Start time of epoch, in seconds.
+ - name: stop_time
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Stop time of epoch, in seconds.
+ - name: tags
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: User-defined tags that identify or categorize events.
+ quantity: '?'
+ - name: tags_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for tags.
+ quantity: '?'
+ - name: timeseries
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: idx_start
+ dtype: int32
+ doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the
+ referenced TimeSeries. The first dimension of those arrays is always time.
+ - name: count
+ dtype: int32
+ doc: Number of data samples available in this time series, during this epoch.
+ - name: timeseries
+ dtype:
+ target_type: TimeSeries
+ reftype: object
+ doc: the TimeSeries that this index applies to.
+ doc: An index into a TimeSeries object.
+ quantity: '?'
+ - name: timeseries_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for timeseries.
+ quantity: '?'
diff --git a/nwb-schema/2.2.5/core/nwb.file.yaml b/nwb-schema/2.2.5/core/nwb.file.yaml
new file mode 100644
index 00000000..2376f36d
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.file.yaml
@@ -0,0 +1,439 @@
+groups:
+- neurodata_type_def: NWBFile
+ neurodata_type_inc: NWBContainer
+ name: root
+ doc: An NWB:N file storing cellular-based neurophysiology data from a single
+ experimental session.
+ attributes:
+ - name: nwb_version
+ dtype: text
+ value: 2.2.5
+ 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 relevent 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 relevent 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: '*'
+ - 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).
+ - name: y
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: y coordinate of the channel location in the brain (+y is inferior).
+ - name: z
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: z coordinate of the channel location in the brain (+z is right).
+ - name: imp
+ neurodata_type_inc: VectorData
+ dtype: float32
+ doc: Impedance of the channel.
+ - 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: float32
+ doc: Description of hardware filtering.
+ - 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 used for this electrode.
+ quantity: '?'
+ - name: intracellular_ephys
+ doc: Metadata related to intracellular electrophysiology.
+ quantity: '?'
+ datasets:
+ - name: filtering
+ dtype: text
+ doc: 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: The table which groups different PatchClampSeries together.
+ 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: '?'
+ - 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: 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
diff --git a/nwb-schema/2.2.5/core/nwb.icephys.yaml b/nwb-schema/2.2.5/core/nwb.icephys.yaml
new file mode 100644
index 00000000..a3065166
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.icephys.yaml
@@ -0,0 +1,247 @@
+groups:
+- neurodata_type_def: PatchClampSeries
+ neurodata_type_inc: TimeSeries
+ doc: An abstract base class for patch-clamp data - stimulus or response,
+ current or voltage.
+ attributes:
+ - name: stimulus_description
+ dtype: text
+ doc: Protocol/stimulus name for this patch-clamp dataset.
+ - name: sweep_number
+ dtype: uint32
+ doc: Sweep number, allows to group different PatchClampSeries together.
+ required: false
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Recorded voltage or current.
+ attributes:
+ - name: unit
+ dtype: text
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: gain
+ dtype: float32
+ doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
+ quantity: '?'
+ links:
+ - name: electrode
+ target_type: IntracellularElectrode
+ doc: Link to IntracellularElectrode object that describes the electrode that was
+ used to apply or record this data.
+
+- neurodata_type_def: CurrentClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Voltage data from an intracellular current-clamp recording. A
+ corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
+ used to store the current injected.
+ datasets:
+ - name: data
+ doc: Recorded voltage.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+ - name: bias_current
+ dtype: float32
+ doc: Bias current, in amps.
+ quantity: '?'
+ - name: bridge_balance
+ dtype: float32
+ doc: Bridge balance, in ohms.
+ quantity: '?'
+ - name: capacitance_compensation
+ dtype: float32
+ doc: Capacitance compensation, in farads.
+ quantity: '?'
+
+- neurodata_type_def: IZeroClampSeries
+ neurodata_type_inc: CurrentClampSeries
+ doc: Voltage data from an intracellular recording when all current
+ and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
+ There is no CurrentClampStimulusSeries associated with an IZero series because
+ the amplifier is disconnected and no stimulus can reach the cell.
+ datasets:
+ - name: bias_current
+ dtype: float32
+ value: 0.0
+ doc: Bias current, in amps, fixed to 0.0.
+ - name: bridge_balance
+ dtype: float32
+ value: 0.0
+ doc: Bridge balance, in ohms, fixed to 0.0.
+ - name: capacitance_compensation
+ dtype: float32
+ value: 0.0
+ doc: Capacitance compensation, in farads, fixed to 0.0.
+
+- neurodata_type_def: CurrentClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus current applied during current clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus current applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+
+- neurodata_type_def: VoltageClampSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Current data from an intracellular voltage-clamp recording. A
+ corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
+ used to store the voltage injected.
+ datasets:
+ - name: data
+ doc: Recorded current.
+ attributes:
+ - name: unit
+ dtype: text
+ value: amperes
+ doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
+ Actual stored values are not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: capacitance_fast
+ dtype: float32
+ doc: Fast capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: capacitance_slow
+ dtype: float32
+ doc: Slow capacitance, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
+ - name: resistance_comp_bandwidth
+ dtype: float32
+ doc: Resistance compensation bandwidth, in hertz.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: hertz
+ doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
+ - name: resistance_comp_correction
+ dtype: float32
+ doc: Resistance compensation correction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
+ - name: resistance_comp_prediction
+ dtype: float32
+ doc: Resistance compensation prediction, in percent.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: percent
+ doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
+ - name: whole_cell_capacitance_comp
+ dtype: float32
+ doc: Whole cell capacitance compensation, in farads.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: farads
+ doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
+ - name: whole_cell_series_resistance_comp
+ dtype: float32
+ doc: Whole cell series resistance compensation, in ohms.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ value: ohms
+ doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.
+
+- neurodata_type_def: VoltageClampStimulusSeries
+ neurodata_type_inc: PatchClampSeries
+ doc: Stimulus voltage applied during a voltage clamp recording.
+ datasets:
+ - name: data
+ doc: Stimulus voltage applied.
+ attributes:
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Base unit of measurement for working with the data. which 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'.
+
+- neurodata_type_def: IntracellularElectrode
+ neurodata_type_inc: NWBContainer
+ doc: An intracellular electrode and its metadata.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of electrode (e.g., whole-cell, sharp, etc.).
+ - name: filtering
+ dtype: text
+ doc: Electrode specific filtering.
+ quantity: '?'
+ - name: initial_access_resistance
+ dtype: text
+ doc: Initial access resistance.
+ quantity: '?'
+ - name: location
+ dtype: text
+ doc: Location of the electrode. 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.
+ quantity: '?'
+ - name: resistance
+ dtype: text
+ doc: Electrode resistance, in ohms.
+ quantity: '?'
+ - name: seal
+ dtype: text
+ doc: Information about seal used for recording.
+ quantity: '?'
+ - name: slice
+ dtype: text
+ doc: Information about slice used for recording.
+ quantity: '?'
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that was used to record from this electrode.
+
+- neurodata_type_def: SweepTable
+ neurodata_type_inc: DynamicTable
+ doc: The table which groups different PatchClampSeries together.
+ datasets:
+ - name: sweep_number
+ neurodata_type_inc: VectorData
+ dtype: uint32
+ doc: Sweep number of the PatchClampSeries in that row.
+ - name: series
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: PatchClampSeries
+ reftype: object
+ doc: The PatchClampSeries with the sweep number in that row.
+ - name: series_index
+ neurodata_type_inc: VectorIndex
+ doc: Index for series.
diff --git a/nwb-schema/2.2.5/core/nwb.image.yaml b/nwb-schema/2.2.5/core/nwb.image.yaml
new file mode 100644
index 00000000..50d3367a
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.image.yaml
@@ -0,0 +1,192 @@
+datasets:
+- neurodata_type_def: GrayscaleImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ shape:
+ - null
+ - null
+ doc: A grayscale image.
+ dtype: numeric
+
+- neurodata_type_def: RGBImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b
+ shape:
+ - null
+ - null
+ - 3
+ doc: A color image.
+ dtype: numeric
+
+- neurodata_type_def: RGBAImage
+ neurodata_type_inc: Image
+ dims:
+ - x
+ - y
+ - r, g, b, a
+ shape:
+ - null
+ - null
+ - 4
+ doc: A color image with transparency.
+ dtype: numeric
+
+groups:
+- neurodata_type_def: ImageSeries
+ neurodata_type_inc: TimeSeries
+ doc: General image data that is common between acquisition and stimulus time series.
+ Sometimes the image data is stored in the file in a raw format while other
+ times it will be stored as a series of external image files in the host file system.
+ The data field will either be binary data, if the data is stored in the NWB file, or
+ empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z].
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: Binary data representing images across frames.
+ quantity: '?'
+ - name: dimension
+ dtype: int32
+ dims:
+ - rank
+ shape:
+ - null
+ doc: Number of pixels on x, y, (and z) axes.
+ quantity: '?'
+ - name: external_file
+ dtype: text
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Paths to one or more external file(s). The field is only present if format='external'.
+ This is only relevant if the image series is stored in the file system as one
+ or more image file(s). This field should NOT be used if the image is stored
+ in another NWB file and that file is linked to this file.
+ quantity: '?'
+ attributes:
+ - name: starting_frame
+ dtype: int32
+ dims:
+ - num_files
+ shape:
+ - null
+ doc: Each external image may contain one or more consecutive frames of the full
+ ImageSeries. This attribute serves as an index to indicate which frames each file
+ contains, to faciliate random access. The 'starting_frame' attribute, hence,
+ contains a list of frame numbers within the full ImageSeries of the first frame
+ of each file listed in the parent 'external_file' dataset. Zero-based indexing is
+ used (hence, the first element will always be zero). For example, if the
+ 'external_file' dataset has three paths to files and the first file has 5 frames,
+ the second file has 10 frames, and the third file has 20 frames, then this
+ attribute will have values [0, 5, 15]. If there is a single external file that
+ holds all of the frames of the ImageSeries (and so there is a single element in
+ the 'external_file' dataset), then this attribute should have value [0].
+ - name: format
+ dtype: text
+ default_value: raw
+ doc: Format of image. If this is 'external', then the attribute 'external_file'
+ contains the path information to the image files. If this is 'raw', then the raw
+ (single-channel) binary data is stored in the 'data' dataset. If this attribute
+ is not present, then the default format='raw' case is assumed.
+ quantity: '?'
+
+- neurodata_type_def: ImageMaskSeries
+ neurodata_type_inc: ImageSeries
+ doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array
+ contains an array of mask values that are applied to the displayed image. Mask
+ values are stored as RGBA. Mask can vary with time. The timestamps array indicates
+ the starting time of a mask, and that mask pattern continues until it's explicitly
+ changed.
+ links:
+ - name: masked_imageseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that this image mask is applied to.
+
+- neurodata_type_def: OpticalSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image data that is presented or recorded. A stimulus template movie will be
+ stored only as an image. When the image is presented as stimulus, additional data
+ is required, such as field of view (e.g., how much of the visual field the image
+ covers, or how what is the area of the target being imaged). If the OpticalSeries
+ represents acquired imaging data, orientation is also important.
+ datasets:
+ - name: distance
+ dtype: float32
+ doc: Distance from camera/monitor to target/eye.
+ quantity: '?'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width, height
+ - - width, height, depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ - name: data
+ dtype: numeric
+ dims:
+ - - frame
+ - x
+ - y
+ - - frame
+ - x
+ - y
+ - r, g, b
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - 3
+ doc: Images presented to subject, either grayscale or RGB
+ - name: orientation
+ dtype: text
+ doc: Description of image relative to some reference frame (e.g., which way is
+ up). Must also specify frame of reference.
+ quantity: '?'
+
+- neurodata_type_def: IndexSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores indices to image frames stored in an ImageSeries. The purpose of the
+ ImageIndexSeries is to allow a static image stack to be stored somewhere, and
+ the images in the stack to be referenced out-of-order. This can be for the display
+ of individual images, or of movie segments (as a movie is simply a series of images).
+ The data field stores the index of the frame in the referenced ImageSeries, and
+ the timestamps array indicates when that image was displayed.
+ datasets:
+ - name: data
+ dtype: int32
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Index of the frame in the referenced ImageSeries.
+ links:
+ - name: indexed_timeseries
+ target_type: ImageSeries
+ doc: Link to ImageSeries object containing images that are indexed.
diff --git a/nwb-schema/2.2.5/core/nwb.misc.yaml b/nwb-schema/2.2.5/core/nwb.misc.yaml
new file mode 100644
index 00000000..c8723ba3
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.misc.yaml
@@ -0,0 +1,279 @@
+groups:
+- neurodata_type_def: AbstractFeatureSeries
+ neurodata_type_inc: TimeSeries
+ doc: Abstract features, such as quantitative descriptions of sensory stimuli. The
+ TimeSeries::data field is a 2D array, storing those features (e.g., for visual
+ grating stimulus this might be orientation, spatial frequency and contrast). Null
+ stimuli (eg, uniform gray) can be marked as being an independent feature (eg,
+ 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values,
+ or through use of the TimeSeries::control fields. A set of features is considered
+ to persist until the next set of features is defined. The final set of features
+ stored should be the null set. This is useful when storing the raw stimulus
+ is impractical.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_features
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Values of each feature at each time.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: see 'feature_units'
+ doc: Since there can be different units for different features, store the units
+ in 'feature_units'. The default value for this attribute is "see 'feature_units'".
+ required: false
+ - name: feature_units
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Units of each feature.
+ quantity: '?'
+ - name: features
+ dtype: text
+ dims:
+ - num_features
+ shape:
+ - null
+ doc: Description of the features represented in TimeSeries::data.
+
+- neurodata_type_def: AnnotationSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores user annotations made during an experiment. The data[]
+ field stores a text array, and timestamps are stored for each annotation (ie,
+ interval=1). This is largely an alias to a standard TimeSeries storing a text
+ array but that is identifiable as storing annotations in a machine-readable way.
+ datasets:
+ - name: data
+ dtype: text
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Annotations made during an experiment.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: IntervalSeries
+ neurodata_type_inc: TimeSeries
+ doc: Stores intervals of data. The timestamps field stores the beginning and end
+ of intervals. The data field stores whether the interval just started (>0 value)
+ or ended (<0 value). Different interval types can be represented in the same series
+ by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature
+ C, etc). The field data stores an 8-bit integer. This is largely an alias of a
+ standard TimeSeries but that is identifiable as representing time intervals in
+ a machine-readable way.
+ datasets:
+ - name: data
+ dtype: int8
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Use values >0 if interval started, <0 if interval ended.
+ attributes:
+ - name: resolution
+ dtype: float32
+ value: -1.0
+ doc: Smallest meaningful difference between values in data. Annotations have
+ no units, so the value is fixed to -1.0.
+ - name: unit
+ dtype: text
+ value: n/a
+ doc: Base unit of measurement for working with the data. Annotations have
+ no units, so the value is fixed to 'n/a'.
+
+- neurodata_type_def: DecompositionSeries
+ neurodata_type_inc: TimeSeries
+ doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ - num_channels
+ - num_bands
+ shape:
+ - null
+ - null
+ - null
+ doc: Data decomposed into frequency bands.
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: no unit
+ doc: Base unit of measurement for working with the data. Actual stored values are
+ not necessarily stored in these units. To access the data in these units,
+ multiply 'data' by 'conversion'.
+ - name: metric
+ dtype: text
+ doc: The metric used, e.g. phase, amplitude, power.
+ groups:
+ - name: bands
+ neurodata_type_inc: DynamicTable
+ doc: Table for describing the bands that this series was generated from. There
+ should be one row in this table for each band.
+ datasets:
+ - name: band_name
+ neurodata_type_inc: VectorData
+ dtype: text
+ doc: Name of the band, e.g. theta.
+ - name: band_limits
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ - low, high
+ shape:
+ - null
+ - 2
+ doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use
+ 2 SD on either side of the center.
+ - name: band_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The mean Gaussian filters, in Hz.
+ - name: band_stdev
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - num_bands
+ shape:
+ - null
+ doc: The standard deviation of Gaussian filters, in Hz.
+ links:
+ - name: source_timeseries
+ target_type: TimeSeries
+ doc: Link to TimeSeries object that this data was calculated from. Metadata about
+ electrodes and their position can be read from that ElectricalSeries so it is
+ not necessary to store that information here.
+ quantity: '?'
+
+- neurodata_type_def: Units
+ neurodata_type_inc: DynamicTable
+ default_name: Units
+ doc: Data about spiking units. Event times of observed units (e.g. cell, synapse,
+ etc.) should be concatenated and stored in spike_times.
+ datasets:
+ - name: spike_times_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the spike_times dataset.
+ quantity: '?'
+ - name: spike_times
+ neurodata_type_inc: VectorData
+ dtype: float64
+ doc: Spike times for each unit.
+ quantity: '?'
+ attributes:
+ - name: resolution
+ dtype: float64
+ doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate
+ from which spike times were extracted, but could be larger if the acquisition time series was downsampled or
+ smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be
+ between samples.
+ required: false
+ - name: obs_intervals_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into the obs_intervals dataset.
+ quantity: '?'
+ - name: obs_intervals
+ neurodata_type_inc: VectorData
+ dtype: float64
+ dims:
+ - num_intervals
+ - start|end
+ shape:
+ - null
+ - 2
+ doc: Observation intervals for each unit.
+ quantity: '?'
+ - name: electrodes_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into electrodes.
+ quantity: '?'
+ - name: electrodes
+ neurodata_type_inc: DynamicTableRegion
+ doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
+ quantity: '?'
+ - name: electrode_group
+ neurodata_type_inc: VectorData
+ dtype:
+ target_type: ElectrodeGroup
+ reftype: object
+ doc: Electrode group that each spike unit came from.
+ quantity: '?'
+ - name: waveform_mean
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform mean for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
+ - name: waveform_sd
+ neurodata_type_inc: VectorData
+ dtype: float32
+ dims:
+ - - num_units
+ - num_samples
+ - - num_units
+ - num_samples
+ - num_electrodes
+ shape:
+ - - null
+ - null
+ - - null
+ - null
+ - null
+ doc: Spike waveform standard deviation for each spike unit.
+ quantity: '?'
+ attributes:
+ - name: sampling_rate
+ dtype: float32
+ doc: Sampling rate, in hertz.
+ required: false
+ - name: unit
+ dtype: text
+ value: volts
+ doc: Unit of measurement. This value is fixed to 'volts'.
+ required: false
diff --git a/nwb-schema/2.2.5/core/nwb.namespace.yaml b/nwb-schema/2.2.5/core/nwb.namespace.yaml
new file mode 100644
index 00000000..c3ec78ad
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.namespace.yaml
@@ -0,0 +1,60 @@
+namespaces:
+- name: core
+ doc: NWB namespace
+ author:
+ - Andrew Tritt
+ - Oliver Ruebel
+ - Ryan Ly
+ - Ben Dichter
+ - Keith Godfrey
+ - Jeff Teeters
+ contact:
+ - ajtritt@lbl.gov
+ - oruebel@lbl.gov
+ - rly@lbl.gov
+ - bdichter@lbl.gov
+ - keithg@alleninstitute.org
+ - jteeters@berkeley.edu
+ full_name: NWB core
+ schema:
+ - namespace: hdmf-common
+ - doc: This source module contains base data types used throughout the NWB:N data
+ format.
+ source: nwb.base.yaml
+ title: Base data types
+ - doc: This source module contains neurodata_types for device data.
+ source: nwb.device.yaml
+ title: Devices
+ - doc: This source module contains neurodata_types for epoch data.
+ source: nwb.epoch.yaml
+ title: Epochs
+ - doc: This source module contains neurodata_types for image data.
+ source: nwb.image.yaml
+ title: Image data
+ - doc: Main NWB:N file specification.
+ source: nwb.file.yaml
+ title: NWB:N file
+ - doc: Miscellaneous types.
+ source: nwb.misc.yaml
+ title: Miscellaneous neurodata_types.
+ - doc: This source module contains neurodata_types for behavior data.
+ source: nwb.behavior.yaml
+ title: Behavior
+ - doc: This source module contains neurodata_types for extracellular electrophysiology
+ data.
+ source: nwb.ecephys.yaml
+ title: Extracellular electrophysiology
+ - doc: This source module contains neurodata_types for intracellular electrophysiology
+ data.
+ source: nwb.icephys.yaml
+ title: Intracellular electrophysiology
+ - doc: This source module contains neurodata_types for opto-genetics data.
+ source: nwb.ogen.yaml
+ title: Optogenetics
+ - doc: This source module contains neurodata_types for optical physiology data.
+ source: nwb.ophys.yaml
+ title: Optical physiology
+ - doc: This source module contains neurodata_type for retinotopy data.
+ source: nwb.retinotopy.yaml
+ title: Retinotopy
+ version: 2.2.5
diff --git a/nwb-schema/2.2.5/core/nwb.ogen.yaml b/nwb-schema/2.2.5/core/nwb.ogen.yaml
new file mode 100644
index 00000000..1756ba85
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.ogen.yaml
@@ -0,0 +1,43 @@
+groups:
+- neurodata_type_def: OptogeneticSeries
+ neurodata_type_inc: TimeSeries
+ doc: An optogenetic stimulus.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - num_times
+ shape:
+ - null
+ doc: Applied power for optogenetic stimulus, in watts.
+ attributes:
+ - name: unit
+ dtype: text
+ value: watts
+ doc: Unit of measurement for data, which is fixed to 'watts'.
+ links:
+ - name: site
+ target_type: OptogeneticStimulusSite
+ doc: Link to OptogeneticStimulusSite object that describes the site to which this
+ stimulus was applied.
+
+- neurodata_type_def: OptogeneticStimulusSite
+ neurodata_type_inc: NWBContainer
+ doc: A site of optogenetic stimulation.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of stimulation site.
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: location
+ dtype: text
+ doc: Location of the stimulation site. 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.
+ links:
+ - name: device
+ target_type: Device
+ doc: Device that generated the stimulus.
diff --git a/nwb-schema/2.2.5/core/nwb.ophys.yaml b/nwb-schema/2.2.5/core/nwb.ophys.yaml
new file mode 100644
index 00000000..386dca9b
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.ophys.yaml
@@ -0,0 +1,326 @@
+groups:
+- neurodata_type_def: TwoPhotonSeries
+ neurodata_type_inc: ImageSeries
+ doc: Image stack recorded over time from 2-photon microscope.
+ attributes:
+ - name: pmt_gain
+ dtype: float32
+ doc: Photomultiplier gain.
+ required: false
+ - name: scan_line_rate
+ dtype: float32
+ doc: Lines imaged per second. This is also stored in /general/optophysiology but
+ is kept here as it is useful information for analysis, and so good to be stored
+ w/ the actual data.
+ required: false
+ datasets:
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - - width|height
+ - - width|height|depth
+ shape:
+ - - 2
+ - - 3
+ doc: Width, height and depth of image, or imaged area, in meters.
+ quantity: '?'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this TimeSeries data was generated.
+
+- neurodata_type_def: RoiResponseSeries
+ neurodata_type_inc: TimeSeries
+ doc: ROI responses over an imaging plane. The first dimension represents time.
+ The second dimension, if present, represents ROIs.
+ datasets:
+ - name: data
+ dtype: numeric
+ dims:
+ - - num_times
+ - - num_times
+ - num_ROIs
+ shape:
+ - - null
+ - - null
+ - null
+ doc: Signals from ROIs.
+ - name: rois
+ neurodata_type_inc: DynamicTableRegion
+ doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs
+ stored in this timeseries.
+
+- neurodata_type_def: DfOverF
+ neurodata_type_inc: NWBDataInterface
+ default_name: DfOverF
+ doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
+ should be the same as for segmentation (i.e., same names for ROIs and for image
+ planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing dF/F for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: Fluorescence
+ neurodata_type_inc: NWBDataInterface
+ default_name: Fluorescence
+ doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
+ of fluorescence should be the same as for segmentation (ie, same names for ROIs
+ and for image planes).
+ groups:
+ - neurodata_type_inc: RoiResponseSeries
+ doc: RoiResponseSeries object(s) containing fluorescence data for a ROI.
+ quantity: '+'
+
+- neurodata_type_def: ImageSegmentation
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImageSegmentation
+ doc: Stores pixels in an image that represent different regions of interest (ROIs)
+ or masks. All segmentation for a given imaging plane is stored together, with
+ storage for multiple imaging planes (masks) supported. Each ROI is stored in its
+ own subgroup, with the ROI group containing both a 2D mask and a list of pixels
+ that make up this mask. Segments can also be used for masking neuropil. If segmentation
+ is allowed to change with time, a new imaging plane (or module) is required and
+ ROI names should remain consistent between them.
+ groups:
+ - neurodata_type_inc: PlaneSegmentation
+ doc: Results from image segmentation of a specific imaging plane.
+ quantity: '+'
+
+- neurodata_type_def: PlaneSegmentation
+ neurodata_type_inc: DynamicTable
+ doc: Results from image segmentation of a specific imaging plane.
+ datasets:
+ - name: image_mask
+ neurodata_type_inc: VectorData
+ dims:
+ - - num_roi
+ - num_x
+ - num_y
+ - - num_roi
+ - num_x
+ - num_y
+ - num_z
+ shape:
+ - - null
+ - null
+ - null
+ - - null
+ - null
+ - null
+ - null
+ doc: ROI masks for each ROI. Each image mask is the size of the original imaging
+ plane (or volume) and members of the ROI are finite non-zero.
+ quantity: '?'
+ - name: pixel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into pixel_mask.
+ quantity: '?'
+ - name: pixel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Pixel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Pixel y-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the pixel.
+ doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ - name: voxel_mask_index
+ neurodata_type_inc: VectorIndex
+ doc: Index into voxel_mask.
+ quantity: '?'
+ - name: voxel_mask
+ neurodata_type_inc: VectorData
+ dtype:
+ - name: x
+ dtype: uint32
+ doc: Voxel x-coordinate.
+ - name: y
+ dtype: uint32
+ doc: Voxel y-coordinate.
+ - name: z
+ dtype: uint32
+ doc: Voxel z-coordinate.
+ - name: weight
+ dtype: float32
+ doc: Weight of the voxel.
+ doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel
+ masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation'
+ quantity: '?'
+ groups:
+ - name: reference_images
+ doc: Image stacks that the segmentation masks apply to.
+ groups:
+ - neurodata_type_inc: ImageSeries
+ doc: One or more image stacks that the masks apply to (can be one-element
+ stack).
+ quantity: '*'
+ links:
+ - name: imaging_plane
+ target_type: ImagingPlane
+ doc: Link to ImagingPlane object from which this data was generated.
+
+- neurodata_type_def: ImagingPlane
+ neurodata_type_inc: NWBContainer
+ doc: An imaging plane and its metadata.
+ quantity: '*'
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description of the imaging plane.
+ quantity: '?'
+ - name: excitation_lambda
+ dtype: float32
+ doc: Excitation wavelength, in nm.
+ - name: imaging_rate
+ dtype: float32
+ doc: Rate that images are acquired, in Hz. If the corresponding TimeSeries is present, the rate should be stored
+ there instead.
+ quantity: '?'
+ - name: indicator
+ dtype: text
+ doc: Calcium indicator.
+ - name: location
+ dtype: text
+ doc: Location of the imaging plane. 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: manifold
+ dtype: float32
+ dims:
+ - - height
+ - width
+ - x, y, z
+ - - height
+ - width
+ - depth
+ - x, y, z
+ shape:
+ - - null
+ - null
+ - 3
+ - - null
+ - null
+ - null
+ - 3
+ doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\
+ \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing."
+ quantity: '?'
+ attributes:
+ - name: conversion
+ dtype: float32
+ default_value: 1.0
+ doc: Scalar to multiply each element in data to convert it to the specified 'unit'.
+ If the data are stored in acquisition system units or other units
+ that require a conversion to be interpretable, multiply the data by 'conversion'
+ to convert the data to the specified 'unit'. e.g. if the data acquisition system
+ stores values in this object as pixels from x = -500 to 499, y = -500 to 499
+ that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get
+ from raw data acquisition pixel units to meters is 2/1000.
+ required: false
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Base unit of measurement for working with the data. The default value is 'meters'.
+ required: false
+ - name: origin_coords
+ dtype: float32
+ dims:
+ - - x, y
+ - - x, y, z
+ shape:
+ - - 2
+ - - 3
+ doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data.
+ See also reference_frame for what the physical location is relative to (e.g., bregma).
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for origin_coords. The default value is 'meters'.
+ - name: grid_spacing
+ dtype: float32
+ dims:
+ - - x, y
+ - - x, y, z
+ shape:
+ - - 2
+ - - 3
+ doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit.
+ Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid.
+ quantity: '?'
+ attributes:
+ - name: unit
+ dtype: text
+ default_value: meters
+ doc: Measurement units for grid_spacing. The default value is 'meters'.
+ - name: reference_frame
+ dtype: text
+ doc: Describes reference frame of origin_coords and grid_spacing.
+ For example, this can be a text description of the anatomical location and orientation of the grid
+ defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to
+ a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing.
+ If origin_coords and grid_spacing are not present, then this field is not required.
+ For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix
+ (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in
+ x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more
+ rightward, and larger numbers in z means more ventral, then enter the following --
+ origin_coords = (-1.2, -0.6, -2)
+ grid_spacing = (0.2, 0.2, 0.5)
+ reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior
+ axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more
+ rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)."
+ quantity: '?'
+ groups:
+ - neurodata_type_inc: OpticalChannel
+ doc: An optical channel used to record from an imaging plane.
+ quantity: '+'
+ links:
+ - name: device
+ target_type: Device
+ doc: Link to the Device object that was used to record from this electrode.
+
+- neurodata_type_def: OpticalChannel
+ neurodata_type_inc: NWBContainer
+ doc: An optical channel used to record from an imaging plane.
+ datasets:
+ - name: description
+ dtype: text
+ doc: Description or other notes about the channel.
+ - name: emission_lambda
+ dtype: float32
+ doc: Emission wavelength for channel, in nm.
+
+- neurodata_type_def: MotionCorrection
+ neurodata_type_inc: NWBDataInterface
+ default_name: MotionCorrection
+ doc: 'An image stack where all frames are shifted (registered) to a common coordinate
+ system, to account for movement and drift between frames. Note: each frame at
+ each point in time is assumed to be 2-D (has only x & y dimensions).'
+ groups:
+ - neurodata_type_inc: CorrectedImageStack
+ doc: Reuslts from motion correction of an image stack.
+ quantity: '+'
+
+- neurodata_type_def: CorrectedImageStack
+ neurodata_type_inc: NWBDataInterface
+ doc: Reuslts from motion correction of an image stack.
+ groups:
+ - name: corrected
+ neurodata_type_inc: ImageSeries
+ doc: Image stack with frames shifted to the common coordinates.
+ - name: xy_translation
+ neurodata_type_inc: TimeSeries
+ doc: Stores the x,y delta necessary to align each frame to the common coordinates,
+ for example, to align each frame to a reference image.
+ links:
+ - name: original
+ target_type: ImageSeries
+ doc: Link to ImageSeries object that is being registered.
diff --git a/nwb-schema/2.2.5/core/nwb.retinotopy.yaml b/nwb-schema/2.2.5/core/nwb.retinotopy.yaml
new file mode 100644
index 00000000..e8972395
--- /dev/null
+++ b/nwb-schema/2.2.5/core/nwb.retinotopy.yaml
@@ -0,0 +1,234 @@
+groups:
+- neurodata_type_def: ImagingRetinotopy
+ neurodata_type_inc: NWBDataInterface
+ default_name: ImagingRetinotopy
+ doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
+ Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to
+ specific stimuli and a combined polarity map from which to identify visual areas.
+ This group does not store the raw responses imaged during retinotopic mapping or the
+ stimuli presented, but rather the resulting phase and power maps after applying a Fourier
+ transform on the averaged responses.
+ Note: for data consistency, all images and arrays are stored in the format [row][column]
+ and [row, col], which equates to [y][x]. Field of view and dimension arrays may
+ appear backward (i.e., y before x).'
+ datasets:
+ - name: axis_1_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the first measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_1_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the first measured axis. Response is scaled so 0.0 is no
+ power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_phase_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Phase response to stimulus on the second measured axis.
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_2_power_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Power response on the second measured axis. Response is scaled so 0.0 is
+ no power in the response and 1.0 is maximum relative power.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: unit
+ dtype: text
+ doc: Unit that axis data is stored in (e.g., degrees).
+ - name: axis_descriptions
+ dtype: text
+ dims:
+ - axis_1, axis_2
+ shape:
+ - 2
+ doc: Two-element array describing the contents of the two response axis fields.
+ Description should be something like ['altitude', 'azimuth'] or '['radius',
+ 'theta'].
+ - name: focal_depth_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth,
+ wavelength) as data collection. Array format: [rows][columns].'
+ quantity: '?'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value.
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: focal_depth
+ dtype: float32
+ doc: Focal depth offset, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
+ - name: sign_map
+ dtype: float32
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2.
+ quantity: '?'
+ attributes:
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: vasculature_image
+ dtype: uint16
+ dims:
+ - num_rows
+ - num_cols
+ shape:
+ - null
+ - null
+ doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
+ attributes:
+ - name: bits_per_pixel
+ dtype: int32
+ doc: Number of bits used to represent each value. This is necessary to determine
+ maximum (white) pixel value
+ - name: dimension
+ dtype: int32
+ dims:
+ - num_rows, num_cols
+ shape:
+ - 2
+ doc: 'Number of rows and columns in the image. NOTE: row, column representation
+ is equivalent to height, width.'
+ - name: field_of_view
+ dtype: float32
+ dims:
+ - height, width
+ shape:
+ - 2
+ doc: Size of viewing area, in meters.
+ - name: format
+ dtype: text
+ doc: Format of image. Right now only 'raw' is supported.
diff --git a/nwb-schema/2.2.5/hdmf-common-schema b/nwb-schema/2.2.5/hdmf-common-schema
new file mode 160000
index 00000000..b2e7b42c
--- /dev/null
+++ b/nwb-schema/2.2.5/hdmf-common-schema
@@ -0,0 +1 @@
+Subproject commit b2e7b42c2daedbb140bc310b9368bf9da116ced0