diff --git a/core/nwb.base.yaml b/core/nwb.base.yaml index 5e96fab2..bbd05d95 100644 --- a/core/nwb.base.yaml +++ b/core/nwb.base.yaml @@ -148,11 +148,11 @@ groups: - name: continuity dtype: text doc: Optionally describe the continuity of the data. Can be "continuous", "instantaneous", or - "step". For example, a voltage trace would be "continuous", because samples - are recorded from a continuous process. An array of lick times would be "instantaneous", - because the data represents distinct moments in time. Times of image presentations would be - "step" because the picture remains the same until the next timepoint. This field is optional, - but is useful in providing information about the underlying data. It may inform the way this + "step". For example, a voltage trace would be "continuous", because samples + are recorded from a continuous process. An array of lick times would be "instantaneous", + because the data represents distinct moments in time. Times of image presentations would be + "step" because the picture remains the same until the next timepoint. This field is optional, + but is useful in providing information about the underlying data. It may inform the way this data is interpreted, the way it is visualized, and what analysis methods are applicable. required: false - name: starting_time @@ -234,7 +234,9 @@ groups: - neurodata_type_def: Images neurodata_type_inc: NWBDataInterface default_name: Images - doc: A collection of images. + doc: An collection of images with an optional way to specify the order of the images + using the "order_of_images" dataset. An order must be specified if the images are + referenced by index, e.g., from an IndexSeries. attributes: - name: description dtype: text @@ -243,3 +245,14 @@ groups: - neurodata_type_inc: Image doc: Images stored in this collection. quantity: '+' + - name: order_of_images + neurodata_type_inc: VectorData + dims: + - num_images + shape: + - null + dtype: + target_type: Image + reftype: object + doc: Ordered dataset of references to Image objects stored in the parent group. + quantity: '?' diff --git a/core/nwb.file.yaml b/core/nwb.file.yaml index e35ba165..ea1fb896 100644 --- a/core/nwb.file.yaml +++ b/core/nwb.file.yaml @@ -140,6 +140,9 @@ groups: - neurodata_type_inc: TimeSeries doc: TimeSeries objects containing template data of presented stimuli. quantity: '*' + - neurodata_type_inc: Images + doc: Images objects containing images of presented stimuli. + quantity: '*' - name: general doc: "Experimental metadata, including protocol, notes and description of hardware\ \ device(s). The metadata stored in this section should be used to\ diff --git a/core/nwb.image.yaml b/core/nwb.image.yaml index e791dd38..1a73fadc 100644 --- a/core/nwb.image.yaml +++ b/core/nwb.image.yaml @@ -178,20 +178,41 @@ groups: - neurodata_type_def: IndexSeries neurodata_type_inc: TimeSeries doc: Stores indices to image frames stored in an ImageSeries. The purpose of the - ImageIndexSeries is to allow a static image stack to be stored somewhere, and - the images in the stack to be referenced out-of-order. This can be for the display - of individual images, or of movie segments (as a movie is simply a series of images). - The data field stores the index of the frame in the referenced ImageSeries, and - the timestamps array indicates when that image was displayed. + IndexSeries is to allow a static image stack to be stored in an Images + object, 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 + Images object, and the timestamps array indicates when that image + was displayed. datasets: - name: data - dtype: int32 + dtype: uint32 dims: - num_times shape: - null - doc: Index of the frame in the referenced ImageSeries. + doc: Index of the image (using zero-indexing) in the linked Images object. + attributes: + - name: conversion + dtype: float32 + doc: This field is unused by IndexSeries. + required: false + - name: resolution + dtype: float32 + doc: This field is unused by IndexSeries. + required: false + - name: unit + dtype: text + value: N/A + doc: This field is unused by IndexSeries and has the value N/A. links: - name: indexed_timeseries target_type: ImageSeries - doc: Link to ImageSeries object containing images that are indexed. + doc: Link to ImageSeries object containing images that are indexed. Use of this link + is discouraged and will be deprecated. Link to an Images type instead. + quantity: '?' + - name: indexed_images + target_type: Images + doc: Link to Images object containing an ordered set of images that are indexed. The Images object + must contain a 'ordered_images' dataset specifying the order of the images in the Images type. + quantity: '?' diff --git a/docs/format/source/format_release_notes.rst b/docs/format/source/format_release_notes.rst index e77a3f2a..ac60b5bc 100644 --- a/docs/format/source/format_release_notes.rst +++ b/docs/format/source/format_release_notes.rst @@ -13,6 +13,17 @@ Major changes Minor changes ^^^^^^^^^^^^^ - Added an ``offset`` attribute to all ``TimeSeries`` objects to allow enhanced translation to scientific units. +- Allowed ``NWBFile/stimulus/templates`` to contain ``Images`` objects. (#459) +- Added new optional "order_of_images" dataset to ``Images`` that contains an ordered list of object references to + ``Image`` objects stored in the same ``Images`` object. This dataset must be used if the images are referred to + by index, e.g., from an ``IndexSeries`` object. (#459) +- Overhauled ``IndexSeries`` type (#459): + - Fixed dtype of ``data`` dataset of ``IndexSeries`` (int32 -> uint32). + - Updated ``unit`` attribute of ``data`` to have fixed value "N/A". + - Updated docstrings for the ``conversion`` and ``resolution`` attributes of ``data`` to indicate that + these fields are not used. + - Added link to an ``Images`` object, which contains an ordered collection of images. + Discouraged use of the ``indexed_timeseries`` link to an ``ImageSeries``. - Updated ``TimeIntervals`` to use the new ``TimeSeriesReferenceVectorData`` type. This does not alter the overall structure of ``TimeIntervals`` in a major way aside from changing the value of the ``neurodata_type`` attribute in the file from ``VectorData`` to ```TimeSeriesReferenceVectorData``. This change replaces the existing ``TimeIntervals.timeseries``