Version v2.0.0-beta Oct 03, 2019

1. Format Overview

1.1. Namespace – NWB core

  • Description: NWB namespace
  • Name: core
  • Full Name: NWB core
  • Version: 2.1.0
  • Authors:
    • Andrew Tritt
    • Oliver Ruebel
    • Ryan Ly
    • Ben Dichter
    • Keith Godfrey
    • Jeff Teeters
  • Contacts:
  • Schema:
    • 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 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

2. Type Specifications

2.1. Base data types

This source module contains base data types used throughout the NWB:N data format.

2.1.1. NWBData

Overview: An abstract data type for a dataset.

2.1.2. Index

Overview: Pointers that index data values.

Index extends NWBData and includes all elements of NWBData with the following additions or changes.

Table 2.2 Datasets, Links, and Attributes contained in <Index>
Id Type Description
<Index> Dataset

Top level Dataset for <Index>

  • Neurodata Type: Index
  • Extends: NWBData
.target Attribute

Target dataset that this index applies to.

  • Data Type: object reference to NWBData
  • Name: target

2.1.3. VectorData

Overview: A 1-dimensional dataset. This can be indexed using a VectorIndex to encode a 2-dimensional ragged array in 1 dimension. 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.

VectorData extends NWBData and includes all elements of NWBData with the following additions or changes.

Table 2.3 Datasets, Links, and Attributes contained in <VectorData>
Id Type Description
<VectorData> Dataset

Top level Dataset for <VectorData>

  • Neurodata Type: VectorData
  • Extends: NWBData
.description Attribute

Description of what these vectors represent.

  • Data Type: text
  • Name: description

2.1.4. VectorIndex

Overview: An array of indices into the first dimension of the target VectorData. Can be used with VectorData to encode a 2-dimensional ragged array in 1 dimension.

VectorIndex extends Index and includes all elements of Index with the following additions or changes.

Table 2.4 Datasets, Links, and Attributes contained in <VectorIndex>
Id Type Description
<VectorIndex> Dataset

Top level Dataset for <VectorIndex>

  • Neurodata Type: VectorIndex
  • Extends: Index
.target Attribute

Reference to the target dataset that this index applies to.

  • Data Type: object reference to VectorData
  • Name: target

2.1.5. ElementIdentifiers

Overview: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.

ElementIdentifiers extends NWBData and includes all elements of NWBData with the following additions or changes.

  • Extends: NWBData
  • Primitive Type: Dataset
  • Data Type: int
  • Dimensions: [‘num_elements’]
  • Shape: [None]
  • Default Name: element_id
  • Inherits from: NWBData
  • Source filename: nwb.base.yaml
  • Source Specification: see Section 3.2.5

2.1.6. DynamicTableRegion

Overview: A region/index into a DynamicTable.

DynamicTableRegion extends VectorData and includes all elements of VectorData with the following additions or changes.

DynamicTableRegion
Table 2.5 Datasets, Links, and Attributes contained in <DynamicTableRegion>
Id Type Description
<DynamicTableRegion> Dataset

Top level Dataset for <DynamicTableRegion>

  • Neurodata Type: DynamicTableRegion
  • Extends: VectorData
  • Data Type: int
.table Attribute

Reference to the DynamicTable object that this region applies to.

.description Attribute

Description of what this table region points to.

  • Data Type: text
  • Name: description

2.1.7. Image

Overview: 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)).

Image extends NWBData and includes all elements of NWBData with the following additions or changes.

  • Extends: NWBData
  • Primitive Type: Dataset
  • Dimensions: [[‘num_x’, ‘num_y’], [‘num_x’, ‘num_y’, ‘(r, g, b)’], [‘num_x’, ‘num_y’, ‘(r, g, b, a)’]]
  • Shape: [[None, None], [None, None, 3], [None, None, 4]]
  • Inherits from: NWBData
  • Subtypes: GrayscaleImage, RGBImage, RGBAImage
  • Source filename: nwb.base.yaml
  • Source Specification: see Section 3.2.7
Image
Table 2.6 Datasets, Links, and Attributes contained in <Image>
Id Type Description
<Image> Dataset

Top level Dataset for <Image>

  • Neurodata Type: Image
  • Extends: NWBData
  • Dimensions: [[‘num_x’, ‘num_y’], [‘num_x’, ‘num_y’, ‘(r, g, b)’], [‘num_x’, ‘num_y’, ‘(r, g, b, a)’]]
  • Shape: [[None, None], [None, None, 3], [None, None, 4]]
.resolution Attribute

Pixel resolution of the image, in pixels per centimeter.

  • Data Type: float
  • Reuqired: False
  • Name: resolution
.description Attribute

Description of the image.

  • Data Type: text
  • Reuqired: False
  • Name: description

2.1.10. TimeSeries

Overview: General purpose time series.

TimeSeries extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

TimeSeries
Table 2.7 Datasets, Links, and Attributes contained in <TimeSeries>
Id Type Description
<TimeSeries> Group

Top level Group for <TimeSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

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.

  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_DIM2’], [‘num_times’, ‘num_DIM2’, ‘num_DIM3’], [‘num_times’, ‘num_DIM2’, ‘num_DIM3’, ‘num_DIM4’]]
  • Shape: [[None], [None, None], [None, None, None], [None, None, None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.8 Groups contained in <TimeSeries>
Id Type Description
<TimeSeries> Group

Top level Group for <TimeSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.1.10.1. Groups: sync

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: 0 or 1
  • Name: sync

2.1.11. ProcessingModule

Overview: A collection of processed data.

ProcessingModule extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

ProcessingModule
Table 2.9 Datasets, Links, and Attributes contained in <ProcessingModule>
Id Type Description
<ProcessingModule> Group

Top level Group for <ProcessingModule>

.description Attribute

Description of this collection of processed data.

  • Data Type: text
  • Name: description
Table 2.10 Groups contained in <ProcessingModule>
Id Type Description
<ProcessingModule> Group

Top level Group for <ProcessingModule>

.<NWBDataInterface> Group

Data objects stored in this collection.

2.1.11.1. Groups: <NWBDataInterface>

Data objects stored in this collection.

2.1.12. Images

Overview: A collection of images.

Images extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Images
Table 2.11 Datasets, Links, and Attributes contained in <Images>
Id Type Description
<Images> Group

Top level Group for <Images>

.description Attribute

Description of this collection of images.

  • Data Type: text
  • Name: description
.<Image> Dataset

Images stored in this collection.

  • Extends: Image
  • Quantity: 1 or more

2.1.13. DynamicTable

Overview: 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.

DynamicTable extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

DynamicTable
Table 2.12 Datasets, Links, and Attributes contained in <DynamicTable>
Id Type Description
<DynamicTable> Group

Top level Group for <DynamicTable>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

2.2. Epochs

This source module contains neurodata_types for epoch data.

2.2.1. TimeIntervals

Overview: A container for aggregating epoch data and the TimeSeries that each epoch applies to.

TimeIntervals extends DynamicTable and includes all elements of DynamicTable with the following additions or changes.

TimeIntervals
Table 2.13 Datasets, Links, and Attributes contained in <TimeIntervals>
Id Type Description
<TimeIntervals> Group

Top level Group for <TimeIntervals>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.start_time Dataset

Start time of epoch, in seconds.

  • Extends: VectorData
  • Data Type: float
  • Name: start_time
.stop_time Dataset

Stop time of epoch, in seconds.

  • Extends: VectorData
  • Data Type: float
  • Name: stop_time
.tags Dataset

User-defined tags that identify or categorize events.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: text
  • Name: tags
.tags_index Dataset

Index for tags.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: tags_index
.timeseries Dataset

An index into a TimeSeries object.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: Compound data type with the following elements:
    • idx_start: Start index into the TimeSeries ‘data’ and ‘timestamp’ datasets of the referenced TimeSeries. The first dimension of those arrays is always time. (dtype= int32 )
    • count: Number of data samples available in this time series, during this epoch. (dtype= int32 )
    • timeseries: the TimeSeries that this index applies to. (dtype= object reference to TimeSeries )
  • Name: timeseries
.timeseries_index Dataset

Index for timeseries.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: timeseries_index
.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

2.3. Image data

This source module contains neurodata_types for image data.

2.3.1. GrayscaleImage

Overview: A grayscale image.

GrayscaleImage extends Image and includes all elements of Image with the following additions or changes.

  • Extends: Image
  • Primitive Type: Dataset
  • Dimensions: [‘y’, ‘x’]
  • Shape: [None, None]
  • Inherits from: Image, NWBData
  • Source filename: nwb.image.yaml
  • Source Specification: see Section 3.4.1
GrayscaleImage
Table 2.14 Datasets, Links, and Attributes contained in <GrayscaleImage>
Id Type Description
<GrayscaleImage> Dataset

Top level Dataset for <GrayscaleImage>

  • Neurodata Type: GrayscaleImage
  • Extends: Image
  • Dimensions: [‘y’, ‘x’]
  • Shape: [None, None]
.resolution Attribute

Pixel resolution of the image, in pixels per centimeter.

  • Data Type: float
  • Reuqired: False
  • Name: resolution
.description Attribute

Description of the image.

  • Data Type: text
  • Reuqired: False
  • Name: description

2.3.2. RGBImage

Overview: A color image.

RGBImage extends Image and includes all elements of Image with the following additions or changes.

  • Extends: Image
  • Primitive Type: Dataset
  • Dimensions: [‘y’, ‘x’, ‘R, G, B’]
  • Shape: [None, None, 3]
  • Inherits from: Image, NWBData
  • Source filename: nwb.image.yaml
  • Source Specification: see Section 3.4.2
RGBImage
Table 2.15 Datasets, Links, and Attributes contained in <RGBImage>
Id Type Description
<RGBImage> Dataset

Top level Dataset for <RGBImage>

  • Neurodata Type: RGBImage
  • Extends: Image
  • Dimensions: [‘y’, ‘x’, ‘R, G, B’]
  • Shape: [None, None, 3]
.resolution Attribute

Pixel resolution of the image, in pixels per centimeter.

  • Data Type: float
  • Reuqired: False
  • Name: resolution
.description Attribute

Description of the image.

  • Data Type: text
  • Reuqired: False
  • Name: description

2.3.3. RGBAImage

Overview: A color image with transparency.

RGBAImage extends Image and includes all elements of Image with the following additions or changes.

  • Extends: Image
  • Primitive Type: Dataset
  • Dimensions: [‘y’, ‘x’, ‘R, G, B, A’]
  • Shape: [None, None, 4]
  • Inherits from: Image, NWBData
  • Source filename: nwb.image.yaml
  • Source Specification: see Section 3.4.3
RGBAImage
Table 2.16 Datasets, Links, and Attributes contained in <RGBAImage>
Id Type Description
<RGBAImage> Dataset

Top level Dataset for <RGBAImage>

  • Neurodata Type: RGBAImage
  • Extends: Image
  • Dimensions: [‘y’, ‘x’, ‘R, G, B, A’]
  • Shape: [None, None, 4]
.resolution Attribute

Pixel resolution of the image, in pixels per centimeter.

  • Data Type: float
  • Reuqired: False
  • Name: resolution
.description Attribute

Description of the image.

  • Data Type: text
  • Reuqired: False
  • Name: description

2.3.4. ImageSeries

Overview: 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][y][x] or [frame][z][y][x].

ImageSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

ImageSeries
Table 2.17 Datasets, Links, and Attributes contained in <ImageSeries>
Id Type Description
<ImageSeries> Group

Top level Group for <ImageSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Binary data representing images across frames.

  • Quantity: 0 or 1
  • Data Type: numeric
  • Dimensions: [[‘frame’, ‘y’, ‘x’], [‘frame’, ‘z’, ‘y’, ‘x’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.dimension Dataset

Number of pixels on x, y, (and z) axes.

  • Quantity: 0 or 1
  • Data Type: int32
  • Dimensions: [‘rank’]
  • Shape: [None]
  • Name: dimension
.external_file Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: external_file
..starting_frame Attribute

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].

  • Data Type: int
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: starting_frame
.format Dataset

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: 0 or 1
  • Data Type: text
  • Name: format
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.18 Groups contained in <ImageSeries>
Id Type Description
<ImageSeries> Group

Top level Group for <ImageSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.3.4.1. Groups: sync

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: 0 or 1
  • Name: sync

2.3.5. ImageMaskSeries

Overview: 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.

ImageMaskSeries extends ImageSeries and includes all elements of ImageSeries with the following additions or changes.

ImageMaskSeries
Table 2.19 Datasets, Links, and Attributes contained in <ImageMaskSeries>
Id Type Description
<ImageMaskSeries> Group

Top level Group for <ImageMaskSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Binary data representing images across frames.

  • Quantity: 0 or 1
  • Data Type: numeric
  • Dimensions: [[‘frame’, ‘y’, ‘x’], [‘frame’, ‘z’, ‘y’, ‘x’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.dimension Dataset

Number of pixels on x, y, (and z) axes.

  • Quantity: 0 or 1
  • Data Type: int32
  • Dimensions: [‘rank’]
  • Shape: [None]
  • Name: dimension
.external_file Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: external_file
..starting_frame Attribute

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].

  • Data Type: int
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: starting_frame
.format Dataset

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: 0 or 1
  • Data Type: text
  • Name: format
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.masked_imageseries Link

Link to ImageSeries object that this image mask is applied to.

Table 2.20 Groups contained in <ImageMaskSeries>
Id Type Description
<ImageMaskSeries> Group

Top level Group for <ImageMaskSeries>

.masked_imageseries Link

Link to ImageSeries object that this image mask is applied to.

.sync Group

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: 0 or 1
  • Name: sync

2.3.5.1. Groups: sync

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: 0 or 1
  • Name: sync

2.3.6. OpticalSeries

Overview: 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.

OpticalSeries extends ImageSeries and includes all elements of ImageSeries with the following additions or changes.

OpticalSeries
Table 2.21 Datasets, Links, and Attributes contained in <OpticalSeries>
Id Type Description
<OpticalSeries> Group

Top level Group for <OpticalSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.distance Dataset

Distance from camera/monitor to target/eye.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: distance
.field_of_view Dataset

Width, height and depth of image, or imaged area, in meters.

  • Quantity: 0 or 1
  • Data Type: float32
  • Dimensions: [[‘width, height’], [‘width, height, depth’]]
  • Shape: [[2], [3]]
  • Name: field_of_view
.orientation Dataset

Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: orientation
.data Dataset

Binary data representing images across frames.

  • Quantity: 0 or 1
  • Data Type: numeric
  • Dimensions: [[‘frame’, ‘y’, ‘x’], [‘frame’, ‘z’, ‘y’, ‘x’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.dimension Dataset

Number of pixels on x, y, (and z) axes.

  • Quantity: 0 or 1
  • Data Type: int32
  • Dimensions: [‘rank’]
  • Shape: [None]
  • Name: dimension
.external_file Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: external_file
..starting_frame Attribute

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].

  • Data Type: int
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: starting_frame
.format Dataset

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: 0 or 1
  • Data Type: text
  • Name: format
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.22 Groups contained in <OpticalSeries>
Id Type Description
<OpticalSeries> Group

Top level Group for <OpticalSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.3.6.1. Groups: sync

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: 0 or 1
  • Name: sync

2.3.7. IndexSeries

Overview: 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.

IndexSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

IndexSeries
Table 2.23 Datasets, Links, and Attributes contained in <IndexSeries>
Id Type Description
<IndexSeries> Group

Top level Group for <IndexSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Index of the frame in the referenced ImageSeries.

  • Data Type: int
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.indexed_timeseries Link

Link to ImageSeries object containing images that are indexed.

Table 2.24 Groups contained in <IndexSeries>
Id Type Description
<IndexSeries> Group

Top level Group for <IndexSeries>

.indexed_timeseries Link

Link to ImageSeries object containing images that are indexed.

.sync Group

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: 0 or 1
  • Name: sync

2.3.7.1. Groups: sync

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: 0 or 1
  • Name: sync

2.4. NWB:N file

Main NWB:N file specification.

2.4.1. NWBFile

Overview: An NWB:N file storing cellular-based neurophysiology data from a single experimental session.

NWBFile extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

NWBFile
Table 2.25 Datasets, Links, and Attributes contained in <NWBFile>
Id Type Description
root Group

Top level Group for root

.nwb_version Attribute

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.

  • Data Type: text
  • Value: 2.1.0
  • Name: nwb_version
.file_create_date Dataset

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.

  • Data Type: isodatetime
  • Dimensions: [‘num_modifications’]
  • Shape: [None]
  • Name: file_create_date
.identifier Dataset

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.

  • Data Type: text
  • Name: identifier
.session_description Dataset

A description of the experimental session and data in the file.

  • Data Type: text
  • Name: session_description
.session_start_time Dataset

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.

  • Data Type: isodatetime
  • Name: session_start_time
.timestamps_reference_time Dataset

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).

  • Data Type: isodatetime
  • Name: timestamps_reference_time
Table 2.26 Groups contained in <NWBFile>
Id Type Description
root Group

Top level Group for root

.acquisition Group

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.

  • Name: acquisition
.analysis Group

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.

  • Name: analysis
.scratch Group

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: 0 or 1
  • Name: scratch
.processing Group

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.

  • Name: processing
.stimulus Group

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.

  • Name: stimulus
.general Group

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.

  • Name: general
.intervals Group

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: 0 or 1
  • Name: intervals
.units Group

Data about sorted spike units.

  • Extends: Units
  • Quantity: 0 or 1
  • Name: units

2.4.1.1. Groups: /acquisition

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.

  • Name: acquisition
Table 2.27 Groups contained in <acquisition>
Id Type Description
acquisition Group

Top level Group for acquisition

  • Name: acquisition
.<NWBDataInterface> Group

Acquired, raw data.

2.4.1.2. Groups: /acquisition/<NWBDataInterface>

Acquired, raw data.

2.4.1.3. Groups: /analysis

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.

  • Name: analysis
Table 2.28 Groups contained in <analysis>
Id Type Description
analysis Group

Top level Group for analysis

  • Name: analysis
.<NWBContainer> Group

Custom analysis results.

2.4.1.4. Groups: /analysis/<NWBContainer>

Custom analysis results.

2.4.1.5. Groups: /scratch

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: 0 or 1
  • Name: scratch
Table 2.29 Datasets, Links, and Attributes contained in /scratch
Id Type Description
scratch Group

Top level Group for scratch

  • Quantity: 0 or 1
  • Name: scratch
.<ScratchData> Dataset

Any one-off datasets

  • Neurodata Type: ScratchData
  • Extends: NWBData
  • Quantity: 0 or more
..notes Attribute

Any notes the user has about the dataset being stored

  • Data Type: text
  • Name: notes
Table 2.30 Groups contained in <scratch>
Id Type Description
scratch Group

Top level Group for scratch

  • Quantity: 0 or 1
  • Name: scratch
.<NWBContainer> Group

Any one-off containers

2.4.1.6. Groups: /scratch/<NWBContainer>

Any one-off containers

2.4.1.7. Groups: /processing

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.

  • Name: processing
Table 2.31 Groups contained in <processing>
Id Type Description
processing Group

Top level Group for processing

  • Name: processing
.<ProcessingModule> Group

Intermediate analysis of acquired data.

2.4.1.8. Groups: /processing/<ProcessingModule>

Intermediate analysis of acquired data.

2.4.1.9. Groups: /stimulus

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.

  • Name: stimulus
Table 2.32 Groups contained in <stimulus>
Id Type Description
stimulus Group

Top level Group for stimulus

  • Name: stimulus
.presentation Group

Stimuli presented during the experiment.

  • Name: presentation
.templates Group

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.

  • Name: templates

2.4.1.10. Groups: /stimulus/presentation

Stimuli presented during the experiment.

  • Name: presentation
Table 2.33 Groups contained in <presentation>
Id Type Description
presentation Group

Top level Group for presentation

  • Name: presentation
.<TimeSeries> Group

TimeSeries objects containing data of presented stimuli.

2.4.1.11. Groups: /stimulus/presentation/<TimeSeries>

TimeSeries objects containing data of presented stimuli.

2.4.1.12. Groups: /stimulus/templates

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.

  • Name: templates
Table 2.34 Groups contained in <templates>
Id Type Description
templates Group

Top level Group for templates

  • Name: templates
.<TimeSeries> Group

TimeSeries objects containing template data of presented stimuli.

2.4.1.13. Groups: /stimulus/templates/<TimeSeries>

TimeSeries objects containing template data of presented stimuli.

2.4.1.14. Groups: /general

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.

  • Name: general
Table 2.35 Datasets, Links, and Attributes contained in /general
Id Type Description
general Group

Top level Group for general

  • Name: general
.data_collection Dataset

Notes about data collection and analysis.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: data_collection
.experiment_description Dataset

General description of the experiment.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: experiment_description
.experimenter Dataset

Name of person(s) who performed the experiment. Can also specify roles of different people involved.

  • Quantity: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_experimenters’]
  • Shape: [None]
  • Name: experimenter
.institution Dataset

Institution(s) where experiment was performed.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: institution
.keywords Dataset

Terms to search over.

  • Quantity: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_keywords’]
  • Shape: [None]
  • Name: keywords
.lab Dataset

Laboratory where experiment was performed.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: lab
.notes Dataset

Notes about the experiment.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: notes
.pharmacology Dataset

Description of drugs used, including how and when they were administered. Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: pharmacology
.protocol Dataset

Experimental protocol, if applicable. e.g., include IACUC protocol number.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: protocol
.related_publications Dataset

Publication information. PMID, DOI, URL, etc.

  • Quantity: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_publications’]
  • Shape: [None]
  • Name: related_publications
.session_id Dataset

Lab-specific ID for the session.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: session_id
.slices Dataset

Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: slices
.source_script Dataset

Script file or link to public source code used to create this NWB file.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: source_script
..file_name Attribute

Name of script file.

  • Data Type: text
  • Name: file_name
.stimulus Dataset

Notes about stimuli, such as how and where they were presented.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: stimulus
.surgery Dataset

Narrative description about surgery/surgeries, including date(s) and who performed surgery.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: surgery
.virus Dataset

Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: virus
Table 2.36 Groups contained in <general>
Id Type Description
general Group

Top level Group for general

  • Name: general
.<LabMetaData> Group

Place-holder than can be extended so that lab-specific meta-data can be placed in /general.

.devices Group

Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.

  • Quantity: 0 or 1
  • Name: devices
.subject Group

Information about the animal or person from which the data was measured.

.extracellular_ephys Group

Metadata related to extracellular electrophysiology.

  • Quantity: 0 or 1
  • Name: extracellular_ephys
.intracellular_ephys Group

Metadata related to intracellular electrophysiology.

  • Quantity: 0 or 1
  • Name: intracellular_ephys
.optogenetics Group

Metadata describing optogenetic stimuluation.

  • Quantity: 0 or 1
  • Name: optogenetics
.optophysiology Group

Metadata related to optophysiology.

  • Quantity: 0 or 1
  • Name: optophysiology

2.4.1.15. Groups: /general/<LabMetaData>

Place-holder than can be extended so that lab-specific meta-data can be placed in /general.

2.4.1.16. Groups: /general/devices

Description of hardware devices used during experiment, e.g., monitors, ADC boards, microscopes, etc.

  • Quantity: 0 or 1
  • Name: devices
Table 2.37 Groups contained in <devices>
Id Type Description
devices Group

Top level Group for devices

  • Quantity: 0 or 1
  • Name: devices
.<Device> Group

A data acquisition device, e.g. recording system.

2.4.1.17. Groups: /general/devices/<Device>

A data acquisition device, e.g. recording system.

2.4.1.18. Groups: /general/subject

Information about the animal or person from which the data was measured.

Table 2.38 Datasets, Links, and Attributes contained in /general/subject
Id Type Description
subject Group

Top level Group for subject

.age Dataset

Age of subject. Can be supplied instead of ‘date_of_birth’.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: age
.date_of_birth Dataset

Date of birth of subject. Can be supplied instead of ‘age’.

  • Quantity: 0 or 1
  • Data Type: isodatetime
  • Name: date_of_birth
.description Dataset

Description of subject and where subject came from (e.g., breeder, if animal).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: description
.genotype Dataset

Genetic strain. If absent, assume Wild Type (WT).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: genotype
.sex Dataset

Gender of subject.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: sex
.species Dataset

Species of subject.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: species
.subject_id Dataset

ID of animal/person used/participating in experiment (lab convention).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: subject_id
.weight Dataset

Weight at time of experiment, at time of surgery and at other important times.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: weight

2.4.1.19. Groups: /general/extracellular_ephys

Metadata related to extracellular electrophysiology.

  • Quantity: 0 or 1
  • Name: extracellular_ephys
Table 2.39 Groups contained in <extracellular_ephys>
Id Type Description
extracellular_ephys Group

Top level Group for extracellular_ephys

  • Quantity: 0 or 1
  • Name: extracellular_ephys
.<ElectrodeGroup> Group

Physical group of electrodes.

.electrodes Group

A table of all electrodes (i.e. channels) used for recording.

2.4.1.20. Groups: /general/extracellular_ephys/<ElectrodeGroup>

Physical group of electrodes.

2.4.1.21. Groups: /general/extracellular_ephys/electrodes

A table of all electrodes (i.e. channels) used for recording.

Table 2.40 Datasets, Links, and Attributes contained in /general/extracellular_ephys/electrodes
Id Type Description
electrodes Group

Top level Group for electrodes

.x Dataset

x coordinate of the channel location.

.y Dataset

y coordinate of the channel location.

.z Dataset

z coordinate of the channel location.

.imp Dataset

Impedance of the channel.

.location Dataset

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.

  • Extends: VectorData
  • Data Type: ascii
  • Name: location
.filtering Dataset

Description of hardware filtering.

  • Extends: VectorData
  • Data Type: float
  • Name: filtering
.group Dataset

Reference to the ElectrodeGroup this electrode is a part of.

.group_name Dataset

Name of the ElectrodeGroup this electrode is a part of.

  • Extends: VectorData
  • Data Type: ascii
  • Name: group_name

2.4.1.22. Groups: /general/intracellular_ephys

Metadata related to intracellular electrophysiology.

  • Quantity: 0 or 1
  • Name: intracellular_ephys
Table 2.41 Datasets, Links, and Attributes contained in /general/intracellular_ephys
Id Type Description
intracellular_ephys Group

Top level Group for intracellular_ephys

  • Quantity: 0 or 1
  • Name: intracellular_ephys
.filtering Dataset

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: 0 or 1
  • Data Type: text
  • Name: filtering
Table 2.42 Groups contained in <intracellular_ephys>
Id Type Description
intracellular_ephys Group

Top level Group for intracellular_ephys

  • Quantity: 0 or 1
  • Name: intracellular_ephys
.<IntracellularElectrode> Group

An intracellular electrode.

.sweep_table Group

The table which groups different PatchClampSeries together.

  • Extends: SweepTable
  • Quantity: 0 or 1
  • Name: sweep_table

2.4.1.23. Groups: /general/intracellular_ephys/<IntracellularElectrode>

An intracellular electrode.

2.4.1.24. Groups: /general/intracellular_ephys/sweep_table

The table which groups different PatchClampSeries together.

  • Extends: SweepTable
  • Quantity: 0 or 1
  • Name: sweep_table

2.4.1.25. Groups: /general/optogenetics

Metadata describing optogenetic stimuluation.

  • Quantity: 0 or 1
  • Name: optogenetics
Table 2.43 Groups contained in <optogenetics>
Id Type Description
optogenetics Group

Top level Group for optogenetics

  • Quantity: 0 or 1
  • Name: optogenetics
.<OptogeneticStimulusSite> Group

An optogenetic stimulation site.

2.4.1.26. Groups: /general/optogenetics/<OptogeneticStimulusSite>

An optogenetic stimulation site.

2.4.1.27. Groups: /general/optophysiology

Metadata related to optophysiology.

  • Quantity: 0 or 1
  • Name: optophysiology
Table 2.44 Groups contained in <optophysiology>
Id Type Description
optophysiology Group

Top level Group for optophysiology

  • Quantity: 0 or 1
  • Name: optophysiology
.<ImagingPlane> Group

An imaging plane.

2.4.1.28. Groups: /general/optophysiology/<ImagingPlane>

An imaging plane.

2.4.1.29. Groups: /intervals

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: 0 or 1
  • Name: intervals
Table 2.45 Groups contained in <intervals>
Id Type Description
intervals Group

Top level Group for intervals

  • Quantity: 0 or 1
  • Name: intervals
.epochs Group

Divisions in time marking experimental stages or sub-divisions of a single recording session.

.trials Group

Repeated experimental events that have a logical grouping.

.invalid_times Group

Time intervals that should be removed from analysis.

.<TimeIntervals> Group

Optional additional table(s) for describing other experimental time intervals.

2.4.1.30. Groups: /intervals/epochs

Divisions in time marking experimental stages or sub-divisions of a single recording session.

2.4.1.31. Groups: /intervals/trials

Repeated experimental events that have a logical grouping.

2.4.1.32. Groups: /intervals/invalid_times

Time intervals that should be removed from analysis.

2.4.1.33. Groups: /intervals/<TimeIntervals>

Optional additional table(s) for describing other experimental time intervals.

2.4.1.34. Groups: /units

Data about sorted spike units.

  • Extends: Units
  • Quantity: 0 or 1
  • Name: units

2.4.2. ScratchData

Overview: Any one-off datasets

ScratchData extends NWBData and includes all elements of NWBData with the following additions or changes.

  • Extends: NWBData
  • Primitive Type: Dataset
  • Quantity: 0 or more
  • Inherits from: NWBData
  • Source filename: nwb.file.yaml
  • Source Specification: see Section 3.5.2
Table 2.46 Datasets, Links, and Attributes contained in <ScratchData>
Id Type Description
<ScratchData> Dataset

Top level Dataset for <ScratchData>

  • Neurodata Type: ScratchData
  • Extends: NWBData
  • Quantity: 0 or more
.notes Attribute

Any notes the user has about the dataset being stored

  • Data Type: text
  • Name: notes

2.4.3. LabMetaData

Overview: Place-holder than can be extended so that lab-specific meta-data can be placed in /general.

LabMetaData extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

2.4.4. Device

Overview: A data acquisition device, e.g. recording system.

Device extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

2.4.5. Subject

Overview: Information about the animal or person from which the data was measured.

Subject extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

Subject
Table 2.47 Datasets, Links, and Attributes contained in <Subject>
Id Type Description
subject Group

Top level Group for subject

.age Dataset

Age of subject. Can be supplied instead of ‘date_of_birth’.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: age
.date_of_birth Dataset

Date of birth of subject. Can be supplied instead of ‘age’.

  • Quantity: 0 or 1
  • Data Type: isodatetime
  • Name: date_of_birth
.description Dataset

Description of subject and where subject came from (e.g., breeder, if animal).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: description
.genotype Dataset

Genetic strain. If absent, assume Wild Type (WT).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: genotype
.sex Dataset

Gender of subject.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: sex
.species Dataset

Species of subject.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: species
.subject_id Dataset

ID of animal/person used/participating in experiment (lab convention).

  • Quantity: 0 or 1
  • Data Type: text
  • Name: subject_id
.weight Dataset

Weight at time of experiment, at time of surgery and at other important times.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: weight

2.5. Miscellaneous neurodata_types.

Miscellaneous types.

2.5.1. AbstractFeatureSeries

Overview: 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.

AbstractFeatureSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

AbstractFeatureSeries
Table 2.48 Datasets, Links, and Attributes contained in <AbstractFeatureSeries>
Id Type Description
<AbstractFeatureSeries> Group

Top level Group for <AbstractFeatureSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Values of each feature at each time.

  • Data Type: numeric
  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_features’]]
  • Shape: [[None], [None, None]]
  • Name: data
..unit Attribute

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’”.

  • Data Type: text
  • Reuqired: False
  • Default Value: see ‘feature_units’
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.feature_units Dataset

Units of each feature.

  • Quantity: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_features’]
  • Shape: [None]
  • Name: feature_units
.features Dataset

Description of the features represented in TimeSeries::data.

  • Data Type: text
  • Dimensions: [‘num_features’]
  • Shape: [None]
  • Name: features
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.49 Groups contained in <AbstractFeatureSeries>
Id Type Description
<AbstractFeatureSeries> Group

Top level Group for <AbstractFeatureSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.5.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.5.2. AnnotationSeries

Overview: 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.

AnnotationSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

AnnotationSeries
Table 2.50 Datasets, Links, and Attributes contained in <AnnotationSeries>
Id Type Description
<AnnotationSeries> Group

Top level Group for <AnnotationSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Annotations made during an experiment.

  • Data Type: text
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
..resolution Attribute

Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.

  • Data Type: float
  • Value: -1.0
  • Name: resolution
..unit Attribute

Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to ‘n/a’.

  • Data Type: text
  • Value: n/a
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.51 Groups contained in <AnnotationSeries>
Id Type Description
<AnnotationSeries> Group

Top level Group for <AnnotationSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.5.2.1. Groups: sync

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: 0 or 1
  • Name: sync

2.5.3. IntervalSeries

Overview: 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.

IntervalSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

IntervalSeries
Table 2.52 Datasets, Links, and Attributes contained in <IntervalSeries>
Id Type Description
<IntervalSeries> Group

Top level Group for <IntervalSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Use values >0 if interval started, <0 if interval ended.

  • Data Type: int8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
..resolution Attribute

Smallest meaningful difference between values in data. Annotations have no units, so the value is fixed to -1.0.

  • Data Type: float
  • Value: -1.0
  • Name: resolution
..unit Attribute

Base unit of measurement for working with the data. Annotations have no units, so the value is fixed to ‘n/a’.

  • Data Type: text
  • Value: n/a
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.53 Groups contained in <IntervalSeries>
Id Type Description
<IntervalSeries> Group

Top level Group for <IntervalSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.5.3.1. Groups: sync

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: 0 or 1
  • Name: sync

2.5.4. DecompositionSeries

Overview: Spectral analysis of a time series, e.g. of an LFP or a speech signal.

DecompositionSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

DecompositionSeries
Table 2.54 Datasets, Links, and Attributes contained in <DecompositionSeries>
Id Type Description
<DecompositionSeries> Group

Top level Group for <DecompositionSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Data decomposed into frequency bands.

  • Data Type: numeric
  • Dimensions: [‘num_times’, ‘num_channels’, ‘num_bands’]
  • Shape: [None, None, None]
  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Reuqired: False
  • Default Value: no unit
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.metric Dataset

The metric used, e.g. phase, amplitude, power.

  • Data Type: text
  • Name: metric
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.source_timeseries Link

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.

Table 2.55 Groups contained in <DecompositionSeries>
Id Type Description
<DecompositionSeries> Group

Top level Group for <DecompositionSeries>

.source_timeseries Link

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.

.bands Group

Table for describing the bands that this series was generated from. There should be one row in this table for each band.

.sync Group

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: 0 or 1
  • Name: sync

2.5.4.1. Groups: bands

Table for describing the bands that this series was generated from. There should be one row in this table for each band.

Table 2.56 Datasets, Links, and Attributes contained in bands
Id Type Description
bands Group

Top level Group for bands

.band_name Dataset

Name of the band, e.g. theta.

  • Extends: VectorData
  • Data Type: text
  • Name: band_name
.band_limits Dataset

Low and high limit of each band in Hz. If it is a Gaussian filter, use 2 SD on either side of the center.

  • Extends: VectorData
  • Data Type: float
  • Dimensions: [‘num_bands’, ‘low, high’]
  • Shape: [None, 2]
  • Name: band_limits
.band_mean Dataset

The mean Gaussian filters, in Hz.

  • Extends: VectorData
  • Data Type: float
  • Dimensions: [‘num_bands’]
  • Shape: [None]
  • Name: band_mean
.band_stdev Dataset

The standard deviation of Gaussian filters, in Hz.

  • Extends: VectorData
  • Data Type: float
  • Dimensions: [‘num_bands’]
  • Shape: [None]
  • Name: band_stdev

2.5.4.2. Groups: sync

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: 0 or 1
  • Name: sync

2.5.5. Units

Overview: Data about spiking units. Event times of observed units (e.g. cell, synapse, etc.) should be concatenated and stored in spike_times.

Units extends DynamicTable and includes all elements of DynamicTable with the following additions or changes.

Units
Table 2.57 Datasets, Links, and Attributes contained in <Units>
Id Type Description
<Units> Group

Top level Group for <Units>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.spike_times_index Dataset

Index into the spike_times dataset.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: spike_times_index
.spike_times Dataset

Spike times for each unit.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: double
  • Name: spike_times
.obs_intervals_index Dataset

Index into the obs_intervals dataset.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: obs_intervals_index
.obs_intervals Dataset

Observation intervals for each unit.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: double
  • Dimensions: [‘num_intervals’, ‘start|end’]
  • Shape: [None, 2]
  • Name: obs_intervals
.electrodes_index Dataset

Index into electrodes.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: electrodes_index
.electrodes Dataset

Electrode that each spike unit came from, specified using a DynamicTableRegion.

.electrode_group Dataset

Electrode group that each spike unit came from.

.waveform_mean Dataset

Spike waveform mean for each spike unit.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: float
  • Dimensions: [[‘num_units’, ‘num_samples’], [‘num_units’, ‘num_samples’, ‘num_electrodes’]]
  • Shape: [[None, None], [None, None, None]]
  • Name: waveform_mean
.waveform_sd Dataset

Spike waveform standard deviation for each spike unit.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: float
  • Dimensions: [[‘num_units’, ‘num_samples’], [‘num_units’, ‘num_samples’, ‘num_electrodes’]]
  • Shape: [[None, None], [None, None, None]]
  • Name: waveform_sd
.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

2.6. Behavior

This source module contains neurodata_types for behavior data.

2.6.1. SpatialSeries

Overview: 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.

SpatialSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

SpatialSeries
Table 2.58 Datasets, Links, and Attributes contained in <SpatialSeries>
Id Type Description
<SpatialSeries> Group

Top level Group for <SpatialSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

1-D or 2-D array storing position or direction relative to some reference frame.

  • Data Type: numeric
  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_features’]]
  • Shape: [[None], [None, None]]
  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Reuqired: False
  • Default Value: meters
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.reference_frame Dataset

Description defining what exactly ‘straight-ahead’ means.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: reference_frame
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.59 Groups contained in <SpatialSeries>
Id Type Description
<SpatialSeries> Group

Top level Group for <SpatialSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.6.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.6.2. BehavioralEpochs

Overview: 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.

BehavioralEpochs extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.60 Groups contained in <BehavioralEpochs>
Id Type Description
<BehavioralEpochs> Group

Top level Group for <BehavioralEpochs>

.<IntervalSeries> Group

IntervalSeries object containing start and stop times of epochs.

2.6.2.1. Groups: <IntervalSeries>

IntervalSeries object containing start and stop times of epochs.

2.6.3. BehavioralEvents

Overview: TimeSeries for storing behavioral events. See description of <a href=”#BehavioralEpochs”>BehavioralEpochs</a> for more details.

BehavioralEvents extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.61 Groups contained in <BehavioralEvents>
Id Type Description
<BehavioralEvents> Group

Top level Group for <BehavioralEvents>

.<TimeSeries> Group

TimeSeries object containing behavioral events.

2.6.3.1. Groups: <TimeSeries>

TimeSeries object containing behavioral events.

2.6.4. BehavioralTimeSeries

Overview: TimeSeries for storing Behavoioral time series data. See description of <a href=”#BehavioralEpochs”>BehavioralEpochs</a> for more details.

BehavioralTimeSeries extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.62 Groups contained in <BehavioralTimeSeries>
Id Type Description
<BehavioralTimeSeries> Group

Top level Group for <BehavioralTimeSeries>

.<TimeSeries> Group

TimeSeries object containing continuous behavioral data.

2.6.4.1. Groups: <TimeSeries>

TimeSeries object containing continuous behavioral data.

2.6.5. PupilTracking

Overview: Eye-tracking data, representing pupil size.

PupilTracking extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.63 Groups contained in <PupilTracking>
Id Type Description
<PupilTracking> Group

Top level Group for <PupilTracking>

.<TimeSeries> Group

TimeSeries object containing time series data on pupil size.

2.6.5.1. Groups: <TimeSeries>

TimeSeries object containing time series data on pupil size.

2.6.6. EyeTracking

Overview: Eye-tracking data, representing direction of gaze.

EyeTracking extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.64 Groups contained in <EyeTracking>
Id Type Description
<EyeTracking> Group

Top level Group for <EyeTracking>

.<SpatialSeries> Group

SpatialSeries object containing data measuring direction of gaze.

2.6.6.1. Groups: <SpatialSeries>

SpatialSeries object containing data measuring direction of gaze.

2.6.7. CompassDirection

Overview: 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.

CompassDirection extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.65 Groups contained in <CompassDirection>
Id Type Description
<CompassDirection> Group

Top level Group for <CompassDirection>

.<SpatialSeries> Group

SpatialSeries object containing direction of gaze travel.

2.6.7.1. Groups: <SpatialSeries>

SpatialSeries object containing direction of gaze travel.

2.6.8. Position

Overview: Position data, whether along the x, x/y or x/y/z axis.

Position extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.66 Groups contained in <Position>
Id Type Description
<Position> Group

Top level Group for <Position>

.<SpatialSeries> Group

SpatialSeries object containing position data.

2.6.8.1. Groups: <SpatialSeries>

SpatialSeries object containing position data.

2.7. Extracellular electrophysiology

This source module contains neurodata_types for extracellular electrophysiology data.

2.7.1. ElectricalSeries

Overview: 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.

ElectricalSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

ElectricalSeries
Table 2.67 Datasets, Links, and Attributes contained in <ElectricalSeries>
Id Type Description
<ElectricalSeries> Group

Top level Group for <ElectricalSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Recorded voltage data.

  • Data Type: numeric
  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_channels’], [‘num_times’, ‘num_channels’, ‘num_samples’]]
  • Shape: [[None], [None, None], [None, None, None]]
  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: volts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.electrodes Dataset

DynamicTableRegion pointer to the electrodes that this time series was generated from.

.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.68 Groups contained in <ElectricalSeries>
Id Type Description
<ElectricalSeries> Group

Top level Group for <ElectricalSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.7.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.7.2. SpikeEventSeries

Overview: 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).

SpikeEventSeries extends ElectricalSeries and includes all elements of ElectricalSeries with the following additions or changes.

SpikeEventSeries
Table 2.69 Datasets, Links, and Attributes contained in <SpikeEventSeries>
Id Type Description
<SpikeEventSeries> Group

Top level Group for <SpikeEventSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Spike waveforms.

  • Data Type: numeric
  • Dimensions: [[‘num_events’, ‘num_samples’], [‘num_events’, ‘num_channels’, ‘num_samples’]]
  • Shape: [[None, None], [None, None, None]]
  • Name: data
..unit Attribute

Unit of measurement for waveforms, which is fixed to ‘volts’.

  • Data Type: text
  • Value: volts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.timestamps Dataset

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.

  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.electrodes Dataset

DynamicTableRegion pointer to the electrodes that this time series was generated from.

.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.70 Groups contained in <SpikeEventSeries>
Id Type Description
<SpikeEventSeries> Group

Top level Group for <SpikeEventSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.7.2.1. Groups: sync

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: 0 or 1
  • Name: sync

2.7.3. FeatureExtraction

Overview: Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries or other source.

FeatureExtraction extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

FeatureExtraction
Table 2.71 Datasets, Links, and Attributes contained in <FeatureExtraction>
Id Type Description
<FeatureExtraction> Group

Top level Group for <FeatureExtraction>

.description Dataset

Description of features (eg, ‘’PC1’‘) for each of the extracted features.

  • Data Type: text
  • Dimensions: [‘num_features’]
  • Shape: [None]
  • Name: description
.features Dataset

Multi-dimensional array of features extracted from each event.

  • Data Type: float32
  • Dimensions: [‘num_events’, ‘num_channels’, ‘num_features’]
  • Shape: [None, None, None]
  • Name: features
.times Dataset

Times of events that features correspond to (can be a link).

  • Data Type: float64
  • Dimensions: [‘num_events’]
  • Shape: [None]
  • Name: times
.electrodes Dataset

DynamicTableRegion pointer to the electrodes that this time series was generated from.

2.7.4. EventDetection

Overview: Detected spike events from voltage trace(s).

EventDetection extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

EventDetection
Table 2.72 Datasets, Links, and Attributes contained in <EventDetection>
Id Type Description
<EventDetection> Group

Top level Group for <EventDetection>

.detection_method Dataset

Description of how events were detected, such as voltage threshold, or dV/dT threshold, as well as relevant values.

  • Data Type: text
  • Name: detection_method
.source_idx Dataset

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.

  • Data Type: int32
  • Dimensions: [‘num_events’]
  • Shape: [None]
  • Name: source_idx
.times Dataset

Timestamps of events, in seconds.

  • Data Type: float64
  • Dimensions: [‘num_events’]
  • Shape: [None]
  • Name: times
..unit Attribute

Unit of measurement for event times, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.source_electricalseries Link

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.

Table 2.73 Groups contained in <EventDetection>
Id Type Description
<EventDetection> Group

Top level Group for <EventDetection>

.source_electricalseries Link

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.

2.7.5. EventWaveform

Overview: 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.

EventWaveform extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.74 Groups contained in <EventWaveform>
Id Type Description
<EventWaveform> Group

Top level Group for <EventWaveform>

.<SpikeEventSeries> Group

SpikeEventSeries object(s) containing detected spike event waveforms.

2.7.5.1. Groups: <SpikeEventSeries>

SpikeEventSeries object(s) containing detected spike event waveforms.

2.7.6. FilteredEphys

Overview: 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.

FilteredEphys extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.75 Groups contained in <FilteredEphys>
Id Type Description
<FilteredEphys> Group

Top level Group for <FilteredEphys>

.<ElectricalSeries> Group

ElectricalSeries object(s) containing filtered electrophysiology data.

2.7.6.1. Groups: <ElectricalSeries>

ElectricalSeries object(s) containing filtered electrophysiology data.

2.7.7. LFP

Overview: 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.

LFP extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.76 Groups contained in <LFP>
Id Type Description
<LFP> Group

Top level Group for <LFP>

.<ElectricalSeries> Group

ElectricalSeries object(s) containing LFP data for one or more channels.

2.7.7.1. Groups: <ElectricalSeries>

ElectricalSeries object(s) containing LFP data for one or more channels.

2.7.8. ElectrodeGroup

Overview: A physical grouping of electrodes, e.g. a shank of an array.

ElectrodeGroup extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

ElectrodeGroup
Table 2.77 Datasets, Links, and Attributes contained in <ElectrodeGroup>
Id Type Description
<ElectrodeGroup> Group

Top level Group for <ElectrodeGroup>

.description Attribute

Description of this electrode group.

  • Data Type: text
  • Name: description
.location Attribute

Location of electrode group. 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.

  • Data Type: text
  • Name: location
.device Link

Link to the device that was used to record from this electrode group.

  • Target Type Device
  • Name: device
Table 2.78 Groups contained in <ElectrodeGroup>
Id Type Description
<ElectrodeGroup> Group

Top level Group for <ElectrodeGroup>

.device Link

Link to the device that was used to record from this electrode group.

  • Target Type Device
  • Name: device

2.7.9. ClusterWaveforms

Overview: 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.

ClusterWaveforms extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

ClusterWaveforms
Table 2.79 Datasets, Links, and Attributes contained in <ClusterWaveforms>
Id Type Description
<ClusterWaveforms> Group

Top level Group for <ClusterWaveforms>

.waveform_filtering Dataset

Filtering applied to data before generating mean/sd

  • Data Type: text
  • Name: waveform_filtering
.waveform_mean Dataset

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)

  • Data Type: float32
  • Dimensions: [‘num_clusters’, ‘num_samples’]
  • Shape: [None, None]
  • Name: waveform_mean
.waveform_sd Dataset

Stdev of waveforms for each cluster, using the same indices as in mean

  • Data Type: float32
  • Dimensions: [‘num_clusters’, ‘num_samples’]
  • Shape: [None, None]
  • Name: waveform_sd
.clustering_interface Link

Link to Clustering interface that was the source of the clustered data

  • Target Type Clustering
  • Name: clustering_interface
Table 2.80 Groups contained in <ClusterWaveforms>
Id Type Description
<ClusterWaveforms> Group

Top level Group for <ClusterWaveforms>

.clustering_interface Link

Link to Clustering interface that was the source of the clustered data

  • Target Type Clustering
  • Name: clustering_interface

2.7.10. Clustering

Overview: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g., klustakwik) or as a result of manual sorting.

Clustering extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Clustering
Table 2.81 Datasets, Links, and Attributes contained in <Clustering>
Id Type Description
<Clustering> Group

Top level Group for <Clustering>

.description Dataset

Description of clusters or clustering, (e.g. cluster 0 is noise, clusters curated using Klusters, etc)

  • Data Type: text
  • Name: description
.num Dataset

Cluster number of each event

  • Data Type: int32
  • Dimensions: [‘num_events’]
  • Shape: [None]
  • Name: num
.peak_over_rms Dataset

Maximum ratio of waveform peak to RMS on any channel in the cluster (provides a basic clustering metric).

  • Data Type: float32
  • Dimensions: [‘num_clusters’]
  • Shape: [None]
  • Name: peak_over_rms
.times Dataset

Times of clustered events, in seconds. This may be a link to times field in associated FeatureExtraction module.

  • Data Type: float64
  • Dimensions: [‘num_events’]
  • Shape: [None]
  • Name: times

2.8. Intracellular electrophysiology

This source module contains neurodata_types for intracellular electrophysiology data.

2.8.1. PatchClampSeries

Overview: An abstract base class for patch-clamp data - stimulus or response, current or voltage.

PatchClampSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

PatchClampSeries
Table 2.82 Datasets, Links, and Attributes contained in <PatchClampSeries>
Id Type Description
<PatchClampSeries> Group

Top level Group for <PatchClampSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Recorded voltage or current.

  • Data Type: numeric
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.83 Groups contained in <PatchClampSeries>
Id Type Description
<PatchClampSeries> Group

Top level Group for <PatchClampSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.2. CurrentClampSeries

Overview: Voltage data from an intracellular current-clamp recording. A corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is used to store the current injected.

CurrentClampSeries extends PatchClampSeries and includes all elements of PatchClampSeries with the following additions or changes.

CurrentClampSeries
Table 2.84 Datasets, Links, and Attributes contained in <CurrentClampSeries>
Id Type Description
<CurrentClampSeries> Group

Top level Group for <CurrentClampSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Recorded voltage.

  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: volts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.bias_current Dataset

Bias current, in amps.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: bias_current
.bridge_balance Dataset

Bridge balance, in ohms.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: bridge_balance
.capacitance_compensation Dataset

Capacitance compensation, in farads.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: capacitance_compensation
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.85 Groups contained in <CurrentClampSeries>
Id Type Description
<CurrentClampSeries> Group

Top level Group for <CurrentClampSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.2.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.3. IZeroClampSeries

Overview: 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.

IZeroClampSeries extends CurrentClampSeries and includes all elements of CurrentClampSeries with the following additions or changes.

IZeroClampSeries
Table 2.86 Datasets, Links, and Attributes contained in <IZeroClampSeries>
Id Type Description
<IZeroClampSeries> Group

Top level Group for <IZeroClampSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.bias_current Dataset

Bias current, in amps, fixed to 0.0.

  • Data Type: float32
  • Name: bias_current
.bridge_balance Dataset

Bridge balance, in ohms, fixed to 0.0.

  • Data Type: float32
  • Name: bridge_balance
.capacitance_compensation Dataset

Capacitance compensation, in farads, fixed to 0.0.

  • Data Type: float32
  • Name: capacitance_compensation
.data Dataset

Recorded voltage.

  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: volts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.87 Groups contained in <IZeroClampSeries>
Id Type Description
<IZeroClampSeries> Group

Top level Group for <IZeroClampSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.3.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.4. CurrentClampStimulusSeries

Overview: Stimulus current applied during current clamp recording.

CurrentClampStimulusSeries extends PatchClampSeries and includes all elements of PatchClampSeries with the following additions or changes.

CurrentClampStimulusSeries
Table 2.88 Datasets, Links, and Attributes contained in <CurrentClampStimulusSeries>
Id Type Description
<CurrentClampStimulusSeries> Group

Top level Group for <CurrentClampStimulusSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Stimulus current applied.

  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: amperes
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.89 Groups contained in <CurrentClampStimulusSeries>
Id Type Description
<CurrentClampStimulusSeries> Group

Top level Group for <CurrentClampStimulusSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.4.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.5. VoltageClampSeries

Overview: Current data from an intracellular voltage-clamp recording. A corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is used to store the voltage injected.

VoltageClampSeries extends PatchClampSeries and includes all elements of PatchClampSeries with the following additions or changes.

VoltageClampSeries
Table 2.90 Datasets, Links, and Attributes contained in <VoltageClampSeries>
Id Type Description
<VoltageClampSeries> Group

Top level Group for <VoltageClampSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Recorded current.

  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: amperes
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.capacitance_fast Dataset

Fast capacitance, in farads.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: capacitance_fast
..unit Attribute

Unit of measurement for capacitance_fast, which is fixed to ‘farads’.

  • Data Type: text
  • Value: farads
  • Name: unit
.capacitance_slow Dataset

Slow capacitance, in farads.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: capacitance_slow
..unit Attribute

Unit of measurement for capacitance_fast, which is fixed to ‘farads’.

  • Data Type: text
  • Value: farads
  • Name: unit
.resistance_comp_bandwidth Dataset

Resistance compensation bandwidth, in hertz.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: resistance_comp_bandwidth
..unit Attribute

Unit of measurement for resistance_comp_bandwidth, which is fixed to ‘hertz’.

  • Data Type: text
  • Value: hertz
  • Name: unit
.resistance_comp_correction Dataset

Resistance compensation correction, in percent.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: resistance_comp_correction
..unit Attribute

Unit of measurement for resistance_comp_correction, which is fixed to ‘percent’.

  • Data Type: text
  • Value: percent
  • Name: unit
.resistance_comp_prediction Dataset

Resistance compensation prediction, in percent.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: resistance_comp_prediction
..unit Attribute

Unit of measurement for resistance_comp_prediction, which is fixed to ‘percent’.

  • Data Type: text
  • Value: percent
  • Name: unit
.whole_cell_capacitance_comp Dataset

Whole cell capacitance compensation, in farads.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: whole_cell_capacitance_comp
..unit Attribute

Unit of measurement for whole_cell_capacitance_comp, which is fixed to ‘farads’.

  • Data Type: text
  • Value: farads
  • Name: unit
.whole_cell_series_resistance_comp Dataset

Whole cell series resistance compensation, in ohms.

  • Quantity: 0 or 1
  • Data Type: float32
  • Name: whole_cell_series_resistance_comp
..unit Attribute

Unit of measurement for whole_cell_series_resistance_comp, which is fixed to ‘ohms’.

  • Data Type: text
  • Value: ohms
  • Name: unit
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.91 Groups contained in <VoltageClampSeries>
Id Type Description
<VoltageClampSeries> Group

Top level Group for <VoltageClampSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.5.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.6. VoltageClampStimulusSeries

Overview: Stimulus voltage applied during a voltage clamp recording.

VoltageClampStimulusSeries extends PatchClampSeries and includes all elements of PatchClampSeries with the following additions or changes.

VoltageClampStimulusSeries
Table 2.92 Datasets, Links, and Attributes contained in <VoltageClampStimulusSeries>
Id Type Description
<VoltageClampStimulusSeries> Group

Top level Group for <VoltageClampStimulusSeries>

.stimulus_description Attribute

Protocol/stimulus name for this patch-clamp dataset.

  • Data Type: text
  • Name: stimulus_description
.sweep_number Attribute

Sweep number, allows to group different PatchClampSeries together.

  • Data Type: uint64
  • Reuqired: False
  • Name: sweep_number
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Stimulus voltage applied.

  • Name: data
..unit Attribute

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’.

  • Data Type: text
  • Value: volts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.gain Dataset

Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).

  • Quantity: 0 or 1
  • Data Type: float
  • Name: gain
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

Table 2.93 Groups contained in <VoltageClampStimulusSeries>
Id Type Description
<VoltageClampStimulusSeries> Group

Top level Group for <VoltageClampStimulusSeries>

.electrode Link

Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.

.sync Group

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: 0 or 1
  • Name: sync

2.8.6.1. Groups: sync

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: 0 or 1
  • Name: sync

2.8.7. IntracellularElectrode

Overview: An intracellular electrode and its metadata.

IntracellularElectrode extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

IntracellularElectrode
Table 2.94 Datasets, Links, and Attributes contained in <IntracellularElectrode>
Id Type Description
<IntracellularElectrode> Group

Top level Group for <IntracellularElectrode>

.description Dataset

Description of electrode (e.g., whole-cell, sharp, etc.).

  • Data Type: text
  • Name: description
.filtering Dataset

Electrode specific filtering.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: filtering
.initial_access_resistance Dataset

Initial access resistance.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: initial_access_resistance
.location Dataset

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: 0 or 1
  • Data Type: text
  • Name: location
.resistance Dataset

Electrode resistance, in ohms.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: resistance
.seal Dataset

Information about seal used for recording.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: seal
.slice Dataset

Information about slice used for recording.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: slice
.device Link

Device that was used to record from this electrode.

  • Target Type Device
  • Name: device
Table 2.95 Groups contained in <IntracellularElectrode>
Id Type Description
<IntracellularElectrode> Group

Top level Group for <IntracellularElectrode>

.device Link

Device that was used to record from this electrode.

  • Target Type Device
  • Name: device

2.8.8. SweepTable

Overview: The table which groups different PatchClampSeries together.

SweepTable extends DynamicTable and includes all elements of DynamicTable with the following additions or changes.

SweepTable
Table 2.96 Datasets, Links, and Attributes contained in <SweepTable>
Id Type Description
<SweepTable> Group

Top level Group for <SweepTable>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.sweep_number Dataset

Sweep number of the PatchClampSeries in that row.

  • Extends: VectorData
  • Data Type: uint64
  • Name: sweep_number
.series Dataset

The PatchClampSeries with the sweep number in that row.

.series_index Dataset

Index for series.

.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

2.9. Optogenetics

This source module contains neurodata_types for opto-genetics data.

2.9.1. OptogeneticSeries

Overview: An optogenetic stimulus.

OptogeneticSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

OptogeneticSeries
Table 2.97 Datasets, Links, and Attributes contained in <OptogeneticSeries>
Id Type Description
<OptogeneticSeries> Group

Top level Group for <OptogeneticSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Applied power for optogenetic stimulus, in watts.

  • Data Type: numeric
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
..unit Attribute

Unit of measurement for data, which is fixed to ‘watts’.

  • Data Type: text
  • Value: watts
  • Name: unit
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.site Link

Link to OptogeneticStimulusSite object that describes the site to which this stimulus was applied.

Table 2.98 Groups contained in <OptogeneticSeries>
Id Type Description
<OptogeneticSeries> Group

Top level Group for <OptogeneticSeries>

.site Link

Link to OptogeneticStimulusSite object that describes the site to which this stimulus was applied.

.sync Group

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: 0 or 1
  • Name: sync

2.9.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.9.2. OptogeneticStimulusSite

Overview: A site of optogenetic stimulation.

OptogeneticStimulusSite extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

OptogeneticStimulusSite
Table 2.99 Datasets, Links, and Attributes contained in <OptogeneticStimulusSite>
Id Type Description
<OptogeneticStimulusSite> Group

Top level Group for <OptogeneticStimulusSite>

.description Dataset

Description of stimulation site.

  • Data Type: text
  • Name: description
.excitation_lambda Dataset

Excitation wavelength, in nm.

  • Data Type: float
  • Name: excitation_lambda
.location Dataset

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.

  • Data Type: text
  • Name: location
.device Link

Device that generated the stimulus.

  • Target Type Device
  • Name: device
Table 2.100 Groups contained in <OptogeneticStimulusSite>
Id Type Description
<OptogeneticStimulusSite> Group

Top level Group for <OptogeneticStimulusSite>

.device Link

Device that generated the stimulus.

  • Target Type Device
  • Name: device

2.10. Optical physiology

This source module contains neurodata_types for optical physiology data.

2.10.1. TwoPhotonSeries

Overview: Image stack recorded over time from 2-photon microscope.

TwoPhotonSeries extends ImageSeries and includes all elements of ImageSeries with the following additions or changes.

TwoPhotonSeries
Table 2.101 Datasets, Links, and Attributes contained in <TwoPhotonSeries>
Id Type Description
<TwoPhotonSeries> Group

Top level Group for <TwoPhotonSeries>

.pmt_gain Attribute

Photomultiplier gain.

  • Data Type: float32
  • Reuqired: False
  • Name: pmt_gain
.scan_line_rate Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Name: scan_line_rate
.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.field_of_view Dataset

Width, height and depth of image, or imaged area, in meters.

  • Quantity: 0 or 1
  • Data Type: float32
  • Dimensions: [‘width|height’, ‘width|height|depth’]
  • Shape: [[2], [3]]
  • Name: field_of_view
.data Dataset

Binary data representing images across frames.

  • Quantity: 0 or 1
  • Data Type: numeric
  • Dimensions: [[‘frame’, ‘y’, ‘x’], [‘frame’, ‘z’, ‘y’, ‘x’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.dimension Dataset

Number of pixels on x, y, (and z) axes.

  • Quantity: 0 or 1
  • Data Type: int32
  • Dimensions: [‘rank’]
  • Shape: [None]
  • Name: dimension
.external_file Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: external_file
..starting_frame Attribute

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].

  • Data Type: int
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: starting_frame
.format Dataset

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: 0 or 1
  • Data Type: text
  • Name: format
.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.imaging_plane Link

Link to ImagingPlane object from which this TimeSeries data was generated.

Table 2.102 Groups contained in <TwoPhotonSeries>
Id Type Description
<TwoPhotonSeries> Group

Top level Group for <TwoPhotonSeries>

.imaging_plane Link

Link to ImagingPlane object from which this TimeSeries data was generated.

.sync Group

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: 0 or 1
  • Name: sync

2.10.1.1. Groups: sync

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: 0 or 1
  • Name: sync

2.10.2. RoiResponseSeries

Overview: ROI responses over an imaging plane. Each row in data should correspond to the signal from one ROI. Each element on the second dimension of data should correspond to the signal from one ROI.

RoiResponseSeries extends TimeSeries and includes all elements of TimeSeries with the following additions or changes.

RoiResponseSeries
Table 2.103 Datasets, Links, and Attributes contained in <RoiResponseSeries>
Id Type Description
<RoiResponseSeries> Group

Top level Group for <RoiResponseSeries>

.description Attribute

Description of the time series.

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.comments Attribute

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.

  • Data Type: text
  • Reuqired: False
  • Default Value: no comments
  • Name: comments
.data Dataset

Signals from ROIs.

  • Data Type: numeric
  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_ROIs’]]
  • Shape: [[None], [None, None]]
  • Name: data
..conversion Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..resolution Attribute

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.

  • Data Type: float32
  • Reuqired: False
  • Default Value: -1.0
  • Name: resolution
..unit Attribute

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’.

  • Data Type: text
  • Name: unit
.rois Dataset

DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.

.starting_time Dataset

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: 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate Attribute

Sampling rate, in Hz.

  • Data Type: float32
  • Name: rate
..unit Attribute

Unit of measurement for time, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.timestamps Dataset

Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.

  • Quantity: 0 or 1
  • Data Type: float64
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: timestamps
..interval Attribute

Value is ‘1’

  • Data Type: int32
  • Value: 1
  • Name: interval
..unit Attribute

Unit of measurement for timestamps, which is fixed to ‘seconds’.

  • Data Type: text
  • Value: seconds
  • Name: unit
.control Dataset

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: 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description Dataset

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: 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
Table 2.104 Groups contained in <RoiResponseSeries>
Id Type Description
<RoiResponseSeries> Group

Top level Group for <RoiResponseSeries>

.sync Group

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: 0 or 1
  • Name: sync

2.10.2.1. Groups: sync

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: 0 or 1
  • Name: sync

2.10.3. DfOverF

Overview: 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).

DfOverF extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.105 Groups contained in <DfOverF>
Id Type Description
<DfOverF> Group

Top level Group for <DfOverF>

.<RoiResponseSeries> Group

RoiResponseSeries object(s) containing dF/F for a ROI.

2.10.3.1. Groups: <RoiResponseSeries>

RoiResponseSeries object(s) containing dF/F for a ROI.

2.10.4. Fluorescence

Overview: 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).

Fluorescence extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

Table 2.106 Groups contained in <Fluorescence>
Id Type Description
<Fluorescence> Group

Top level Group for <Fluorescence>

.<RoiResponseSeries> Group

RoiResponseSeries object(s) containing fluorescence data for a ROI.

2.10.4.1. Groups: <RoiResponseSeries>

RoiResponseSeries object(s) containing fluorescence data for a ROI.

2.10.5. ImageSegmentation

Overview: 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.

ImageSegmentation extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

ImageSegmentation
Table 2.107 Groups contained in <ImageSegmentation>
Id Type Description
<ImageSegmentation> Group

Top level Group for <ImageSegmentation>

.<PlaneSegmentation> Group

Results from image segmentation of a specific imaging plane.

..imaging_plane Link

Link to ImagingPlane object from which this data was generated.

2.10.5.1. Groups: <PlaneSegmentation>

Results from image segmentation of a specific imaging plane.

Table 2.108 Datasets, Links, and Attributes contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> Group

Top level Group for <PlaneSegmentation>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.image_mask Dataset

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.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Dimensions: [[‘num_roi’, ‘num_x’, ‘num_y’], [‘num_roi’, ‘num_x’, ‘num_y’, ‘num_z’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: image_mask
.pixel_mask_index Dataset

Index into pixel_mask.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: pixel_mask_index
.pixel_mask Dataset

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

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: Compound data type with the following elements:
    • x: Pixel x-coordinate. (dtype= uint )
    • y: Pixel y-coordinate. (dtype= uint )
    • weight: Weight of the pixel. (dtype= float )
  • Name: pixel_mask
.voxel_mask_index Dataset

Index into voxel_mask.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: voxel_mask_index
.voxel_mask Dataset

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

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: Compound data type with the following elements:
    • x: Voxel x-coordinate. (dtype= uint )
    • y: Voxel y-coordinate. (dtype= uint )
    • z: Voxel z-coordinate. (dtype= uint )
    • weight: Weight of the voxel. (dtype= float )
  • Name: voxel_mask
.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

.imaging_plane Link

Link to ImagingPlane object from which this data was generated.

Table 2.109 Groups contained in <<PlaneSegmentation>>
Id Type Description
<PlaneSegmentation> Group

Top level Group for <PlaneSegmentation>

.imaging_plane Link

Link to ImagingPlane object from which this data was generated.

.reference_images Group

Image stacks that the segmentation masks apply to.

  • Name: reference_images

2.10.5.2. Groups: <PlaneSegmentation>/reference_images

Image stacks that the segmentation masks apply to.

  • Name: reference_images
Table 2.110 Groups contained in <reference_images>
Id Type Description
reference_images Group

Top level Group for reference_images

  • Name: reference_images
.<ImageSeries> Group

One or more image stacks that the masks apply to (can be one-element stack).

2.10.5.3. Groups: <PlaneSegmentation>/reference_images/<ImageSeries>

One or more image stacks that the masks apply to (can be one-element stack).

2.10.6. PlaneSegmentation

Overview: Results from image segmentation of a specific imaging plane.

PlaneSegmentation extends DynamicTable and includes all elements of DynamicTable with the following additions or changes.

PlaneSegmentation
Table 2.111 Datasets, Links, and Attributes contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> Group

Top level Group for <PlaneSegmentation>

.colnames Attribute

The names of the columns in this table. This should be used to specify an order to the columns.

  • Data Type: ascii
  • Dimensions: [‘num_columns’]
  • Shape: [None]
  • Name: colnames
.description Attribute

Description of what is in this dynamic table.

  • Data Type: text
  • Name: description
.image_mask Dataset

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.

  • Extends: VectorData
  • Quantity: 0 or 1
  • Dimensions: [[‘num_roi’, ‘num_x’, ‘num_y’], [‘num_roi’, ‘num_x’, ‘num_y’, ‘num_z’]]
  • Shape: [[None, None, None], [None, None, None, None]]
  • Name: image_mask
.pixel_mask_index Dataset

Index into pixel_mask.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: pixel_mask_index
.pixel_mask Dataset

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

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: Compound data type with the following elements:
    • x: Pixel x-coordinate. (dtype= uint )
    • y: Pixel y-coordinate. (dtype= uint )
    • weight: Weight of the pixel. (dtype= float )
  • Name: pixel_mask
.voxel_mask_index Dataset

Index into voxel_mask.

  • Extends: VectorIndex
  • Quantity: 0 or 1
  • Name: voxel_mask_index
.voxel_mask Dataset

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

  • Extends: VectorData
  • Quantity: 0 or 1
  • Data Type: Compound data type with the following elements:
    • x: Voxel x-coordinate. (dtype= uint )
    • y: Voxel y-coordinate. (dtype= uint )
    • z: Voxel z-coordinate. (dtype= uint )
    • weight: Weight of the voxel. (dtype= float )
  • Name: voxel_mask
.id Dataset

Array of unique identifiers for the rows of this dynamic table.

  • Extends: ElementIdentifiers
  • Data Type: int
  • Dimensions: [‘num_rows’]
  • Shape: [None]
  • Name: id
.<VectorData> Dataset

Vector columns of this dynamic table.

.<VectorIndex> Dataset

Indices for the vector columns of this dynamic table.

.imaging_plane Link

Link to ImagingPlane object from which this data was generated.

Table 2.112 Groups contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> Group

Top level Group for <PlaneSegmentation>

.imaging_plane Link

Link to ImagingPlane object from which this data was generated.

.reference_images Group

Image stacks that the segmentation masks apply to.

  • Name: reference_images

2.10.6.1. Groups: reference_images

Image stacks that the segmentation masks apply to.

  • Name: reference_images
Table 2.113 Groups contained in <reference_images>
Id Type Description
reference_images Group

Top level Group for reference_images

  • Name: reference_images
.<ImageSeries> Group

One or more image stacks that the masks apply to (can be one-element stack).

2.10.6.2. Groups: reference_images/<ImageSeries>

One or more image stacks that the masks apply to (can be one-element stack).

2.10.7. ImagingPlane

Overview: An imaging plane and its metadata.

ImagingPlane extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

ImagingPlane
Table 2.114 Datasets, Links, and Attributes contained in <ImagingPlane>
Id Type Description
<ImagingPlane> Group

Top level Group for <ImagingPlane>

.description Dataset

Description of the imaging plane.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: description
.excitation_lambda Dataset

Excitation wavelength, in nm.

  • Data Type: float
  • Name: excitation_lambda
.imaging_rate Dataset

Rate that images are acquired, in Hz.

  • Data Type: float
  • Name: imaging_rate
.indicator Dataset

Calcium indicator.

  • Data Type: text
  • Name: indicator
.location Dataset

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.

  • Data Type: text
  • Name: location
.manifold Dataset

Physical position of each pixel. ‘xyz’ represents the position of the pixel relative to the defined coordinate space.

  • Quantity: 0 or 1
  • Data Type: float32
  • Dimensions: [[‘height’, ‘width’, ‘x|y|z’], [‘height’, ‘width’, ‘depth’, ‘x|y|z’]]
  • Shape: [[None, None, 3], [None, None, None, 3]]
  • Name: manifold
..conversion Attribute

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.

  • Data Type: float
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..unit Attribute

Base unit of measurement for working with the data. The default value is ‘meters’.

  • Data Type: text
  • Reuqired: False
  • Default Value: meters
  • Name: unit
.reference_frame Dataset

Describes position and reference frame of manifold based on position of first element in manifold. For example, text description of anatomical location or vectors needed to rotate to common anatomical axis (eg, AP/DV/ML). This field is necessary to interpret manifold. If manifold is not present then this field is not required.

  • Quantity: 0 or 1
  • Data Type: text
  • Name: reference_frame
.device Link

Link to the Device object that was used to record from this electrode.

  • Target Type Device
  • Name: device
Table 2.115 Groups contained in <ImagingPlane>
Id Type Description
<ImagingPlane> Group

Top level Group for <ImagingPlane>

.device Link

Link to the Device object that was used to record from this electrode.

  • Target Type Device
  • Name: device
.<OpticalChannel> Group

An optical channel used to record from an imaging plane.

2.10.7.1. Groups: <OpticalChannel>

An optical channel used to record from an imaging plane.

Table 2.116 Datasets, Links, and Attributes contained in <OpticalChannel>
Id Type Description
<OpticalChannel> Group

Top level Group for <OpticalChannel>

.description Dataset

Description or other notes about the channel.

  • Data Type: text
  • Name: description
.emission_lambda Dataset

Emission wavelength for channel, in nm.

  • Data Type: float
  • Name: emission_lambda

2.10.8. OpticalChannel

Overview: An optical channel used to record from an imaging plane.

OpticalChannel extends NWBContainer and includes all elements of NWBContainer with the following additions or changes.

OpticalChannel
Table 2.117 Datasets, Links, and Attributes contained in <OpticalChannel>
Id Type Description
<OpticalChannel> Group

Top level Group for <OpticalChannel>

.description Dataset

Description or other notes about the channel.

  • Data Type: text
  • Name: description
.emission_lambda Dataset

Emission wavelength for channel, in nm.

  • Data Type: float
  • Name: emission_lambda

2.10.9. MotionCorrection

Overview: 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).

MotionCorrection extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

MotionCorrection
Table 2.118 Groups contained in <MotionCorrection>
Id Type Description
<MotionCorrection> Group

Top level Group for <MotionCorrection>

.<CorrectedImageStack> Group

Reuslts from motion correction of an image stack.

..original Link

Link to ImageSeries object that is being registered.

2.10.9.1. Groups: <CorrectedImageStack>

Reuslts from motion correction of an image stack.

Table 2.119 Datasets, Links, and Attributes contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> Group

Top level Group for <CorrectedImageStack>

.original Link

Link to ImageSeries object that is being registered.

Table 2.120 Groups contained in <<CorrectedImageStack>>
Id Type Description
<CorrectedImageStack> Group

Top level Group for <CorrectedImageStack>

.original Link

Link to ImageSeries object that is being registered.

.corrected Group

Image stack with frames shifted to the common coordinates.

.xy_translation Group

Stores the x,y delta necessary to align each frame to the common coordinates, for example, to align each frame to a reference image.

2.10.9.2. Groups: <CorrectedImageStack>/corrected

Image stack with frames shifted to the common coordinates.

2.10.9.3. Groups: <CorrectedImageStack>/xy_translation

Stores the x,y delta necessary to align each frame to the common coordinates, for example, to align each frame to a reference image.

2.10.10. CorrectedImageStack

Overview: Reuslts from motion correction of an image stack.

CorrectedImageStack extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

CorrectedImageStack
Table 2.121 Datasets, Links, and Attributes contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> Group

Top level Group for <CorrectedImageStack>

.original Link

Link to ImageSeries object that is being registered.

Table 2.122 Groups contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> Group

Top level Group for <CorrectedImageStack>

.original Link

Link to ImageSeries object that is being registered.

.corrected Group

Image stack with frames shifted to the common coordinates.

.xy_translation Group

Stores the x,y delta necessary to align each frame to the common coordinates, for example, to align each frame to a reference image.

2.10.10.1. Groups: corrected

Image stack with frames shifted to the common coordinates.

2.10.10.2. Groups: xy_translation

Stores the x,y delta necessary to align each frame to the common coordinates, for example, to align each frame to a reference image.

2.11. Retinotopy

This source module contains neurodata_type for retinotopy data.

2.11.1. ImagingRetinotopy

Overview: 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).

ImagingRetinotopy extends NWBDataInterface and includes all elements of NWBDataInterface with the following additions or changes.

ImagingRetinotopy
Table 2.123 Datasets, Links, and Attributes contained in <ImagingRetinotopy>
Id Type Description
<ImagingRetinotopy> Group

Top level Group for <ImagingRetinotopy>

.axis_1_phase_map Dataset

Phase response to stimulus on the first measured axis.

  • Data Type: float32
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: axis_1_phase_map
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row|column’]
  • Shape: [None]
  • Name: field_of_view
..unit Attribute

Unit that axis data is stored in (e.g., degrees).

  • Data Type: text
  • Name: unit
.axis_1_power_map Dataset

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: 0 or 1
  • Data Type: float32
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: axis_1_power_map
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
..unit Attribute

Unit that axis data is stored in (e.g., degrees).

  • Data Type: text
  • Name: unit
.axis_2_phase_map Dataset

Phase response to stimulus on the second measured axis.

  • Data Type: float32
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: axis_2_phase_map
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
..unit Attribute

Unit that axis data is stored in (e.g., degrees).

  • Data Type: text
  • Name: unit
.axis_2_power_map Dataset

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: 0 or 1
  • Data Type: float32
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: axis_2_power_map
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
..unit Attribute

Unit that axis data is stored in (e.g., degrees).

  • Data Type: text
  • Name: unit
.axis_descriptions Dataset

Two-element array describing the contents of the two response axis fields. Description should be something like [‘altitude’, ‘azimuth’] or ‘[‘radius’, ‘theta’].

  • Data Type: text
  • Dimensions: [‘names’]
  • Shape: [2]
  • Name: axis_descriptions
.focal_depth_image Dataset

Gray-scale image taken with same settings/parameters (e.g., focal depth, wavelength) as data collection. Array format: [rows][columns].

  • Data Type: uint16
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: focal_depth_image
..bits_per_pixel Attribute

Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.

  • Data Type: int32
  • Name: bits_per_pixel
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
..focal_depth Attribute

Focal depth offset, in meters.

  • Data Type: float
  • Name: focal_depth
..format Attribute

Format of image. Right now only ‘raw’ is supported.

  • Data Type: text
  • Name: format
.sign_map Dataset

Sine of the angle between the direction of the gradient in axis_1 and axis_2.

  • Data Type: float32
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: sign_map
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
.vasculature_image Dataset

Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]

  • Data Type: uint16
  • Dimensions: [‘num_rows’, ‘num_cols’]
  • Shape: [None, None]
  • Name: vasculature_image
..bits_per_pixel Attribute

Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value

  • Data Type: int32
  • Name: bits_per_pixel
..dimension Attribute

Number of rows and columns in the image.

Additional Information: row, column representation is equivalent to height,width.
  • Data Type: int32
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: dimension
..field_of_view Attribute

Size of viewing area, in meters.

  • Data Type: float
  • Dimensions: [‘row_col’]
  • Shape: [None]
  • Name: field_of_view
..format Attribute

Format of image. Right now only ‘raw’ is supported.

  • Data Type: text
  • Name: format

3. Schema Sources

Source Specification: see Section 3.1

3.1. Namespace – NWB core

Description: see Section 1.1

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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
doc: NWB namespace
full_name: NWB core
name: core
schema:
- 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 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.1.0

3.2. Base data types

This source module contains base data types used throughout the NWB:N data format.

3.2.1. NWBData

Description: see Section 2.1.1

YAML Specification:

1
2
doc: An abstract data type for a dataset.
neurodata_type_def: NWBData

3.2.2. Index

Extends: NWBData

Description: see Section 2.1.2

YAML Specification:

1
2
3
4
5
6
7
8
9
attributes:
- doc: Target dataset that this index applies to.
  dtype:
    reftype: object
    target_type: NWBData
  name: target
doc: Pointers that index data values.
neurodata_type_def: Index
neurodata_type_inc: NWBData

3.2.3. VectorData

Extends: NWBData

Description: see Section 2.1.3

YAML Specification:

1
2
3
4
5
6
7
8
9
attributes:
- doc: Description of what these vectors represent.
  dtype: text
  name: description
doc: A 1-dimensional dataset. This can be indexed using a VectorIndex to encode a
  2-dimensional ragged array in 1 dimension. 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.
neurodata_type_def: VectorData
neurodata_type_inc: NWBData

3.2.4. VectorIndex

Extends: Index

Description: see Section 2.1.4

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
attributes:
- doc: Reference to the target dataset that this index applies to.
  dtype:
    reftype: object
    target_type: VectorData
  name: target
doc: An array of indices into the first dimension of the target VectorData. Can be
  used with VectorData to encode a 2-dimensional ragged array in 1 dimension.
neurodata_type_def: VectorIndex
neurodata_type_inc: Index

3.2.5. ElementIdentifiers

Extends: NWBData

Description: see Section 2.1.5

YAML Specification:

1
2
3
4
5
6
7
8
9
default_name: element_id
dims:
- num_elements
doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
dtype: int
neurodata_type_def: ElementIdentifiers
neurodata_type_inc: NWBData
shape:
- null

3.2.6. DynamicTableRegion

Extends: VectorData

Description: see Section 2.1.6

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: Reference to the DynamicTable object that this region applies to.
  dtype:
    reftype: object
    target_type: DynamicTable
  name: table
- doc: Description of what this table region points to.
  dtype: text
  name: description
doc: A region/index into a DynamicTable.
dtype: int
neurodata_type_def: DynamicTableRegion
neurodata_type_inc: VectorData

3.2.7. Image

Extends: NWBData

Description: see Section 2.1.7

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
attributes:
- doc: Pixel resolution of the image, in pixels per centimeter.
  dtype: float
  name: resolution
  required: false
- doc: Description of the image.
  dtype: text
  name: description
  required: false
dims:
- - num_x
  - num_y
- - num_x
  - num_y
  - (r, g, b)
- - num_x
  - num_y
  - (r, g, b, a)
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)).
neurodata_type_def: Image
neurodata_type_inc: NWBData
shape:
- - null
  - null
- - null
  - null
  - 3
- - null
  - null
  - 4

3.2.8. NWBContainer

Description: see Section 2.1.8

YAML Specification:

1
2
3
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: NWBContainer

3.2.9. NWBDataInterface

Extends: NWBContainer

Description: see Section 2.1.9

YAML Specification:

1
2
3
4
doc: An abstract data type for a generic container storing collections of data, as
  opposed to metadata.
neurodata_type_def: NWBDataInterface
neurodata_type_inc: NWBContainer

3.2.10. TimeSeries

Extends: NWBDataInterface

Description: see Section 2.1.10

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  - 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'.
    dtype: text
    name: unit
  dims:
  - - num_times
  - - num_times
    - num_DIM2
  - - num_times
    - num_DIM2
    - num_DIM3
  - - num_times
    - num_DIM2
    - num_DIM3
    - num_DIM4
  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.
  name: data
  shape:
  - - null
  - - null
    - null
  - - null
    - null
    - null
  - - null
    - null
    - null
    - null
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
doc: General purpose time series.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: TimeSeries
neurodata_type_inc: NWBDataInterface

3.2.11. ProcessingModule

Extends: NWBContainer

Description: see Section 2.1.11

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
attributes:
- doc: Description of this collection of processed data.
  dtype: text
  name: description
doc: A collection of processed data.
groups:
- doc: Data objects stored in this collection.
  neurodata_type_inc: NWBDataInterface
  quantity: '*'
neurodata_type_def: ProcessingModule
neurodata_type_inc: NWBContainer

3.2.12. Images

Extends: NWBDataInterface

Description: see Section 2.1.12

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
attributes:
- doc: Description of this collection of images.
  dtype: text
  name: description
datasets:
- doc: Images stored in this collection.
  neurodata_type_inc: Image
  quantity: +
default_name: Images
doc: A collection of images.
neurodata_type_def: Images
neurodata_type_inc: NWBDataInterface

3.2.13. DynamicTable

Extends: NWBDataInterface

Description: see Section 2.1.13

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
attributes:
- dims:
  - num_columns
  doc: The names of the columns in this table. This should be used to specify an order
    to the columns.
  dtype: ascii
  name: colnames
  shape:
  - null
- doc: Description of what is in this dynamic table.
  dtype: text
  name: description
datasets:
- dims:
  - num_rows
  doc: Array of unique identifiers for the rows of this dynamic table.
  dtype: int
  name: id
  neurodata_type_inc: ElementIdentifiers
  shape:
  - null
- doc: Vector columns of this dynamic table.
  neurodata_type_inc: VectorData
  quantity: '*'
- doc: Indices for the vector columns of this dynamic table.
  neurodata_type_inc: VectorIndex
  quantity: '*'
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.
neurodata_type_def: DynamicTable
neurodata_type_inc: NWBDataInterface

3.3. Epochs

This source module contains neurodata_types for epoch data.

3.3.1. TimeIntervals

Extends: DynamicTable

Description: see Section 2.2.1

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
attributes:
- dims:
  - num_columns
  doc: The names of the columns in this table. This should be used to specify an order
    to the columns.
  dtype: ascii
  name: colnames
  shape:
  - null
- doc: Description of what is in this dynamic table.
  dtype: text
  name: description
datasets:
- doc: Start time of epoch, in seconds.
  dtype: float
  name: start_time
  neurodata_type_inc: VectorData
- doc: Stop time of epoch, in seconds.
  dtype: float
  name: stop_time
  neurodata_type_inc: VectorData
- doc: User-defined tags that identify or categorize events.
  dtype: text
  name: tags
  neurodata_type_inc: VectorData
  quantity: '?'
- doc: Index for tags.
  name: tags_index
  neurodata_type_inc: VectorIndex
  quantity: '?'
- doc: An index into a TimeSeries object.
  dtype:
  - doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the referenced
      TimeSeries. The first dimension of those arrays is always time.
    dtype: int32
    name: idx_start
  - doc: Number of data samples available in this time series, during this epoch.
    dtype: int32
    name: count
  - doc: the TimeSeries that this index applies to.
    dtype:
      reftype: object
      target_type: TimeSeries
    name: timeseries
  name: timeseries
  neurodata_type_inc: VectorData
  quantity: '?'
- doc: Index for timeseries.
  name: timeseries_index
  neurodata_type_inc: VectorIndex
  quantity: '?'
- dims:
  - num_rows
  doc: Array of unique identifiers for the rows of this dynamic table.
  dtype: int
  name: id
  neurodata_type_inc: ElementIdentifiers
  shape:
  - null
- doc: Vector columns of this dynamic table.
  neurodata_type_inc: VectorData
  quantity: '*'
- doc: Indices for the vector columns of this dynamic table.
  neurodata_type_inc: VectorIndex
  quantity: '*'
doc: A container for aggregating epoch data and the TimeSeries that each epoch applies
  to.
neurodata_type_def: TimeIntervals
neurodata_type_inc: DynamicTable

3.4. Image data

This source module contains neurodata_types for image data.

3.4.1. GrayscaleImage

Extends: Image

Description: see Section 2.3.1

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
attributes:
- doc: Pixel resolution of the image, in pixels per centimeter.
  dtype: float
  name: resolution
  required: false
- doc: Description of the image.
  dtype: text
  name: description
  required: false
dims:
- y
- x
doc: A grayscale image.
neurodata_type_def: GrayscaleImage
neurodata_type_inc: Image
shape:
- null
- null

3.4.2. RGBImage

Extends: Image

Description: see Section 2.3.2

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
attributes:
- doc: Pixel resolution of the image, in pixels per centimeter.
  dtype: float
  name: resolution
  required: false
- doc: Description of the image.
  dtype: text
  name: description
  required: false
dims:
- y
- x
- R, G, B
doc: A color image.
neurodata_type_def: RGBImage
neurodata_type_inc: Image
shape:
- null
- null
- 3

3.4.3. RGBAImage

Extends: Image

Description: see Section 2.3.3

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
attributes:
- doc: Pixel resolution of the image, in pixels per centimeter.
  dtype: float
  name: resolution
  required: false
- doc: Description of the image.
  dtype: text
  name: description
  required: false
dims:
- y
- x
- R, G, B, A
doc: A color image with transparency.
neurodata_type_def: RGBAImage
neurodata_type_inc: Image
shape:
- null
- null
- 4

3.4.4. ImageSeries

Extends: TimeSeries

Description: see Section 2.3.4

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  - 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'.
    dtype: text
    name: unit
  dims:
  - - frame
    - y
    - x
  - - frame
    - z
    - y
    - x
  doc: Binary data representing images across frames.
  dtype: numeric
  name: data
  quantity: '?'
  shape:
  - - null
    - null
    - null
  - - null
    - null
    - null
    - null
- dims:
  - rank
  doc: Number of pixels on x, y, (and z) axes.
  dtype: int32
  name: dimension
  quantity: '?'
  shape:
  - null
- attributes:
  - dims:
    - num_files
    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].
    dtype: int
    name: starting_frame
    shape:
    - null
  dims:
  - num_files
  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.
  dtype: text
  name: external_file
  quantity: '?'
  shape:
  - null
- 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.
  dtype: text
  name: format
  quantity: '?'
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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][y][x] or [frame][z][y][x].
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: ImageSeries
neurodata_type_inc: TimeSeries

3.4.5. ImageMaskSeries

Extends: ImageSeries

Description: see Section 2.3.5

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  - 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'.
    dtype: text
    name: unit
  dims:
  - - frame
    - y
    - x
  - - frame
    - z
    - y
    - x
  doc: Binary data representing images across frames.
  dtype: numeric
  name: data
  quantity: '?'
  shape:
  - - null
    - null
    - null
  - - null
    - null
    - null
    - null
- dims:
  - rank
  doc: Number of pixels on x, y, (and z) axes.
  dtype: int32
  name: dimension
  quantity: '?'
  shape:
  - null
- attributes:
  - dims:
    - num_files
    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].
    dtype: int
    name: starting_frame
    shape:
    - null
  dims:
  - num_files
  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.
  dtype: text
  name: external_file
  quantity: '?'
  shape:
  - null
- 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.
  dtype: text
  name: format
  quantity: '?'
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
links:
- doc: Link to ImageSeries object that this image mask is applied to.
  name: masked_imageseries
  target_type: ImageSeries
neurodata_type_def: ImageMaskSeries
neurodata_type_inc: ImageSeries

3.4.6. OpticalSeries

Extends: ImageSeries

Description: see Section 2.3.6

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- doc: Distance from camera/monitor to target/eye.
  dtype: float32
  name: distance
  quantity: '?'
- dims:
  - - width, height
  - - width, height, depth
  doc: Width, height and depth of image, or imaged area, in meters.
  dtype: float32
  name: field_of_view
  quantity: '?'
  shape:
  - - 2
  - - 3
- doc: Description of image relative to some reference frame (e.g., which way is up).
    Must also specify frame of reference.
  dtype: text
  name: orientation
  quantity: '?'
- attributes:
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  - 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'.
    dtype: text
    name: unit
  dims:
  - - frame
    - y
    - x
  - - frame
    - z
    - y
    - x
  doc: Binary data representing images across frames.
  dtype: numeric
  name: data
  quantity: '?'
  shape:
  - - null
    - null
    - null
  - - null
    - null
    - null
    - null
- dims:
  - rank
  doc: Number of pixels on x, y, (and z) axes.
  dtype: int32
  name: dimension
  quantity: '?'
  shape:
  - null
- attributes:
  - dims:
    - num_files
    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].
    dtype: int
    name: starting_frame
    shape:
    - null
  dims:
  - num_files
  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.
  dtype: text
  name: external_file
  quantity: '?'
  shape:
  - null
- 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.
  dtype: text
  name: format
  quantity: '?'
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: OpticalSeries
neurodata_type_inc: ImageSeries

3.4.7. IndexSeries

Extends: TimeSeries

Description: see Section 2.3.7

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  - 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'.
    dtype: text
    name: unit
  dims:
  - num_times
  doc: Index of the frame in the referenced ImageSeries.
  dtype: int
  name: data
  shape:
  - null
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
links:
- doc: Link to ImageSeries object containing images that are indexed.
  name: indexed_timeseries
  target_type: ImageSeries
neurodata_type_def: IndexSeries
neurodata_type_inc: TimeSeries

3.5. NWB:N file

Main NWB:N file specification.

3.5.1. NWBFile

Extends: NWBContainer

Description: see Section 2.4.1

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
attributes:
- 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.
  dtype: text
  name: nwb_version
  value: 2.1.0
datasets:
- dims:
  - num_modifications
  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.'
  dtype: isodatetime
  name: file_create_date
  shape:
  - null
- 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.
  dtype: text
  name: identifier
- doc: A description of the experimental session and data in the file.
  dtype: text
  name: session_description
- 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.'
  dtype: isodatetime
  name: session_start_time
- 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).'
  dtype: isodatetime
  name: timestamps_reference_time
doc: An NWB:N file storing cellular-based neurophysiology data from a single experimental
  session.
groups:
- 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:
  - doc: Acquired, raw data.
    neurodata_type_inc: NWBDataInterface
    quantity: '*'
  name: acquisition
- 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:
  - doc: Custom analysis results.
    neurodata_type_inc: NWBContainer
    quantity: '*'
  name: analysis
- datasets:
  - attributes:
    - doc: Any notes the user has about the dataset being stored
      dtype: text
      name: notes
    doc: Any one-off datasets
    neurodata_type_def: ScratchData
    neurodata_type_inc: NWBData
    quantity: '*'
  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.
  groups:
  - doc: Any one-off containers
    neurodata_type_inc: NWBContainer
    quantity: '*'
  name: scratch
  quantity: '?'
- 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:
  - doc: Intermediate analysis of acquired data.
    neurodata_type_inc: ProcessingModule
    quantity: '*'
  name: processing
- 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:
  - doc: Stimuli presented during the experiment.
    groups:
    - doc: TimeSeries objects containing data of presented stimuli.
      neurodata_type_inc: TimeSeries
      quantity: '*'
    name: presentation
  - 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:
    - doc: TimeSeries objects containing template data of presented stimuli.
      neurodata_type_inc: TimeSeries
      quantity: '*'
    name: templates
  name: stimulus
- datasets:
  - doc: Notes about data collection and analysis.
    dtype: text
    name: data_collection
    quantity: '?'
  - doc: General description of the experiment.
    dtype: text
    name: experiment_description
    quantity: '?'
  - dims:
    - num_experimenters
    doc: Name of person(s) who performed the experiment. Can also specify roles of
      different people involved.
    dtype: text
    name: experimenter
    quantity: '?'
    shape:
    - null
  - doc: Institution(s) where experiment was performed.
    dtype: text
    name: institution
    quantity: '?'
  - dims:
    - num_keywords
    doc: Terms to search over.
    dtype: text
    name: keywords
    quantity: '?'
    shape:
    - null
  - doc: Laboratory where experiment was performed.
    dtype: text
    name: lab
    quantity: '?'
  - doc: Notes about the experiment.
    dtype: text
    name: notes
    quantity: '?'
  - doc: Description of drugs used, including how and when they were administered.
      Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.
    dtype: text
    name: pharmacology
    quantity: '?'
  - doc: Experimental protocol, if applicable. e.g., include IACUC protocol number.
    dtype: text
    name: protocol
    quantity: '?'
  - dims:
    - num_publications
    doc: Publication information. PMID, DOI, URL, etc.
    dtype: text
    name: related_publications
    quantity: '?'
    shape:
    - null
  - doc: Lab-specific ID for the session.
    dtype: text
    name: session_id
    quantity: '?'
  - doc: Description of slices, including information about preparation thickness,
      orientation, temperature, and bath solution.
    dtype: text
    name: slices
    quantity: '?'
  - attributes:
    - doc: Name of script file.
      dtype: text
      name: file_name
    doc: Script file or link to public source code used to create this NWB file.
    dtype: text
    name: source_script
    quantity: '?'
  - doc: Notes about stimuli, such as how and where they were presented.
    dtype: text
    name: stimulus
    quantity: '?'
  - doc: Narrative description about surgery/surgeries, including date(s) and who
      performed surgery.
    dtype: text
    name: surgery
    quantity: '?'
  - doc: Information about virus(es) used in experiments, including virus ID, source,
      date made, injection location, volume, etc.
    dtype: text
    name: virus
    quantity: '?'
  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.
  groups:
  - doc: Place-holder than can be extended so that lab-specific meta-data can be placed
      in /general.
    neurodata_type_def: LabMetaData
    neurodata_type_inc: NWBContainer
    quantity: '*'
  - doc: Description of hardware devices used during experiment, e.g., monitors, ADC
      boards, microscopes, etc.
    groups:
    - doc: A data acquisition device, e.g. recording system.
      neurodata_type_def: Device
      neurodata_type_inc: NWBContainer
      quantity: +
    name: devices
    quantity: '?'
  - datasets:
    - doc: Age of subject. Can be supplied instead of 'date_of_birth'.
      dtype: text
      name: age
      quantity: '?'
    - doc: Date of birth of subject. Can be supplied instead of 'age'.
      dtype: isodatetime
      name: date_of_birth
      quantity: '?'
    - doc: Description of subject and where subject came from (e.g., breeder, if animal).
      dtype: text
      name: description
      quantity: '?'
    - doc: Genetic strain. If absent, assume Wild Type (WT).
      dtype: text
      name: genotype
      quantity: '?'
    - doc: Gender of subject.
      dtype: text
      name: sex
      quantity: '?'
    - doc: Species of subject.
      dtype: text
      name: species
      quantity: '?'
    - doc: ID of animal/person used/participating in experiment (lab convention).
      dtype: text
      name: subject_id
      quantity: '?'
    - doc: Weight at time of experiment, at time of surgery and at other important
        times.
      dtype: text
      name: weight
      quantity: '?'
    doc: Information about the animal or person from which the data was measured.
    name: subject
    neurodata_type_def: Subject
    neurodata_type_inc: NWBContainer
    quantity: '?'
  - doc: Metadata related to extracellular electrophysiology.
    groups:
    - doc: Physical group of electrodes.
      neurodata_type_inc: ElectrodeGroup
      quantity: '*'
    - datasets:
      - doc: x coordinate of the channel location.
        dtype: float
        name: x
        neurodata_type_inc: VectorData
      - doc: y coordinate of the channel location.
        dtype: float
        name: y
        neurodata_type_inc: VectorData
      - doc: z coordinate of the channel location.
        dtype: float
        name: z
        neurodata_type_inc: VectorData
      - doc: Impedance of the channel.
        dtype: float
        name: imp
        neurodata_type_inc: VectorData
      - 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.
        dtype: ascii
        name: location
        neurodata_type_inc: VectorData
      - doc: Description of hardware filtering.
        dtype: float
        name: filtering
        neurodata_type_inc: VectorData
      - doc: Reference to the ElectrodeGroup this electrode is a part of.
        dtype:
          reftype: object
          target_type: ElectrodeGroup
        name: group
        neurodata_type_inc: VectorData
      - doc: Name of the ElectrodeGroup this electrode is a part of.
        dtype: ascii
        name: group_name
        neurodata_type_inc: VectorData
      doc: A table of all electrodes (i.e. channels) used for recording.
      name: electrodes
      neurodata_type_inc: DynamicTable
      quantity: '?'
    name: extracellular_ephys
    quantity: '?'
  - datasets:
    - 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.
      dtype: text
      name: filtering
      quantity: '?'
    doc: Metadata related to intracellular electrophysiology.
    groups:
    - doc: An intracellular electrode.
      neurodata_type_inc: IntracellularElectrode
      quantity: '*'
    - doc: The table which groups different PatchClampSeries together.
      name: sweep_table
      neurodata_type_inc: SweepTable
      quantity: '?'
    name: intracellular_ephys
    quantity: '?'
  - doc: Metadata describing optogenetic stimuluation.
    groups:
    - doc: An optogenetic stimulation site.
      neurodata_type_inc: OptogeneticStimulusSite
      quantity: '*'
    name: optogenetics
    quantity: '?'
  - doc: Metadata related to optophysiology.
    groups:
    - doc: An imaging plane.
      neurodata_type_inc: ImagingPlane
      quantity: '*'
    name: optophysiology
    quantity: '?'
  name: general
- 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.
  groups:
  - doc: Divisions in time marking experimental stages or sub-divisions of a single
      recording session.
    name: epochs
    neurodata_type_inc: TimeIntervals
    quantity: '?'
  - doc: Repeated experimental events that have a logical grouping.
    name: trials
    neurodata_type_inc: TimeIntervals
    quantity: '?'
  - doc: Time intervals that should be removed from analysis.
    name: invalid_times
    neurodata_type_inc: TimeIntervals
    quantity: '?'
  - doc: Optional additional table(s) for describing other experimental time intervals.
    neurodata_type_inc: TimeIntervals
    quantity: '*'
  name: intervals
  quantity: '?'
- doc: Data about sorted spike units.
  name: units
  neurodata_type_inc: Units
  quantity: '?'
name: root
neurodata_type_def: NWBFile
neurodata_type_inc: NWBContainer

3.5.2. ScratchData

Extends: NWBData

Description: see Section 2.4.2

YAML Specification:

1
2
3
4
5
6
7
8
attributes:
- doc: Any notes the user has about the dataset being stored
  dtype: text
  name: notes
doc: Any one-off datasets
neurodata_type_def: ScratchData
neurodata_type_inc: NWBData
quantity: '*'

3.5.3. LabMetaData

Extends: NWBContainer

Description: see Section 2.4.3

YAML Specification:

1
2
3
4
5
doc: Place-holder than can be extended so that lab-specific meta-data can be placed
  in /general.
neurodata_type_def: LabMetaData
neurodata_type_inc: NWBContainer
quantity: '*'

3.5.4. Device

Extends: NWBContainer

Description: see Section 2.4.4

YAML Specification:

1
2
3
4
doc: A data acquisition device, e.g. recording system.
neurodata_type_def: Device
neurodata_type_inc: NWBContainer
quantity: +

3.5.5. Subject

Extends: NWBContainer

Description: see Section 2.4.5

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
datasets:
- doc: Age of subject. Can be supplied instead of 'date_of_birth'.
  dtype: text
  name: age
  quantity: '?'
- doc: Date of birth of subject. Can be supplied instead of 'age'.
  dtype: isodatetime
  name: date_of_birth
  quantity: '?'
- doc: Description of subject and where subject came from (e.g., breeder, if animal).
  dtype: text
  name: description
  quantity: '?'
- doc: Genetic strain. If absent, assume Wild Type (WT).
  dtype: text
  name: genotype
  quantity: '?'
- doc: Gender of subject.
  dtype: text
  name: sex
  quantity: '?'
- doc: Species of subject.
  dtype: text
  name: species
  quantity: '?'
- doc: ID of animal/person used/participating in experiment (lab convention).
  dtype: text
  name: subject_id
  quantity: '?'
- doc: Weight at time of experiment, at time of surgery and at other important times.
  dtype: text
  name: weight
  quantity: '?'
doc: Information about the animal or person from which the data was measured.
name: subject
neurodata_type_def: Subject
neurodata_type_inc: NWBContainer
quantity: '?'

3.6. Miscellaneous neurodata_types.

Miscellaneous types.

3.6.1. AbstractFeatureSeries

Extends: TimeSeries

Description: see Section 2.5.1

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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'".
    dtype: text
    name: unit
    required: false
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  dims:
  - - num_times
  - - num_times
    - num_features
  doc: Values of each feature at each time.
  dtype: numeric
  name: data
  shape:
  - - null
  - - null
    - null
- dims:
  - num_features
  doc: Units of each feature.
  dtype: text
  name: feature_units
  quantity: '?'
  shape:
  - null
- dims:
  - num_features
  doc: Description of the features represented in TimeSeries::data.
  dtype: text
  name: features
  shape:
  - null
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: AbstractFeatureSeries
neurodata_type_inc: TimeSeries

3.6.2. AnnotationSeries

Extends: TimeSeries

Description: see Section 2.5.2

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - doc: Smallest meaningful difference between values in data. Annotations have no
      units, so the value is fixed to -1.0.
    dtype: float
    name: resolution
    value: -1.0
  - doc: Base unit of measurement for working with the data. Annotations have no units,
      so the value is fixed to 'n/a'.
    dtype: text
    name: unit
    value: n/a
  - 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.
    dtype: float32
    name: conversion
    required: false
  dims:
  - num_times
  doc: Annotations made during an experiment.
  dtype: text
  name: data
  shape:
  - null
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: AnnotationSeries
neurodata_type_inc: TimeSeries

3.6.3. IntervalSeries

Extends: TimeSeries

Description: see Section 2.5.3

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - doc: Smallest meaningful difference between values in data. Annotations have no
      units, so the value is fixed to -1.0.
    dtype: float
    name: resolution
    value: -1.0
  - doc: Base unit of measurement for working with the data. Annotations have no units,
      so the value is fixed to 'n/a'.
    dtype: text
    name: unit
    value: n/a
  - 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.
    dtype: float32
    name: conversion
    required: false
  dims:
  - num_times
  doc: Use values >0 if interval started, <0 if interval ended.
  dtype: int8
  name: data
  shape:
  - null
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: IntervalSeries
neurodata_type_inc: TimeSeries

3.6.4. DecompositionSeries

Extends: TimeSeries

Description: see Section 2.5.4

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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'.
    dtype: text
    name: unit
    required: false
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  dims:
  - num_times
  - num_channels
  - num_bands
  doc: Data decomposed into frequency bands.
  dtype: numeric
  name: data
  shape:
  - null
  - null
  - null
- doc: The metric used, e.g. phase, amplitude, power.
  dtype: text
  name: metric
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal.
groups:
- datasets:
  - doc: Name of the band, e.g. theta.
    dtype: text
    name: band_name
    neurodata_type_inc: VectorData
  - dims:
    - num_bands
    - low, high
    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.
    dtype: float
    name: band_limits
    neurodata_type_inc: VectorData
    shape:
    - null
    - 2
  - dims:
    - num_bands
    doc: The mean Gaussian filters, in Hz.
    dtype: float
    name: band_mean
    neurodata_type_inc: VectorData
    shape:
    - null
  - dims:
    - num_bands
    doc: The standard deviation of Gaussian filters, in Hz.
    dtype: float
    name: band_stdev
    neurodata_type_inc: VectorData
    shape:
    - null
  doc: Table for describing the bands that this series was generated from. There should
    be one row in this table for each band.
  name: bands
  neurodata_type_inc: DynamicTable
- 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.
  name: sync
  quantity: '?'
links:
- 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.
  name: source_timeseries
  quantity: '?'
  target_type: TimeSeries
neurodata_type_def: DecompositionSeries
neurodata_type_inc: TimeSeries

3.6.5. Units

Extends: DynamicTable

Description: see Section 2.5.5

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
attributes:
- dims:
  - num_columns
  doc: The names of the columns in this table. This should be used to specify an order
    to the columns.
  dtype: ascii
  name: colnames
  shape:
  - null
- doc: Description of what is in this dynamic table.
  dtype: text
  name: description
datasets:
- doc: Index into the spike_times dataset.
  name: spike_times_index
  neurodata_type_inc: VectorIndex
  quantity: '?'
- doc: Spike times for each unit.
  dtype: double
  name: spike_times
  neurodata_type_inc: VectorData
  quantity: '?'
- doc: Index into the obs_intervals dataset.
  name: obs_intervals_index
  neurodata_type_inc: VectorIndex
  quantity: '?'
- dims:
  - num_intervals
  - start|end
  doc: Observation intervals for each unit.
  dtype: double
  name: obs_intervals
  neurodata_type_inc: VectorData
  quantity: '?'
  shape:
  - null
  - 2
- doc: Index into electrodes.
  name: electrodes_index
  neurodata_type_inc: VectorIndex
  quantity: '?'
- doc: Electrode that each spike unit came from, specified using a DynamicTableRegion.
  name: electrodes
  neurodata_type_inc: DynamicTableRegion
  quantity: '?'
- doc: Electrode group that each spike unit came from.
  dtype:
    reftype: object
    target_type: ElectrodeGroup
  name: electrode_group
  neurodata_type_inc: VectorData
  quantity: '?'
- dims:
  - - num_units
    - num_samples
  - - num_units
    - num_samples
    - num_electrodes
  doc: Spike waveform mean for each spike unit.
  dtype: float
  name: waveform_mean
  neurodata_type_inc: VectorData
  quantity: '?'
  shape:
  - - null
    - null
  - - null
    - null
    - null
- dims:
  - - num_units
    - num_samples
  - - num_units
    - num_samples
    - num_electrodes
  doc: Spike waveform standard deviation for each spike unit.
  dtype: float
  name: waveform_sd
  neurodata_type_inc: VectorData
  quantity: '?'
  shape:
  - - null
    - null
  - - null
    - null
    - null
- dims:
  - num_rows
  doc: Array of unique identifiers for the rows of this dynamic table.
  dtype: int
  name: id
  neurodata_type_inc: ElementIdentifiers
  shape:
  - null
- doc: Vector columns of this dynamic table.
  neurodata_type_inc: VectorData
  quantity: '*'
- doc: Indices for the vector columns of this dynamic table.
  neurodata_type_inc: VectorIndex
  quantity: '*'
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.
neurodata_type_def: Units
neurodata_type_inc: DynamicTable

3.7. Behavior

This source module contains neurodata_types for behavior data.

3.7.1. SpatialSeries

Extends: TimeSeries

Description: see Section 2.6.1

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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'.
    dtype: text
    name: unit
    required: false
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  dims:
  - - num_times
  - - num_times
    - num_features
  doc: 1-D or 2-D array storing position or direction relative to some reference frame.
  dtype: numeric
  name: data
  shape:
  - - null
  - - null
    - null
- doc: Description defining what exactly 'straight-ahead' means.
  dtype: text
  name: reference_frame
  quantity: '?'
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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."
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: SpatialSeries
neurodata_type_inc: TimeSeries

3.7.2. BehavioralEpochs

Extends: NWBDataInterface

Description: see Section 2.6.2

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
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:
- doc: IntervalSeries object containing start and stop times of epochs.
  neurodata_type_inc: IntervalSeries
  quantity: '*'
neurodata_type_def: BehavioralEpochs
neurodata_type_inc: NWBDataInterface

3.7.3. BehavioralEvents

Extends: NWBDataInterface

Description: see Section 2.6.3

YAML Specification:

1
2
3
4
5
6
7
8
9
default_name: BehavioralEvents
doc: TimeSeries for storing behavioral events. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a>
  for more details.
groups:
- doc: TimeSeries object containing behavioral events.
  neurodata_type_inc: TimeSeries
  quantity: '*'
neurodata_type_def: BehavioralEvents
neurodata_type_inc: NWBDataInterface

3.7.4. BehavioralTimeSeries

Extends: NWBDataInterface

Description: see Section 2.6.4

YAML Specification:

1
2
3
4
5
6
7
8
9
default_name: BehavioralTimeSeries
doc: TimeSeries for storing Behavoioral time series data. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a>
  for more details.
groups:
- doc: TimeSeries object containing continuous behavioral data.
  neurodata_type_inc: TimeSeries
  quantity: '*'
neurodata_type_def: BehavioralTimeSeries
neurodata_type_inc: NWBDataInterface

3.7.5. PupilTracking

Extends: NWBDataInterface

Description: see Section 2.6.5

YAML Specification:

1
2
3
4
5
6
7
8
default_name: PupilTracking
doc: Eye-tracking data, representing pupil size.
groups:
- doc: TimeSeries object containing time series data on pupil size.
  neurodata_type_inc: TimeSeries
  quantity: +
neurodata_type_def: PupilTracking
neurodata_type_inc: NWBDataInterface

3.7.6. EyeTracking

Extends: NWBDataInterface

Description: see Section 2.6.6

YAML Specification:

1
2
3
4
5
6
7
8
default_name: EyeTracking
doc: Eye-tracking data, representing direction of gaze.
groups:
- doc: SpatialSeries object containing data measuring direction of gaze.
  neurodata_type_inc: SpatialSeries
  quantity: '*'
neurodata_type_def: EyeTracking
neurodata_type_inc: NWBDataInterface

3.7.7. CompassDirection

Extends: NWBDataInterface

Description: see Section 2.6.7

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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:
- doc: SpatialSeries object containing direction of gaze travel.
  neurodata_type_inc: SpatialSeries
  quantity: '*'
neurodata_type_def: CompassDirection
neurodata_type_inc: NWBDataInterface

3.7.8. Position

Extends: NWBDataInterface

Description: see Section 2.6.8

YAML Specification:

1
2
3
4
5
6
7
8
default_name: Position
doc: Position data, whether along the x, x/y or x/y/z axis.
groups:
- doc: SpatialSeries object containing position data.
  neurodata_type_inc: SpatialSeries
  quantity: +
neurodata_type_def: Position
neurodata_type_inc: NWBDataInterface

3.8. Extracellular electrophysiology

This source module contains neurodata_types for extracellular electrophysiology data.

3.8.1. ElectricalSeries

Extends: TimeSeries

Description: see Section 2.7.1

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - 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'.
    dtype: text
    name: unit
    value: volts
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  dims:
  - - num_times
  - - num_times
    - num_channels
  - - num_times
    - num_channels
    - num_samples
  doc: Recorded voltage data.
  dtype: numeric
  name: data
  shape:
  - - null
  - - null
    - null
  - - null
    - null
    - null
- doc: DynamicTableRegion pointer to the electrodes that this time series was generated
    from.
  name: electrodes
  neurodata_type_inc: DynamicTableRegion
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  doc: Timestamps for samples stored in data, in seconds, relative to the common experiment
    master-clock stored in NWBFile.timestamps_reference_time.
  dtype: float64
  name: timestamps
  quantity: '?'
  shape:
  - null
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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.
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: ElectricalSeries
neurodata_type_inc: TimeSeries

3.8.2. SpikeEventSeries

Extends: ElectricalSeries

Description: see Section 2.7.2

YAML Specification:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
attributes:
- default_value: no description
  doc: Description of the time series.
  dtype: text
  name: description
  required: false
- 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.
  dtype: text
  name: comments
  required: false
datasets:
- attributes:
  - doc: Unit of measurement for waveforms, which is fixed to 'volts'.
    dtype: text
    name: unit
    value: volts
  - 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.
    dtype: float32
    name: conversion
    required: false
  - 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.
    dtype: float32
    name: resolution
    required: false
  dims:
  - - num_events
    - num_samples
  - - num_events
    - num_channels
    - num_samples
  doc: Spike waveforms.
  dtype: numeric
  name: data
  shape:
  - - null
    - null
  - - null
    - null
    - null
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Unit of measurement for timestamps, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_times
  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.
  dtype: float64
  name: timestamps
  shape:
  - null
- doc: DynamicTableRegion pointer to the electrodes that this time series was generated
    from.
  name: electrodes
  neurodata_type_inc: DynamicTableRegion
- attributes:
  - doc: Sampling rate, in Hz.
    dtype: float32
    name: rate
  - doc: Unit of measurement for time, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  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.
  dtype: float64
  name: starting_time
  quantity: '?'
- dims:
  - num_times
  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.
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  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.
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
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).'
groups:
- 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.
  name: sync
  quantity: '?'
neurodata_type_def: SpikeEventSeries
neurodata_type_inc: ElectricalSeries

3.8.3. FeatureExtraction

Extends: NWBDataInterface

Description: see Section 2.7.3

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
datasets:
- dims:
  - num_features
  doc: Description of features (eg, ''PC1'') for each of the extracted features.
  dtype: text
  name: description
  shape:
  - null
- dims:
  - num_events
  - num_channels
  - num_features
  doc: Multi-dimensional array of features extracted from each event.
  dtype: float32
  name: features
  shape:
  - null
  - null
  - null
- dims:
  - num_events
  doc: Times of events that features correspond to (can be a link).
  dtype: float64
  name: times
  shape:
  - null
- doc: DynamicTableRegion pointer to the electrodes that this time series was generated
    from.
  name: electrodes
  neurodata_type_inc: DynamicTableRegion
default_name: FeatureExtraction
doc: Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEventSeries
  or other source.
neurodata_type_def: FeatureExtraction
neurodata_type_inc: NWBDataInterface

3.8.4. EventDetection

Extends: NWBDataInterface

Description: see Section 2.7.4

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
datasets:
- doc: Description of how events were detected, such as voltage threshold, or dV/dT
    threshold, as well as relevant values.
  dtype: text
  name: detection_method
- dims:
  - num_events
  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.
  dtype: int32
  name: source_idx
  shape:
  - null
- attributes:
  - doc: Unit of measurement for event times, which is fixed to 'seconds'.
    dtype: text
    name: unit
    value: seconds
  dims:
  - num_events
  doc: Timestamps of events, in seconds.
  dtype: float64
  name: times
  shape:
  - null
default_name: EventDetection
doc: Detected spike events from voltage trace(s).
links:
- 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.
  name: source_electricalseries
  target_type: ElectricalSeries
neurodata_type_def: EventDetection
neurodata_type_inc: NWBDataInterface

3.8.5. EventWaveform

Extends: NWBDataInterface

Description: see Section 2.7.5

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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:
- doc: SpikeEventSeries object(s) containing detected spike event waveforms.
  neurodata_type_inc: SpikeEventSeries
  quantity: '*'
neurodata_type_def: EventWaveform
neurodata_type_inc: NWBDataInterface

3.8.6. FilteredEphys

Extends: NWBDataInterface

Description: see Section 2.7.6

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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:
- doc: ElectricalSeries object(s) containing filtered electrophysiology data.
  neurodata_type_inc: ElectricalSeries
  quantity: +
neurodata_type_def: FilteredEphys
neurodata_type_inc: NWBDataInterface

3.8.7. LFP

Extends: NWBDataInterface

Description: see Section 2.7.7

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
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:
- doc: ElectricalSeries object(s) containing LFP data for one or more channels.
  neurodata_type_inc: ElectricalSeries
  quantity: +
neurodata_type_def: LFP
neurodata_type_inc: NWBDataInterface

3.8.8. ElectrodeGroup

Extends: NWBContainer

Description: see Section 2.7.8

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
attributes:
- doc: Description of this electrode group.
  dtype: text
  name: description
- doc: Location of electrode group. 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.
  dtype: text
  name: location
doc: A physical grouping of electrodes, e.g. a shank of an array.
links:
- doc: Link to the device that was used to record from this electrode group.
  name: device
  target_type: Device
neurodata_type_def: ElectrodeGroup
neurodata_type_inc: NWBContainer

3.8.9. ClusterWaveforms

Extends: