1. NWB Format

Version v2.0.0-beta Nov 07, 2017

1.1. Overview

The NWB Format is a core component of the Neurodata Without Borders: Neurophysiology (NWB:N) project. The NWB format is designed to store general optical and electrical physiology data in a way that is both understandable to humans as well as accessible to programmatic interpretation. The format is designed to be friendly to and usable by software tools and analysis scripts, and to impose few a priori assumptions about data representation and analysis.

The NWB format uses the following main primitives to hierarchically organize neuroscience data :

  • A Group is similar to a folder and may contain an arbitrary number of other groups and datasets,
  • A Dataset describes an n-dimensional array and provides the primary means for storing data,
  • An Attribute* is a small dataset that is attached to a specific group or dataset and is typically used to store metadata specific to the object they are associated with, and
  • A Links is references to another groups are datasets.

The NWB format is formally described via formal specification documents using the NWB specification language . HDF5 currently serves as the main format for storing data in the NWB format (see http://nwb-storage.readthedocs.io/en/latest/ for details). The PyNWB <http://pynwb.readthedocs.io/en/latest/> API is available to enable users to efficiently interact with NWB format files.

The NWB format uses a modular design in which all main semantic components of the format have a unique neurodata_type (similar to a Class in object-oriented design)(Section 1.1.1). This allows for reuse and extension of types through inclusion and inheritance. All datasets and groups in the format can be uniquely identified by either their name and/or neurodata_type

Two important base types in the NWB format are NWBContainer and TimeSeries. NWBContainer defines a generic container for storing colleciton of data and is used to define common features and functionality across data containers (see Section 1.1.2). TimeSeries is a central component in the NWB format for storing complex temporal series (see Section 1.1.3). In the format, these types are then extended to define more specialized types. To organize and define collections of processed data from common data processing steps, the NWB format then defines the concept of ProcessingModule where each processing step is represented by a corresponding NWBContainer (see Section 1.1.4 for details).

At a high level, data is organized into the following main groups:

  • acquistion/ : For storage of data streams recorded from the system, including ephys, ophys, tracking, etc.
  • epochs/ : For storage of experimental intervals,
  • stimulus/ : For storage of stimulus data,
  • general/ : For storage of experimental metadata, including protocol, notes and description of hardware device(s).
  • processing/ : For storage of standardized processing modules, often as part of intermediate analysis of data that is necessary to perform before scientific analysis,
  • analysis/ : For storage of lab-specific and custom scientific analysis of data,

The high-level data organization of NWB files is described in detail in Section 1.4.1.1. The top-level datasets and attributes are described in Table 1.2 and the top-level organization of data into groups is described in Table 1.3.

1.1.1. neurodata_type

The concept of a neurodata_type is similar to the concept of a Class in object-oriented programming. In the NWB format, groups or datasets may be given a unique neurodata_type. The neurodata_type allows the unique identification of the type of objects in the format and also endable the reuse of types through the concept of inheritance. A group or dataset may, hence, define a new neurodata_type while extending an existing type. E.g., AbstractFeatureSeries defines a new type that inherits from TimeSeries.

1.1.2. NWBContainer and NWBData

NWBContainer defines a generic container for storing collections of data. NWBContainer serves as the base type for all main data containers (including TimeSeries) of the core NWB data format and allows us to define and integrate new common functionality in a central place and via common mechanisms. See also Section 1.4.4.3.

NWBData then functions as a common base class for datasets with an assigned neurodata_type. See also Section 1.4.4.1.

Note

The concept of NWBContainer (see Section 1.4.4.3) has been introduced in NWB 2 and is a generalization of the concept of Interface from earlier version of NWB (i.e., 1.0.x and earlier). In contrast to v1.0.x, Interface was renamed to NWBContainer to ease intuition and the concept was generalized to provide a common base for data containers (rather than being specific to ProcessingModules).

1.1.3. Time Series

The file format is designed around a data structure called a TimeSeries which stores time-varying data. A TimeSeries is a superset of several INCF types, including signal events, image stacks and experimental events. To account for different storage requirements and different modalities, a TimeSeries is defined in a minimal form and it can be extended (i.e., subclassed) to account for different modalities and data storage requirements (see Section 1.1.5)

Each TimeSeries has its own HDF5 group, and all datasets belonging to a TimeSeries are in that group. In particular, a TimeSeries defines components to store data and time.

The data element in the TimeSeries will typically be an array of any valid HDF5 data type (e.g., a multi-dimensional floating point array). The data stored can be in any unit. The attributes of the data field must indicate the SI unit that the data relates to (or appropriate counterpart, such as color-space) and the multiplier necessary to convert stored values to the specified SI unit.

TimeSeries support provides two time objects representations. The first, timestamps, stores time information that is corrected to the experiment’s time base (i.e.,aligned to a master clock, with time-zero aligned to the starting time of the experiment). This field is used for data processing and subsequent scientific analysis. The second, sync, is an optional group that can be used to store the sample times as reported by the acquisition/stimulus hardware, before samples are converted to a common timebase and corrected relative to the master clock. This approach allows the NWB format to support streaming of data directly from hardware sources.

In addition to data and time, the TimeSeries group can be used to store additional information beyond what is required by the specification. I.e., an end user is free to add additional key/value pairs as necessary for their needs via the concept of extensions. It should be noted that such lab-specific extensions may not be recognized by analysis tools/scripts existing outside the lab. Extensions are described in section (see Section 1.1.5).

1.1.4. Data Processing Modules

NWB uses ProcessingModule to store data for—and represent the results of—common data processing steps, such as spike sorting and image segmentation, that occur before scientific analysis of the data. Processing modules store the data used by software tools to calculate these intermediate results. All processing modules are stored directly in the group /processing. The name of each module is chosen by the data provider (i.e. processing modules have a “variable” name). The particular data within each processing module is specified by one or more NWBContainers, which are groups residing directly within processing module. Each NWBContainer has a unique neurodata_type (e.g., ImageSegmentation) that decribes and defines the data contained in the NWBContainer. For NWBContainers designed for use with processing modules, a default name (usually the same as the neurodata_type) is commonly specified to further ease identification of the data in file. However, to support storage of multiple instances of the same subtype of NWBContainer in the same processing module, NWB allows users to optionally define custom names as well. A detailed overview of the main data processing containers is available in Section 1.4.3.

1.1.5. Extending the format

The data organization presented in this document constitutes the core NWB format. Extensibility is handled via the concept of extensions, allowing users to extend (i.e., add to) existing and create new neurodata_types definitions for storing custom data. To avoid collisions between extensions, extensions are defined as part of custom namespaces (which typically import the core NWB namespace). Extensions to the format are written using the Specification Language . To ease development of extensions, the PyNWB (and FORM) API provides dedicated data structures that support programmatic creation and use of extensions. An example for extensing NWB using PyNWB is available at http://pynwb.readthedocs.io/en/latest/example.html#extending-nwb and additional details are also available as part ot the PyNWB tutorials at http://pynwb.readthedocs.io/en/latest/tutorials.html#tutorials .

Creating extensions allows adding and documenting new data to NWB, interaction with custom data via the API, validation of custom data contents, sharing and collaboration of extensions and data. Popular extensions may be proposed and added to the official format specification after community discussion and review. To propose a new extensions for the NWB core format you may file an issue at https://github.com/NeurodataWithoutBorders/nwb-schema/issues .

1.1.5.1. Extending Time Series and NWBContainer

Like any other neurodata_type, TimeSeries can be extended via extensions by defining corresponding derived neurodata_types. This is typically done to to represent more narrowly focused modalities (e.g., electrical versus optical physiology) as well as new modalities (e.g., video tracking of whisker positions). When a neurodata_type inherits from TimeSeries, new data objects (i.e., datasets, attributes, groups, and links) can be added while all objects of the parent TimeSeries type are inherited and, hence, part of the new neurodata_type. Section Section 1.4.2 provides detailed definitions for all core TimeSeries types.

Extending NWBContainer works in the same way, e.g., to create more specific types for data processing.

1.2. Comments and Definitions

1.2.1. Notation

The description of the format in Section 1.4 is divided into subsection based on neurodata_type. Each neurodata_type section includes:

  • A basic description of the type
  • An optional figure describing the organization of data within the type
  • A set of tables describing the datasets, attributes and groups contained in the type.
  • An optional set of further subsections describing the content of subgroups contained in the given neurodata_type.

In the tables we use the following notation in the Id column to uniquely identify datasets, groups, attributes:

  • `name` desribes the unique name of an object
  • `<neurodata_type>` describes the `neurodata_type` of the object in case that the object does not have a unique name
  • `...` prefixes are used to indicate the depth of the object in the hierarchy to allow identification of the parent of the object. E.g., an object with a `..` prefix will belong to the previous object with a . prefix.

Here a quick example:

Table 1.1 Example illustrating the description of the contents of `neurodata_types`.
Id Type Description
<MyTimeSeries> group Top level group for the neurodata_type. The group the neurodata_type MyTimeSerie but no fixed name
.myattr attribute Attribute with the fixed name myattr defined on <MyTimeSeries>
.mydata dataset Required dataset with a unique name contained in <MyTimeSeries>
..unit attribute Attribute unit defined on the dataset .mydata
.myotherdata dataset Optional dataset with a unique name contained in <MyTimeSeries>
.<ElectrialSeries> group Optional set of groups with the neurodata_type ElectricalSeries that are contained in <MyTimeSeries>

1.2.2. Storing Time Values

All times are stored in seconds using double precision (64 bit) floating point values. A smaller floating point value, e.g. 32 bit, is not permitted for storing times. This is because significant errors for time can result from using smaller data sizes. Throughout this document, sizes (number of bits) are provided for many datatypes (e.g. float32). If the size is followed by ”!” then the size is the minimum size, otherwise it is the recommended size. For fields with a recommended size, larger or smaller sizes can be used (and for integer types both signed and unsigned), so long as the selected size encompasses the full range of data, and for floats, without loss of significant precision. Fields that have a minimum size can use larger, but not smaller sizes.

1.2.4. Design notes

The listed size of integers is the suggested size. What’s important for integers is simply that the integer is large enough to store the required data, and preferably not larger. For floating point, double is required for timestamps, while floating point is largely sufficient for other uses. This is why doubles (float64) are stated in some places. Because floating point sizes are provided, integer sizes are provided as well.

Why do timestamps_link and data_link record linking between datasets, but links between epochs and timeseries are not recorded?

Epochs have a link to entire timeseries (i.e., the HDF5 group). If 100 epochs link to a time series, there is only one time series. The data and timestamps within it are not shared anywhere (at least from the epoch linking). An epoch is an entity that is put in for convenience and annotation so there isn’t necessarily an important association between what epochs link to what time series (all epochs could link to all time series).

The timestamps_link and data_link fields refer to links made between time series, such as if timeseries A and timeseries B, each having different data (or time) share time (or data). This is much more important information as it shows structural associations in the data.

1.4. Specifications

1.4.1. Main Data File

1.4.1.1. NWBFile

Extends: NWBContainer

Source Specification: see Section 1.5.2.1

Overview: Top level of NWB file.

NWBFile extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Name: root
NWBFile
Table 1.2 Datasets, Links, and Attributes contained in <NWBFile>
Id Type Description
root group

Top level group for root

.help attribute

Value is ‘an NWB:N file for storing cellular-based neurophysiology data’

  • Data Type: str
  • Value: an NWB:N file for storing cellular-based neurophysiology data
  • Name: help
.file_create_date dataset

Time file was created, UTC, and subsequent modifications to file.

Comment: Date + time, Use ISO format (eg, ISO 8601) or a format that is easy to read and unambiguous. File can be created after the experiment was run, so this may differ from experiment start time. Each modifictation to file adds new entry to array.

  • Data Type: text
  • Dimensions: [‘unlimited‘]
  • Shape: [None]
  • Name: file_create_date
.identifier dataset

A unique text identifier for the file.

Comment: Eg, 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
.nwb_version dataset

File version string.

Comment: Eg, NWB-1.0.0. This will be the name of the format with trailing major, minor and patch numbers.

  • Data Type: text
  • Name: nwb_version
.session_description dataset

One or two sentences describing the experiment and data in the file.

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

Time of experiment/session start, UTC.

Comment: Date + time, Use ISO format (eg, ISO 8601) or an easy-to-read and unambiguous format. All times stored in the file use this time as reference (ie, time zero)

  • Data Type: text
  • Name: session_start_time
Table 1.3 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.

Comment: This group is 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 HDF5 files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file.

Additional Information: Acquired data includes tracking and experimental data streams (ie, everything measured from the system).If bulky data is stored in the /acquisition group, the data can exist in a separate HDF5 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.

Comment: To facilitate sharing analysis data between labs, the contents here should be stored in standard types (eg, INCF types) and appropriately documented.

Additional Information: 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 is sharable with other labs

  • Name: analysis
.epochs group

Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials during an experiment, or epochs deriving from analysis of data.

Comment: Epochs provide pointers to time series that are relevant to the epoch, and windows into the data in those time series (i.e., the start and end indices of TimeSeries::data[] that overlap with the epoch). This allows easy access to a range of data in specific experimental intervals.

Additional Information: An experiment can be separated into one or many logical intervals, with the order and duration of these intervals often definable before the experiment starts. In this document, and in the context of NWB, these intervals are called ‘epochs’. Epochs have acquisition and stimulus data associated with them, and different epochs can overlap. Examples of epochs are the time when a rat runs around an enclosure or maze as well as intervening sleep sessions; the presentation of a set of visual stimuli to a mouse running on a wheel; or the uninterrupted presentation of current to a patch-clamped cell. Epochs can be limited to the interval of a particular stimulus, or they can span multiple stimuli. Different windows into the same time series can be achieved by including multiple instances of that time series, each with different start/stop times.

  • Name: epochs
.processing group

The home for processing Modules. 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.

Comment: Modules are defined below. They 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.

Additional Information: ‘Processing’ refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis. These are performed using Modules, as defined above. All modules reside in the processing group.

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

Comment: This group is 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.

Additional Information: 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 HDF5-linked to a remote library file.

  • Name: stimulus
.general group

Experimental metadata, including protocol, notes and description of hardware device(s).

Comment: The metadata stored in this section should be used to describe the experiment. Metadata necessary for interpreting the data is stored with the data.

Additional Information: 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 (eg, 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. <br /><br />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
1.4.1.1.1. Groups: /acquisition

Data streams recorded from the system, including ephys, ophys, tracking, etc.

Comment: This group is 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 HDF5 files. This will allow keeping bulky raw data out of the file while preserving the option of keeping some/all in the file.

Additional Information: Acquired data includes tracking and experimental data streams (ie, everything measured from the system).If bulky data is stored in the /acquisition group, the data can exist in a separate HDF5 file that is linked to by the file being used for processing and analysis.

  • Name: acquisition
Table 1.4 Groups contained in <acquisition>
Id Type Description
acquisition group

Top level group for acquisition

  • Name: acquisition
.images group

Acquired images

  • Name: images
.timeseries group

Acquired TimeSeries.

Comment: When importing acquisition data to an NWB file, all acquisition/tracking/stimulus data must already be aligned to a common time frame. It is assumed that this task has already been performed.

  • Name: timeseries
1.4.1.1.2. Groups: /acquisition/images

Acquired images

  • Name: images
Table 1.5 Datasets, Links, and Attributes contained in /acquisition/images
Id Type Description
images group

Top level group for images

  • Name: images
.<Image> dataset

Photograph of experiment or experimental setup (video also OK).

Comment: Name is arbitrary. Data is stored as a single binary object (HDF5 opaque type).

  • Quantity 0 or more
  • Data Type: binary
  • Neurodata Type: Image
..description attribute

Human description of image.

Comment: If image is of slice data, include slice thickness and orientation, and reference to appropriate entry in /general/slices

  • Data Type: text
  • Name: description
..format attribute

Format of the image.

Comment: eg, jpg, png, mpeg

  • Data Type: text
  • Name: format
1.4.1.1.3. Groups: /acquisition/timeseries

Acquired TimeSeries.

Comment: When importing acquisition data to an NWB file, all acquisition/tracking/stimulus data must already be aligned to a common time frame. It is assumed that this task has already been performed.

  • Name: timeseries
Table 1.6 Groups contained in <timeseries>
Id Type Description
timeseries group

Top level group for timeseries

  • Name: timeseries
.<TimeSeries> group

TimeSeries object containing data generated during data acquisition

1.4.1.1.4. Groups: /acquisition/timeseries/<TimeSeries>

TimeSeries object containing data generated during data acquisition

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

Comment: To facilitate sharing analysis data between labs, the contents here should be stored in standard types (eg, INCF types) and appropriately documented.

Additional Information: 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 is sharable with other labs

  • Name: analysis
1.4.1.1.6. Groups: /epochs

Experimental intervals, whether that be logically distinct sub-experiments having a particular scientific goal, trials during an experiment, or epochs deriving from analysis of data.

Comment: Epochs provide pointers to time series that are relevant to the epoch, and windows into the data in those time series (i.e., the start and end indices of TimeSeries::data[] that overlap with the epoch). This allows easy access to a range of data in specific experimental intervals.

Additional Information: An experiment can be separated into one or many logical intervals, with the order and duration of these intervals often definable before the experiment starts. In this document, and in the context of NWB, these intervals are called ‘epochs’. Epochs have acquisition and stimulus data associated with them, and different epochs can overlap. Examples of epochs are the time when a rat runs around an enclosure or maze as well as intervening sleep sessions; the presentation of a set of visual stimuli to a mouse running on a wheel; or the uninterrupted presentation of current to a patch-clamped cell. Epochs can be limited to the interval of a particular stimulus, or they can span multiple stimuli. Different windows into the same time series can be achieved by including multiple instances of that time series, each with different start/stop times.

  • Name: epochs
Table 1.7 Groups contained in <epochs>
Id Type Description
epochs group

Top level group for epochs

  • Name: epochs
.<Epoch> group

One of possibly many different experimental epoch

Comment: Name is arbitrary but must be unique within the experiment.

  • Quantity 0 or more
  • Extends: Epoch
1.4.1.1.7. Groups: /epochs/<Epoch>

One of possibly many different experimental epoch

Comment: Name is arbitrary but must be unique within the experiment.

  • Quantity 0 or more
  • Extends: Epoch
1.4.1.1.8. Groups: /processing

The home for processing Modules. 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.

Comment: Modules are defined below. They 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.

Additional Information: ‘Processing’ refers to intermediate analysis of the acquired data to make it more amenable to scientific analysis. These are performed using Modules, as defined above. All modules reside in the processing group.

  • Name: processing
Table 1.8 Groups contained in <processing>
Id Type Description
processing group

Top level group for processing

  • Name: processing
.<ProcessingModule> group

Intermediate analysis of acquired data

1.4.1.1.9. Groups: /processing/<ProcessingModule>

Intermediate analysis of acquired data

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

Comment: This group is 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.

Additional Information: 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 HDF5-linked to a remote library file.

  • Name: stimulus
Table 1.9 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.

Comment: Time stamps 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
1.4.1.1.11. Groups: /stimulus/presentation

Stimuli presented during the experiment.

  • Name: presentation
Table 1.10 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

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

TimeSeries objects containing data of presented stimuli

1.4.1.1.13. Groups: /stimulus/templates

Template stimuli.

Comment: Time stamps 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 1.11 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

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

TimeSeries objects containing template data of presented stimuli

1.4.1.1.15. Groups: /general

Experimental metadata, including protocol, notes and description of hardware device(s).

Comment: The metadata stored in this section should be used to describe the experiment. Metadata necessary for interpreting the data is stored with the data.

Additional Information: 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 (eg, 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. <br /><br />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 1.12 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.

Comment: Can be from Methods

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

General description of the experiment.

Comment: Can be from Methods

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

Name of person who performed the experiment.

Comment: More than one person OK. Can specify roles of different people involved.

  • Quantity 0 or 1
  • Data Type: text
  • Name: experimenter
.institution dataset

Institution(s) where experiment was performed

  • Quantity 0 or 1
  • Data Type: text
  • Name: institution
.lab dataset

Lab where experiment was performed

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

Notes about the experiment.

Comment: Things particular to this experiment

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

Description of drugs used, including how and when they were administered.

Comment: Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.

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

Experimetnal protocol, if applicable.

Comment: E.g., include IACUC protocol

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

Publication information.

Comment: PMID, DOI, URL, etc. If multiple, concatenate together and describe which is which. such as PMID, DOI, URL, etc

  • Quantity 0 or 1
  • Data Type: text
  • Name: related_publications
.session_id dataset

Lab-specific ID for the session.

Comment: Only 1 session_id per file, with all time aligned to experiment start time.

  • 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 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 presented.

Comment: Can be from Methods

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

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

Comment: Much can be copied from Methods

  • 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 1.13 Groups contained in <general>
Id Type Description
general group

Top level group for general

  • Name: general
.devices group

Description of hardware devices used during experiment.

Comment: Eg, monitors, ADC boards, microscopes, etc

  • Quantity 0 or 1
  • Name: devices
.specifications group

Group for storing format specification files.

  • Quantity 0 or 1
  • Name: specifications
.subject group

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

  • Quantity 0 or 1
  • Name: subject
.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
1.4.1.1.16. Groups: /general/devices

Description of hardware devices used during experiment.

Comment: Eg, monitors, ADC boards, microscopes, etc

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

Top level group for devices

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

One of possibly many. Information about device and device description.

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

One of possibly many. Information about device and device description.

Table 1.15 Datasets, Links, and Attributes contained in /general/devices/<Device>
Id Type Description
<Device> group

Top level group for <Device>

.help attribute

Value is ‘A recording device e.g. amplifier’

  • Data Type: str
  • Value: A recording device e.g. amplifier
  • Name: help
1.4.1.1.18. Groups: /general/specifications

Group for storing format specification files.

  • Quantity 0 or 1
  • Name: specifications
Table 1.16 Datasets, Links, and Attributes contained in /general/specifications
Id Type Description
specifications group

Top level group for specifications

  • Quantity 0 or 1
  • Name: specifications
.<SpecFile> dataset

Dataset for storing contents of a specification file for either the core format or an extension. Name should match name of file.`

  • Quantity 0 or more
  • Data Type: text
  • Neurodata Type: SpecFile
..help attribute

A help statement

  • Data Type: text
  • Reuqired: False
  • Default Value: Contents of format specification file.
  • Name: help
..namespaces attribute

Namespaces defined in the file

  • Data Type: text
  • Dimensions: [‘num_namespaces’]
  • Shape: (None,)
  • Name: namespaces
1.4.1.1.19. Groups: /general/subject

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

  • Quantity 0 or 1
  • Name: subject
Table 1.17 Datasets, Links, and Attributes contained in /general/subject
Id Type Description
subject group

Top level group for subject

  • Quantity 0 or 1
  • Name: subject
.age dataset

Age of subject

  • Quantity 0 or 1
  • Data Type: text
  • Name: age
.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

Comment: 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
1.4.1.1.20. Groups: /general/extracellular_ephys

Metadata related to extracellular electrophysiology.

  • Quantity 0 or 1
  • Name: extracellular_ephys
Table 1.18 Datasets, Links, and Attributes contained in /general/extracellular_ephys
Id Type Description
extracellular_ephys group

Top level group for extracellular_ephys

  • Quantity 0 or 1
  • Name: extracellular_ephys
.electrodes dataset

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

Table 1.19 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

One of possibly many groups, one for each electrode group.

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

One of possibly many groups, one for each electrode group.

1.4.1.1.22. Groups: /general/intracellular_ephys

Metadata related to intracellular electrophysiology

  • Quantity 0 or 1
  • Name: intracellular_ephys
Table 1.20 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.

Comment: 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 1.21 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

One of possibly many.

Comment: Name should be informative.

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

One of possibly many.

Comment: Name should be informative.

1.4.1.1.24. Groups: /general/optogenetics

Metadata describing optogenetic stimuluation

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

Top level group for optogenetics

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

One of possibly many groups describing an optogenetic stimuluation site.

Comment: Name is arbitrary but should be meaningful. Name is referenced by OptogeneticSeries

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

One of possibly many groups describing an optogenetic stimuluation site.

Comment: Name is arbitrary but should be meaningful. Name is referenced by OptogeneticSeries

1.4.1.1.26. Groups: /general/optophysiology

Metadata related to optophysiology.

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

Top level group for optophysiology

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

One of possibly many groups describing an imaging plane.

Comment: Name is arbitrary but should be meaningful. It is referenced by TwoPhotonSeries and also ImageSegmentation and DfOverF interfaces

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

One of possibly many groups describing an imaging plane.

Comment: Name is arbitrary but should be meaningful. It is referenced by TwoPhotonSeries and also ImageSegmentation and DfOverF interfaces

1.4.2. TimeSeries Types

1.4.2.1. TimeSeries

Extends: NWBContainer

Source Specification: see Section 1.5.3.1

Overview: General purpose time series.

TimeSeries extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

TimeSeries
Table 1.24 Datasets, Links, and Attributes contained in <TimeSeries>
Id Type Description
<TimeSeries> group

Top level group for <TimeSeries>

.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
.description attribute

Description of TimeSeries

  • Data Type: text
  • Reuqired: False
  • Default Value: no description
  • Name: description
.help attribute

Value is ‘General time series object’

  • Data Type: text
  • Value: General time series object
  • Name: help
.source attribute

Name of TimeSeries or Modules that serve as the source for the data contained here. It can also be the name of a device, for stimulus or acquisition data

  • Data Type: text
  • Name: source
.control dataset

Numerical labels that apply to each element in data[].

Comment: Optional field. If present, the control array should have the same number of elements as data[].

  • Quantity 0 or 1
  • Data Type: uint8
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: control
.control_description dataset

Description of each control value.

Comment: Array length should be as long as the highest number in control minus one, generating an zero-based indexed array for control values.

  • Quantity 0 or 1
  • Data Type: text
  • Dimensions: [‘num_control_values’]
  • Shape: [None]
  • Name: control_description
.data dataset

Data values. Can also store binary data (eg, image frames)

Comment: This field may be a link to data stored in an external file, especially in the case of raw data.

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

Scalar to multiply each element in data to convert it to the specified unit

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

Comment: 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 NaN

  • Data Type: float32
  • Reuqired: False
  • Default Value: 0.0
  • Name: resolution
..unit attribute

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

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

The timestamp of the first sample.

Comment: When timestamps are uniformly spaced, the timestamp of the first sample can be specified and all subsequent ones calculated from the sampling rate.

  • Quantity 0 or 1
  • Data Type: float64
  • Name: starting_time
..rate attribute

Sampling rate, in Hz

Comment: Rate information is stored in Hz

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

Value is ‘Seconds’

  • Data Type: text
  • Value: Seconds
  • Name: unit
.timestamps dataset

Timestamps for samples stored in data.

Comment: Timestamps here have all been corrected to the common experiment master-clock. Time is stored as seconds and all timestamps are relative to experiment start 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

Value is ‘Seconds’

  • Data Type: text
  • Value: Seconds
  • Name: unit
Table 1.25 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.

Comment: 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
1.4.2.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.

Comment: 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

1.4.2.2. AbstractFeatureSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.2

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.

AbstractFeatureSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

AbstractFeatureSeries
Table 1.26 Datasets, Links, and Attributes contained in <AbstractFeatureSeries>
Id Type Description
<AbstractFeatureSeries> group

Top level group for <AbstractFeatureSeries>

.help attribute

Value is ‘Features of an applied stimulus. This is useful when storing the raw stimulus is impractical’

  • Data Type: text
  • Value: Features of an applied stimulus. This is useful when storing the raw stimulus is impractical
  • Name: help
.data dataset

Values of each feature at each time.

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: None
  • Reuqired: False
  • Default Value: see ‘feature_units’
  • Name: unit
.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

1.4.2.3. AnnotationSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.3

Overview: Stores, eg, user annotations made during an experiment. The TimeSeries::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 (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

AnnotationSeries
Table 1.27 Datasets, Links, and Attributes contained in <AnnotationSeries>
Id Type Description
<AnnotationSeries> group

Top level group for <AnnotationSeries>

.help attribute

Value is ‘Time-stamped annotations about an experiment’

  • Data Type: text
  • Value: Time-stamped annotations about an experiment
  • Name: help
.data dataset

Annotations made during an experiment.

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

Value is ‘float(‘NaN’)’

  • Data Type: None
  • Value: NaN
  • Name: conversion
..resolution attribute

Value is ‘float(‘NaN’)’

  • Data Type: None
  • Value: NaN
  • Name: resolution
..unit attribute

Value is ‘n/a’

  • Data Type: None
  • Value: n/a
  • Name: unit

1.4.2.4. ElectricalSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.4

Overview: Stores acquired voltage data from extracellular recordings. The data field of an ElectricalSeries is an int or float array storing data in Volts. TimeSeries::data array structure: [num times] [num channels] (or [num_times] for single electrode).

ElectricalSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

ElectricalSeries
Table 1.28 Datasets, Links, and Attributes contained in <ElectricalSeries>
Id Type Description
<ElectricalSeries> group

Top level group for <ElectricalSeries>

.help attribute

Value is ‘Stores acquired voltage data from extracellular recordings’

  • Data Type: text
  • Value: Stores acquired voltage data from extracellular recordings
  • Name: help
.data dataset

Recorded voltage data.

  • Data Type: number
  • Dimensions: [[‘num_times’], [‘num_times’, ‘num_channels’]]
  • Shape: [[None], [None, None]]
  • Name: data
..unit attribute

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: volt
  • Name: unit
.electrodes dataset

the electrodes that this series was generated from

1.4.2.5. SpikeEventSeries

Extends: ElectricalSeries

Source Specification: see Section 1.5.3.5

Overview: Stores “snapshots” of spike events (i.e., threshold crossings) in data. This may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description field should describing 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 (see Section 1.4.2.4) and includes all elements of ElectricalSeries with the following additions or changes.

SpikeEventSeries
Table 1.29 Datasets, Links, and Attributes contained in <SpikeEventSeries>
Id Type Description
<SpikeEventSeries> group

Top level group for <SpikeEventSeries>

.help attribute

Value is ‘Snapshots of spike events from data.’

  • Data Type: text
  • Value: Snapshots of spike events from data.
  • Name: help
.data dataset

Spike waveforms.

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: volt
  • Name: unit

1.4.2.6. ImageSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.6

Overview: General image data that is common between acquisition and stimulus time series. Sometimes the image data is stored in the HDF5 file in a raw format while other times it will be stored as an external image file in the host file system. The data field will either be binary data or empty. TimeSeries::data array structure: [frame] [y][x] or [frame][z][y][x].

ImageSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

ImageSeries
Table 1.30 Datasets, Links, and Attributes contained in <ImageSeries>
Id Type Description
<ImageSeries> group

Top level group for <ImageSeries>

.help attribute

Value is ‘Storage object for time-series 2-D image data’

  • Data Type: text
  • Value: Storage object for time-series 2-D image data
  • Name: help
.bits_per_pixel dataset

Number of bit per image pixel.

  • Quantity 0 or 1
  • Data Type: int32
  • Name: bits_per_pixel
.data dataset

Either binary data containing image or empty.

  • Data Type: number
  • Dimensions: [[‘x’, ‘y’], [‘frame’, ‘y’, ‘x’], [‘frame’, ‘z’, ‘y’, ‘x’]]
  • Shape: [[None, None], [None, None, None], [None, None, None, None]]
  • Name: data
.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

Path or URL to one or more external file(s). Field only present if format=external.

Additional Information: this is only relevant if the image 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 HDF5 file and that file is HDF5 linked to this file.
  • Quantity 0 or 1
  • Data Type: text
  • Dimensions: [‘num_files’]
  • Shape: [None]
  • Name: external_file
..starting_frame attribute

Each entry is the frame number (within the full ImageSeries) of the first frame in the corresponding external_file entry. This serves as an index to what frames each file contains, allowing random access.Zero-based indexing is used. (The first element will always be zero).

  • Data Type: int
  • Dimensions: [‘num_files’]
  • Shape: (None,)
  • Name: starting_frame
.format dataset

Format of image. If this is ‘external’ then the field external_file contains the path or URL information to that file. For tiff, png, jpg, etc, the binary representation of the image is stored in data. If the format is raw then the fields bit_per_pixel and dimension are used. For raw images, only a single channel is stored (eg, red).

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

1.4.2.7. ImageMaskSeries

Extends: ImageSeries

Source Specification: see Section 1.5.3.7

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 (see Section 1.4.2.6) and includes all elements of ImageSeries with the following additions or changes.

ImageMaskSeries
Table 1.31 Datasets, Links, and Attributes contained in <ImageMaskSeries>
Id Type Description
<ImageMaskSeries> group

Top level group for <ImageMaskSeries>

.help attribute

Value is ‘An alpha mask that is applied to a presented visual stimulus’

  • Data Type: text
  • Value: An alpha mask that is applied to a presented visual stimulus
  • Name: help
.masked_imageseries link

Link to ImageSeries that mask is applied to.

Table 1.32 Groups contained in <ImageMaskSeries>
Id Type Description
<ImageMaskSeries> group

Top level group for <ImageMaskSeries>

.masked_imageseries link

Link to ImageSeries that mask is applied to.

1.4.2.8. OpticalSeries

Extends: ImageSeries

Source Specification: see Section 1.5.3.8

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 (eg, 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 (see Section 1.4.2.6) and includes all elements of ImageSeries with the following additions or changes.

OpticalSeries
Table 1.33 Datasets, Links, and Attributes contained in <OpticalSeries>
Id Type Description
<OpticalSeries> group

Top level group for <OpticalSeries>

.help attribute

Value is ‘Time-series image stack for optical recording or stimulus’

  • Data Type: text
  • Value: Time-series image stack for optical recording or stimulus
  • Name: help
.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 depto of image, or imaged area (meters).

  • Quantity 0 or 1
  • Data Type: float32
  • Dimensions: [[‘width|height’, ‘width|height|depth’]]
  • Shape: [2]
  • 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

1.4.2.9. TwoPhotonSeries

Extends: ImageSeries

Source Specification: see Section 1.5.3.9

Overview: A special case of optical imaging.

TwoPhotonSeries extends ImageSeries (see Section 1.4.2.6) and includes all elements of ImageSeries with the following additions or changes.

TwoPhotonSeries
Table 1.34 Datasets, Links, and Attributes contained in <TwoPhotonSeries>
Id Type Description
<TwoPhotonSeries> group

Top level group for <TwoPhotonSeries>

.help attribute

Value is ‘Image stack recorded from 2-photon microscope’

  • Data Type: text
  • Value: Image stack recorded from 2-photon microscope
  • Name: help
.field_of_view dataset

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

  • Quantity 0 or 1
  • Data Type: float32
  • Dimensions: [‘width|height|depth’]
  • Shape: [3]
  • Name: field_of_view
.pmt_gain dataset

Photomultiplier gain

  • Quantity 0 or 1
  • Data Type: float32
  • Name: pmt_gain
.scan_line_rate dataset

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.

  • Quantity 0 or 1
  • Data Type: float32
  • Name: scan_line_rate
.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

Table 1.35 Groups contained in <TwoPhotonSeries>
Id Type Description
<TwoPhotonSeries> group

Top level group for <TwoPhotonSeries>

.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

1.4.2.10. IndexSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.10

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 (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

IndexSeries
Table 1.36 Datasets, Links, and Attributes contained in <IndexSeries>
Id Type Description
<IndexSeries> group

Top level group for <IndexSeries>

.help attribute

Value is ‘A sequence that is generated from an existing image stack. Frames can be presented in an arbitrary order. The data[] field stores frame number in reference stack’

  • Data Type: text
  • Value: A sequence that is generated from an existing image stack. Frames can be presented in an arbitrary order. The data[] field stores frame number in reference stack
  • Name: help
.data dataset

Index of the frame in the referenced ImageSeries.

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

HDF5 link to TimeSeries containing images that are indexed.

Table 1.37 Groups contained in <IndexSeries>
Id Type Description
<IndexSeries> group

Top level group for <IndexSeries>

.indexed_timeseries link

HDF5 link to TimeSeries containing images that are indexed.

1.4.2.11. IntervalSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.11

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 (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

IntervalSeries
Table 1.38 Datasets, Links, and Attributes contained in <IntervalSeries>
Id Type Description
<IntervalSeries> group

Top level group for <IntervalSeries>

.help attribute

Value is ‘Stores the start and stop times for events’

  • Data Type: text
  • Value: Stores the start and stop times for events
  • Name: help
.data dataset

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

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

Value is ‘float(‘NaN’)’

  • Data Type: None
  • Value: NaN
  • Name: conversion
..resolution attribute

Value is ‘float(‘NaN’)’

  • Data Type: None
  • Value: NaN
  • Name: resolution
..unit attribute

Value is ‘n/a’

  • Data Type: None
  • Value: n/a
  • Name: unit

1.4.2.12. OptogeneticSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.12

Overview: Optogenetic stimulus. The data[] field is in unit of watts.

OptogeneticSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

OptogeneticSeries
Table 1.39 Datasets, Links, and Attributes contained in <OptogeneticSeries>
Id Type Description
<OptogeneticSeries> group

Top level group for <OptogeneticSeries>

.help attribute

Value is ‘Optogenetic stimulus’

  • Data Type: text
  • Value: Optogenetic stimulus
  • Name: help
.data dataset

Applied power for optogenetic stimulus.

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: watt
  • Name: unit
.site link

link to OptogeneticStimulusSite group that describes the site to which this stimulus was applied

Table 1.40 Groups contained in <OptogeneticSeries>
Id Type Description
<OptogeneticSeries> group

Top level group for <OptogeneticSeries>

.site link

link to OptogeneticStimulusSite group that describes the site to which this stimulus was applied

1.4.2.13. PatchClampSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.13

Overview: Stores stimulus or response current or voltage. Superclass definition for patch-clamp data (this class should not be instantiated directly).

PatchClampSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

PatchClampSeries
Table 1.41 Datasets, Links, and Attributes contained in <PatchClampSeries>
Id Type Description
<PatchClampSeries> group

Top level group for <PatchClampSeries>

.help attribute

Value is ‘Superclass definition for patch-clamp data’

  • Data Type: text
  • Value: Superclass definition for patch-clamp data
  • Name: help
.data dataset

Recorded voltage or current.

  • Data Type: number
  • Dimensions: [‘num_times’]
  • Shape: [None]
  • Name: data
.gain dataset

Units: Volt/Amp (v-clamp) or Volt/Volt (c-clamp)

  • Quantity 0 or 1
  • Data Type: float
  • Name: gain
.electrode link

link to IntracellularElectrode group that describes th electrode that was used to apply or record this data

Table 1.42 Groups contained in <PatchClampSeries>
Id Type Description
<PatchClampSeries> group

Top level group for <PatchClampSeries>

.electrode link

link to IntracellularElectrode group that describes th electrode that was used to apply or record this data

1.4.2.14. CurrentClampSeries

Extends: PatchClampSeries

Source Specification: see Section 1.5.3.14

Overview: Stores voltage data recorded from intracellular current-clamp recordings. A corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is used to store the current injected.

CurrentClampSeries extends PatchClampSeries (see Section 1.4.2.13) and includes all elements of PatchClampSeries with the following additions or changes.

CurrentClampSeries
Table 1.43 Datasets, Links, and Attributes contained in <CurrentClampSeries>
Id Type Description
<CurrentClampSeries> group

Top level group for <CurrentClampSeries>

.help attribute

Value is ‘Voltage recorded from cell during current-clamp recording’

  • Data Type: text
  • Value: Voltage recorded from cell during current-clamp recording
  • Name: help
.bias_current dataset

Unit: Amp

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

Unit: Ohm

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

Unit: Farad

  • Quantity 0 or 1
  • Data Type: float32
  • Name: capacitance_compensation

1.4.2.15. IZeroClampSeries

Extends: CurrentClampSeries

Source Specification: see Section 1.5.3.15

Overview: Stores recorded voltage data from intracellular recordings 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 (see Section 1.4.2.14) and includes all elements of CurrentClampSeries with the following additions or changes.

Table 1.44 Datasets, Links, and Attributes contained in <IZeroClampSeries>
Id Type Description
<IZeroClampSeries> group

Top level group for <IZeroClampSeries>

.help attribute

Value is ‘Voltage from intracellular recordings when all current and amplifier settings are off’

  • Data Type: text
  • Value: Voltage from intracellular recordings when all current and amplifier settings are off
  • Name: help

1.4.2.16. CurrentClampStimulusSeries

Extends: PatchClampSeries

Source Specification: see Section 1.5.3.16

Overview: Aliases to standard PatchClampSeries. Its functionality is to better tag PatchClampSeries for machine (and human) readability of the file.

CurrentClampStimulusSeries extends PatchClampSeries (see Section 1.4.2.13) and includes all elements of PatchClampSeries with the following additions or changes.

Table 1.45 Datasets, Links, and Attributes contained in <CurrentClampStimulusSeries>
Id Type Description
<CurrentClampStimulusSeries> group

Top level group for <CurrentClampStimulusSeries>

.help attribute

Value is ‘Stimulus current applied during current clamp recording’

  • Data Type: text
  • Value: Stimulus current applied during current clamp recording
  • Name: help

1.4.2.17. VoltageClampSeries

Extends: PatchClampSeries

Source Specification: see Section 1.5.3.17

Overview: Stores current data recorded from intracellular voltage-clamp recordings. A corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is used to store the voltage injected.

VoltageClampSeries extends PatchClampSeries (see Section 1.4.2.13) and includes all elements of PatchClampSeries with the following additions or changes.

VoltageClampSeries
Table 1.46 Datasets, Links, and Attributes contained in <VoltageClampSeries>
Id Type Description
<VoltageClampSeries> group

Top level group for <VoltageClampSeries>

.help attribute

Value is ‘Current recorded from cell during voltage-clamp recording’

  • Data Type: text
  • Value: Current recorded from cell during voltage-clamp recording
  • Name: help
.capacitance_fast dataset

Unit: Farad

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: Farad
  • Name: unit
.capacitance_slow dataset

Unit: Farad

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: Farad
  • Name: unit
.resistance_comp_bandwidth dataset

Unit: Hz

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: Hz
  • Name: unit
.resistance_comp_correction dataset

Unit: %

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: pecent
  • Name: unit
.resistance_comp_prediction dataset

Unit: %

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: pecent
  • Name: unit
.whole_cell_capacitance_comp dataset

Unit: Farad

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: Farad
  • Name: unit
.whole_cell_series_resistance_comp dataset

Unit: Ohm

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: Ohm
  • Name: unit

1.4.2.18. VoltageClampStimulusSeries

Extends: PatchClampSeries

Source Specification: see Section 1.5.3.18

Overview: Aliases to standard PatchClampSeries. Its functionality is to better tag PatchClampSeries for machine (and human) readability of the file.

VoltageClampStimulusSeries extends PatchClampSeries (see Section 1.4.2.13) and includes all elements of PatchClampSeries with the following additions or changes.

Table 1.47 Datasets, Links, and Attributes contained in <VoltageClampStimulusSeries>
Id Type Description
<VoltageClampStimulusSeries> group

Top level group for <VoltageClampStimulusSeries>

.help attribute

Value is ‘Stimulus voltage applied during voltage clamp recording’

  • Data Type: text
  • Value: Stimulus voltage applied during voltage clamp recording
  • Name: help

1.4.2.19. RoiResponseSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.19

Overview: ROI responses over an imaging plane. Each row in data[] should correspond to the signal from one ROI.

RoiResponseSeries extends TimeSeries (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

RoiResponseSeries
Table 1.48 Datasets, Links, and Attributes contained in <RoiResponseSeries>
Id Type Description
<RoiResponseSeries> group

Top level group for <RoiResponseSeries>

.help attribute

Value is ‘ROI responses over an imaging plane. Each row in data[] should correspond to the signal from one ROI’

  • Data Type: text
  • Value: ROI responses over an imaging plane. Each row in data[] should correspond to the signal from one ROI
  • Name: help
.data dataset

Signals from ROIs

  • Data Type: float32
  • Dimensions: [‘num_times’, ‘num_ROIs’]
  • Shape: [None, None]
  • Name: data
.roi_names dataset

List of ROIs represented, one name for each row of data[].

  • Data Type: text
  • Dimensions: [‘num_ROIs’]
  • Shape: [None]
  • Name: roi_names
.segmentation_interface link

HDF5 link to image segmentation module defining ROIs.

Table 1.49 Groups contained in <RoiResponseSeries>
Id Type Description
<RoiResponseSeries> group

Top level group for <RoiResponseSeries>

.segmentation_interface link

HDF5 link to image segmentation module defining ROIs.

1.4.2.20. SpatialSeries

Extends: TimeSeries

Source Specification: see Section 1.5.3.20

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 (see Section 1.4.2.1) and includes all elements of TimeSeries with the following additions or changes.

SpatialSeries
Table 1.50 Datasets, Links, and Attributes contained in <SpatialSeries>
Id Type Description
<SpatialSeries> group

Top level group for <SpatialSeries>

.help attribute

Value is ‘Stores points in space over time. The data[] array structure is [num samples][num spatial dimensions]’

  • Data Type: text
  • Value: Stores points in space over time. The data[] array structure is [num samples][num spatial dimensions]
  • Name: help
.data dataset

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

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

The base unit of measure used to store data. This should be in the SI unit.

Comment: This is the SI unit (when appropriate) of the stored data, such as Volts. If the actual data is stored in millivolts, the field ‘conversion’ below describes how to convert the data to the specified SI unit.

  • Data Type: text
  • Reuqired: False
  • Default Value: meter
  • Name: unit
.reference_frame dataset

Description defining what exactly ‘straight-ahead’ means.

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

1.4.3. Data Processing

1.4.3.1. ProcessingModule

Extends: NWBContainer

Source Specification: see Section 1.5.4.1

Overview: Module. Name should be descriptive. Stores a collection of related data organized by contained interfaces. Each interface is a contract specifying content related to a particular type of data.

ProcessingModule extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

ProcessingModule
Table 1.51 Datasets, Links, and Attributes contained in <ProcessingModule>
Id Type Description
<ProcessingModule> group

Top level group for <ProcessingModule>

.description attribute

Description of Module

  • Data Type: text
  • Name: description
.help attribute

Value is ‘A collection of analysis outputs from processing of data’

  • Data Type: text
  • Value: A collection of analysis outputs from processing of data
  • Name: help
Table 1.52 Groups contained in <ProcessingModule>
Id Type Description
<ProcessingModule> group

Top level group for <ProcessingModule>

.<NWBContainer> group

Interface objects containing data output from processing steps

1.4.3.1.1. Groups: <NWBContainer>

Interface objects containing data output from processing steps

1.4.3.2. BehavioralEpochs

Extends: NWBContainer

Source Specification: see Section 1.5.4.2

Overview: TimeSeries for storing behavoioral 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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: BehavioralEpochs
BehavioralEpochs
Table 1.53 Datasets, Links, and Attributes contained in <BehavioralEpochs>
Id Type Description
<BehavioralEpochs> group

Top level group for <BehavioralEpochs>

.help attribute

Value is ‘General container for storing behavorial epochs’

  • Data Type: text
  • Value: General container for storing behavorial epochs
  • Name: help
Table 1.54 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

1.4.3.2.1. Groups: <IntervalSeries>

IntervalSeries object containing start and stop times of epochs

1.4.3.3. BehavioralEvents

Extends: NWBContainer

Source Specification: see Section 1.5.4.3

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

BehavioralEvents extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: BehavioralEvents
BehavioralEvents
Table 1.55 Datasets, Links, and Attributes contained in <BehavioralEvents>
Id Type Description
<BehavioralEvents> group

Top level group for <BehavioralEvents>

.help attribute

Value is ‘Position data, whether along the x, xy or xyz axis’

  • Data Type: text
  • Value: Position data, whether along the x, xy or xyz axis
  • Name: help
Table 1.56 Groups contained in <BehavioralEvents>
Id Type Description
<BehavioralEvents> group

Top level group for <BehavioralEvents>

.<TimeSeries> group

TimeSeries object containing irregular behavioral events

1.4.3.3.1. Groups: <TimeSeries>

TimeSeries object containing irregular behavioral events

1.4.3.4. BehavioralTimeSeries

Extends: NWBContainer

Source Specification: see Section 1.5.4.4

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

BehavioralTimeSeries extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: BehavioralTimeSeries
BehavioralTimeSeries
Table 1.57 Datasets, Links, and Attributes contained in <BehavioralTimeSeries>
Id Type Description
<BehavioralTimeSeries> group

Top level group for <BehavioralTimeSeries>

.help attribute

Value is ‘General container for storing continuously sampled behavioral data.’

  • Data Type: text
  • Value: General container for storing continuously sampled behavioral data.
  • Name: help
Table 1.58 Groups contained in <BehavioralTimeSeries>
Id Type Description
<BehavioralTimeSeries> group

Top level group for <BehavioralTimeSeries>

.<TimeSeries> group

TimeSeries object containing continuous behavioral data

1.4.3.4.1. Groups: <TimeSeries>

TimeSeries object containing continuous behavioral data

1.4.3.5. ClusterWaveforms

Extends: NWBContainer

Source Specification: see Section 1.5.4.5

Overview: 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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: ClusterWaveforms
ClusterWaveforms
Table 1.59 Datasets, Links, and Attributes contained in <ClusterWaveforms>
Id Type Description
<ClusterWaveforms> group

Top level group for <ClusterWaveforms>

.help attribute

Value is ‘Mean waveform shape of clusters. Waveforms should be high-pass filtered (ie, not the same bandpass filter used waveform analysis and clustering)’

  • Data Type: text
  • Value: Mean waveform shape of clusters. Waveforms should be high-pass filtered (ie, not the same bandpass filter used waveform analysis and clustering)
  • Name: help
.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

HDF5 link to Clustering interface that was the source of the clustered data

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

Top level group for <ClusterWaveforms>

.clustering_interface link

HDF5 link to Clustering interface that was the source of the clustered data

  • Target Type Clustering
  • Name: clustering_interface

1.4.3.6. Clustering

Extends: NWBContainer

Source Specification: see Section 1.5.4.6

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

Clustering extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: Clustering
Clustering
Table 1.61 Datasets, Links, and Attributes contained in <Clustering>
Id Type Description
<Clustering> group

Top level group for <Clustering>

.help attribute

Value is ‘Clustered spike data, whether from automatic clustering tools (eg, klustakwik) or as a result of manual sorting’

  • Data Type: text
  • Value: Clustered spike data, whether from automatic clustering tools (eg, klustakwik) or as a result of manual sorting
  • Name: help
.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

1.4.3.7. CompassDirection

Extends: NWBContainer

Source Specification: see Section 1.5.4.7

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: CompassDirection
CompassDirection
Table 1.62 Datasets, Links, and Attributes contained in <CompassDirection>
Id Type Description
<CompassDirection> group

Top level group for <CompassDirection>

.help attribute

Value is ‘Direction as measured radially. Spatial series reference frame should indicate which direction corresponds to zero and what is the direction of positive rotation’

  • Data Type: text
  • Value: Direction as measured radially. Spatial series reference frame should indicate which direction corresponds to zero and what is the direction of positive rotation
  • Name: help
Table 1.63 Groups contained in <CompassDirection>
Id Type Description
<CompassDirection> group

Top level group for <CompassDirection>

.<SpatialSeries> group

SpatialSeries object containing direction of gaze travel

1.4.3.7.1. Groups: <SpatialSeries>

SpatialSeries object containing direction of gaze travel

1.4.3.8. CorrectedImageStack

Extends: NWBContainer

Source Specification: see Section 1.5.4.8

Overview: One of possibly many. Name should be informative.

CorrectedImageStack extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 1 or more
CorrectedImageStack
Table 1.64 Datasets, Links, and Attributes contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> group

Top level group for <CorrectedImageStack>

.help attribute

Value is ‘Reuslts from motion correction of an image stack’

  • Data Type: text
  • Value: Reuslts from motion correction of an image stack
  • Name: help
.original link

HDF5 Link to image series that is being registered.

Table 1.65 Groups contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> group

Top level group for <CorrectedImageStack>

.original link

HDF5 Link to image series 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.

1.4.3.8.1. Groups: corrected

Image stack with frames shifted to the common coordinates.

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

1.4.3.9. DfOverF

Extends: NWBContainer

Source Specification: see Section 1.5.4.9

Overview: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F should be the same as for segmentation (ie, same names for ROIs and for image planes).

DfOverF extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: DfOverF
DfOverF
Table 1.66 Datasets, Links, and Attributes contained in <DfOverF>
Id Type Description
<DfOverF> group

Top level group for <DfOverF>

.help attribute

Value is ‘Df/f over time of one or more ROIs. TimeSeries names should correspond to imaging plane names’

  • Data Type: text
  • Value: Df/f over time of one or more ROIs. TimeSeries names should correspond to imaging plane names
  • Name: help
Table 1.67 Groups contained in <DfOverF>
Id Type Description
<DfOverF> group

Top level group for <DfOverF>

.<RoiResponseSeries> group

RoiResponseSeries object containing dF/F for a ROI

1.4.3.9.1. Groups: <RoiResponseSeries>

RoiResponseSeries object containing dF/F for a ROI

1.4.3.10. EpochTimeSeries

Extends: NWBContainer

Source Specification: see Section 1.5.4.10

Overview: One of possibly many input or output streams recorded during epoch.

Comment: Name is arbitrary and does not have to match the TimeSeries that it refers to.

EpochTimeSeries extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
EpochTimeSeries
Table 1.68 Datasets, Links, and Attributes contained in <EpochTimeSeries>
Id Type Description
<EpochTimeSeries> group

Top level group for <EpochTimeSeries>

.help attribute

Value is ‘Data on how an epoch applies to a time series’

  • Data Type: text
  • Value: Data on how an epoch applies to a time series
  • Name: help
.count dataset

Number of data samples available in this time series, during this epoch.

  • Data Type: int32
  • Name: count
.idx_start dataset

Epoch’s start index in TimeSeries data[] field.

Comment: This can be used to calculate location in TimeSeries timestamp[] field

  • Data Type: int32
  • Name: idx_start
.timeseries link

Link to TimeSeries. An HDF5 soft-link should be used.

Table 1.69 Groups contained in <EpochTimeSeries>
Id Type Description
<EpochTimeSeries> group

Top level group for <EpochTimeSeries>

.timeseries link

Link to TimeSeries. An HDF5 soft-link should be used.

1.4.3.11. EventDetection

Extends: NWBContainer

Source Specification: see Section 1.5.4.11

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

EventDetection extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: EventDetection
EventDetection
Table 1.70 Datasets, Links, and Attributes contained in <EventDetection>
Id Type Description
<EventDetection> group

Top level group for <EventDetection>

.help attribute

Value is ‘Detected spike events from voltage trace(s)’

  • Data Type: text
  • Value: Detected spike events from voltage trace(s)
  • Name: help
.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. Module description should define what is meant by time of event (e.g., .25msec 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

The string “Seconds”

  • Data Type: text
  • Reuqired: False
  • Default Value: Seconds
  • Name: unit
.source_electricalseries link

HDF5 link to 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 mandate that information be stored here

Table 1.71 Groups contained in <EventDetection>
Id Type Description
<EventDetection> group

Top level group for <EventDetection>

.source_electricalseries link

HDF5 link to 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 mandate that information be stored here

1.4.3.12. EventWaveform

Extends: NWBContainer

Source Specification: see Section 1.5.4.12

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: EventWaveform
EventWaveform
Table 1.72 Datasets, Links, and Attributes contained in <EventWaveform>
Id Type Description
<EventWaveform> group

Top level group for <EventWaveform>

.help attribute

Value is ‘Waveform of detected extracellularly recorded spike events’

  • Data Type: text
  • Value: Waveform of detected extracellularly recorded spike events
  • Name: help
Table 1.73 Groups contained in <EventWaveform>
Id Type Description
<EventWaveform> group

Top level group for <EventWaveform>

.<SpikeEventSeries> group

SpikeEventSeries object containing detected spike event waveforms

1.4.3.12.1. Groups: <SpikeEventSeries>

SpikeEventSeries object containing detected spike event waveforms

1.4.3.13. EyeTracking

Extends: NWBContainer

Source Specification: see Section 1.5.4.13

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

EyeTracking extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: EyeTracking
EyeTracking
Table 1.74 Datasets, Links, and Attributes contained in <EyeTracking>
Id Type Description
<EyeTracking> group

Top level group for <EyeTracking>

.help attribute

Value is ‘Eye-tracking data, representing direction of gaze’

  • Data Type: text
  • Value: Eye-tracking data, representing direction of gaze
  • Name: help
Table 1.75 Groups contained in <EyeTracking>
Id Type Description
<EyeTracking> group

Top level group for <EyeTracking>

.<SpatialSeries> group

SpatialSeries object containing data measuring direction of gaze

1.4.3.13.1. Groups: <SpatialSeries>

SpatialSeries object containing data measuring direction of gaze

1.4.3.14. FeatureExtraction

Extends: NWBContainer

Source Specification: see Section 1.5.4.14

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

FeatureExtraction extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: FeatureExtraction
FeatureExtraction
Table 1.76 Datasets, Links, and Attributes contained in <FeatureExtraction>
Id Type Description
<FeatureExtraction> group

Top level group for <FeatureExtraction>

.help attribute

Value is ‘Container for salient features of detected events’

  • Data Type: text
  • Value: Container for salient features of detected events
  • Name: help
.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

the electrodes that this series was generated from

1.4.3.15. FilteredEphys

Extends: NWBContainer

Source Specification: see Section 1.5.4.15

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

FilteredEphys extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: FilteredEphys
FilteredEphys
Table 1.77 Datasets, Links, and Attributes contained in <FilteredEphys>
Id Type Description
<FilteredEphys> group

Top level group for <FilteredEphys>

.help attribute

Value is ‘Ephys data from one or more channels that is subjected to filtering, such as for gamma or theta oscillations (LFP has its own interface). Filter properties should be noted in the ElectricalSeries’

  • Data Type: text
  • Value: Ephys data from one or more channels that is subjected to filtering, such as for gamma or theta oscillations (LFP has its own interface). Filter properties should be noted in the ElectricalSeries
  • Name: help
Table 1.78 Groups contained in <FilteredEphys>
Id Type Description
<FilteredEphys> group

Top level group for <FilteredEphys>

.<ElectricalSeries> group

ElectricalSeries object containing filtered electrophysiology data

1.4.3.15.1. Groups: <ElectricalSeries>

ElectricalSeries object containing filtered electrophysiology data

1.4.3.16. Fluorescence

Extends: NWBContainer

Source Specification: see Section 1.5.4.16

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: Fluorescence
Fluorescence
Table 1.79 Datasets, Links, and Attributes contained in <Fluorescence>
Id Type Description
<Fluorescence> group

Top level group for <Fluorescence>

.help attribute

Value is ‘Fluorescence over time of one or more ROIs. TimeSeries names should correspond to imaging plane names’

  • Data Type: text
  • Value: Fluorescence over time of one or more ROIs. TimeSeries names should correspond to imaging plane names
  • Name: help
Table 1.80 Groups contained in <Fluorescence>
Id Type Description
<Fluorescence> group

Top level group for <Fluorescence>

.<RoiResponseSeries> group

RoiResponseSeries object containing fluorescence data for a ROI

1.4.3.16.1. Groups: <RoiResponseSeries>

RoiResponseSeries object containing fluorescence data for a ROI

1.4.3.17. ImageSegmentation

Extends: NWBContainer

Source Specification: see Section 1.5.4.17

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: ImageSegmentation
ImageSegmentation
Table 1.81 Datasets, Links, and Attributes contained in <ImageSegmentation>
Id Type Description
<ImageSegmentation> group

Top level group for <ImageSegmentation>

.help attribute

Value is ‘Stores groups of pixels that define regions of interest from one or more imaging planes’

  • Data Type: text
  • Value: Stores groups of pixels that define regions of interest from one or more imaging planes
  • Name: help
Table 1.82 Groups contained in <ImageSegmentation>
Id Type Description
<ImageSegmentation> group

Top level group for <ImageSegmentation>

.<PlaneSegmentation> group

Group name is human-readable description of imaging plane

..imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

1.4.3.17.1. Groups: <PlaneSegmentation>

Group name is human-readable description of imaging plane

Table 1.83 Datasets, Links, and Attributes contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> group

Top level group for <PlaneSegmentation>

.help attribute

Value is ‘Results from segmentation of an imaging plane’

  • Data Type: text
  • Value: Results from segmentation of an imaging plane
  • Name: help
.description dataset

Description of image plane, recording wavelength, depth, etc

  • Quantity 0 or 1
  • Data Type: text
  • Name: description
.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

Table 1.84 Groups contained in <<PlaneSegmentation>>
Id Type Description
<PlaneSegmentation> group

Top level group for <PlaneSegmentation>

.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

.<ROI> group

Name of ROI

.reference_images group

Stores image stacks segmentation mask apply to.

  • Name: reference_images
1.4.3.17.2. Groups: <PlaneSegmentation>/<ROI>

Name of ROI

Table 1.85 Datasets, Links, and Attributes contained in <PlaneSegmentation>/<ROI>
Id Type Description
<ROI> group

Top level group for <ROI>

.help attribute

Value is ‘Region of interest, as determined by image segmentation’

  • Data Type: text
  • Value: Region of interest, as determined by image segmentation
  • Name: help
.img_mask dataset

ROI mask, represented in 2D ([y][x]) intensity image

  • Data Type: float32
  • Dimensions: [‘num_x’, ‘num_y’]
  • Shape: [None, None]
  • Name: img_mask
.pix_mask dataset

List of pixels (x,y) that compose the mask

  • Data Type: uint16
  • Dimensions: [‘num_pixels’, ‘2’]
  • Shape: [None, None]
  • Name: pix_mask
.pix_mask_weight dataset

Weight of each pixel listed in pix_mask

  • Data Type: float32
  • Dimensions: [‘num_pixels’]
  • Shape: [None]
  • Name: pix_mask_weight
.roi_description dataset

Description of this ROI.

  • Data Type: text
  • Name: roi_description
1.4.3.17.3. Groups: <PlaneSegmentation>/reference_images

Stores image stacks segmentation mask apply to.

  • Name: reference_images
Table 1.86 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)

1.4.3.17.4. Groups: <PlaneSegmentation>/reference_images/<ImageSeries>

One or more image stacks that the masks apply to (can be one-element stack)

1.4.3.18. ImagingPlane

Extends: NWBContainer

Source Specification: see Section 1.5.4.18

Overview: One of possibly many groups describing an imaging plane.

Comment: Name is arbitrary but should be meaningful. It is referenced by TwoPhotonSeries and also ImageSegmentation and DfOverF interfaces

ImagingPlane extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
ImagingPlane
Table 1.87 Datasets, Links, and Attributes contained in <ImagingPlane>
Id Type Description
<ImagingPlane> group

Top level group for <ImagingPlane>

.help attribute

Value is ‘Metadata about an imaging plane’

  • Data Type: text
  • Value: Metadata about an imaging plane
  • Name: help
.description dataset

Description of <image_plane_X>

  • Quantity 0 or 1
  • Data Type: text
  • Name: description
.device dataset

Name of device in /general/devices

  • Data Type: text
  • Name: device
.excitation_lambda dataset

Excitation wavelength

  • Data Type: text
  • Name: excitation_lambda
.imaging_rate dataset

Rate images are acquired, in Hz.

  • Data Type: text
  • Name: imaging_rate
.indicator dataset

Calcium indicator

  • Data Type: text
  • Name: indicator
.location dataset

Location of image plane

  • Data Type: text
  • Name: location
.manifold dataset

Physical position of each pixel.

Comment: “xyz” represents the position of the pixel relative to the defined coordinate space

  • Data Type: float32
  • Dimensions: [‘height’, ‘weight’, ‘x|y|z’]
  • Shape: [None, None, 3]
  • Name: manifold
..conversion attribute

Multiplier to get from stored values to specified unit (e.g., 1e-3 for millimeters)

  • Data Type: float
  • Reuqired: False
  • Default Value: 1.0
  • Name: conversion
..unit attribute

Base unit that coordinates are stored in (e.g., Meters)

  • Data Type: text
  • Reuqired: False
  • Default Value: Meter
  • 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 anotomical location or vectors needed to rotate to common anotomical axis (eg, AP/DV/ML).

Comment: This field is necessary to interpret manifold. If manifold is not present then this field is not required

  • Data Type: text
  • Name: reference_frame
Table 1.88 Groups contained in <ImagingPlane>
Id Type Description
<ImagingPlane> group

Top level group for <ImagingPlane>

.<OpticalChannel> group

One of possibly many groups storing channel-specific data

Comment: Name is arbitrary but should be meaningful

1.4.3.18.1. Groups: <OpticalChannel>

One of possibly many groups storing channel-specific data

Comment: Name is arbitrary but should be meaningful

Table 1.89 Datasets, Links, and Attributes contained in <OpticalChannel>
Id Type Description
<OpticalChannel> group

Top level group for <OpticalChannel>

.help attribute

Value is ‘Metadata about an optical channel used to record from an imaging plane’

  • Data Type: text
  • Value: Metadata about an optical channel used to record from an imaging plane
  • Name: help
.description dataset

Any notes or comments about the channel

  • Data Type: text
  • Name: description
.emission_lambda dataset

Emission lambda for channel

  • Data Type: text
  • Name: emission_lambda

1.4.3.19. ImagingRetinotopy

Extends: NWBContainer

Source Specification: see Section 1.5.4.19

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.<br />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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: ImagingRetinotopy
ImagingRetinotopy
Table 1.90 Datasets, Links, and Attributes contained in <ImagingRetinotopy>
Id Type Description
<ImagingRetinotopy> group

Top level group for <ImagingRetinotopy>

.help attribute

Value is ‘Intrinsic signal optical imaging or Widefield imaging for measuring retinotopy’

  • Data Type: text
  • Value: Intrinsic signal optical imaging or Widefield imaging for measuring retinotopy
  • Name: help
.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: [‘2’]
  • Shape: [None]
  • 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’ 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’ supported

  • Data Type: text
  • Name: format

1.4.3.20. IntracellularElectrode

Extends: NWBContainer

Source Specification: see Section 1.5.4.20

Overview: One of possibly many.

Comment: Name should be informative.

IntracellularElectrode extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

IntracellularElectrode
Table 1.91 Datasets, Links, and Attributes contained in <IntracellularElectrode>
Id Type Description
<IntracellularElectrode> group

Top level group for <IntracellularElectrode>

.help attribute

Value is ‘Metadata about an intracellular electrode’

  • Data Type: text
  • Value: Metadata about an intracellular electrode
  • Name: help
.description dataset

Recording description, description of electrode (e.g., whole-cell, sharp, etc)

Comment: Free-form text (can be from Methods)

  • Data Type: text
  • Name: description
.device dataset

Name(s) of devices in general/devices

  • Quantity 0 or 1
  • Data Type: text
  • Name: device
.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

Area, layer, comments on estimation, stereotaxis coordinates (if in vivo, etc)

  • Quantity 0 or 1
  • Data Type: text
  • Name: location
.resistance dataset

Electrode resistance

Comment: unit: Ohm

  • 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

1.4.3.21. LFP

Extends: NWBContainer

Source Specification: see Section 1.5.4.21

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: LFP
LFP
Table 1.92 Datasets, Links, and Attributes contained in <LFP>
Id Type Description
<LFP> group

Top level group for <LFP>

.help attribute

Value is ‘LFP data from one or more channels. Filter properties should be noted in the ElectricalSeries’

  • Data Type: text
  • Value: LFP data from one or more channels. Filter properties should be noted in the ElectricalSeries
  • Name: help
Table 1.93 Groups contained in <LFP>
Id Type Description
<LFP> group

Top level group for <LFP>

.<ElectricalSeries> group

ElectricalSeries object containing LFP data for one or channels

1.4.3.21.1. Groups: <ElectricalSeries>

ElectricalSeries object containing LFP data for one or channels

1.4.3.22. MotionCorrection

Extends: NWBContainer

Source Specification: see Section 1.5.4.22

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 NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: MotionCorrection
MotionCorrection
Table 1.94 Datasets, Links, and Attributes contained in <MotionCorrection>
Id Type Description
<MotionCorrection> group

Top level group for <MotionCorrection>

.help attribute

Value is ‘Image stacks whose frames have been shifted (registered) to account for motion’

  • Data Type: text
  • Value: Image stacks whose frames have been shifted (registered) to account for motion
  • Name: help
Table 1.95 Groups contained in <MotionCorrection>
Id Type Description
<MotionCorrection> group

Top level group for <MotionCorrection>

.<CorrectedImageStack> group

One of possibly many. Name should be informative.

..original link

HDF5 Link to image series that is being registered.

1.4.3.22.1. Groups: <CorrectedImageStack>

One of possibly many. Name should be informative.

Table 1.96 Datasets, Links, and Attributes contained in <CorrectedImageStack>
Id Type Description
<CorrectedImageStack> group

Top level group for <CorrectedImageStack>

.help attribute

Value is ‘Reuslts from motion correction of an image stack’

  • Data Type: text
  • Value: Reuslts from motion correction of an image stack
  • Name: help
.original link

HDF5 Link to image series that is being registered.

Table 1.97 Groups contained in <<CorrectedImageStack>>
Id Type Description
<CorrectedImageStack> group

Top level group for <CorrectedImageStack>

.original link

HDF5 Link to image series 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.

1.4.3.22.2. Groups: <CorrectedImageStack>/corrected

Image stack with frames shifted to the common coordinates.

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

1.4.3.23. OpticalChannel

Extends: NWBContainer

Source Specification: see Section 1.5.4.23

Overview: One of possibly many groups storing channel-specific data

Comment: Name is arbitrary but should be meaningful

OpticalChannel extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

OpticalChannel
Table 1.98 Datasets, Links, and Attributes contained in <OpticalChannel>
Id Type Description
<OpticalChannel> group

Top level group for <OpticalChannel>

.help attribute

Value is ‘Metadata about an optical channel used to record from an imaging plane’

  • Data Type: text
  • Value: Metadata about an optical channel used to record from an imaging plane
  • Name: help
.description dataset

Any notes or comments about the channel

  • Data Type: text
  • Name: description
.emission_lambda dataset

Emission lambda for channel

  • Data Type: text
  • Name: emission_lambda

1.4.3.24. OptogeneticStimulusSite

Extends: NWBContainer

Source Specification: see Section 1.5.4.24

Overview: One of possibly many groups describing an optogenetic stimuluation site.

Comment: Name is arbitrary but should be meaningful. Name is referenced by OptogeneticSeries

OptogeneticStimulusSite extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
OptogeneticStimulusSite
Table 1.99 Datasets, Links, and Attributes contained in <OptogeneticStimulusSite>
Id Type Description
<OptogeneticStimulusSite> group

Top level group for <OptogeneticStimulusSite>

.help attribute

Value is ‘Metadata about an optogenetic stimulus site’

  • Data Type: text
  • Value: Metadata about an optogenetic stimulus site
  • Name: help
.description dataset

Description of site

  • Data Type: text
  • Name: description
.device dataset

Name of device in /general/devices

  • Data Type: text
  • Name: device
.excitation_lambda dataset

Excitation wavelength

  • Data Type: text
  • Name: excitation_lambda
.location dataset

Location of stimulation site

  • Data Type: text
  • Name: location

1.4.3.25. PlaneSegmentation

Extends: NWBContainer

Source Specification: see Section 1.5.4.25

Overview: Group name is human-readable description of imaging plane

PlaneSegmentation extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
PlaneSegmentation
Table 1.100 Datasets, Links, and Attributes contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> group

Top level group for <PlaneSegmentation>

.help attribute

Value is ‘Results from segmentation of an imaging plane’

  • Data Type: text
  • Value: Results from segmentation of an imaging plane
  • Name: help
.description dataset

Description of image plane, recording wavelength, depth, etc

  • Quantity 0 or 1
  • Data Type: text
  • Name: description
.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

Table 1.101 Groups contained in <PlaneSegmentation>
Id Type Description
<PlaneSegmentation> group

Top level group for <PlaneSegmentation>

.imaging_plane link

link to ImagingPlane group from which this TimeSeries data was generated

.<ROI> group

Name of ROI

.reference_images group

Stores image stacks segmentation mask apply to.

  • Name: reference_images
1.4.3.25.1. Groups: <ROI>

Name of ROI

Table 1.102 Datasets, Links, and Attributes contained in <ROI>
Id Type Description
<ROI> group

Top level group for <ROI>

.help attribute

Value is ‘Region of interest, as determined by image segmentation’

  • Data Type: text
  • Value: Region of interest, as determined by image segmentation
  • Name: help
.img_mask dataset

ROI mask, represented in 2D ([y][x]) intensity image

  • Data Type: float32
  • Dimensions: [‘num_x’, ‘num_y’]
  • Shape: [None, None]
  • Name: img_mask
.pix_mask dataset

List of pixels (x,y) that compose the mask

  • Data Type: uint16
  • Dimensions: [‘num_pixels’, ‘2’]
  • Shape: [None, None]
  • Name: pix_mask
.pix_mask_weight dataset

Weight of each pixel listed in pix_mask

  • Data Type: float32
  • Dimensions: [‘num_pixels’]
  • Shape: [None]
  • Name: pix_mask_weight
.roi_description dataset

Description of this ROI.

  • Data Type: text
  • Name: roi_description
1.4.3.25.2. Groups: reference_images

Stores image stacks segmentation mask apply to.

  • Name: reference_images
Table 1.103 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)

1.4.3.25.3. Groups: reference_images/<ImageSeries>

One or more image stacks that the masks apply to (can be one-element stack)

1.4.3.26. Position

Extends: NWBContainer

Source Specification: see Section 1.5.4.26

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

Position extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: Position
Position
Table 1.104 Datasets, Links, and Attributes contained in <Position>
Id Type Description
<Position> group

Top level group for <Position>

.help attribute

Value is ‘Position data, whether along the x, xy or xyz axis’

  • Data Type: text
  • Value: Position data, whether along the x, xy or xyz axis
  • Name: help
Table 1.105 Groups contained in <Position>
Id Type Description
<Position> group

Top level group for <Position>

.<SpatialSeries> group

SpatialSeries object containing position data

1.4.3.26.1. Groups: <SpatialSeries>

SpatialSeries object containing position data

1.4.3.27. PupilTracking

Extends: NWBContainer

Source Specification: see Section 1.5.4.27

Overview: Eye-tracking data, representing pupil size.

PupilTracking extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: PupilTracking
PupilTracking
Table 1.106 Datasets, Links, and Attributes contained in <PupilTracking>
Id Type Description
<PupilTracking> group

Top level group for <PupilTracking>

.help attribute

Value is ‘Eye-tracking data, representing pupil size’

  • Data Type: text
  • Value: Eye-tracking data, representing pupil size
  • Name: help
Table 1.107 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

1.4.3.27.1. Groups: <TimeSeries>

TimeSeries object containing time series data on pupil size

1.4.3.28. ROI

Extends: NWBContainer

Source Specification: see Section 1.5.4.28

Overview: Name of ROI

ROI extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
ROI
Table 1.108 Datasets, Links, and Attributes contained in <ROI>
Id Type Description
<ROI> group

Top level group for <ROI>

.help attribute

Value is ‘Region of interest, as determined by image segmentation’

  • Data Type: text
  • Value: Region of interest, as determined by image segmentation
  • Name: help
.img_mask dataset

ROI mask, represented in 2D ([y][x]) intensity image

  • Data Type: float32
  • Dimensions: [‘num_x’, ‘num_y’]
  • Shape: [None, None]
  • Name: img_mask
.pix_mask dataset

List of pixels (x,y) that compose the mask

  • Data Type: uint16
  • Dimensions: [‘num_pixels’, ‘2’]
  • Shape: [None, None]
  • Name: pix_mask
.pix_mask_weight dataset

Weight of each pixel listed in pix_mask

  • Data Type: float32
  • Dimensions: [‘num_pixels’]
  • Shape: [None]
  • Name: pix_mask_weight
.roi_description dataset

Description of this ROI.

  • Data Type: text
  • Name: roi_description

1.4.3.29. SpikeUnit

Extends: NWBContainer

Source Specification: see Section 1.5.4.29

Overview: Group storing times for <unit_N>.

SpikeUnit extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 1 or more
SpikeUnit
Table 1.109 Datasets, Links, and Attributes contained in <SpikeUnit>
Id Type Description
<SpikeUnit> group

Top level group for <SpikeUnit>

.help attribute

Store times for a particulare UnitTime

  • Data Type: text
  • Value: Times for a particular UnitTime object
  • Name: help
.times dataset

Spike time for the units (exact or estimated)

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

Description of the unit (eg, cell type).

  • Data Type: text
  • Name: unit_description

1.4.3.30. UnitTimes

Extends: NWBContainer

Source Specification: see Section 1.5.4.30

Overview: Event times of observed units (e.g. cell, synapse, etc.). The UnitTimes group contains a group for each unit. The name of the group should match the value in the source module, if that is possible/relevant (e.g., name of ROIs from Segmentation module).

UnitTimes extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Default Name: UnitTimes
UnitTimes
Table 1.110 Datasets, Links, and Attributes contained in <UnitTimes>
Id Type Description
<UnitTimes> group

Top level group for <UnitTimes>

.help attribute

Value is ‘Estimated spike times from a single unit’

  • Data Type: text
  • Value: Estimated spike times from a single unit
  • Name: help
Table 1.111 Groups contained in <UnitTimes>
Id Type Description
<UnitTimes> group

Top level group for <UnitTimes>

.<SpikeUnit> group

Group storing times for <unit_N>.

1.4.3.30.1. Groups: <SpikeUnit>

Group storing times for <unit_N>.

Table 1.112 Datasets, Links, and Attributes contained in <SpikeUnit>
Id Type Description
<SpikeUnit> group

Top level group for <SpikeUnit>

.help attribute

Store times for a particulare UnitTime

  • Data Type: text
  • Value: Times for a particular UnitTime object
  • Name: help
.times dataset

Spike time for the units (exact or estimated)

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

Description of the unit (eg, cell type).

  • Data Type: text
  • Name: unit_description

1.4.4. Other Types

1.4.4.1. NWBData

Source Specification: see Section 1.5.5.1

Overview: The attributes specified here are included in all interfaces.

Table 1.113 Datasets, Links, and Attributes contained in <NWBData>
Id Type Description
<NWBData> dataset

Top level dataset for <NWBData>

  • Neurodata Type: NWBData
.help attribute

Short description of what this type of Interface contains.

  • Data Type: text
  • Name: help

1.4.4.2. Epoch

Extends: NWBContainer

Source Specification: see Section 1.5.5.2

Overview: One of possibly many different experimental epoch

Comment: Name is arbitrary but must be unique within the experiment.

Epoch extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

  • Quantity 0 or more
Epoch
Table 1.114 Datasets, Links, and Attributes contained in <Epoch>
Id Type Description
<Epoch> group

Top level group for <Epoch>

.help attribute

Value is ‘A general epoch object’

  • Data Type: text
  • Value: A general epoch object
  • Name: help
.description dataset

Description of this epoch (<epoch_X>).

  • Quantity 0 or 1
  • Data Type: text
  • Name: description
.start_time dataset

Start time of epoch, in seconds

  • Data Type: float64
  • Name: start_time
.stop_time dataset

Stop time of epoch, in seconds

  • Data Type: float64
  • Name: stop_time
.tags dataset

User-defined tags used throughout the epochs. Tags are to help identify or categorize epochs.

Comment: E.g., can describe stimulus (if template) or behavioral characteristic (e.g., “lick left”)

  • Quantity 0 or 1
  • Data Type: text
  • Dimensions: [‘num_tags’]
  • Shape: [None]
  • Name: tags
Table 1.115 Groups contained in <Epoch>
Id Type Description
<Epoch> group

Top level group for <Epoch>

.<EpochTimeSeries> group

One of possibly many input or output streams recorded during epoch.

Comment: Name is arbitrary and does not have to match the TimeSeries that it refers to.

..timeseries link

Link to TimeSeries. An HDF5 soft-link should be used.

1.4.4.2.1. Groups: <EpochTimeSeries>

One of possibly many input or output streams recorded during epoch.

Comment: Name is arbitrary and does not have to match the TimeSeries that it refers to.

Table 1.116 Datasets, Links, and Attributes contained in <EpochTimeSeries>
Id Type Description
<EpochTimeSeries> group

Top level group for <EpochTimeSeries>

.help attribute

Value is ‘Data on how an epoch applies to a time series’

  • Data Type: text
  • Value: Data on how an epoch applies to a time series
  • Name: help
.count dataset

Number of data samples available in this time series, during this epoch.

  • Data Type: int32
  • Name: count
.idx_start dataset

Epoch’s start index in TimeSeries data[] field.

Comment: This can be used to calculate location in TimeSeries timestamp[] field

  • Data Type: int32
  • Name: idx_start
.timeseries link

Link to TimeSeries. An HDF5 soft-link should be used.

Table 1.117 Groups contained in <<EpochTimeSeries>>
Id Type Description
<EpochTimeSeries> group

Top level group for <EpochTimeSeries>

.timeseries link

Link to TimeSeries. An HDF5 soft-link should be used.

1.4.4.3. NWBContainer

Source Specification: see Section 1.5.5.3

Overview: The attributes specified here are included in all interfaces.

NWBContainer
Table 1.118 Datasets, Links, and Attributes contained in <NWBContainer>
Id Type Description
<NWBContainer> group

Top level group for <NWBContainer>

.help attribute

Short description of what this type of Interface contains.

  • Data Type: text
  • Name: help
.source attribute

Path to the origin of the data represented in this interface.

  • Data Type: text
  • Name: source

1.4.4.4. SpecFile

Source Specification: see Section 1.5.5.4

Overview: Dataset for storing contents of a specification file for either the core format or an extension. Name should match name of file.`

  • Quantity 0 or more
  • Data Type: text
SpecFile
Table 1.119 Datasets, Links, and Attributes contained in <SpecFile>
Id Type Description
<SpecFile> dataset

Top level dataset for <SpecFile>

  • Quantity 0 or more
  • Data Type: text
  • Neurodata Type: SpecFile
.help attribute

A help statement

  • Data Type: text
  • Reuqired: False
  • Default Value: Contents of format specification file.
  • Name: help
.namespaces attribute

Namespaces defined in the file

  • Data Type: text
  • Dimensions: [‘num_namespaces’]
  • Shape: (None,)
  • Name: namespaces

1.4.4.5. ElectrodeGroup

Extends: NWBContainer

Source Specification: see Section 1.5.5.5

Overview: One of possibly many groups, one for each electrode group.

ElectrodeGroup extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

ElectrodeGroup
Table 1.120 Datasets, Links, and Attributes contained in <ElectrodeGroup>
Id Type Description
<ElectrodeGroup> group

Top level group for <ElectrodeGroup>

.help attribute

Value is ‘Metadata about a physical grouping of channels’

  • Data Type: str
  • Value: A physical grouping of channels
  • Name: help
.description attribute

description of this electrode group

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

description of location of this electrode group

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

the device that was used to record from this electrode group

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

Top level group for <ElectrodeGroup>

.device link

the device that was used to record from this electrode group

  • Target Type Device
  • Name: device

1.4.4.6. Device

Extends: NWBContainer

Source Specification: see Section 1.5.5.6

Overview: One of possibly many. Information about device and device description.

Device extends NWBContainer (see Section 1.4.4.3) and includes all elements of NWBContainer with the following additions or changes.

Table 1.122 Datasets, Links, and Attributes contained in <Device>
Id Type Description
<Device> group

Top level group for <Device>

.help attribute

Value is ‘A recording device e.g. amplifier’

  • Data Type: str
  • Value: A recording device e.g. amplifier
  • Name: help

1.4.4.7. ElectrodeTable

Extends: NWBData

Source Specification: see Section 1.5.5.7

Overview: a table for storing queryable information about electrodes in a single table

ElectrodeTable extends NWBData (see Section 1.4.4.1) and includes all elements of NWBData with the following additions or changes.

  • Data Type: Compound data type with the following elements:
    • id: a user-specified unique identifier (dtype= int )
    • x: the x coordinate of the channels location (dtype= float )
    • y: the y coordinate of the channels location (dtype= float )
    • z: the z coordinate of the channels location (dtype= float )
    • imp: the impedance of the channel (dtype= float )
    • location: the location of channel within the subject e.g. brain region (dtype= ascii )
    • filtering: description of hardware filtering (dtype= ascii )
    • description: a brief description of what this electrode is (dtype= utf8 )
    • group: the name of the ElectrodeGroup this electrode is a part of (dtype= ascii )
    • group_ref: a reference to the ElectrodeGroup this electrode is a part of (dtype= object reference to ElectrodeGroup )
Table 1.123 Datasets, Links, and Attributes contained in <ElectrodeTable>
Id Type Description
<ElectrodeTable> dataset

Top level dataset for <ElectrodeTable>

  • Data Type: Compound data type with the following elements:
    • id: a user-specified unique identifier (dtype= int )
    • x: the x coordinate of the channels location (dtype= float )
    • y: the y coordinate of the channels location (dtype= float )
    • z: the z coordinate of the channels location (dtype= float )
    • imp: the impedance of the channel (dtype= float )
    • location: the location of channel within the subject e.g. brain region (dtype= ascii )
    • filtering: description of hardware filtering (dtype= ascii )
    • description: a brief description of what this electrode is (dtype= utf8 )
    • group: the name of the ElectrodeGroup this electrode is a part of (dtype= ascii )
    • group_ref: a reference to the ElectrodeGroup this electrode is a part of (dtype= object reference to ElectrodeGroup )
  • Extends: NWBData
  • Neurodata Type: ElectrodeTable
.help attribute

Value is ‘a table for storing data about extracellular electrodes’

  • Data Type: text
  • Value: a table for storing data about extracellular electrodes
  • Name: help

1.4.4.8. ElectrodeTableRegion

Extends: NWBData

Source Specification: see Section 1.5.5.8

Overview: a dataset for subsetting ElectrodeTables

ElectrodeTableRegion extends NWBData (see Section 1.4.4.1) and includes all elements of NWBData with the following additions or changes.

ElectrodeTableRegion
Table 1.124 Datasets, Links, and Attributes contained in <ElectrodeTableRegion>
Id Type Description
<ElectrodeTableRegion> dataset

Top level dataset for <ElectrodeTableRegion>

.description attribute

a description of this subset of electrodes

  • Data Type: utf8
  • Name: description
.help attribute

Value is ‘a subset (i.e. slice or region) of an ElectrodeTable’

  • Data Type: text
  • Value: a subset (i.e. slice or region) of an ElectrodeTable
  • Name: help

1.4.4.9. Image

Source Specification: see Section 1.5.5.9

Overview: Photograph of experiment or experimental setup (video also OK).

Comment: Name is arbitrary. Data is stored as a single binary object (HDF5 opaque type).

  • Quantity 0 or more
  • Data Type: binary
Image
Table 1.125 Datasets, Links, and Attributes contained in <Image>
Id Type Description
<Image> dataset

Top level dataset for <Image>

  • Quantity 0 or more
  • Data Type: binary
  • Neurodata Type: Image
.description attribute

Human description of image.

Comment: If image is of slice data, include slice thickness and orientation, and reference to appropriate entry in /general/slices

  • Data Type: text
  • Name: description
.format attribute

Format of the image.

Comment: eg, jpg, png, mpeg

  • Data Type: text
  • Name: format

1.5. Sources

Source Specification: see Section 1.5.1

1.5.1. Namespace: NWB core

Description: see Section 1.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
author:
- Keith Godfrey
- Jeff Teeters
- Oliver Ruebel
- Andrew Tritt
contact:
- keithg@alleninstitute.org
- jteeters@berkeley.edu
- oruebel@lbl.gov
- ajtritt@lbl.gov
doc: NWB namespace
full_name: NWB core
name: core
schema:
- source: nwb.base.yaml
- source: nwb.epoch.yaml
- source: nwb.image.yaml
- source: nwb.file.yaml
- source: nwb.misc.yaml
- source: nwb.behavior.yaml
- source: nwb.ecephys.yaml
- source: nwb.icephys.yaml
- source: nwb.ogen.yaml
- source: nwb.ophys.yaml
- source: nwb.retinotopy.yaml
version: 1.2.0

1.5.2. Main Data File

1.5.2.1. NWBFile

Extends: NWBContainer

Description: see Section 1.4.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
 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
attributes:
- doc: Value is 'an NWB:N file for storing cellular-based neurophysiology data'
  dtype: str
  name: help
  value: an NWB:N file for storing cellular-based neurophysiology data
datasets:
- dims:
  - '*unlimited*'
  doc: 'Time file was created, UTC, and subsequent modifications to file. COMMENT:
    Date + time, Use ISO format (eg, ISO 8601) or a format that is easy to read and
    unambiguous. File can be created after the experiment was run, so this may differ
    from experiment start time. Each modifictation to file adds new entry to array. '
  dtype: text
  name: file_create_date
  shape:
  - null
- doc: 'A unique text identifier for the file. COMMENT: Eg, 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: 'File version string. COMMENT: Eg, NWB-1.0.0. This will be the name of the
    format with trailing major, minor and patch numbers.'
  dtype: text
  name: nwb_version
- doc: One or two sentences describing the experiment and data in the file.
  dtype: text
  name: session_description
- doc: 'Time of experiment/session start, UTC.  COMMENT: Date + time, Use ISO format
    (eg, ISO 8601) or an easy-to-read and unambiguous format. All times stored in
    the file use this time as reference (ie, time zero)'
  dtype: text
  name: session_start_time
doc: Top level of NWB file.
groups:
- doc: 'Data streams recorded from the system, including ephys, ophys, tracking, etc.
    COMMENT: This group is 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 HDF5 files. This will allow keeping bulky raw data out of the
    file while preserving the option of keeping some/all in the file. MORE_INFO: Acquired
    data includes tracking and experimental data streams (ie, everything measured
    from the system).If bulky data is stored in the /acquisition group, the data can
    exist in a separate HDF5 file that is linked to by the file being used for processing
    and analysis.'
  groups:
  - datasets:
    - attributes:
      - doc: 'Human description of image. COMMENT: If image is of slice data, include
          slice thickness and orientation, and reference to appropriate entry in /general/slices'
        dtype: text
        name: description
      - doc: 'Format of the image.  COMMENT: eg, jpg, png, mpeg'
        dtype: text
        name: format
      doc: 'Photograph of experiment or experimental setup (video also OK). COMMENT:
        Name is arbitrary.  Data is stored as a single binary object (HDF5 opaque
        type).'
      dtype: binary
      neurodata_type_def: Image
      quantity: '*'
    doc: Acquired images
    name: images
  - doc: 'Acquired TimeSeries.COMMENT: When importing acquisition data to an NWB file,
      all acquisition/tracking/stimulus data must already be aligned to a common time
      frame. It is assumed that this task has already been performed.'
    groups:
    - doc: TimeSeries object containing data generated during data acquisition
      neurodata_type_inc: TimeSeries
      quantity: '*'
    name: timeseries
  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. COMMENT:
    To facilitate sharing analysis data between labs, the contents here should be
    stored in standard types (eg, INCF types) and appropriately documented. MORE_INFO:
    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 is sharable with other labs'
  name: analysis
- doc: "Experimental intervals, whether that be logically distinct sub-experiments\
    \ having a particular scientific goal, trials during an experiment, or epochs\
    \ deriving from analysis of data.  COMMENT: Epochs provide pointers to time series\
    \ that are relevant to the epoch, and windows into the data in those time series\
    \ (i.e., the start and end indices of TimeSeries::data[] that overlap with the\
    \ epoch). This allows easy access to a range of data in specific experimental\
    \ intervals. MORE_INFO: An experiment can be separated into one or many logical\
    \ intervals, with the order and duration of these intervals often definable before\
    \ the experiment starts. In this document, and in the context of NWB, these intervals\
    \ are called 'epochs'. Epochs have acquisition and stimulus data associated with\
    \ them, and different epochs can overlap. Examples of epochs are the time when\
    \ a rat runs around an enclosure or maze as well as intervening sleep sessions;\
    \ the presentation of a set of visual stimuli to a mouse running on a wheel; or\
    \ the uninterrupted presentation of current to a patch-clamped cell. Epochs can\
    \ be limited to the interval of a particular stimulus, or they can span multiple\
    \ stimuli. Different windows into the same time series can be achieved by including\
    \ multiple instances of that time series, each with different start/stop times."
  groups:
  - doc: 'One of possibly many different experimental epochCOMMENT: Name is arbitrary
      but must be unique within the experiment.'
    neurodata_type_inc: Epoch
    quantity: '*'
  name: epochs
- doc: "The home for processing Modules. 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. COMMENT: Modules are defined below. They 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. MORE_INFO: 'Processing' refers\
    \ to intermediate analysis of the acquired data to make it more amenable to scientific\
    \ analysis. These are performed using Modules, as defined above. All modules reside\
    \ in the processing group."
  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) COMMENT: This group is 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.MORE_INFO: 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 HDF5-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. COMMENT: Time stamps 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.COMMENT: Can be from Methods'
    dtype: text
    name: data_collection
    quantity: '?'
  - doc: 'General description of the experiment.COMMENT: Can be from Methods'
    dtype: text
    name: experiment_description
    quantity: '?'
  - doc: 'Name of person who performed the experiment.COMMENT: More than one person
      OK. Can specify roles of different people involved.'
    dtype: text
    name: experimenter
    quantity: '?'
  - doc: Institution(s) where experiment was performed
    dtype: text
    name: institution
    quantity: '?'
  - doc: Lab where experiment was performed
    dtype: text
    name: lab
    quantity: '?'
  - doc: 'Notes about the experiment.  COMMENT: Things particular to this experiment'
    dtype: text
    name: notes
    quantity: '?'
  - doc: 'Description of drugs used, including how and when they were administered.
      COMMENT: Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc.'
    dtype: text
    name: pharmacology
    quantity: '?'
  - doc: 'Experimetnal protocol, if applicable.COMMENT: E.g., include IACUC protocol'
    dtype: text
    name: protocol
    quantity: '?'
  - doc: 'Publication information.COMMENT: PMID, DOI, URL, etc. If multiple, concatenate
      together and describe which is which. such as PMID, DOI, URL, etc'
    dtype: text
    name: related_publications
    quantity: '?'
  - doc: 'Lab-specific ID for the session.COMMENT: Only 1 session_id per file, with
      all time aligned to experiment start time.'
    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 used to create this NWB file.
    dtype: text
    name: source_script
    quantity: '?'
  - doc: 'Notes about stimuli, such as how and where presented.COMMENT: Can be from
      Methods'
    dtype: text
    name: stimulus
    quantity: '?'
  - doc: 'Narrative description about surgery/surgeries, including date(s) and who
      performed surgery. COMMENT: Much can be copied from Methods'
    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).  COMMENT: The metadata stored in this section should be used to describe\
    \ the experiment. Metadata necessary for interpreting the data is stored with\
    \ the data. MORE_INFO: 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 (eg, 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. <br /><br />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: 'Description of hardware devices used during experiment. COMMENT: Eg, monitors,
      ADC boards, microscopes, etc'
    groups:
    - attributes:
      - doc: Value is 'A recording device e.g. amplifier'
        dtype: str
        name: help
        value: A recording device e.g. amplifier
      doc: One of possibly many. Information about device and device description.
      neurodata_type_def: Device
      neurodata_type_inc: NWBContainer
    name: devices
    quantity: '?'
  - datasets:
    - attributes:
      - default_value: Contents of format specification file.
        doc: A help statement
        dtype: text
        name: help
        required: false
      - dims:
        - num_namespaces
        doc: Namespaces defined in the file
        dtype: text
        name: namespaces
        shape:
        - null
      doc: Dataset for storing contents of a specification file for either the core
        format or an extension.  Name should match name of file.`
      dtype: text
      neurodata_type_def: SpecFile
      quantity: '*'
    doc: Group for storing format specification files.
    name: specifications
    quantity: '?'
  - datasets:
    - doc: Age of subject
      dtype: text
      name: age
      quantity: '?'
    - doc: Description of subject and where subject came from (e.g., breeder, if animal)
      dtype: text
      name: description
      quantity: '?'
    - doc: 'Genetic strain COMMENT: 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
    quantity: '?'
  - datasets:
    - doc: A table of all electrodes (i.e. channels) used for recording
      name: electrodes
      neurodata_type_inc: ElectrodeTable
      quantity: '?'
    doc: Metadata related to extracellular electrophysiology.
    groups:
    - doc: One of possibly many groups, one for each electrode group.
      neurodata_type_inc: ElectrodeGroup
      quantity: '*'
    name: extracellular_ephys
    quantity: '?'
  - datasets:
    - doc: 'Description of filtering used. COMMENT: 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: 'One of possibly many. COMMENT: Name should be informative.'
      neurodata_type_inc: IntracellularElectrode
      quantity: '*'
    name: intracellular_ephys
    quantity: '?'
  - doc: Metadata describing optogenetic stimuluation
    groups:
    - doc: 'One of possibly many groups describing an optogenetic stimuluation site.
        COMMENT: Name is arbitrary but should be meaningful. Name is referenced by
        OptogeneticSeries'
      neurodata_type_inc: OptogeneticStimulusSite
      quantity: '*'
    name: optogenetics
    quantity: '?'
  - doc: Metadata related to optophysiology.
    groups:
    - doc: 'One of possibly many groups describing an imaging plane. COMMENT: Name
        is arbitrary but should be meaningful. It is referenced by TwoPhotonSeries
        and also ImageSegmentation and DfOverF interfaces'
      neurodata_type_inc: ImagingPlane
      quantity: '*'
    name: optophysiology
    quantity: '?'
  name: general
name: root
neurodata_type_def: NWBFile
neurodata_type_inc: NWBContainer

1.5.3. TimeSeries Types

1.5.3.1. TimeSeries

Extends: NWBContainer

Description: see Section 1.4.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
 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
attributes:
- 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
- default_value: no description
  doc: Description of TimeSeries
  dtype: text
  name: description
  required: false
- doc: Value is 'General time series object'
  dtype: text
  name: help
  value: General time series object
- doc: Name of TimeSeries or Modules that serve as the source for the data contained
    here. It can also be the name of a device, for stimulus or acquisition data
  dtype: text
  name: source
datasets:
- dims:
  - num_times
  doc: 'Numerical labels that apply to each element in data[]. COMMENT: Optional field.
    If present, the control array should have the same number of elements as data[].'
  dtype: uint8
  name: control
  quantity: '?'
  shape:
  - null
- dims:
  - num_control_values
  doc: 'Description of each control value. COMMENT: Array length should be as long
    as the highest number in control minus one, generating an zero-based indexed array
    for control values.'
  dtype: text
  name: control_description
  quantity: '?'
  shape:
  - null
- attributes:
  - default_value: 1.0
    doc: Scalar to multiply each element in data to convert it to the specified unit
    dtype: float32
    name: conversion
    required: false
  - default_value: 0.0
    doc: 'Smallest meaningful difference between values in data, stored in the specified
      by unit. COMMENT: 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 NaN'
    dtype: float32
    name: resolution
    required: false
  - doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
  dims:
  - num_times
  doc: 'Data values. Can also store binary data (eg, image frames) COMMENT: This field
    may be a link to data stored in an external file, especially in the case of raw
    data.'
  dtype: any
  name: data
  shape:
  - null
- attributes:
  - doc: 'Sampling rate, in Hz COMMENT: Rate information is stored in Hz'
    dtype: float32
    name: rate
  - doc: Value is 'Seconds'
    dtype: text
    name: unit
    value: Seconds
  doc: 'The timestamp of the first sample. COMMENT: When timestamps are uniformly
    spaced, the timestamp of the first sample can be specified and all subsequent
    ones calculated from the sampling rate.'
  dtype: float64
  name: starting_time
  quantity: '?'
- attributes:
  - doc: Value is '1'
    dtype: int32
    name: interval
    value: 1
  - doc: Value is 'Seconds'
    dtype: text
    name: unit
    value: Seconds
  dims:
  - num_times
  doc: 'Timestamps for samples stored in data.COMMENT: Timestamps here have all been
    corrected to the common experiment master-clock. Time is stored as seconds and
    all timestamps are relative to experiment start time.'
  dtype: float64
  name: timestamps
  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. COMMENT:\
    \ 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: NWBContainer

1.5.3.2. AbstractFeatureSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Features of an applied stimulus. This is useful when storing the
    raw stimulus is impractical'
  dtype: text
  name: help
  value: Features of an applied stimulus. This is useful when storing the raw stimulus
    is impractical
datasets:
- attributes:
  - default_value: see 'feature_units'
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: None
    name: unit
    required: false
  dims:
  - num_times
  - num_features
  doc: Values of each feature at each time.
  dtype: float32
  name: data
  shape:
  - 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
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.
neurodata_type_def: AbstractFeatureSeries
neurodata_type_inc: TimeSeries

1.5.3.3. AnnotationSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Time-stamped annotations about an experiment'
  dtype: text
  name: help
  value: Time-stamped annotations about an experiment
datasets:
- attributes:
  - doc: Value is 'float('NaN')'
    dtype: None
    name: conversion
    value: NaN
  - doc: Value is 'float('NaN')'
    dtype: None
    name: resolution
    value: NaN
  - doc: Value is 'n/a'
    dtype: None
    name: unit
    value: n/a
  dims:
  - num_times
  doc: Annotations made during an experiment.
  dtype: text
  name: data
  shape:
  - null
doc: Stores, eg, user annotations made during an experiment. The TimeSeries::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.
neurodata_type_def: AnnotationSeries
neurodata_type_inc: TimeSeries

1.5.3.4. ElectricalSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Stores acquired voltage data from extracellular recordings'
  dtype: text
  name: help
  value: Stores acquired voltage data from extracellular recordings
datasets:
- attributes:
  - default_value: volt
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  dims:
  - - num_times
  - - num_times
    - num_channels
  doc: Recorded voltage data.
  dtype: number
  name: data
  shape:
  - - null
  - - null
    - null
- doc: the electrodes that this series was generated from
  name: electrodes
  neurodata_type_inc: ElectrodeTableRegion
doc: 'Stores acquired voltage data from extracellular recordings. The data field of
  an ElectricalSeries is an int or float array storing data in Volts. TimeSeries::data
  array structure: :blue:`[num times] [num channels] (or [num_times] for single electrode).`'
neurodata_type_def: ElectricalSeries
neurodata_type_inc: TimeSeries

1.5.3.5. SpikeEventSeries

Extends: ElectricalSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Snapshots of spike events from data.'
  dtype: text
  name: help
  value: Snapshots of spike events from data.
datasets:
- attributes:
  - default_value: volt
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  dims:
  - - num_events
    - num_samples
  - - num_events
    - num_channels
    - num_samples
  doc: Spike waveforms.
  dtype: float32
  name: data
  shape:
  - - null
    - null
  - - null
    - null
    - null
doc: 'Stores "snapshots" of spike events (i.e., threshold crossings) in data. This
  may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description
  field should describing 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: :blue:`[num events] [num channels]
  [num samples] (or [num events] [num samples] for single electrode)`.'
neurodata_type_def: SpikeEventSeries
neurodata_type_inc: ElectricalSeries

1.5.3.6. ImageSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Storage object for time-series 2-D image data'
  dtype: text
  name: help
  value: Storage object for time-series 2-D image data
datasets:
- doc: Number of bit per image pixel.
  dtype: int32
  name: bits_per_pixel
  quantity: '?'
- dims:
  - - x
    - y
  - - frame
    - y
    - x
  - - frame
    - z
    - y
    - x
  doc: Either binary data containing image or empty.
  dtype: number
  name: data
  shape:
  - - null
    - null
  - - 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 entry is the frame number (within the full ImageSeries) of the first
      frame in the corresponding external_file entry. This serves as an index to what
      frames each file contains, allowing random access.Zero-based indexing is used.  (The
      first element will always be zero).
    dtype: int
    name: starting_frame
    shape:
    - null
  dims:
  - num_files
  doc: 'Path or URL to one or more external file(s). Field only present if format=external.
    NOTE: this is only relevant if the image 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
    HDF5 file and that file is HDF5 linked to this file.'
  dtype: text
  name: external_file
  quantity: '?'
  shape:
  - null
- doc: Format of image. If this is 'external' then the field external_file contains
    the path or URL information to that file. For tiff, png, jpg, etc, the binary
    representation of the image is stored in data. If the format is raw then the fields
    bit_per_pixel and dimension are used. For raw images, only a single channel is
    stored (eg, red).
  dtype: text
  name: format
  quantity: '?'
doc: 'General image data that is common between acquisition and stimulus time series.
  Sometimes the image data is stored in the HDF5 file in a raw format while other
  times it will be stored as an external image file in the host file system. The data
  field will either be binary data or empty. TimeSeries::data array structure: [frame]
  [y][x] or [frame][z][y][x].'
neurodata_type_def: ImageSeries
neurodata_type_inc: TimeSeries

1.5.3.7. ImageMaskSeries

Extends: ImageSeries

Description: see Section 1.4.2.7

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
attributes:
- doc: Value is 'An alpha mask that is applied to a presented visual stimulus'
  dtype: text
  name: help
  value: An alpha mask that is applied to a presented visual stimulus
doc: An alpha mask that is applied to a presented visual stimulus. The data[] array
  contains an array of mask values that are applied to the displayed image. Mask values
  are stored as RGBA. Mask can vary with time. The timestamps array indicates the
  starting time of a mask, and that mask pattern continues until it's explicitly changed.
links:
- doc: Link to ImageSeries that mask is applied to.
  name: masked_imageseries
  target_type: ImageSeries
neurodata_type_def: ImageMaskSeries
neurodata_type_inc: ImageSeries

1.5.3.8. OpticalSeries

Extends: ImageSeries

Description: see Section 1.4.2.8

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
attributes:
- doc: Value is 'Time-series image stack for optical recording or stimulus'
  dtype: text
  name: help
  value: Time-series image stack for optical recording or stimulus
datasets:
- doc: Distance from camera/monitor to target/eye.
  dtype: float32
  name: distance
  quantity: '?'
- dims:
  - - width|height
    - width|height|depth
  doc: Width, height and depto of image, or imaged area (meters).
  dtype: float32
  name: field_of_view
  quantity: '?'
  shape:
  - 2
- 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: '?'
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 (eg, 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.
neurodata_type_def: OpticalSeries
neurodata_type_inc: ImageSeries

1.5.3.9. TwoPhotonSeries

Extends: ImageSeries

Description: see Section 1.4.2.9

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
attributes:
- doc: Value is 'Image stack recorded from 2-photon microscope'
  dtype: text
  name: help
  value: Image stack recorded from 2-photon microscope
datasets:
- dims:
  - width|height|depth
  doc: Width, height and depth of image, or imaged area (meters).
  dtype: float32
  name: field_of_view
  quantity: '?'
  shape:
  - 3
- doc: Photomultiplier gain
  dtype: float32
  name: pmt_gain
  quantity: '?'
- doc: Lines imaged per second. This is also stored in /general/optophysiology but
    is kept here as it is useful information for analysis, and so good to be stored
    w/ the actual data.
  dtype: float32
  name: scan_line_rate
  quantity: '?'
doc: A special case of optical imaging.
links:
- doc: link to ImagingPlane group from which this TimeSeries data was generated
  name: imaging_plane
  target_type: ImagingPlane
neurodata_type_def: TwoPhotonSeries
neurodata_type_inc: ImageSeries

1.5.3.10. IndexSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'A sequence that is generated from an existing image stack. Frames
    can be presented in an arbitrary order. The data[] field stores frame number in
    reference stack'
  dtype: text
  name: help
  value: A sequence that is generated from an existing image stack. Frames can be
    presented in an arbitrary order. The data[] field stores frame number in reference
    stack
datasets:
- dims:
  - num_times
  doc: Index of the frame in the referenced ImageSeries.
  dtype: int
  name: data
  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.
links:
- doc: HDF5 link to TimeSeries containing images that are indexed.
  name: indexed_timeseries
  target_type: ImageSeries
neurodata_type_def: IndexSeries
neurodata_type_inc: TimeSeries

1.5.3.11. IntervalSeries

Extends: TimeSeries

Description: see Section 1.4.2.11

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
attributes:
- doc: Value is 'Stores the start and stop times for events'
  dtype: text
  name: help
  value: Stores the start and stop times for events
datasets:
- attributes:
  - doc: Value is 'float('NaN')'
    dtype: None
    name: conversion
    value: NaN
  - doc: Value is 'float('NaN')'
    dtype: None
    name: resolution
    value: NaN
  - doc: Value is 'n/a'
    dtype: None
    name: unit
    value: n/a
  dims:
  - num_times
  doc: '>0 if interval started, <0 if interval ended.'
  dtype: int8
  name: data
  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.
neurodata_type_def: IntervalSeries
neurodata_type_inc: TimeSeries

1.5.3.12. OptogeneticSeries

Extends: TimeSeries

Description: see Section 1.4.2.12

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
attributes:
- doc: Value is 'Optogenetic stimulus'
  dtype: text
  name: help
  value: Optogenetic stimulus
datasets:
- attributes:
  - default_value: watt
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  dims:
  - num_times
  doc: Applied power for optogenetic stimulus.
  dtype: float32
  name: data
  shape:
  - null
doc: Optogenetic stimulus.  The data[] field is in unit of watts.
links:
- doc: link to OptogeneticStimulusSite group that describes the site to which this
    stimulus was applied
  name: site
  target_type: OptogeneticStimulusSite
neurodata_type_def: OptogeneticSeries
neurodata_type_inc: TimeSeries

1.5.3.13. PatchClampSeries

Extends: TimeSeries

Description: see Section 1.4.2.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
attributes:
- doc: Value is 'Superclass definition for patch-clamp data'
  dtype: text
  name: help
  value: Superclass definition for patch-clamp data
datasets:
- dims:
  - num_times
  doc: Recorded voltage or current.
  dtype: number
  name: data
  shape:
  - null
- doc: 'Units: Volt/Amp (v-clamp) or Volt/Volt (c-clamp)'
  dtype: float
  name: gain
  quantity: '?'
doc: Stores stimulus or response current or voltage. Superclass definition for patch-clamp
  data (this class should not be instantiated directly).
links:
- doc: link to IntracellularElectrode group that describes th electrode that was used
    to apply or record this data
  name: electrode
  target_type: IntracellularElectrode
neurodata_type_def: PatchClampSeries
neurodata_type_inc: TimeSeries

1.5.3.14. CurrentClampSeries

Extends: PatchClampSeries

Description: see Section 1.4.2.14

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
attributes:
- doc: Value is 'Voltage recorded from cell during current-clamp recording'
  dtype: text
  name: help
  value: Voltage recorded from cell during current-clamp recording
datasets:
- doc: 'Unit: Amp'
  dtype: float32
  name: bias_current
  quantity: '?'
- doc: 'Unit: Ohm'
  dtype: float32
  name: bridge_balance
  quantity: '?'
- doc: 'Unit: Farad'
  dtype: float32
  name: capacitance_compensation
  quantity: '?'
doc: Stores voltage data recorded from intracellular current-clamp recordings. A corresponding
  CurrentClampStimulusSeries (stored separately as a stimulus) is used to store the
  current injected.
neurodata_type_def: CurrentClampSeries
neurodata_type_inc: PatchClampSeries

1.5.3.15. IZeroClampSeries

Extends: CurrentClampSeries

Description: see Section 1.4.2.15

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: Value is 'Voltage from intracellular recordings when all current and amplifier
    settings are off'
  dtype: text
  name: help
  value: Voltage from intracellular recordings when all current and amplifier settings
    are off
doc: Stores recorded voltage data from intracellular recordings 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.
neurodata_type_def: IZeroClampSeries
neurodata_type_inc: CurrentClampSeries

1.5.3.16. CurrentClampStimulusSeries

Extends: PatchClampSeries

Description: see Section 1.4.2.16

YAML Specification:

1
2
3
4
5
6
7
8
9
attributes:
- doc: Value is 'Stimulus current applied during current clamp recording'
  dtype: text
  name: help
  value: Stimulus current applied during current clamp recording
doc: Aliases to standard PatchClampSeries. Its functionality is to better tag PatchClampSeries
  for machine (and human) readability of the file.
neurodata_type_def: CurrentClampStimulusSeries
neurodata_type_inc: PatchClampSeries

1.5.3.17. VoltageClampSeries

Extends: PatchClampSeries

Description: see Section 1.4.2.17

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
attributes:
- doc: Value is 'Current recorded from cell during voltage-clamp recording'
  dtype: text
  name: help
  value: Current recorded from cell during voltage-clamp recording
datasets:
- attributes:
  - default_value: Farad
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: Farad'
  dtype: float32
  name: capacitance_fast
  quantity: '?'
- attributes:
  - default_value: Farad
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: Farad'
  dtype: float32
  name: capacitance_slow
  quantity: '?'
- attributes:
  - default_value: Hz
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: Hz'
  dtype: float32
  name: resistance_comp_bandwidth
  quantity: '?'
- attributes:
  - default_value: pecent
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: %'
  dtype: float32
  name: resistance_comp_correction
  quantity: '?'
- attributes:
  - default_value: pecent
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: %'
  dtype: float32
  name: resistance_comp_prediction
  quantity: '?'
- attributes:
  - default_value: Farad
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: Farad'
  dtype: float32
  name: whole_cell_capacitance_comp
  quantity: '?'
- attributes:
  - default_value: Ohm
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  doc: 'Unit: Ohm'
  dtype: float32
  name: whole_cell_series_resistance_comp
  quantity: '?'
doc: Stores current data recorded from intracellular voltage-clamp recordings. A corresponding
  VoltageClampStimulusSeries (stored separately as a stimulus) is used to store the
  voltage injected.
neurodata_type_def: VoltageClampSeries
neurodata_type_inc: PatchClampSeries

1.5.3.18. VoltageClampStimulusSeries

Extends: PatchClampSeries

Description: see Section 1.4.2.18

YAML Specification:

1
2
3
4
5
6
7
8
9
attributes:
- doc: Value is 'Stimulus voltage applied during voltage clamp recording'
  dtype: text
  name: help
  value: Stimulus voltage applied during voltage clamp recording
doc: Aliases to standard PatchClampSeries. Its functionality is to better tag PatchClampSeries
  for machine (and human) readability of the file.
neurodata_type_def: VoltageClampStimulusSeries
neurodata_type_inc: PatchClampSeries

1.5.3.19. RoiResponseSeries

Extends: TimeSeries

Description: see Section 1.4.2.19

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: Value is 'ROI responses over an imaging plane. Each row in data[] should correspond
    to the signal from one ROI'
  dtype: text
  name: help
  value: ROI responses over an imaging plane. Each row in data[] should correspond
    to the signal from one ROI
datasets:
- dims:
  - num_times
  - num_ROIs
  doc: Signals from ROIs
  dtype: float32
  name: data
  shape:
  - null
  - null
- dims:
  - num_ROIs
  doc: List of ROIs represented, one name for each row of data[].
  dtype: text
  name: roi_names
  shape:
  - null
doc: ROI responses over an imaging plane. Each row in data[] should correspond to
  the signal from one ROI.
links:
- doc: HDF5 link to image segmentation module defining ROIs.
  name: segmentation_interface
  target_type: ImageSegmentation
neurodata_type_def: RoiResponseSeries
neurodata_type_inc: TimeSeries

1.5.3.20. SpatialSeries

Extends: TimeSeries

Description: see Section 1.4.2.20

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
attributes:
- doc: Value is 'Stores points in space over time. The data[] array structure is [num
    samples][num spatial dimensions]'
  dtype: text
  name: help
  value: Stores points in space over time. The data[] array structure is [num samples][num
    spatial dimensions]
datasets:
- attributes:
  - default_value: meter
    doc: "The base unit of measure used to store data. This should be in the SI unit.\
      \ COMMENT: This is the SI unit (when appropriate) of the stored data, such as\
      \ Volts. If the actual data is stored in millivolts, the field 'conversion'\
      \ below describes how to convert the data to the specified SI unit."
    dtype: text
    name: unit
    required: false
  dims:
  - num_times
  - num_features
  doc: 2-D array storing position or direction relative to some reference frame.
  dtype: number
  name: data
  shape:
  - null
  - null
- doc: Description defining what exactly 'straight-ahead' means.
  dtype: text
  name: reference_frame
  quantity: '?'
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.'
neurodata_type_def: SpatialSeries
neurodata_type_inc: TimeSeries

1.5.4. Data Processing

1.5.4.1. ProcessingModule

Extends: NWBContainer

Description: see Section 1.4.3.1

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
attributes:
- doc: Description of Module
  dtype: text
  name: description
- doc: Value is 'A collection of analysis outputs from processing of data'
  dtype: text
  name: help
  value: A collection of analysis outputs from processing of data
doc: Module.  Name should be descriptive. Stores a collection of related data organized
  by contained interfaces.  Each interface is a contract specifying content related
  to a particular type of data.
groups:
- doc: Interface objects containing data output from processing steps
  neurodata_type_inc: NWBContainer
  quantity: '*'
neurodata_type_def: ProcessingModule
neurodata_type_inc: NWBContainer

1.5.4.2. BehavioralEpochs

Extends: NWBContainer

Description: see Section 1.4.3.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
attributes:
- doc: Value is 'General container for storing behavorial epochs'
  dtype: text
  name: help
  value: General container for storing behavorial epochs
default_name: BehavioralEpochs
doc: TimeSeries for storing behavoioral 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: NWBContainer

1.5.4.3. BehavioralEvents

Extends: NWBContainer

Description: see Section 1.4.3.3

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
attributes:
- doc: Value is 'Position data, whether along the x, xy or xyz axis'
  dtype: text
  name: help
  value: Position data, whether along the x, xy or xyz axis
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 irregular behavioral events
  neurodata_type_inc: TimeSeries
  quantity: '*'
neurodata_type_def: BehavioralEvents
neurodata_type_inc: NWBContainer

1.5.4.4. BehavioralTimeSeries

Extends: NWBContainer

Description: see Section 1.4.3.4

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
attributes:
- doc: Value is 'General container for storing continuously sampled behavioral data.'
  dtype: text
  name: help
  value: General container for storing continuously sampled behavioral data.
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: NWBContainer

1.5.4.5. ClusterWaveforms

Extends: NWBContainer

Description: see Section 1.4.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
attributes:
- doc: Value is 'Mean waveform shape of clusters. Waveforms should be high-pass filtered
    (ie, not the same bandpass filter used waveform analysis and clustering)'
  dtype: text
  name: help
  value: Mean waveform shape of clusters. Waveforms should be high-pass filtered (ie,
    not the same bandpass filter used waveform analysis and clustering)
datasets:
- doc: Filtering applied to data before generating mean/sd
  dtype: text
  name: waveform_filtering
- dims:
  - num_clusters
  - num_samples
  doc: The mean waveform for each cluster, using the same indices for each wave as
    cluster numbers in the associated Clustering module (i.e, cluster 3 is in array
    slot [3]). Waveforms corresponding to gaps in cluster sequence should be empty
    (e.g., zero- filled)
  dtype: float32
  name: waveform_mean
  shape:
  - null
  - null
- dims:
  - num_clusters
  - num_samples
  doc: Stdev of waveforms for each cluster, using the same indices as in mean
  dtype: float32
  name: waveform_sd
  shape:
  - null
  - null
default_name: ClusterWaveforms
doc: 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.
links:
- doc: HDF5 link to Clustering interface that was the source of the clustered data
  name: clustering_interface
  target_type: Clustering
neurodata_type_def: ClusterWaveforms
neurodata_type_inc: NWBContainer

1.5.4.6. Clustering

Extends: NWBContainer

Description: see Section 1.4.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
attributes:
- doc: Value is 'Clustered spike data, whether from automatic clustering tools (eg,
    klustakwik) or as a result of manual sorting'
  dtype: text
  name: help
  value: Clustered spike data, whether from automatic clustering tools (eg, klustakwik)
    or as a result of manual sorting
datasets:
- doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters curated
    using Klusters, etc)
  dtype: text
  name: description
- dims:
  - num_events
  doc: Cluster number of each event
  dtype: int32
  name: num
  shape:
  - null
- dims:
  - num_clusters
  doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides
    a basic clustering metric).
  dtype: float32
  name: peak_over_rms
  shape:
  - null
- dims:
  - num_events
  doc: Times of clustered events, in seconds. This may be a link to times field in
    associated FeatureExtraction module.
  dtype: float64
  name: times
  shape:
  - null
default_name: Clustering
doc: Clustered spike data, whether from automatic clustering tools (e.g., klustakwik)
  or as a result of manual sorting.
neurodata_type_def: Clustering
neurodata_type_inc: NWBContainer

1.5.4.7. CompassDirection

Extends: NWBContainer

Description: see Section 1.4.3.7

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
attributes:
- doc: Value is 'Direction as measured radially. Spatial series reference frame should
    indicate which direction corresponds to zero and what is the direction of positive
    rotation'
  dtype: text
  name: help
  value: Direction as measured radially. Spatial series reference frame should indicate
    which direction corresponds to zero and what is the direction of positive rotation
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: NWBContainer

1.5.4.8. CorrectedImageStack

Extends: NWBContainer

Description: see Section 1.4.3.8

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
attributes:
- doc: Value is 'Reuslts from motion correction of an image stack'
  dtype: text
  name: help
  value: Reuslts from motion correction of an image stack
doc: One of possibly many.  Name should be informative.
groups:
- doc: Image stack with frames shifted to the common coordinates.
  name: corrected
  neurodata_type_inc: ImageSeries
- doc: Stores the x,y delta necessary to align each frame to the common coordinates,
    for example, to align each frame to a reference image.
  name: xy_translation
  neurodata_type_inc: TimeSeries
links:
- doc: HDF5 Link to image series that is being registered.
  name: original
  target_type: ImageSeries
neurodata_type_def: CorrectedImageStack
neurodata_type_inc: NWBContainer
quantity: +

1.5.4.9. DfOverF

Extends: NWBContainer

Description: see Section 1.4.3.9

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
attributes:
- doc: Value is 'Df/f over time of one or more ROIs. TimeSeries names should correspond
    to imaging plane names'
  dtype: text
  name: help
  value: Df/f over time of one or more ROIs. TimeSeries names should correspond to
    imaging plane names
default_name: DfOverF
doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F
  should be the same as for segmentation (ie, same names for ROIs and for image planes).
groups:
- doc: RoiResponseSeries object containing dF/F for a ROI
  neurodata_type_inc: RoiResponseSeries
  quantity: '*'
neurodata_type_def: DfOverF
neurodata_type_inc: NWBContainer

1.5.4.10. EpochTimeSeries

Extends: NWBContainer

Description: see Section 1.4.3.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
attributes:
- doc: Value is 'Data on how an epoch applies to a time series'
  dtype: text
  name: help
  value: Data on how an epoch applies to a time series
datasets:
- doc: Number of data samples available in this time series, during this epoch.
  dtype: int32
  name: count
- doc: "Epoch's start index in TimeSeries data[] field. COMMENT: This can be used\
    \ to calculate location in TimeSeries timestamp[] field"
  dtype: int32
  name: idx_start
doc: 'One of possibly many input or output streams recorded during epoch. COMMENT:
  Name is arbitrary and does not have to match the TimeSeries that it refers to.'
links:
- doc: Link to TimeSeries.  An HDF5 soft-link should be used.
  name: timeseries
  target_type: TimeSeries
neurodata_type_def: EpochTimeSeries
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.4.11. EventDetection

Extends: NWBContainer

Description: see Section 1.4.3.11

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
attributes:
- doc: Value is 'Detected spike events from voltage trace(s)'
  dtype: text
  name: help
  value: Detected spike events from voltage trace(s)
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. Module description should define what is meant by time of event
    (e.g., .25msec 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:
  - default_value: Seconds
    doc: The string "Seconds"
    dtype: text
    name: unit
    required: false
  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: HDF5 link to 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 mandate that information be stored here
  name: source_electricalseries
  target_type: ElectricalSeries
neurodata_type_def: EventDetection
neurodata_type_inc: NWBContainer

1.5.4.12. EventWaveform

Extends: NWBContainer

Description: see Section 1.4.3.12

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
attributes:
- doc: Value is 'Waveform of detected extracellularly recorded spike events'
  dtype: text
  name: help
  value: Waveform of detected extracellularly recorded spike events
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 containing detected spike event waveforms
  neurodata_type_inc: SpikeEventSeries
  quantity: '*'
neurodata_type_def: EventWaveform
neurodata_type_inc: NWBContainer

1.5.4.13. EyeTracking

Extends: NWBContainer

Description: see Section 1.4.3.13

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: Value is 'Eye-tracking data, representing direction of gaze'
  dtype: text
  name: help
  value: Eye-tracking data, representing direction of gaze
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: NWBContainer

1.5.4.14. FeatureExtraction

Extends: NWBContainer

Description: see Section 1.4.3.14

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
attributes:
- doc: Value is 'Container for salient features of detected events'
  dtype: text
  name: help
  value: Container for salient features of detected events
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: the electrodes that this series was generated from
  name: electrodes
  neurodata_type_inc: ElectrodeTableRegion
default_name: FeatureExtraction
doc: Features, such as PC1 and PC2, that are extracted from signals stored in a SpikeEvent
  TimeSeries or other source.
neurodata_type_def: FeatureExtraction
neurodata_type_inc: NWBContainer

1.5.4.15. FilteredEphys

Extends: NWBContainer

Description: see Section 1.4.3.15

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
attributes:
- doc: Value is 'Ephys data from one or more channels that is subjected to filtering,
    such as for gamma or theta oscillations (LFP has its own interface). Filter properties
    should be noted in the ElectricalSeries'
  dtype: text
  name: help
  value: Ephys data from one or more channels that is subjected to filtering, such
    as for gamma or theta oscillations (LFP has its own interface). Filter properties
    should be noted in the ElectricalSeries
default_name: FilteredEphys
doc: Ephys 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.
groups:
- doc: ElectricalSeries object containing filtered electrophysiology data
  neurodata_type_inc: ElectricalSeries
  quantity: +
neurodata_type_def: FilteredEphys
neurodata_type_inc: NWBContainer

1.5.4.16. Fluorescence

Extends: NWBContainer

Description: see Section 1.4.3.16

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
attributes:
- doc: Value is 'Fluorescence over time of one or more ROIs. TimeSeries names should
    correspond to imaging plane names'
  dtype: text
  name: help
  value: Fluorescence over time of one or more ROIs. TimeSeries names should correspond
    to imaging plane names
default_name: Fluorescence
doc: Fluorescence information about a region of interest (ROI). Storage hierarchy
  of fluorescence should be the same as for segmentation (ie, same names for ROIs
  and for image planes).
groups:
- doc: RoiResponseSeries object containing fluorescence data for a ROI
  neurodata_type_inc: RoiResponseSeries
  quantity: +
neurodata_type_def: Fluorescence
neurodata_type_inc: NWBContainer

1.5.4.17. ImageSegmentation

Extends: NWBContainer

Description: see Section 1.4.3.17

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
attributes:
- doc: Value is 'Stores groups of pixels that define regions of interest from one
    or more imaging planes'
  dtype: text
  name: help
  value: Stores groups of pixels that define regions of interest from one or more
    imaging planes
default_name: ImageSegmentation
doc: Stores pixels in an image that represent different regions of interest (ROIs)
  or masks. All segmentation for a given imaging plane is stored together, with storage
  for multiple imaging planes (masks) supported. Each ROI is stored in its own subgroup,
  with the ROI group containing both a 2D mask and a list of pixels that make up this
  mask. Segments can also be used for masking neuropil. If segmentation is allowed
  to change with time, a new imaging plane (or module) is required and ROI names should
  remain consistent between them.
groups:
- attributes:
  - doc: Value is 'Results from segmentation of an imaging plane'
    dtype: text
    name: help
    value: Results from segmentation of an imaging plane
  datasets:
  - doc: Description of image plane, recording wavelength, depth, etc
    dtype: text
    name: description
    quantity: '?'
  doc: Group name is human-readable description of imaging plane
  groups:
  - attributes:
    - doc: Value is 'Region of interest, as determined by image segmentation'
      dtype: text
      name: help
      value: Region of interest, as determined by image segmentation
    datasets:
    - dims:
      - num_x
      - num_y
      doc: ROI mask, represented in 2D ([y][x]) intensity image
      dtype: float32
      name: img_mask
      shape:
      - null
      - null
    - dims:
      - num_pixels
      - '2'
      doc: List of pixels (x,y) that compose the mask
      dtype: uint16
      name: pix_mask
      shape:
      - null
      - null
    - dims:
      - num_pixels
      doc: Weight of each pixel listed in pix_mask
      dtype: float32
      name: pix_mask_weight
      shape:
      - null
    - doc: Description of this ROI.
      dtype: text
      name: roi_description
    doc: Name of ROI
    neurodata_type_def: ROI
    neurodata_type_inc: NWBContainer
    quantity: '*'
  - doc: Stores image stacks segmentation mask apply to.
    groups:
    - doc: One or more image stacks that the masks apply to (can be one-element stack)
      neurodata_type_inc: ImageSeries
    name: reference_images
  links:
  - doc: link to ImagingPlane group from which this TimeSeries data was generated
    name: imaging_plane
    target_type: ImagingPlane
  neurodata_type_def: PlaneSegmentation
  neurodata_type_inc: NWBContainer
  quantity: '*'
neurodata_type_def: ImageSegmentation
neurodata_type_inc: NWBContainer

1.5.4.18. ImagingPlane

Extends: NWBContainer

Description: see Section 1.4.3.18

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
attributes:
- doc: Value is 'Metadata about an imaging plane'
  dtype: text
  name: help
  value: Metadata about an imaging plane
datasets:
- doc: Description of &lt;image_plane_X&gt;
  dtype: text
  name: description
  quantity: '?'
- doc: Name of device in /general/devices
  dtype: text
  name: device
- doc: Excitation wavelength
  dtype: text
  name: excitation_lambda
- doc: Rate images are acquired, in Hz.
  dtype: text
  name: imaging_rate
- doc: Calcium indicator
  dtype: text
  name: indicator
- doc: Location of image plane
  dtype: text
  name: location
- attributes:
  - default_value: 1.0
    doc: Multiplier to get from stored values to specified unit (e.g., 1e-3 for millimeters)
    dtype: float
    name: conversion
    required: false
  - default_value: Meter
    doc: Base unit that coordinates are stored in (e.g., Meters)
    dtype: text
    name: unit
    required: false
  dims:
  - height
  - weight
  - x|y|z
  doc: 'Physical position of each pixel. COMMENT: "xyz" represents the position of
    the pixel relative to the defined coordinate space'
  dtype: float32
  name: manifold
  shape:
  - null
  - null
  - 3
- doc: 'Describes position and reference frame of manifold based on position of first
    element in manifold. For example, text description of anotomical location or vectors
    needed to rotate to common anotomical axis (eg, AP/DV/ML). COMMENT: This field
    is necessary to interpret manifold. If manifold is not present then this field
    is not required'
  dtype: text
  name: reference_frame
doc: 'One of possibly many groups describing an imaging plane. COMMENT: Name is arbitrary
  but should be meaningful. It is referenced by TwoPhotonSeries and also ImageSegmentation
  and DfOverF interfaces'
groups:
- attributes:
  - doc: Value is 'Metadata about an optical channel used to record from an imaging
      plane'
    dtype: text
    name: help
    value: Metadata about an optical channel used to record from an imaging plane
  datasets:
  - doc: Any notes or comments about the channel
    dtype: text
    name: description
  - doc: Emission lambda for channel
    dtype: text
    name: emission_lambda
  doc: 'One of possibly many groups storing channel-specific data COMMENT: Name is
    arbitrary but should be meaningful'
  neurodata_type_def: OpticalChannel
  neurodata_type_inc: NWBContainer
neurodata_type_def: ImagingPlane
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.4.19. ImagingRetinotopy

Extends: NWBContainer

Description: see Section 1.4.3.19

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
attributes:
- doc: Value is 'Intrinsic signal optical imaging or Widefield imaging for measuring
    retinotopy'
  dtype: text
  name: help
  value: Intrinsic signal optical imaging or Widefield imaging for measuring retinotopy
datasets:
- attributes:
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row|column
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Unit that axis data is stored in (e.g., degrees)
    dtype: text
    name: unit
  dims:
  - num_rows
  - num_cols
  doc: Phase response to stimulus on the first measured axis
  dtype: float32
  name: axis_1_phase_map
  shape:
  - null
  - null
- attributes:
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Unit that axis data is stored in (e.g., degrees)
    dtype: text
    name: unit
  dims:
  - num_rows
  - num_cols
  doc: Power response on the first measured axis. Response is scaled so 0.0 is no
    power in the response and 1.0 is maximum relative power.
  dtype: float32
  name: axis_1_power_map
  quantity: '?'
  shape:
  - null
  - null
- attributes:
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Unit that axis data is stored in (e.g., degrees)
    dtype: text
    name: unit
  dims:
  - num_rows
  - num_cols
  doc: Phase response to stimulus on the second measured axis
  dtype: float32
  name: axis_2_phase_map
  shape:
  - null
  - null
- attributes:
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Unit that axis data is stored in (e.g., degrees)
    dtype: text
    name: unit
  dims:
  - num_rows
  - num_cols
  doc: Power response on the second measured axis. Response is scaled so 0.0 is no
    power in the response and 1.0 is maximum relative power.
  dtype: float32
  name: axis_2_power_map
  quantity: '?'
  shape:
  - null
  - null
- dims:
  - '2'
  doc: Two-element array describing the contents of the two response axis fields.
    Description should be something like ['altitude', 'azimuth'] or '['radius', 'theta']
  dtype: text
  name: axis_descriptions
  shape:
  - null
- attributes:
  - doc: Number of bits used to represent each value. This is necessary to determine
      maximum (white) pixel value
    dtype: int32
    name: bits_per_pixel
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Focal depth offset, in meters
    dtype: float
    name: focal_depth
  - doc: Format of image. Right now only 'raw' supported
    dtype: text
    name: format
  dims:
  - num_rows
  - num_cols
  doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth, wavelength)
    as data collection. Array format: [rows][columns]'
  dtype: uint16
  name: focal_depth_image
  shape:
  - null
  - null
- attributes:
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters.
    dtype: float
    name: field_of_view
    shape:
    - null
  dims:
  - num_rows
  - num_cols
  doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2
  dtype: float32
  name: sign_map
  shape:
  - null
  - null
- attributes:
  - doc: Number of bits used to represent each value. This is necessary to determine
      maximum (white) pixel value
    dtype: int32
    name: bits_per_pixel
  - dims:
    - row_col
    doc: 'Number of rows and columns in the image. NOTE: row, column representation
      is equivalent to height,width.'
    dtype: int32
    name: dimension
    shape:
    - null
  - dims:
    - row_col
    doc: Size of viewing area, in meters
    dtype: float
    name: field_of_view
    shape:
    - null
  - doc: Format of image. Right now only 'raw' supported
    dtype: text
    name: format
  dims:
  - num_rows
  - num_cols
  doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]'
  dtype: uint16
  name: vasculature_image
  shape:
  - null
  - null
default_name: ImagingRetinotopy
doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy.
  Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to specific
  stimuli and a combined polarity map from which to identify visual areas.<br />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).'
neurodata_type_def: ImagingRetinotopy
neurodata_type_inc: NWBContainer

1.5.4.20. IntracellularElectrode

Extends: NWBContainer

Description: see Section 1.4.3.20

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
attributes:
- doc: Value is 'Metadata about an intracellular electrode'
  dtype: text
  name: help
  value: Metadata about an intracellular electrode
datasets:
- doc: 'Recording description, description of electrode (e.g.,  whole-cell, sharp,
    etc)COMMENT: Free-form text (can be from Methods)'
  dtype: text
  name: description
- doc: Name(s) of devices in general/devices
  dtype: text
  name: device
  quantity: '?'
- doc: Electrode specific filtering.
  dtype: text
  name: filtering
  quantity: '?'
- doc: Initial access resistance
  dtype: text
  name: initial_access_resistance
  quantity: '?'
- doc: Area, layer, comments on estimation, stereotaxis coordinates (if in vivo, etc)
  dtype: text
  name: location
  quantity: '?'
- doc: 'Electrode resistance COMMENT: unit: Ohm'
  dtype: text
  name: resistance
  quantity: '?'
- doc: Information about seal used for recording
  dtype: text
  name: seal
  quantity: '?'
- doc: Information about slice used for recording
  dtype: text
  name: slice
  quantity: '?'
doc: 'One of possibly many. COMMENT: Name should be informative.'
neurodata_type_def: IntracellularElectrode
neurodata_type_inc: NWBContainer

1.5.4.21. LFP

Extends: NWBContainer

Description: see Section 1.4.3.21

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
attributes:
- doc: Value is 'LFP data from one or more channels. Filter properties should be noted
    in the ElectricalSeries'
  dtype: text
  name: help
  value: LFP data from one or more channels. Filter properties should be noted in
    the ElectricalSeries
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 containing LFP data for one or channels
  neurodata_type_inc: ElectricalSeries
  quantity: +
neurodata_type_def: LFP
neurodata_type_inc: NWBContainer

1.5.4.22. MotionCorrection

Extends: NWBContainer

Description: see Section 1.4.3.22

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
attributes:
- doc: Value is 'Image stacks whose frames have been shifted (registered) to account
    for motion'
  dtype: text
  name: help
  value: Image stacks whose frames have been shifted (registered) to account for motion
default_name: MotionCorrection
doc: 'An image stack where all frames are shifted (registered) to a common coordinate
  system, to account for movement and drift between frames. Note: each frame at each
  point in time is assumed to be 2-D (has only x & y dimensions).'
groups:
- attributes:
  - doc: Value is 'Reuslts from motion correction of an image stack'
    dtype: text
    name: help
    value: Reuslts from motion correction of an image stack
  doc: One of possibly many.  Name should be informative.
  groups:
  - doc: Image stack with frames shifted to the common coordinates.
    name: corrected
    neurodata_type_inc: ImageSeries
  - doc: Stores the x,y delta necessary to align each frame to the common coordinates,
      for example, to align each frame to a reference image.
    name: xy_translation
    neurodata_type_inc: TimeSeries
  links:
  - doc: HDF5 Link to image series that is being registered.
    name: original
    target_type: ImageSeries
  neurodata_type_def: CorrectedImageStack
  neurodata_type_inc: NWBContainer
  quantity: +
neurodata_type_def: MotionCorrection
neurodata_type_inc: NWBContainer

1.5.4.23. OpticalChannel

Extends: NWBContainer

Description: see Section 1.4.3.23

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
attributes:
- doc: Value is 'Metadata about an optical channel used to record from an imaging
    plane'
  dtype: text
  name: help
  value: Metadata about an optical channel used to record from an imaging plane
datasets:
- doc: Any notes or comments about the channel
  dtype: text
  name: description
- doc: Emission lambda for channel
  dtype: text
  name: emission_lambda
doc: 'One of possibly many groups storing channel-specific data COMMENT: Name is arbitrary
  but should be meaningful'
neurodata_type_def: OpticalChannel
neurodata_type_inc: NWBContainer

1.5.4.24. OptogeneticStimulusSite

Extends: NWBContainer

Description: see Section 1.4.3.24

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
attributes:
- doc: Value is 'Metadata about an optogenetic stimulus site'
  dtype: text
  name: help
  value: Metadata about an optogenetic stimulus site
datasets:
- doc: Description of site
  dtype: text
  name: description
- doc: Name of device in /general/devices
  dtype: text
  name: device
- doc: Excitation wavelength
  dtype: text
  name: excitation_lambda
- doc: Location of stimulation site
  dtype: text
  name: location
doc: 'One of possibly many groups describing an optogenetic stimuluation site. COMMENT:
  Name is arbitrary but should be meaningful. Name is referenced by OptogeneticSeries'
neurodata_type_def: OptogeneticStimulusSite
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.4.25. PlaneSegmentation

Extends: NWBContainer

Description: see Section 1.4.3.25

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
attributes:
- doc: Value is 'Results from segmentation of an imaging plane'
  dtype: text
  name: help
  value: Results from segmentation of an imaging plane
datasets:
- doc: Description of image plane, recording wavelength, depth, etc
  dtype: text
  name: description
  quantity: '?'
doc: Group name is human-readable description of imaging plane
groups:
- attributes:
  - doc: Value is 'Region of interest, as determined by image segmentation'
    dtype: text
    name: help
    value: Region of interest, as determined by image segmentation
  datasets:
  - dims:
    - num_x
    - num_y
    doc: ROI mask, represented in 2D ([y][x]) intensity image
    dtype: float32
    name: img_mask
    shape:
    - null
    - null
  - dims:
    - num_pixels
    - '2'
    doc: List of pixels (x,y) that compose the mask
    dtype: uint16
    name: pix_mask
    shape:
    - null
    - null
  - dims:
    - num_pixels
    doc: Weight of each pixel listed in pix_mask
    dtype: float32
    name: pix_mask_weight
    shape:
    - null
  - doc: Description of this ROI.
    dtype: text
    name: roi_description
  doc: Name of ROI
  neurodata_type_def: ROI
  neurodata_type_inc: NWBContainer
  quantity: '*'
- doc: Stores image stacks segmentation mask apply to.
  groups:
  - doc: One or more image stacks that the masks apply to (can be one-element stack)
    neurodata_type_inc: ImageSeries
  name: reference_images
links:
- doc: link to ImagingPlane group from which this TimeSeries data was generated
  name: imaging_plane
  target_type: ImagingPlane
neurodata_type_def: PlaneSegmentation
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.4.26. Position

Extends: NWBContainer

Description: see Section 1.4.3.26

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: Value is 'Position data, whether along the x, xy or xyz axis'
  dtype: text
  name: help
  value: Position data, whether along the x, xy or xyz axis
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: NWBContainer

1.5.4.27. PupilTracking

Extends: NWBContainer

Description: see Section 1.4.3.27

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: Value is 'Eye-tracking data, representing pupil size'
  dtype: text
  name: help
  value: Eye-tracking data, representing pupil size
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: NWBContainer

1.5.4.28. ROI

Extends: NWBContainer

Description: see Section 1.4.3.28

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
attributes:
- doc: Value is 'Region of interest, as determined by image segmentation'
  dtype: text
  name: help
  value: Region of interest, as determined by image segmentation
datasets:
- dims:
  - num_x
  - num_y
  doc: ROI mask, represented in 2D ([y][x]) intensity image
  dtype: float32
  name: img_mask
  shape:
  - null
  - null
- dims:
  - num_pixels
  - '2'
  doc: List of pixels (x,y) that compose the mask
  dtype: uint16
  name: pix_mask
  shape:
  - null
  - null
- dims:
  - num_pixels
  doc: Weight of each pixel listed in pix_mask
  dtype: float32
  name: pix_mask_weight
  shape:
  - null
- doc: Description of this ROI.
  dtype: text
  name: roi_description
doc: Name of ROI
neurodata_type_def: ROI
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.4.29. SpikeUnit

Extends: NWBContainer

Description: see Section 1.4.3.29

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
attributes:
- doc: Store times for a particulare UnitTime
  dtype: text
  name: help
  value: Times for a particular UnitTime object
datasets:
- dims:
  - num_events
  doc: Spike time for the units (exact or estimated)
  dtype: float64
  name: times
  shape:
  - null
- doc: Description of the unit (eg, cell type).
  dtype: text
  name: unit_description
doc: Group storing times for &lt;unit_N&gt;.
neurodata_type_def: SpikeUnit
neurodata_type_inc: NWBContainer
quantity: +

1.5.4.30. UnitTimes

Extends: NWBContainer

Description: see Section 1.4.3.30

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
attributes:
- doc: Value is 'Estimated spike times from a single unit'
  dtype: text
  name: help
  value: Estimated spike times from a single unit
default_name: UnitTimes
doc: Event times of observed units (e.g. cell, synapse, etc.). The UnitTimes group
  contains a group for each unit. The name of the group should match the value in
  the source module, if that is possible/relevant (e.g., name of ROIs from Segmentation
  module).
groups:
- attributes:
  - doc: Store times for a particulare UnitTime
    dtype: text
    name: help
    value: Times for a particular UnitTime object
  datasets:
  - dims:
    - num_events
    doc: Spike time for the units (exact or estimated)
    dtype: float64
    name: times
    shape:
    - null
  - doc: Description of the unit (eg, cell type).
    dtype: text
    name: unit_description
  doc: Group storing times for &lt;unit_N&gt;.
  neurodata_type_def: SpikeUnit
  neurodata_type_inc: NWBContainer
  quantity: +
neurodata_type_def: UnitTimes
neurodata_type_inc: NWBContainer

1.5.5. Other Types

1.5.5.1. NWBData

Description: see Section 1.4.4.1

YAML Specification:

1
2
3
4
5
6
attributes:
- doc: Short description of what this type of Interface contains.
  dtype: text
  name: help
doc: The attributes specified here are included in all interfaces.
neurodata_type_def: NWBData

1.5.5.2. Epoch

Extends: NWBContainer

Description: see Section 1.4.4.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
attributes:
- doc: Value is 'A general epoch object'
  dtype: text
  name: help
  value: A general epoch object
datasets:
- doc: Description of this epoch (&lt;epoch_X&gt;).
  dtype: text
  name: description
  quantity: '?'
- doc: Start time of epoch, in seconds
  dtype: float64
  name: start_time
- doc: Stop time of epoch, in seconds
  dtype: float64
  name: stop_time
- dims:
  - num_tags
  doc: 'User-defined tags used throughout the epochs. Tags are to help identify or
    categorize epochs. COMMENT: E.g., can describe stimulus (if template) or behavioral
    characteristic (e.g., "lick left")'
  dtype: text
  name: tags
  quantity: '?'
  shape:
  - null
doc: 'One of possibly many different experimental epochCOMMENT: Name is arbitrary
  but must be unique within the experiment.'
groups:
- attributes:
  - doc: Value is 'Data on how an epoch applies to a time series'
    dtype: text
    name: help
    value: Data on how an epoch applies to a time series
  datasets:
  - doc: Number of data samples available in this time series, during this epoch.
    dtype: int32
    name: count
  - doc: "Epoch's start index in TimeSeries data[] field. COMMENT: This can be used\
      \ to calculate location in TimeSeries timestamp[] field"
    dtype: int32
    name: idx_start
  doc: 'One of possibly many input or output streams recorded during epoch. COMMENT:
    Name is arbitrary and does not have to match the TimeSeries that it refers to.'
  links:
  - doc: Link to TimeSeries.  An HDF5 soft-link should be used.
    name: timeseries
    target_type: TimeSeries
  neurodata_type_def: EpochTimeSeries
  neurodata_type_inc: NWBContainer
  quantity: '*'
neurodata_type_def: Epoch
neurodata_type_inc: NWBContainer
quantity: '*'

1.5.5.3. NWBContainer

Description: see Section 1.4.4.3

YAML Specification:

1
2
3
4
5
6
7
8
9
attributes:
- doc: Short description of what this type of Interface contains.
  dtype: text
  name: help
- doc: Path to the origin of the data represented in this interface.
  dtype: text
  name: source
doc: The attributes specified here are included in all interfaces.
neurodata_type_def: NWBContainer

1.5.5.4. SpecFile

Description: see Section 1.4.4.4

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
attributes:
- default_value: Contents of format specification file.
  doc: A help statement
  dtype: text
  name: help
  required: false
- dims:
  - num_namespaces
  doc: Namespaces defined in the file
  dtype: text
  name: namespaces
  shape:
  - null
doc: Dataset for storing contents of a specification file for either the core format
  or an extension.  Name should match name of file.`
dtype: text
neurodata_type_def: SpecFile
quantity: '*'

1.5.5.5. ElectrodeGroup

Extends: NWBContainer

Description: see Section 1.4.4.5

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
attributes:
- doc: Value is 'Metadata about a physical grouping of channels'
  dtype: str
  name: help
  value: A physical grouping of channels
- doc: description of this electrode group
  dtype: text
  name: description
- doc: description of location of this electrode group
  dtype: text
  name: location
doc: One of possibly many groups, one for each electrode group.
links:
- doc: the device that was used to record from this electrode group
  name: device
  quantity: '?'
  target_type: Device
neurodata_type_def: ElectrodeGroup
neurodata_type_inc: NWBContainer

1.5.5.6. Device

Extends: NWBContainer

Description: see Section 1.4.4.6

YAML Specification:

1
2
3
4
5
6
7
8
attributes:
- doc: Value is 'A recording device e.g. amplifier'
  dtype: str
  name: help
  value: A recording device e.g. amplifier
doc: One of possibly many. Information about device and device description.
neurodata_type_def: Device
neurodata_type_inc: NWBContainer

1.5.5.7. ElectrodeTable

Extends: NWBData

Description: see Section 1.4.4.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
attributes:
- doc: Value is 'a table for storing data about extracellular electrodes'
  dtype: text
  name: help
  value: a table for storing data about extracellular electrodes
doc: a table for storing queryable information about electrodes in a single table
dtype:
- doc: a user-specified unique identifier
  dtype: int
  name: id
- doc: the x coordinate of the channels location
  dtype: float
  name: x
- doc: the y coordinate of the channels location
  dtype: float
  name: y
- doc: the z coordinate of the channels location
  dtype: float
  name: z
- doc: the impedance of the channel
  dtype: float
  name: imp
- doc: the location of channel within the subject e.g. brain region
  dtype: ascii
  name: location
- doc: description of hardware filtering
  dtype: ascii
  name: filtering
- doc: a brief description of what this electrode is
  dtype: utf8
  name: description
- doc: the name of the ElectrodeGroup this electrode is a part of
  dtype: ascii
  name: group
- doc: a reference to the ElectrodeGroup this electrode is a part of
  dtype:
    reftype: object
    target_type: ElectrodeGroup
  name: group_ref
neurodata_type_def: ElectrodeTable
neurodata_type_inc: NWBData

1.5.5.8. ElectrodeTableRegion

Extends: NWBData

Description: see Section 1.4.4.8

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
attributes:
- doc: a description of this subset of electrodes
  dtype: utf8
  name: description
- doc: Value is 'a subset (i.e. slice or region) of an ElectrodeTable'
  dtype: text
  name: help
  value: a subset (i.e. slice or region) of an ElectrodeTable
doc: a dataset for subsetting ElectrodeTables
dtype:
  reftype: region
  target_type: ElectrodeTable
neurodata_type_def: ElectrodeTableRegion
neurodata_type_inc: NWBData

1.5.5.9. Image

Description: see Section 1.4.4.9

YAML Specification:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
attributes:
- doc: 'Human description of image. COMMENT: If image is of slice data, include slice
    thickness and orientation, and reference to appropriate entry in /general/slices'
  dtype: text
  name: description
- doc: 'Format of the image.  COMMENT: eg, jpg, png, mpeg'
  dtype: text
  name: format
doc: 'Photograph of experiment or experimental setup (video also OK). COMMENT: Name
  is arbitrary.  Data is stored as a single binary object (HDF5 opaque type).'
dtype: binary
neurodata_type_def: Image
quantity: '*'

1.6. Release Notes: NWB Format

1.6.1. 2.0.0 Beta (November 2017)

1.6.1.1. Improved organization of electrode metadata in /general/extracellular_ephys

Change: Consolidate metadata from related electrodes (e.g., from a single device) in a single location.

Example: Previous versions of the format specified in /general/extracellular_ephys for each electrode a group <electrode_group_X> that stores 3 text datastes with a description, device name, and location, respectively. The main /general/extracellular_ephys group then contained in addition the following datasets:

  • electrode_group text array describing for each electrode_group (implicitly referenced by index) which device (shank, probe, tetrode, etc.) was used,
  • electrode_map array with the x,y,z locations of each electrode
  • filtering, i.e., a single string describing the filtering for all electrodes (even though each electrode might be from different devices), and iv),
  • impedance, i.e, a single text array for impedance (i.e., the user has to know which format the string has, e.g, a float or a tuple of floats for impedance ranges).

Reason:

  • Avoid explosion of the number of groups and datasets. For example, in the case of an ECoG grid with 128 channels one had to create 128 groups and corresponding datasets to store the required metadata about the electrodes using the original layout.
  • Simplify access to related metadata. E.g., access to metadata from all electrodes of a single device requires resolution of a potentially large number of implicit links and access to a large number of groups (one per electrode) and datasets.
  • Improve performance of metadata access operations. E.g., to access the location of all electrodes corresponding to a single recording in an <ElectricalSeries> in the original layout required iterating over a potentially large number of groups and datasets (one per electrode), hence, leading to a large number of small, independent read/write/seek operations, causing slow performance on common data accesses. Using the new layout, these kind of common data accesses can often be resolved via a single read/write
  • Ease maintenance, use, and development through consolidation of related metadata

Format Changes

  • Added specification of a new neurodata type <ElectrodeGroup> group. Each <ElectrodeGroup> contains the following datasets to describe the metadata of a set of related electrodes (e.g,. all electrodes from a single device):

    • description : text dataset (for the group)
    • device: Soft link to the device in /general/devices/
    • location: Text description of the location of the device
  • Added table-like dataset electrodes that consolidates all electrode-specific metadata. This is a 1D data array with a compound datatype, describing for each electrode:

    • id : a user-specified unique identifier
    • x, y, z : The floating point coordinate for the electrode
    • imp : the impedance of the channel
    • location : The location of channel within the subject e.g. brain region
    • filtering : Description of hardware filtering
    • description : Description of this electrode
    • group : The name of the ElectrodeGroup
    • group_ref : Object reference to the ElectrodeGroup object
  • Updated /general/extracellular_ephys as follows:

    • Replaced /general/extracellular_ephys/<electrode_group_X> group (and all its contents) with the new <ElectrodeGroup>
    • Removed /general/extracellular_ephys/electrode_map dataset. This information is now stored in the ElectrodeTable.
    • Removed /general/extracellular_ephys/electrode_group dataset. This information is now stored in <ElectrodeGroup>/device.
    • Removed /general/extracellular_ephys/impedance This information is now stored in the ElectrodeTable.
    • Removed /general/extracellular_ephys/filtering This information is now stored in the ElectrodeTable.

1.6.1.3. Added missing metadata

Change: Add a few missing metadata attributes/datasets.

Reason: Ease data interpretation, improve format consistency, and enable storage of additional metadata

Format Changes:

  • /general/devices text dataset becomes group with neurodata type Device to enable storage of more complex and structured metadata about devices (rather than just a single string)
  • Added attribute unit=Seconds to <EventDetection>/times dataset to explicitly describe time units and improve human and programmatic data interpretation
  • Added filtering dataset to type <IntracellularElectrode> (i.e., /general/intracellular_ephys/<electrode_X>) to enable specification of per-electrode filtering data
  • Added default values for <TimeSeries>/description and <TimeSeries>/comments

1.6.1.4. Improved identifiably of objects

Change: All groups and datasets are now required to either have a unique name or a unique neurodata_type defined.

Reason: This greatly simplifies the unique identification of objects with variable names.

Format Changes: Defined missing neurodata_types for a number of objects, e.g.,:

  • Group /general/optophysiology/<imaging_plane_X> now has the neurodata type ImagingPlane
  • Group /general/intracellular_ephys/<electrode_X> now has the neurodata type IntracellularElectrode
  • Group /general/optogenetics/<site_X> now has the neurodata type StimulusSite
  • ...

To enable identification of the type of objects, the neurodata_type is stored in HDF5 files as an attribute on the corresponding object (i.e., group or dataset). Also information about the namespace (e.g., the name and version) are stored as attributed to allow unique identification of the specification for storage objects.

1.6.1.5. Improved Consistency

Change: Rename objects (and add missing objects)

Reason: Improve consistency in the naming of data objects that store similar types of information in different places and ensure that the same kind of information is available.

Format Changes:

  • Added missing help attribute for <BehavioralTimeSeries> to improve consistency with other types as well as human data interpretation
  • Renamed dataset image_plan_name in <ImageSegmentation> to image_plane``to ensure consistency in naming with ``<TwoPhotonSeries>
  • Renamed dataset electrode_name in <PatchClampSeries> to electrode for consistency (and since the dataset is now a link, rather than a text name).
  • Renamed dataset electrode_idx in <FeatureExtraction> to electrode_group for consistency (and since the dataset is now a link to the <ElectrodeGroup>)
  • Renamed dataset electrode_idx in <ElectricalSeries> to electrode_group for consistency (and since the dataset is now a link to the <ElectrodeGroup>)

1.6.1.6. Improved governance and accessibility

Change: Updated release and documentation mechanisms for the NWB format specification

Reason: Improve governance, ease-of-use, extensibility, and accessibility of the NWB format specification

Specific Changes

  • The NWB format specification is now released in seperate Git repository
  • Format specifications are released as YAML files (rather than via Python .py file included in the API)
  • Organized core types into a set of smaller YAML files to ease overview and maintenance
  • Converted all documentation documents to Sphinx reStructuredText to improve portability, maintainability, deployment, and public access
  • Sphinx documentation for the format are auto-generated from the YAML sources to ensure consistency between the specification and documentation
  • The pyNWB API now provides dedicated data structured to interact with NWB specifications, enabling users programmatically access and generate format specifications

1.6.1.7. Improved organization of processed data

Change: Relaxed requirements and renamed core types used for storage of processed data.

Reason: Ease user intuition and provide greater flexibility for users.

Specific Changes: The following changes have been made to the organization of processed data:

  • Module has been renamed to ProcessingModule to avoid possible confusion and to clarify its purpose
  • Interface has been renamed to NWBContainer to avoid confusion and ease intuition
  • NWBContainer is now the base type of all main data group types in the NWB format, including TimeSeries. This also means that all group types now inherit the required help and source attribute from NWBContainer. A number of neurodata_types have been updated to add missing help (see https://github.com/NeurodataWithoutBorders/nwb-schema/pull/37/files for details)
  • With NWBContainer now being a general base class, this means is is now possible to define data processing types that directly inherit from TimeSeries.
  • All Interface types in the original format had fixed names. The fixed names have been replaced by specification of corresponding default names in the current format. This changes enables storage of multiple instances of the same analysis type in the same ProcessingModule by allowing users to customize the name of the data processing types, whereas in version 1.0.x only a single instance of each analysis could be stored in a ProcessingModule due to the requirement for fixed names.

1.6.1.8. NWBContainer and NWBData

As described above NWBContainer defines a common base type for all Groups with a neurodata_type in the format. Similarly, NWBData defines a common base type for all Datasets with a neurodata_type in the format.

1.6.1.9. Ancestry

Change: Removed the explicit specification of ancestry as an attribute as part of the format specification

Reason: 1) avoid redundant information as the ancestry is encoded in the inheritance of types, 2) ease maintenance, and 3) avoid possible inconsistencies between the ancestry attribute and the true ancestry (i.e., inheritance hierarchy) as defined by the spec.

Note The new specification API as part of PyNWB/FORM makes the ancestry still easily accessible to users. As the ancestry can be easily extracted from the spec, we currently do not write a separate ancestry attribute but this could be easily added if needed.

1.6.1.10. Specification language changes

Change: Numerous changes have been made to the specification language itself in NWB 2.0. Most changes to the specification language effect mainly how the format is specified, rather than the actual structure of the format. The changes that have implications on the format itself are described next. For an overview and discussion of the changes to the specification language see specification language release notes.

1.6.1.10.1. Specification of dataset dimensions

Change: Updated the specification of the dimensions of dataset

Reason: To simplify the specification of dimension of datasets and attribute

Format Changes:

  • The shape of various dataset is now specified explicitly for several datasets via the new shape key
  • The unit for values in a dataset are specified via an attribute on the dataset itself rather than via unit definitions in structs that are available only in the specification itself but not the format.
  • In some cases the length of a dimension was implicitly described by the length of structs describing the components of a dimension. This information is now explitily described in the shape of a dataset.
1.6.1.10.3. Removed datasets defined via autogen

Change Support for autogen has been removed from the specification language. After review of all datasets that were produced via autogen it was decided that all autogen datasets should be removed from the format.

Reason The main reasons for removal of autogen dataset is to ease use and maintance of NWB files by i) avoiding redundant storage of information (i.e., improve normalization of data) and ii) avoiding dependencies between data (i.e., datasets havging to be updated due to changes in other locations in a file).

Format Changes

  • Datasets/Attributes that have been removed due to redundant storage of the path of links stored in the same group:

    • IndexSeries/indexed_timeseries_path
    • RoiResponseSeries/segmentation_interface_path
    • ImageMaskSeries/masked_imageseries_path
    • ClusterWaveforms/clustering_interface_path
    • EventDetection/source_electricalseries_path
    • MotionCorrection/image_stack_name/original_path
    • NWBFile/epochs/epoch_X.links
  • Datasets//Attributes that have been removed because they stored only a list of groups/datasets (of a given type or property) in the current group.

    • Module.interfaces (now ProcessingModule)
    • ImageSegmentation/image_plane/roi_list
    • UnitTimes/unit_list
    • TimeSeries.extern_fields
    • TimeSeries.data_link
    • TimeSeries.timestamp_link
    • TimeSeries.missing_fields
  • Other datasets/attributes that have been removed to ease use and maintance because the data stored is redundant and can be easily extracted from the file:

    • NWBFile/epochs.tags
    • TimeSeries/num_samples
    • Clustering/cluster_nums
1.6.1.10.4. Removed 'neurodata\_type=Custom'

Change The 'neurodata\_type=Custom' has been removed.

Reason All additions of data should be governed by extensions. Custom datasets can be identified based on the specification, i.e., any objects that are not part of the specification are custom.

1.6.2. 1.0.6, April 8, 2017

Minor fixes:

  • Modify <IntervalSeries>/ documentation to use html entities for < and >.
  • Fix indentation of unit attribute data_type, and conversion attribute description in /general/optophysiology/<imaging_plane_X>/manifold.
  • Fix typos in <AnnotationSeries>/ conversion, resolution and unit attributes.
  • Update documentation for IndexSeries to reflect more general usage.
  • Change to all numerical version number to remove warning message when installing using setuptools.

1.6.3. 1.0.5i_beta, Dec 6, 2016

Removed some comments. Modify author string in info section.

1.6.4. 1.0.5h_beta, Nov 30, 2016

Add dimensions to /acquisition/images/<image_X>

1.6.5. 1.0.5g_beta, Oct 7, 2016

  • Replace group options: autogen: {"type": "create"} and "closed": True with "\_properties": {"create": True} and "\_properties": {"closed": True}. This was done to make the specification language more consistent by having these group properties specified in one place ("\_properties" dictionary).

1.6.6. 1.0.5f_beta, Oct 3, 2016

  • Minor fixes to allow validation of schema using json-schema specification in file meta-schema.py using utility check\_schema.py.

1.6.7. 1.0.5e_beta, Sept 22, 2016

  • Moved definition of <Module>/ out of /processing group to allow creating subclasses of Module. This is useful for making custom Module types that specified required interfaces. Example of this is in python-api/examples/create\_scripts/module-e.py and the extension it uses (extensions/e-module.py).
  • Fixed malformed html in nwb\_core.py documentation.
  • Changed html generated by doc\_tools.py to html5 and fixed so passes validation at https://validator.w3.org.

1.6.8. 1.0.5d_beta, Sept 6, 2016

  • Changed ImageSeries img_mask dimensions to: "dimensions": ["num\_y","num\_x"] to match description.

1.6.9. 1.0.5c_beta, Aug 17, 2016

  • Change IndexSeries to allow linking to any form of TimeSeries, not just an ImageSeries

1.6.10. 1.0.5b_beta, Aug 16, 2016

  • Make 'manifold' and 'reference\_frame' (under /general/optophysiology) recommended rather than required.
  • In all cases, allow subclasses of a TimeSeries to fulfill validation requirements when an instance of TimeSeries is required.
  • Change unit attributes in VoltageClampSeries series datasets from required to recommended.
  • Remove 'const'=True from TimeSeries attributes in AnnotationSeries and IntervalSeries.
  • Allow the base TimeSeries class to store multi-dimensional arrays in 'data'. A user is expected to describe the contents of ‘data’ in the comments and/or description fields.

1.6.11. 1.0.5a_beta, Aug 10, 2016

Expand class of Ids allowed in TimeSeries missing\_fields attribute to allow custom uses.

1.6.12. 1.0.5_beta Aug 2016

  • Allow subclasses to be used for merges instead of base class (specified by 'merge+' in format specification file).
  • Use 'neurodata\_type=Custom' to flag additions that are not describe by a schema.
  • Exclude TimeSeries timestamps and starting time from under /stimulus/templates

1.6.13. 1.0.4_beta June 2016

  • Generate documentation directly from format specification file.”
  • Change ImageSeries external\_file to an array.
  • Made TimeSeries description and comments recommended.

1.6.14. 1.0.3 April, 2016

  • Renamed "ISI\_Retinotopy" to "ISIRetinotopy"
  • Change ImageSeries external\_file to an array. Added attribute starting\_frame.
  • Added IZeroClampSeries.

1.6.15. 1.0.2 February, 2016

  • Fixed documentation error, updating 'neurodata\_version' to 'nwb\_version'
  • Created ISI\_Retinotopy interface
  • In ImageSegmentation module, moved pix\_mask::weight attribute to be its own dataset, named pix\_mask\_weight. Attribute proved inadequate for storing sufficiently large array data for some segments
  • Moved 'gain' field from Current/VoltageClampSeries to parent PatchClampSeries, due need of stimuli to sometimes store gain
  • Added Ken Harris to the Acknowledgements section

1.6.16. 1.0.1 October 7th, 2015

  • Added 'required' field to tables in the documentation, to indicate if group/dataset/attribute is required, standard or optional
  • Obsoleted 'file\_create\_date' attribute 'modification\_time' and made file\_create\_date a text array
  • Removed 'resistance\_compensation' from CurrentClampSeries due being duplicate of another field
  • Upgraded TwoPhotonSeries::imaging\_plane to be a required value
  • Removed 'tags' attribute to group ‘epochs’ as it was fully redundant with the 'epoch/tags' dataset
  • Added text to the documentation stating that specified sizes for integer values are recommended sizes, while sizes for floats are minimum sizes
  • Added text to the documentation stating that, if the TimeSeries::data::resolution attribute value is unknown then store a NaN
  • Declaring the following groups as required (this was implicit before)
acquisition/

\_ images/

\_ timeseries/

analysis/

epochs/

general/

processing/

stimulus/

\_ presentation/

\_ templates/

This is to ensure consistency between .nwb files, to provide a minimum expected structure, and to avoid confusion by having someone expect time series to be in places they’re not. I.e., if 'acquisition/timeseries' is not present, someone might reasonably expect that acquisition time series might reside in 'acquisition/'. It is also a subtle reminder about what the file is designed to store, a sort of built-in documentation. Subfolders in 'general/' are only to be included as needed. Scanning 'general/' should provide the user a quick idea what the experiment is about, so only domain-relevant subfolders should be present (e.g., 'optogenetics' and 'optophysiology'). There should always be a 'general/devices', but it doesn’t seem worth making it mandatory without making all subfolders mandatory here.

1.6.17. 1.0.0 September 28th, 2015

  • Convert document to .html
  • TwoPhotonSeries::imaging\_plane was upgraded to mandatory to help enforce inclusion of important metadata in the file.