From a739a924b7dd8aab5562c06f0770b0a5c05e36b1 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 15:41:27 -0400 Subject: [PATCH 01/19] Add NWB Schema 2.3.0 --- nwb-schema/2.3.0/core/nwb.base.yaml | 216 +++++++++ nwb-schema/2.3.0/core/nwb.behavior.yaml | 116 +++++ nwb-schema/2.3.0/core/nwb.device.yaml | 14 + nwb-schema/2.3.0/core/nwb.ecephys.yaml | 333 +++++++++++++ nwb-schema/2.3.0/core/nwb.epoch.yaml | 44 ++ nwb-schema/2.3.0/core/nwb.file.yaml | 443 ++++++++++++++++++ nwb-schema/2.3.0/core/nwb.icephys.yaml | 252 ++++++++++ nwb-schema/2.3.0/core/nwb.image.yaml | 197 ++++++++ nwb-schema/2.3.0/core/nwb.misc.yaml | 329 +++++++++++++ nwb-schema/2.3.0/core/nwb.namespace.yaml | 60 +++ nwb-schema/2.3.0/core/nwb.ogen.yaml | 43 ++ nwb-schema/2.3.0/core/nwb.ophys.yaml | 326 +++++++++++++ nwb-schema/2.3.0/core/nwb.retinotopy.yaml | 234 +++++++++ .../2.3.0/hdmf-common-schema/common/base.yaml | 21 + .../common/experimental.yaml | 14 + .../hdmf-common-schema/common/namespace.yaml | 49 ++ .../hdmf-common-schema/common/resources.yaml | 85 ++++ .../hdmf-common-schema/common/sparse.yaml | 35 ++ .../hdmf-common-schema/common/table.yaml | 168 +++++++ 19 files changed, 2979 insertions(+) create mode 100644 nwb-schema/2.3.0/core/nwb.base.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.behavior.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.device.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.ecephys.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.epoch.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.file.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.icephys.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.image.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.misc.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.namespace.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.ogen.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.ophys.yaml create mode 100644 nwb-schema/2.3.0/core/nwb.retinotopy.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/base.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/experimental.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/namespace.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/resources.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/sparse.yaml create mode 100644 nwb-schema/2.3.0/hdmf-common-schema/common/table.yaml diff --git a/nwb-schema/2.3.0/core/nwb.base.yaml b/nwb-schema/2.3.0/core/nwb.base.yaml new file mode 100644 index 00000000..ee504508 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.base.yaml @@ -0,0 +1,216 @@ +datasets: +- neurodata_type_def: NWBData + neurodata_type_inc: Data + doc: An abstract data type for a dataset. + +- neurodata_type_def: Image + neurodata_type_inc: NWBData + dtype: numeric + dims: + - - x + - y + - - x + - y + - r, g, b + - - x + - y + - r, g, b, a + shape: + - - null + - null + - - null + - null + - 3 + - - null + - null + - 4 + doc: An abstract data type for an image. Shape can be 2-D (x, y), or 3-D where the + third dimension can have three or four elements, e.g. (x, y, (r, g, b)) or + (x, y, (r, g, b, a)). + attributes: + - name: resolution + dtype: float32 + doc: Pixel resolution of the image, in pixels per centimeter. + required: false + - name: description + dtype: text + doc: Description of the image. + required: false + +groups: +- neurodata_type_def: NWBContainer + neurodata_type_inc: Container + doc: An abstract data type for a generic container storing collections of data and + metadata. Base type for all data and metadata containers. + +- neurodata_type_def: NWBDataInterface + neurodata_type_inc: NWBContainer + doc: An abstract data type for a generic container storing collections of data, + as opposed to metadata. + +- neurodata_type_def: TimeSeries + neurodata_type_inc: NWBDataInterface + doc: General purpose time series. + attributes: + - name: description + dtype: text + default_value: no description + doc: Description of the time series. + required: false + - name: comments + dtype: text + default_value: no comments + doc: Human-readable comments about the TimeSeries. This second descriptive field + can be used to store additional information, or descriptive information if the + primary description field is populated with a computer-readable string. + required: false + datasets: + - name: data + dims: + - - num_times + - - num_times + - num_DIM2 + - - num_times + - num_DIM2 + - num_DIM3 + - - num_times + - num_DIM2 + - num_DIM3 + - num_DIM4 + shape: + - - null + - - null + - null + - - null + - null + - null + - - null + - null + - null + - null + doc: Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension + should always represent time. This can also be used to store binary data + (e.g., image frames). This can also be a link to data stored in an external file. + attributes: + - name: conversion + dtype: float32 + default_value: 1.0 + doc: Scalar to multiply each element in data to convert it to the specified 'unit'. + If the data are stored in acquisition system units or other units + that require a conversion to be interpretable, multiply the data by 'conversion' + to convert the data to the specified 'unit'. e.g. if the data acquisition system + stores values in this object as signed 16-bit integers (int16 range + -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data + acquisition system gain is 8000X, then the 'conversion' multiplier to get from + raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + required: false + - name: resolution + dtype: float32 + default_value: -1.0 + doc: Smallest meaningful difference between values in data, stored in the specified + by unit, e.g., the change in value of the least significant bit, or a larger + number if signal noise is known to be present. If unknown, use -1.0. + required: false + - name: unit + dtype: text + doc: Base unit of measurement for working with the data. Actual stored values are + not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + - name: 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 + data is interpreted, the way it is visualized, and what analysis methods are applicable. + required: false + - name: starting_time + dtype: float64 + doc: Timestamp of the first sample in seconds. When timestamps are uniformly + spaced, the timestamp of the first sample can be specified and all subsequent + ones calculated from the sampling rate attribute. + quantity: '?' + attributes: + - name: rate + dtype: float32 + doc: Sampling rate, in Hz. + - name: unit + dtype: text + value: seconds + doc: Unit of measurement for time, which is fixed to 'seconds'. + - name: timestamps + dtype: float64 + dims: + - num_times + shape: + - null + doc: Timestamps for samples stored in data, in seconds, relative to the + common experiment master-clock stored in NWBFile.timestamps_reference_time. + quantity: '?' + attributes: + - name: interval + dtype: int32 + value: 1 + doc: Value is '1' + - name: unit + dtype: text + value: seconds + doc: Unit of measurement for timestamps, which is fixed to 'seconds'. + - name: control + dtype: uint8 + dims: + - num_times + shape: + - null + doc: Numerical labels that apply to each time point in data for the purpose of + querying and slicing data by these values. If present, the length of this + array should be the same size as the first dimension of data. + quantity: '?' + - name: control_description + dtype: text + dims: + - num_control_values + shape: + - null + doc: Description of each control value. Must be present if control is present. + If present, control_description[0] should describe time points where control == 0. + quantity: '?' + groups: + - name: sync + doc: Lab-specific time and sync information as provided directly from hardware + devices and that is necessary for aligning all acquired time information to + a common timebase. The timestamp array stores time in the common timebase. + This group will usually only be populated in TimeSeries that are + stored external to the NWB file, in files storing raw data. Once timestamp + data is calculated, the contents of 'sync' are mostly for archival purposes. + quantity: '?' + +- neurodata_type_def: ProcessingModule + neurodata_type_inc: NWBContainer + doc: A collection of processed data. + attributes: + - name: description + dtype: text + doc: Description of this collection of processed data. + groups: + - neurodata_type_inc: NWBDataInterface + doc: Data objects stored in this collection. + quantity: '*' + - neurodata_type_inc: DynamicTable + doc: Tables stored in this collection. + quantity: '*' + +- neurodata_type_def: Images + neurodata_type_inc: NWBDataInterface + default_name: Images + doc: A collection of images. + attributes: + - name: description + dtype: text + doc: Description of this collection of images. + datasets: + - neurodata_type_inc: Image + doc: Images stored in this collection. + quantity: '+' diff --git a/nwb-schema/2.3.0/core/nwb.behavior.yaml b/nwb-schema/2.3.0/core/nwb.behavior.yaml new file mode 100644 index 00000000..300b48db --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.behavior.yaml @@ -0,0 +1,116 @@ +groups: +- neurodata_type_def: SpatialSeries + neurodata_type_inc: TimeSeries + doc: "Direction, e.g., of gaze or travel, or position. The TimeSeries::data field\ + \ is a 2D array storing position or direction relative to some reference frame.\ + \ Array structure: [num measurements] [num dimensions]. Each SpatialSeries has\ + \ a text dataset reference_frame that indicates the zero-position, or the zero-axes\ + \ for direction. For example, if representing gaze direction, 'straight-ahead'\ + \ might be a specific pixel on the monitor, or some other point in space. For\ + \ position data, the 0,0 point might be the top-left corner of an enclosure, as\ + \ viewed from the tracking camera. The unit of data will indicate how to interpret\ + \ SpatialSeries values." + datasets: + - name: data + dtype: numeric + dims: + - - num_times + - - num_times + - num_features + shape: + - - null + - - null + - null + doc: 1-D or 2-D array storing position or direction relative to some reference frame. + attributes: + - name: unit + dtype: text + default_value: meters + doc: Base unit of measurement for working with the data. The default value + is 'meters'. Actual stored values are not necessarily stored in these units. + To access the data in these units, multiply 'data' by 'conversion'. + required: false + - name: reference_frame + dtype: text + doc: Description defining what exactly 'straight-ahead' means. + quantity: '?' + +- neurodata_type_def: BehavioralEpochs + neurodata_type_inc: NWBDataInterface + default_name: BehavioralEpochs + doc: TimeSeries for storing behavioral epochs. The objective of this and the other + two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is + to provide generic hooks for software tools/scripts. This allows a tool/script + to take the output one specific interface (e.g., UnitTimes) and plot that data + relative to another data modality (e.g., behavioral events) without having to + define all possible modalities in advance. Declaring one of these interfaces means + that one or more TimeSeries of the specified type is published. These TimeSeries + should reside in a group having the same name as the interface. For example, if + a BehavioralTimeSeries interface is declared, the module will have one or more + TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs + should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries + is for continuous data. + groups: + - neurodata_type_inc: IntervalSeries + doc: IntervalSeries object containing start and stop times of epochs. + quantity: '*' + +- neurodata_type_def: BehavioralEvents + neurodata_type_inc: NWBDataInterface + default_name: BehavioralEvents + doc: TimeSeries for storing behavioral events. See description of BehavioralEpochs + for more details. + groups: + - neurodata_type_inc: TimeSeries + doc: TimeSeries object containing behavioral events. + quantity: '*' + +- neurodata_type_def: BehavioralTimeSeries + neurodata_type_inc: NWBDataInterface + default_name: BehavioralTimeSeries + doc: TimeSeries for storing Behavoioral time series data. See description of BehavioralEpochs + for more details. + groups: + - neurodata_type_inc: TimeSeries + doc: TimeSeries object containing continuous behavioral data. + quantity: '*' + +- neurodata_type_def: PupilTracking + neurodata_type_inc: NWBDataInterface + default_name: PupilTracking + doc: Eye-tracking data, representing pupil size. + groups: + - neurodata_type_inc: TimeSeries + doc: TimeSeries object containing time series data on pupil size. + quantity: '+' + +- neurodata_type_def: EyeTracking + neurodata_type_inc: NWBDataInterface + default_name: EyeTracking + doc: Eye-tracking data, representing direction of gaze. + groups: + - neurodata_type_inc: SpatialSeries + doc: SpatialSeries object containing data measuring direction of gaze. + quantity: '*' + +- neurodata_type_def: CompassDirection + neurodata_type_inc: NWBDataInterface + default_name: CompassDirection + doc: With a CompassDirection interface, a module publishes a SpatialSeries object + representing a floating point value for theta. The SpatialSeries::reference_frame + field should indicate what direction corresponds to 0 and which is the direction + of rotation (this should be clockwise). The si_unit for the SpatialSeries should + be radians or degrees. + groups: + - neurodata_type_inc: SpatialSeries + doc: SpatialSeries object containing direction of gaze travel. + quantity: '*' + +- neurodata_type_def: Position + neurodata_type_inc: NWBDataInterface + default_name: Position + doc: Position data, whether along the x, x/y or x/y/z axis. + groups: + - neurodata_type_inc: SpatialSeries + doc: SpatialSeries object containing position data. + quantity: '+' diff --git a/nwb-schema/2.3.0/core/nwb.device.yaml b/nwb-schema/2.3.0/core/nwb.device.yaml new file mode 100644 index 00000000..d883e59a --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.device.yaml @@ -0,0 +1,14 @@ +groups: +- neurodata_type_def: Device + neurodata_type_inc: NWBContainer + doc: Metadata about a data acquisition device, e.g., recording system, electrode, microscope. + attributes: + - name: description + dtype: text + doc: Description of the device (e.g., model, firmware version, processing software version, etc.) + as free-form text. + required: false + - name: manufacturer + dtype: text + doc: The name of the manufacturer of the device. + required: false diff --git a/nwb-schema/2.3.0/core/nwb.ecephys.yaml b/nwb-schema/2.3.0/core/nwb.ecephys.yaml new file mode 100644 index 00000000..40dbf5a2 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.ecephys.yaml @@ -0,0 +1,333 @@ +groups: +- neurodata_type_def: ElectricalSeries + neurodata_type_inc: TimeSeries + doc: A time series of acquired voltage data from extracellular recordings. + The data field is an int or float array storing data in volts. The first + dimension should always represent time. The second dimension, if present, + should represent channels. + attributes: + - name: filtering + dtype: text + doc: Filtering applied to all channels of the data. For example, if this ElectricalSeries represents + high-pass-filtered data (also known as AP Band), then this value could be "High-pass 4-pole Bessel filter + at 500 Hz". If this ElectricalSeries represents low-pass-filtered LFP data and the type of filter is unknown, + then this value could be "Low-pass filter at 300 Hz". If a non-standard filter type is used, provide as much + detail about the filter properties as possible. + required: false + datasets: + - name: data + dtype: numeric + dims: + - - num_times + - - num_times + - num_channels + - - num_times + - num_channels + - num_samples + shape: + - - null + - - null + - null + - - null + - null + - null + doc: Recorded voltage data. + attributes: + - name: unit + dtype: text + value: volts + doc: Base unit of measurement for working with the data. This value is fixed to + 'volts'. Actual stored values are not necessarily stored in these units. To + access the data in these units, multiply 'data' by 'conversion' and + 'channel_conversion' (if present). + - name: electrodes + neurodata_type_inc: DynamicTableRegion + doc: DynamicTableRegion pointer to the electrodes that this time series was generated from. + - name: channel_conversion + dtype: float32 + dims: + - num_channels + shape: + - null + doc: Channel-specific conversion factor. Multiply the data in the 'data' dataset by these + values along the channel axis (as indicated by axis attribute) AND by the global + conversion factor in the 'conversion' attribute of 'data' to get the data values in + Volts, i.e, data in Volts = data * data.conversion * channel_conversion. This + approach allows for both global and per-channel data conversion factors needed + to support the storage of electrical recordings as native values generated by data + acquisition systems. If this dataset is not present, then there is no channel-specific + conversion factor, i.e. it is 1 for all channels. + quantity: '?' + attributes: + - name: axis + dtype: int32 + value: 1 + doc: The zero-indexed axis of the 'data' dataset that the channel-specific conversion + factor corresponds to. This value is fixed to 1. + +- neurodata_type_def: SpikeEventSeries + neurodata_type_inc: ElectricalSeries + doc: "Stores snapshots/snippets of recorded spike events (i.e., threshold crossings). This + may also be raw data, as reported by ephys hardware. If so, the TimeSeries::description + field should describe how events were detected. All SpikeEventSeries should + reside in a module (under EventWaveform interface) even if the spikes were reported + and stored by hardware. All events span the same recording channels and store + snapshots of equal duration. TimeSeries::data array structure: [num events] + [num channels] [num samples] (or [num events] [num samples] for single electrode)." + datasets: + - name: data + dtype: numeric + dims: + - - num_events + - num_samples + - - num_events + - num_channels + - num_samples + shape: + - - null + - null + - - null + - null + - null + doc: Spike waveforms. + attributes: + - name: unit + dtype: text + value: volts + doc: Unit of measurement for waveforms, which is fixed to 'volts'. + - name: timestamps + dtype: float64 + dims: + - num_times + shape: + - null + doc: Timestamps for samples stored in data, in seconds, relative to the + common experiment master-clock stored in NWBFile.timestamps_reference_time. + Timestamps are required for the events. Unlike for TimeSeries, timestamps are + required for SpikeEventSeries and are thus re-specified here. + attributes: + - name: interval + dtype: int32 + value: 1 + doc: Value is '1' + - name: unit + dtype: text + value: seconds + doc: Unit of measurement for timestamps, which is fixed to 'seconds'. + +- neurodata_type_def: FeatureExtraction + neurodata_type_inc: NWBDataInterface + default_name: FeatureExtraction + doc: Features, such as PC1 and PC2, that are extracted from signals stored in a + SpikeEventSeries or other source. + datasets: + - name: description + dtype: text + dims: + - num_features + shape: + - null + doc: Description of features (eg, ''PC1'') for each of the extracted features. + - name: features + dtype: float32 + dims: + - num_events + - num_channels + - num_features + shape: + - null + - null + - null + doc: Multi-dimensional array of features extracted from each event. + - name: times + dtype: float64 + dims: + - num_events + shape: + - null + doc: Times of events that features correspond to (can be a link). + - name: electrodes + neurodata_type_inc: DynamicTableRegion + doc: DynamicTableRegion pointer to the electrodes that this time series was generated from. + +- neurodata_type_def: EventDetection + neurodata_type_inc: NWBDataInterface + default_name: EventDetection + doc: Detected spike events from voltage trace(s). + datasets: + - name: detection_method + dtype: text + doc: Description of how events were detected, such as voltage threshold, or dV/dT + threshold, as well as relevant values. + - name: source_idx + dtype: int32 + dims: + - num_events + shape: + - null + doc: Indices (zero-based) into source ElectricalSeries::data array corresponding + to time of event. ''description'' should define what is meant by time of + event (e.g., .25 ms before action potential peak, zero-crossing time, etc). + The index points to each event from the raw data. + - name: times + dtype: float64 + dims: + - num_events + shape: + - null + doc: Timestamps of events, in seconds. + attributes: + - name: unit + dtype: text + value: seconds + doc: Unit of measurement for event times, which is fixed to 'seconds'. + links: + - name: source_electricalseries + target_type: ElectricalSeries + doc: Link to the ElectricalSeries that this data was calculated from. Metadata + about electrodes and their position can be read from that ElectricalSeries so + it's not necessary to include that information here. + +- neurodata_type_def: EventWaveform + neurodata_type_inc: NWBDataInterface + default_name: EventWaveform + doc: Represents either the waveforms of detected events, as extracted from a raw + data trace in /acquisition, or the event waveforms that were stored during experiment + acquisition. + groups: + - neurodata_type_inc: SpikeEventSeries + doc: SpikeEventSeries object(s) containing detected spike event waveforms. + quantity: '*' + +- neurodata_type_def: FilteredEphys + neurodata_type_inc: NWBDataInterface + default_name: FilteredEphys + doc: Electrophysiology data from one or more channels that has been subjected to filtering. + Examples of filtered data include Theta and Gamma (LFP has its own interface). + FilteredEphys modules publish an ElectricalSeries for each filtered channel or + set of channels. The name of each ElectricalSeries is arbitrary but should be + informative. The source of the filtered data, whether this is from analysis of + another time series or as acquired by hardware, should be noted in each's TimeSeries::description + field. There is no assumed 1::1 correspondence between filtered ephys signals + and electrodes, as a single signal can apply to many nearby electrodes, and one + electrode may have different filtered (e.g., theta and/or gamma) signals represented. + Filter properties should be noted in the ElectricalSeries 'filtering' attribute. + groups: + - neurodata_type_inc: ElectricalSeries + doc: ElectricalSeries object(s) containing filtered electrophysiology data. + quantity: '+' + +- neurodata_type_def: LFP + neurodata_type_inc: NWBDataInterface + default_name: LFP + doc: LFP data from one or more channels. The electrode map in each published ElectricalSeries + will identify which channels are providing LFP data. Filter properties should + be noted in the ElectricalSeries 'filtering' attribute. + groups: + - neurodata_type_inc: ElectricalSeries + doc: ElectricalSeries object(s) containing LFP data for one or more channels. + quantity: '+' + +- neurodata_type_def: ElectrodeGroup + neurodata_type_inc: NWBContainer + doc: A physical grouping of electrodes, e.g. a shank of an array. + attributes: + - name: description + dtype: text + doc: Description of this electrode group. + - name: location + dtype: text + doc: Location of electrode group. Specify the area, layer, comments on estimation + of area/layer, etc. Use standard atlas names for anatomical regions when possible. + datasets: + - name: position + dtype: + - name: x + dtype: float32 + doc: x coordinate + - name: y + dtype: float32 + doc: y coordinate + - name: z + dtype: float32 + doc: z coordinate + doc: stereotaxic or common framework coordinates + quantity: '?' + links: + - name: device + target_type: Device + doc: Link to the device that was used to record from this electrode group. + +# The types below have been deprecated +- neurodata_type_def: ClusterWaveforms + neurodata_type_inc: NWBDataInterface + default_name: ClusterWaveforms + doc: DEPRECATED The mean waveform shape, including standard deviation, of the different + clusters. Ideally, the waveform analysis should be performed on data that is only + high-pass filtered. This is a separate module because it is expected to require + updating. For example, IMEC probes may require different storage requirements + to store/display mean waveforms, requiring a new interface or an extension of + this one. + datasets: + - name: waveform_filtering + dtype: text + doc: Filtering applied to data before generating mean/sd + - name: waveform_mean + dtype: float32 + dims: + - num_clusters + - num_samples + shape: + - null + - null + doc: The mean waveform for each cluster, using the same indices for each wave + as cluster numbers in the associated Clustering module (i.e, cluster 3 is in + array slot [3]). Waveforms corresponding to gaps in cluster sequence should + be empty (e.g., zero- filled) + - name: waveform_sd + dtype: float32 + dims: + - num_clusters + - num_samples + shape: + - null + - null + doc: Stdev of waveforms for each cluster, using the same indices as in mean + links: + - name: clustering_interface + target_type: Clustering + doc: Link to Clustering interface that was the source of the clustered data + +- neurodata_type_def: Clustering + neurodata_type_inc: NWBDataInterface + default_name: Clustering + doc: DEPRECATED Clustered spike data, whether from automatic clustering tools (e.g., + klustakwik) or as a result of manual sorting. + datasets: + - name: description + dtype: text + doc: Description of clusters or clustering, (e.g. cluster 0 is noise, clusters + curated using Klusters, etc) + - name: num + dtype: int32 + dims: + - num_events + shape: + - null + doc: Cluster number of each event + - name: peak_over_rms + dtype: float32 + dims: + - num_clusters + shape: + - null + doc: Maximum ratio of waveform peak to RMS on any channel in the cluster (provides + a basic clustering metric). + - name: times + dtype: float64 + dims: + - num_events + shape: + - null + doc: Times of clustered events, in seconds. This may be a link to times field + in associated FeatureExtraction module. diff --git a/nwb-schema/2.3.0/core/nwb.epoch.yaml b/nwb-schema/2.3.0/core/nwb.epoch.yaml new file mode 100644 index 00000000..c4164691 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.epoch.yaml @@ -0,0 +1,44 @@ +groups: +- neurodata_type_def: TimeIntervals + neurodata_type_inc: DynamicTable + doc: A container for aggregating epoch data and the TimeSeries that each epoch applies + to. + datasets: + - name: start_time + neurodata_type_inc: VectorData + dtype: float32 + doc: Start time of epoch, in seconds. + - name: stop_time + neurodata_type_inc: VectorData + dtype: float32 + doc: Stop time of epoch, in seconds. + - name: tags + neurodata_type_inc: VectorData + dtype: text + doc: User-defined tags that identify or categorize events. + quantity: '?' + - name: tags_index + neurodata_type_inc: VectorIndex + doc: Index for tags. + quantity: '?' + - name: timeseries + neurodata_type_inc: VectorData + dtype: + - name: idx_start + dtype: int32 + doc: Start index into the TimeSeries 'data' and 'timestamp' datasets of the + referenced TimeSeries. The first dimension of those arrays is always time. + - name: count + dtype: int32 + doc: Number of data samples available in this time series, during this epoch. + - name: timeseries + dtype: + target_type: TimeSeries + reftype: object + doc: the TimeSeries that this index applies to. + doc: An index into a TimeSeries object. + quantity: '?' + - name: timeseries_index + neurodata_type_inc: VectorIndex + doc: Index for timeseries. + quantity: '?' diff --git a/nwb-schema/2.3.0/core/nwb.file.yaml b/nwb-schema/2.3.0/core/nwb.file.yaml new file mode 100644 index 00000000..e416964a --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.file.yaml @@ -0,0 +1,443 @@ +groups: +- neurodata_type_def: NWBFile + neurodata_type_inc: NWBContainer + name: root + doc: An NWB:N file storing cellular-based neurophysiology data from a single + experimental session. + attributes: + - name: nwb_version + dtype: text + value: "2.3.0" + doc: File version string. Use semantic versioning, e.g. 1.2.1. This will be the + name of the format with trailing major, minor and patch numbers. + datasets: + - name: file_create_date + dtype: isodatetime + dims: + - num_modifications + shape: + - null + doc: 'A record of the date the file was created and of subsequent modifications. + The date is stored in UTC with local timezone offset as ISO 8601 + extended formatted strings: 2018-09-28T14:43:54.123+02:00. Dates stored in + UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds. + The file can be created after the experiment was run, so this may differ from + the experiment start time. Each modification to the nwb file adds a new entry + to the array.' + - name: identifier + dtype: text + doc: A unique text identifier for the file. For example, concatenated lab name, + file creation date/time and experimentalist, or a hash of these and/or other + values. The goal is that the string should be unique to all other files. + - name: session_description + dtype: text + doc: A description of the experimental session and data in the file. + - name: session_start_time + dtype: isodatetime + doc: 'Date and time of the experiment/session start. The date is stored + in UTC with local timezone offset as ISO 8601 extended formatted string: + 2018-09-28T14:43:54.123+02:00. + Dates stored in UTC end in "Z" with no timezone offset. Date accuracy is + up to milliseconds.' + - name: timestamps_reference_time + dtype: isodatetime + doc: 'Date and time corresponding to time zero of all timestamps. The + date is stored in UTC with local timezone offset as ISO 8601 extended formatted + string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with + no timezone offset. Date accuracy is up to milliseconds. All times stored + in the file use this time as reference (i.e., time zero).' + groups: + - name: acquisition + doc: Data streams recorded from the system, including ephys, ophys, tracking, + etc. This group should be read-only after the experiment is completed and + timestamps are corrected to a common timebase. The data stored here may be links + to raw data stored in external NWB files. This will allow keeping bulky raw + data out of the file while preserving the option of keeping some/all in the + file. Acquired data includes tracking and experimental data streams + (i.e., everything measured from the system). If bulky data is stored in the /acquisition + group, the data can exist in a separate NWB file that is linked to by the file + being used for processing and analysis. + groups: + - neurodata_type_inc: NWBDataInterface + doc: Acquired, raw data. + quantity: '*' + - neurodata_type_inc: DynamicTable + doc: Tabular data that is relevent to acquisition + quantity: '*' + - name: analysis + doc: Lab-specific and custom scientific analysis of data. There is no defined + format for the content of this group - the format is up to the individual user/lab. + To facilitate sharing analysis data between labs, the contents here + should be stored in standard types (e.g., neurodata_types) and appropriately documented. + The file can store lab-specific and custom data analysis without + restriction on its form or schema, reducing data formatting restrictions on + end users. Such data should be placed in the analysis group. The analysis data + should be documented so that it could be shared with other labs. + groups: + - neurodata_type_inc: NWBContainer + doc: Custom analysis results. + quantity: '*' + - neurodata_type_inc: DynamicTable + doc: Tabular data that is relevent to data stored in analysis + quantity: '*' + - name: scratch + doc: 'A place to store one-off analysis results. Data placed here is not intended for + sharing. By placing data here, users acknowledge that there is no guarantee that + their data meets any standard.' + quantity: '?' + groups: + - neurodata_type_inc: NWBContainer + doc: Any one-off containers + quantity: '*' + - neurodata_type_inc: DynamicTable + doc: Any one-off tables + quantity: '*' + datasets: + - neurodata_type_inc: ScratchData + doc: Any one-off datasets + quantity: '*' + - name: processing + doc: "The home for ProcessingModules. These modules perform intermediate analysis\ + \ of data that is necessary to perform before scientific analysis. Examples\ + \ include spike clustering, extracting position from tracking data, stitching\ + \ together image slices. ProcessingModules can be large\ + \ and express many data sets from relatively complex analysis (e.g., spike detection\ + \ and clustering) or small, representing extraction of position information\ + \ from tracking video, or even binary lick/no-lick decisions. Common software\ + \ tools (e.g., klustakwik, MClust) are expected to read/write data here. \ + \ 'Processing' refers to intermediate analysis of the acquired data to make\ + \ it more amenable to scientific analysis." + groups: + - neurodata_type_inc: ProcessingModule + doc: Intermediate analysis of acquired data. + quantity: '*' + - name: stimulus + doc: 'Data pushed into the system (eg, video stimulus, sound, voltage, etc) and + secondary representations of that data (eg, measurements of something used as + a stimulus). This group should be made read-only after experiment complete and timestamps + are corrected to common timebase. Stores both presented stimuli and stimulus + templates, the latter in case the same stimulus is presented multiple times, + or is pulled from an external stimulus library. Stimuli are here + defined as any signal that is pushed into the system as part of the experiment + (eg, sound, video, voltage, etc). Many different experiments can use the same + stimuli, and stimuli can be re-used during an experiment. The stimulus group + is organized so that one version of template stimuli can be stored and these + be used multiple times. These templates can exist in the present file or can + be linked to a remote library file.' + groups: + - name: presentation + doc: Stimuli presented during the experiment. + groups: + - neurodata_type_inc: TimeSeries + doc: TimeSeries objects containing data of presented stimuli. + quantity: '*' + - name: templates + doc: 'Template stimuli. Timestamps in templates are based on stimulus + design and are relative to the beginning of the stimulus. When templates are + used, the stimulus instances must convert presentation times to the experiment`s + time reference frame.' + groups: + - neurodata_type_inc: TimeSeries + doc: TimeSeries objects containing template data of presented stimuli. + quantity: '*' + - name: general + doc: "Experimental metadata, including protocol, notes and description of hardware\ + \ device(s). The metadata stored in this section should be used to\ + \ describe the experiment. Metadata necessary for interpreting the data is stored\ + \ with the data. General experimental metadata, including animal\ + \ strain, experimental protocols, experimenter, devices, etc, are stored under\ + \ 'general'. Core metadata (e.g., that required to interpret data fields) is\ + \ stored with the data itself, and implicitly defined by the file specification\ + \ (e.g., time is in seconds). The strategy used here for storing non-core metadata\ + \ is to use free-form text fields, such as would appear in sentences or paragraphs\ + \ from a Methods section. Metadata fields are text to enable them to be more\ + \ general, for example to represent ranges instead of numerical values. Machine-readable\ + \ metadata is stored as attributes to these free-form datasets. All entries\ + \ in the below table are to be included when data is present. Unused groups\ + \ (e.g., intracellular_ephys in an optophysiology experiment) should not be\ + \ created unless there is data to store within them." + datasets: + - name: data_collection + dtype: text + doc: Notes about data collection and analysis. + quantity: '?' + - name: experiment_description + dtype: text + doc: General description of the experiment. + quantity: '?' + - name: experimenter + dtype: text + doc: Name of person(s) who performed the experiment. Can also specify roles + of different people involved. + quantity: '?' + dims: + - num_experimenters + shape: + - null + - name: institution + dtype: text + doc: Institution(s) where experiment was performed. + quantity: '?' + - name: keywords + dtype: text + dims: + - num_keywords + shape: + - null + doc: Terms to search over. + quantity: '?' + - name: lab + dtype: text + doc: Laboratory where experiment was performed. + quantity: '?' + - name: notes + dtype: text + doc: Notes about the experiment. + quantity: '?' + - name: pharmacology + dtype: text + doc: Description of drugs used, including how and when they were administered. + Anesthesia(s), painkiller(s), etc., plus dosage, concentration, etc. + quantity: '?' + - name: protocol + dtype: text + doc: Experimental protocol, if applicable. e.g., include IACUC protocol number. + quantity: '?' + - name: related_publications + dtype: text + doc: Publication information. PMID, DOI, URL, etc. + dims: + - num_publications + shape: + - null + quantity: '?' + - name: session_id + dtype: text + doc: Lab-specific ID for the session. + quantity: '?' + - name: slices + dtype: text + doc: Description of slices, including information about preparation thickness, + orientation, temperature, and bath solution. + quantity: '?' + - name: source_script + dtype: text + doc: Script file or link to public source code used to create this NWB file. + quantity: '?' + attributes: + - name: file_name + dtype: text + doc: Name of script file. + - name: stimulus + dtype: text + doc: Notes about stimuli, such as how and where they were presented. + quantity: '?' + - name: surgery + dtype: text + doc: Narrative description about surgery/surgeries, including date(s) and who + performed surgery. + quantity: '?' + - name: virus + dtype: text + doc: Information about virus(es) used in experiments, including virus ID, source, + date made, injection location, volume, etc. + quantity: '?' + groups: + - neurodata_type_inc: LabMetaData + doc: Place-holder than can be extended so that lab-specific meta-data can be + placed in /general. + quantity: '*' + - name: devices + doc: Description of hardware devices used during experiment, e.g., monitors, + ADC boards, microscopes, etc. + quantity: '?' + groups: + - neurodata_type_inc: Device + doc: Data acquisition devices. + quantity: '*' + - name: subject + neurodata_type_inc: Subject + doc: Information about the animal or person from which the data was measured. + quantity: '?' + - name: extracellular_ephys + doc: Metadata related to extracellular electrophysiology. + quantity: '?' + groups: + - neurodata_type_inc: ElectrodeGroup + doc: Physical group of electrodes. + quantity: '*' + - name: electrodes + neurodata_type_inc: DynamicTable + doc: A table of all electrodes (i.e. channels) used for recording. + quantity: '?' + datasets: + - name: x + neurodata_type_inc: VectorData + dtype: float32 + doc: x coordinate of the channel location in the brain (+x is posterior). + - name: y + neurodata_type_inc: VectorData + dtype: float32 + doc: y coordinate of the channel location in the brain (+y is inferior). + - name: z + neurodata_type_inc: VectorData + dtype: float32 + doc: z coordinate of the channel location in the brain (+z is right). + - name: imp + neurodata_type_inc: VectorData + dtype: float32 + doc: Impedance of the channel, in ohms. + - name: location + neurodata_type_inc: VectorData + dtype: text + doc: Location of the electrode (channel). Specify the area, layer, comments + on estimation of area/layer, stereotaxic coordinates if in vivo, etc. Use + standard atlas names for anatomical regions when possible. + - name: filtering + neurodata_type_inc: VectorData + dtype: float32 + doc: Description of hardware filtering, including the filter name and frequency cutoffs. + - name: group + neurodata_type_inc: VectorData + dtype: + target_type: ElectrodeGroup + reftype: object + doc: Reference to the ElectrodeGroup this electrode is a part of. + - name: group_name + neurodata_type_inc: VectorData + dtype: text + doc: Name of the ElectrodeGroup this electrode is a part of. + - name: rel_x + neurodata_type_inc: VectorData + dtype: float32 + doc: x coordinate in electrode group + quantity: '?' + - name: rel_y + neurodata_type_inc: VectorData + dtype: float32 + doc: y coordinate in electrode group + quantity: '?' + - name: rel_z + neurodata_type_inc: VectorData + dtype: float32 + doc: z coordinate in electrode group + quantity: '?' + - name: reference + neurodata_type_inc: VectorData + dtype: text + doc: Description of the reference used for this electrode. + quantity: '?' + - name: intracellular_ephys + doc: Metadata related to intracellular electrophysiology. + quantity: '?' + datasets: + - name: filtering + dtype: text + doc: Description of filtering used. Includes filtering type and + parameters, frequency fall-off, etc. If this changes between TimeSeries, + filter description should be stored as a text attribute for each TimeSeries. + quantity: '?' + groups: + - neurodata_type_inc: IntracellularElectrode + doc: An intracellular electrode. + quantity: '*' + - name: sweep_table + neurodata_type_inc: SweepTable + doc: The table which groups different PatchClampSeries together. + quantity: '?' + - name: optogenetics + doc: Metadata describing optogenetic stimuluation. + quantity: '?' + groups: + - neurodata_type_inc: OptogeneticStimulusSite + doc: An optogenetic stimulation site. + quantity: '*' + - name: optophysiology + doc: Metadata related to optophysiology. + quantity: '?' + groups: + - neurodata_type_inc: ImagingPlane + doc: An imaging plane. + quantity: '*' + - name: intervals + doc: Experimental intervals, whether that be logically distinct sub-experiments + having a particular scientific goal, trials (see trials subgroup) during an + experiment, or epochs (see epochs subgroup) deriving from analysis of data. + quantity: '?' + groups: + - name: epochs + neurodata_type_inc: TimeIntervals + doc: Divisions in time marking experimental stages or sub-divisions of a single + recording session. + quantity: '?' + - name: trials + neurodata_type_inc: TimeIntervals + doc: Repeated experimental events that have a logical grouping. + quantity: '?' + - name: invalid_times + neurodata_type_inc: TimeIntervals + doc: Time intervals that should be removed from analysis. + quantity: '?' + - neurodata_type_inc: TimeIntervals + doc: Optional additional table(s) for describing other experimental time intervals. + quantity: '*' + - name: units + neurodata_type_inc: Units + doc: Data about sorted spike units. + quantity: '?' + +- neurodata_type_def: LabMetaData + neurodata_type_inc: NWBContainer + doc: Lab-specific meta-data. + +- neurodata_type_def: Subject + neurodata_type_inc: NWBContainer + doc: Information about the animal or person from which the data was measured. + datasets: + - name: age + dtype: text + doc: Age of subject. Can be supplied instead of 'date_of_birth'. + quantity: '?' + - name: date_of_birth + dtype: isodatetime + doc: Date of birth of subject. Can be supplied instead of 'age'. + quantity: '?' + - name: description + dtype: text + doc: Description of subject and where subject came from (e.g., breeder, if + animal). + quantity: '?' + - name: genotype + dtype: text + doc: Genetic strain. If absent, assume Wild Type (WT). + quantity: '?' + - name: sex + dtype: text + doc: Gender of subject. + quantity: '?' + - name: species + dtype: text + doc: Species of subject. + quantity: '?' + - name: strain + dtype: text + doc: Strain of subject. + quantity: '?' + - name: subject_id + dtype: text + doc: ID of animal/person used/participating in experiment (lab convention). + quantity: '?' + - name: weight + dtype: text + doc: Weight at time of experiment, at time of surgery and at other important + times. + quantity: '?' + +datasets: +- neurodata_type_def: ScratchData + neurodata_type_inc: NWBData + doc: Any one-off datasets + attributes: + - name: notes + doc: 'Any notes the user has about the dataset being stored' + dtype: text diff --git a/nwb-schema/2.3.0/core/nwb.icephys.yaml b/nwb-schema/2.3.0/core/nwb.icephys.yaml new file mode 100644 index 00000000..5410fc1a --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.icephys.yaml @@ -0,0 +1,252 @@ +groups: +- neurodata_type_def: PatchClampSeries + neurodata_type_inc: TimeSeries + doc: An abstract base class for patch-clamp data - stimulus or response, + current or voltage. + attributes: + - name: stimulus_description + dtype: text + doc: Protocol/stimulus name for this patch-clamp dataset. + - name: sweep_number + dtype: uint32 + doc: Sweep number, allows to group different PatchClampSeries together. + required: false + datasets: + - name: data + dtype: numeric + dims: + - num_times + shape: + - null + doc: Recorded voltage or current. + attributes: + - name: unit + dtype: text + doc: Base unit of measurement for working with the data. Actual stored values are + not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + - name: gain + dtype: float32 + doc: Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + quantity: '?' + links: + - name: electrode + target_type: IntracellularElectrode + doc: Link to IntracellularElectrode object that describes the electrode that was + used to apply or record this data. + +- neurodata_type_def: CurrentClampSeries + neurodata_type_inc: PatchClampSeries + doc: Voltage data from an intracellular current-clamp recording. A + corresponding CurrentClampStimulusSeries (stored separately as a stimulus) is + used to store the current injected. + datasets: + - name: data + doc: Recorded voltage. + attributes: + - name: unit + dtype: text + value: volts + doc: Base unit of measurement for working with the data. which is fixed to 'volts'. + Actual stored values are not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + - name: bias_current + dtype: float32 + doc: Bias current, in amps. + quantity: '?' + - name: bridge_balance + dtype: float32 + doc: Bridge balance, in ohms. + quantity: '?' + - name: capacitance_compensation + dtype: float32 + doc: Capacitance compensation, in farads. + quantity: '?' + +- neurodata_type_def: IZeroClampSeries + neurodata_type_inc: CurrentClampSeries + doc: Voltage data from an intracellular recording when all current + and amplifier settings are off (i.e., CurrentClampSeries fields will be zero). + There is no CurrentClampStimulusSeries associated with an IZero series because + the amplifier is disconnected and no stimulus can reach the cell. + 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'. + +- neurodata_type_def: VoltageClampSeries + neurodata_type_inc: PatchClampSeries + doc: Current data from an intracellular voltage-clamp recording. A + corresponding VoltageClampStimulusSeries (stored separately as a stimulus) is + used to store the voltage injected. + datasets: + - name: data + doc: Recorded current. + attributes: + - name: unit + dtype: text + value: amperes + doc: Base unit of measurement for working with the data. which is fixed to 'amperes'. + Actual stored values are not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + - name: capacitance_fast + dtype: float32 + doc: Fast capacitance, in farads. + quantity: '?' + attributes: + - name: unit + dtype: text + value: farads + doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + - name: capacitance_slow + dtype: float32 + doc: Slow capacitance, in farads. + quantity: '?' + attributes: + - name: unit + dtype: text + value: farads + doc: Unit of measurement for capacitance_fast, which is fixed to 'farads'. + - name: resistance_comp_bandwidth + dtype: float32 + doc: Resistance compensation bandwidth, in hertz. + quantity: '?' + attributes: + - name: unit + dtype: text + value: hertz + doc: Unit of measurement for resistance_comp_bandwidth, which is fixed to 'hertz'. + - name: resistance_comp_correction + dtype: float32 + doc: Resistance compensation correction, in percent. + quantity: '?' + attributes: + - name: unit + dtype: text + value: percent + doc: Unit of measurement for resistance_comp_correction, which is fixed to 'percent'. + - name: resistance_comp_prediction + dtype: float32 + doc: Resistance compensation prediction, in percent. + quantity: '?' + attributes: + - name: unit + dtype: text + value: percent + doc: Unit of measurement for resistance_comp_prediction, which is fixed to 'percent'. + - name: whole_cell_capacitance_comp + dtype: float32 + doc: Whole cell capacitance compensation, in farads. + quantity: '?' + attributes: + - name: unit + dtype: text + value: farads + doc: Unit of measurement for whole_cell_capacitance_comp, which is fixed to 'farads'. + - name: whole_cell_series_resistance_comp + dtype: float32 + doc: Whole cell series resistance compensation, in ohms. + quantity: '?' + attributes: + - name: unit + dtype: text + value: ohms + doc: Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'. + +- neurodata_type_def: VoltageClampStimulusSeries + neurodata_type_inc: PatchClampSeries + doc: Stimulus voltage applied during a voltage clamp recording. + datasets: + - name: data + doc: Stimulus voltage applied. + attributes: + - name: unit + dtype: text + value: volts + doc: Base unit of measurement for working with the data. which is fixed to 'volts'. + Actual stored values are not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + +- neurodata_type_def: IntracellularElectrode + neurodata_type_inc: NWBContainer + doc: An intracellular electrode and its metadata. + datasets: + - name: description + dtype: text + doc: Description of electrode (e.g., whole-cell, sharp, etc.). + - name: filtering + dtype: text + doc: Electrode specific filtering. + quantity: '?' + - name: initial_access_resistance + dtype: text + doc: Initial access resistance. + quantity: '?' + - name: location + dtype: text + doc: Location of the electrode. Specify the area, layer, comments on estimation + of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas + names for anatomical regions when possible. + quantity: '?' + - name: resistance + dtype: text + doc: Electrode resistance, in ohms. + quantity: '?' + - name: seal + dtype: text + doc: Information about seal used for recording. + quantity: '?' + - name: slice + dtype: text + doc: Information about slice used for recording. + quantity: '?' + links: + - name: device + target_type: Device + doc: Device that was used to record from this electrode. + +- neurodata_type_def: SweepTable + neurodata_type_inc: DynamicTable + doc: The table which groups different PatchClampSeries together. + datasets: + - name: sweep_number + neurodata_type_inc: VectorData + dtype: uint32 + doc: Sweep number of the PatchClampSeries in that row. + - name: series + neurodata_type_inc: VectorData + dtype: + target_type: PatchClampSeries + reftype: object + doc: The PatchClampSeries with the sweep number in that row. + - name: series_index + neurodata_type_inc: VectorIndex + doc: Index for series. diff --git a/nwb-schema/2.3.0/core/nwb.image.yaml b/nwb-schema/2.3.0/core/nwb.image.yaml new file mode 100644 index 00000000..3d7eb838 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.image.yaml @@ -0,0 +1,197 @@ +datasets: +- neurodata_type_def: GrayscaleImage + neurodata_type_inc: Image + dims: + - x + - y + shape: + - null + - null + doc: A grayscale image. + dtype: numeric + +- neurodata_type_def: RGBImage + neurodata_type_inc: Image + dims: + - x + - y + - r, g, b + shape: + - null + - null + - 3 + doc: A color image. + dtype: numeric + +- neurodata_type_def: RGBAImage + neurodata_type_inc: Image + dims: + - x + - y + - r, g, b, a + shape: + - null + - null + - 4 + doc: A color image with transparency. + dtype: numeric + +groups: +- neurodata_type_def: ImageSeries + neurodata_type_inc: TimeSeries + doc: General image data that is common between acquisition and stimulus time series. + Sometimes the image data is stored in the file in a raw format while other + times it will be stored as a series of external image files in the host file system. + The data field will either be binary data, if the data is stored in the NWB file, or + empty, if the data is stored in an external image stack. [frame][x][y] or [frame][x][y][z]. + datasets: + - name: data + dtype: numeric + dims: + - - frame + - x + - y + - - frame + - x + - y + - z + shape: + - - null + - null + - null + - - null + - null + - null + - null + doc: Binary data representing images across frames. + quantity: '?' + - name: dimension + dtype: int32 + dims: + - rank + shape: + - null + doc: Number of pixels on x, y, (and z) axes. + quantity: '?' + - name: external_file + dtype: text + dims: + - num_files + shape: + - null + doc: Paths to one or more external file(s). The field is only present if format='external'. + This is only relevant if the image series is stored in the file system as one + or more image file(s). This field should NOT be used if the image is stored + in another NWB file and that file is linked to this file. + quantity: '?' + attributes: + - name: starting_frame + dtype: int32 + dims: + - num_files + shape: + - null + doc: Each external image may contain one or more consecutive frames of the full + ImageSeries. This attribute serves as an index to indicate which frames each file + contains, to faciliate random access. The 'starting_frame' attribute, hence, + contains a list of frame numbers within the full ImageSeries of the first frame + of each file listed in the parent 'external_file' dataset. Zero-based indexing is + used (hence, the first element will always be zero). For example, if the + 'external_file' dataset has three paths to files and the first file has 5 frames, + the second file has 10 frames, and the third file has 20 frames, then this + attribute will have values [0, 5, 15]. If there is a single external file that + holds all of the frames of the ImageSeries (and so there is a single element in + the 'external_file' dataset), then this attribute should have value [0]. + - name: format + dtype: text + default_value: raw + doc: Format of image. If this is 'external', then the attribute 'external_file' + contains the path information to the image files. If this is 'raw', then the raw + (single-channel) binary data is stored in the 'data' dataset. If this attribute + is not present, then the default format='raw' case is assumed. + quantity: '?' + links: + - name: device + target_type: Device + doc: Link to the Device object that was used to capture these images. + quantity: '?' + +- neurodata_type_def: ImageMaskSeries + neurodata_type_inc: ImageSeries + doc: An alpha mask that is applied to a presented visual stimulus. The 'data' array + contains an array of mask values that are applied to the displayed image. Mask + values are stored as RGBA. Mask can vary with time. The timestamps array indicates + the starting time of a mask, and that mask pattern continues until it's explicitly + changed. + links: + - name: masked_imageseries + target_type: ImageSeries + doc: Link to ImageSeries object that this image mask is applied to. + +- neurodata_type_def: OpticalSeries + neurodata_type_inc: ImageSeries + doc: Image data that is presented or recorded. A stimulus template movie will be + stored only as an image. When the image is presented as stimulus, additional data + is required, such as field of view (e.g., how much of the visual field the image + covers, or how what is the area of the target being imaged). If the OpticalSeries + represents acquired imaging data, orientation is also important. + datasets: + - name: distance + dtype: float32 + doc: Distance from camera/monitor to target/eye. + quantity: '?' + - name: field_of_view + dtype: float32 + dims: + - - width, height + - - width, height, depth + shape: + - - 2 + - - 3 + doc: Width, height and depth of image, or imaged area, in meters. + quantity: '?' + - name: data + dtype: numeric + dims: + - - frame + - x + - y + - - frame + - x + - y + - r, g, b + shape: + - - null + - null + - null + - - null + - null + - null + - 3 + doc: Images presented to subject, either grayscale or RGB + - name: orientation + dtype: text + doc: Description of image relative to some reference frame (e.g., which way is + up). Must also specify frame of reference. + quantity: '?' + +- neurodata_type_def: IndexSeries + neurodata_type_inc: TimeSeries + doc: Stores indices to image frames stored in an ImageSeries. The purpose of the + ImageIndexSeries is to allow a static image stack to be stored somewhere, and + the images in the stack to be referenced out-of-order. This can be for the display + of individual images, or of movie segments (as a movie is simply a series of images). + The data field stores the index of the frame in the referenced ImageSeries, and + the timestamps array indicates when that image was displayed. + datasets: + - name: data + dtype: int32 + dims: + - num_times + shape: + - null + doc: Index of the frame in the referenced ImageSeries. + links: + - name: indexed_timeseries + target_type: ImageSeries + doc: Link to ImageSeries object containing images that are indexed. diff --git a/nwb-schema/2.3.0/core/nwb.misc.yaml b/nwb-schema/2.3.0/core/nwb.misc.yaml new file mode 100644 index 00000000..c5424c51 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.misc.yaml @@ -0,0 +1,329 @@ +groups: +- neurodata_type_def: AbstractFeatureSeries + neurodata_type_inc: TimeSeries + doc: Abstract features, such as quantitative descriptions of sensory stimuli. The + TimeSeries::data field is a 2D array, storing those features (e.g., for visual + grating stimulus this might be orientation, spatial frequency and contrast). Null + stimuli (eg, uniform gray) can be marked as being an independent feature (eg, + 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values, + or through use of the TimeSeries::control fields. A set of features is considered + to persist until the next set of features is defined. The final set of features + stored should be the null set. This is useful when storing the raw stimulus + is impractical. + datasets: + - name: data + dtype: numeric + dims: + - - num_times + - - num_times + - num_features + shape: + - - null + - - null + - null + doc: Values of each feature at each time. + attributes: + - name: unit + dtype: text + default_value: see 'feature_units' + doc: Since there can be different units for different features, store the units + in 'feature_units'. The default value for this attribute is "see 'feature_units'". + required: false + - name: feature_units + dtype: text + dims: + - num_features + shape: + - null + doc: Units of each feature. + quantity: '?' + - name: features + dtype: text + dims: + - num_features + shape: + - null + doc: Description of the features represented in TimeSeries::data. + +- neurodata_type_def: AnnotationSeries + neurodata_type_inc: TimeSeries + doc: Stores user annotations made during an experiment. The data[] + field stores a text array, and timestamps are stored for each annotation (ie, + interval=1). This is largely an alias to a standard TimeSeries storing a text + array but that is identifiable as storing annotations in a machine-readable way. + datasets: + - name: data + dtype: text + dims: + - num_times + shape: + - null + doc: Annotations made during an experiment. + attributes: + - name: resolution + dtype: float32 + value: -1.0 + doc: Smallest meaningful difference between values in data. Annotations have + no units, so the value is fixed to -1.0. + - name: unit + dtype: text + value: n/a + doc: Base unit of measurement for working with the data. Annotations have + no units, so the value is fixed to 'n/a'. + +- neurodata_type_def: IntervalSeries + neurodata_type_inc: TimeSeries + doc: Stores intervals of data. The timestamps field stores the beginning and end + of intervals. The data field stores whether the interval just started (>0 value) + or ended (<0 value). Different interval types can be represented in the same series + by using multiple key values (eg, 1 for feature A, 2 for feature B, 3 for feature + C, etc). The field data stores an 8-bit integer. This is largely an alias of a + standard TimeSeries but that is identifiable as representing time intervals in + a machine-readable way. + datasets: + - name: data + dtype: int8 + dims: + - num_times + shape: + - null + doc: Use values >0 if interval started, <0 if interval ended. + attributes: + - name: resolution + dtype: float32 + value: -1.0 + doc: Smallest meaningful difference between values in data. Annotations have + no units, so the value is fixed to -1.0. + - name: unit + dtype: text + value: n/a + doc: Base unit of measurement for working with the data. Annotations have + no units, so the value is fixed to 'n/a'. + +- neurodata_type_def: DecompositionSeries + neurodata_type_inc: TimeSeries + doc: Spectral analysis of a time series, e.g. of an LFP or a speech signal. + datasets: + - name: data + dtype: numeric + dims: + - num_times + - num_channels + - num_bands + shape: + - null + - null + - null + doc: Data decomposed into frequency bands. + attributes: + - name: unit + dtype: text + default_value: no unit + doc: Base unit of measurement for working with the data. Actual stored values are + not necessarily stored in these units. To access the data in these units, + multiply 'data' by 'conversion'. + - name: metric + dtype: text + doc: The metric used, e.g. phase, amplitude, power. + - name: source_channels + neurodata_type_inc: DynamicTableRegion + doc: DynamicTableRegion pointer to the channels that this decomposition series was generated from. + quantity: '?' + groups: + - name: bands + neurodata_type_inc: DynamicTable + doc: Table for describing the bands that this series was generated from. There + should be one row in this table for each band. + datasets: + - name: band_name + neurodata_type_inc: VectorData + dtype: text + doc: Name of the band, e.g. theta. + - name: band_limits + neurodata_type_inc: VectorData + dtype: float32 + dims: + - num_bands + - low, high + shape: + - null + - 2 + doc: Low and high limit of each band in Hz. If it is a Gaussian filter, use + 2 SD on either side of the center. + - name: band_mean + neurodata_type_inc: VectorData + dtype: float32 + dims: + - num_bands + shape: + - null + doc: The mean Gaussian filters, in Hz. + - name: band_stdev + neurodata_type_inc: VectorData + dtype: float32 + dims: + - num_bands + shape: + - null + doc: The standard deviation of Gaussian filters, in Hz. + links: + - name: source_timeseries + target_type: TimeSeries + doc: Link to TimeSeries object that this data was calculated from. Metadata about + electrodes and their position can be read from that ElectricalSeries so it is + not necessary to store that information here. + quantity: '?' + +- neurodata_type_def: Units + neurodata_type_inc: DynamicTable + default_name: Units + doc: Data about spiking units. Event times of observed units (e.g. cell, synapse, + etc.) should be concatenated and stored in spike_times. + datasets: + - name: spike_times_index + neurodata_type_inc: VectorIndex + doc: Index into the spike_times dataset. + quantity: '?' + - name: spike_times + neurodata_type_inc: VectorData + dtype: float64 + doc: Spike times for each unit. + quantity: '?' + attributes: + - name: resolution + dtype: float64 + doc: The smallest possible difference between two spike times. Usually 1 divided by the acquisition sampling rate + from which spike times were extracted, but could be larger if the acquisition time series was downsampled or + smaller if the acquisition time series was smoothed/interpolated and it is possible for the spike time to be + between samples. + required: false + - name: obs_intervals_index + neurodata_type_inc: VectorIndex + doc: Index into the obs_intervals dataset. + quantity: '?' + - name: obs_intervals + neurodata_type_inc: VectorData + dtype: float64 + dims: + - num_intervals + - start|end + shape: + - null + - 2 + doc: Observation intervals for each unit. + quantity: '?' + - name: electrodes_index + neurodata_type_inc: VectorIndex + doc: Index into electrodes. + quantity: '?' + - name: electrodes + neurodata_type_inc: DynamicTableRegion + doc: Electrode that each spike unit came from, specified using a DynamicTableRegion. + quantity: '?' + - name: electrode_group + neurodata_type_inc: VectorData + dtype: + target_type: ElectrodeGroup + reftype: object + doc: Electrode group that each spike unit came from. + quantity: '?' + - name: waveform_mean + neurodata_type_inc: VectorData + dtype: float32 + dims: + - - num_units + - num_samples + - - num_units + - num_samples + - num_electrodes + shape: + - - null + - null + - - null + - null + - null + doc: Spike waveform mean for each spike unit. + quantity: '?' + attributes: + - name: sampling_rate + dtype: float32 + doc: Sampling rate, in hertz. + required: false + - name: unit + dtype: text + value: volts + doc: Unit of measurement. This value is fixed to 'volts'. + required: false + - name: waveform_sd + neurodata_type_inc: VectorData + dtype: float32 + dims: + - - num_units + - num_samples + - - num_units + - num_samples + - num_electrodes + shape: + - - null + - null + - - null + - null + - null + doc: Spike waveform standard deviation for each spike unit. + quantity: '?' + attributes: + - name: sampling_rate + dtype: float32 + doc: Sampling rate, in hertz. + required: false + - name: unit + dtype: text + value: volts + doc: Unit of measurement. This value is fixed to 'volts'. + required: false + - name: waveforms + neurodata_type_inc: VectorData + dtype: numeric + dims: + - num_waveforms + - num_samples + shape: + - null + - null + doc: "Individual waveforms for each spike on each electrode. This is a doubly indexed column. The 'waveforms_index' + column indexes which waveforms in this column belong to the same spike event for a given unit, where each waveform + was recorded from a different electrode. The 'waveforms_index_index' column indexes the 'waveforms_index' column + to indicate which spike events belong to a given unit. For example, if the + 'waveforms_index_index' column has values [2, 5, 6], then the first 2 elements of the 'waveforms_index' column + correspond to the 2 spike events of the first unit, the next 3 elements of the 'waveforms_index' column correspond + to the 3 spike events of the second unit, and the next 1 element of the 'waveforms_index' column corresponds to + the 1 spike event of the third unit. If the 'waveforms_index' column has values [3, 6, 8, 10, 12, 13], then + the first 3 elements of the 'waveforms' column contain the 3 spike waveforms that were recorded from 3 different + electrodes for the first spike time of the first unit. See + https://nwb-schema.readthedocs.io/en/stable/format_description.html#doubly-ragged-arrays for a graphical + representation of this example. When there is only one electrode for each unit (i.e., each spike time is + associated with a single waveform), then the 'waveforms_index' column will have values 1, 2, ..., N, where N is + the number of spike events. The number of electrodes for each spike event should be the same within a given unit. + The 'electrodes' column should be used to indicate which electrodes are associated with each unit, and the order + of the waveforms within a given unit x spike event should be in the same order as the electrodes referenced in + the 'electrodes' column of this table. The number of samples for each waveform must be the same." + quantity: '?' + attributes: + - name: sampling_rate + dtype: float32 + doc: Sampling rate, in hertz. + required: false + - name: unit + dtype: text + value: volts + doc: Unit of measurement. This value is fixed to 'volts'. + required: false + - name: waveforms_index + neurodata_type_inc: VectorIndex + doc: Index into the waveforms dataset. One value for every spike event. See 'waveforms' for more detail. + quantity: '?' + - name: waveforms_index_index + neurodata_type_inc: VectorIndex + doc: Index into the waveforms_index dataset. One value for every unit (row in the table). See 'waveforms' for more + detail. + quantity: '?' diff --git a/nwb-schema/2.3.0/core/nwb.namespace.yaml b/nwb-schema/2.3.0/core/nwb.namespace.yaml new file mode 100644 index 00000000..60b2552a --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.namespace.yaml @@ -0,0 +1,60 @@ +namespaces: +- name: core + doc: NWB namespace + author: + - Andrew Tritt + - Oliver Ruebel + - Ryan Ly + - Ben Dichter + - Keith Godfrey + - Jeff Teeters + contact: + - ajtritt@lbl.gov + - oruebel@lbl.gov + - rly@lbl.gov + - bdichter@lbl.gov + - keithg@alleninstitute.org + - jteeters@berkeley.edu + full_name: NWB core + schema: + - namespace: hdmf-common + - doc: This source module contains base data types used throughout the NWB:N data + format. + source: nwb.base.yaml + title: Base data types + - doc: This source module contains neurodata_types for device data. + source: nwb.device.yaml + title: Devices + - doc: This source module contains neurodata_types for epoch data. + source: nwb.epoch.yaml + title: Epochs + - doc: This source module contains neurodata_types for image data. + source: nwb.image.yaml + title: Image data + - doc: Main NWB:N file specification. + source: nwb.file.yaml + title: NWB:N file + - doc: Miscellaneous types. + source: nwb.misc.yaml + title: Miscellaneous neurodata_types. + - doc: This source module contains neurodata_types for behavior data. + source: nwb.behavior.yaml + title: Behavior + - doc: This source module contains neurodata_types for extracellular electrophysiology + data. + source: nwb.ecephys.yaml + title: Extracellular electrophysiology + - doc: This source module contains neurodata_types for intracellular electrophysiology + data. + source: nwb.icephys.yaml + title: Intracellular electrophysiology + - doc: This source module contains neurodata_types for opto-genetics data. + source: nwb.ogen.yaml + title: Optogenetics + - doc: This source module contains neurodata_types for optical physiology data. + source: nwb.ophys.yaml + title: Optical physiology + - doc: This source module contains neurodata_type for retinotopy data. + source: nwb.retinotopy.yaml + title: Retinotopy + version: "2.3.0" diff --git a/nwb-schema/2.3.0/core/nwb.ogen.yaml b/nwb-schema/2.3.0/core/nwb.ogen.yaml new file mode 100644 index 00000000..1756ba85 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.ogen.yaml @@ -0,0 +1,43 @@ +groups: +- neurodata_type_def: OptogeneticSeries + neurodata_type_inc: TimeSeries + doc: An optogenetic stimulus. + datasets: + - name: data + dtype: numeric + dims: + - num_times + shape: + - null + doc: Applied power for optogenetic stimulus, in watts. + attributes: + - name: unit + dtype: text + value: watts + doc: Unit of measurement for data, which is fixed to 'watts'. + links: + - name: site + target_type: OptogeneticStimulusSite + doc: Link to OptogeneticStimulusSite object that describes the site to which this + stimulus was applied. + +- neurodata_type_def: OptogeneticStimulusSite + neurodata_type_inc: NWBContainer + doc: A site of optogenetic stimulation. + quantity: '*' + datasets: + - name: description + dtype: text + doc: Description of stimulation site. + - name: excitation_lambda + dtype: float32 + doc: Excitation wavelength, in nm. + - name: location + dtype: text + doc: Location of the stimulation site. Specify the area, layer, comments on estimation + of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas + names for anatomical regions when possible. + links: + - name: device + target_type: Device + doc: Device that generated the stimulus. diff --git a/nwb-schema/2.3.0/core/nwb.ophys.yaml b/nwb-schema/2.3.0/core/nwb.ophys.yaml new file mode 100644 index 00000000..386dca9b --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.ophys.yaml @@ -0,0 +1,326 @@ +groups: +- neurodata_type_def: TwoPhotonSeries + neurodata_type_inc: ImageSeries + doc: Image stack recorded over time from 2-photon microscope. + attributes: + - name: pmt_gain + dtype: float32 + doc: Photomultiplier gain. + required: false + - name: scan_line_rate + dtype: float32 + doc: Lines imaged per second. This is also stored in /general/optophysiology but + is kept here as it is useful information for analysis, and so good to be stored + w/ the actual data. + required: false + datasets: + - name: field_of_view + dtype: float32 + dims: + - - width|height + - - width|height|depth + shape: + - - 2 + - - 3 + doc: Width, height and depth of image, or imaged area, in meters. + quantity: '?' + links: + - name: imaging_plane + target_type: ImagingPlane + doc: Link to ImagingPlane object from which this TimeSeries data was generated. + +- neurodata_type_def: RoiResponseSeries + neurodata_type_inc: TimeSeries + doc: ROI responses over an imaging plane. The first dimension represents time. + The second dimension, if present, represents ROIs. + datasets: + - name: data + dtype: numeric + dims: + - - num_times + - - num_times + - num_ROIs + shape: + - - null + - - null + - null + doc: Signals from ROIs. + - name: rois + neurodata_type_inc: DynamicTableRegion + doc: DynamicTableRegion referencing into an ROITable containing information on the ROIs + stored in this timeseries. + +- neurodata_type_def: DfOverF + neurodata_type_inc: NWBDataInterface + default_name: DfOverF + doc: dF/F information about a region of interest (ROI). Storage hierarchy of dF/F + should be the same as for segmentation (i.e., same names for ROIs and for image + planes). + groups: + - neurodata_type_inc: RoiResponseSeries + doc: RoiResponseSeries object(s) containing dF/F for a ROI. + quantity: '+' + +- neurodata_type_def: Fluorescence + neurodata_type_inc: NWBDataInterface + default_name: Fluorescence + doc: Fluorescence information about a region of interest (ROI). Storage hierarchy + of fluorescence should be the same as for segmentation (ie, same names for ROIs + and for image planes). + groups: + - neurodata_type_inc: RoiResponseSeries + doc: RoiResponseSeries object(s) containing fluorescence data for a ROI. + quantity: '+' + +- neurodata_type_def: ImageSegmentation + neurodata_type_inc: NWBDataInterface + default_name: ImageSegmentation + doc: Stores pixels in an image that represent different regions of interest (ROIs) + or masks. All segmentation for a given imaging plane is stored together, with + storage for multiple imaging planes (masks) supported. Each ROI is stored in its + own subgroup, with the ROI group containing both a 2D mask and a list of pixels + that make up this mask. Segments can also be used for masking neuropil. If segmentation + is allowed to change with time, a new imaging plane (or module) is required and + ROI names should remain consistent between them. + groups: + - neurodata_type_inc: PlaneSegmentation + doc: Results from image segmentation of a specific imaging plane. + quantity: '+' + +- neurodata_type_def: PlaneSegmentation + neurodata_type_inc: DynamicTable + doc: Results from image segmentation of a specific imaging plane. + datasets: + - name: image_mask + neurodata_type_inc: VectorData + dims: + - - num_roi + - num_x + - num_y + - - num_roi + - num_x + - num_y + - num_z + shape: + - - null + - null + - null + - - null + - null + - null + - null + doc: ROI masks for each ROI. Each image mask is the size of the original imaging + plane (or volume) and members of the ROI are finite non-zero. + quantity: '?' + - name: pixel_mask_index + neurodata_type_inc: VectorIndex + doc: Index into pixel_mask. + quantity: '?' + - name: pixel_mask + neurodata_type_inc: VectorData + dtype: + - name: x + dtype: uint32 + doc: Pixel x-coordinate. + - name: y + dtype: uint32 + doc: Pixel y-coordinate. + - name: weight + dtype: float32 + doc: Weight of the pixel. + doc: 'Pixel masks for each ROI: a list of indices and weights for the ROI. Pixel + masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation' + quantity: '?' + - name: voxel_mask_index + neurodata_type_inc: VectorIndex + doc: Index into voxel_mask. + quantity: '?' + - name: voxel_mask + neurodata_type_inc: VectorData + dtype: + - name: x + dtype: uint32 + doc: Voxel x-coordinate. + - name: y + dtype: uint32 + doc: Voxel y-coordinate. + - name: z + dtype: uint32 + doc: Voxel z-coordinate. + - name: weight + dtype: float32 + doc: Weight of the voxel. + doc: 'Voxel masks for each ROI: a list of indices and weights for the ROI. Voxel + masks are concatenated and parsing of this dataset is maintained by the PlaneSegmentation' + quantity: '?' + groups: + - name: reference_images + doc: Image stacks that the segmentation masks apply to. + groups: + - neurodata_type_inc: ImageSeries + doc: One or more image stacks that the masks apply to (can be one-element + stack). + quantity: '*' + links: + - name: imaging_plane + target_type: ImagingPlane + doc: Link to ImagingPlane object from which this data was generated. + +- neurodata_type_def: ImagingPlane + neurodata_type_inc: NWBContainer + doc: An imaging plane and its metadata. + quantity: '*' + datasets: + - name: description + dtype: text + doc: Description of the imaging plane. + quantity: '?' + - name: excitation_lambda + dtype: float32 + doc: Excitation wavelength, in nm. + - name: imaging_rate + dtype: float32 + doc: Rate that images are acquired, in Hz. If the corresponding TimeSeries is present, the rate should be stored + there instead. + quantity: '?' + - name: indicator + dtype: text + doc: Calcium indicator. + - name: location + dtype: text + doc: Location of the imaging plane. Specify the area, layer, comments on estimation + of area/layer, stereotaxic coordinates if in vivo, etc. Use standard atlas + names for anatomical regions when possible. + - name: manifold + dtype: float32 + dims: + - - height + - width + - x, y, z + - - height + - width + - depth + - x, y, z + shape: + - - null + - null + - 3 + - - null + - null + - null + - 3 + doc: "DEPRECATED Physical position of each pixel. 'xyz' represents the position\ + \ of the pixel relative to the defined coordinate space. Deprecated in favor of origin_coords and grid_spacing." + quantity: '?' + attributes: + - name: conversion + dtype: float32 + default_value: 1.0 + doc: Scalar to multiply each element in data to convert it to the specified 'unit'. + If the data are stored in acquisition system units or other units + that require a conversion to be interpretable, multiply the data by 'conversion' + to convert the data to the specified 'unit'. e.g. if the data acquisition system + stores values in this object as pixels from x = -500 to 499, y = -500 to 499 + that correspond to a 2 m x 2 m range, then the 'conversion' multiplier to get + from raw data acquisition pixel units to meters is 2/1000. + required: false + - name: unit + dtype: text + default_value: meters + doc: Base unit of measurement for working with the data. The default value is 'meters'. + required: false + - name: origin_coords + dtype: float32 + dims: + - - x, y + - - x, y, z + shape: + - - 2 + - - 3 + doc: Physical location of the first element of the imaging plane (0, 0) for 2-D data or (0, 0, 0) for 3-D data. + See also reference_frame for what the physical location is relative to (e.g., bregma). + quantity: '?' + attributes: + - name: unit + dtype: text + default_value: meters + doc: Measurement units for origin_coords. The default value is 'meters'. + - name: grid_spacing + dtype: float32 + dims: + - - x, y + - - x, y, z + shape: + - - 2 + - - 3 + doc: Space between pixels in (x, y) or voxels in (x, y, z) directions, in the specified unit. + Assumes imaging plane is a regular grid. See also reference_frame to interpret the grid. + quantity: '?' + attributes: + - name: unit + dtype: text + default_value: meters + doc: Measurement units for grid_spacing. The default value is 'meters'. + - name: reference_frame + dtype: text + doc: Describes reference frame of origin_coords and grid_spacing. + For example, this can be a text description of the anatomical location and orientation of the grid + defined by origin_coords and grid_spacing or the vectors needed to transform or rotate the grid to + a common anatomical axis (e.g., AP/DV/ML). This field is necessary to interpret origin_coords and grid_spacing. + If origin_coords and grid_spacing are not present, then this field is not required. + For example, if the microscope takes 10 x 10 x 2 images, where the first value of the data matrix + (index (0, 0, 0)) corresponds to (-1.2, -0.6, -2) mm relative to bregma, the spacing between pixels is 0.2 mm in + x, 0.2 mm in y and 0.5 mm in z, and larger numbers in x means more anterior, larger numbers in y means more + rightward, and larger numbers in z means more ventral, then enter the following -- + origin_coords = (-1.2, -0.6, -2) + grid_spacing = (0.2, 0.2, 0.5) + reference_frame = "Origin coordinates are relative to bregma. First dimension corresponds to anterior-posterior + axis (larger index = more anterior). Second dimension corresponds to medial-lateral axis (larger index = more + rightward). Third dimension corresponds to dorsal-ventral axis (larger index = more ventral)." + quantity: '?' + groups: + - neurodata_type_inc: OpticalChannel + doc: An optical channel used to record from an imaging plane. + quantity: '+' + links: + - name: device + target_type: Device + doc: Link to the Device object that was used to record from this electrode. + +- neurodata_type_def: OpticalChannel + neurodata_type_inc: NWBContainer + doc: An optical channel used to record from an imaging plane. + datasets: + - name: description + dtype: text + doc: Description or other notes about the channel. + - name: emission_lambda + dtype: float32 + doc: Emission wavelength for channel, in nm. + +- neurodata_type_def: MotionCorrection + neurodata_type_inc: NWBDataInterface + default_name: MotionCorrection + doc: 'An image stack where all frames are shifted (registered) to a common coordinate + system, to account for movement and drift between frames. Note: each frame at + each point in time is assumed to be 2-D (has only x & y dimensions).' + groups: + - neurodata_type_inc: CorrectedImageStack + doc: Reuslts from motion correction of an image stack. + quantity: '+' + +- neurodata_type_def: CorrectedImageStack + neurodata_type_inc: NWBDataInterface + doc: Reuslts from motion correction of an image stack. + groups: + - name: corrected + neurodata_type_inc: ImageSeries + doc: Image stack with frames shifted to the common coordinates. + - name: xy_translation + neurodata_type_inc: TimeSeries + doc: Stores the x,y delta necessary to align each frame to the common coordinates, + for example, to align each frame to a reference image. + links: + - name: original + target_type: ImageSeries + doc: Link to ImageSeries object that is being registered. diff --git a/nwb-schema/2.3.0/core/nwb.retinotopy.yaml b/nwb-schema/2.3.0/core/nwb.retinotopy.yaml new file mode 100644 index 00000000..e8972395 --- /dev/null +++ b/nwb-schema/2.3.0/core/nwb.retinotopy.yaml @@ -0,0 +1,234 @@ +groups: +- neurodata_type_def: ImagingRetinotopy + neurodata_type_inc: NWBDataInterface + default_name: ImagingRetinotopy + doc: 'Intrinsic signal optical imaging or widefield imaging for measuring retinotopy. + Stores orthogonal maps (e.g., altitude/azimuth; radius/theta) of responses to + specific stimuli and a combined polarity map from which to identify visual areas. + This group does not store the raw responses imaged during retinotopic mapping or the + stimuli presented, but rather the resulting phase and power maps after applying a Fourier + transform on the averaged responses. + Note: for data consistency, all images and arrays are stored in the format [row][column] + and [row, col], which equates to [y][x]. Field of view and dimension arrays may + appear backward (i.e., y before x).' + datasets: + - name: axis_1_phase_map + dtype: float32 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: Phase response to stimulus on the first measured axis. + attributes: + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: unit + dtype: text + doc: Unit that axis data is stored in (e.g., degrees). + - name: axis_1_power_map + dtype: float32 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: Power response on the first measured axis. Response is scaled so 0.0 is no + power in the response and 1.0 is maximum relative power. + quantity: '?' + attributes: + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: unit + dtype: text + doc: Unit that axis data is stored in (e.g., degrees). + - name: axis_2_phase_map + dtype: float32 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: Phase response to stimulus on the second measured axis. + attributes: + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: unit + dtype: text + doc: Unit that axis data is stored in (e.g., degrees). + - name: axis_2_power_map + dtype: float32 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: Power response on the second measured axis. Response is scaled so 0.0 is + no power in the response and 1.0 is maximum relative power. + quantity: '?' + attributes: + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: unit + dtype: text + doc: Unit that axis data is stored in (e.g., degrees). + - name: axis_descriptions + dtype: text + dims: + - axis_1, axis_2 + shape: + - 2 + doc: Two-element array describing the contents of the two response axis fields. + Description should be something like ['altitude', 'azimuth'] or '['radius', + 'theta']. + - name: focal_depth_image + dtype: uint16 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: 'Gray-scale image taken with same settings/parameters (e.g., focal depth, + wavelength) as data collection. Array format: [rows][columns].' + quantity: '?' + attributes: + - name: bits_per_pixel + dtype: int32 + doc: Number of bits used to represent each value. This is necessary to determine + maximum (white) pixel value. + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: focal_depth + dtype: float32 + doc: Focal depth offset, in meters. + - name: format + dtype: text + doc: Format of image. Right now only 'raw' is supported. + - name: sign_map + dtype: float32 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: Sine of the angle between the direction of the gradient in axis_1 and axis_2. + quantity: '?' + attributes: + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: vasculature_image + dtype: uint16 + dims: + - num_rows + - num_cols + shape: + - null + - null + doc: 'Gray-scale anatomical image of cortical surface. Array structure: [rows][columns]' + attributes: + - name: bits_per_pixel + dtype: int32 + doc: Number of bits used to represent each value. This is necessary to determine + maximum (white) pixel value + - name: dimension + dtype: int32 + dims: + - num_rows, num_cols + shape: + - 2 + doc: 'Number of rows and columns in the image. NOTE: row, column representation + is equivalent to height, width.' + - name: field_of_view + dtype: float32 + dims: + - height, width + shape: + - 2 + doc: Size of viewing area, in meters. + - name: format + dtype: text + doc: Format of image. Right now only 'raw' is supported. diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/base.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/base.yaml new file mode 100644 index 00000000..1e8cbc00 --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/base.yaml @@ -0,0 +1,21 @@ +# hdmf-schema-language=2.0.2 +datasets: +- data_type_def: Data + doc: An abstract data type for a dataset. + +groups: +- data_type_def: Container + doc: An abstract data type for a group storing collections of data and + metadata. Base type for all data and metadata containers. + +- data_type_def: SimpleMultiContainer + data_type_inc: Container + doc: A simple Container for holding onto multiple containers. + datasets: + - data_type_inc: Data + quantity: '*' + doc: Data objects held within this SimpleMultiContainer. + groups: + - data_type_inc: Container + quantity: '*' + doc: Container objects held within this SimpleMultiContainer. diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/experimental.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/experimental.yaml new file mode 100644 index 00000000..0cb6ba45 --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/experimental.yaml @@ -0,0 +1,14 @@ +groups: [] +datasets: +- data_type_def: EnumData + data_type_inc: VectorData + dtype: uint8 + doc: Data that come from a fixed set of values. A data value of i corresponds + to the i-th value in the VectorData referenced by the 'elements' attribute. + attributes: + - name: elements + dtype: + target_type: VectorData + reftype: object + doc: Reference to the VectorData object that contains the enumerable elements + diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/namespace.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/namespace.yaml new file mode 100644 index 00000000..993ba771 --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/namespace.yaml @@ -0,0 +1,49 @@ +# hdmf-schema-language=2.0.2 +namespaces: +- name: hdmf-common + doc: Common data structures provided by HDMF + author: + - Andrew Tritt + - Oliver Ruebel + - Ryan Ly + - Ben Dichter + contact: + - ajtritt@lbl.gov + - oruebel@lbl.gov + - rly@lbl.gov + - bdichter@lbl.gov + full_name: HDMF Common + schema: + - doc: 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.5.0 + +- 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 + contact: + - ajtritt@lbl.gov + - oruebel@lbl.gov + - rly@lbl.gov + - bdichter@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.1.0 diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/resources.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/resources.yaml new file mode 100644 index 00000000..6a3dc5bc --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/resources.yaml @@ -0,0 +1,85 @@ +# hdmf-schema-language=2.0.2 +groups: + - data_type_def: ExternalResources + data_type_inc: Container + doc: "A set of four tables for tracking external resource references in a file. NOTE: this data type is in beta + testing and is subject to change in a later version." + datasets: + - data_type_inc: Data + name: keys + doc: A table for storing user terms that are used to refer to external resources. + dtype: + - name: key + dtype: text + doc: The user term that maps to one or more resources in the 'resources' table. + dims: + - num_rows + shape: + - null + + - data_type_inc: Data + name: entities + doc: A table for mapping user terms (i.e., keys) to resource entities. + dtype: + - name: keys_idx + dtype: uint + doc: The index to the key in the 'keys' table. + - name: resources_idx + dtype: uint + doc: The index into the 'resources' table + - name: entity_id + dtype: text + doc: The unique identifier entity. + - name: entity_uri + dtype: text + doc: The URI for the entity this reference applies to. This can be an empty string. + dims: + - num_rows + shape: + - null + + - data_type_inc: Data + name: resources + doc: A table for mapping user terms (i.e., keys) to resource entities. + dtype: + - name: resource + dtype: text + doc: The name of the resource. + - name: resource_uri + dtype: text + doc: The URI for the resource. This can be an empty string. + dims: + - num_rows + shape: + - null + + - data_type_inc: Data + name: objects + doc: A table for identifying which objects in a file contain references to external resources. + dtype: + - name: object_id + dtype: text + doc: The UUID for the object. + - name: field + dtype: text + doc: The field of the object. This can be an empty string if the object is a dataset and the field is the + dataset values. + dims: + - num_rows + shape: + - null + + - data_type_inc: Data + name: object_keys + doc: A table for identifying which objects use which keys. + dtype: + - name: objects_idx + dtype: uint + doc: The index to the 'objects' table for the object that holds the key. + - name: keys_idx + dtype: uint + doc: The index to the 'keys' table for the key. + dims: + - num_rows + shape: + - null diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/sparse.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/sparse.yaml new file mode 100644 index 00000000..09de8177 --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/sparse.yaml @@ -0,0 +1,35 @@ +# hdmf-schema-language=2.0.2 +groups: +- data_type_def: CSRMatrix + data_type_inc: Container + doc: 'A compressed sparse row matrix. Data are stored in the standard CSR format, where column indices for row i are + stored in indices[indptr[i]:indptr[i+1]] and their corresponding values are stored in data[indptr[i]:indptr[i+1]].' + attributes: + - name: shape + dtype: uint + dims: + - number of rows, number of columns + shape: + - 2 + doc: The shape (number of rows, number of columns) of this sparse matrix. + datasets: + - name: indices + dtype: uint + dims: + - number of non-zero values + shape: + - null + doc: The column indices. + - name: indptr + dtype: uint + dims: + - number of rows in the matrix + 1 + shape: + - null + doc: The row index pointer. + - name: data + dims: + - number of non-zero values + shape: + - null + doc: The non-zero values in the matrix. diff --git a/nwb-schema/2.3.0/hdmf-common-schema/common/table.yaml b/nwb-schema/2.3.0/hdmf-common-schema/common/table.yaml new file mode 100644 index 00000000..2bacf8b3 --- /dev/null +++ b/nwb-schema/2.3.0/hdmf-common-schema/common/table.yaml @@ -0,0 +1,168 @@ +# hdmf-schema-language=2.0.2 +datasets: + +- data_type_def: VectorData + data_type_inc: Data + doc: An n-dimensional dataset representing a column of a DynamicTable. + If used without an accompanying VectorIndex, first dimension is + along the rows of the DynamicTable and each step along the first + dimension is a cell of the larger table. VectorData can also be + used to represent a ragged array if paired with a VectorIndex. + This allows for storing arrays of varying length in a single cell + of the DynamicTable by indexing into this VectorData. The first + vector is at VectorData[0:VectorIndex[0]]. The second vector is at + VectorData[VectorIndex[0]:VectorIndex[1]], and so on. + dims: + - - dim0 + - - dim0 + - dim1 + - - dim0 + - dim1 + - dim2 + - - dim0 + - dim1 + - dim2 + - dim3 + shape: + - - null + - - null + - null + - - null + - null + - null + - - null + - null + - null + - null + attributes: + - name: description + dtype: text + doc: Description of what these vectors represent. + +- data_type_def: VectorIndex + data_type_inc: VectorData + dtype: uint8 + doc: Used with VectorData to encode a ragged array. An array of indices + into the first dimension of the target VectorData, and forming a map + between the rows of a DynamicTable and the indices of the VectorData. + The name of the VectorIndex is expected to be the name of the target + VectorData object followed by "_index". + dims: + - num_rows + shape: + - null + attributes: + - name: target + dtype: + target_type: VectorData + reftype: object + doc: Reference to the target dataset that this index applies to. + +- data_type_def: ElementIdentifiers + data_type_inc: Data + default_name: element_id + dtype: int + dims: + - num_elements + shape: + - null + doc: A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable. + +- data_type_def: DynamicTableRegion + data_type_inc: VectorData + dtype: int + doc: DynamicTableRegion provides a link from one table to an index or region of another. The `table` attribute is a + link to another `DynamicTable`, indicating which table is referenced, and the data is int(s) indicating the row(s) + (0-indexed) of the target array. `DynamicTableRegion`s can be used to associate rows with repeated meta-data without + data duplication. They can also be used to create hierarchical relationships between multiple `DynamicTable`s. + `DynamicTableRegion` objects may be paired with a `VectorIndex` object to create ragged references, so a single cell + of a `DynamicTable` can reference many rows of another `DynamicTable`. + dims: + - num_rows + shape: + - null + attributes: + - name: table + dtype: + target_type: DynamicTable + reftype: object + doc: Reference to the DynamicTable object that this region applies to. + - name: description + dtype: text + doc: Description of what this table region points to. + +groups: + +- data_type_def: DynamicTable + data_type_inc: Container + doc: A group containing multiple datasets that are aligned on the first dimension + (Currently, this requirement if left up to APIs to check and enforce). These datasets + represent different columns in the table. Apart from a column that contains unique + identifiers for each row, there are no other required datasets. Users are free to add + any number of custom VectorData objects (columns) here. DynamicTable also supports + ragged array columns, where each element can be of a different size. To add a ragged + array column, use a VectorIndex type to index the corresponding VectorData type. + See documentation for VectorData and VectorIndex for more details. + Unlike a compound data type, which is analogous to storing an + array-of-structs, a DynamicTable can be thought of as a struct-of-arrays. This provides + an alternative structure to choose from when optimizing storage for anticipated access + patterns. Additionally, this type provides a way of creating a table without having to + define a compound type up front. Although this convenience may be attractive, users + should think carefully about how data will be accessed. DynamicTable is more appropriate + for column-centric access, whereas a dataset with a compound type would be more + appropriate for row-centric access. Finally, data size should also be taken into account. + For small tables, performance loss may be an acceptable trade-off for the flexibility of + a DynamicTable. + attributes: + - name: colnames + dtype: text + dims: + - num_columns + shape: + - null + doc: The names of the columns in this table. This should be used to specify + an order to the columns. + - name: description + dtype: text + doc: Description of what is in this dynamic table. + datasets: + - name: id + data_type_inc: ElementIdentifiers + dtype: int + dims: + - num_rows + shape: + - null + doc: Array of unique identifiers for the rows of this dynamic table. + - data_type_inc: VectorData + doc: Vector columns, including index columns, of this dynamic table. + quantity: '*' + +- data_type_def: AlignedDynamicTable + data_type_inc: DynamicTable + doc: DynamicTable container that supports storing a collection of sub-tables. Each + sub-table is a DynamicTable itself that is aligned with the main table by row + index. I.e., all DynamicTables stored in this group MUST have the same number + of rows. This type effectively defines a 2-level table in which the main data + is stored in the main table implemented by this type and additional columns of + the table are grouped into categories, with each category being represented by + a separate DynamicTable stored within the group. + attributes: + - name: categories + dtype: text + dims: + - num_categories + shape: + - null + doc: The names of the categories in this AlignedDynamicTable. Each category is + represented by one DynamicTable stored in the parent group. This attribute should + be used to specify an order of categories and the category names must match + the names of the corresponding DynamicTable in the group. + groups: + - data_type_inc: DynamicTable + doc: A DynamicTable representing a particular category for columns in the AlignedDynamicTable + parent container. The table MUST be aligned with (i.e., have the same number + of rows) as all other DynamicTables stored in the AlignedDynamicTable parent + container. The name of the category is given by the name of the DynamicTable + and its description by the description attribute of the DynamicTable. + quantity: '*' From a8c866a87dccefc36ffe790c7784f48e0479c882 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 15:41:50 -0400 Subject: [PATCH 02/19] Update generateCore default to version 2.3.0 --- generateCore.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generateCore.m b/generateCore.m index ea03d204..ca18fa30 100644 --- a/generateCore.m +++ b/generateCore.m @@ -21,7 +21,7 @@ function generateCore(version) % See also GENERATEEXTENSION if nargin == 0 - version = '2.2.5'; + version = '2.3.0'; else validateattributes(version, {'char'}, {'scalartext'}); end From f0959ab53a4434af178f338c761796ebc9cb2624 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 15:55:04 -0400 Subject: [PATCH 03/19] update DynamicTable utility functions to 2.3.0 Due to how VectorIndex is now a VectorData subtype, we now store everything under the `vectordata` property in DynamicTable. All references to the legacy `vectorindex` has been replaced. --- +types/+util/+dynamictable/addRawData.m | 2 +- +types/+util/+dynamictable/addVecInd.m | 2 +- +types/+util/+dynamictable/clear.m | 2 -- +types/+util/+dynamictable/getIndex.m | 23 +++++++++++++++-------- +types/+util/+dynamictable/getRow.m | 2 +- 5 files changed, 18 insertions(+), 13 deletions(-) diff --git a/+types/+util/+dynamictable/addRawData.m b/+types/+util/+dynamictable/addRawData.m index a4b2b720..5060ad19 100644 --- a/+types/+util/+dynamictable/addRawData.m +++ b/+types/+util/+dynamictable/addRawData.m @@ -27,7 +27,7 @@ function addRawData(DynamicTable, column, data, index) if isprop(DynamicTable, index) VecInd = DynamicTable.(index); else - VecInd = DynamicTable.vectorindex.get(index); + VecInd = DynamicTable.vectordata.get(index); end if isa(VecInd.data, 'types.untyped.DataPipe') diff --git a/+types/+util/+dynamictable/addVecInd.m b/+types/+util/+dynamictable/addVecInd.m index 513f4e3e..331352bc 100644 --- a/+types/+util/+dynamictable/addVecInd.m +++ b/+types/+util/+dynamictable/addVecInd.m @@ -35,6 +35,6 @@ if isprop(DynamicTable, vecIndName) DynamicTable.(vecIndName) = VecIndex; else - DynamicTable.vectorindex.set(vecIndName, VecIndex); + DynamicTable.vectordata.set(vecIndName, VecIndex); end end \ No newline at end of file diff --git a/+types/+util/+dynamictable/clear.m b/+types/+util/+dynamictable/clear.m index 4883bbf7..33cf6033 100644 --- a/+types/+util/+dynamictable/clear.m +++ b/+types/+util/+dynamictable/clear.m @@ -6,6 +6,4 @@ function clear(DynamicTable) DynamicTable.vectordata = types.untyped.Set(@(nm, val)types.util.checkConstraint(... 'vectordata', nm, struct(), {'types.hdmf_common.VectorData'}, val)); -DynamicTable.vectorindex = types.untyped.Set(@(nm, val)types.util.checkConstraint(... - 'vectorindex', nm, struct(), {'types.hdmf_common.VectorIndex'}, val)); end \ No newline at end of file diff --git a/+types/+util/+dynamictable/getIndex.m b/+types/+util/+dynamictable/getIndex.m index e7f1ceda..300870e8 100644 --- a/+types/+util/+dynamictable/getIndex.m +++ b/+types/+util/+dynamictable/getIndex.m @@ -10,15 +10,22 @@ 'MatNWB:GetIndex:InvalidColumn',... 'Column name not found `%s`', column); -vecIndKeys = keys(DynamicTable.vectorindex); -for i = 1:length(vecIndKeys) - vik = vecIndKeys{i}; - if isVecIndColumn(DynamicTable.vectorindex.get(vik), column) - indexName = vik; +vecKeys = keys(DynamicTable.vectordata); +for i = 1:length(vecKeys) + vk = vecKeys{i}; + vecData = DynamicTable.vectordata.get(vk); + if ~isa(vecData, 'types.hdmf_common.VectorIndex') + continue; + end + if isVecIndColumn(DynamicTable.vectordata.get(vk), column) + indexName = vk; return; end end +% check if dynamic table object has extended properties which point to +% vector indices. These are specifically defined by the schema to be +% properties. DynamicTableProps = properties(DynamicTable); isPropVecInd = false(size(DynamicTableProps)); for i = 1:length(DynamicTableProps) @@ -27,10 +34,10 @@ DynamicTableProps = DynamicTableProps(isPropVecInd); for i = 1:length(DynamicTableProps) - vik = DynamicTableProps{i}; - VecInd = DynamicTable.(vik); + vk = DynamicTableProps{i}; + VecInd = DynamicTable.(vk); if isVecIndColumn(VecInd, column) - indexName = vik; + indexName = vk; return; end end diff --git a/+types/+util/+dynamictable/getRow.m b/+types/+util/+dynamictable/getRow.m index ef25ec74..bd8e69e5 100644 --- a/+types/+util/+dynamictable/getRow.m +++ b/+types/+util/+dynamictable/getRow.m @@ -67,7 +67,7 @@ if isprop(DynamicTable, indexName) VectorIndex = DynamicTable.(indexName); else - VectorIndex = DynamicTable.vectorindex.get(indexName); + VectorIndex = DynamicTable.vectordata.get(indexName); end matInd = unique(matInd); From 40bb76b463cb7ca2787e5da27474ac2d4d2854db Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 15:56:21 -0400 Subject: [PATCH 04/19] Minor fix to ecephys tutorial remove reference to `vectorindex` property as that no longer exists. --- tutorials/ecephys.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tutorials/ecephys.m b/tutorials/ecephys.m index 5626d329..96b8a300 100644 --- a/tutorials/ecephys.m +++ b/tutorials/ecephys.m @@ -174,8 +174,8 @@ % On the other hand, if the column is a custom name, it must be added by setting % |DynamicTable.vectordata.set('name', VectorData)| (e.g. |'quality'|) % below. You can see what the default column names for |units| are by -% typing |nwb.units|. |colnames|, |description|, |id|, |vectordata|, -% |vectorindex| and |help| are all |DynamicTable| properties, but the +% typing |nwb.units|. |colnames|, |description|, |id|, |vectordata| +% and |help| are all |DynamicTable| properties, but the % others are default columns. % % 2) Each row of a column is an array of varying length, you must add two objects, a From a3300cd16e7b36040e85445ee534eba6cd2fb0d9 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:33:05 -0400 Subject: [PATCH 05/19] UnitTimes tests now uses DynamicTable utilities --- +tests/+system/DynamicTableTest.m | 4 ++-- +tests/+system/UnitTimesIOTest.m | 21 ++++----------------- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/+tests/+system/DynamicTableTest.m b/+tests/+system/DynamicTableTest.m index 27444046..5c04d721 100644 --- a/+tests/+system/DynamicTableTest.m +++ b/+tests/+system/DynamicTableTest.m @@ -19,8 +19,8 @@ function addContainer(~, file) 'id', id(i),... 'tablepath', '/intervals/trials'); end - t = table(id(101:200), (101:200) .', (102:201) .', mat2cell(rand(500,1),... - repmat(5, 100, 1)), repmat({'TRUE'}, 100, 1),... + t = table(id(101:200), (101:200) .', (102:201) .',... + mat2cell(rand(500,1), repmat(5, 100, 1)), repmat({'TRUE'}, 100, 1),... 'VariableNames', {'id', 'start_time', 'stop_time', 'randomvalues', 'stringdata'}); file.intervals_trials.addRow(t); end diff --git a/+tests/+system/UnitTimesIOTest.m b/+tests/+system/UnitTimesIOTest.m index c8d11216..787b82f3 100644 --- a/+tests/+system/UnitTimesIOTest.m +++ b/+tests/+system/UnitTimesIOTest.m @@ -2,23 +2,10 @@ methods function addContainer(~, file) vdata = rand(10,1); - vd = types.hdmf_common.VectorData('data', vdata, 'description', 'descr'); - - spike_loc = '/units/spike_times'; - vd_ref = [... - types.untyped.RegionView(spike_loc, 1),... - types.untyped.RegionView(spike_loc, 2:5),... - types.untyped.RegionView(spike_loc, 9:10)... - ]; - vi = types.hdmf_common.VectorIndex('data', vd_ref,... - 'target', types.untyped.ObjectView(spike_loc)); - ei = types.hdmf_common.ElementIdentifiers('data', 1:3); - file.units = types.core.Units(... - 'colnames', {'spike_times'},... - 'description', 'test Units',... - 'spike_times', vd, ... - 'spike_times_index', vi,... - 'id', ei); + file.units = types.core.Units('description', 'test Units', 'colnames', {'spike_times'}); + file.units.addRow('spike_times', vdata(1), 'tablepath', '/units'); + file.units.addRow('spike_times', vdata(2:5)); + file.units.addRow('spike_times', vdata(6:end)); end function c = getContainer(~, file) From 7663e45c1bc39b14c5cdfed2f9d8765a1b16845b Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:38:32 -0400 Subject: [PATCH 06/19] Fix addRow behaviors, prioritize tablepath - Given how the MATLAB table already requires data splitting according to data type, adding a row by tableRow no longer requires wrapping a cell. - The mere existence of `tablepath` now forces the creation of a Ragged Array regardless of whether or not the data fits to the standard. --- +types/+util/+dynamictable/addTableRow.m | 18 ++++++++++-------- +types/+util/+dynamictable/addVarargRow.m | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/+types/+util/+dynamictable/addTableRow.m b/+types/+util/+dynamictable/addTableRow.m index d8ff41a6..84fcca16 100644 --- a/+types/+util/+dynamictable/addTableRow.m +++ b/+types/+util/+dynamictable/addTableRow.m @@ -34,23 +34,25 @@ function addTableRow(DynamicTable, subTable, varargin) TypeMap = types.util.dynamictable.getTypeMap(DynamicTable); for i = 1:length(rowNames) rn = rowNames{i}; - rv = subTable.(rn); + rowColumn = subTable.(rn); if isKey(TypeMap, rn) - validateType(TypeMap(rn), rv); + validateType(TypeMap(rn), rowColumn); end % instantiate vector index here because it's dependent on the table % fullpath. vecIndName = types.util.dynamictable.getIndex(DynamicTable, rn); - if isempty(vecIndName) && ~iscellstr(rv) && iscell(rv) + if isempty(vecIndName) && (~isempty(p.Results.tablepath) || (~iscellstr(rowColumn) && iscell(rowColumn))) vecIndName = types.util.dynamictable.addVecInd(DynamicTable, rn, p.Results.tablepath); end - if ~iscell(rv) || iscellstr(rv) - rv = {rv}; - end - for i = 1:length(rv) - types.util.dynamictable.addRawData(DynamicTable, rn, rv{i}, vecIndName); + for j = 1:length(rowColumn) + if iscell(rowColumn) + rv = rowColumn{j}; + else + rv = rowColumn(j); + end + types.util.dynamictable.addRawData(DynamicTable, rn, rv, vecIndName); end end diff --git a/+types/+util/+dynamictable/addVarargRow.m b/+types/+util/+dynamictable/addVarargRow.m index 674ec451..3e41ced8 100644 --- a/+types/+util/+dynamictable/addVarargRow.m +++ b/+types/+util/+dynamictable/addVarargRow.m @@ -48,7 +48,7 @@ function addVarargRow(DynamicTable, varargin) % instantiate vector index here because it's dependent on the table % fullpath. vecIndName = types.util.dynamictable.getIndex(DynamicTable, rn); - if isempty(vecIndName) && size(rv, 1) > 1 + if isempty(vecIndName) && (~isempty(p.Results.tablepath) || size(rv, 1) > 1) vecIndName = types.util.dynamictable.addVecInd(DynamicTable, rn, p.Results.tablepath); end types.util.dynamictable.addRawData(DynamicTable, rn, rv, vecIndName); From 3309c482c35de4f047e152f8a85ad9abb956573f Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:41:05 -0400 Subject: [PATCH 07/19] addVecInd fix empty VecData error case --- +types/+util/+dynamictable/addVecInd.m | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/+types/+util/+dynamictable/addVecInd.m b/+types/+util/+dynamictable/addVecInd.m index 331352bc..1d5b11a4 100644 --- a/+types/+util/+dynamictable/addVecInd.m +++ b/+types/+util/+dynamictable/addVecInd.m @@ -19,10 +19,13 @@ else VecData = DynamicTable.vectordata.get(colName); end - if isa(VecData.data, 'types.untyped.DataPipe') - oldDataHeight = VecData.data.offset; - else - oldDataHeight = size(VecData.data, 1); + + if ~isempty(VecData) + if isa(VecData.data, 'types.untyped.DataPipe') + oldDataHeight = VecData.data.offset; + else + oldDataHeight = size(VecData.data, 1); + end end end From 666454cf940e8b49c733e9b55e6ea4e1b56d5c81 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:41:33 -0400 Subject: [PATCH 08/19] Fix VectorIndex missing description VectorIndex used to subclass the Index type which did not require it to have a `description` property. It now automatically sets it to prevent export errors. --- +types/+util/+dynamictable/addVecInd.m | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/+types/+util/+dynamictable/addVecInd.m b/+types/+util/+dynamictable/addVecInd.m index 1d5b11a4..e28b8507 100644 --- a/+types/+util/+dynamictable/addVecInd.m +++ b/+types/+util/+dynamictable/addVecInd.m @@ -34,7 +34,8 @@ % directly to each row index. VecIndex = types.hdmf_common.VectorIndex(... 'target', vecTarget,... - 'data', [0:(oldDataHeight-1)] .'); %#ok + 'data', [0:(oldDataHeight-1)] .',... + 'description', sprintf('Index into column %s', colName)); %#ok if isprop(DynamicTable, vecIndName) DynamicTable.(vecIndName) = VecIndex; else From 3fc5f1670449c4353a898a73ddf6102b7419d284 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:42:39 -0400 Subject: [PATCH 09/19] Fix semantic error on type validation --- +types/+util/+dynamictable/getTypeMap.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/+types/+util/+dynamictable/getTypeMap.m b/+types/+util/+dynamictable/getTypeMap.m index b51696a6..a321ff7e 100644 --- a/+types/+util/+dynamictable/getTypeMap.m +++ b/+types/+util/+dynamictable/getTypeMap.m @@ -8,7 +8,7 @@ return; end TypeStruct = struct('type', '', 'dims', [0, 0]); -for i = length(DynamicTable.colnames) +for i = 1:length(DynamicTable.colnames) colnm = DynamicTable.colnames{i}; if isprop(DynamicTable, colnm) colVecData = DynamicTable.(colnm); From d10d69ac1d5c6430caf64d183afefc21230702ee Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 17:43:11 -0400 Subject: [PATCH 10/19] Minor refactor - addRawData: reorganize redundant logic. - checkDtype. Add error ID and reformat error message. --- +types/+util/+dynamictable/addRawData.m | 17 +++++------------ +types/+util/checkDtype.m | 7 ++++--- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/+types/+util/+dynamictable/addRawData.m b/+types/+util/+dynamictable/addRawData.m index 5060ad19..0dcc84ff 100644 --- a/+types/+util/+dynamictable/addRawData.m +++ b/+types/+util/+dynamictable/addRawData.m @@ -30,18 +30,11 @@ function addRawData(DynamicTable, column, data, index) VecInd = DynamicTable.vectordata.get(index); end - if isa(VecInd.data, 'types.untyped.DataPipe') - if 0 == VecInd.data.dims - raggedOffset = 0; - else - raggedOffset = VecInd.data.load(VecInd.data.dims); - end - else - if isempty(VecInd.data) - raggedOffset = 0; - else - raggedOffset = VecInd.data(end); - end + raggedOffset = 0; + if isa(VecInd.data, 'types.untyped.DataPipe') && 0 < VecInd.data.dims + raggedOffset = VecInd.data.load(VecInd.data.dims); + elseif ~isempty(VecInd.data) + raggedOffset = VecInd.data(end); end raggedValue = raggedOffset + size(data, 1); diff --git a/+types/+util/checkDtype.m b/+types/+util/checkDtype.m index 03e23b29..e4e4d602 100644 --- a/+types/+util/checkDtype.m +++ b/+types/+util/checkDtype.m @@ -23,9 +23,10 @@ subv = val(names{i}); end assert(isvector(subv),... - ['types.util.checkDtype: struct of arrays as a compound type ',... - 'cannot have multidimensional data in their fields. Field data ',... - 'shape must be scalar or vector to be valid.']); + 'MatNWB:CheckDType:MultiDimStructArrays',... + ['struct of arrays as a compound type ',... + 'cannot have multidimensional data in their fields. ',... + 'Field data shape must be scalar or vector to be valid.']); sizes(i) = length(subv); end sizes = unique(sizes); From 6099aa9dd9c70084d8df4c5b8407e423fafc874e Mon Sep 17 00:00:00 2001 From: Lawrence Date: Wed, 12 May 2021 18:14:53 -0400 Subject: [PATCH 11/19] Add pre-2.3.0 compatibility for util functions Due to quirks in the generation functions, DynamicTable utilities may occur in vectordata OR vectorindex going forward. All pre-2.3.0 Dynamic Tables only store their VectorIndex objects into `vectorindex` while post-2.3.0 VectorIndex objects are stored in `vectordata` along with VectorData. --- +types/+util/+dynamictable/addRawData.m | 2 ++ +types/+util/+dynamictable/addVecInd.m | 2 ++ +types/+util/+dynamictable/clear.m | 4 ++++ +types/+util/+dynamictable/getIndex.m | 17 ++++++++++++++--- +types/+util/+dynamictable/getRow.m | 2 ++ 5 files changed, 24 insertions(+), 3 deletions(-) diff --git a/+types/+util/+dynamictable/addRawData.m b/+types/+util/+dynamictable/addRawData.m index 0dcc84ff..c490a3e0 100644 --- a/+types/+util/+dynamictable/addRawData.m +++ b/+types/+util/+dynamictable/addRawData.m @@ -26,6 +26,8 @@ function addRawData(DynamicTable, column, data, index) if ~isempty(index) if isprop(DynamicTable, index) VecInd = DynamicTable.(index); + elseif isprop(DynamicTable, 'vectorindex') % Schema < 2.3.0 + VecInd = DynamicTable.vectorindex.get(index); else VecInd = DynamicTable.vectordata.get(index); end diff --git a/+types/+util/+dynamictable/addVecInd.m b/+types/+util/+dynamictable/addVecInd.m index e28b8507..db998f59 100644 --- a/+types/+util/+dynamictable/addVecInd.m +++ b/+types/+util/+dynamictable/addVecInd.m @@ -38,6 +38,8 @@ 'description', sprintf('Index into column %s', colName)); %#ok if isprop(DynamicTable, vecIndName) DynamicTable.(vecIndName) = VecIndex; +elseif isprop(DynamicTable, 'vectorindex') + DynamicTable.vectorindex.set(vecIndName, VecIndex); else DynamicTable.vectordata.set(vecIndName, VecIndex); end diff --git a/+types/+util/+dynamictable/clear.m b/+types/+util/+dynamictable/clear.m index 33cf6033..83056b87 100644 --- a/+types/+util/+dynamictable/clear.m +++ b/+types/+util/+dynamictable/clear.m @@ -6,4 +6,8 @@ function clear(DynamicTable) DynamicTable.vectordata = types.untyped.Set(@(nm, val)types.util.checkConstraint(... 'vectordata', nm, struct(), {'types.hdmf_common.VectorData'}, val)); +if isprop(DynamicTable, 'vectorindex') % Schema version <2.3.0 + DynamicTable.vectorindex = types.untyped.Set(@(nm, val)types.util.checkConstraint(... + 'vectorindex', nm, struct(), {'types.hdmf_common.VectorIndex'}, val)); +end end \ No newline at end of file diff --git a/+types/+util/+dynamictable/getIndex.m b/+types/+util/+dynamictable/getIndex.m index 300870e8..e20f61aa 100644 --- a/+types/+util/+dynamictable/getIndex.m +++ b/+types/+util/+dynamictable/getIndex.m @@ -10,14 +10,25 @@ 'MatNWB:GetIndex:InvalidColumn',... 'Column name not found `%s`', column); -vecKeys = keys(DynamicTable.vectordata); +% after Schema version 2.3.0, VectorIndex objects subclass VectorData which +% meant that vectorindex and vectordata sets could be combined. +isLegacyDynamicTable = isprop(DynamicTable, 'vectorindex'); +if isLegacyDynamicTable + vecKeys = keys(DynamicTable.vectorindex); +else + vecKeys = keys(DynamicTable.vectordata); +end for i = 1:length(vecKeys) vk = vecKeys{i}; - vecData = DynamicTable.vectordata.get(vk); + if isLegacyDynamicTable + vecData = DynamicTable.vectorindex.get(vk); + else + vecData = DynamicTable.vectordata.get(vk); + end if ~isa(vecData, 'types.hdmf_common.VectorIndex') continue; end - if isVecIndColumn(DynamicTable.vectordata.get(vk), column) + if isVecIndColumn(vecData, column) indexName = vk; return; end diff --git a/+types/+util/+dynamictable/getRow.m b/+types/+util/+dynamictable/getRow.m index bd8e69e5..54b7a5d8 100644 --- a/+types/+util/+dynamictable/getRow.m +++ b/+types/+util/+dynamictable/getRow.m @@ -66,6 +66,8 @@ function indMap = getIndexInd(DynamicTable, indexName, matInd) if isprop(DynamicTable, indexName) VectorIndex = DynamicTable.(indexName); +elseif isprop(DynamicTable, 'vectorindex') % Schema version < 2.3.0 + VectorIndex = DynamicTable.vectorindex.get(indexName); else VectorIndex = DynamicTable.vectordata.get(indexName); end From baddf5f2b36acc126d4e1f79b8be2761f6977c96 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Fri, 14 May 2021 15:48:57 -0400 Subject: [PATCH 12/19] remove `vectorindex` reference in basicUsage tutorial --- tutorials/basicUsage.mlx | Bin 94804 -> 94755 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tutorials/basicUsage.mlx b/tutorials/basicUsage.mlx index 031df63a399028eacfd9fd94cd0f7df569efd249..49c5c38eaad5e32519135fae0a32a94d0f914709 100644 GIT binary patch delta 5443 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 delta 5508 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 DV>Wj% From e0fccd5d182a7b604ae574ad3b52b037353a76cc Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 13:29:48 -0400 Subject: [PATCH 13/19] rerun pipeline From a7efddd08cea1c13a5a764eaac6c4c9628fb5bfa Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 14:17:06 -0400 Subject: [PATCH 14/19] Update documentation to 2.3.0 --- doc/+types/+core/AbstractFeatureSeries.html | 151 ++++++++-- doc/+types/+core/AnnotationSeries.html | 151 ++++++++-- doc/+types/+core/BehavioralEpochs.html | 70 ++++- doc/+types/+core/BehavioralEvents.html | 70 ++++- doc/+types/+core/BehavioralTimeSeries.html | 70 ++++- doc/+types/+core/ClusterWaveforms.html | 70 ++++- doc/+types/+core/Clustering.html | 70 ++++- doc/+types/+core/CompassDirection.html | 70 ++++- doc/+types/+core/CorrectedImageStack.html | 70 ++++- doc/+types/+core/CurrentClampSeries.html | 171 +++++++++-- .../+core/CurrentClampStimulusSeries.html | 171 +++++++++-- doc/+types/+core/DecompositionSeries.html | 163 ++++++++-- doc/+types/+core/Device.html | 70 ++++- doc/+types/+core/DfOverF.html | 70 ++++- doc/+types/+core/DynamicTable.html | 240 --------------- doc/+types/+core/DynamicTableRegion.html | 216 -------------- doc/+types/+core/ElectricalSeries.html | 167 +++++++++-- doc/+types/+core/ElectrodeGroup.html | 70 ++++- doc/+types/+core/ElementIdentifiers.html | 192 ------------ doc/+types/+core/EventDetection.html | 70 ++++- doc/+types/+core/EventWaveform.html | 70 ++++- doc/+types/+core/EyeTracking.html | 70 ++++- doc/+types/+core/FeatureExtraction.html | 70 ++++- doc/+types/+core/FilteredEphys.html | 72 ++++- doc/+types/+core/Fluorescence.html | 70 ++++- doc/+types/+core/GrayscaleImage.html | 85 ++++-- doc/+types/+core/IZeroClampSeries.html | 186 +++++++++--- doc/+types/+core/Image.html | 75 ++++- doc/+types/+core/ImageMaskSeries.html | 183 ++++++++++-- doc/+types/+core/ImageSegmentation.html | 70 ++++- doc/+types/+core/ImageSeries.html | 163 ++++++++-- doc/+types/+core/Images.html | 70 ++++- doc/+types/+core/ImagingPlane.html | 70 ++++- doc/+types/+core/ImagingRetinotopy.html | 70 ++++- doc/+types/+core/Index.html | 204 ------------- doc/+types/+core/IndexSeries.html | 151 ++++++++-- doc/+types/+core/IntervalSeries.html | 151 ++++++++-- doc/+types/+core/IntracellularElectrode.html | 70 ++++- doc/+types/+core/LFP.html | 72 ++++- doc/+types/+core/LabMetaData.html | 70 ++++- doc/+types/+core/MotionCorrection.html | 70 ++++- doc/+types/+core/NWBContainer.html | 70 ++++- doc/+types/+core/NWBData.html | 75 ++++- doc/+types/+core/NWBDataInterface.html | 70 ++++- doc/+types/+core/NWBFile.html | 70 ++++- doc/+types/+core/OpticalChannel.html | 70 ++++- doc/+types/+core/OpticalSeries.html | 183 ++++++++++-- doc/+types/+core/OptogeneticSeries.html | 151 ++++++++-- doc/+types/+core/OptogeneticStimulusSite.html | 70 ++++- doc/+types/+core/PatchClampSeries.html | 151 ++++++++-- doc/+types/+core/PlaneSegmentation.html | 126 ++++++-- doc/+types/+core/Position.html | 70 ++++- doc/+types/+core/ProcessingModule.html | 70 ++++- doc/+types/+core/PupilTracking.html | 70 ++++- doc/+types/+core/RGBAImage.html | 85 ++++-- doc/+types/+core/RGBImage.html | 85 ++++-- doc/+types/+core/RetinotopyMap.html | 216 -------------- doc/+types/+core/RoiResponseSeries.html | 151 ++++++++-- doc/+types/+core/ScratchData.html | 75 ++++- doc/+types/+core/SpatialSeries.html | 151 ++++++++-- doc/+types/+core/SpecFile.html | 216 -------------- doc/+types/+core/SpikeEventSeries.html | 182 ++++++++++-- doc/+types/+core/Subject.html | 82 ++++- doc/+types/+core/SweepTable.html | 126 ++++++-- doc/+types/+core/TimeIntervals.html | 126 ++++++-- doc/+types/+core/TimeSeries.html | 87 +++++- doc/+types/+core/TwoPhotonSeries.html | 183 ++++++++++-- doc/+types/+core/Units.html | 167 +++++++++-- doc/+types/+core/VectorData.html | 204 ------------- doc/+types/+core/VectorIndex.html | 204 ------------- doc/+types/+core/VoltageClampSeries.html | 171 +++++++++-- .../+core/VoltageClampStimulusSeries.html | 171 +++++++++-- .../AlignedDynamicTable.html} | 169 ++++++++--- doc/+types/+hdmf_common/CSRMatrix.html | 82 +++-- doc/+types/+hdmf_common/Container.html | 67 ++++- doc/+types/+hdmf_common/Data.html | 65 +++- doc/+types/+hdmf_common/DynamicTable.html | 110 +++++-- .../+hdmf_common/DynamicTableRegion.html | 80 ++++- .../+hdmf_common/ElementIdentifiers.html | 75 ++++- doc/+types/+hdmf_common/Index.html | 204 ------------- .../SimpleMultiContainer.html} | 114 ++++--- doc/+types/+hdmf_common/VectorData.html | 77 ++++- doc/+types/+hdmf_common/VectorIndex.html | 96 ++++-- doc/NwbFile.html | 280 ++++++++++++++---- doc/index.html | 5 +- 85 files changed, 6377 insertions(+), 3479 deletions(-) delete mode 100644 doc/+types/+core/DynamicTable.html delete mode 100644 doc/+types/+core/DynamicTableRegion.html delete mode 100644 doc/+types/+core/ElementIdentifiers.html delete mode 100644 doc/+types/+core/Index.html delete mode 100644 doc/+types/+core/RetinotopyMap.html delete mode 100644 doc/+types/+core/SpecFile.html delete mode 100644 doc/+types/+core/VectorData.html delete mode 100644 doc/+types/+core/VectorIndex.html rename doc/+types/{+core/RetinotopyImage.html => +hdmf_common/AlignedDynamicTable.html} (50%) delete mode 100644 doc/+types/+hdmf_common/Index.html rename doc/+types/{+core/AxisMap.html => +hdmf_common/SimpleMultiContainer.html} (61%) diff --git a/doc/+types/+core/AbstractFeatureSeries.html b/doc/+types/+core/AbstractFeatureSeries.html index be6ca395..244870d9 100644 --- a/doc/+types/+core/AbstractFeatureSeries.html +++ b/doc/+types/+core/AbstractFeatureSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.AbstractFeatureSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.AbstractFeatureSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.AbstractFeatureSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.AbstractFeatureSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.AbstractFeatureSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.AbstractFeatureSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.AbstractFeatureSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.AbstractFeatureSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.AbstractFeatureSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + feature_units @@ -106,28 +134,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.AbstractFeatureSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.AbstractFeatureSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.AbstractFeatureSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.AbstractFeatureSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.AbstractFeatureSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.AbstractFeatureSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -140,7 +185,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.AbstractFeatureSeries/addlistener is inherited from superclass HANDLE +   + @@ -148,7 +196,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.AbstractFeatureSeries/delete is inherited from superclass HANDLE +   + @@ -156,7 +207,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.AbstractFeatureSeries/eq is inherited from superclass HANDLE +   + @@ -164,7 +218,10 @@ export - find reference properties  + find reference properties + Help for types.core.AbstractFeatureSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -172,7 +229,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.AbstractFeatureSeries/findobj is inherited from superclass HANDLE +   + @@ -180,7 +240,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.AbstractFeatureSeries/findprop is inherited from superclass HANDLE +   + @@ -188,7 +251,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.AbstractFeatureSeries/ge is inherited from superclass HANDLE +   + @@ -196,7 +262,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.AbstractFeatureSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -204,7 +273,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.AbstractFeatureSeries/isvalid is inherited from superclass HANDLE +   + @@ -212,7 +284,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.AbstractFeatureSeries/le is inherited from superclass HANDLE +   + @@ -220,7 +295,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.AbstractFeatureSeries/listener is inherited from superclass HANDLE +   + @@ -236,7 +314,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.AbstractFeatureSeries/lt is inherited from superclass HANDLE +   + @@ -244,7 +325,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.AbstractFeatureSeries/ne is inherited from superclass HANDLE +   + @@ -252,7 +336,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.AbstractFeatureSeries/notify is inherited from superclass HANDLE +   + @@ -286,6 +373,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/AnnotationSeries.html b/doc/+types/+core/AnnotationSeries.html index 88fcffbe..db393820 100644 --- a/doc/+types/+core/AnnotationSeries.html +++ b/doc/+types/+core/AnnotationSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.AnnotationSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.AnnotationSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.AnnotationSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.AnnotationSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.AnnotationSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,50 +95,76 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.AnnotationSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.AnnotationSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.AnnotationSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.AnnotationSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.AnnotationSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.AnnotationSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.AnnotationSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.AnnotationSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.AnnotationSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.AnnotationSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -132,7 +177,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.AnnotationSeries/addlistener is inherited from superclass HANDLE +   + @@ -140,7 +188,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.AnnotationSeries/delete is inherited from superclass HANDLE +   + @@ -148,7 +199,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.AnnotationSeries/eq is inherited from superclass HANDLE +   + @@ -156,7 +210,10 @@ export - find reference properties  + find reference properties + Help for types.core.AnnotationSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -164,7 +221,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.AnnotationSeries/findobj is inherited from superclass HANDLE +   + @@ -172,7 +232,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.AnnotationSeries/findprop is inherited from superclass HANDLE +   + @@ -180,7 +243,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.AnnotationSeries/ge is inherited from superclass HANDLE +   + @@ -188,7 +254,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.AnnotationSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -196,7 +265,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.AnnotationSeries/isvalid is inherited from superclass HANDLE +   + @@ -204,7 +276,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.AnnotationSeries/le is inherited from superclass HANDLE +   + @@ -212,7 +287,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.AnnotationSeries/listener is inherited from superclass HANDLE +   + @@ -228,7 +306,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.AnnotationSeries/lt is inherited from superclass HANDLE +   + @@ -236,7 +317,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.AnnotationSeries/ne is inherited from superclass HANDLE +   + @@ -244,7 +328,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.AnnotationSeries/notify is inherited from superclass HANDLE +   + @@ -278,6 +365,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/BehavioralEpochs.html b/doc/+types/+core/BehavioralEpochs.html index 089c64a7..82f27bf1 100644 --- a/doc/+types/+core/BehavioralEpochs.html +++ b/doc/+types/+core/BehavioralEpochs.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.BehavioralEpochs/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.BehavioralEpochs/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.BehavioralEpochs/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.BehavioralEpochs/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.BehavioralEpochs/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.BehavioralEpochs/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.BehavioralEpochs/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.BehavioralEpochs/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.BehavioralEpochs/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.BehavioralEpochs/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.BehavioralEpochs/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.BehavioralEpochs/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.BehavioralEpochs/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.BehavioralEpochs/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/BehavioralEvents.html b/doc/+types/+core/BehavioralEvents.html index 6602df0b..74c1b2f0 100644 --- a/doc/+types/+core/BehavioralEvents.html +++ b/doc/+types/+core/BehavioralEvents.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.BehavioralEvents/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.BehavioralEvents/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.BehavioralEvents/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.BehavioralEvents/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.BehavioralEvents/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.BehavioralEvents/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.BehavioralEvents/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.BehavioralEvents/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.BehavioralEvents/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.BehavioralEvents/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.BehavioralEvents/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.BehavioralEvents/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.BehavioralEvents/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.BehavioralEvents/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/BehavioralTimeSeries.html b/doc/+types/+core/BehavioralTimeSeries.html index f04ce612..3afd1d7e 100644 --- a/doc/+types/+core/BehavioralTimeSeries.html +++ b/doc/+types/+core/BehavioralTimeSeries.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.BehavioralTimeSeries/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.BehavioralTimeSeries/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.BehavioralTimeSeries/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.BehavioralTimeSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.BehavioralTimeSeries/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.BehavioralTimeSeries/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.BehavioralTimeSeries/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.BehavioralTimeSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.BehavioralTimeSeries/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.BehavioralTimeSeries/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.BehavioralTimeSeries/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.BehavioralTimeSeries/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.BehavioralTimeSeries/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.BehavioralTimeSeries/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/ClusterWaveforms.html b/doc/+types/+core/ClusterWaveforms.html index 4468edcc..d8e33937 100644 --- a/doc/+types/+core/ClusterWaveforms.html +++ b/doc/+types/+core/ClusterWaveforms.html @@ -75,7 +75,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ClusterWaveforms/addlistener is inherited from superclass HANDLE +   + @@ -83,7 +86,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ClusterWaveforms/delete is inherited from superclass HANDLE +   + @@ -91,7 +97,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ClusterWaveforms/eq is inherited from superclass HANDLE +   + @@ -99,7 +108,10 @@ export - find reference properties  + find reference properties + Help for types.core.ClusterWaveforms/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -107,7 +119,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ClusterWaveforms/findobj is inherited from superclass HANDLE +   + @@ -115,7 +130,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ClusterWaveforms/findprop is inherited from superclass HANDLE +   + @@ -123,7 +141,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ClusterWaveforms/ge is inherited from superclass HANDLE +   + @@ -131,7 +152,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ClusterWaveforms/gt is inherited from superclass HANDLE +   + Sealed @@ -139,7 +163,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ClusterWaveforms/isvalid is inherited from superclass HANDLE +   + @@ -147,7 +174,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ClusterWaveforms/le is inherited from superclass HANDLE +   + @@ -155,7 +185,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ClusterWaveforms/listener is inherited from superclass HANDLE +   + @@ -171,7 +204,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ClusterWaveforms/lt is inherited from superclass HANDLE +   + @@ -179,7 +215,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ClusterWaveforms/ne is inherited from superclass HANDLE +   + @@ -187,7 +226,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ClusterWaveforms/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/Clustering.html b/doc/+types/+core/Clustering.html index df6b1414..8cbc846a 100644 --- a/doc/+types/+core/Clustering.html +++ b/doc/+types/+core/Clustering.html @@ -73,7 +73,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.Clustering/addlistener is inherited from superclass HANDLE +   + @@ -81,7 +84,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.Clustering/delete is inherited from superclass HANDLE +   + @@ -89,7 +95,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.Clustering/eq is inherited from superclass HANDLE +   + @@ -97,7 +106,10 @@ export - find reference properties  + find reference properties + Help for types.core.Clustering/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -105,7 +117,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.Clustering/findobj is inherited from superclass HANDLE +   + @@ -113,7 +128,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.Clustering/findprop is inherited from superclass HANDLE +   + @@ -121,7 +139,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.Clustering/ge is inherited from superclass HANDLE +   + @@ -129,7 +150,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.Clustering/gt is inherited from superclass HANDLE +   + Sealed @@ -137,7 +161,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.Clustering/isvalid is inherited from superclass HANDLE +   + @@ -145,7 +172,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.Clustering/le is inherited from superclass HANDLE +   + @@ -153,7 +183,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.Clustering/listener is inherited from superclass HANDLE +   + @@ -169,7 +202,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.Clustering/lt is inherited from superclass HANDLE +   + @@ -177,7 +213,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.Clustering/ne is inherited from superclass HANDLE +   + @@ -185,7 +224,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.Clustering/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/CompassDirection.html b/doc/+types/+core/CompassDirection.html index 0865734c..6375b4ca 100644 --- a/doc/+types/+core/CompassDirection.html +++ b/doc/+types/+core/CompassDirection.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.CompassDirection/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.CompassDirection/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.CompassDirection/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.CompassDirection/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.CompassDirection/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.CompassDirection/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.CompassDirection/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.CompassDirection/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.CompassDirection/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.CompassDirection/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.CompassDirection/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.CompassDirection/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.CompassDirection/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.CompassDirection/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/CorrectedImageStack.html b/doc/+types/+core/CorrectedImageStack.html index c6099bfb..dc9e2529 100644 --- a/doc/+types/+core/CorrectedImageStack.html +++ b/doc/+types/+core/CorrectedImageStack.html @@ -71,7 +71,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.CorrectedImageStack/addlistener is inherited from superclass HANDLE +   + @@ -79,7 +82,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.CorrectedImageStack/delete is inherited from superclass HANDLE +   + @@ -87,7 +93,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.CorrectedImageStack/eq is inherited from superclass HANDLE +   + @@ -95,7 +104,10 @@ export - find reference properties  + find reference properties + Help for types.core.CorrectedImageStack/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -103,7 +115,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.CorrectedImageStack/findobj is inherited from superclass HANDLE +   + @@ -111,7 +126,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.CorrectedImageStack/findprop is inherited from superclass HANDLE +   + @@ -119,7 +137,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.CorrectedImageStack/ge is inherited from superclass HANDLE +   + @@ -127,7 +148,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.CorrectedImageStack/gt is inherited from superclass HANDLE +   + Sealed @@ -135,7 +159,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.CorrectedImageStack/isvalid is inherited from superclass HANDLE +   + @@ -143,7 +170,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.CorrectedImageStack/le is inherited from superclass HANDLE +   + @@ -151,7 +181,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.CorrectedImageStack/listener is inherited from superclass HANDLE +   + @@ -167,7 +200,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.CorrectedImageStack/lt is inherited from superclass HANDLE +   + @@ -175,7 +211,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.CorrectedImageStack/ne is inherited from superclass HANDLE +   + @@ -183,7 +222,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.CorrectedImageStack/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/CurrentClampSeries.html b/doc/+types/+core/CurrentClampSeries.html index 6a4620a0..5246489a 100644 --- a/doc/+types/+core/CurrentClampSeries.html +++ b/doc/+types/+core/CurrentClampSeries.html @@ -61,25 +61,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.CurrentClampSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.CurrentClampSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.CurrentClampSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.CurrentClampSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.CurrentClampSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -88,66 +107,104 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.CurrentClampSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.CurrentClampSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.CurrentClampSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.CurrentClampSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrode - Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.  + Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data. + Help for types.core.CurrentClampSeries/electrode is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + gain - Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).  + Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + Help for types.core.CurrentClampSeries/gain is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.CurrentClampSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.CurrentClampSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.CurrentClampSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + stimulus_description - Protocol/stimulus name for this patch-clamp dataset.  + Protocol/stimulus name for this patch-clamp dataset. + Help for types.core.CurrentClampSeries/stimulus_description is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + sweep_number - Sweep number, allows to group different PatchClampSeries together.  + Sweep number, allows to group different PatchClampSeries together. + Help for types.core.CurrentClampSeries/sweep_number is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.CurrentClampSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.CurrentClampSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.CurrentClampSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -160,7 +217,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.CurrentClampSeries/addlistener is inherited from superclass HANDLE +   + @@ -168,7 +228,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.CurrentClampSeries/delete is inherited from superclass HANDLE +   + @@ -176,7 +239,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.CurrentClampSeries/eq is inherited from superclass HANDLE +   + @@ -184,7 +250,10 @@ export - find reference properties  + find reference properties + Help for types.core.CurrentClampSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -192,7 +261,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.CurrentClampSeries/findobj is inherited from superclass HANDLE +   + @@ -200,7 +272,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.CurrentClampSeries/findprop is inherited from superclass HANDLE +   + @@ -208,7 +283,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.CurrentClampSeries/ge is inherited from superclass HANDLE +   + @@ -216,7 +294,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.CurrentClampSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -224,7 +305,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.CurrentClampSeries/isvalid is inherited from superclass HANDLE +   + @@ -232,7 +316,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.CurrentClampSeries/le is inherited from superclass HANDLE +   + @@ -240,7 +327,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.CurrentClampSeries/listener is inherited from superclass HANDLE +   + @@ -256,7 +346,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.CurrentClampSeries/lt is inherited from superclass HANDLE +   + @@ -264,7 +357,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.CurrentClampSeries/ne is inherited from superclass HANDLE +   + @@ -272,7 +368,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.CurrentClampSeries/notify is inherited from superclass HANDLE +   + @@ -330,6 +429,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/CurrentClampStimulusSeries.html b/doc/+types/+core/CurrentClampStimulusSeries.html index 2cd8bbd0..0ee6b60e 100644 --- a/doc/+types/+core/CurrentClampStimulusSeries.html +++ b/doc/+types/+core/CurrentClampStimulusSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.CurrentClampStimulusSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.CurrentClampStimulusSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.CurrentClampStimulusSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.CurrentClampStimulusSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.CurrentClampStimulusSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,66 +95,104 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.CurrentClampStimulusSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.CurrentClampStimulusSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.CurrentClampStimulusSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.CurrentClampStimulusSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrode - Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.  + Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data. + Help for types.core.CurrentClampStimulusSeries/electrode is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + gain - Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).  + Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + Help for types.core.CurrentClampStimulusSeries/gain is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.CurrentClampStimulusSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.CurrentClampStimulusSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.CurrentClampStimulusSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + stimulus_description - Protocol/stimulus name for this patch-clamp dataset.  + Protocol/stimulus name for this patch-clamp dataset. + Help for types.core.CurrentClampStimulusSeries/stimulus_description is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + sweep_number - Sweep number, allows to group different PatchClampSeries together.  + Sweep number, allows to group different PatchClampSeries together. + Help for types.core.CurrentClampStimulusSeries/sweep_number is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.CurrentClampStimulusSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.CurrentClampStimulusSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.CurrentClampStimulusSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -148,7 +205,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.CurrentClampStimulusSeries/addlistener is inherited from superclass HANDLE +   + @@ -156,7 +216,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.CurrentClampStimulusSeries/delete is inherited from superclass HANDLE +   + @@ -164,7 +227,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.CurrentClampStimulusSeries/eq is inherited from superclass HANDLE +   + @@ -172,7 +238,10 @@ export - find reference properties  + find reference properties + Help for types.core.CurrentClampStimulusSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -180,7 +249,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.CurrentClampStimulusSeries/findobj is inherited from superclass HANDLE +   + @@ -188,7 +260,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.CurrentClampStimulusSeries/findprop is inherited from superclass HANDLE +   + @@ -196,7 +271,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.CurrentClampStimulusSeries/ge is inherited from superclass HANDLE +   + @@ -204,7 +282,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.CurrentClampStimulusSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -212,7 +293,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.CurrentClampStimulusSeries/isvalid is inherited from superclass HANDLE +   + @@ -220,7 +304,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.CurrentClampStimulusSeries/le is inherited from superclass HANDLE +   + @@ -228,7 +315,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.CurrentClampStimulusSeries/listener is inherited from superclass HANDLE +   + @@ -244,7 +334,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.CurrentClampStimulusSeries/lt is inherited from superclass HANDLE +   + @@ -252,7 +345,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.CurrentClampStimulusSeries/ne is inherited from superclass HANDLE +   + @@ -260,7 +356,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.CurrentClampStimulusSeries/notify is inherited from superclass HANDLE +   + @@ -294,6 +393,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/DecompositionSeries.html b/doc/+types/+core/DecompositionSeries.html index 58411c0f..3a28a9ba 100644 --- a/doc/+types/+core/DecompositionSeries.html +++ b/doc/+types/+core/DecompositionSeries.html @@ -53,25 +53,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.DecompositionSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.DecompositionSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.DecompositionSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.DecompositionSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.DecompositionSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -80,29 +99,42 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.DecompositionSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.DecompositionSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.DecompositionSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.DecompositionSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + metric The metric used, e.g. phase, amplitude, power.  + + source_channels + DynamicTableRegion pointer to the channels that this decomposition series was generated from.  + source_timeseries Link to TimeSeries object that this data was calculated from. Metadata about electrodes and their position can be read from @@ -112,28 +144,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.DecompositionSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.DecompositionSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.DecompositionSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.DecompositionSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.DecompositionSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.DecompositionSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -146,7 +195,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.DecompositionSeries/addlistener is inherited from superclass HANDLE +   + @@ -154,7 +206,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.DecompositionSeries/delete is inherited from superclass HANDLE +   + @@ -162,7 +217,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.DecompositionSeries/eq is inherited from superclass HANDLE +   + @@ -170,7 +228,10 @@ export - find reference properties  + find reference properties + Help for types.core.DecompositionSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -178,7 +239,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.DecompositionSeries/findobj is inherited from superclass HANDLE +   + @@ -186,7 +250,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.DecompositionSeries/findprop is inherited from superclass HANDLE +   + @@ -194,7 +261,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.DecompositionSeries/ge is inherited from superclass HANDLE +   + @@ -202,7 +272,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.DecompositionSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -210,7 +283,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.DecompositionSeries/isvalid is inherited from superclass HANDLE +   + @@ -218,7 +294,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.DecompositionSeries/le is inherited from superclass HANDLE +   + @@ -226,7 +305,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.DecompositionSeries/listener is inherited from superclass HANDLE +   + @@ -242,7 +324,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.DecompositionSeries/lt is inherited from superclass HANDLE +   + @@ -250,7 +335,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.DecompositionSeries/ne is inherited from superclass HANDLE +   + @@ -258,7 +346,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.DecompositionSeries/notify is inherited from superclass HANDLE +   + @@ -300,6 +391,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -340,6 +439,14 @@ validate_metric   + + +   + + + validate_source_channels +   +   diff --git a/doc/+types/+core/Device.html b/doc/+types/+core/Device.html index 952c0f33..e42ca436 100644 --- a/doc/+types/+core/Device.html +++ b/doc/+types/+core/Device.html @@ -65,7 +65,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.Device/addlistener is inherited from superclass HANDLE +   + @@ -73,7 +76,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.Device/delete is inherited from superclass HANDLE +   + @@ -81,7 +87,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.Device/eq is inherited from superclass HANDLE +   + @@ -89,7 +98,10 @@ export - find reference properties  + find reference properties + Help for types.core.Device/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -97,7 +109,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.Device/findobj is inherited from superclass HANDLE +   + @@ -105,7 +120,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.Device/findprop is inherited from superclass HANDLE +   + @@ -113,7 +131,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.Device/ge is inherited from superclass HANDLE +   + @@ -121,7 +142,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.Device/gt is inherited from superclass HANDLE +   + Sealed @@ -129,7 +153,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.Device/isvalid is inherited from superclass HANDLE +   + @@ -137,7 +164,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.Device/le is inherited from superclass HANDLE +   + @@ -145,7 +175,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.Device/listener is inherited from superclass HANDLE +   + @@ -161,7 +194,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.Device/lt is inherited from superclass HANDLE +   + @@ -169,7 +205,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.Device/ne is inherited from superclass HANDLE +   + @@ -177,7 +216,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.Device/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/DfOverF.html b/doc/+types/+core/DfOverF.html index 0c77ba1a..94b25324 100644 --- a/doc/+types/+core/DfOverF.html +++ b/doc/+types/+core/DfOverF.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.DfOverF/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.DfOverF/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.DfOverF/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.DfOverF/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.DfOverF/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.DfOverF/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.DfOverF/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.DfOverF/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.DfOverF/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.DfOverF/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.DfOverF/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.DfOverF/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.DfOverF/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.DfOverF/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/DynamicTable.html b/doc/+types/+core/DynamicTable.html deleted file mode 100644 index 09c8098f..00000000 --- a/doc/+types/+core/DynamicTable.html +++ /dev/null @@ -1,240 +0,0 @@ - - - - - - types.core.DynamicTable - MATLAB File Help - - - - - - - - - - -
types.core.DynamicTable - MATLAB File Help
-
types.core.DynamicTable
-
  DynamicTable A group containing multiple datasets that are aligned on the first dimension (Currently, this requirement if left up to APIs to check and enforce). Apart from a column that contains unique identifiers for each row there are no other required datasets. Users are free to add any number of VectorData objects here. Table functionality is already supported through compound types, which is analogous to storing an array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides an alternative structure to choose from when optimizing storage for anticipated access patterns. Additionally, this type provides a way of creating a table without having to define a compound type up front. Although this convenience may be attractive, users should think carefully about how data will be accessed. DynamicTable is more appropriate for column-centric access, whereas a dataset with a compound type would be more appropriate for row-centric access. Finally, data size should also be taken into account. For small tables, performance loss may be an acceptable trade-off for the flexibility of a DynamicTable. For example, DynamicTable was originally developed for storing trial data and spike unit metadata. Both of these use cases are expected to produce relatively small tables, so the spatial locality of multiple datasets present in a DynamicTable is not expected to have a significant performance impact. Additionally, requirements of trial and unit metadata tables are sufficiently diverse that performance implications can be overlooked in favor of usability.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.NWBDataInterface
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
DynamicTableConstructor for DynamicTable 
- -
Property Summary -
- - - - - - - - - - - - - - - - - - - - - -
colnamesThe names of the columns in this table. This should be used to specify an order to the columns. 
descriptionDescription of what is in this dynamic table. 
idArray of unique identifiers for the rows of this dynamic table. 
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_colnames 
-   - - validate_description 
-   - - validate_id 
-   - - validate_vectordata 
-   - - validate_vectorindex 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/DynamicTableRegion.html b/doc/+types/+core/DynamicTableRegion.html deleted file mode 100644 index 2e7ee864..00000000 --- a/doc/+types/+core/DynamicTableRegion.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - types.core.DynamicTableRegion - MATLAB File Help - - - - - - - - - - -
types.core.DynamicTableRegion - MATLAB File Help
-
types.core.DynamicTableRegion
-
  DynamicTableRegion A region/index into a DynamicTable.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.VectorData
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
DynamicTableRegionConstructor for DynamicTableRegion 
- -
Property Summary -
- - - - - - - - - - - - - -
dataproperty of type any 
descriptionDescription of what these vectors represent. 
tableReference to the DynamicTable object that this region applies to. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_description 
-   - - validate_tableReference to type `DynamicTable` 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/ElectricalSeries.html b/doc/+types/+core/ElectricalSeries.html index 1100b86c..27fb52bb 100644 --- a/doc/+types/+core/ElectricalSeries.html +++ b/doc/+types/+core/ElectricalSeries.html @@ -64,25 +64,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.ElectricalSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.ElectricalSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.ElectricalSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.ElectricalSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.ElectricalSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -91,54 +110,88 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.ElectricalSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.ElectricalSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.ElectricalSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.ElectricalSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrodes DynamicTableRegion pointer to the electrodes that this time series was generated from.  + + filtering + Filtering applied to all channels of the data. For example, if this ElectricalSeries represents high-pass-filtered data (also + known as AP Band), then this value could be "High-pass 4-pole Bessel filter at 500 Hz". If this ElectricalSeries represents + low-pass-filtered LFP data and the type of filter is unknown, then this value could be "Low-pass filter at 300 Hz". If a non-standard + filter type is used, provide as much detail about the filter properties as possible.  + + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.ElectricalSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.ElectricalSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.ElectricalSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.ElectricalSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.ElectricalSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.ElectricalSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -151,7 +204,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ElectricalSeries/addlistener is inherited from superclass HANDLE +   + @@ -159,7 +215,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ElectricalSeries/delete is inherited from superclass HANDLE +   + @@ -167,7 +226,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ElectricalSeries/eq is inherited from superclass HANDLE +   + @@ -175,7 +237,10 @@ export - find reference properties  + find reference properties + Help for types.core.ElectricalSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -183,7 +248,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ElectricalSeries/findobj is inherited from superclass HANDLE +   + @@ -191,7 +259,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ElectricalSeries/findprop is inherited from superclass HANDLE +   + @@ -199,7 +270,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ElectricalSeries/ge is inherited from superclass HANDLE +   + @@ -207,7 +281,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ElectricalSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -215,7 +292,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ElectricalSeries/isvalid is inherited from superclass HANDLE +   + @@ -223,7 +303,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ElectricalSeries/le is inherited from superclass HANDLE +   + @@ -231,7 +314,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ElectricalSeries/listener is inherited from superclass HANDLE +   + @@ -247,7 +333,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ElectricalSeries/lt is inherited from superclass HANDLE +   + @@ -255,7 +344,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ElectricalSeries/ne is inherited from superclass HANDLE +   + @@ -263,7 +355,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ElectricalSeries/notify is inherited from superclass HANDLE +   + @@ -305,6 +400,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -345,6 +448,14 @@ validate_electrodes   + + +   + + + validate_filtering +   +   diff --git a/doc/+types/+core/ElectrodeGroup.html b/doc/+types/+core/ElectrodeGroup.html index a9ab4b43..b80ec996 100644 --- a/doc/+types/+core/ElectrodeGroup.html +++ b/doc/+types/+core/ElectrodeGroup.html @@ -75,7 +75,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ElectrodeGroup/addlistener is inherited from superclass HANDLE +   + @@ -83,7 +86,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ElectrodeGroup/delete is inherited from superclass HANDLE +   + @@ -91,7 +97,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ElectrodeGroup/eq is inherited from superclass HANDLE +   + @@ -99,7 +108,10 @@ export - find reference properties  + find reference properties + Help for types.core.ElectrodeGroup/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -107,7 +119,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ElectrodeGroup/findobj is inherited from superclass HANDLE +   + @@ -115,7 +130,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ElectrodeGroup/findprop is inherited from superclass HANDLE +   + @@ -123,7 +141,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ElectrodeGroup/ge is inherited from superclass HANDLE +   + @@ -131,7 +152,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ElectrodeGroup/gt is inherited from superclass HANDLE +   + Sealed @@ -139,7 +163,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ElectrodeGroup/isvalid is inherited from superclass HANDLE +   + @@ -147,7 +174,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ElectrodeGroup/le is inherited from superclass HANDLE +   + @@ -155,7 +185,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ElectrodeGroup/listener is inherited from superclass HANDLE +   + @@ -171,7 +204,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ElectrodeGroup/lt is inherited from superclass HANDLE +   + @@ -179,7 +215,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ElectrodeGroup/ne is inherited from superclass HANDLE +   + @@ -187,7 +226,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ElectrodeGroup/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/ElementIdentifiers.html b/doc/+types/+core/ElementIdentifiers.html deleted file mode 100644 index 7c2e89e3..00000000 --- a/doc/+types/+core/ElementIdentifiers.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - types.core.ElementIdentifiers - MATLAB File Help - - - - - - - - - - -
types.core.ElementIdentifiers - MATLAB File Help
-
types.core.ElementIdentifiers
-
  ElementIdentifiers A list of unique identifiers for values within a dataset, e.g. rows of a DynamicTable.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.NWBData
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
ElementIdentifiersConstructor for ElementIdentifiers 
- -
Property Summary -
- - - - - -
dataproperty of type any 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/EventDetection.html b/doc/+types/+core/EventDetection.html index 33b1b8d5..e05738f7 100644 --- a/doc/+types/+core/EventDetection.html +++ b/doc/+types/+core/EventDetection.html @@ -82,7 +82,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.EventDetection/addlistener is inherited from superclass HANDLE +   + @@ -90,7 +93,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.EventDetection/delete is inherited from superclass HANDLE +   + @@ -98,7 +104,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.EventDetection/eq is inherited from superclass HANDLE +   + @@ -106,7 +115,10 @@ export - find reference properties  + find reference properties + Help for types.core.EventDetection/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -114,7 +126,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.EventDetection/findobj is inherited from superclass HANDLE +   + @@ -122,7 +137,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.EventDetection/findprop is inherited from superclass HANDLE +   + @@ -130,7 +148,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.EventDetection/ge is inherited from superclass HANDLE +   + @@ -138,7 +159,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.EventDetection/gt is inherited from superclass HANDLE +   + Sealed @@ -146,7 +170,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.EventDetection/isvalid is inherited from superclass HANDLE +   + @@ -154,7 +181,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.EventDetection/le is inherited from superclass HANDLE +   + @@ -162,7 +192,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.EventDetection/listener is inherited from superclass HANDLE +   + @@ -178,7 +211,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.EventDetection/lt is inherited from superclass HANDLE +   + @@ -186,7 +222,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.EventDetection/ne is inherited from superclass HANDLE +   + @@ -194,7 +233,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.EventDetection/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/EventWaveform.html b/doc/+types/+core/EventWaveform.html index 78fe530c..d8d69a51 100644 --- a/doc/+types/+core/EventWaveform.html +++ b/doc/+types/+core/EventWaveform.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.EventWaveform/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.EventWaveform/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.EventWaveform/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.EventWaveform/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.EventWaveform/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.EventWaveform/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.EventWaveform/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.EventWaveform/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.EventWaveform/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.EventWaveform/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.EventWaveform/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.EventWaveform/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.EventWaveform/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.EventWaveform/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/EyeTracking.html b/doc/+types/+core/EyeTracking.html index b4830538..5cf3ec76 100644 --- a/doc/+types/+core/EyeTracking.html +++ b/doc/+types/+core/EyeTracking.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.EyeTracking/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.EyeTracking/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.EyeTracking/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.EyeTracking/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.EyeTracking/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.EyeTracking/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.EyeTracking/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.EyeTracking/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.EyeTracking/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.EyeTracking/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.EyeTracking/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.EyeTracking/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.EyeTracking/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.EyeTracking/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/FeatureExtraction.html b/doc/+types/+core/FeatureExtraction.html index 853e8e74..098156ff 100644 --- a/doc/+types/+core/FeatureExtraction.html +++ b/doc/+types/+core/FeatureExtraction.html @@ -73,7 +73,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.FeatureExtraction/addlistener is inherited from superclass HANDLE +   + @@ -81,7 +84,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.FeatureExtraction/delete is inherited from superclass HANDLE +   + @@ -89,7 +95,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.FeatureExtraction/eq is inherited from superclass HANDLE +   + @@ -97,7 +106,10 @@ export - find reference properties  + find reference properties + Help for types.core.FeatureExtraction/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -105,7 +117,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.FeatureExtraction/findobj is inherited from superclass HANDLE +   + @@ -113,7 +128,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.FeatureExtraction/findprop is inherited from superclass HANDLE +   + @@ -121,7 +139,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.FeatureExtraction/ge is inherited from superclass HANDLE +   + @@ -129,7 +150,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.FeatureExtraction/gt is inherited from superclass HANDLE +   + Sealed @@ -137,7 +161,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.FeatureExtraction/isvalid is inherited from superclass HANDLE +   + @@ -145,7 +172,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.FeatureExtraction/le is inherited from superclass HANDLE +   + @@ -153,7 +183,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.FeatureExtraction/listener is inherited from superclass HANDLE +   + @@ -169,7 +202,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.FeatureExtraction/lt is inherited from superclass HANDLE +   + @@ -177,7 +213,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.FeatureExtraction/ne is inherited from superclass HANDLE +   + @@ -185,7 +224,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.FeatureExtraction/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/FilteredEphys.html b/doc/+types/+core/FilteredEphys.html index b08bf36e..21e23090 100644 --- a/doc/+types/+core/FilteredEphys.html +++ b/doc/+types/+core/FilteredEphys.html @@ -16,7 +16,7 @@
types.core.FilteredEphys
-
  FilteredEphys Electrophysiology data from one or more channels that has been subjected to filtering. Examples of filtered data include Theta and Gamma (LFP has its own interface). FilteredEphys modules publish an ElectricalSeries for each filtered channel or set of channels. The name of each ElectricalSeries is arbitrary but should be informative. The source of the filtered data, whether this is from analysis of another time series or as acquired by hardware, should be noted in each's TimeSeries::description field. There is no assumed 1::1 correspondence between filtered ephys signals and electrodes, as a single signal can apply to many nearby electrodes, and one electrode may have different filtered (e.g., theta and/or gamma) signals represented. Filter properties should be noted in the ElectricalSeries.
+
  FilteredEphys Electrophysiology data from one or more channels that has been subjected to filtering. Examples of filtered data include Theta and Gamma (LFP has its own interface). FilteredEphys modules publish an ElectricalSeries for each filtered channel or set of channels. The name of each ElectricalSeries is arbitrary but should be informative. The source of the filtered data, whether this is from analysis of another time series or as acquired by hardware, should be noted in each's TimeSeries::description field. There is no assumed 1::1 correspondence between filtered ephys signals and electrodes, as a single signal can apply to many nearby electrodes, and one electrode may have different filtered (e.g., theta and/or gamma) signals represented. Filter properties should be noted in the ElectricalSeries 'filtering' attribute.
Class Details
@@ -61,7 +61,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + @@ -76,24 +95,37 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.ImageSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   - + + + + + @@ -127,28 +159,45 @@ - + - + - + - + - +
addlistenerAdd listener for event. Add listener for event. + Help for types.core.FilteredEphys/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.FilteredEphys/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.FilteredEphys/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.FilteredEphys/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.FilteredEphys/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.FilteredEphys/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.FilteredEphys/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.FilteredEphys/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.FilteredEphys/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.FilteredEphys/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.FilteredEphys/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.FilteredEphys/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.FilteredEphys/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.FilteredEphys/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/Fluorescence.html b/doc/+types/+core/Fluorescence.html index 7f79f2a4..3bf18b76 100644 --- a/doc/+types/+core/Fluorescence.html +++ b/doc/+types/+core/Fluorescence.html @@ -61,7 +61,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.Fluorescence/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.Fluorescence/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.Fluorescence/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.Fluorescence/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.Fluorescence/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.Fluorescence/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.Fluorescence/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.Fluorescence/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.Fluorescence/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.Fluorescence/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.Fluorescence/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.Fluorescence/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.Fluorescence/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.Fluorescence/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/GrayscaleImage.html b/doc/+types/+core/GrayscaleImage.html index c1821b23..3657e61c 100644 --- a/doc/+types/+core/GrayscaleImage.html +++ b/doc/+types/+core/GrayscaleImage.html @@ -48,15 +48,24 @@ - + - + - +
dataproperty of type any property of type any + Help for types.core.GrayscaleImage/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
descriptionDescription of the image. Description of the image. + Help for types.core.GrayscaleImage/description is inherited from superclass TYPES.CORE.IMAGE +   +
resolutionPixel resolution of the image, in pixels per centimeter. Pixel resolution of the image, in pixels per centimeter. + Help for types.core.GrayscaleImage/resolution is inherited from superclass TYPES.CORE.IMAGE +   +
@@ -69,7 +78,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.core.GrayscaleImage/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +89,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.GrayscaleImage/delete is inherited from superclass HANDLE +   +
@@ -85,7 +100,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.GrayscaleImage/eq is inherited from superclass HANDLE +   +
@@ -93,7 +111,10 @@ exportfind reference properties find reference properties + Help for types.core.GrayscaleImage/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +122,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.GrayscaleImage/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +133,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.GrayscaleImage/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +144,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.GrayscaleImage/ge is inherited from superclass HANDLE +   +
@@ -125,7 +155,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.GrayscaleImage/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +166,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.GrayscaleImage/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +177,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.GrayscaleImage/le is inherited from superclass HANDLE +   +
@@ -149,7 +188,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.GrayscaleImage/listener is inherited from superclass HANDLE +   +
@@ -165,7 +207,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.GrayscaleImage/lt is inherited from superclass HANDLE +   +
@@ -173,7 +218,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.GrayscaleImage/ne is inherited from superclass HANDLE +   +
@@ -181,7 +229,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.GrayscaleImage/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/IZeroClampSeries.html b/doc/+types/+core/IZeroClampSeries.html index 73480908..ca4552e6 100644 --- a/doc/+types/+core/IZeroClampSeries.html +++ b/doc/+types/+core/IZeroClampSeries.html @@ -48,38 +48,66 @@ - + - + - + + + + + @@ -88,66 +116,104 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.IZeroClampSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   - + - + - + - + - + - + - + - + - + - +
bias_currentBias current, in amps. Bias current, in amps. + Help for types.core.IZeroClampSeries/bias_current is inherited from superclass TYPES.CORE.CURRENTCLAMPSERIES +   +
bridge_balanceBridge balance, in ohms. Bridge balance, in ohms. + Help for types.core.IZeroClampSeries/bridge_balance is inherited from superclass TYPES.CORE.CURRENTCLAMPSERIES +   +
capacitance_compensationCapacitance compensation, in farads. Capacitance compensation, in farads. + Help for types.core.IZeroClampSeries/capacitance_compensation is inherited from superclass TYPES.CORE.CURRENTCLAMPSERIES +   +
comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.IZeroClampSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +  
control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.IZeroClampSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +  
control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.IZeroClampSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +  
data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.IZeroClampSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   +
data_continuityOptionally 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.IZeroClampSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +  
data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.IZeroClampSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +  
data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.IZeroClampSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +  
descriptionDescription of the time series. Description of the time series. + Help for types.core.IZeroClampSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   +
electrodeLink to IntracellularElectrode object that describes the electrode that was used to apply or record this data. Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data. + Help for types.core.IZeroClampSeries/electrode is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   +
gainGain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + Help for types.core.IZeroClampSeries/gain is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   +
starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.IZeroClampSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +  
starting_time_rateSampling rate, in Hz. Sampling rate, in Hz. + Help for types.core.IZeroClampSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   +
starting_time_unitUnit of measurement for time, which is fixed to 'seconds'. Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.IZeroClampSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
stimulus_descriptionProtocol/stimulus name for this patch-clamp dataset. Protocol/stimulus name for this patch-clamp dataset. + Help for types.core.IZeroClampSeries/stimulus_description is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   +
sweep_numberSweep number, allows to group different PatchClampSeries together. Sweep number, allows to group different PatchClampSeries together. + Help for types.core.IZeroClampSeries/sweep_number is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   +
timestampsTimestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.IZeroClampSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_intervalValue is '1' Value is '1' + Help for types.core.IZeroClampSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_unitUnit of measurement for timestamps, which is fixed to 'seconds'. Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.IZeroClampSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
@@ -160,7 +226,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.core.IZeroClampSeries/addlistener is inherited from superclass HANDLE +   +
@@ -168,7 +237,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.IZeroClampSeries/delete is inherited from superclass HANDLE +   +
@@ -176,7 +248,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.IZeroClampSeries/eq is inherited from superclass HANDLE +   +
@@ -184,7 +259,10 @@ exportfind reference properties find reference properties + Help for types.core.IZeroClampSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -192,7 +270,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.IZeroClampSeries/findobj is inherited from superclass HANDLE +   +
@@ -200,7 +281,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.IZeroClampSeries/findprop is inherited from superclass HANDLE +   +
@@ -208,7 +292,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.IZeroClampSeries/ge is inherited from superclass HANDLE +   +
@@ -216,7 +303,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.IZeroClampSeries/gt is inherited from superclass HANDLE +   +
Sealed @@ -224,7 +314,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.IZeroClampSeries/isvalid is inherited from superclass HANDLE +   +
@@ -232,7 +325,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.IZeroClampSeries/le is inherited from superclass HANDLE +   +
@@ -240,7 +336,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.IZeroClampSeries/listener is inherited from superclass HANDLE +   +
@@ -256,7 +355,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.IZeroClampSeries/lt is inherited from superclass HANDLE +   +
@@ -264,7 +366,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.IZeroClampSeries/ne is inherited from superclass HANDLE +   +
@@ -272,7 +377,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.IZeroClampSeries/notify is inherited from superclass HANDLE +   +
@@ -330,6 +438,14 @@ validate_data  
+   + + validate_data_continuity 
  diff --git a/doc/+types/+core/Image.html b/doc/+types/+core/Image.html index 7f4a39c5..294df4bb 100644 --- a/doc/+types/+core/Image.html +++ b/doc/+types/+core/Image.html @@ -48,7 +48,10 @@ - + @@ -69,7 +72,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + @@ -76,34 +95,55 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.ImageMaskSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   - + + + + + - + @@ -114,14 +154,18 @@ Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries - (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].  + (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. + Help for types.core.ImageMaskSeries/external_file_starting_frame is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -131,28 +175,45 @@ - + - + - + - + - +
dataproperty of type any property of type any + Help for types.core.Image/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
description addlistenerAdd listener for event. Add listener for event. + Help for types.core.Image/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.Image/delete is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.Image/eq is inherited from superclass HANDLE +   +
@@ -93,7 +105,10 @@ exportfind reference properties find reference properties + Help for types.core.Image/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +116,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.Image/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.Image/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.Image/ge is inherited from superclass HANDLE +   +
@@ -125,7 +149,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.Image/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +160,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.Image/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.Image/le is inherited from superclass HANDLE +   +
@@ -149,7 +182,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.Image/listener is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.Image/lt is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.Image/ne is inherited from superclass HANDLE +   +
@@ -181,7 +223,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.Image/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/ImageMaskSeries.html b/doc/+types/+core/ImageMaskSeries.html index e6fe4403..fe58ea03 100644 --- a/doc/+types/+core/ImageMaskSeries.html +++ b/doc/+types/+core/ImageMaskSeries.html @@ -49,25 +49,44 @@
comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.ImageMaskSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +  
control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.ImageMaskSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +  
control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.ImageMaskSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +  
data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.ImageMaskSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   +
data_continuityOptionally 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.ImageMaskSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +  
data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.ImageMaskSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +  
data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.ImageMaskSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +  
descriptionDescription of the time series. Description of the time series. + Help for types.core.ImageMaskSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   +
deviceLink to the Device object that was used to capture these images. + Help for types.core.ImageMaskSeries/device is inherited from superclass TYPES.CORE.IMAGESERIES +   +
dimensionNumber of pixels on x, y, (and z) axes. Number of pixels on x, y, (and z) axes. + Help for types.core.ImageMaskSeries/dimension is inherited from superclass TYPES.CORE.IMAGESERIES +   +
external_file Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in - another NWB file and that file is linked to this file.  + another NWB file and that file is linked to this file. + Help for types.core.ImageMaskSeries/external_file is inherited from superclass TYPES.CORE.IMAGESERIES +  
format Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, - then the default format='raw' case is assumed.  + then the default format='raw' case is assumed. + Help for types.core.ImageMaskSeries/format is inherited from superclass TYPES.CORE.IMAGESERIES +  
starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.ImageMaskSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +  
starting_time_rateSampling rate, in Hz. Sampling rate, in Hz. + Help for types.core.ImageMaskSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   +
starting_time_unitUnit of measurement for time, which is fixed to 'seconds'. Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.ImageMaskSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestampsTimestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.ImageMaskSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_intervalValue is '1' Value is '1' + Help for types.core.ImageMaskSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_unitUnit of measurement for timestamps, which is fixed to 'seconds'. Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.ImageMaskSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
@@ -165,7 +226,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.core.ImageMaskSeries/addlistener is inherited from superclass HANDLE +   +
@@ -173,7 +237,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.ImageMaskSeries/delete is inherited from superclass HANDLE +   +
@@ -181,7 +248,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.ImageMaskSeries/eq is inherited from superclass HANDLE +   +
@@ -189,7 +259,10 @@ exportfind reference properties find reference properties + Help for types.core.ImageMaskSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -197,7 +270,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.ImageMaskSeries/findobj is inherited from superclass HANDLE +   +
@@ -205,7 +281,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.ImageMaskSeries/findprop is inherited from superclass HANDLE +   +
@@ -213,7 +292,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.ImageMaskSeries/ge is inherited from superclass HANDLE +   +
@@ -221,7 +303,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.ImageMaskSeries/gt is inherited from superclass HANDLE +   +
Sealed @@ -229,7 +314,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.ImageMaskSeries/isvalid is inherited from superclass HANDLE +   +
@@ -237,7 +325,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.ImageMaskSeries/le is inherited from superclass HANDLE +   +
@@ -245,7 +336,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.ImageMaskSeries/listener is inherited from superclass HANDLE +   +
@@ -261,7 +355,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.ImageMaskSeries/lt is inherited from superclass HANDLE +   +
@@ -269,7 +366,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.ImageMaskSeries/ne is inherited from superclass HANDLE +   +
@@ -277,7 +377,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.ImageMaskSeries/notify is inherited from superclass HANDLE +   +
@@ -311,6 +414,14 @@ validate_data  
+   + + validate_data_continuity 
  @@ -343,6 +454,14 @@ validate_description  
+   + + validate_device 
  diff --git a/doc/+types/+core/ImageSegmentation.html b/doc/+types/+core/ImageSegmentation.html index 0b35eecb..89f9a0aa 100644 --- a/doc/+types/+core/ImageSegmentation.html +++ b/doc/+types/+core/ImageSegmentation.html @@ -61,7 +61,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.ImageSegmentation/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.ImageSegmentation/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.ImageSegmentation/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.ImageSegmentation/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.ImageSegmentation/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.ImageSegmentation/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.ImageSegmentation/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.ImageSegmentation/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.ImageSegmentation/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.ImageSegmentation/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.ImageSegmentation/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.ImageSegmentation/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.ImageSegmentation/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.ImageSegmentation/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/ImageSeries.html b/doc/+types/+core/ImageSeries.html index 41185b0c..efa65b1b 100644 --- a/doc/+types/+core/ImageSeries.html +++ b/doc/+types/+core/ImageSeries.html @@ -49,25 +49,44 @@
comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.ImageSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +  
control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.ImageSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +  
control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.ImageSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +  
data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.ImageSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   +
data_continuityOptionally 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.ImageSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +  
data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.ImageSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +  
data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.ImageSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +  
descriptionDescription of the time series. Description of the time series. + Help for types.core.ImageSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   +
deviceLink to the Device object that was used to capture these images. 
dimension
starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.ImageSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +  
starting_time_rateSampling rate, in Hz. Sampling rate, in Hz. + Help for types.core.ImageSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   +
starting_time_unitUnit of measurement for time, which is fixed to 'seconds'. Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.ImageSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestampsTimestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.ImageSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_intervalValue is '1' Value is '1' + Help for types.core.ImageSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_unitUnit of measurement for timestamps, which is fixed to 'seconds'. Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.ImageSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
@@ -161,7 +210,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ImageSeries/addlistener is inherited from superclass HANDLE +   + @@ -169,7 +221,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ImageSeries/delete is inherited from superclass HANDLE +   + @@ -177,7 +232,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ImageSeries/eq is inherited from superclass HANDLE +   + @@ -185,7 +243,10 @@ export - find reference properties  + find reference properties + Help for types.core.ImageSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -193,7 +254,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ImageSeries/findobj is inherited from superclass HANDLE +   + @@ -201,7 +265,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ImageSeries/findprop is inherited from superclass HANDLE +   + @@ -209,7 +276,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ImageSeries/ge is inherited from superclass HANDLE +   + @@ -217,7 +287,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ImageSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -225,7 +298,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ImageSeries/isvalid is inherited from superclass HANDLE +   + @@ -233,7 +309,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ImageSeries/le is inherited from superclass HANDLE +   + @@ -241,7 +320,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ImageSeries/listener is inherited from superclass HANDLE +   + @@ -257,7 +339,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ImageSeries/lt is inherited from superclass HANDLE +   + @@ -265,7 +350,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ImageSeries/ne is inherited from superclass HANDLE +   + @@ -273,7 +361,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ImageSeries/notify is inherited from superclass HANDLE +   + @@ -307,6 +398,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -339,6 +438,14 @@ validate_description   + + +   + + + validate_device +   +   diff --git a/doc/+types/+core/Images.html b/doc/+types/+core/Images.html index ab2c48a6..ccee0b6d 100644 --- a/doc/+types/+core/Images.html +++ b/doc/+types/+core/Images.html @@ -65,7 +65,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.Images/addlistener is inherited from superclass HANDLE +   + @@ -73,7 +76,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.Images/delete is inherited from superclass HANDLE +   + @@ -81,7 +87,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.Images/eq is inherited from superclass HANDLE +   + @@ -89,7 +98,10 @@ export - find reference properties  + find reference properties + Help for types.core.Images/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -97,7 +109,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.Images/findobj is inherited from superclass HANDLE +   + @@ -105,7 +120,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.Images/findprop is inherited from superclass HANDLE +   + @@ -113,7 +131,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.Images/ge is inherited from superclass HANDLE +   + @@ -121,7 +142,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.Images/gt is inherited from superclass HANDLE +   + Sealed @@ -129,7 +153,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.Images/isvalid is inherited from superclass HANDLE +   + @@ -137,7 +164,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.Images/le is inherited from superclass HANDLE +   + @@ -145,7 +175,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.Images/listener is inherited from superclass HANDLE +   + @@ -161,7 +194,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.Images/lt is inherited from superclass HANDLE +   + @@ -169,7 +205,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.Images/ne is inherited from superclass HANDLE +   + @@ -177,7 +216,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.Images/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/ImagingPlane.html b/doc/+types/+core/ImagingPlane.html index 5555f9b1..1cdb7762 100644 --- a/doc/+types/+core/ImagingPlane.html +++ b/doc/+types/+core/ImagingPlane.html @@ -140,7 +140,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ImagingPlane/addlistener is inherited from superclass HANDLE +   + @@ -148,7 +151,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ImagingPlane/delete is inherited from superclass HANDLE +   + @@ -156,7 +162,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ImagingPlane/eq is inherited from superclass HANDLE +   + @@ -164,7 +173,10 @@ export - find reference properties  + find reference properties + Help for types.core.ImagingPlane/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -172,7 +184,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ImagingPlane/findobj is inherited from superclass HANDLE +   + @@ -180,7 +195,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ImagingPlane/findprop is inherited from superclass HANDLE +   + @@ -188,7 +206,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ImagingPlane/ge is inherited from superclass HANDLE +   + @@ -196,7 +217,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ImagingPlane/gt is inherited from superclass HANDLE +   + Sealed @@ -204,7 +228,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ImagingPlane/isvalid is inherited from superclass HANDLE +   + @@ -212,7 +239,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ImagingPlane/le is inherited from superclass HANDLE +   + @@ -220,7 +250,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ImagingPlane/listener is inherited from superclass HANDLE +   + @@ -236,7 +269,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ImagingPlane/lt is inherited from superclass HANDLE +   + @@ -244,7 +280,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ImagingPlane/ne is inherited from superclass HANDLE +   + @@ -252,7 +291,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ImagingPlane/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/ImagingRetinotopy.html b/doc/+types/+core/ImagingRetinotopy.html index 17b91a20..667058de 100644 --- a/doc/+types/+core/ImagingRetinotopy.html +++ b/doc/+types/+core/ImagingRetinotopy.html @@ -187,7 +187,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.ImagingRetinotopy/addlistener is inherited from superclass HANDLE +   + @@ -195,7 +198,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.ImagingRetinotopy/delete is inherited from superclass HANDLE +   + @@ -203,7 +209,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.ImagingRetinotopy/eq is inherited from superclass HANDLE +   + @@ -211,7 +220,10 @@ export - find reference properties  + find reference properties + Help for types.core.ImagingRetinotopy/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -219,7 +231,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.ImagingRetinotopy/findobj is inherited from superclass HANDLE +   + @@ -227,7 +242,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.ImagingRetinotopy/findprop is inherited from superclass HANDLE +   + @@ -235,7 +253,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.ImagingRetinotopy/ge is inherited from superclass HANDLE +   + @@ -243,7 +264,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.ImagingRetinotopy/gt is inherited from superclass HANDLE +   + Sealed @@ -251,7 +275,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.ImagingRetinotopy/isvalid is inherited from superclass HANDLE +   + @@ -259,7 +286,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.ImagingRetinotopy/le is inherited from superclass HANDLE +   + @@ -267,7 +297,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.ImagingRetinotopy/listener is inherited from superclass HANDLE +   + @@ -283,7 +316,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.ImagingRetinotopy/lt is inherited from superclass HANDLE +   + @@ -291,7 +327,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.ImagingRetinotopy/ne is inherited from superclass HANDLE +   + @@ -299,7 +338,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.ImagingRetinotopy/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/Index.html b/doc/+types/+core/Index.html deleted file mode 100644 index 0f303da1..00000000 --- a/doc/+types/+core/Index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - types.core.Index - MATLAB File Help - - - - - - - - - - -
types.core.Index - MATLAB File Help
-
types.core.Index
-
  Index Pointers that index data values.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.NWBData
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
IndexConstructor for Index 
- -
Property Summary -
- - - - - - - - - -
dataproperty of type any 
targetTarget dataset that this index applies to. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_targetReference to type `NWBData` 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/IndexSeries.html b/doc/+types/+core/IndexSeries.html index 0292e267..24d6e97d 100644 --- a/doc/+types/+core/IndexSeries.html +++ b/doc/+types/+core/IndexSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.IndexSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.IndexSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.IndexSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.IndexSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.IndexSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.IndexSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.IndexSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.IndexSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.IndexSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + indexed_timeseries @@ -102,28 +130,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.IndexSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.IndexSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.IndexSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.IndexSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.IndexSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.IndexSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -136,7 +181,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.IndexSeries/addlistener is inherited from superclass HANDLE +   + @@ -144,7 +192,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.IndexSeries/delete is inherited from superclass HANDLE +   + @@ -152,7 +203,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.IndexSeries/eq is inherited from superclass HANDLE +   + @@ -160,7 +214,10 @@ export - find reference properties  + find reference properties + Help for types.core.IndexSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -168,7 +225,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.IndexSeries/findobj is inherited from superclass HANDLE +   + @@ -176,7 +236,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.IndexSeries/findprop is inherited from superclass HANDLE +   + @@ -184,7 +247,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.IndexSeries/ge is inherited from superclass HANDLE +   + @@ -192,7 +258,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.IndexSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -200,7 +269,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.IndexSeries/isvalid is inherited from superclass HANDLE +   + @@ -208,7 +280,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.IndexSeries/le is inherited from superclass HANDLE +   + @@ -216,7 +291,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.IndexSeries/listener is inherited from superclass HANDLE +   + @@ -232,7 +310,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.IndexSeries/lt is inherited from superclass HANDLE +   + @@ -240,7 +321,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.IndexSeries/ne is inherited from superclass HANDLE +   + @@ -248,7 +332,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.IndexSeries/notify is inherited from superclass HANDLE +   + @@ -282,6 +369,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/IntervalSeries.html b/doc/+types/+core/IntervalSeries.html index 1b7fd22c..af32fd23 100644 --- a/doc/+types/+core/IntervalSeries.html +++ b/doc/+types/+core/IntervalSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.IntervalSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.IntervalSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.IntervalSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.IntervalSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.IntervalSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,50 +95,76 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.IntervalSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.IntervalSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.IntervalSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.IntervalSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.IntervalSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.IntervalSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.IntervalSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.IntervalSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.IntervalSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.IntervalSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -132,7 +177,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.IntervalSeries/addlistener is inherited from superclass HANDLE +   + @@ -140,7 +188,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.IntervalSeries/delete is inherited from superclass HANDLE +   + @@ -148,7 +199,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.IntervalSeries/eq is inherited from superclass HANDLE +   + @@ -156,7 +210,10 @@ export - find reference properties  + find reference properties + Help for types.core.IntervalSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -164,7 +221,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.IntervalSeries/findobj is inherited from superclass HANDLE +   + @@ -172,7 +232,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.IntervalSeries/findprop is inherited from superclass HANDLE +   + @@ -180,7 +243,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.IntervalSeries/ge is inherited from superclass HANDLE +   + @@ -188,7 +254,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.IntervalSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -196,7 +265,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.IntervalSeries/isvalid is inherited from superclass HANDLE +   + @@ -204,7 +276,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.IntervalSeries/le is inherited from superclass HANDLE +   + @@ -212,7 +287,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.IntervalSeries/listener is inherited from superclass HANDLE +   + @@ -228,7 +306,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.IntervalSeries/lt is inherited from superclass HANDLE +   + @@ -236,7 +317,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.IntervalSeries/ne is inherited from superclass HANDLE +   + @@ -244,7 +328,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.IntervalSeries/notify is inherited from superclass HANDLE +   + @@ -278,6 +365,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/IntracellularElectrode.html b/doc/+types/+core/IntracellularElectrode.html index 15a2fe36..da7934b8 100644 --- a/doc/+types/+core/IntracellularElectrode.html +++ b/doc/+types/+core/IntracellularElectrode.html @@ -91,7 +91,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.IntracellularElectrode/addlistener is inherited from superclass HANDLE +   + @@ -99,7 +102,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.IntracellularElectrode/delete is inherited from superclass HANDLE +   + @@ -107,7 +113,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.IntracellularElectrode/eq is inherited from superclass HANDLE +   + @@ -115,7 +124,10 @@ export - find reference properties  + find reference properties + Help for types.core.IntracellularElectrode/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -123,7 +135,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.IntracellularElectrode/findobj is inherited from superclass HANDLE +   + @@ -131,7 +146,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.IntracellularElectrode/findprop is inherited from superclass HANDLE +   + @@ -139,7 +157,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.IntracellularElectrode/ge is inherited from superclass HANDLE +   + @@ -147,7 +168,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.IntracellularElectrode/gt is inherited from superclass HANDLE +   + Sealed @@ -155,7 +179,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.IntracellularElectrode/isvalid is inherited from superclass HANDLE +   + @@ -163,7 +190,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.IntracellularElectrode/le is inherited from superclass HANDLE +   + @@ -171,7 +201,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.IntracellularElectrode/listener is inherited from superclass HANDLE +   + @@ -187,7 +220,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.IntracellularElectrode/lt is inherited from superclass HANDLE +   + @@ -195,7 +231,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.IntracellularElectrode/ne is inherited from superclass HANDLE +   + @@ -203,7 +242,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.IntracellularElectrode/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/LFP.html b/doc/+types/+core/LFP.html index e28f57b3..15c4b84c 100644 --- a/doc/+types/+core/LFP.html +++ b/doc/+types/+core/LFP.html @@ -16,7 +16,7 @@
types.core.LFP
-
  LFP 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 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 'filtering' attribute.
Class Details
@@ -61,7 +61,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
addlistenerAdd listener for event. Add listener for event. + Help for types.core.LFP/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.LFP/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.LFP/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.LFP/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.LFP/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.LFP/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.LFP/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.LFP/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.LFP/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.LFP/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.LFP/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.LFP/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.LFP/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.LFP/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/LabMetaData.html b/doc/+types/+core/LabMetaData.html index 36609903..6b23352e 100644 --- a/doc/+types/+core/LabMetaData.html +++ b/doc/+types/+core/LabMetaData.html @@ -52,7 +52,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.LabMetaData/addlistener is inherited from superclass HANDLE +   +
@@ -60,7 +63,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.LabMetaData/delete is inherited from superclass HANDLE +   +
@@ -68,7 +74,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.LabMetaData/eq is inherited from superclass HANDLE +   +
@@ -76,7 +85,10 @@ exportfind reference properties find reference properties + Help for types.core.LabMetaData/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -84,7 +96,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.LabMetaData/findobj is inherited from superclass HANDLE +   +
@@ -92,7 +107,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.LabMetaData/findprop is inherited from superclass HANDLE +   +
@@ -100,7 +118,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.LabMetaData/ge is inherited from superclass HANDLE +   +
@@ -108,7 +129,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.LabMetaData/gt is inherited from superclass HANDLE +   +
Sealed @@ -116,7 +140,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.LabMetaData/isvalid is inherited from superclass HANDLE +   +
@@ -124,7 +151,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.LabMetaData/le is inherited from superclass HANDLE +   +
@@ -132,7 +162,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.LabMetaData/listener is inherited from superclass HANDLE +   +
@@ -148,7 +181,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.LabMetaData/lt is inherited from superclass HANDLE +   +
@@ -156,7 +192,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.LabMetaData/ne is inherited from superclass HANDLE +   +
@@ -164,7 +203,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.LabMetaData/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/MotionCorrection.html b/doc/+types/+core/MotionCorrection.html index 8f2e0e3a..9c389c2d 100644 --- a/doc/+types/+core/MotionCorrection.html +++ b/doc/+types/+core/MotionCorrection.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.MotionCorrection/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.MotionCorrection/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.MotionCorrection/eq is inherited from superclass HANDLE +   + @@ -85,7 +94,10 @@ export - find reference properties  + find reference properties + Help for types.core.MotionCorrection/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +105,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.MotionCorrection/findobj is inherited from superclass HANDLE +   + @@ -101,7 +116,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.MotionCorrection/findprop is inherited from superclass HANDLE +   + @@ -109,7 +127,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.MotionCorrection/ge is inherited from superclass HANDLE +   + @@ -117,7 +138,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.MotionCorrection/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +149,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.MotionCorrection/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +160,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.MotionCorrection/le is inherited from superclass HANDLE +   + @@ -141,7 +171,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.MotionCorrection/listener is inherited from superclass HANDLE +   + @@ -157,7 +190,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.MotionCorrection/lt is inherited from superclass HANDLE +   + @@ -165,7 +201,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.MotionCorrection/ne is inherited from superclass HANDLE +   + @@ -173,7 +212,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.MotionCorrection/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/NWBContainer.html b/doc/+types/+core/NWBContainer.html index 148f21d5..4f75a598 100644 --- a/doc/+types/+core/NWBContainer.html +++ b/doc/+types/+core/NWBContainer.html @@ -52,7 +52,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.NWBContainer/addlistener is inherited from superclass HANDLE +   + @@ -60,7 +63,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.NWBContainer/delete is inherited from superclass HANDLE +   + @@ -68,7 +74,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.NWBContainer/eq is inherited from superclass HANDLE +   + @@ -76,7 +85,10 @@ export - find reference properties  + find reference properties + Help for types.core.NWBContainer/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -84,7 +96,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.NWBContainer/findobj is inherited from superclass HANDLE +   + @@ -92,7 +107,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.NWBContainer/findprop is inherited from superclass HANDLE +   + @@ -100,7 +118,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.NWBContainer/ge is inherited from superclass HANDLE +   + @@ -108,7 +129,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.NWBContainer/gt is inherited from superclass HANDLE +   + Sealed @@ -116,7 +140,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.NWBContainer/isvalid is inherited from superclass HANDLE +   + @@ -124,7 +151,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.NWBContainer/le is inherited from superclass HANDLE +   + @@ -132,7 +162,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.NWBContainer/listener is inherited from superclass HANDLE +   + @@ -148,7 +181,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.NWBContainer/lt is inherited from superclass HANDLE +   + @@ -156,7 +192,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.NWBContainer/ne is inherited from superclass HANDLE +   + @@ -164,7 +203,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.NWBContainer/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/NWBData.html b/doc/+types/+core/NWBData.html index 16ade188..fe9e6533 100644 --- a/doc/+types/+core/NWBData.html +++ b/doc/+types/+core/NWBData.html @@ -48,7 +48,10 @@ - +
dataproperty of type any property of type any + Help for types.core.NWBData/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
@@ -61,7 +64,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.NWBData/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +75,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.NWBData/delete is inherited from superclass HANDLE +   + @@ -77,7 +86,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.NWBData/eq is inherited from superclass HANDLE +   + @@ -85,7 +97,10 @@ export - find reference properties  + find reference properties + Help for types.core.NWBData/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -93,7 +108,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.NWBData/findobj is inherited from superclass HANDLE +   + @@ -101,7 +119,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.NWBData/findprop is inherited from superclass HANDLE +   + @@ -109,7 +130,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.NWBData/ge is inherited from superclass HANDLE +   + @@ -117,7 +141,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.NWBData/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +152,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.NWBData/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +163,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.NWBData/le is inherited from superclass HANDLE +   + @@ -141,7 +174,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.NWBData/listener is inherited from superclass HANDLE +   + @@ -157,7 +193,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.NWBData/lt is inherited from superclass HANDLE +   + @@ -165,7 +204,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.NWBData/ne is inherited from superclass HANDLE +   + @@ -173,7 +215,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.NWBData/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/NWBDataInterface.html b/doc/+types/+core/NWBDataInterface.html index 364b9112..7fb9a455 100644 --- a/doc/+types/+core/NWBDataInterface.html +++ b/doc/+types/+core/NWBDataInterface.html @@ -52,7 +52,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.NWBDataInterface/addlistener is inherited from superclass HANDLE +   + @@ -60,7 +63,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.NWBDataInterface/delete is inherited from superclass HANDLE +   + @@ -68,7 +74,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.NWBDataInterface/eq is inherited from superclass HANDLE +   + @@ -76,7 +85,10 @@ export - find reference properties  + find reference properties + Help for types.core.NWBDataInterface/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -84,7 +96,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.NWBDataInterface/findobj is inherited from superclass HANDLE +   + @@ -92,7 +107,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.NWBDataInterface/findprop is inherited from superclass HANDLE +   + @@ -100,7 +118,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.NWBDataInterface/ge is inherited from superclass HANDLE +   + @@ -108,7 +129,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.NWBDataInterface/gt is inherited from superclass HANDLE +   + Sealed @@ -116,7 +140,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.NWBDataInterface/isvalid is inherited from superclass HANDLE +   + @@ -124,7 +151,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.NWBDataInterface/le is inherited from superclass HANDLE +   + @@ -132,7 +162,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.NWBDataInterface/listener is inherited from superclass HANDLE +   + @@ -148,7 +181,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.NWBDataInterface/lt is inherited from superclass HANDLE +   + @@ -156,7 +192,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.NWBDataInterface/ne is inherited from superclass HANDLE +   + @@ -164,7 +203,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.NWBDataInterface/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/NWBFile.html b/doc/+types/+core/NWBFile.html index 4b88159d..fdad7b70 100644 --- a/doc/+types/+core/NWBFile.html +++ b/doc/+types/+core/NWBFile.html @@ -250,7 +250,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.NWBFile/addlistener is inherited from superclass HANDLE +   + @@ -258,7 +261,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.NWBFile/delete is inherited from superclass HANDLE +   + @@ -266,7 +272,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.NWBFile/eq is inherited from superclass HANDLE +   + @@ -274,7 +283,10 @@ export - find reference properties  + find reference properties + Help for types.core.NWBFile/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -282,7 +294,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.NWBFile/findobj is inherited from superclass HANDLE +   + @@ -290,7 +305,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.NWBFile/findprop is inherited from superclass HANDLE +   + @@ -298,7 +316,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.NWBFile/ge is inherited from superclass HANDLE +   + @@ -306,7 +327,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.NWBFile/gt is inherited from superclass HANDLE +   + Sealed @@ -314,7 +338,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.NWBFile/isvalid is inherited from superclass HANDLE +   + @@ -322,7 +349,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.NWBFile/le is inherited from superclass HANDLE +   + @@ -330,7 +360,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.NWBFile/listener is inherited from superclass HANDLE +   + @@ -346,7 +379,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.NWBFile/lt is inherited from superclass HANDLE +   + @@ -354,7 +390,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.NWBFile/ne is inherited from superclass HANDLE +   + @@ -362,7 +401,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.NWBFile/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/OpticalChannel.html b/doc/+types/+core/OpticalChannel.html index 723fe427..f9b9f787 100644 --- a/doc/+types/+core/OpticalChannel.html +++ b/doc/+types/+core/OpticalChannel.html @@ -65,7 +65,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.OpticalChannel/addlistener is inherited from superclass HANDLE +   + @@ -73,7 +76,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.OpticalChannel/delete is inherited from superclass HANDLE +   + @@ -81,7 +87,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.OpticalChannel/eq is inherited from superclass HANDLE +   + @@ -89,7 +98,10 @@ export - find reference properties  + find reference properties + Help for types.core.OpticalChannel/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -97,7 +109,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.OpticalChannel/findobj is inherited from superclass HANDLE +   + @@ -105,7 +120,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.OpticalChannel/findprop is inherited from superclass HANDLE +   + @@ -113,7 +131,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.OpticalChannel/ge is inherited from superclass HANDLE +   + @@ -121,7 +142,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.OpticalChannel/gt is inherited from superclass HANDLE +   + Sealed @@ -129,7 +153,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.OpticalChannel/isvalid is inherited from superclass HANDLE +   + @@ -137,7 +164,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.OpticalChannel/le is inherited from superclass HANDLE +   + @@ -145,7 +175,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.OpticalChannel/listener is inherited from superclass HANDLE +   + @@ -161,7 +194,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.OpticalChannel/lt is inherited from superclass HANDLE +   + @@ -169,7 +205,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.OpticalChannel/ne is inherited from superclass HANDLE +   + @@ -177,7 +216,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.OpticalChannel/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/OpticalSeries.html b/doc/+types/+core/OpticalSeries.html index 9d18c075..3fe84172 100644 --- a/doc/+types/+core/OpticalSeries.html +++ b/doc/+types/+core/OpticalSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.OpticalSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.OpticalSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.OpticalSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.OpticalSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.OpticalSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,28 +95,47 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.OpticalSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.OpticalSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.OpticalSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.OpticalSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + device + Link to the Device object that was used to capture these images. + Help for types.core.OpticalSeries/device is inherited from superclass TYPES.CORE.IMAGESERIES +   + dimension - Number of pixels on x, y, (and z) axes.  + Number of pixels on x, y, (and z) axes. + Help for types.core.OpticalSeries/dimension is inherited from superclass TYPES.CORE.IMAGESERIES +   + distance @@ -107,7 +145,9 @@ external_file Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in - another NWB file and that file is linked to this file.  + another NWB file and that file is linked to this file. + Help for types.core.OpticalSeries/external_file is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -118,7 +158,9 @@ Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries - (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].  + (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. + Help for types.core.OpticalSeries/external_file_starting_frame is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -129,7 +171,9 @@ format Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, - then the default format='raw' case is assumed.  + then the default format='raw' case is assumed. + Help for types.core.OpticalSeries/format is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -139,28 +183,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.OpticalSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.OpticalSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.OpticalSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.OpticalSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.OpticalSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.OpticalSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -173,7 +234,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.OpticalSeries/addlistener is inherited from superclass HANDLE +   + @@ -181,7 +245,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.OpticalSeries/delete is inherited from superclass HANDLE +   + @@ -189,7 +256,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.OpticalSeries/eq is inherited from superclass HANDLE +   + @@ -197,7 +267,10 @@ export - find reference properties  + find reference properties + Help for types.core.OpticalSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -205,7 +278,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.OpticalSeries/findobj is inherited from superclass HANDLE +   + @@ -213,7 +289,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.OpticalSeries/findprop is inherited from superclass HANDLE +   + @@ -221,7 +300,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.OpticalSeries/ge is inherited from superclass HANDLE +   + @@ -229,7 +311,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.OpticalSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -237,7 +322,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.OpticalSeries/isvalid is inherited from superclass HANDLE +   + @@ -245,7 +333,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.OpticalSeries/le is inherited from superclass HANDLE +   + @@ -253,7 +344,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.OpticalSeries/listener is inherited from superclass HANDLE +   + @@ -269,7 +363,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.OpticalSeries/lt is inherited from superclass HANDLE +   + @@ -277,7 +374,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.OpticalSeries/ne is inherited from superclass HANDLE +   + @@ -285,7 +385,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.OpticalSeries/notify is inherited from superclass HANDLE +   + @@ -319,6 +422,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -351,6 +462,14 @@ validate_description   + + +   + + + validate_device +   +   diff --git a/doc/+types/+core/OptogeneticSeries.html b/doc/+types/+core/OptogeneticSeries.html index 66b7383b..13d1907d 100644 --- a/doc/+types/+core/OptogeneticSeries.html +++ b/doc/+types/+core/OptogeneticSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.OptogeneticSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.OptogeneticSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.OptogeneticSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.OptogeneticSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.OptogeneticSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.OptogeneticSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.OptogeneticSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.OptogeneticSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.OptogeneticSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + site @@ -102,28 +130,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.OptogeneticSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.OptogeneticSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.OptogeneticSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.OptogeneticSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.OptogeneticSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.OptogeneticSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -136,7 +181,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.OptogeneticSeries/addlistener is inherited from superclass HANDLE +   + @@ -144,7 +192,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.OptogeneticSeries/delete is inherited from superclass HANDLE +   + @@ -152,7 +203,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.OptogeneticSeries/eq is inherited from superclass HANDLE +   + @@ -160,7 +214,10 @@ export - find reference properties  + find reference properties + Help for types.core.OptogeneticSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -168,7 +225,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.OptogeneticSeries/findobj is inherited from superclass HANDLE +   + @@ -176,7 +236,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.OptogeneticSeries/findprop is inherited from superclass HANDLE +   + @@ -184,7 +247,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.OptogeneticSeries/ge is inherited from superclass HANDLE +   + @@ -192,7 +258,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.OptogeneticSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -200,7 +269,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.OptogeneticSeries/isvalid is inherited from superclass HANDLE +   + @@ -208,7 +280,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.OptogeneticSeries/le is inherited from superclass HANDLE +   + @@ -216,7 +291,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.OptogeneticSeries/listener is inherited from superclass HANDLE +   + @@ -232,7 +310,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.OptogeneticSeries/lt is inherited from superclass HANDLE +   + @@ -240,7 +321,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.OptogeneticSeries/ne is inherited from superclass HANDLE +   + @@ -248,7 +332,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.OptogeneticSeries/notify is inherited from superclass HANDLE +   + @@ -282,6 +369,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/OptogeneticStimulusSite.html b/doc/+types/+core/OptogeneticStimulusSite.html index 3ebb9085..ed7c4dde 100644 --- a/doc/+types/+core/OptogeneticStimulusSite.html +++ b/doc/+types/+core/OptogeneticStimulusSite.html @@ -75,7 +75,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.OptogeneticStimulusSite/addlistener is inherited from superclass HANDLE +   + @@ -83,7 +86,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.OptogeneticStimulusSite/delete is inherited from superclass HANDLE +   + @@ -91,7 +97,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.OptogeneticStimulusSite/eq is inherited from superclass HANDLE +   + @@ -99,7 +108,10 @@ export - find reference properties  + find reference properties + Help for types.core.OptogeneticStimulusSite/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -107,7 +119,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.OptogeneticStimulusSite/findobj is inherited from superclass HANDLE +   + @@ -115,7 +130,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.OptogeneticStimulusSite/findprop is inherited from superclass HANDLE +   + @@ -123,7 +141,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.OptogeneticStimulusSite/ge is inherited from superclass HANDLE +   + @@ -131,7 +152,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.OptogeneticStimulusSite/gt is inherited from superclass HANDLE +   + Sealed @@ -139,7 +163,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.OptogeneticStimulusSite/isvalid is inherited from superclass HANDLE +   + @@ -147,7 +174,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.OptogeneticStimulusSite/le is inherited from superclass HANDLE +   + @@ -155,7 +185,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.OptogeneticStimulusSite/listener is inherited from superclass HANDLE +   + @@ -171,7 +204,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.OptogeneticStimulusSite/lt is inherited from superclass HANDLE +   + @@ -179,7 +215,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.OptogeneticStimulusSite/ne is inherited from superclass HANDLE +   + @@ -187,7 +226,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.OptogeneticStimulusSite/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+core/PatchClampSeries.html b/doc/+types/+core/PatchClampSeries.html index 8a168e3c..5e27c14c 100644 --- a/doc/+types/+core/PatchClampSeries.html +++ b/doc/+types/+core/PatchClampSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.PatchClampSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.PatchClampSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.PatchClampSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.PatchClampSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.PatchClampSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.PatchClampSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.PatchClampSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.PatchClampSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.PatchClampSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrode @@ -106,16 +134,24 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.PatchClampSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.PatchClampSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.PatchClampSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + stimulus_description @@ -127,15 +163,24 @@ timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.PatchClampSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.PatchClampSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.PatchClampSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -148,7 +193,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.PatchClampSeries/addlistener is inherited from superclass HANDLE +   + @@ -156,7 +204,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.PatchClampSeries/delete is inherited from superclass HANDLE +   + @@ -164,7 +215,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.PatchClampSeries/eq is inherited from superclass HANDLE +   + @@ -172,7 +226,10 @@ export - find reference properties  + find reference properties + Help for types.core.PatchClampSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -180,7 +237,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.PatchClampSeries/findobj is inherited from superclass HANDLE +   + @@ -188,7 +248,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.PatchClampSeries/findprop is inherited from superclass HANDLE +   + @@ -196,7 +259,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.PatchClampSeries/ge is inherited from superclass HANDLE +   + @@ -204,7 +270,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.PatchClampSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -212,7 +281,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.PatchClampSeries/isvalid is inherited from superclass HANDLE +   + @@ -220,7 +292,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.PatchClampSeries/le is inherited from superclass HANDLE +   + @@ -228,7 +303,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.PatchClampSeries/listener is inherited from superclass HANDLE +   + @@ -244,7 +322,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.PatchClampSeries/lt is inherited from superclass HANDLE +   + @@ -252,7 +333,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.PatchClampSeries/ne is inherited from superclass HANDLE +   + @@ -260,7 +344,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.PatchClampSeries/notify is inherited from superclass HANDLE +   + @@ -294,6 +381,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/PlaneSegmentation.html b/doc/+types/+core/PlaneSegmentation.html index 242813cd..4a956c30 100644 --- a/doc/+types/+core/PlaneSegmentation.html +++ b/doc/+types/+core/PlaneSegmentation.html @@ -48,15 +48,24 @@ - + - + - + @@ -84,11 +93,10 @@ - - - - - + @@ -105,13 +113,32 @@
Method Summary
colnamesThe names of the columns in this table. This should be used to specify an order to the columns. The names of the columns in this table. This should be used to specify an order to the columns. + Help for types.core.PlaneSegmentation/colnames is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
descriptionDescription of what is in this dynamic table. Description of what is in this dynamic table. + Help for types.core.PlaneSegmentation/description is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
idArray of unique identifiers for the rows of this dynamic table. Array of unique identifiers for the rows of this dynamic table. + Help for types.core.PlaneSegmentation/id is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
image_mask
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. Vector columns, including index columns, of this dynamic table. + Help for types.core.PlaneSegmentation/vectordata is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
voxel_mask
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.RoiResponseSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   - + @@ -102,28 +130,45 @@ - + - + - + - + - +
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.core.PlaneSegmentation/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -119,7 +146,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.PlaneSegmentation/delete is inherited from superclass HANDLE +   +
@@ -127,7 +157,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.PlaneSegmentation/eq is inherited from superclass HANDLE +   +
@@ -135,7 +168,10 @@ exportfind reference properties find reference properties + Help for types.core.PlaneSegmentation/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -143,7 +179,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.PlaneSegmentation/findobj is inherited from superclass HANDLE +   +
@@ -151,7 +190,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.PlaneSegmentation/findprop is inherited from superclass HANDLE +   +
@@ -159,7 +201,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.PlaneSegmentation/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -167,7 +220,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.PlaneSegmentation/gt is inherited from superclass HANDLE +   +
Sealed @@ -175,7 +231,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.PlaneSegmentation/isvalid is inherited from superclass HANDLE +   +
@@ -183,7 +242,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.PlaneSegmentation/le is inherited from superclass HANDLE +   +
@@ -191,7 +253,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.PlaneSegmentation/listener is inherited from superclass HANDLE +   +
@@ -207,7 +272,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.PlaneSegmentation/lt is inherited from superclass HANDLE +   +
@@ -215,7 +283,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.PlaneSegmentation/ne is inherited from superclass HANDLE +   +
@@ -223,7 +294,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.PlaneSegmentation/notify is inherited from superclass HANDLE +   +
@@ -297,14 +371,6 @@ validate_vectordata  
-   - - validate_vectorindex 
  diff --git a/doc/+types/+core/Position.html b/doc/+types/+core/Position.html index c88638f0..4ef8ecd1 100644 --- a/doc/+types/+core/Position.html +++ b/doc/+types/+core/Position.html @@ -61,7 +61,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.Position/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.Position/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.Position/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.Position/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.Position/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.Position/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.Position/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.Position/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.Position/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.Position/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.Position/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.Position/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.Position/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.Position/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/ProcessingModule.html b/doc/+types/+core/ProcessingModule.html index 0a92e625..34aca145 100644 --- a/doc/+types/+core/ProcessingModule.html +++ b/doc/+types/+core/ProcessingModule.html @@ -69,7 +69,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.ProcessingModule/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +80,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.ProcessingModule/delete is inherited from superclass HANDLE +   +
@@ -85,7 +91,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.ProcessingModule/eq is inherited from superclass HANDLE +   +
@@ -93,7 +102,10 @@ exportfind reference properties find reference properties + Help for types.core.ProcessingModule/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +113,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.ProcessingModule/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +124,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.ProcessingModule/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +135,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.ProcessingModule/ge is inherited from superclass HANDLE +   +
@@ -125,7 +146,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.ProcessingModule/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +157,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.ProcessingModule/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +168,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.ProcessingModule/le is inherited from superclass HANDLE +   +
@@ -149,7 +179,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.ProcessingModule/listener is inherited from superclass HANDLE +   +
@@ -165,7 +198,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.ProcessingModule/lt is inherited from superclass HANDLE +   +
@@ -173,7 +209,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.ProcessingModule/ne is inherited from superclass HANDLE +   +
@@ -181,7 +220,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.ProcessingModule/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/PupilTracking.html b/doc/+types/+core/PupilTracking.html index d5c66b39..c4e2b387 100644 --- a/doc/+types/+core/PupilTracking.html +++ b/doc/+types/+core/PupilTracking.html @@ -61,7 +61,10 @@ addlistenerAdd listener for event. Add listener for event. + Help for types.core.PupilTracking/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +72,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.PupilTracking/delete is inherited from superclass HANDLE +   +
@@ -77,7 +83,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.PupilTracking/eq is inherited from superclass HANDLE +   +
@@ -85,7 +94,10 @@ exportfind reference properties find reference properties + Help for types.core.PupilTracking/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +105,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.PupilTracking/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +116,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.PupilTracking/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +127,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.PupilTracking/ge is inherited from superclass HANDLE +   +
@@ -117,7 +138,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.PupilTracking/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +149,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.PupilTracking/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +160,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.PupilTracking/le is inherited from superclass HANDLE +   +
@@ -141,7 +171,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.PupilTracking/listener is inherited from superclass HANDLE +   +
@@ -157,7 +190,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.PupilTracking/lt is inherited from superclass HANDLE +   +
@@ -165,7 +201,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.PupilTracking/ne is inherited from superclass HANDLE +   +
@@ -173,7 +212,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.PupilTracking/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/RGBAImage.html b/doc/+types/+core/RGBAImage.html index 7d14f282..d91173bd 100644 --- a/doc/+types/+core/RGBAImage.html +++ b/doc/+types/+core/RGBAImage.html @@ -48,15 +48,24 @@ - + - + - +
dataproperty of type any property of type any + Help for types.core.RGBAImage/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
descriptionDescription of the image. Description of the image. + Help for types.core.RGBAImage/description is inherited from superclass TYPES.CORE.IMAGE +   +
resolutionPixel resolution of the image, in pixels per centimeter. Pixel resolution of the image, in pixels per centimeter. + Help for types.core.RGBAImage/resolution is inherited from superclass TYPES.CORE.IMAGE +   +
@@ -69,7 +78,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.core.RGBAImage/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +89,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.RGBAImage/delete is inherited from superclass HANDLE +   +
@@ -85,7 +100,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.RGBAImage/eq is inherited from superclass HANDLE +   +
@@ -93,7 +111,10 @@ exportfind reference properties find reference properties + Help for types.core.RGBAImage/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +122,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.RGBAImage/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +133,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.RGBAImage/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +144,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.RGBAImage/ge is inherited from superclass HANDLE +   +
@@ -125,7 +155,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.RGBAImage/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +166,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.RGBAImage/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +177,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.RGBAImage/le is inherited from superclass HANDLE +   +
@@ -149,7 +188,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.RGBAImage/listener is inherited from superclass HANDLE +   +
@@ -165,7 +207,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.RGBAImage/lt is inherited from superclass HANDLE +   +
@@ -173,7 +218,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.RGBAImage/ne is inherited from superclass HANDLE +   +
@@ -181,7 +229,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.RGBAImage/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/RGBImage.html b/doc/+types/+core/RGBImage.html index f5d086e0..b7c693a6 100644 --- a/doc/+types/+core/RGBImage.html +++ b/doc/+types/+core/RGBImage.html @@ -48,15 +48,24 @@ - + - + - +
dataproperty of type any property of type any + Help for types.core.RGBImage/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
descriptionDescription of the image. Description of the image. + Help for types.core.RGBImage/description is inherited from superclass TYPES.CORE.IMAGE +   +
resolutionPixel resolution of the image, in pixels per centimeter. Pixel resolution of the image, in pixels per centimeter. + Help for types.core.RGBImage/resolution is inherited from superclass TYPES.CORE.IMAGE +   +
@@ -69,7 +78,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.core.RGBImage/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +89,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.RGBImage/delete is inherited from superclass HANDLE +   +
@@ -85,7 +100,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.RGBImage/eq is inherited from superclass HANDLE +   +
@@ -93,7 +111,10 @@ exportfind reference properties find reference properties + Help for types.core.RGBImage/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +122,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.RGBImage/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +133,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.RGBImage/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +144,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.RGBImage/ge is inherited from superclass HANDLE +   +
@@ -125,7 +155,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.RGBImage/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +166,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.RGBImage/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +177,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.RGBImage/le is inherited from superclass HANDLE +   +
@@ -149,7 +188,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.RGBImage/listener is inherited from superclass HANDLE +   +
@@ -165,7 +207,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.RGBImage/lt is inherited from superclass HANDLE +   +
@@ -173,7 +218,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.RGBImage/ne is inherited from superclass HANDLE +   +
@@ -181,7 +229,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.RGBImage/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/RetinotopyMap.html b/doc/+types/+core/RetinotopyMap.html deleted file mode 100644 index b72c4832..00000000 --- a/doc/+types/+core/RetinotopyMap.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - types.core.RetinotopyMap - MATLAB File Help - - - - - - - - - - -
types.core.RetinotopyMap - MATLAB File Help
-
types.core.RetinotopyMap
-
  RetinotopyMap Abstract two-dimensional map of responses. Array structure: [num_rows][num_columns]
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.NWBData, types.untyped.DatasetClass
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
RetinotopyMapConstructor for RetinotopyMap 
- -
Property Summary -
- - - - - - - - - - - - - -
dataproperty of type any 
dimensionNumber of rows and columns in the image. NOTE: row, column representation is equivalent to height, width. 
field_of_viewSize of viewing area, in meters. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_dimension 
-   - - validate_field_of_view 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/RoiResponseSeries.html b/doc/+types/+core/RoiResponseSeries.html index 1b91aa89..40aef7a1 100644 --- a/doc/+types/+core/RoiResponseSeries.html +++ b/doc/+types/+core/RoiResponseSeries.html @@ -49,25 +49,44 @@
comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.RoiResponseSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +  
control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.RoiResponseSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +  
control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.RoiResponseSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +  
data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.RoiResponseSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   +
data_continuityOptionally 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.RoiResponseSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +  
data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.RoiResponseSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +  
data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.RoiResponseSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +  
descriptionDescription of the time series. Description of the time series. + Help for types.core.RoiResponseSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   +
rois
starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.RoiResponseSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +  
starting_time_rateSampling rate, in Hz. Sampling rate, in Hz. + Help for types.core.RoiResponseSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   +
starting_time_unitUnit of measurement for time, which is fixed to 'seconds'. Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.RoiResponseSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestampsTimestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.RoiResponseSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_intervalValue is '1' Value is '1' + Help for types.core.RoiResponseSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_unitUnit of measurement for timestamps, which is fixed to 'seconds'. Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.RoiResponseSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
@@ -136,7 +181,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.RoiResponseSeries/addlistener is inherited from superclass HANDLE +   + @@ -144,7 +192,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.RoiResponseSeries/delete is inherited from superclass HANDLE +   + @@ -152,7 +203,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.RoiResponseSeries/eq is inherited from superclass HANDLE +   + @@ -160,7 +214,10 @@ export - find reference properties  + find reference properties + Help for types.core.RoiResponseSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -168,7 +225,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.RoiResponseSeries/findobj is inherited from superclass HANDLE +   + @@ -176,7 +236,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.RoiResponseSeries/findprop is inherited from superclass HANDLE +   + @@ -184,7 +247,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.RoiResponseSeries/ge is inherited from superclass HANDLE +   + @@ -192,7 +258,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.RoiResponseSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -200,7 +269,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.RoiResponseSeries/isvalid is inherited from superclass HANDLE +   + @@ -208,7 +280,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.RoiResponseSeries/le is inherited from superclass HANDLE +   + @@ -216,7 +291,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.RoiResponseSeries/listener is inherited from superclass HANDLE +   + @@ -232,7 +310,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.RoiResponseSeries/lt is inherited from superclass HANDLE +   + @@ -240,7 +321,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.RoiResponseSeries/ne is inherited from superclass HANDLE +   + @@ -248,7 +332,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.RoiResponseSeries/notify is inherited from superclass HANDLE +   + @@ -282,6 +369,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/ScratchData.html b/doc/+types/+core/ScratchData.html index 4e8b7819..638b75d9 100644 --- a/doc/+types/+core/ScratchData.html +++ b/doc/+types/+core/ScratchData.html @@ -48,7 +48,10 @@ - + @@ -65,7 +68,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + @@ -76,24 +95,33 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.SpatialSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   - + @@ -102,28 +130,45 @@ - + - + - + - + - +
dataproperty of type any property of type any + Help for types.core.ScratchData/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
notes addlistenerAdd listener for event. Add listener for event. + Help for types.core.ScratchData/addlistener is inherited from superclass HANDLE +   +
@@ -73,7 +79,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.ScratchData/delete is inherited from superclass HANDLE +   +
@@ -81,7 +90,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.ScratchData/eq is inherited from superclass HANDLE +   +
@@ -89,7 +101,10 @@ exportfind reference properties find reference properties + Help for types.core.ScratchData/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -97,7 +112,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.ScratchData/findobj is inherited from superclass HANDLE +   +
@@ -105,7 +123,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.ScratchData/findprop is inherited from superclass HANDLE +   +
@@ -113,7 +134,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.ScratchData/ge is inherited from superclass HANDLE +   +
@@ -121,7 +145,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.ScratchData/gt is inherited from superclass HANDLE +   +
Sealed @@ -129,7 +156,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.ScratchData/isvalid is inherited from superclass HANDLE +   +
@@ -137,7 +167,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.ScratchData/le is inherited from superclass HANDLE +   +
@@ -145,7 +178,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.ScratchData/listener is inherited from superclass HANDLE +   +
@@ -161,7 +197,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.ScratchData/lt is inherited from superclass HANDLE +   +
@@ -169,7 +208,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.ScratchData/ne is inherited from superclass HANDLE +   +
@@ -177,7 +219,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.ScratchData/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+core/SpatialSeries.html b/doc/+types/+core/SpatialSeries.html index edba07f4..6c914d7b 100644 --- a/doc/+types/+core/SpatialSeries.html +++ b/doc/+types/+core/SpatialSeries.html @@ -49,25 +49,44 @@
comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.SpatialSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +  
control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.SpatialSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +  
control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.SpatialSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +  
data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.SpatialSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   +
data_continuityOptionally 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.SpatialSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +  
data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.SpatialSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +  
data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.SpatialSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +  
descriptionDescription of the time series. Description of the time series. + Help for types.core.SpatialSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   +
reference_frame
starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.SpatialSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +  
starting_time_rateSampling rate, in Hz. Sampling rate, in Hz. + Help for types.core.SpatialSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   +
starting_time_unitUnit of measurement for time, which is fixed to 'seconds'. Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.SpatialSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestampsTimestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.SpatialSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_intervalValue is '1' Value is '1' + Help for types.core.SpatialSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   +
timestamps_unitUnit of measurement for timestamps, which is fixed to 'seconds'. Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.SpatialSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   +
@@ -136,7 +181,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.SpatialSeries/addlistener is inherited from superclass HANDLE +   + @@ -144,7 +192,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.SpatialSeries/delete is inherited from superclass HANDLE +   + @@ -152,7 +203,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.SpatialSeries/eq is inherited from superclass HANDLE +   + @@ -160,7 +214,10 @@ export - find reference properties  + find reference properties + Help for types.core.SpatialSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -168,7 +225,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.SpatialSeries/findobj is inherited from superclass HANDLE +   + @@ -176,7 +236,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.SpatialSeries/findprop is inherited from superclass HANDLE +   + @@ -184,7 +247,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.SpatialSeries/ge is inherited from superclass HANDLE +   + @@ -192,7 +258,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.SpatialSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -200,7 +269,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.SpatialSeries/isvalid is inherited from superclass HANDLE +   + @@ -208,7 +280,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.SpatialSeries/le is inherited from superclass HANDLE +   + @@ -216,7 +291,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.SpatialSeries/listener is inherited from superclass HANDLE +   + @@ -232,7 +310,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.SpatialSeries/lt is inherited from superclass HANDLE +   + @@ -240,7 +321,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.SpatialSeries/ne is inherited from superclass HANDLE +   + @@ -248,7 +332,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.SpatialSeries/notify is inherited from superclass HANDLE +   + @@ -282,6 +369,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/SpecFile.html b/doc/+types/+core/SpecFile.html deleted file mode 100644 index 47e2d313..00000000 --- a/doc/+types/+core/SpecFile.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - - - types.core.SpecFile - MATLAB File Help - - - - - - - - - - -
types.core.SpecFile - MATLAB File Help
-
types.core.SpecFile
-
  SpecFile Dataset for storing contents of a specification file for either the core format or an extension.  Name should match name of file.`
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.untyped.MetaClass
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
SpecFileConstructor for SpecFile 
- -
Property Summary -
- - - - - - - - - - - - - -
dataproperty of type char 
helpA help statement 
namespacesNamespaces defined in the file 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_help 
-   - - validate_namespaces 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/SpikeEventSeries.html b/doc/+types/+core/SpikeEventSeries.html index 33efc130..0ca03fe7 100644 --- a/doc/+types/+core/SpikeEventSeries.html +++ b/doc/+types/+core/SpikeEventSeries.html @@ -52,37 +52,60 @@ by axis attribute) AND by the global conversion factor in the 'conversion' attribute of 'data' to get the data values in Volts, i.e, data in Volts = data * data.conversion * channel_conversion. This approach allows for both global and per-channel data conversion factors needed to support the storage of electrical recordings as native values generated by data acquisition systems. - If this dataset is not present, then there is no channel-specific conversion factor, i.e. it is 1 for all channels.  + If this dataset is not present, then there is no channel-specific conversion factor, i.e. it is 1 for all channels. + Help for types.core.SpikeEventSeries/channel_conversion is inherited from superclass TYPES.CORE.ELECTRICALSERIES +   channel_conversion_axis The zero-indexed axis of the 'data' dataset that the channel-specific conversion factor corresponds to. This value is fixed - to 1.  + to 1. + Help for types.core.SpikeEventSeries/channel_conversion_axis is inherited from superclass TYPES.CORE.ELECTRICALSERIES +   comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.SpikeEventSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.SpikeEventSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.SpikeEventSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.SpikeEventSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.SpikeEventSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -91,54 +114,93 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.SpikeEventSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.SpikeEventSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.SpikeEventSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.SpikeEventSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrodes - DynamicTableRegion pointer to the electrodes that this time series was generated from.  + DynamicTableRegion pointer to the electrodes that this time series was generated from. + Help for types.core.SpikeEventSeries/electrodes is inherited from superclass TYPES.CORE.ELECTRICALSERIES +   + + + + filtering + Filtering applied to all channels of the data. For example, if this ElectricalSeries represents high-pass-filtered data (also + known as AP Band), then this value could be "High-pass 4-pole Bessel filter at 500 Hz". If this ElectricalSeries represents + low-pass-filtered LFP data and the type of filter is unknown, then this value could be "Low-pass filter at 300 Hz". If a non-standard + filter type is used, provide as much detail about the filter properties as possible. + Help for types.core.SpikeEventSeries/filtering is inherited from superclass TYPES.CORE.ELECTRICALSERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.SpikeEventSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.SpikeEventSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.SpikeEventSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.SpikeEventSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.SpikeEventSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.SpikeEventSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -151,7 +213,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.SpikeEventSeries/addlistener is inherited from superclass HANDLE +   + @@ -159,7 +224,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.SpikeEventSeries/delete is inherited from superclass HANDLE +   + @@ -167,7 +235,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.SpikeEventSeries/eq is inherited from superclass HANDLE +   + @@ -175,7 +246,10 @@ export - find reference properties  + find reference properties + Help for types.core.SpikeEventSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -183,7 +257,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.SpikeEventSeries/findobj is inherited from superclass HANDLE +   + @@ -191,7 +268,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.SpikeEventSeries/findprop is inherited from superclass HANDLE +   + @@ -199,7 +279,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.SpikeEventSeries/ge is inherited from superclass HANDLE +   + @@ -207,7 +290,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.SpikeEventSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -215,7 +301,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.SpikeEventSeries/isvalid is inherited from superclass HANDLE +   + @@ -223,7 +312,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.SpikeEventSeries/le is inherited from superclass HANDLE +   + @@ -231,7 +323,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.SpikeEventSeries/listener is inherited from superclass HANDLE +   + @@ -247,7 +342,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.SpikeEventSeries/lt is inherited from superclass HANDLE +   + @@ -255,7 +353,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.SpikeEventSeries/ne is inherited from superclass HANDLE +   + @@ -263,7 +364,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.SpikeEventSeries/notify is inherited from superclass HANDLE +   + @@ -305,6 +409,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -345,6 +457,14 @@ validate_electrodes   + + +   + + + validate_filtering +   +   diff --git a/doc/+types/+core/Subject.html b/doc/+types/+core/Subject.html index 28f597ca..4abba489 100644 --- a/doc/+types/+core/Subject.html +++ b/doc/+types/+core/Subject.html @@ -70,6 +70,10 @@ species Species of subject.  + + strain + Strain of subject.  + subject_id ID of animal/person used/participating in experiment (lab convention).  @@ -89,7 +93,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.Subject/addlistener is inherited from superclass HANDLE +   + @@ -97,7 +104,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.Subject/delete is inherited from superclass HANDLE +   + @@ -105,7 +115,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.Subject/eq is inherited from superclass HANDLE +   + @@ -113,7 +126,10 @@ export - find reference properties  + find reference properties + Help for types.core.Subject/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -121,7 +137,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.Subject/findobj is inherited from superclass HANDLE +   + @@ -129,7 +148,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.Subject/findprop is inherited from superclass HANDLE +   + @@ -137,7 +159,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.Subject/ge is inherited from superclass HANDLE +   + @@ -145,7 +170,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.Subject/gt is inherited from superclass HANDLE +   + Sealed @@ -153,7 +181,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.Subject/isvalid is inherited from superclass HANDLE +   + @@ -161,7 +192,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.Subject/le is inherited from superclass HANDLE +   + @@ -169,7 +203,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.Subject/listener is inherited from superclass HANDLE +   + @@ -185,7 +222,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.Subject/lt is inherited from superclass HANDLE +   + @@ -193,7 +233,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.Subject/ne is inherited from superclass HANDLE +   + @@ -201,7 +244,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.Subject/notify is inherited from superclass HANDLE +   + @@ -251,6 +297,14 @@ validate_species   + + +   + + + validate_strain +   +   diff --git a/doc/+types/+core/SweepTable.html b/doc/+types/+core/SweepTable.html index 7f76f5a0..cb287345 100644 --- a/doc/+types/+core/SweepTable.html +++ b/doc/+types/+core/SweepTable.html @@ -48,15 +48,24 @@ - + - + - + @@ -72,24 +81,42 @@ - - - - - +
colnamesThe names of the columns in this table. This should be used to specify an order to the columns. The names of the columns in this table. This should be used to specify an order to the columns. + Help for types.core.SweepTable/colnames is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
descriptionDescription of what is in this dynamic table. Description of what is in this dynamic table. + Help for types.core.SweepTable/description is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
idArray of unique identifiers for the rows of this dynamic table. Array of unique identifiers for the rows of this dynamic table. + Help for types.core.SweepTable/id is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
series
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. Vector columns, including index columns, of this dynamic table. + Help for types.core.SweepTable/vectordata is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
Method Summary
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - - - - -
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.core.SweepTable/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -97,7 +124,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.SweepTable/delete is inherited from superclass HANDLE +   +
@@ -105,7 +135,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.SweepTable/eq is inherited from superclass HANDLE +   +
@@ -113,7 +146,10 @@ exportfind reference properties find reference properties + Help for types.core.SweepTable/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -121,7 +157,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.SweepTable/findobj is inherited from superclass HANDLE +   +
@@ -129,7 +168,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.SweepTable/findprop is inherited from superclass HANDLE +   +
@@ -137,7 +179,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.SweepTable/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -145,7 +198,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.SweepTable/gt is inherited from superclass HANDLE +   +
Sealed @@ -153,7 +209,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.SweepTable/isvalid is inherited from superclass HANDLE +   +
@@ -161,7 +220,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.SweepTable/le is inherited from superclass HANDLE +   +
@@ -169,7 +231,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.SweepTable/listener is inherited from superclass HANDLE +   +
@@ -185,7 +250,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.SweepTable/lt is inherited from superclass HANDLE +   +
@@ -193,7 +261,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.SweepTable/ne is inherited from superclass HANDLE +   +
@@ -201,7 +272,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.SweepTable/notify is inherited from superclass HANDLE +   +
@@ -259,14 +333,6 @@ validate_vectordata  
-   - - validate_vectorindex 
Event Summary diff --git a/doc/+types/+core/TimeIntervals.html b/doc/+types/+core/TimeIntervals.html index 7ef803c0..15bed225 100644 --- a/doc/+types/+core/TimeIntervals.html +++ b/doc/+types/+core/TimeIntervals.html @@ -48,15 +48,24 @@ - + - + - + @@ -84,24 +93,42 @@ - - - - - +
colnamesThe names of the columns in this table. This should be used to specify an order to the columns. The names of the columns in this table. This should be used to specify an order to the columns. + Help for types.core.TimeIntervals/colnames is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
descriptionDescription of what is in this dynamic table. Description of what is in this dynamic table. + Help for types.core.TimeIntervals/description is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
idArray of unique identifiers for the rows of this dynamic table. Array of unique identifiers for the rows of this dynamic table. + Help for types.core.TimeIntervals/id is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
start_time
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. Vector columns, including index columns, of this dynamic table. + Help for types.core.TimeIntervals/vectordata is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
Method Summary
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - - - - -
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.core.TimeIntervals/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -109,7 +136,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.TimeIntervals/delete is inherited from superclass HANDLE +   +
@@ -117,7 +147,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.TimeIntervals/eq is inherited from superclass HANDLE +   +
@@ -125,7 +158,10 @@ exportfind reference properties find reference properties + Help for types.core.TimeIntervals/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -133,7 +169,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.TimeIntervals/findobj is inherited from superclass HANDLE +   +
@@ -141,7 +180,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.TimeIntervals/findprop is inherited from superclass HANDLE +   +
@@ -149,7 +191,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.TimeIntervals/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -157,7 +210,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.TimeIntervals/gt is inherited from superclass HANDLE +   +
Sealed @@ -165,7 +221,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.TimeIntervals/isvalid is inherited from superclass HANDLE +   +
@@ -173,7 +232,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.TimeIntervals/le is inherited from superclass HANDLE +   +
@@ -181,7 +243,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.TimeIntervals/listener is inherited from superclass HANDLE +   +
@@ -197,7 +262,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.TimeIntervals/lt is inherited from superclass HANDLE +   +
@@ -205,7 +273,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.TimeIntervals/ne is inherited from superclass HANDLE +   +
@@ -213,7 +284,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.TimeIntervals/notify is inherited from superclass HANDLE +   +
@@ -295,14 +369,6 @@ validate_vectordata  
-   - - validate_vectorindex 
Event Summary diff --git a/doc/+types/+core/TimeSeries.html b/doc/+types/+core/TimeSeries.html index c2a1259e..d5860dc1 100644 --- a/doc/+types/+core/TimeSeries.html +++ b/doc/+types/+core/TimeSeries.html @@ -70,6 +70,15 @@ to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable.  + + data_conversion Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system @@ -132,7 +141,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.TimeSeries/addlistener is inherited from superclass HANDLE +   + @@ -140,7 +152,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.TimeSeries/delete is inherited from superclass HANDLE +   + @@ -148,7 +163,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.TimeSeries/eq is inherited from superclass HANDLE +   + @@ -156,7 +174,10 @@ export - find reference properties  + find reference properties + Help for types.core.TimeSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -164,7 +185,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.TimeSeries/findobj is inherited from superclass HANDLE +   + @@ -172,7 +196,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.TimeSeries/findprop is inherited from superclass HANDLE +   + @@ -180,7 +207,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.TimeSeries/ge is inherited from superclass HANDLE +   + @@ -188,7 +218,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.TimeSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -196,7 +229,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.TimeSeries/isvalid is inherited from superclass HANDLE +   + @@ -204,7 +240,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.TimeSeries/le is inherited from superclass HANDLE +   + @@ -212,7 +251,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.TimeSeries/listener is inherited from superclass HANDLE +   + @@ -228,7 +270,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.TimeSeries/lt is inherited from superclass HANDLE +   + @@ -236,7 +281,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.TimeSeries/ne is inherited from superclass HANDLE +   + @@ -244,7 +292,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.TimeSeries/notify is inherited from superclass HANDLE +   + @@ -278,6 +329,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/TwoPhotonSeries.html b/doc/+types/+core/TwoPhotonSeries.html index dd423afb..af23fae2 100644 --- a/doc/+types/+core/TwoPhotonSeries.html +++ b/doc/+types/+core/TwoPhotonSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.TwoPhotonSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.TwoPhotonSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.TwoPhotonSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.TwoPhotonSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.TwoPhotonSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,34 +95,55 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.TwoPhotonSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.TwoPhotonSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.TwoPhotonSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.TwoPhotonSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + device + Link to the Device object that was used to capture these images. + Help for types.core.TwoPhotonSeries/device is inherited from superclass TYPES.CORE.IMAGESERIES +   + dimension - Number of pixels on x, y, (and z) axes.  + Number of pixels on x, y, (and z) axes. + Help for types.core.TwoPhotonSeries/dimension is inherited from superclass TYPES.CORE.IMAGESERIES +   + external_file Paths to one or more external file(s). The field is only present if format='external'. This is only relevant if the image series is stored in the file system as one or more image file(s). This field should NOT be used if the image is stored in - another NWB file and that file is linked to this file.  + another NWB file and that file is linked to this file. + Help for types.core.TwoPhotonSeries/external_file is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -114,7 +154,9 @@ Zero-based indexing is used (hence, the first element will always be zero). For example, if the 'external_file' dataset has three paths to files and the first file has 5 frames, the second file has 10 frames, and the third file has 20 frames, then this attribute will have values [0, 5, 15]. If there is a single external file that holds all of the frames of the ImageSeries - (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0].  + (and so there is a single element in the 'external_file' dataset), then this attribute should have value [0]. + Help for types.core.TwoPhotonSeries/external_file_starting_frame is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -125,7 +167,9 @@ format Format of image. If this is 'external', then the attribute 'external_file' contains the path information to the image files. If this is 'raw', then the raw (single-channel) binary data is stored in the 'data' dataset. If this attribute is not present, - then the default format='raw' case is assumed.  + then the default format='raw' case is assumed. + Help for types.core.TwoPhotonSeries/format is inherited from superclass TYPES.CORE.IMAGESERIES +   @@ -145,28 +189,45 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.TwoPhotonSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.TwoPhotonSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.TwoPhotonSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.TwoPhotonSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.TwoPhotonSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.TwoPhotonSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -179,7 +240,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.TwoPhotonSeries/addlistener is inherited from superclass HANDLE +   + @@ -187,7 +251,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.TwoPhotonSeries/delete is inherited from superclass HANDLE +   + @@ -195,7 +262,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.TwoPhotonSeries/eq is inherited from superclass HANDLE +   + @@ -203,7 +273,10 @@ export - find reference properties  + find reference properties + Help for types.core.TwoPhotonSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -211,7 +284,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.TwoPhotonSeries/findobj is inherited from superclass HANDLE +   + @@ -219,7 +295,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.TwoPhotonSeries/findprop is inherited from superclass HANDLE +   + @@ -227,7 +306,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.TwoPhotonSeries/ge is inherited from superclass HANDLE +   + @@ -235,7 +317,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.TwoPhotonSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -243,7 +328,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.TwoPhotonSeries/isvalid is inherited from superclass HANDLE +   + @@ -251,7 +339,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.TwoPhotonSeries/le is inherited from superclass HANDLE +   + @@ -259,7 +350,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.TwoPhotonSeries/listener is inherited from superclass HANDLE +   + @@ -275,7 +369,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.TwoPhotonSeries/lt is inherited from superclass HANDLE +   + @@ -283,7 +380,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.TwoPhotonSeries/ne is inherited from superclass HANDLE +   + @@ -291,7 +391,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.TwoPhotonSeries/notify is inherited from superclass HANDLE +   + @@ -325,6 +428,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   @@ -357,6 +468,14 @@ validate_description   + + +   + + + validate_device +   +   diff --git a/doc/+types/+core/Units.html b/doc/+types/+core/Units.html index 30d846c9..bbd1bc07 100644 --- a/doc/+types/+core/Units.html +++ b/doc/+types/+core/Units.html @@ -48,11 +48,17 @@ - + - + @@ -68,7 +74,10 @@ - + @@ -88,11 +97,10 @@ - - - - - + @@ -102,18 +110,64 @@ + + + + + + + + + + + +
colnamesThe names of the columns in this table. This should be used to specify an order to the columns. The names of the columns in this table. This should be used to specify an order to the columns. + Help for types.core.Units/colnames is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
descriptionDescription of what is in this dynamic table. Description of what is in this dynamic table. + Help for types.core.Units/description is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
electrode_group
idArray of unique identifiers for the rows of this dynamic table. Array of unique identifiers for the rows of this dynamic table. + Help for types.core.Units/id is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
obs_intervals
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. Vector columns, including index columns, of this dynamic table. + Help for types.core.Units/vectordata is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
waveform_meanwaveform_sd Spike waveform standard deviation for each spike unit. 
waveformsIndividual waveforms for each spike on each electrode. This is a doubly indexed column. The 'waveforms_index' column indexes + which waveforms in this column belong to the same spike event for a given unit, where each waveform was recorded from a different + electrode. The 'waveforms_index_index' column indexes the 'waveforms_index' column to indicate which spike events belong to + a given unit. For example, if the 'waveforms_index_index' column has values [2, 5, 6], then the first 2 elements of the 'waveforms_index' + column correspond to the 2 spike events of the first unit, the next 3 elements of the 'waveforms_index' column correspond + to the 3 spike events of the second unit, and the next 1 element of the 'waveforms_index' column corresponds to the 1 spike + event of the third unit. If the 'waveforms_index' column has values [3, 6, 8, 10, 12, 13], then the first 3 elements of the + 'waveforms' column contain the 3 spike waveforms that were recorded from 3 different electrodes for the first spike time of + the first unit. See https://nwb-schema.readthedocs.io/en/stable/format_description.html#doubly-ragged-arrays for a graphical + representation of this example. When there is only one electrode for each unit (i.e., each spike time is associated with a + single waveform), then the 'waveforms_index' column will have values 1, 2, ..., N, where N is the number of spike events. + The number of electrodes for each spike event should be the same within a given unit. The 'electrodes' column should be used + to indicate which electrodes are associated with each unit, and the order of the waveforms within a given unit x spike event + should be in the same order as the electrodes referenced in the 'electrodes' column of this table. The number of samples for + each waveform must be the same.  +
waveforms_indexIndex into the waveforms dataset. One value for every spike event. See 'waveforms' for more detail. 
waveforms_index_indexIndex into the waveforms_index dataset. One value for every unit (row in the table). See 'waveforms' for more detail. 
Method Summary
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - + @@ -328,7 +429,7 @@   - + @@ -336,7 +437,23 @@   - + + + + + + + + + + +
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.core.Units/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -121,7 +175,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.core.Units/delete is inherited from superclass HANDLE +   +
@@ -129,7 +186,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.core.Units/eq is inherited from superclass HANDLE +   +
@@ -137,7 +197,10 @@ exportfind reference properties find reference properties + Help for types.core.Units/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -145,7 +208,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.core.Units/findobj is inherited from superclass HANDLE +   +
@@ -153,7 +219,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.core.Units/findprop is inherited from superclass HANDLE +   +
@@ -161,7 +230,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.core.Units/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -169,7 +249,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.core.Units/gt is inherited from superclass HANDLE +   +
Sealed @@ -177,7 +260,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.core.Units/isvalid is inherited from superclass HANDLE +   +
@@ -185,7 +271,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.core.Units/le is inherited from superclass HANDLE +   +
@@ -193,7 +282,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.core.Units/listener is inherited from superclass HANDLE +   +
@@ -209,7 +301,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.core.Units/lt is inherited from superclass HANDLE +   +
@@ -217,7 +312,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.core.Units/ne is inherited from superclass HANDLE +   +
@@ -225,7 +323,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.core.Units/notify is inherited from superclass HANDLE +   +
@@ -320,7 +421,7 @@   validate_vectorindexvalidate_waveform_mean  
validate_waveform_meanvalidate_waveform_sd  
validate_waveform_sdvalidate_waveforms 
+   + + validate_waveforms_index 
+   + + validate_waveforms_index_index  
diff --git a/doc/+types/+core/VectorData.html b/doc/+types/+core/VectorData.html deleted file mode 100644 index eb034d51..00000000 --- a/doc/+types/+core/VectorData.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - types.core.VectorData - MATLAB File Help - - - - - - - - - - -
types.core.VectorData - MATLAB File Help
-
types.core.VectorData
-
  VectorData A 1-dimensional dataset. This can be indexed using a VectorIndex to encode a 2-dimensional ragged array in 1 dimension. The first vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at VectorData[VectorIndex(0)+1:VectorIndex(1)+1]. And so on.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.NWBData
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
VectorDataConstructor for VectorData 
- -
Property Summary -
- - - - - - - - - -
dataproperty of type any 
descriptionDescription of what these vectors represent. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_description 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/VectorIndex.html b/doc/+types/+core/VectorIndex.html deleted file mode 100644 index 93eece48..00000000 --- a/doc/+types/+core/VectorIndex.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - types.core.VectorIndex - MATLAB File Help - - - - - - - - - - -
types.core.VectorIndex - MATLAB File Help
-
types.core.VectorIndex
-
  VectorIndex An array of indices into the first dimension of the target VectorData. Can be used with VectorData to encode a 2-dimensional ragged array in 1 dimension.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.core.Index
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
VectorIndexConstructor for VectorIndex 
- -
Property Summary -
- - - - - - - - - -
dataproperty of type any 
targetTarget dataset that this index applies to. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_targetReference to type `VectorData` 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/VoltageClampSeries.html b/doc/+types/+core/VoltageClampSeries.html index dcba560c..c9397c96 100644 --- a/doc/+types/+core/VoltageClampSeries.html +++ b/doc/+types/+core/VoltageClampSeries.html @@ -65,25 +65,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.VoltageClampSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.VoltageClampSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.VoltageClampSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.VoltageClampSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.VoltageClampSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -92,32 +111,47 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.VoltageClampSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.VoltageClampSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.VoltageClampSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.VoltageClampSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrode - Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.  + Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data. + Help for types.core.VoltageClampSeries/electrode is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + gain - Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).  + Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + Help for types.core.VoltageClampSeries/gain is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + resistance_comp_bandwidth @@ -146,36 +180,59 @@ starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.VoltageClampSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.VoltageClampSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.VoltageClampSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + stimulus_description - Protocol/stimulus name for this patch-clamp dataset.  + Protocol/stimulus name for this patch-clamp dataset. + Help for types.core.VoltageClampSeries/stimulus_description is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + sweep_number - Sweep number, allows to group different PatchClampSeries together.  + Sweep number, allows to group different PatchClampSeries together. + Help for types.core.VoltageClampSeries/sweep_number is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.VoltageClampSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.VoltageClampSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.VoltageClampSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + whole_cell_capacitance_comp @@ -204,7 +261,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.VoltageClampSeries/addlistener is inherited from superclass HANDLE +   + @@ -212,7 +272,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.VoltageClampSeries/delete is inherited from superclass HANDLE +   + @@ -220,7 +283,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.VoltageClampSeries/eq is inherited from superclass HANDLE +   + @@ -228,7 +294,10 @@ export - find reference properties  + find reference properties + Help for types.core.VoltageClampSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -236,7 +305,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.VoltageClampSeries/findobj is inherited from superclass HANDLE +   + @@ -244,7 +316,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.VoltageClampSeries/findprop is inherited from superclass HANDLE +   + @@ -252,7 +327,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.VoltageClampSeries/ge is inherited from superclass HANDLE +   + @@ -260,7 +338,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.VoltageClampSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -268,7 +349,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.VoltageClampSeries/isvalid is inherited from superclass HANDLE +   + @@ -276,7 +360,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.VoltageClampSeries/le is inherited from superclass HANDLE +   + @@ -284,7 +371,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.VoltageClampSeries/listener is inherited from superclass HANDLE +   + @@ -300,7 +390,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.VoltageClampSeries/lt is inherited from superclass HANDLE +   + @@ -308,7 +401,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.VoltageClampSeries/ne is inherited from superclass HANDLE +   + @@ -316,7 +412,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.VoltageClampSeries/notify is inherited from superclass HANDLE +   + @@ -366,6 +465,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/VoltageClampStimulusSeries.html b/doc/+types/+core/VoltageClampStimulusSeries.html index 4a3cf877..c00c58da 100644 --- a/doc/+types/+core/VoltageClampStimulusSeries.html +++ b/doc/+types/+core/VoltageClampStimulusSeries.html @@ -49,25 +49,44 @@ comments 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.  + descriptive information if the primary description field is populated with a computer-readable string. + Help for types.core.VoltageClampStimulusSeries/comments is inherited from superclass TYPES.CORE.TIMESERIES +   control Numerical labels that apply to each time point in data for the purpose of querying and slicing data by these values. If present, - the length of this array should be the same size as the first dimension of data.  + the length of this array should be the same size as the first dimension of data. + Help for types.core.VoltageClampStimulusSeries/control is inherited from superclass TYPES.CORE.TIMESERIES +   control_description Description of each control value. Must be present if control is present. If present, control_description[0] should describe - time points where control == 0.  + time points where control == 0. + Help for types.core.VoltageClampStimulusSeries/control_description is inherited from superclass TYPES.CORE.TIMESERIES +   data Data values. Data can be in 1-D, 2-D, 3-D, or 4-D. The first dimension should always represent time. This can also be used - to store binary data (e.g., image frames). This can also be a link to data stored in an external file.  + to store binary data (e.g., image frames). This can also be a link to data stored in an external file. + Help for types.core.VoltageClampStimulusSeries/data is inherited from superclass TYPES.CORE.TIMESERIES +   + + + + data_continuity + 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 data is interpreted, the way it is visualized, and what analysis methods are applicable. + Help for types.core.VoltageClampStimulusSeries/data_continuity is inherited from superclass TYPES.CORE.TIMESERIES +   @@ -76,66 +95,104 @@ units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then - the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.  + the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9. + Help for types.core.VoltageClampStimulusSeries/data_conversion is inherited from superclass TYPES.CORE.TIMESERIES +   data_resolution Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least - significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.  + significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0. + Help for types.core.VoltageClampStimulusSeries/data_resolution is inherited from superclass TYPES.CORE.TIMESERIES +   data_unit 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'.  + the data in these units, multiply 'data' by 'conversion'. + Help for types.core.VoltageClampStimulusSeries/data_unit is inherited from superclass TYPES.CORE.TIMESERIES +   description - Description of the time series.  + Description of the time series. + Help for types.core.VoltageClampStimulusSeries/description is inherited from superclass TYPES.CORE.TIMESERIES +   + electrode - Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data.  + Link to IntracellularElectrode object that describes the electrode that was used to apply or record this data. + Help for types.core.VoltageClampStimulusSeries/electrode is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + gain - Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).  + Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp). + Help for types.core.VoltageClampStimulusSeries/gain is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + starting_time Timestamp of the first sample in seconds. When timestamps are uniformly spaced, the timestamp of the first sample can be specified - and all subsequent ones calculated from the sampling rate attribute.  + and all subsequent ones calculated from the sampling rate attribute. + Help for types.core.VoltageClampStimulusSeries/starting_time is inherited from superclass TYPES.CORE.TIMESERIES +   starting_time_rate - Sampling rate, in Hz.  + Sampling rate, in Hz. + Help for types.core.VoltageClampStimulusSeries/starting_time_rate is inherited from superclass TYPES.CORE.TIMESERIES +   + starting_time_unit - Unit of measurement for time, which is fixed to 'seconds'.  + Unit of measurement for time, which is fixed to 'seconds'. + Help for types.core.VoltageClampStimulusSeries/starting_time_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + stimulus_description - Protocol/stimulus name for this patch-clamp dataset.  + Protocol/stimulus name for this patch-clamp dataset. + Help for types.core.VoltageClampStimulusSeries/stimulus_description is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + sweep_number - Sweep number, allows to group different PatchClampSeries together.  + Sweep number, allows to group different PatchClampSeries together. + Help for types.core.VoltageClampStimulusSeries/sweep_number is inherited from superclass TYPES.CORE.PATCHCLAMPSERIES +   + timestamps - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.  + Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time. + Help for types.core.VoltageClampStimulusSeries/timestamps is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_interval - Value is '1'  + Value is '1' + Help for types.core.VoltageClampStimulusSeries/timestamps_interval is inherited from superclass TYPES.CORE.TIMESERIES +   + timestamps_unit - Unit of measurement for timestamps, which is fixed to 'seconds'.  + Unit of measurement for timestamps, which is fixed to 'seconds'. + Help for types.core.VoltageClampStimulusSeries/timestamps_unit is inherited from superclass TYPES.CORE.TIMESERIES +   + @@ -148,7 +205,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.core.VoltageClampStimulusSeries/addlistener is inherited from superclass HANDLE +   + @@ -156,7 +216,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.core.VoltageClampStimulusSeries/delete is inherited from superclass HANDLE +   + @@ -164,7 +227,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.core.VoltageClampStimulusSeries/eq is inherited from superclass HANDLE +   + @@ -172,7 +238,10 @@ export - find reference properties  + find reference properties + Help for types.core.VoltageClampStimulusSeries/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -180,7 +249,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.core.VoltageClampStimulusSeries/findobj is inherited from superclass HANDLE +   + @@ -188,7 +260,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.core.VoltageClampStimulusSeries/findprop is inherited from superclass HANDLE +   + @@ -196,7 +271,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.core.VoltageClampStimulusSeries/ge is inherited from superclass HANDLE +   + @@ -204,7 +282,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.core.VoltageClampStimulusSeries/gt is inherited from superclass HANDLE +   + Sealed @@ -212,7 +293,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.core.VoltageClampStimulusSeries/isvalid is inherited from superclass HANDLE +   + @@ -220,7 +304,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.core.VoltageClampStimulusSeries/le is inherited from superclass HANDLE +   + @@ -228,7 +315,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.core.VoltageClampStimulusSeries/listener is inherited from superclass HANDLE +   + @@ -244,7 +334,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.core.VoltageClampStimulusSeries/lt is inherited from superclass HANDLE +   + @@ -252,7 +345,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.core.VoltageClampStimulusSeries/ne is inherited from superclass HANDLE +   + @@ -260,7 +356,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.core.VoltageClampStimulusSeries/notify is inherited from superclass HANDLE +   + @@ -294,6 +393,14 @@ validate_data   + + +   + + + validate_data_continuity +   +   diff --git a/doc/+types/+core/RetinotopyImage.html b/doc/+types/+hdmf_common/AlignedDynamicTable.html similarity index 50% rename from doc/+types/+core/RetinotopyImage.html rename to doc/+types/+hdmf_common/AlignedDynamicTable.html index 6229ad45..7494faa8 100644 --- a/doc/+types/+core/RetinotopyImage.html +++ b/doc/+types/+hdmf_common/AlignedDynamicTable.html @@ -3,26 +3,26 @@ - types.core.RetinotopyImage - MATLAB File Help + types.hdmf_common.AlignedDynamicTable - MATLAB File Help - +
types.core.RetinotopyImage - MATLAB File Helptypes.hdmf_common.AlignedDynamicTable - MATLAB File Help
-
types.core.RetinotopyImage
-
  RetinotopyImage Gray-scale image related to retinotopic mapping. Array structure: [num_rows][num_columns]
+
types.hdmf_common.AlignedDynamicTable
+
  AlignedDynamicTable DynamicTable container that supports storing a collection of sub-tables. Each sub-table is a DynamicTable itself that is aligned with the main table by row index. I.e., all DynamicTables stored in this group MUST have the same number of rows. This type effectively defines a 2-level table in which the main data is stored in the main table implemented by this type and additional columns of the table are grouped into categories, with each category being represented by a separate DynamicTable stored within the group.
Class Details
- + @@ -38,8 +38,8 @@
Superclassestypes.core.GrayscaleImage, types.untyped.DatasetClasstypes.hdmf_common.DynamicTable, types.untyped.GroupClass
Sealed
- - + +
RetinotopyImageConstructor for RetinotopyImage AlignedDynamicTableConstructor for AlignedDynamicTable 
@@ -47,45 +47,79 @@
- - + + - - + + - - - - - + - - + + - - + + - - + +
bits_per_pixelNumber of bits used to represent each value. This is necessary to determine maximum (white) pixel value. categoriesThe names of the categories in this AlignedDynamicTable. Each category is represented by one DynamicTable stored in the parent + group. This attribute should be used to specify an order of categories and the category names must match the names of the + corresponding DynamicTable in the group.  +
dataproperty of type any colnamesThe names of the columns in this table. This should be used to specify an order to the columns. + Help for types.hdmf_common.AlignedDynamicTable/colnames is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
descriptionDescription of the image. 
dimensionNumber of rows and columns in the image. NOTE: row, column representation is equivalent to height, width. Description of what is in this dynamic table. + Help for types.hdmf_common.AlignedDynamicTable/description is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
field_of_viewSize of viewing area, in meters. dynamictableA DynamicTable representing a particular category for columns in the AlignedDynamicTable parent container. The table MUST + be aligned with (i.e., have the same number of rows) as all other DynamicTables stored in the AlignedDynamicTable parent container. + The name of the category is given by the name of the DynamicTable and its description by the description attribute of the + DynamicTable.  +
formatFormat of image. Right now only 'raw' is supported. idArray of unique identifiers for the rows of this dynamic table. + Help for types.hdmf_common.AlignedDynamicTable/id is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
resolutionPixel resolution of the image, in pixels per centimeter. vectordataVector columns, including index columns, of this dynamic table. + Help for types.hdmf_common.AlignedDynamicTable/vectordata is inherited from superclass TYPES.HDMF_COMMON.DYNAMICTABLE +   +
Method Summary
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - - - - - - - + @@ -220,7 +293,7 @@   - + @@ -228,7 +301,7 @@   - + @@ -236,7 +309,7 @@   - + @@ -244,7 +317,7 @@   - + @@ -252,7 +325,7 @@   - +
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.AlignedDynamicTable/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -93,7 +127,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.AlignedDynamicTable/delete is inherited from superclass HANDLE +   +
@@ -101,7 +138,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.AlignedDynamicTable/eq is inherited from superclass HANDLE +   +
@@ -109,7 +149,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.AlignedDynamicTable/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -117,7 +160,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.AlignedDynamicTable/findobj is inherited from superclass HANDLE +   +
@@ -125,7 +171,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.AlignedDynamicTable/findprop is inherited from superclass HANDLE +   +
@@ -133,7 +182,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.AlignedDynamicTable/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -141,7 +201,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.AlignedDynamicTable/gt is inherited from superclass HANDLE +   +
Sealed @@ -149,7 +212,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.AlignedDynamicTable/isvalid is inherited from superclass HANDLE +   +
@@ -157,7 +223,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.AlignedDynamicTable/le is inherited from superclass HANDLE +   +
@@ -165,7 +234,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.AlignedDynamicTable/listener is inherited from superclass HANDLE +   +
@@ -181,7 +253,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.AlignedDynamicTable/lt is inherited from superclass HANDLE +   +
@@ -189,7 +264,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.AlignedDynamicTable/ne is inherited from superclass HANDLE +   +
@@ -197,22 +275,17 @@ notifyNotify listeners of event. 
+ Notify listeners of event. + Help for types.hdmf_common.AlignedDynamicTable/notify is inherited from superclass HANDLE   - validate_bits_per_pixel 
  validate_datavalidate_categories  
validate_descriptionvalidate_colnames  
validate_dimensionvalidate_description  
validate_field_of_viewvalidate_dynamictable  
validate_formatvalidate_id  
validate_resolutionvalidate_vectordata  
diff --git a/doc/+types/+hdmf_common/CSRMatrix.html b/doc/+types/+hdmf_common/CSRMatrix.html index 3c263888..0139fdfd 100644 --- a/doc/+types/+hdmf_common/CSRMatrix.html +++ b/doc/+types/+hdmf_common/CSRMatrix.html @@ -16,13 +16,13 @@
types.hdmf_common.CSRMatrix
-
  CSRMatrix a compressed sparse row matrix
+
  CSRMatrix A compressed sparse row matrix. Data are stored in the standard CSR format, where column indices for row i are stored in indices[indptr[i]:indptr[i+1]] and their corresponding values are stored in data[indptr[i]:indptr[i+1]].
Class Details
- + @@ -48,19 +48,19 @@
Superclassestypes.untyped.MetaClass, types.untyped.GroupClasstypes.hdmf_common.Container, types.untyped.GroupClass
Sealed
- + - + - + - +
datavalues in the matrix The non-zero values in the matrix. 
indicescolumn indices The column indices. 
indptrindex pointer The row index pointer. 
shapethe shape of this sparse matrix The shape (number of rows, number of columns) of this sparse matrix. 
@@ -73,7 +73,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.hdmf_common.CSRMatrix/addlistener is inherited from superclass HANDLE +   + @@ -81,7 +84,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.hdmf_common.CSRMatrix/delete is inherited from superclass HANDLE +   + @@ -89,7 +95,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.hdmf_common.CSRMatrix/eq is inherited from superclass HANDLE +   + @@ -97,7 +106,10 @@ export - find reference properties  + find reference properties + Help for types.hdmf_common.CSRMatrix/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -105,7 +117,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.hdmf_common.CSRMatrix/findobj is inherited from superclass HANDLE +   + @@ -113,7 +128,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.hdmf_common.CSRMatrix/findprop is inherited from superclass HANDLE +   + @@ -121,7 +139,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.CSRMatrix/ge is inherited from superclass HANDLE +   + @@ -129,7 +150,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.hdmf_common.CSRMatrix/gt is inherited from superclass HANDLE +   + Sealed @@ -137,7 +161,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.hdmf_common.CSRMatrix/isvalid is inherited from superclass HANDLE +   + @@ -145,7 +172,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.CSRMatrix/le is inherited from superclass HANDLE +   + @@ -153,7 +183,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.CSRMatrix/listener is inherited from superclass HANDLE +   + @@ -169,7 +202,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.hdmf_common.CSRMatrix/lt is inherited from superclass HANDLE +   + @@ -177,7 +213,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.CSRMatrix/ne is inherited from superclass HANDLE +   + @@ -185,7 +224,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.hdmf_common.CSRMatrix/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+hdmf_common/Container.html b/doc/+types/+hdmf_common/Container.html index 2e222eac..22eebb27 100644 --- a/doc/+types/+hdmf_common/Container.html +++ b/doc/+types/+hdmf_common/Container.html @@ -16,7 +16,7 @@
types.hdmf_common.Container
-
  Container An abstract data type for a generic container storing collections of data and metadata. Base type for all data and metadata containers.
+
  Container An abstract data type for a group storing collections of data and metadata. Base type for all data and metadata containers.
Class Details
@@ -52,7 +52,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - +
addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.Container/addlistener is inherited from superclass HANDLE +   +
@@ -60,7 +63,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.Container/delete is inherited from superclass HANDLE +   +
@@ -68,7 +74,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.Container/eq is inherited from superclass HANDLE +   +
@@ -84,7 +93,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.Container/findobj is inherited from superclass HANDLE +   +
@@ -92,7 +104,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.Container/findprop is inherited from superclass HANDLE +   +
@@ -100,7 +115,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.Container/ge is inherited from superclass HANDLE +   +
@@ -108,7 +126,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.Container/gt is inherited from superclass HANDLE +   +
Sealed @@ -116,7 +137,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.Container/isvalid is inherited from superclass HANDLE +   +
@@ -124,7 +148,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.Container/le is inherited from superclass HANDLE +   +
@@ -132,7 +159,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.Container/listener is inherited from superclass HANDLE +   +
@@ -148,7 +178,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.Container/lt is inherited from superclass HANDLE +   +
@@ -156,7 +189,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.Container/ne is inherited from superclass HANDLE +   +
@@ -164,7 +200,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.hdmf_common.Container/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+hdmf_common/Data.html b/doc/+types/+hdmf_common/Data.html index 717ce9d4..d4896cf5 100644 --- a/doc/+types/+hdmf_common/Data.html +++ b/doc/+types/+hdmf_common/Data.html @@ -61,7 +61,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.hdmf_common.Data/addlistener is inherited from superclass HANDLE +   + @@ -69,7 +72,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.hdmf_common.Data/delete is inherited from superclass HANDLE +   + @@ -77,7 +83,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.hdmf_common.Data/eq is inherited from superclass HANDLE +   + @@ -93,7 +102,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.hdmf_common.Data/findobj is inherited from superclass HANDLE +   + @@ -101,7 +113,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.hdmf_common.Data/findprop is inherited from superclass HANDLE +   + @@ -109,7 +124,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.Data/ge is inherited from superclass HANDLE +   + @@ -117,7 +135,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.hdmf_common.Data/gt is inherited from superclass HANDLE +   + Sealed @@ -125,7 +146,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.hdmf_common.Data/isvalid is inherited from superclass HANDLE +   + @@ -133,7 +157,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.Data/le is inherited from superclass HANDLE +   + @@ -141,7 +168,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.Data/listener is inherited from superclass HANDLE +   + @@ -157,7 +187,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.hdmf_common.Data/lt is inherited from superclass HANDLE +   + @@ -165,7 +198,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.Data/ne is inherited from superclass HANDLE +   + @@ -173,7 +209,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.hdmf_common.Data/notify is inherited from superclass HANDLE +   + diff --git a/doc/+types/+hdmf_common/DynamicTable.html b/doc/+types/+hdmf_common/DynamicTable.html index 9ae0d155..61aa2f01 100644 --- a/doc/+types/+hdmf_common/DynamicTable.html +++ b/doc/+types/+hdmf_common/DynamicTable.html @@ -16,7 +16,7 @@
types.hdmf_common.DynamicTable
-
  DynamicTable A group containing multiple datasets that are aligned on the first dimension (Currently, this requirement if left up to APIs to check and enforce). Apart from a column that contains unique identifiers for each row there are no other required datasets. Users are free to add any number of VectorData objects here. Table functionality is already supported through compound types, which is analogous to storing an array-of-structs. DynamicTable can be thought of as a struct-of-arrays. This provides an alternative structure to choose from when optimizing storage for anticipated access patterns. Additionally, this type provides a way of creating a table without having to define a compound type up front. Although this convenience may be attractive, users should think carefully about how data will be accessed. DynamicTable is more appropriate for column-centric access, whereas a dataset with a compound type would be more appropriate for row-centric access. Finally, data size should also be taken into account. For small tables, performance loss may be an acceptable trade-off for the flexibility of a DynamicTable. For example, DynamicTable was originally developed for storing trial data and spike unit metadata. Both of these use cases are expected to produce relatively small tables, so the spatial locality of multiple datasets present in a DynamicTable is not expected to have a significant performance impact. Additionally, requirements of trial and unit metadata tables are sufficiently diverse that performance implications can be overlooked in favor of usability.
+
  DynamicTable A group containing multiple datasets that are aligned on the first dimension (Currently, this requirement if left up to APIs to check and enforce). These datasets represent different columns in the table. Apart from a column that contains unique identifiers for each row, there are no other required datasets. Users are free to add any number of custom VectorData objects (columns) here. DynamicTable also supports ragged array columns, where each element can be of a different size. To add a ragged array column, use a VectorIndex type to index the corresponding VectorData type. See documentation for VectorData and VectorIndex for more details. Unlike a compound data type, which is analogous to storing an array-of-structs, a DynamicTable can be thought of as a struct-of-arrays. This provides an alternative structure to choose from when optimizing storage for anticipated access patterns. Additionally, this type provides a way of creating a table without having to define a compound type up front. Although this convenience may be attractive, users should think carefully about how data will be accessed. DynamicTable is more appropriate for column-centric access, whereas a dataset with a compound type would be more appropriate for row-centric access. Finally, data size should also be taken into account. For small tables, performance loss may be an acceptable trade-off for the flexibility of a DynamicTable.
Class Details
@@ -60,24 +60,39 @@ - - - - - +
vectordataVector columns of this dynamic table. 
vectorindexIndices for the vector columns of this dynamic table. Vector columns, including index columns, of this dynamic table. 
Method Summary
+ + + + + - + + + + + + - + - + - + - + - + - + + + + + + - + - + - + - + - + - + - + - - - - -
+   + + addRow 
  addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.DynamicTable/addlistener is inherited from superclass HANDLE +   +
+   + + clear 
@@ -85,7 +100,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.DynamicTable/delete is inherited from superclass HANDLE +   +
@@ -93,7 +111,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.DynamicTable/eq is inherited from superclass HANDLE +   +
@@ -101,7 +122,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.DynamicTable/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -109,7 +133,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.DynamicTable/findobj is inherited from superclass HANDLE +   +
@@ -117,7 +144,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.DynamicTable/findprop is inherited from superclass HANDLE +   +
@@ -125,7 +155,18 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.DynamicTable/ge is inherited from superclass HANDLE +   +
+   + + getRow 
@@ -133,7 +174,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.DynamicTable/gt is inherited from superclass HANDLE +   +
Sealed @@ -141,7 +185,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.DynamicTable/isvalid is inherited from superclass HANDLE +   +
@@ -149,7 +196,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.DynamicTable/le is inherited from superclass HANDLE +   +
@@ -157,7 +207,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.DynamicTable/listener is inherited from superclass HANDLE +   +
@@ -173,7 +226,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.DynamicTable/lt is inherited from superclass HANDLE +   +
@@ -181,7 +237,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.DynamicTable/ne is inherited from superclass HANDLE +   +
@@ -189,7 +248,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.hdmf_common.DynamicTable/notify is inherited from superclass HANDLE +   +
@@ -223,14 +285,6 @@ validate_vectordata  
-   - - validate_vectorindex 
Event Summary diff --git a/doc/+types/+hdmf_common/DynamicTableRegion.html b/doc/+types/+hdmf_common/DynamicTableRegion.html index c06528b1..b74c6d83 100644 --- a/doc/+types/+hdmf_common/DynamicTableRegion.html +++ b/doc/+types/+hdmf_common/DynamicTableRegion.html @@ -48,11 +48,17 @@ - + - + @@ -69,7 +75,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - + - - - + @@ -216,7 +234,7 @@   - +
dataproperty of type any property of type any + Help for types.hdmf_common.DynamicTableRegion/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
descriptionDescription of what these vectors represent. Description of what these vectors represent. + Help for types.hdmf_common.DynamicTableRegion/description is inherited from superclass TYPES.HDMF_COMMON.VECTORDATA +   +
table addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.DynamicTableRegion/addlistener is inherited from superclass HANDLE +   +
@@ -77,7 +86,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.DynamicTableRegion/delete is inherited from superclass HANDLE +   +
@@ -85,7 +97,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.DynamicTableRegion/eq is inherited from superclass HANDLE +   +
@@ -93,7 +108,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.DynamicTableRegion/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -101,7 +119,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.DynamicTableRegion/findobj is inherited from superclass HANDLE +   +
@@ -109,7 +130,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.DynamicTableRegion/findprop is inherited from superclass HANDLE +   +
@@ -117,7 +141,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.DynamicTableRegion/ge is inherited from superclass HANDLE +   +
@@ -125,7 +152,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.DynamicTableRegion/gt is inherited from superclass HANDLE +   +
Sealed @@ -133,7 +163,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.DynamicTableRegion/isvalid is inherited from superclass HANDLE +   +
@@ -141,7 +174,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.DynamicTableRegion/le is inherited from superclass HANDLE +   +
@@ -149,7 +185,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.DynamicTableRegion/listener is inherited from superclass HANDLE +   +
@@ -165,7 +204,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.DynamicTableRegion/lt is inherited from superclass HANDLE +   +
@@ -173,7 +215,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.DynamicTableRegion/ne is inherited from superclass HANDLE +   +
@@ -181,7 +226,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.hdmf_common.DynamicTableRegion/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+hdmf_common/ElementIdentifiers.html b/doc/+types/+hdmf_common/ElementIdentifiers.html index 1016dce6..5fa8b4f6 100644 --- a/doc/+types/+hdmf_common/ElementIdentifiers.html +++ b/doc/+types/+hdmf_common/ElementIdentifiers.html @@ -48,7 +48,10 @@ - +
dataproperty of type any property of type any + Help for types.hdmf_common.ElementIdentifiers/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
@@ -61,7 +64,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.ElementIdentifiers/addlistener is inherited from superclass HANDLE +   +
@@ -69,7 +75,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.ElementIdentifiers/delete is inherited from superclass HANDLE +   +
@@ -77,7 +86,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.ElementIdentifiers/eq is inherited from superclass HANDLE +   +
@@ -85,7 +97,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.ElementIdentifiers/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -93,7 +108,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.ElementIdentifiers/findobj is inherited from superclass HANDLE +   +
@@ -101,7 +119,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.ElementIdentifiers/findprop is inherited from superclass HANDLE +   +
@@ -109,7 +130,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.ElementIdentifiers/ge is inherited from superclass HANDLE +   +
@@ -117,7 +141,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.ElementIdentifiers/gt is inherited from superclass HANDLE +   +
Sealed @@ -125,7 +152,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.ElementIdentifiers/isvalid is inherited from superclass HANDLE +   +
@@ -133,7 +163,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.ElementIdentifiers/le is inherited from superclass HANDLE +   +
@@ -141,7 +174,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.ElementIdentifiers/listener is inherited from superclass HANDLE +   +
@@ -157,7 +193,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.ElementIdentifiers/lt is inherited from superclass HANDLE +   +
@@ -165,7 +204,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.ElementIdentifiers/ne is inherited from superclass HANDLE +   +
@@ -173,7 +215,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.hdmf_common.ElementIdentifiers/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+hdmf_common/Index.html b/doc/+types/+hdmf_common/Index.html deleted file mode 100644 index 7595891e..00000000 --- a/doc/+types/+hdmf_common/Index.html +++ /dev/null @@ -1,204 +0,0 @@ - - - - - - types.hdmf_common.Index - MATLAB File Help - - - - - - - - - - -
types.hdmf_common.Index - MATLAB File Help
-
types.hdmf_common.Index
-
  Index Pointers that index data values.
- -
Class Details
- - - - - - - - - - - - - -
Superclassestypes.hdmf_common.Data, types.untyped.DatasetClass
Sealedfalse
Construct on loadfalse
- -
Constructor Summary -
- - - - - -
IndexConstructor for Index 
- -
Property Summary -
- - - - - - - - - -
dataproperty of type any 
targetTarget dataset that this index applies to. 
- -
Method Summary -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-   - - addlistenerAdd listener for event. 
-   - - deleteDelete a handle object. 
-   - - eq== (EQ) Test handle equality. 
-   - - exportfind reference properties 
-   - - findobjFind objects matching specified conditions. 
-   - - findpropFind property of MATLAB handle object. 
-   - - ge>= (GE) Greater than or equal relation for handles. 
-   - - gt> (GT) Greater than relation for handles. 
Sealed -   - - isvalidTest handle validity. 
-   - - le<= (LE) Less than or equal relation for handles. 
-   - - listenerAdd listener for event without binding the listener to the source object. 
-   - - loadAll 
-   - - lt< (LT) Less than relation for handles. 
-   - - ne~= (NE) Not equal relation for handles. 
-   - - notifyNotify listeners of event. 
-   - - validate_data 
-   - - validate_targetReference to type `Data` 
- -
Event Summary -
-
- - \ No newline at end of file diff --git a/doc/+types/+core/AxisMap.html b/doc/+types/+hdmf_common/SimpleMultiContainer.html similarity index 61% rename from doc/+types/+core/AxisMap.html rename to doc/+types/+hdmf_common/SimpleMultiContainer.html index 78fa9e8f..037a6b94 100644 --- a/doc/+types/+core/AxisMap.html +++ b/doc/+types/+hdmf_common/SimpleMultiContainer.html @@ -3,26 +3,26 @@ - types.core.AxisMap - MATLAB File Help + types.hdmf_common.SimpleMultiContainer - MATLAB File Help - +
types.core.AxisMap - MATLAB File Helptypes.hdmf_common.SimpleMultiContainer - MATLAB File Help
-
types.core.AxisMap
-
  AxisMap Abstract two-dimensional map of responses to stimuli along a single response axis (e.g. eccentricity)
+
types.hdmf_common.SimpleMultiContainer
+
  SimpleMultiContainer A simple Container for holding onto multiple containers.
Class Details
- + @@ -38,8 +38,8 @@
Superclassestypes.core.RetinotopyMap, types.untyped.DatasetClasstypes.hdmf_common.Container, types.untyped.GroupClass
Sealed
- - + +
AxisMapConstructor for AxisMap SimpleMultiContainerConstructor for SimpleMultiContainer 
@@ -47,20 +47,12 @@ - - - - - - + + - - - - - - + +
dataproperty of type any 
dimensionNumber of rows and columns in the image. NOTE: row, column representation is equivalent to height, width. containerContainer objects held within this SimpleMultiContainer. 
field_of_viewSize of viewing area, in meters. 
unitUnit that axis data is stored in (e.g., degrees). dataData objects held within this SimpleMultiContainer. 
@@ -73,7 +65,10 @@
addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.SimpleMultiContainer/addlistener is inherited from superclass HANDLE +   +
@@ -81,7 +76,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.SimpleMultiContainer/delete is inherited from superclass HANDLE +   +
@@ -89,7 +87,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.SimpleMultiContainer/eq is inherited from superclass HANDLE +   +
@@ -97,7 +98,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.SimpleMultiContainer/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -105,7 +109,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.SimpleMultiContainer/findobj is inherited from superclass HANDLE +   +
@@ -113,7 +120,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.SimpleMultiContainer/findprop is inherited from superclass HANDLE +   +
@@ -121,7 +131,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.SimpleMultiContainer/ge is inherited from superclass HANDLE +   +
@@ -129,7 +142,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.SimpleMultiContainer/gt is inherited from superclass HANDLE +   +
Sealed @@ -137,7 +153,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.SimpleMultiContainer/isvalid is inherited from superclass HANDLE +   +
@@ -145,7 +164,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.SimpleMultiContainer/le is inherited from superclass HANDLE +   +
@@ -153,7 +175,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.SimpleMultiContainer/listener is inherited from superclass HANDLE +   +
@@ -169,7 +194,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.SimpleMultiContainer/lt is inherited from superclass HANDLE +   +
@@ -177,38 +205,28 @@ ne~= (NE) Not equal relation for handles. 
+ ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.SimpleMultiContainer/ne is inherited from superclass HANDLE   - notifyNotify listeners of event. 
  validate_data 
+ notifyNotify listeners of event. + Help for types.hdmf_common.SimpleMultiContainer/notify is inherited from superclass HANDLE   - validate_dimension 
  validate_field_of_viewvalidate_container  
validate_unitvalidate_data  
diff --git a/doc/+types/+hdmf_common/VectorData.html b/doc/+types/+hdmf_common/VectorData.html index 0b0885ac..c2783357 100644 --- a/doc/+types/+hdmf_common/VectorData.html +++ b/doc/+types/+hdmf_common/VectorData.html @@ -16,7 +16,7 @@
types.hdmf_common.VectorData
-
  VectorData An n-dimensional dataset representing a column of a DynamicTable. If used without an accompanying VectorIndex, first dimension is along the rows of the DynamicTable and each step along the first dimension is a cell of the larger table. VectorData can also be used to represent a ragged array if paired with a VectorIndex. This allows for storing arrays of varying length in a single cell of the DynamicTable by indexing into this VectorData. The first vector is at VectorData[0:VectorIndex(0)+1]. The second vector is at VectorData[VectorIndex(0)+1:VectorIndex(1)+1], and so on.
+
  VectorData An n-dimensional dataset representing a column of a DynamicTable. If used without an accompanying VectorIndex, first dimension is along the rows of the DynamicTable and each step along the first dimension is a cell of the larger table. VectorData can also be used to represent a ragged array if paired with a VectorIndex. This allows for storing arrays of varying length in a single cell of the DynamicTable by indexing into this VectorData. The first vector is at VectorData[0:VectorIndex[0]]. The second vector is at VectorData[VectorIndex[0]:VectorIndex[1]], and so on.
Class Details
@@ -48,7 +48,10 @@
- + @@ -65,7 +68,10 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - +
dataproperty of type any property of type any + Help for types.hdmf_common.VectorData/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
description addlistenerAdd listener for event. Add listener for event. + Help for types.hdmf_common.VectorData/addlistener is inherited from superclass HANDLE +   +
@@ -73,7 +79,10 @@ deleteDelete a handle object. Delete a handle object. + Help for types.hdmf_common.VectorData/delete is inherited from superclass HANDLE +   +
@@ -81,7 +90,10 @@ eq== (EQ) Test handle equality. == (EQ) Test handle equality. + Help for types.hdmf_common.VectorData/eq is inherited from superclass HANDLE +   +
@@ -89,7 +101,10 @@ exportfind reference properties find reference properties + Help for types.hdmf_common.VectorData/export is inherited from superclass TYPES.UNTYPED.METACLASS +   +
@@ -97,7 +112,10 @@ findobjFind objects matching specified conditions. Find objects matching specified conditions. + Help for types.hdmf_common.VectorData/findobj is inherited from superclass HANDLE +   +
@@ -105,7 +123,10 @@ findpropFind property of MATLAB handle object. Find property of MATLAB handle object. + Help for types.hdmf_common.VectorData/findprop is inherited from superclass HANDLE +   +
@@ -113,7 +134,10 @@ ge>= (GE) Greater than or equal relation for handles. >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.VectorData/ge is inherited from superclass HANDLE +   +
@@ -121,7 +145,10 @@ gt> (GT) Greater than relation for handles. > (GT) Greater than relation for handles. + Help for types.hdmf_common.VectorData/gt is inherited from superclass HANDLE +   +
Sealed @@ -129,7 +156,10 @@ isvalidTest handle validity. Test handle validity. + Help for types.hdmf_common.VectorData/isvalid is inherited from superclass HANDLE +   +
@@ -137,7 +167,10 @@ le<= (LE) Less than or equal relation for handles. <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.VectorData/le is inherited from superclass HANDLE +   +
@@ -145,7 +178,10 @@ listenerAdd listener for event without binding the listener to the source object. Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.VectorData/listener is inherited from superclass HANDLE +   +
@@ -161,7 +197,10 @@ lt< (LT) Less than relation for handles. < (LT) Less than relation for handles. + Help for types.hdmf_common.VectorData/lt is inherited from superclass HANDLE +   +
@@ -169,7 +208,10 @@ ne~= (NE) Not equal relation for handles. ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.VectorData/ne is inherited from superclass HANDLE +   +
@@ -177,7 +219,10 @@ notifyNotify listeners of event. Notify listeners of event. + Help for types.hdmf_common.VectorData/notify is inherited from superclass HANDLE +   +
diff --git a/doc/+types/+hdmf_common/VectorIndex.html b/doc/+types/+hdmf_common/VectorIndex.html index 7ef5a6af..4b819a04 100644 --- a/doc/+types/+hdmf_common/VectorIndex.html +++ b/doc/+types/+hdmf_common/VectorIndex.html @@ -16,13 +16,13 @@
types.hdmf_common.VectorIndex
-
  VectorIndex Used with VectorData to encode a ragged array. An array of indices into the first dimension of the target VectorData, and forming a map between the rows of a DynamicTable and the indices of the VectorData.
+
  VectorIndex Used with VectorData to encode a ragged array. An array of indices into the first dimension of the target VectorData, and forming a map between the rows of a DynamicTable and the indices of the VectorData. The name of the VectorIndex is expected to be the name of the target VectorData object followed by "_index".
Class Details
- + @@ -48,11 +48,21 @@
Superclassestypes.hdmf_common.Index, types.untyped.DatasetClasstypes.hdmf_common.VectorData, types.untyped.DatasetClass
Sealed
- + + + + + - +
dataproperty of type any property of type any + Help for types.hdmf_common.VectorIndex/data is inherited from superclass TYPES.HDMF_COMMON.DATA +   +
descriptionDescription of what these vectors represent. + Help for types.hdmf_common.VectorIndex/description is inherited from superclass TYPES.HDMF_COMMON.VECTORDATA +   +
targetTarget dataset that this index applies to. Reference to the target dataset that this index applies to. 
@@ -65,7 +75,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for types.hdmf_common.VectorIndex/addlistener is inherited from superclass HANDLE +   + @@ -73,7 +86,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for types.hdmf_common.VectorIndex/delete is inherited from superclass HANDLE +   + @@ -81,7 +97,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for types.hdmf_common.VectorIndex/eq is inherited from superclass HANDLE +   + @@ -89,7 +108,10 @@ export - find reference properties  + find reference properties + Help for types.hdmf_common.VectorIndex/export is inherited from superclass TYPES.UNTYPED.METACLASS +   + @@ -97,7 +119,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for types.hdmf_common.VectorIndex/findobj is inherited from superclass HANDLE +   + @@ -105,7 +130,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for types.hdmf_common.VectorIndex/findprop is inherited from superclass HANDLE +   + @@ -113,7 +141,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for types.hdmf_common.VectorIndex/ge is inherited from superclass HANDLE +   + @@ -121,7 +152,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for types.hdmf_common.VectorIndex/gt is inherited from superclass HANDLE +   + Sealed @@ -129,7 +163,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for types.hdmf_common.VectorIndex/isvalid is inherited from superclass HANDLE +   + @@ -137,7 +174,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for types.hdmf_common.VectorIndex/le is inherited from superclass HANDLE +   + @@ -145,7 +185,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for types.hdmf_common.VectorIndex/listener is inherited from superclass HANDLE +   + @@ -161,7 +204,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for types.hdmf_common.VectorIndex/lt is inherited from superclass HANDLE +   + @@ -169,7 +215,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for types.hdmf_common.VectorIndex/ne is inherited from superclass HANDLE +   + @@ -177,7 +226,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for types.hdmf_common.VectorIndex/notify is inherited from superclass HANDLE +   + @@ -187,6 +239,14 @@ validate_data   + + +   + + + validate_description +   +   diff --git a/doc/NwbFile.html b/doc/NwbFile.html index f89afff6..70474078 100644 --- a/doc/NwbFile.html +++ b/doc/NwbFile.html @@ -48,7 +48,7 @@ - +
NwbFileRoot object representing data read from an NWB file.  
@@ -57,196 +57,321 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - +
acquisitionAcquired, raw data. Acquired, raw data. + Help for NwbFile/acquisition is inherited from superclass TYPES.CORE.NWBFILE +   +
analysisCustom analysis results. Custom analysis results. + Help for NwbFile/analysis is inherited from superclass TYPES.CORE.NWBFILE +   +
file_create_date A record of the date the file was created and of subsequent modifications. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted strings: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds. The file can be created after the experiment was run, so this may differ from the experiment - start time. Each modification to the nwb file adds a new entry to the array.  + start time. Each modification to the nwb file adds a new entry to the array. + Help for NwbFile/file_create_date is inherited from superclass TYPES.CORE.NWBFILE +  
generalPlace-holder than can be extended so that lab-specific meta-data can be placed in /general. Place-holder than can be extended so that lab-specific meta-data can be placed in /general. + Help for NwbFile/general is inherited from superclass TYPES.CORE.NWBFILE +   +
general_data_collectionNotes about data collection and analysis. Notes about data collection and analysis. + Help for NwbFile/general_data_collection is inherited from superclass TYPES.CORE.NWBFILE +   +
general_devicesData acquisition devices. Data acquisition devices. + Help for NwbFile/general_devices is inherited from superclass TYPES.CORE.NWBFILE +   +
general_experiment_descriptionGeneral description of the experiment. General description of the experiment. + Help for NwbFile/general_experiment_description is inherited from superclass TYPES.CORE.NWBFILE +   +
general_experimenterName of person(s) who performed the experiment. Can also specify roles of different people involved. Name of person(s) who performed the experiment. Can also specify roles of different people involved. + Help for NwbFile/general_experimenter is inherited from superclass TYPES.CORE.NWBFILE +   +
general_extracellular_ephysPhysical group of electrodes. Physical group of electrodes. + Help for NwbFile/general_extracellular_ephys is inherited from superclass TYPES.CORE.NWBFILE +   +
general_extracellular_ephys_electrodesA table of all electrodes (i.e. channels) used for recording. A table of all electrodes (i.e. channels) used for recording. + Help for NwbFile/general_extracellular_ephys_electrodes is inherited from superclass TYPES.CORE.NWBFILE +   +
general_institutionInstitution(s) where experiment was performed. Institution(s) where experiment was performed. + Help for NwbFile/general_institution is inherited from superclass TYPES.CORE.NWBFILE +   +
general_intracellular_ephysAn intracellular electrode. An intracellular electrode. + Help for NwbFile/general_intracellular_ephys is inherited from superclass TYPES.CORE.NWBFILE +   +
general_intracellular_ephys_filtering Description of filtering used. Includes filtering type and parameters, frequency fall-off, etc. If this changes between TimeSeries, - filter description should be stored as a text attribute for each TimeSeries.  + filter description should be stored as a text attribute for each TimeSeries. + Help for NwbFile/general_intracellular_ephys_filtering is inherited from superclass TYPES.CORE.NWBFILE +  
general_intracellular_ephys_sweep_tableThe table which groups different PatchClampSeries together. The table which groups different PatchClampSeries together. + Help for NwbFile/general_intracellular_ephys_sweep_table is inherited from superclass TYPES.CORE.NWBFILE +   +
general_keywordsTerms to search over. Terms to search over. + Help for NwbFile/general_keywords is inherited from superclass TYPES.CORE.NWBFILE +   +
general_labLaboratory where experiment was performed. Laboratory where experiment was performed. + Help for NwbFile/general_lab is inherited from superclass TYPES.CORE.NWBFILE +   +
general_notesNotes about the experiment. Notes about the experiment. + Help for NwbFile/general_notes is inherited from superclass TYPES.CORE.NWBFILE +   +
general_optogeneticsAn optogenetic stimulation site. An optogenetic stimulation site. + Help for NwbFile/general_optogenetics is inherited from superclass TYPES.CORE.NWBFILE +   +
general_optophysiologyAn imaging plane. An imaging plane. + Help for NwbFile/general_optophysiology is inherited from superclass TYPES.CORE.NWBFILE +   +
general_pharmacology Description of drugs used, including how and when they were administered. Anesthesia(s), painkiller(s), etc., plus dosage, - concentration, etc.  + concentration, etc. + Help for NwbFile/general_pharmacology is inherited from superclass TYPES.CORE.NWBFILE +  
general_protocolExperimental protocol, if applicable. e.g., include IACUC protocol number. Experimental protocol, if applicable. e.g., include IACUC protocol number. + Help for NwbFile/general_protocol is inherited from superclass TYPES.CORE.NWBFILE +   +
general_related_publicationsPublication information. PMID, DOI, URL, etc. Publication information. PMID, DOI, URL, etc. + Help for NwbFile/general_related_publications is inherited from superclass TYPES.CORE.NWBFILE +   +
general_session_idLab-specific ID for the session. Lab-specific ID for the session. + Help for NwbFile/general_session_id is inherited from superclass TYPES.CORE.NWBFILE +   +
general_slicesDescription of slices, including information about preparation thickness, orientation, temperature, and bath solution. Description of slices, including information about preparation thickness, orientation, temperature, and bath solution. + Help for NwbFile/general_slices is inherited from superclass TYPES.CORE.NWBFILE +   +
general_source_scriptScript file or link to public source code used to create this NWB file. Script file or link to public source code used to create this NWB file. + Help for NwbFile/general_source_script is inherited from superclass TYPES.CORE.NWBFILE +   +
general_source_script_file_nameName of script file. Name of script file. + Help for NwbFile/general_source_script_file_name is inherited from superclass TYPES.CORE.NWBFILE +   +
general_stimulusNotes about stimuli, such as how and where they were presented. Notes about stimuli, such as how and where they were presented. + Help for NwbFile/general_stimulus is inherited from superclass TYPES.CORE.NWBFILE +   +
general_subjectInformation about the animal or person from which the data was measured. Information about the animal or person from which the data was measured. + Help for NwbFile/general_subject is inherited from superclass TYPES.CORE.NWBFILE +   +
general_surgeryNarrative description about surgery/surgeries, including date(s) and who performed surgery. Narrative description about surgery/surgeries, including date(s) and who performed surgery. + Help for NwbFile/general_surgery is inherited from superclass TYPES.CORE.NWBFILE +   +
general_virusInformation about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc. Information about virus(es) used in experiments, including virus ID, source, date made, injection location, volume, etc. + Help for NwbFile/general_virus is inherited from superclass TYPES.CORE.NWBFILE +   +
identifier A unique text identifier for the file. For example, concatenated lab name, file creation date/time and experimentalist, or - a hash of these and/or other values. The goal is that the string should be unique to all other files.  + a hash of these and/or other values. The goal is that the string should be unique to all other files. + Help for NwbFile/identifier is inherited from superclass TYPES.CORE.NWBFILE +  
intervalsOptional additional table(s) for describing other experimental time intervals. Optional additional table(s) for describing other experimental time intervals. + Help for NwbFile/intervals is inherited from superclass TYPES.CORE.NWBFILE +   +
intervals_epochsDivisions in time marking experimental stages or sub-divisions of a single recording session. Divisions in time marking experimental stages or sub-divisions of a single recording session. + Help for NwbFile/intervals_epochs is inherited from superclass TYPES.CORE.NWBFILE +   +
intervals_invalid_timesTime intervals that should be removed from analysis. Time intervals that should be removed from analysis. + Help for NwbFile/intervals_invalid_times is inherited from superclass TYPES.CORE.NWBFILE +   +
intervals_trialsRepeated experimental events that have a logical grouping. Repeated experimental events that have a logical grouping. + Help for NwbFile/intervals_trials is inherited from superclass TYPES.CORE.NWBFILE +   +
nwb_version File version string. Use semantic versioning, e.g. 1.2.1. This will be the name of the format with trailing major, minor and - patch numbers.  + patch numbers. + Help for NwbFile/nwb_version is inherited from superclass TYPES.CORE.NWBFILE +  
processingIntermediate analysis of acquired data. Intermediate analysis of acquired data. + Help for NwbFile/processing is inherited from superclass TYPES.CORE.NWBFILE +   +
scratchAny one-off datasets Any one-off datasets + Help for NwbFile/scratch is inherited from superclass TYPES.CORE.NWBFILE +   +
session_descriptionA description of the experimental session and data in the file. A description of the experimental session and data in the file. + Help for NwbFile/session_description is inherited from superclass TYPES.CORE.NWBFILE +   +
session_start_time Date and time of the experiment/session start. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted - string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds.  + string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with no timezone offset. Date accuracy is up to milliseconds. + Help for NwbFile/session_start_time is inherited from superclass TYPES.CORE.NWBFILE +  
stimulus_presentationTimeSeries objects containing data of presented stimuli. TimeSeries objects containing data of presented stimuli. + Help for NwbFile/stimulus_presentation is inherited from superclass TYPES.CORE.NWBFILE +   +
stimulus_templatesTimeSeries objects containing template data of presented stimuli. TimeSeries objects containing template data of presented stimuli. + Help for NwbFile/stimulus_templates is inherited from superclass TYPES.CORE.NWBFILE +   +
timestamps_reference_time Date and time corresponding to time zero of all timestamps. The date is stored in UTC with local timezone offset as ISO 8601 extended formatted string: 2018-09-28T14:43:54.123+02:00. Dates stored in UTC end in "Z" with no timezone offset. Date accuracy - is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero).  + is up to milliseconds. All times stored in the file use this time as reference (i.e., time zero). + Help for NwbFile/timestamps_reference_time is inherited from superclass TYPES.CORE.NWBFILE +  
unitsData about sorted spike units. Data about sorted spike units. + Help for NwbFile/units is inherited from superclass TYPES.CORE.NWBFILE +   +
@@ -259,7 +384,10 @@ addlistener - Add listener for event.  + Add listener for event. + Help for NwbFile/addlistener is inherited from superclass HANDLE +   + @@ -267,7 +395,10 @@ delete - Delete a handle object.  + Delete a handle object. + Help for NwbFile/delete is inherited from superclass HANDLE +   + @@ -275,7 +406,10 @@ eq - == (EQ) Test handle equality.  + == (EQ) Test handle equality. + Help for NwbFile/eq is inherited from superclass HANDLE +   + @@ -291,7 +425,10 @@ findobj - Find objects matching specified conditions.  + Find objects matching specified conditions. + Help for NwbFile/findobj is inherited from superclass HANDLE +   + @@ -299,7 +436,10 @@ findprop - Find property of MATLAB handle object.  + Find property of MATLAB handle object. + Help for NwbFile/findprop is inherited from superclass HANDLE +   + @@ -307,7 +447,10 @@ ge - >= (GE) Greater than or equal relation for handles.  + >= (GE) Greater than or equal relation for handles. + Help for NwbFile/ge is inherited from superclass HANDLE +   + @@ -315,7 +458,10 @@ gt - > (GT) Greater than relation for handles.  + > (GT) Greater than relation for handles. + Help for NwbFile/gt is inherited from superclass HANDLE +   + Sealed @@ -323,7 +469,10 @@ isvalid - Test handle validity.  + Test handle validity. + Help for NwbFile/isvalid is inherited from superclass HANDLE +   + @@ -331,7 +480,10 @@ le - <= (LE) Less than or equal relation for handles.  + <= (LE) Less than or equal relation for handles. + Help for NwbFile/le is inherited from superclass HANDLE +   + @@ -339,7 +491,10 @@ listener - Add listener for event without binding the listener to the source object.  + Add listener for event without binding the listener to the source object. + Help for NwbFile/listener is inherited from superclass HANDLE +   + @@ -355,7 +510,10 @@ lt - < (LT) Less than relation for handles.  + < (LT) Less than relation for handles. + Help for NwbFile/lt is inherited from superclass HANDLE +   + @@ -363,7 +521,10 @@ ne - ~= (NE) Not equal relation for handles.  + ~= (NE) Not equal relation for handles. + Help for NwbFile/ne is inherited from superclass HANDLE +   + @@ -371,7 +532,10 @@ notify - Notify listeners of event.  + Notify listeners of event. + Help for NwbFile/notify is inherited from superclass HANDLE +   + diff --git a/doc/index.html b/doc/index.html index f75e8c24..bdac5226 100644 --- a/doc/index.html +++ b/doc/index.html @@ -93,15 +93,16 @@

Core:

  • VoltageClampStimulusSeries.m
  • HDMF Common:

    -
    Generated on Fri 09-Aug-2019 14:27:49 by m2html © 2005
    +
    Generated on Thu 27-May-2021 14:13:15 by m2html © 2005
    From ddd66d8fbf248397e5a91239014b28c2f5463957 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 18:15:59 -0400 Subject: [PATCH 15/19] Add integer size scaling to coerceDType - Actually treat the expected type as a minimum as is true in nwb-schema. If the value type is larger than the expected type, then scale progressively to fit. - Fix dynamic table indexing due to VectorIndex now being set to uint8 as an expected type. The type should start at uint8 but scale upwards as the indices get larger. --- +types/+util/+dynamictable/addRawData.m | 6 +++--- +types/+util/correctType.m | 24 +++++++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/+types/+util/+dynamictable/addRawData.m b/+types/+util/+dynamictable/addRawData.m index c490a3e0..21b96a07 100644 --- a/+types/+util/+dynamictable/addRawData.m +++ b/+types/+util/+dynamictable/addRawData.m @@ -34,16 +34,16 @@ function addRawData(DynamicTable, column, data, index) raggedOffset = 0; if isa(VecInd.data, 'types.untyped.DataPipe') && 0 < VecInd.data.dims - raggedOffset = VecInd.data.load(VecInd.data.dims); + raggedOffset = double(VecInd.data.load(VecInd.data.dims)); elseif ~isempty(VecInd.data) - raggedOffset = VecInd.data(end); + raggedOffset = double(VecInd.data(end)); end raggedValue = raggedOffset + size(data, 1); if isa(VecInd.data, 'types.untyped.DataPipe') VecInd.data.append(raggedValue); else - VecInd.data = [VecInd.data; raggedValue]; + VecInd.data = [double(VecInd.data); raggedValue]; end end diff --git a/+types/+util/correctType.m b/+types/+util/correctType.m index 8efe3496..fa59e6a6 100644 --- a/+types/+util/correctType.m +++ b/+types/+util/correctType.m @@ -18,11 +18,33 @@ elseif strcmp(type, 'uint') val = uint64(val); else - val = feval(type, val); + val = feval(fitIntType(val, type), val); end elseif strcmp(type, 'numeric') && ~isnumeric(val) val = double(val); elseif strcmp(type, 'bool') val = logical(val); end +end + +function fittingIntType = fitIntType(val, minType) +intSizeScale = [8 16 32 64]; +typeMatch = regexp(minType, '(u?int)(\d+)', 'once', 'tokens'); +prefix = typeMatch{1}; +minSize = str2double(typeMatch{2}); + +minVal = min(val(:)); +maxVal = max(val(:)); +minSizeMask = intSizeScale == minSize; +assert(any(minSizeMask), 'NWB:CorrectType:InvalidIntSize',... + 'Minimum integer size `%s` not supported.', minType); +for i = find(minSizeMask, 1):length(intSizeScale) + fittingIntType = sprintf('%s%d', prefix, intSizeScale(i)); + if all(intmin(fittingIntType) <= minVal) && all(intmax(fittingIntType) >= maxVal) + return; + end +end + +error('NWB:CorrectType:UnfittableInt', 'Could not fit integer into range %d-%d',... + minVal, maxVal); end \ No newline at end of file From 1f23f7c018244e041d4bdce93997d1c1e29d4c91 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 18:18:15 -0400 Subject: [PATCH 16/19] Allow empty strings in Dynamic Table data. --- +types/+util/+dynamictable/addVarargRow.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/+types/+util/+dynamictable/addVarargRow.m b/+types/+util/+dynamictable/addVarargRow.m index 3e41ced8..2eaeafee 100644 --- a/+types/+util/+dynamictable/addVarargRow.m +++ b/+types/+util/+dynamictable/addVarargRow.m @@ -72,7 +72,7 @@ function addVarargRow(DynamicTable, varargin) function validateType(TypeStruct, rv) if strcmp(TypeStruct.type, 'cellstr') - assert(iscellstr(rv) || (ischar(rv) && 1 == size(rv, 1)),... + assert(iscellstr(rv) || (ischar(rv) && (isempty(rv) || 1 == size(rv, 1))),... 'MatNWB:DynamicTable:AddRow:InvalidType',... 'Type of value must be a cell array of character vectors or a scalar character'); else From e913feab4ab0ce5dfb92d26fee63fd37befcfb54 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 18:19:48 -0400 Subject: [PATCH 17/19] Fix errors in convertTrials tutorial - Fix logic error regarding intervals timeseries storage. - Fix missing descriptor for the VectorIndex. --- tutorials/convertTrials.m | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/tutorials/convertTrials.m b/tutorials/convertTrials.m index 3618576b..99fa5c4d 100644 --- a/tutorials/convertTrials.m +++ b/tutorials/convertTrials.m @@ -9,7 +9,7 @@ % % author: Lawrence Niu % contact: lawrence@vidriotech.com -% last updated: Feb 2, 2021 +% last updated: May 27, 2021 %% Script Configuration % The following details configuration parameters specific to the publishing script, @@ -268,7 +268,7 @@ % wherein each cell is one trial. We must populate this way because trials % may not be in trial order. % Trial timeseries will be a compound type under intervals/trials. -trial_timeseries = cell(length(data.trialIds)); +trial_timeseries = cell(size(data.trialIds)); %% % NWB comes with default support for trial-based data. These must be *TimeIntervals* that @@ -355,8 +355,9 @@ {'start_time'; 'stop_time'; 'acquisition'; 'timeseries'}],... 'description', 'trial data and properties', ... 'id', types.hdmf_common.ElementIdentifiers('data', data.trialIds),... - 'timeseries', types.hdmf_common.VectorData('description', 'An index into a TimeSeries object.'),... + 'timeseries', types.hdmf_common.VectorData('description', 'Index into timeseries Data'),... 'timeseries_index', types.hdmf_common.VectorIndex(... + 'description', 'Index into Timeseries VectorData',... 'target', types.untyped.ObjectView('/intervals/trials/timeseries'))); for i=1:length(data.trialTypeStr) @@ -507,12 +508,17 @@ %first, we'll format and store |trial_timeseries| into |intervals_trials|. % note that |timeseries_index| data is 0-indexed. -ts_len = cellfun('length', trial_timeseries); -nwb.intervals_trials.timeseries_index.data = cumsum(ts_len); +ts_len = cellfun('size', trial_timeseries, 1); +is_len_nonzero = ts_len > 0; +ts_len_nonzero = ts_len(is_len_nonzero); +nwb.intervals_trials.timeseries_index.data = cumsum(ts_len_nonzero); % intervals/trials/timeseries is a compound type so we use cell2table to % convert this 2-d cell array into a compatible table. -nwb.intervals_trials.timeseries.data = cell2table(vertcat(trial_timeseries{ts_len > 0}),... +nwb.intervals_trials.timeseries.data = cell2table(vertcat(trial_timeseries{is_len_nonzero}),... 'VariableNames', {'timeseries', 'idx_start', 'count'}); outDest = fullfile(outloc, [identifier '.nwb']); +if 2 == exist(outDest, 'file') + delete(outDest); +end nwbExport(nwb, outDest); \ No newline at end of file From 3e00ec14f2f6f8ab99e4e475cad8396fd4e63f26 Mon Sep 17 00:00:00 2001 From: Lawrence Date: Thu, 27 May 2021 18:20:55 -0400 Subject: [PATCH 18/19] Update basicUsage --- tutorials/basicUsage.mlx | Bin 94755 -> 94750 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tutorials/basicUsage.mlx b/tutorials/basicUsage.mlx index 49c5c38eaad5e32519135fae0a32a94d0f914709..60aedacf2b910400dc0f2ef55b737d5c1496ca39 100644 GIT binary patch delta 84064 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

    oy|ZzsvU*Xx724s|ei#0bU5FDml>5wH6P2 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 Pmkn|O5C+h10RR91-2pU6 delta 83952 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 Date: Thu, 27 May 2021 18:21:10 -0400 Subject: [PATCH 19/19] Synchronize published tutorials --- tutorials/html/basicUsage.html | 43 ++++++++++++++++--------------- tutorials/html/convertTrials.html | 40 ++++++++++++++++++---------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/tutorials/html/basicUsage.html b/tutorials/html/basicUsage.html index 01a34cd2..c9cab5d2 100644 --- a/tutorials/html/basicUsage.html +++ b/tutorials/html/basicUsage.html @@ -1,5 +1,5 @@ -Using NWB Data

    Using NWB Data

    In this tutorial, we demonstrate the reading and usage of the NWB file produced in the File Conversion Tutorial. The output is a near-reproduction of Figure 1e from the Li et al publication, showing raster and peristimulus time histogram (PSTH) plots for neural recordings from anterior lateral motor cortex (ALM). This figure illustrates the main finding of the publication, showing the robustness of motor planning behavior and neural dynamics following short unilateral network silencing via optogenetic inhibition.

    Reading NWB Files

    NWB files can be read in using the nwbRead() function. This function returns a nwbfile object which is the in-memory representation of the NWB file structure.
    nwb = nwbRead('out\ANM255201_20141124.nwb');

    Constrained Sets

    Analyzed data in NWB is placed under the analysis property, which is a Constrained Set. A constrained set consists of an arbitrary amount of key-value pairs similar to Map containers in MATLAB or a dictionary in Python. However, constrained sets also have the ability to validate their own properties closer to how a typed Object would.
    You can get/set values in constrained sets using their respective .get()/.set() methods and retrieve all Set properties using the keys() method, like in a containers.Map.
    unit_names = keys(nwb.analysis);

    Dynamic Tables

    nwb.intervals_trials returns a unique type of table called a Dynamic Table. Dynamic tables inherit from the NWB type types.hdmf_common.DynamicTable and allow for a table-like interface in NWB. In the case below, we grab the special column start_time. Dynamic Tables allow adding your own vectors using their vectordata and vectorindex properties, which are Constrained Sets. All columns are represented by either a types.hdmf_common.VectorData or a types.hdmf_common.VectorIndex type.

    Data Stubs

    The data property of the column id in nwb.units is a types.untyped.DataStub. This object is a representation of a dataset that is not loaded in memory, and is what allows MatNWB to lazily load its file data. To load the data into memory, use the .load() method which extracts all data from the NWB file. Alternatively, you can index into the DataStub directly using conventional MATLAB syntax.

    Jagged Arrays in Dynamic Tables

    With the new addition of addRow and getRow to Dynamic Tables, the concept of jagged arrays can be worked around and no longer require full understanding outside of specific data format concerns or low-level nwb tool development. The below paragraph is retained in its entirety from its original form as purely informational.
    All data in a Dynamic Table must be aligned by row and column, but not all data fits into this paradigm neatly. In order to represent variable amounts of data that is localised to each row and column, NWB uses a concept called Jagged Arrays. These arrays consist of two column types: the familiar types.core.VectorData, and the new types.core.VectorIndex. A Vector Index holds no data, instead holding a reference to another Vector Data and a vector of indices that align to the Dynamic Table dimensions. The indices represent the last index boundary in the Vector Data object for the Vector Index row. As an example, an index of three in the first row of the Vector Index column points to the first three values in the referenced Vector Data column. Subsequently, if the next index were a five, it would indicate the fourth and fifth elements in the referenced Vector Data column.
    The jagged arrays serve to represent multiple trials and spike times associated to each unit by id. A convenient way to represent these in MATLAB is to use Map containers where each unit's data is indexed directly by its unit id. Below, we utilize getRow in order to build the same Map.
    unit_ids = nwb.units.id.data.load(); % array of unit ids represented within this
    % Initialize trials & times Map containers indexed by unit_ids
    unit_trials = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    unit_times = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    last_idx = 0;
    for i = 1:length(unit_ids)
    unit_id = unit_ids(i);
    row = nwb.units.getRow(unit_id, 'useId', true, 'columns', {'spike_times', 'trials'});
    unit_trials(unit_id) = row{2};
    unit_times(unit_id) = row{1};
    end

    Process Units

    We now do the following for each Unit:
    • Filter out invalid trials
    • Separate datasets based on resulting mouse behavior (right/left licks).
    • Derive "sample", "delay", and "response" times for this analyzed neuron.
    • Compose a peristimulus time histogram from the data.
    sorted_ids = sort(unit_ids);
    Photostim = struct(...
    'ind', true,... % mask into xs and ys for this photostim
    'period', 'none',...
    'duration', 0,... % in seconds
    'ramp_offset', 0); % in seconds
    % Initialize Map container of plotting data for each unit, stored as structure
    Unit = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    unit_struct = struct(...
    'id', [],...
    'xs', [],...
    'ys', [],...
    'xlim', [-Inf Inf],...
    'sample', 0,...
    'delay', 0,...
    'response', 0,...
    'left_scatter', false,...
    'right_scatter', false,...
    'photostim', Photostim); % can have multiple photostim
    for unit_id = unit_ids'
    We first extract trial IDs from the Unit IDs.
    unit_trial_id = unit_trials(unit_id);
    Then filter out outliers from the Sample, Delay, and Response time points with which we derive a "good enough" estimate.
    trial = nwb.intervals_trials.getRow(unit_trial_id, 'useId', true,...
    'columns', {'PoleInTime', 'PoleOutTime', 'CueTime', 'GoodTrials'});
    unit_sample = trial{1};
    unit_delay = trial{2};
    unit_response = trial{3};
    unit_good_trials = trial{4};
    % Subjective parameters
    delay_threshold = 0.064;
    response_threshold = 0.43;
    expected_delay_offset = 1.3; % determined from figure 1a
    expected_response_offset = 1.3;
    expected_delay = unit_sample + expected_delay_offset;
    expected_response = unit_delay + expected_response_offset;
    good_delay = (unit_delay > expected_delay - delay_threshold) &...
    (unit_delay < expected_delay + delay_threshold);
    good_response = (unit_response > expected_response - response_threshold) &...
    (unit_response < expected_response + response_threshold);
    avg_sample = mean(unit_sample(good_delay & good_response));
    avg_delay = mean(unit_delay(good_delay & good_response));
    avg_response = mean(unit_response(good_delay & good_response));
    Filter the rest of the data by "good" trials.
    unit_good_trials = unit_good_trials & good_delay & good_response;
    unit_trial_id = unit_trial_id(unit_good_trials);
    unit_spike_time = unit_times(unit_id);
    unit_spike_time = unit_spike_time(unit_good_trials);
    Map the Trial-aligned data to Unit-aligned data.
    trial = nwb.intervals_trials.getRow(unit_trial_id, 'useId', true,...
    'columns', {'start_time', 'HitR', 'HitL', 'StimTrials', 'PhotostimulationType'});
    unit_start_time = trial{1};
    unit_lick_right = logical(trial{2});
    unit_lick_left = logical(trial{3});
    unit_is_photostim = logical(trial{4});
    unit_stim_type = trial{5};
    unit_no_stim = ~unit_is_photostim & 0 == unit_stim_type;
    unit_sample_stim = unit_is_photostim & 1 == unit_stim_type;
    unit_early_stim = unit_is_photostim & 2 == unit_stim_type;
    unit_middle_stim = unit_is_photostim & 3 == unit_stim_type;
    Compose Scatter Plots and the Peristimulus Time Histogram zeroed on the Response time.
    xs = unit_spike_time - unit_start_time - avg_response;
    ys = unit_trial_id;
    curr_unit = unit_struct;
    curr_unit.xs = xs;
    curr_unit.ys = ys;
    curr_unit.left_scatter = unit_lick_left;
    curr_unit.right_scatter = unit_lick_right;
    curr_unit.sample = avg_sample - avg_response;
    curr_unit.delay = avg_delay - avg_response;
    curr_unit.response = 0;
    % Photostim periods
    curr_unit.photostim.ind = unit_no_stim;
    % Sample
    if any(unit_sample_stim)
    SampleStim = Photostim;
    SampleStim.ind = unit_sample_stim;
    SampleStim.period = 'Sample';
    SampleStim.duration = 0.5;
    SampleStim.ramp_offset = 0.1;
    curr_unit.photostim(end+1) = SampleStim;
    end
    % Early Delay
    if any(unit_early_stim)
    early_stim_types = unique(unit_stim_type(unit_early_stim));
    for i_early_types=1:length(early_stim_types)
    early_type = early_stim_types(i_early_types);
    EarlyStim = Photostim;
    EarlyStim.period = 'Early Delay';
    EarlyStim.ind = early_type == unit_stim_type & unit_early_stim;
    if early_type == 2
    EarlyStim.duration = 0.5;
    EarlyStim.ramp_offset = 0.1;
    else
    EarlyStim.duration = 0.8;
    EarlyStim.ramp_offset = 0.2;
    end
    curr_unit.photostim(end+1) = EarlyStim;
    end
    end
    % Middle Delay
    if any(unit_middle_stim)
    MiddleStim = Photostim;
    MiddleStim.ind = unit_middle_stim;
    MiddleStim.period = 'Middle Delay';
    MiddleStim.duration = 0.5;
    MiddleStim.ramp_offset = 0.1;
    curr_unit.photostim(end+1) = MiddleStim;
    end
    Unit(unit_id) = curr_unit;
    end

    Plot Example Neurons

    neuron_labels = [2, 3]; % neuron labels from Figure 1e
    neuron_ids = [11, 2]; % neuron unit IDs corresponding to the Fig 1e labels
    num_conditions = 4; % photostim conditions: nostim, sample, early, middle if applicable
    num_neurons = length(neuron_ids);
    % Inititalize data structures for each summary plot of categorized neural spike data at specified stimulus condition
    RasterPlot = struct(...
    'xs', 0,...
    'ys', 0);
    ConditionPlot = struct(...
    'label', '',...
    'xlim', 0,...
    'sample', 0,...
    'delay', 0,...
    'response', 0,...
    'right_scatter', RasterPlot,...
    'left_scatter', RasterPlot,...
    'psth_bin_window', 0,...
    'stim_type', '');
    fig = figure;
    % Plot neural spike data for each neuron and stimulus condition in a subplot array: num_neurons (rows) x num_conditions (columns)
    for nn=1:num_neurons
    Neuron = Unit(neuron_ids(nn));
    % Initialize structure with neural + stimulus condition data
    CurrPlot = ConditionPlot;
    CurrPlot.xlim = [min(Neuron.xs) max(Neuron.xs)];
    CurrPlot.sample = Neuron.sample;
    CurrPlot.delay = Neuron.delay;
    CurrPlot.response = Neuron.response;
    % Plot each neuron/condition
    plot_row = (nn - 1) * num_conditions;
    for cc=1:num_conditions
    ax = subplot(num_neurons, num_conditions, plot_row + cc, 'Parent', fig);
    Stim = Neuron.photostim(cc);
    CurrPlot.stim_type = Stim.period;
    if strcmp(Stim.period, 'none')
    CurrPlot.label = sprintf('Neuron %d', neuron_labels(nn));
    CurrPlot.psth_bin_window = 9;
    else
    CurrPlot.label = Stim.period;
    CurrPlot.psth_bin_window = 2;
    end
    stim_left_scatter_ind = Stim.ind & Neuron.left_scatter;
    stim_left_scatter_trials = Neuron.ys(stim_left_scatter_ind);
    CurrPlot.left_scatter.xs = Neuron.xs(stim_left_scatter_ind);
    [~,CurrPlot.left_scatter.ys] = ismember(stim_left_scatter_trials,unique(stim_left_scatter_trials));
    stim_right_scatter_ind = Stim.ind & Neuron.right_scatter;
    stim_right_scatter_trials = Neuron.ys(stim_right_scatter_ind);
    CurrPlot.right_scatter.xs = Neuron.xs(stim_right_scatter_ind);
    [~,CurrPlot.right_scatter.ys] = ismember(stim_right_scatter_trials,unique(stim_right_scatter_trials));
    plot_condition(ax, CurrPlot);
    end
    end

    Helper Functions

    PSTH helper function
    function [psth_xs, psth_ys] = calculate_psth(xs, bin_window, bin_width)
    [bin_counts, edges] = histcounts(xs, 'BinWidth', bin_width);
    psth_xs = edges(1:end-1) + (bin_width / 2);
    moving_avg_b = (1/bin_window) * ones(1,bin_window);
    psth_ys = filter(moving_avg_b, 1, bin_counts);
    end
    Plotter function for each stimulus condition
    function plot_condition(ax, ConditionPlot)
    left_cdata = [1 0 0]; % red
    right_cdata = [0 0 1]; % blue
    hist_margin = 50;
    scatter_margin = 10;
    % Calculate PSTH values
    % moving average over 200 ms as per figure 1e
    hist_bin_width = 0.2 / ConditionPlot.psth_bin_window;
    [left_psth_xs, left_psth_ys] =...
    calculate_psth(ConditionPlot.left_scatter.xs, ConditionPlot.psth_bin_window, hist_bin_width);
    [right_psth_xs, right_psth_ys] =...
    calculate_psth(ConditionPlot.right_scatter.xs, ConditionPlot.psth_bin_window, hist_bin_width);
    right_scatter_offset = min(ConditionPlot.right_scatter.ys);
    right_scatter_height = max(ConditionPlot.right_scatter.ys) - right_scatter_offset;
    left_scatter_offset = min(ConditionPlot.left_scatter.ys);
    left_scatter_height = max(ConditionPlot.left_scatter.ys) - left_scatter_offset;
    psth_height = max([left_psth_ys right_psth_ys]);
    left_y_offset = hist_margin...
    + psth_height...
    - left_scatter_offset;
    right_y_offset = scatter_margin...
    + left_y_offset...
    + left_scatter_offset...
    + left_scatter_height...
    - right_scatter_offset;
    subplot_height = right_y_offset...
    + right_scatter_offset...
    + right_scatter_height;
    hold(ax, 'on');
    % PSTH
    plot(ax, left_psth_xs, left_psth_ys, 'Color', left_cdata);
    plot(ax, right_psth_xs, right_psth_ys, 'Color', right_cdata);
    % Scatter Plot
    scatter(ax,...
    ConditionPlot.left_scatter.xs,...
    left_y_offset + ConditionPlot.left_scatter.ys,...
    'Marker', '.',...
    'CData', left_cdata,...
    'SizeData', 1);
    scatter(ax,...
    ConditionPlot.right_scatter.xs,...
    right_y_offset + ConditionPlot.right_scatter.ys,...
    'Marker', '.',...
    'CData', right_cdata,...
    'SizeData', 1);
    % sample, delay, response lines
    line(ax, repmat(ConditionPlot.sample, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    line(ax, repmat(ConditionPlot.delay, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    line(ax, repmat(ConditionPlot.response, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    % blue bar for photoinhibition period
    if ~strcmp(ConditionPlot.stim_type, 'none')
    stim_height = subplot_height;
    stim_width = 0.5; % seconds
    % end time relative to 'go' cue as described in the paper.
    switch ConditionPlot.stim_type
    case 'Sample'
    end_offset = 1.6;
    case 'Early Delay'
    end_offset = 0.8;
    case 'Middle Delay'
    end_offset = 0.3;
    otherwise
    error('Invalid photostim period `%s`', ConditionPlot.stim_type);
    end
    stim_offset = ConditionPlot.response - stim_width - end_offset;
    patch_vertices = [...
    stim_offset, 0;...
    stim_offset, stim_height;...
    stim_offset+stim_width, stim_height;...
    stim_offset+stim_width, 0];
    patch(ax,...
    'Faces', 1:4,...
    'Vertices', patch_vertices,...
    'FaceColor', '#B3D3EC',... % light blue shading
    'EdgeColor', 'none',...
    'FaceAlpha', 0.8);
    end
    title(ax, ConditionPlot.label);
    xlabel(ax, 'Time (Seconds)');
    ylabel(ax, 'Spikes s^{-1}')
    xticks(ax, [-2 0 2]);
    yticks(ax, [0 max(10, round(psth_height, -1))]);
    % legend(ax, [scatter_left_plot, scatter_right_plot], {'Left Lick', 'Right Lick'},...
    % 'location', 'northwestoutside');
    ax.TickDir = 'out';
    ax.XLim = ConditionPlot.xlim;
    ax.YLim = [0 subplot_height];
    hold(ax, 'off');
    end
    +.S12 { color: rgb(64, 64, 64); padding: 10px 0px 6px 17px; background: rgb(255, 255, 255) none repeat scroll 0% 0% / auto padding-box border-box; font-family: Menlo, Monaco, Consolas, "Courier New", monospace; font-size: 14px; overflow-x: hidden; line-height: 17.234px; }

    Using NWB Data

    last updated: February 9, 2021
    In this tutorial, we demonstrate the reading and usage of the NWB file produced in the File Conversion Tutorial. The output is a near-reproduction of Figure 1e from the Li et al publication, showing raster and peristimulus time histogram (PSTH) plots for neural recordings from anterior lateral motor cortex (ALM). This figure illustrates the main finding of the publication, showing the robustness of motor planning behavior and neural dynamics following short unilateral network silencing via optogenetic inhibition.

    Reading NWB Files

    NWB files can be read in using the nwbRead() function. This function returns a nwbfile object which is the in-memory representation of the NWB file structure.
    nwb = nwbRead('out\ANM255201_20141124.nwb');

    Constrained Sets

    Analyzed data in NWB is placed under the analysis property, which is a Constrained Set. A constrained set consists of an arbitrary amount of key-value pairs similar to Map containers in MATLAB or a dictionary in Python. However, constrained sets also have the ability to validate their own properties closer to how a typed Object would.
    You can get/set values in constrained sets using their respective .get()/.set() methods and retrieve all Set properties using the keys() method, like in a containers.Map.
    unit_names = keys(nwb.analysis);

    Dynamic Tables

    nwb.intervals_trials returns a unique type of table called a Dynamic Table. Dynamic tables inherit from the NWB type types.hdmf_common.DynamicTable and allow for a table-like interface in NWB. In the case below, we grab the special column start_time. Dynamic Tables allow adding your own vectors using the vectordata property, which are Constrained Sets. All columns are represented by either a types.hdmf_common.VectorData or a types.hdmf_common.VectorIndex type.

    Data Stubs

    The data property of the column id in nwb.units is a types.untyped.DataStub. This object is a representation of a dataset that is not loaded in memory, and is what allows MatNWB to lazily load its file data. To load the data into memory, use the .load() method which extracts all data from the NWB file. Alternatively, you can index into the DataStub directly using conventional MATLAB syntax.

    Jagged Arrays in Dynamic Tables

    With the new addition of addRow and getRow to Dynamic Tables, the concept of jagged arrays can be worked around and no longer require full understanding outside of specific data format concerns or low-level nwb tool development. The below paragraph is retained in its entirety from its original form as purely informational.
    All data in a Dynamic Table must be aligned by row and column, but not all data fits into this paradigm neatly. In order to represent variable amounts of data that is localised to each row and column, NWB uses a concept called Jagged Arrays. These arrays consist of two column types: the familiar types.core.VectorData, and the new types.core.VectorIndex. A Vector Index holds no data, instead holding a reference to another Vector Data and a vector of indices that align to the Dynamic Table dimensions. The indices represent the last index boundary in the Vector Data object for the Vector Index row. As an example, an index of three in the first row of the Vector Index column points to the first three values in the referenced Vector Data column. Subsequently, if the next index were a five, it would indicate the fourth and fifth elements in the referenced Vector Data column.
    The jagged arrays serve to represent multiple trials and spike times associated to each unit by id. A convenient way to represent these in MATLAB is to use Map containers where each unit's data is indexed directly by its unit id. Below, we utilize getRow in order to build the same Map.
    unit_ids = nwb.units.id.data.load(); % array of unit ids represented within this
    % Initialize trials & times Map containers indexed by unit_ids
    unit_trials = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    unit_times = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    last_idx = 0;
    for i = 1:length(unit_ids)
    unit_id = unit_ids(i);
    row = nwb.units.getRow(unit_id, 'useId', true, 'columns', {'spike_times', 'trials'});
    unit_trials(unit_id) = row.trials{1};
    unit_times(unit_id) = row.spike_times{1};
    end

    Process Units

    We now do the following for each Unit:
    • Filter out invalid trials
    • Separate datasets based on resulting mouse behavior (right/left licks).
    • Derive "sample", "delay", and "response" times for this analyzed neuron.
    • Compose a peristimulus time histogram from the data.
    sorted_ids = sort(unit_ids);
    Photostim = struct(...
    'ind', true,... % mask into xs and ys for this photostim
    'period', 'none',...
    'duration', 0,... % in seconds
    'ramp_offset', 0); % in seconds
    % Initialize Map container of plotting data for each unit, stored as structure
    Unit = containers.Map('KeyType',class(unit_ids),'ValueType','any');
    unit_struct = struct(...
    'id', [],...
    'xs', [],...
    'ys', [],...
    'xlim', [-Inf Inf],...
    'sample', 0,...
    'delay', 0,...
    'response', 0,...
    'left_scatter', false,...
    'right_scatter', false,...
    'photostim', Photostim); % can have multiple photostim
    for unit_id = unit_ids'
    We first extract trial IDs from the Unit IDs.
    unit_trial_id = unit_trials(unit_id);
    Then filter out outliers from the Sample, Delay, and Response time points with which we derive a "good enough" estimate.
    trial = nwb.intervals_trials.getRow(unit_trial_id, 'useId', true,...
    'columns', {'PoleInTime', 'PoleOutTime', 'CueTime', 'GoodTrials'});
    unit_sample = trial.PoleInTime;
    unit_delay = trial.PoleOutTime;
    unit_response = trial.CueTime;
    unit_good_trials = trial.GoodTrials;
    % Subjective parameters
    delay_threshold = 0.064;
    response_threshold = 0.43;
    expected_delay_offset = 1.3; % determined from figure 1a
    expected_response_offset = 1.3;
    expected_delay = unit_sample + expected_delay_offset;
    expected_response = unit_delay + expected_response_offset;
    good_delay = (unit_delay > expected_delay - delay_threshold) &...
    (unit_delay < expected_delay + delay_threshold);
    good_response = (unit_response > expected_response - response_threshold) &...
    (unit_response < expected_response + response_threshold);
    avg_sample = mean(unit_sample(good_delay & good_response));
    avg_delay = mean(unit_delay(good_delay & good_response));
    avg_response = mean(unit_response(good_delay & good_response));
    Filter the rest of the data by "good" trials.
    unit_good_trials = unit_good_trials & good_delay & good_response;
    unit_trial_id = unit_trial_id(unit_good_trials);
    unit_spike_time = unit_times(unit_id);
    unit_spike_time = unit_spike_time(unit_good_trials);
    Retrieve good trial data and organize by stimulation type.
    trial = nwb.intervals_trials.getRow(unit_trial_id, 'useId', true,...
    'columns', {'start_time', 'HitR', 'HitL', 'StimTrials', 'PhotostimulationType'});
    unit_is_photostim = logical(trial.StimTrials);
    unit_stim_type = trial.PhotostimulationType;
    unit_no_stim = ~unit_is_photostim & 0 == unit_stim_type;
    unit_sample_stim = unit_is_photostim & 1 == unit_stim_type;
    unit_early_stim = unit_is_photostim & 2 == unit_stim_type;
    unit_middle_stim = unit_is_photostim & 3 == unit_stim_type;
    Compose Scatter Plots and the Peristimulus Time Histogram zeroed on the Response time.
    xs = unit_spike_time - trial.start_time - avg_response;
    ys = unit_trial_id;
    curr_unit = unit_struct;
    curr_unit.xs = xs;
    curr_unit.ys = ys;
    curr_unit.left_scatter = logical(trial.HitL);
    curr_unit.right_scatter = logical(trial.HitR);
    curr_unit.sample = avg_sample - avg_response;
    curr_unit.delay = avg_delay - avg_response;
    curr_unit.response = 0;
    % Photostim periods
    curr_unit.photostim.ind = unit_no_stim;
    % Sample
    if any(unit_sample_stim)
    SampleStim = Photostim;
    SampleStim.ind = unit_sample_stim;
    SampleStim.period = 'Sample';
    SampleStim.duration = 0.5;
    SampleStim.ramp_offset = 0.1;
    curr_unit.photostim(end+1) = SampleStim;
    end
    % Early Delay
    if any(unit_early_stim)
    early_stim_types = unique(unit_stim_type(unit_early_stim));
    for i_early_types=1:length(early_stim_types)
    early_type = early_stim_types(i_early_types);
    EarlyStim = Photostim;
    EarlyStim.period = 'Early Delay';
    EarlyStim.ind = early_type == unit_stim_type & unit_early_stim;
    if early_type == 2
    EarlyStim.duration = 0.5;
    EarlyStim.ramp_offset = 0.1;
    else
    EarlyStim.duration = 0.8;
    EarlyStim.ramp_offset = 0.2;
    end
    curr_unit.photostim(end+1) = EarlyStim;
    end
    end
    % Middle Delay
    if any(unit_middle_stim)
    MiddleStim = Photostim;
    MiddleStim.ind = unit_middle_stim;
    MiddleStim.period = 'Middle Delay';
    MiddleStim.duration = 0.5;
    MiddleStim.ramp_offset = 0.1;
    curr_unit.photostim(end+1) = MiddleStim;
    end
    Unit(unit_id) = curr_unit;
    end

    Plot Example Neurons

    neuron_labels = [2, 3]; % neuron labels from Figure 1e
    neuron_ids = [11, 2]; % neuron unit IDs corresponding to the Fig 1e labels
    num_conditions = 4; % photostim conditions: nostim, sample, early, middle if applicable
    num_neurons = length(neuron_ids);
    % Inititalize data structures for each summary plot of categorized neural spike data at specified stimulus condition
    RasterPlot = struct(...
    'xs', 0,...
    'ys', 0);
    ConditionPlot = struct(...
    'label', '',...
    'xlim', 0,...
    'sample', 0,...
    'delay', 0,...
    'response', 0,...
    'right_scatter', RasterPlot,...
    'left_scatter', RasterPlot,...
    'psth_bin_window', 0,...
    'stim_type', '');
    fig = figure;
    % Plot neural spike data for each neuron and stimulus condition in a subplot array: num_neurons (rows) x num_conditions (columns)
    for nn=1:num_neurons
    Neuron = Unit(neuron_ids(nn));
    % Initialize structure with neural + stimulus condition data
    CurrPlot = ConditionPlot;
    CurrPlot.xlim = [min(Neuron.xs) max(Neuron.xs)];
    CurrPlot.sample = Neuron.sample;
    CurrPlot.delay = Neuron.delay;
    CurrPlot.response = Neuron.response;
    % Plot each neuron/condition
    plot_row = (nn - 1) * num_conditions;
    for cc=1:num_conditions
    ax = subplot(num_neurons, num_conditions, plot_row + cc, 'Parent', fig);
    Stim = Neuron.photostim(cc);
    CurrPlot.stim_type = Stim.period;
    if strcmp(Stim.period, 'none')
    CurrPlot.label = sprintf('Neuron %d', neuron_labels(nn));
    CurrPlot.psth_bin_window = 9;
    else
    CurrPlot.label = Stim.period;
    CurrPlot.psth_bin_window = 2;
    end
    stim_left_scatter_ind = Stim.ind & Neuron.left_scatter;
    stim_left_scatter_trials = Neuron.ys(stim_left_scatter_ind);
    CurrPlot.left_scatter.xs = Neuron.xs(stim_left_scatter_ind);
    [~,CurrPlot.left_scatter.ys] = ismember(stim_left_scatter_trials,unique(stim_left_scatter_trials));
    stim_right_scatter_ind = Stim.ind & Neuron.right_scatter;
    stim_right_scatter_trials = Neuron.ys(stim_right_scatter_ind);
    CurrPlot.right_scatter.xs = Neuron.xs(stim_right_scatter_ind);
    [~,CurrPlot.right_scatter.ys] = ismember(stim_right_scatter_trials,unique(stim_right_scatter_trials));
    plot_condition(ax, CurrPlot);
    end
    end
    + + +

    Helper Functions

    PSTH helper function
    function [psth_xs, psth_ys] = calculate_psth(xs, bin_window, bin_width)
    [bin_counts, edges] = histcounts(xs, 'BinWidth', bin_width);
    psth_xs = edges(1:end-1) + (bin_width / 2);
    moving_avg_b = (1/bin_window) * ones(1,bin_window);
    psth_ys = filter(moving_avg_b, 1, bin_counts);
    end
    Plotter function for each stimulus condition
    function plot_condition(ax, ConditionPlot)
    left_cdata = [1 0 0]; % red
    right_cdata = [0 0 1]; % blue
    hist_margin = 50;
    scatter_margin = 10;
    % Calculate PSTH values
    % moving average over 200 ms as per figure 1e
    hist_bin_width = 0.2 / ConditionPlot.psth_bin_window;
    [left_psth_xs, left_psth_ys] =...
    calculate_psth(ConditionPlot.left_scatter.xs, ConditionPlot.psth_bin_window, hist_bin_width);
    [right_psth_xs, right_psth_ys] =...
    calculate_psth(ConditionPlot.right_scatter.xs, ConditionPlot.psth_bin_window, hist_bin_width);
    right_scatter_offset = min(ConditionPlot.right_scatter.ys);
    right_scatter_height = max(ConditionPlot.right_scatter.ys) - right_scatter_offset;
    left_scatter_offset = min(ConditionPlot.left_scatter.ys);
    left_scatter_height = max(ConditionPlot.left_scatter.ys) - left_scatter_offset;
    psth_height = max([left_psth_ys right_psth_ys]);
    left_y_offset = hist_margin...
    + psth_height...
    - left_scatter_offset;
    right_y_offset = scatter_margin...
    + left_y_offset...
    + left_scatter_offset...
    + left_scatter_height...
    - right_scatter_offset;
    subplot_height = right_y_offset...
    + right_scatter_offset...
    + right_scatter_height;
    hold(ax, 'on');
    % PSTH
    plot(ax, left_psth_xs, left_psth_ys, 'Color', left_cdata);
    plot(ax, right_psth_xs, right_psth_ys, 'Color', right_cdata);
    % Scatter Plot
    scatter(ax,...
    ConditionPlot.left_scatter.xs,...
    left_y_offset + ConditionPlot.left_scatter.ys,...
    'Marker', '.',...
    'CData', left_cdata,...
    'SizeData', 1);
    scatter(ax,...
    ConditionPlot.right_scatter.xs,...
    right_y_offset + ConditionPlot.right_scatter.ys,...
    'Marker', '.',...
    'CData', right_cdata,...
    'SizeData', 1);
    % sample, delay, response lines
    line(ax, repmat(ConditionPlot.sample, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    line(ax, repmat(ConditionPlot.delay, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    line(ax, repmat(ConditionPlot.response, 1, 2), [0 subplot_height],...
    'Color', 'k', 'LineStyle', '--');
    % blue bar for photoinhibition period
    if ~strcmp(ConditionPlot.stim_type, 'none')
    stim_height = subplot_height;
    stim_width = 0.5; % seconds
    % end time relative to 'go' cue as described in the paper.
    switch ConditionPlot.stim_type
    case 'Sample'
    end_offset = 1.6;
    case 'Early Delay'
    end_offset = 0.8;
    case 'Middle Delay'
    end_offset = 0.3;
    otherwise
    error('Invalid photostim period `%s`', ConditionPlot.stim_type);
    end
    stim_offset = ConditionPlot.response - stim_width - end_offset;
    patch_vertices = [...
    stim_offset, 0;...
    stim_offset, stim_height;...
    stim_offset+stim_width, stim_height;...
    stim_offset+stim_width, 0];
    patch(ax,...
    'Faces', 1:4,...
    'Vertices', patch_vertices,...
    'FaceColor', '#B3D3EC',... % light blue shading
    'EdgeColor', 'none',...
    'FaceAlpha', 0.8);
    end
    title(ax, ConditionPlot.label);
    xlabel(ax, 'Time (Seconds)');
    ylabel(ax, 'Spikes s^{-1}')
    xticks(ax, [-2 0 2]);
    yticks(ax, [0 max(10, round(psth_height, -1))]);
    % legend(ax, [scatter_left_plot, scatter_right_plot], {'Left Lick', 'Right Lick'},...
    % 'location', 'northwestoutside');
    ax.TickDir = 'out';
    ax.XLim = ConditionPlot.xlim;
    ax.YLim = [0 subplot_height];
    hold(ax, 'off');
    end

    \ No newline at end of file +--> +
    \ No newline at end of file diff --git a/tutorials/html/convertTrials.html b/tutorials/html/convertTrials.html index 4e02dd59..4b981e3f 100644 --- a/tutorials/html/convertTrials.html +++ b/tutorials/html/convertTrials.html @@ -6,7 +6,7 @@ NWB File Conversion Tutorial

    NWB File Conversion Tutorial

    How to convert trial-based experimental data to the Neurodata Without Borders file format using MatNWB. This example uses the CRCNS ALM-3 data set. Information on how to download the data can be found on the CRCNS Download Page. One should first familiarize themselves with the file format, which can be found on the ALM-3 About Page under the Documentation files.

    author: Lawrence Niu
     contact: lawrence@vidriotech.com
    -last updated: Feb 2, 2021

    Contents

    Script Configuration

    The following details configuration parameters specific to the publishing script, and can be skipped when implementing your own conversion. The parameters can be changed to fit any of the available sessions.

    animal = 'ANM255201';
    +last updated: May 27, 2021

    Contents

    Script Configuration

    The following details configuration parameters specific to the publishing script, and can be skipped when implementing your own conversion. The parameters can be changed to fit any of the available sessions.

    animal = 'ANM255201';
     session = '20141124';
     
     identifier = [animal '_' session];
    @@ -243,7 +243,7 @@
     % wherein each cell is one trial. We must populate this way because trials
     % may not be in trial order.
     % Trial timeseries will be a compound type under intervals/trials.
    -trial_timeseries = cell(length(data.trialIds));
    +trial_timeseries = cell(size(data.trialIds));
     
    Processing Data Structure `data\data_structure_files\data_structure_ANM255201_20141124.mat`
     

    NWB comes with default support for trial-based data. These must be TimeIntervals that are placed in the intervals property. Note that trials is a special keyword that is required for PyNWB compatibility.

    ephus = data.timeSeriesArrayHash.value{1};
     ephusUnit = data.timeUnitNames{data.timeUnitIds(ephus.timeUnit)};
    @@ -305,8 +305,9 @@
             {'start_time'; 'stop_time'; 'acquisition'; 'timeseries'}],...
         'description', 'trial data and properties', ...
         'id', types.hdmf_common.ElementIdentifiers('data', data.trialIds),...
    -    'timeseries', types.hdmf_common.VectorData('description', 'An index into a TimeSeries object.'),...
    +    'timeseries', types.hdmf_common.VectorData('description', 'Index into timeseries Data'),...
         'timeseries_index', types.hdmf_common.VectorIndex(...
    +    'description', 'Index into Timeseries VectorData',...
         'target', types.untyped.ObjectView('/intervals/trials/timeseries')));
     
     for i=1:length(data.trialTypeStr)
    @@ -430,16 +431,21 @@
     
    Processing Raw Acquisition Data from `data\RawVoltageTraces\ANM255201_20141124.tar` (will take a while)
     

    Export

    %first, we'll format and store |trial_timeseries| into |intervals_trials|.
     % note that |timeseries_index| data is 0-indexed.
    -ts_len = cellfun('length', trial_timeseries);
    -nwb.intervals_trials.timeseries_index.data = cumsum(ts_len);
    +ts_len = cellfun('size', trial_timeseries, 1);
    +is_len_nonzero = ts_len > 0;
    +ts_len_nonzero = ts_len(is_len_nonzero);
    +nwb.intervals_trials.timeseries_index.data = cumsum(ts_len_nonzero);
     % intervals/trials/timeseries is a compound type so we use cell2table to
     % convert this 2-d cell array into a compatible table.
    -nwb.intervals_trials.timeseries.data = cell2table(vertcat(trial_timeseries{ts_len > 0}),...
    +nwb.intervals_trials.timeseries.data = cell2table(vertcat(trial_timeseries{is_len_nonzero}),...
         'VariableNames', {'timeseries', 'idx_start', 'count'});
     
     outDest = fullfile(outloc, [identifier '.nwb']);
    +if 2 == exist(outDest, 'file')
    +    delete(outDest);
    +end
     nwbExport(nwb, outDest);
    -
    \ No newline at end of file