NWB version 2ΒΆ

Recent NWB (version 2) schema specifications are tracked in a separate repository. The schema is implemented in version 2.2.0 (62c73400565afc28f67ede4f2e86023c33167cf8).

The complete schema tree is described in a hdmf compatible format and replicated in this repository under namespace/{schema}/{yaml,json}/*. The JSON files are stored in the nwb file upon storage. A build script exists to generate the JSON files from their YAML files: update_specifications.sh.

The following deviations from NWB schema 2.2.0 were recorded:

 ce4ff3351e9f3979e24f3620f5c3795e98556a58 ndx-MIES (v0.1.0~1)
 ade50ef33446beb3c7df4c6f1072ae0e821b5115 specifications (2.9.0)

# diff namespace core upstream vs IPNWB specifications for nwb.base
# diff namespace core upstream vs IPNWB specifications for nwb.behavior
# diff namespace core upstream vs IPNWB specifications for nwb.device
# diff namespace core upstream vs IPNWB specifications for nwb.ecephys
# diff namespace core upstream vs IPNWB specifications for nwb.epoch
# diff namespace core upstream vs IPNWB specifications for nwb.file
# diff namespace core upstream vs IPNWB specifications for nwb.icephys
# diff namespace core upstream vs IPNWB specifications for nwb.image
# diff namespace core upstream vs IPNWB specifications for nwb.misc
# diff namespace core upstream vs IPNWB specifications for nwb.namespace
2,60c2,63
< - name: core
<   doc: NWB namespace
<   author:
<   - Andrew Tritt
<   - Oliver Ruebel
<   - Ryan Ly
<   - Ben Dichter
<   - Keith Godfrey
<   - Jeff Teeters
<   contact:
<   - ajtritt@lbl.gov
<   - oruebel@lbl.gov
<   - rly@lbl.gov
<   - bdichter@lbl.gov
<   - keithg@alleninstitute.org
<   - jteeters@berkeley.edu
<   full_name: NWB core
<   schema:
<   - namespace: hdmf-common
<   - doc: This source module contains base data types used throughout the NWB data
<       format.
<     source: nwb.base.yaml
<     title: Base data types
<   - doc: This source module contains neurodata_types for device data.
<     source: nwb.device.yaml
<     title: Devices
<   - doc: This source module contains neurodata_types for epoch data.
<     source: nwb.epoch.yaml
<     title: Epochs
<   - doc: This source module contains neurodata_types for image data.
<     source: nwb.image.yaml
<     title: Image data
<   - doc: Main NWB file specification.
<     source: nwb.file.yaml
<     title: NWB file
<   - doc: Miscellaneous types.
<     source: nwb.misc.yaml
<     title: Miscellaneous neurodata_types.
<   - doc: This source module contains neurodata_types for behavior data.
<     source: nwb.behavior.yaml
<     title: Behavior
<   - doc: This source module contains neurodata_types for extracellular electrophysiology
<       data.
<     source: nwb.ecephys.yaml
<     title: Extracellular electrophysiology
<   - doc: This source module contains neurodata_types for intracellular electrophysiology
<       data.
<     source: nwb.icephys.yaml
<     title: Intracellular electrophysiology
<   - doc: This source module contains neurodata_types for opto-genetics data.
<     source: nwb.ogen.yaml
<     title: Optogenetics
<   - doc: This source module contains neurodata_types for optical physiology data.
<     source: nwb.ophys.yaml
<     title: Optical physiology
<   - doc: This source module contains neurodata_type for retinotopy data.
<     source: nwb.retinotopy.yaml
<     title: Retinotopy
<   version: "2.9.0"
---
>   - author:
>       - Andrew Tritt
>       - Oliver Ruebel
>       - Ryan Ly
>       - Ben Dichter
>       - Keith Godfrey
>       - Jeff Teeters
>
>     contact:
>       - ajtritt@lbl.gov
>       - oruebel@lbl.gov
>       - rly@lbl.gov
>       - bdichter@lbl.gov
>       - keithg@alleninstitute.org
>       - jteeters@berkeley.edu
>
>     doc: NWB namespace
>
>     full_name: NWB core
>
>     name: core
>
>     schema:
>       - namespace: hdmf-common
>       - doc: This source module contains base data types used throughout the NWB data format.
>         source: nwb.base
>         title: Base data types
>       - doc: This source module contains neurodata_types for device data.
>         source: nwb.device
>         title: Devices
>       - doc: This source module contains neurodata_types for epoch data.
>         source: nwb.epoch
>         title: Epochs
>       - doc: This source module contains neurodata_types for image data.
>         source: nwb.image
>         title: Image data
>       - doc: Main NWB file specification.
>         source: nwb.file
>         title: NWB file
>       - doc: Miscellaneous types.
>         source: nwb.misc
>         title: Miscellaneous neurodata_types.
>       - doc: This source module contains neurodata_types for behavior data.
>         source: nwb.behavior
>         title: Behavior
>       - doc: This source module contains neurodata_types for extracellular electrophysiology data.
>         source: nwb.ecephys
>         title: Extracellular electrophysiology
>       - doc: This source module contains neurodata_types for intracellular electrophysiology data.
>         source: nwb.icephys
>         title: Intracellular electrophysiology
>       - doc: This source module contains neurodata_types for opto-genetics data.
>         source: nwb.ogen
>         title: Optogenetics
>       - doc: This source module contains neurodata_types for optical physiology data.
>         source: nwb.ophys
>         title: Optical physiology
>       - doc: This source module contains neurodata_type for retinotopy data.
>         source: nwb.retinotopy
>         title: Retinotopy
>
>     version: 2.9.0
# diff namespace core upstream vs IPNWB specifications for nwb.ogen
# diff namespace core upstream vs IPNWB specifications for nwb.ophys
# diff namespace core upstream vs IPNWB specifications for nwb.retinotopy
# diff namespace hdmf-common upstream vs IPNWB specifications for base
# diff namespace hdmf-common upstream vs IPNWB specifications for experimental
# diff namespace hdmf-common upstream vs IPNWB specifications for namespace
1d0
< # hdmf-schema-language=2.0.2
3,26d1
< - name: hdmf-common
<   doc: Common data structures provided by HDMF
<   author:
<   - Andrew Tritt
<   - Oliver Ruebel
<   - Ryan Ly
<   - Ben Dichter
<   contact:
<   - ajtritt@lbl.gov
<   - oruebel@lbl.gov
<   - rly@lbl.gov
<   - bdichter@lbl.gov
<   full_name: HDMF Common
<   schema:
<   - doc: base data types
<     source: base.yaml
<     title: Base data types
<   - doc: data types for a column-based table
<     source: table.yaml
<     title: Table data types
<   - doc: data types for different types of sparse matrices
<     source: sparse.yaml
<     title: Sparse data types
<   version: 1.8.0
28,51c3,52
< - name: hdmf-experimental
<   doc: Experimental data structures provided by HDMF. These are not guaranteed to be available in the future.
<   author:
<   - Andrew Tritt
<   - Oliver Ruebel
<   - Ryan Ly
<   - Ben Dichter
<   - Matthew Avaylon
<   contact:
<   - ajtritt@lbl.gov
<   - oruebel@lbl.gov
<   - rly@lbl.gov
<   - bdichter@lbl.gov
<   - mavaylon@lbl.gov
<   full_name: HDMF Experimental
<   schema:
<   - namespace: hdmf-common
<   - doc: Experimental data types
<     source: experimental.yaml
<     title: Experimental data types
<   - doc: data types for storing references to web accessible resources
<     source: resources.yaml
<     title: Resource reference data types
<   version: 0.5.0
---
>   - author:
>       - Andrew Tritt
>       - Oliver Ruebel
>       - Ryan Ly
>       - Ben Dichter
>     contact:
>       - ajtritt@lbl.gov
>       - oruebel@lbl.gov
>       - rly@lbl.gov
>       - bdichter@lbl.gov
>     doc: Common data structures provided by HDMF
>     full_name: HDMF Common
>     name: hdmf-common
>     schema:
>       - doc: base data types
>         source: base
>         title: Base data types
>       - doc: data types for a column-based table
>         source: table
>         title: Table data types
>       - doc: data types for different types of sparse matrices
>         source: sparse
>         title: Sparse data types
>     version: 1.8.0
>
>   - author:
>       - Andrew Tritt
>       - Oliver Ruebel
>       - Ryan Ly
>       - Ben Dichter
>       - Matthew Avaylon
>     contact:
>       - ajtritt@lbl.gov
>       - oruebel@lbl.gov
>       - rly@lbl.gov
>       - bdichter@lbl.gov
>       - mavaylon@lbl.gov
>     doc: Experimental data structures provided by HDMF. These are not guaranteed to be available in the
>       future.
>     full_name: HDMF Experimental
>     name: hdmf-experimental
>     schema:
>       - namespace: hdmf-common
>       - doc: Experimental data types
>         source: experimental
>         title: Experimental data types
>       - doc: data types for storing references to web accessible resources
>         source: resources
>         title: Resource reference data types
>     version: 0.5.0
# diff namespace hdmf-common upstream vs IPNWB specifications for resources
# diff namespace hdmf-common upstream vs IPNWB specifications for sparse
# diff namespace hdmf-common upstream vs IPNWB specifications for table
# diff namespace ndx-mies upstream vs IPNWB specifications for namespace
# diff namespace ndx-mies upstream vs IPNWB specifications for ndx-mies.extensions

The most important core properties are for intracellular ephys.

groups:
- neurodata_type_def: PatchClampSeries
  neurodata_type_inc: TimeSeries
  doc: An abstract base class for patch-clamp data - stimulus or response,
    current or voltage.
  attributes:
  - name: stimulus_description
    dtype: text
    doc: Protocol/stimulus name for this patch-clamp dataset.
  - name: sweep_number
    dtype: uint32
    doc: Sweep number, allows to group different PatchClampSeries together.
    required: false
  datasets:
  - name: data
    dtype: numeric
    dims:
    - num_times
    shape:
    - null
    doc: Recorded voltage or current.
    attributes:
    - name: unit
      dtype: text
      doc: Base unit of measurement for working with the data. Actual stored values are
        not necessarily stored in these units. To access the data in these units,
        multiply 'data' by 'conversion' and add 'offset'.
  - name: gain
    dtype: float32
    doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).
    quantity: '?'
  links:
  - name: electrode
    target_type: IntracellularElectrode
    doc: Link to IntracellularElectrode object that describes the electrode that was
      used to apply or record this data.

- neurodata_type_def: CurrentClampSeries
  neurodata_type_inc: PatchClampSeries
  doc: Voltage data from an intracellular current-clamp recording. A
    corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is
    used to store the current injected.
  datasets:
  - name: data
    doc: Recorded voltage.
    attributes:
    - name: unit
      dtype: text
      value: volts
      doc: Base unit of measurement for working with the data. which is fixed to 'volts'.
        Actual stored values are not necessarily stored in these units. To access the data in these units,
        multiply 'data' by 'conversion' and add 'offset'.
  - name: bias_current
    dtype: float32
    doc: Bias current, in amps.
    quantity: '?'
  - name: bridge_balance
    dtype: float32
    doc: Bridge balance, in ohms.
    quantity: '?'
  - name: capacitance_compensation
    dtype: float32
    doc: Capacitance compensation, in farads.
    quantity: '?'

- neurodata_type_def: IZeroClampSeries
  neurodata_type_inc: CurrentClampSeries
  doc: Voltage data from an intracellular recording when all current
    and amplifier settings are off (i.e., CurrentClampSeries fields will be zero).
    There is no CurrentClampStimulusSeries associated with an IZero series because
    the amplifier is disconnected and no stimulus can reach the cell.
  attributes:
  - name: stimulus_description
    dtype: text
    doc: An IZeroClampSeries has no stimulus, so this attribute is automatically set to "N/A"
    value: N/A
  datasets:
  - name: bias_current
    dtype: float32
    value: 0.0
    doc: Bias current, in amps, fixed to 0.0.
  - name: bridge_balance
    dtype: float32
    value: 0.0
    doc: Bridge balance, in ohms, fixed to 0.0.
  - name: capacitance_compensation
    dtype: float32
    value: 0.0
    doc: Capacitance compensation, in farads, fixed to 0.0.

- neurodata_type_def: CurrentClampStimulusSeries
  neurodata_type_inc: PatchClampSeries
  doc: Stimulus current applied during current clamp recording.
  datasets:
  - name: data
    doc: Stimulus current applied.
    attributes:
    - name: unit
      dtype: text
      value: amperes
      doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
        Actual stored values are not necessarily stored in these units. To access the data in these units,
        multiply 'data' by 'conversion' and add 'offset'.

- neurodata_type_def: VoltageClampSeries
  neurodata_type_inc: PatchClampSeries
  doc: Current data from an intracellular voltage-clamp recording. A
    corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is
    used to store the voltage injected.
  datasets:
  - name: data
    doc: Recorded current.
    attributes:
    - name: unit
      dtype: text
      value: amperes
      doc: Base unit of measurement for working with the data. which is fixed to 'amperes'.
        Actual stored values are not necessarily stored in these units. To access the data in these units,
        multiply 'data' by 'conversion' and add 'offset'.
  - name: capacitance_fast
    dtype: float32
    doc: Fast capacitance, in farads.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: farads
      doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
  - name: capacitance_slow
    dtype: float32
    doc: Slow capacitance, in farads.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: farads
      doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'.
  - name: resistance_comp_bandwidth
    dtype: float32
    doc: Resistance compensation bandwidth, in hertz.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: hertz
      doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'.
  - name: resistance_comp_correction
    dtype: float32
    doc: Resistance compensation correction, in percent.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: percent
      doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'.
  - name: resistance_comp_prediction
    dtype: float32
    doc: Resistance compensation prediction, in percent.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: percent
      doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'.
  - name: whole_cell_capacitance_comp
    dtype: float32
    doc: Whole cell capacitance compensation, in farads.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: farads
      doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'.
  - name: whole_cell_series_resistance_comp
    dtype: float32
    doc: Whole cell series resistance compensation, in ohms.
    quantity: '?'
    attributes:
    - name: unit
      dtype: text
      value: ohms
      doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.

- neurodata_type_def: VoltageClampStimulusSeries
  neurodata_type_inc: PatchClampSeries
  doc: Stimulus voltage applied during a voltage clamp recording.
  datasets:
  - name: data
    doc: Stimulus voltage applied.
    attributes:
    - name: unit
      dtype: text
      value: volts
      doc: Base unit of measurement for working with the data. which is fixed to 'volts'.
        Actual stored values are not necessarily stored in these units. To access the data in these units,
        multiply 'data' by 'conversion' and add 'offset'.

- neurodata_type_def: IntracellularElectrode
  neurodata_type_inc: NWBContainer
  doc: An intracellular electrode and its metadata.
  datasets:
  - name: cell_id
    dtype: text
    doc: unique ID of the cell
    quantity: '?'
  - name: description
    dtype: text
    doc: Description of electrode (e.g.,  whole-cell, sharp, etc.).
  - name: filtering
    dtype: text
    doc: Electrode specific filtering.
    quantity: '?'
  - name: initial_access_resistance
    dtype: text
    doc: Initial access resistance.
    quantity: '?'
  - name: location
    dtype: text
    doc: Location of the electrode. Specify the area, layer, comments on estimation
      of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas
      names for anatomical regions when possible.
    quantity: '?'
  - name: resistance
    dtype: text
    doc: Electrode resistance, in ohms.
    quantity: '?'
  - name: seal
    dtype: text
    doc: Information about seal used for recording.
    quantity: '?'
  - name: slice
    dtype: text
    doc: Information about slice used for recording.
    quantity: '?'
  links:
  - name: device
    target_type: Device
    doc: Device that was used to record from this electrode.

- neurodata_type_def: SweepTable
  neurodata_type_inc: DynamicTable
  doc: '[DEPRECATED] Table used to group different PatchClampSeries. SweepTable
        is being replaced by IntracellularRecordingsTable and SimultaneousRecordingsTable
        tables. Additional SequentialRecordingsTable, RepetitionsTable, and
        ExperimentalConditions tables provide enhanced support for experiment metadata.'
  datasets:
  - name: sweep_number
    neurodata_type_inc: VectorData
    dtype: uint32
    doc: Sweep number of the PatchClampSeries in that row.
  - name: series
    neurodata_type_inc: VectorData
    dtype:
      target_type: PatchClampSeries
      reftype: object
    doc: The PatchClampSeries with the sweep number in that row.
  - name: series_index
    neurodata_type_inc: VectorIndex
    doc: Index for series.

- neurodata_type_def: IntracellularElectrodesTable
  neurodata_type_inc: DynamicTable
  doc: Table for storing intracellular electrode related metadata.
  attributes:
  - name: description
    dtype: text
    value: Table for storing intracellular electrode related metadata.
    doc: Description of what is in this dynamic table.
  datasets:
  - name: electrode
    neurodata_type_inc: VectorData
    dtype:
      target_type: IntracellularElectrode
      reftype: object
    doc: Column for storing the reference to the intracellular electrode.

- neurodata_type_def: IntracellularStimuliTable
  neurodata_type_inc: DynamicTable
  doc: Table for storing intracellular stimulus related metadata.
  attributes:
  - name: description
    dtype: text
    value: Table for storing intracellular stimulus related metadata.
    doc: Description of what is in this dynamic table.
  datasets:
  - name: stimulus
    neurodata_type_inc: TimeSeriesReferenceVectorData
    doc: Column storing the reference to the recorded stimulus for the recording (rows).
  - name: stimulus_template
    neurodata_type_inc: TimeSeriesReferenceVectorData
    doc: Column storing the reference to the stimulus template for the recording (rows).
    quantity: '?'

- neurodata_type_def: IntracellularResponsesTable
  neurodata_type_inc: DynamicTable
  doc: Table for storing intracellular response related metadata.
  attributes:
  - name: description
    dtype: text
    value: Table for storing intracellular response related metadata.
    doc: Description of what is in this dynamic table.
  datasets:
  - name: response
    neurodata_type_inc: TimeSeriesReferenceVectorData
    doc: Column storing the reference to the recorded response for the recording (rows)

- neurodata_type_def: IntracellularRecordingsTable
  neurodata_type_inc: AlignedDynamicTable
  name: intracellular_recordings
  doc: A table to group together a stimulus and response from a single electrode and
    a single simultaneous recording. Each row in the table represents a single recording
    consisting typically of a stimulus and a corresponding response. In some cases,
    however, only a stimulus or a response is recorded as part of an experiment.
    In this case, both the stimulus and response will point to the same TimeSeries
    while the idx_start and count of the invalid column will be set to -1, thus, indicating
    that no values have been recorded for the stimulus or response, respectively.
    Note, a recording MUST contain at least a stimulus or a response. Typically the
    stimulus and response are PatchClampSeries. However, the use of AD/DA channels
    that are not associated to an electrode is also common in intracellular electrophysiology,
    in which case other TimeSeries may be used.
  attributes:
  - name: description
    dtype: text
    value: A table to group together a stimulus and response from a single electrode
      and a single simultaneous recording and for storing metadata about the intracellular
      recording.
    doc: Description of the contents of this table. Inherited from AlignedDynamicTable
      and overwritten here to fix the value of the attribute.
  groups:
  - name: electrodes
    neurodata_type_inc: IntracellularElectrodesTable
    doc: Table for storing intracellular electrode related metadata.
  - name: stimuli
    neurodata_type_inc: IntracellularStimuliTable
    doc: Table for storing intracellular stimulus related metadata.
  - name: responses
    neurodata_type_inc: IntracellularResponsesTable
    doc: Table for storing intracellular response related metadata.

- neurodata_type_def: SimultaneousRecordingsTable
  neurodata_type_inc: DynamicTable
  name: simultaneous_recordings
  doc: A table for grouping different intracellular recordings from the IntracellularRecordingsTable
    table together that were recorded simultaneously from different electrodes.
  datasets:
  - name: recordings
    neurodata_type_inc: DynamicTableRegion
    doc: A reference to one or more rows in the IntracellularRecordingsTable table.
    attributes:
    - name: table
      dtype:
        target_type: IntracellularRecordingsTable
        reftype: object
      doc: Reference to the IntracellularRecordingsTable table that this table region
        applies to. This specializes the attribute inherited from DynamicTableRegion
        to fix the type of table that can be referenced here.
  - name: recordings_index
    neurodata_type_inc: VectorIndex
    doc: Index dataset for the recordings column.

- neurodata_type_def: SequentialRecordingsTable
  neurodata_type_inc: DynamicTable
  name: sequential_recordings
  doc: A table for grouping different sequential recordings from the SimultaneousRecordingsTable
    table together. This is typically used to group together sequential recordings
    where a sequence of stimuli of the same type with varying parameters have
    been presented in a sequence.
  datasets:
  - name: simultaneous_recordings
    neurodata_type_inc: DynamicTableRegion
    doc: A reference to one or more rows in the SimultaneousRecordingsTable table.
    attributes:
    - name: table
      dtype:
        target_type: SimultaneousRecordingsTable
        reftype: object
      doc: Reference to the SimultaneousRecordingsTable table that this table region
        applies to. This specializes the attribute inherited from DynamicTableRegion
        to fix the type of table that can be referenced here.
  - name: simultaneous_recordings_index
    neurodata_type_inc: VectorIndex
    doc: Index dataset for the simultaneous_recordings column.
  - name: stimulus_type
    neurodata_type_inc: VectorData
    dtype: text
    doc: The type of stimulus used for the sequential recording.

- neurodata_type_def: RepetitionsTable
  neurodata_type_inc: DynamicTable
  name: repetitions
  doc: A table for grouping different sequential intracellular recordings together.
    With each SequentialRecording typically representing a particular type of stimulus,
    the RepetitionsTable table is typically used to group sets of stimuli applied
    in sequence.
  datasets:
  - name: sequential_recordings
    neurodata_type_inc: DynamicTableRegion
    doc: A reference to one or more rows in the SequentialRecordingsTable table.
    attributes:
    - name: table
      dtype:
        target_type: SequentialRecordingsTable
        reftype: object
      doc: Reference to the SequentialRecordingsTable table that this table region
        applies to. This specializes the attribute inherited from DynamicTableRegion
        to fix the type of table that can be referenced here.
  - name: sequential_recordings_index
    neurodata_type_inc: VectorIndex
    doc: Index dataset for the sequential_recordings column.

- neurodata_type_def: ExperimentalConditionsTable
  neurodata_type_inc: DynamicTable
  name: experimental_conditions
  doc: A table for grouping different intracellular recording repetitions together
    that belong to the same experimental condition.
  datasets:
  - name: repetitions
    neurodata_type_inc: DynamicTableRegion
    doc: A reference to one or more rows in the RepetitionsTable table.
    attributes:
    - name: table
      dtype:
        target_type: RepetitionsTable
        reftype: object
      doc: Reference to the RepetitionsTable table that this table region applies
        to. This specializes the attribute inherited from DynamicTableRegion to fix
        the type of table that can be referenced here.
  - name: repetitions_index
    neurodata_type_inc: VectorIndex
    doc: Index dataset for the repetitions column.

The includes a Dynamic Table at /general/intracellular_ephys/sweep_table to store the sweep numbers of a list of data sets. The table is column centric and consists of the two columns sweep_number and series. Series contains links to datasets. The sweep_number for a dataset is stored under the same row index, specified either by the Dataset id (zero-based indices) or by series_index (one-based indices). The sweep_table is intended to easily find datasets that belong to a given sweep number. A sweep table is loaded by LoadSweepTable and created using AppendToSweepTable

The structure of the sweep table dataset.