Skip to content

Commit

Permalink
Rerun generateCore (update all classes)
Browse files Browse the repository at this point in the history
  • Loading branch information
ehennestad committed Dec 8, 2024
1 parent a61884e commit 5c5400f
Show file tree
Hide file tree
Showing 87 changed files with 2,653 additions and 174 deletions.
47 changes: 45 additions & 2 deletions +types/+core/AbstractFeatureSeries.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
classdef AbstractFeatureSeries < types.core.TimeSeries & types.untyped.GroupClass
% ABSTRACTFEATURESERIES Abstract features, such as quantitative descriptions of sensory stimuli. The TimeSeries::data field is a 2D array, storing those features (e.g., for visual grating stimulus this might be orientation, spatial frequency and contrast). Null stimuli (eg, uniform gray) can be marked as being an independent feature (eg, 1.0 for gray, 0.0 for actual stimulus) or by storing NaNs for feature values, or through use of the TimeSeries::control fields. A set of features is considered to persist until the next set of features is defined. The final set of features stored should be the null set. This is useful when storing the raw stimulus is impractical.
% ABSTRACTFEATURESERIES - 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.
%
% Required Properties:
% data, features


% REQUIRED PROPERTIES
Expand All @@ -13,7 +16,47 @@

methods
function obj = AbstractFeatureSeries(varargin)
% ABSTRACTFEATURESERIES Constructor for AbstractFeatureSeries
% ABSTRACTFEATURESERIES - Constructor for AbstractFeatureSeries
%
% Syntax:
% abstractFeatureSeries = types.core.ABSTRACTFEATURESERIES() creates a AbstractFeatureSeries object with unset property values.
%
% abstractFeatureSeries = types.core.ABSTRACTFEATURESERIES(Name, Value) creates a AbstractFeatureSeries object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - comments (char) - 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.
%
% - control (uint8) - 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.
%
% - control_description (char) - Description of each control value. Must be present if control is present. If present, control_description[0] should describe time points where control == 0.
%
% - data (numeric) - Values of each feature at each time.
%
% - data_continuity (char) - 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 (single) - Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
%
% - data_offset (single) - Scalar to add to the data after scaling by 'conversion' to finalize its coercion to the specified 'unit'. Two common examples of this include (a) data stored in an unsigned type that requires a shift after scaling to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units.
%
% - data_resolution (single) - Smallest meaningful difference between values in data, stored in the specified by unit, e.g., the change in value of the least significant bit, or a larger number if signal noise is known to be present. If unknown, use -1.0.
%
% - data_unit (char) - 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'".
%
% - description (char) - Description of the time series.
%
% - feature_units (char) - Units of each feature.
%
% - features (char) - Description of the features represented in TimeSeries::data.
%
% - starting_time (double) - 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.
%
% - starting_time_rate (single) - Sampling rate, in Hz.
%
% - timestamps (double) - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.
%
% Output Arguments:
% - abstractFeatureSeries (types.core.AbstractFeatureSeries) - A AbstractFeatureSeries object

varargin = [{'data_unit' 'see `feature_units`'} varargin];
obj = [email protected](varargin{:});

Expand Down
39 changes: 37 additions & 2 deletions +types/+core/AnnotationSeries.m
Original file line number Diff line number Diff line change
@@ -1,11 +1,46 @@
classdef AnnotationSeries < types.core.TimeSeries & types.untyped.GroupClass
% ANNOTATIONSERIES Stores user annotations made during an experiment. The data[] field stores a text array, and timestamps are stored for each annotation (ie, interval=1). This is largely an alias to a standard TimeSeries storing a text array but that is identifiable as storing annotations in a machine-readable way.
% ANNOTATIONSERIES - 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.
%
% Required Properties:
% data



methods
function obj = AnnotationSeries(varargin)
% ANNOTATIONSERIES Constructor for AnnotationSeries
% ANNOTATIONSERIES - Constructor for AnnotationSeries
%
% Syntax:
% annotationSeries = types.core.ANNOTATIONSERIES() creates a AnnotationSeries object with unset property values.
%
% annotationSeries = types.core.ANNOTATIONSERIES(Name, Value) creates a AnnotationSeries object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - comments (char) - 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.
%
% - control (uint8) - 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.
%
% - control_description (char) - Description of each control value. Must be present if control is present. If present, control_description[0] should describe time points where control == 0.
%
% - data (char) - Annotations made during an experiment.
%
% - data_continuity (char) - 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 (single) - Scalar to multiply each element in data to convert it to the specified 'unit'. If the data are stored in acquisition system units or other units that require a conversion to be interpretable, multiply the data by 'conversion' to convert the data to the specified 'unit'. e.g. if the data acquisition system stores values in this object as signed 16-bit integers (int16 range -32,768 to 32,767) that correspond to a 5V range (-2.5V to 2.5V), and the data acquisition system gain is 8000X, then the 'conversion' multiplier to get from raw data acquisition values to recorded volts is 2.5/32768/8000 = 9.5367e-9.
%
% - data_offset (single) - Scalar to add to the data after scaling by 'conversion' to finalize its coercion to the specified 'unit'. Two common examples of this include (a) data stored in an unsigned type that requires a shift after scaling to re-center the data, and (b) specialized recording devices that naturally cause a scalar offset with respect to the true units.
%
% - description (char) - Description of the time series.
%
% - starting_time (double) - 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.
%
% - starting_time_rate (single) - Sampling rate, in Hz.
%
% - timestamps (double) - Timestamps for samples stored in data, in seconds, relative to the common experiment master-clock stored in NWBFile.timestamps_reference_time.
%
% Output Arguments:
% - annotationSeries (types.core.AnnotationSeries) - A AnnotationSeries object

varargin = [{'data_resolution' types.util.correctType(-1, 'single') 'data_unit' 'n/a'} varargin];
obj = [email protected](varargin{:});

Expand Down
19 changes: 17 additions & 2 deletions +types/+core/BehavioralEpochs.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
classdef BehavioralEpochs < types.core.NWBDataInterface & types.untyped.GroupClass
% BEHAVIORALEPOCHS TimeSeries for storing behavioral epochs. The objective of this and the other two Behavioral interfaces (e.g. BehavioralEvents and BehavioralTimeSeries) is to provide generic hooks for software tools/scripts. This allows a tool/script to take the output one specific interface (e.g., UnitTimes) and plot that data relative to another data modality (e.g., behavioral events) without having to define all possible modalities in advance. Declaring one of these interfaces means that one or more TimeSeries of the specified type is published. These TimeSeries should reside in a group having the same name as the interface. For example, if a BehavioralTimeSeries interface is declared, the module will have one or more TimeSeries defined in the module sub-group 'BehavioralTimeSeries'. BehavioralEpochs should use IntervalSeries. BehavioralEvents is used for irregular events. BehavioralTimeSeries is for continuous data.
% BEHAVIORALEPOCHS - 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.
%
% Required Properties:
% None


% OPTIONAL PROPERTIES
Expand All @@ -9,7 +12,19 @@

methods
function obj = BehavioralEpochs(varargin)
% BEHAVIORALEPOCHS Constructor for BehavioralEpochs
% BEHAVIORALEPOCHS - Constructor for BehavioralEpochs
%
% Syntax:
% behavioralEpochs = types.core.BEHAVIORALEPOCHS() creates a BehavioralEpochs object with unset property values.
%
% behavioralEpochs = types.core.BEHAVIORALEPOCHS(Name, Value) creates a BehavioralEpochs object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - intervalseries (IntervalSeries) - IntervalSeries object containing start and stop times of epochs.
%
% Output Arguments:
% - behavioralEpochs (types.core.BehavioralEpochs) - A BehavioralEpochs object

obj = [email protected](varargin{:});
[obj.intervalseries, ivarargin] = types.util.parseConstrained(obj,'intervalseries', 'types.core.IntervalSeries', varargin{:});
varargin(ivarargin) = [];
Expand Down
19 changes: 17 additions & 2 deletions +types/+core/BehavioralEvents.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
classdef BehavioralEvents < types.core.NWBDataInterface & types.untyped.GroupClass
% BEHAVIORALEVENTS TimeSeries for storing behavioral events. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
% BEHAVIORALEVENTS - TimeSeries for storing behavioral events. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
%
% Required Properties:
% None


% OPTIONAL PROPERTIES
Expand All @@ -9,7 +12,19 @@

methods
function obj = BehavioralEvents(varargin)
% BEHAVIORALEVENTS Constructor for BehavioralEvents
% BEHAVIORALEVENTS - Constructor for BehavioralEvents
%
% Syntax:
% behavioralEvents = types.core.BEHAVIORALEVENTS() creates a BehavioralEvents object with unset property values.
%
% behavioralEvents = types.core.BEHAVIORALEVENTS(Name, Value) creates a BehavioralEvents object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - timeseries (TimeSeries) - TimeSeries object containing behavioral events.
%
% Output Arguments:
% - behavioralEvents (types.core.BehavioralEvents) - A BehavioralEvents object

obj = [email protected](varargin{:});
[obj.timeseries, ivarargin] = types.util.parseConstrained(obj,'timeseries', 'types.core.TimeSeries', varargin{:});
varargin(ivarargin) = [];
Expand Down
19 changes: 17 additions & 2 deletions +types/+core/BehavioralTimeSeries.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
classdef BehavioralTimeSeries < types.core.NWBDataInterface & types.untyped.GroupClass
% BEHAVIORALTIMESERIES TimeSeries for storing Behavoioral time series data. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
% BEHAVIORALTIMESERIES - TimeSeries for storing Behavoioral time series data. See description of <a href="#BehavioralEpochs">BehavioralEpochs</a> for more details.
%
% Required Properties:
% None


% OPTIONAL PROPERTIES
Expand All @@ -9,7 +12,19 @@

methods
function obj = BehavioralTimeSeries(varargin)
% BEHAVIORALTIMESERIES Constructor for BehavioralTimeSeries
% BEHAVIORALTIMESERIES - Constructor for BehavioralTimeSeries
%
% Syntax:
% behavioralTimeSeries = types.core.BEHAVIORALTIMESERIES() creates a BehavioralTimeSeries object with unset property values.
%
% behavioralTimeSeries = types.core.BEHAVIORALTIMESERIES(Name, Value) creates a BehavioralTimeSeries object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - timeseries (TimeSeries) - TimeSeries object containing continuous behavioral data.
%
% Output Arguments:
% - behavioralTimeSeries (types.core.BehavioralTimeSeries) - A BehavioralTimeSeries object

obj = [email protected](varargin{:});
[obj.timeseries, ivarargin] = types.util.parseConstrained(obj,'timeseries', 'types.core.TimeSeries', varargin{:});
varargin(ivarargin) = [];
Expand Down
25 changes: 23 additions & 2 deletions +types/+core/ClusterWaveforms.m
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
classdef ClusterWaveforms < types.core.NWBDataInterface & types.untyped.GroupClass
% CLUSTERWAVEFORMS DEPRECATED The mean waveform shape, including standard deviation, of the different clusters. Ideally, the waveform analysis should be performed on data that is only high-pass filtered. This is a separate module because it is expected to require updating. For example, IMEC probes may require different storage requirements to store/display mean waveforms, requiring a new interface or an extension of this one.
% CLUSTERWAVEFORMS - 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.
%
% Required Properties:
% waveform_filtering, waveform_mean, waveform_sd


% REQUIRED PROPERTIES
Expand All @@ -15,7 +18,25 @@

methods
function obj = ClusterWaveforms(varargin)
% CLUSTERWAVEFORMS Constructor for ClusterWaveforms
% CLUSTERWAVEFORMS - Constructor for ClusterWaveforms
%
% Syntax:
% clusterWaveforms = types.core.CLUSTERWAVEFORMS() creates a ClusterWaveforms object with unset property values.
%
% clusterWaveforms = types.core.CLUSTERWAVEFORMS(Name, Value) creates a ClusterWaveforms object where one or more property values are specified using name-value pairs.
%
% Input Arguments (Name-Value Arguments):
% - clustering_interface (Clustering) - Link to Clustering interface that was the source of the clustered data
%
% - waveform_filtering (char) - Filtering applied to data before generating mean/sd
%
% - waveform_mean (single) - 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)
%
% - waveform_sd (single) - Stdev of waveforms for each cluster, using the same indices as in mean
%
% Output Arguments:
% - clusterWaveforms (types.core.ClusterWaveforms) - A ClusterWaveforms object

obj = [email protected](varargin{:});


Expand Down
Loading

0 comments on commit 5c5400f

Please sign in to comment.