black format models

This commit is contained in:
sneakers-the-rat 2024-07-09 00:24:08 -07:00
parent 34c8be3a2c
commit 5ccc9e6fbd
Signed by untrusted user who does not match committer: jonny
GPG key ID: 6DCB96EF1E4D232D
139 changed files with 876 additions and 2441 deletions

View file

@ -1 +1 @@
from .pydantic.core.v2_7_0.namespace import *
from .pydantic.core.v2_7_0.namespace import *

View file

@ -71,9 +71,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +103,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -81,9 +81,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -147,9 +145,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -182,11 +178,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -237,9 +231,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -248,9 +240,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -259,9 +249,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -271,9 +259,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -181,9 +181,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -196,9 +194,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -237,11 +233,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -200,12 +192,8 @@ class IZeroClampSeries(CurrentClampSeries):
"""
name: str = Field(...)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -221,9 +209,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -268,9 +254,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -317,12 +301,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -349,9 +329,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -474,9 +452,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -502,9 +478,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -554,9 +528,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -564,12 +536,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -273,9 +263,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +299,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,16 +201,12 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
bands: str = Field(
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -253,9 +243,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesBands(DynamicTable):
@ -306,18 +294,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -337,9 +321,7 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -101,9 +101,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -144,9 +142,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -193,9 +189,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -204,9 +198,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -215,9 +207,9 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[
List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]
] = Field(default_factory=dict)
children: Optional[List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]] = (
Field(default_factory=dict)
)
name: str = Field(...)
@ -227,15 +219,9 @@ class ImagingPlane(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the imaging plane."""
)
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
imaging_rate: float = Field(
..., description="""Rate that images are acquired, in Hz."""
)
description: Optional[str] = Field(None, description="""Description of the imaging plane.""")
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
imaging_rate: float = Field(..., description="""Rate that images are acquired, in Hz.""")
indicator: str = Field(..., description="""Calcium indicator.""")
location: str = Field(
...,
@ -316,12 +302,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):
@ -329,7 +311,5 @@ class MotionCorrection(NWBDataInterface):
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).
"""
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(
default_factory=dict
)
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -66,9 +66,7 @@ class RetinotopyMap(NWBData):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -86,9 +84,7 @@ class AxisMap(RetinotopyMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class RetinotopyImage(GrayscaleImage):
@ -105,18 +101,14 @@ class RetinotopyImage(GrayscaleImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -177,9 +169,7 @@ class ImagingRetinotopyAxis1PhaseMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis1PowerMap(AxisMap):
@ -196,9 +186,7 @@ class ImagingRetinotopyAxis1PowerMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis2PhaseMap(AxisMap):
@ -215,9 +203,7 @@ class ImagingRetinotopyAxis2PhaseMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis2PowerMap(AxisMap):
@ -234,9 +220,7 @@ class ImagingRetinotopyAxis2PowerMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopySignMap(RetinotopyMap):
@ -249,9 +233,7 @@ class ImagingRetinotopySignMap(RetinotopyMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -261,9 +243,7 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
"""
name: Literal["focal_depth_image"] = Field("focal_depth_image")
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
bits_per_pixel: Optional[int] = Field(
None,
description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""",
@ -272,18 +252,14 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -307,18 +283,14 @@ class ImagingRetinotopyVasculatureImage(RetinotopyImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],

View file

@ -71,9 +71,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +103,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -81,9 +81,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -147,9 +145,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -182,11 +178,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -237,9 +231,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -248,9 +240,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -259,9 +249,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -271,9 +259,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -181,9 +181,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -196,9 +194,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -237,11 +233,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -200,12 +192,8 @@ class IZeroClampSeries(CurrentClampSeries):
"""
name: str = Field(...)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -221,9 +209,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -268,9 +254,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -317,12 +301,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -349,9 +329,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -474,9 +452,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -502,9 +478,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -554,9 +528,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -564,12 +536,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -273,9 +263,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +299,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,16 +201,12 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
bands: str = Field(
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -253,9 +243,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesBands(DynamicTable):
@ -306,18 +294,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -337,9 +321,7 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -101,9 +101,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -144,9 +142,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -193,9 +189,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -204,9 +198,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -215,9 +207,9 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[
List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]
] = Field(default_factory=dict)
children: Optional[List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]] = (
Field(default_factory=dict)
)
name: str = Field(...)
@ -227,15 +219,9 @@ class ImagingPlane(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the imaging plane."""
)
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
imaging_rate: float = Field(
..., description="""Rate that images are acquired, in Hz."""
)
description: Optional[str] = Field(None, description="""Description of the imaging plane.""")
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
imaging_rate: float = Field(..., description="""Rate that images are acquired, in Hz.""")
indicator: str = Field(..., description="""Calcium indicator.""")
location: str = Field(
...,
@ -316,12 +302,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):
@ -329,7 +311,5 @@ class MotionCorrection(NWBDataInterface):
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).
"""
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(
default_factory=dict
)
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -66,9 +66,7 @@ class RetinotopyMap(NWBData):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -86,9 +84,7 @@ class AxisMap(RetinotopyMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class RetinotopyImage(GrayscaleImage):
@ -105,18 +101,14 @@ class RetinotopyImage(GrayscaleImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -177,9 +169,7 @@ class ImagingRetinotopyAxis1PhaseMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis1PowerMap(AxisMap):
@ -196,9 +186,7 @@ class ImagingRetinotopyAxis1PowerMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis2PhaseMap(AxisMap):
@ -215,9 +203,7 @@ class ImagingRetinotopyAxis2PhaseMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopyAxis2PowerMap(AxisMap):
@ -234,9 +220,7 @@ class ImagingRetinotopyAxis2PowerMap(AxisMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
class ImagingRetinotopySignMap(RetinotopyMap):
@ -249,9 +233,7 @@ class ImagingRetinotopySignMap(RetinotopyMap):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -261,9 +243,7 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
"""
name: Literal["focal_depth_image"] = Field("focal_depth_image")
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
bits_per_pixel: Optional[int] = Field(
None,
description="""Number of bits used to represent each value. This is necessary to determine maximum (white) pixel value.""",
@ -272,18 +252,14 @@ class ImagingRetinotopyFocalDepthImage(RetinotopyImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -307,18 +283,14 @@ class ImagingRetinotopyVasculatureImage(RetinotopyImage):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],

View file

@ -71,9 +71,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +103,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -81,9 +81,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -155,9 +153,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -190,11 +186,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -253,9 +247,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -264,9 +256,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -275,9 +265,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -287,9 +275,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -181,9 +181,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -196,9 +194,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -237,11 +233,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -200,12 +192,8 @@ class IZeroClampSeries(CurrentClampSeries):
"""
name: str = Field(...)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -221,9 +209,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -268,9 +254,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -317,12 +301,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -349,9 +329,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -474,9 +452,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -502,9 +478,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -554,9 +528,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -564,12 +536,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -255,9 +245,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -273,9 +261,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +297,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,16 +201,12 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
bands: str = Field(
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -253,9 +243,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesBands(DynamicTable):
@ -306,18 +294,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -337,9 +321,7 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -101,9 +101,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -144,9 +142,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -201,9 +197,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -212,9 +206,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -223,9 +215,9 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[
List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]
] = Field(default_factory=dict)
children: Optional[List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]] = (
Field(default_factory=dict)
)
name: str = Field(...)
@ -243,7 +235,5 @@ class MotionCorrection(NWBDataInterface):
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).
"""
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(
default_factory=dict
)
children: Optional[List[NWBDataInterface] | NWBDataInterface] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

View file

@ -71,9 +71,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +103,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -81,9 +81,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -155,9 +153,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -190,11 +186,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -253,9 +247,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -264,9 +256,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -275,9 +265,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -287,9 +275,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -198,9 +198,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -213,9 +211,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -254,11 +250,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -200,12 +192,8 @@ class IZeroClampSeries(CurrentClampSeries):
"""
name: str = Field(...)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -221,9 +209,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -268,9 +254,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -317,12 +301,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -349,9 +329,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -474,9 +452,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -502,9 +478,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -554,9 +528,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -564,12 +536,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -255,9 +245,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -273,9 +261,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +297,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,16 +201,12 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
bands: str = Field(
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -253,9 +243,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesBands(DynamicTable):
@ -306,18 +294,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -337,9 +321,7 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -106,9 +106,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -149,9 +147,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -206,9 +202,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -217,9 +211,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -228,9 +220,7 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(
default_factory=dict
)
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(default_factory=dict)
name: str = Field(...)
@ -249,16 +239,12 @@ class PlaneSegmentation(DynamicTable):
None,
description="""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.""",
)
pixel_mask_index: Optional[str] = Field(
None, description="""Index into pixel_mask."""
)
pixel_mask_index: Optional[str] = Field(None, description="""Index into pixel_mask.""")
pixel_mask: Optional[str] = Field(
None,
description="""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""",
)
voxel_mask_index: Optional[str] = Field(
None, description="""Index into voxel_mask."""
)
voxel_mask_index: Optional[str] = Field(None, description="""Index into voxel_mask.""")
voxel_mask: Optional[str] = Field(
None,
description="""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""",
@ -363,9 +349,7 @@ class ImagingPlane(NWBContainer):
An imaging plane and its metadata.
"""
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(
default_factory=dict
)
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(default_factory=dict)
name: str = Field(...)
@ -375,12 +359,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

View file

@ -71,9 +71,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +103,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -81,9 +81,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -155,9 +153,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -190,11 +186,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -253,9 +247,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -264,9 +256,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -275,9 +265,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -287,9 +275,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -198,9 +198,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -213,9 +211,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -254,11 +250,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -200,12 +192,8 @@ class IZeroClampSeries(CurrentClampSeries):
"""
name: str = Field(...)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -221,9 +209,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -268,9 +254,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -317,12 +301,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -349,9 +329,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -474,9 +452,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -502,9 +478,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -554,9 +528,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -564,12 +536,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -255,9 +245,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -273,9 +261,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +297,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,16 +201,12 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
bands: str = Field(
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -253,9 +243,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesBands(DynamicTable):
@ -306,18 +294,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -337,9 +321,7 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -106,9 +106,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -149,9 +147,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -206,9 +202,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -217,9 +211,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -228,9 +220,7 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(
default_factory=dict
)
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(default_factory=dict)
name: str = Field(...)
@ -249,16 +239,12 @@ class PlaneSegmentation(DynamicTable):
None,
description="""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.""",
)
pixel_mask_index: Optional[str] = Field(
None, description="""Index into pixel_mask."""
)
pixel_mask_index: Optional[str] = Field(None, description="""Index into pixel_mask.""")
pixel_mask: Optional[str] = Field(
None,
description="""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""",
)
voxel_mask_index: Optional[str] = Field(
None, description="""Index into voxel_mask."""
)
voxel_mask_index: Optional[str] = Field(None, description="""Index into voxel_mask.""")
voxel_mask: Optional[str] = Field(
None,
description="""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""",
@ -363,9 +349,7 @@ class ImagingPlane(NWBContainer):
An imaging plane and its metadata.
"""
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(
default_factory=dict
)
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(default_factory=dict)
name: str = Field(...)
@ -375,12 +359,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

View file

@ -73,9 +73,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -107,9 +105,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -85,9 +85,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -163,9 +161,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -198,11 +194,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -261,9 +255,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -272,9 +264,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -283,9 +273,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -295,9 +283,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -194,9 +194,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -209,9 +207,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -250,11 +246,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -83,9 +83,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -132,12 +130,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -152,9 +146,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -204,12 +196,8 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""",
)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -222,9 +210,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -269,9 +255,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -318,12 +302,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -350,9 +330,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -475,9 +453,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -503,9 +479,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -555,9 +529,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -565,12 +537,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -140,9 +134,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -205,9 +197,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -255,9 +245,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -273,9 +261,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -311,9 +297,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +201,7 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
source_channels: Optional[str] = Field(
None,
description="""DynamicTableRegion pointer to the channels that this decomposition series was generated from.""",
@ -218,9 +210,7 @@ class DecompositionSeries(TimeSeries):
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -257,9 +247,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesSourceChannels(DynamicTableRegion):
@ -330,18 +318,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -361,14 +345,10 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = (
Field(
None,
description="""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.""",
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = Field(
None,
description="""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.""",
)
waveforms_index: Optional[str] = Field(
None,

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -106,9 +106,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -149,9 +147,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -206,9 +202,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -217,9 +211,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -228,9 +220,7 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(
default_factory=dict
)
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(default_factory=dict)
name: str = Field(...)
@ -249,16 +239,12 @@ class PlaneSegmentation(DynamicTable):
None,
description="""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.""",
)
pixel_mask_index: Optional[str] = Field(
None, description="""Index into pixel_mask."""
)
pixel_mask_index: Optional[str] = Field(None, description="""Index into pixel_mask.""")
pixel_mask: Optional[str] = Field(
None,
description="""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""",
)
voxel_mask_index: Optional[str] = Field(
None, description="""Index into voxel_mask."""
)
voxel_mask_index: Optional[str] = Field(None, description="""Index into voxel_mask.""")
voxel_mask: Optional[str] = Field(
None,
description="""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""",
@ -380,9 +366,7 @@ class ImagingPlane(NWBContainer):
An imaging plane and its metadata.
"""
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(
default_factory=dict
)
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(default_factory=dict)
name: str = Field(...)
@ -392,12 +376,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

View file

@ -78,9 +78,7 @@ class TimeSeriesReferenceVectorData(VectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -103,9 +101,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -137,9 +133,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -127,9 +125,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -165,9 +161,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -176,9 +170,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -187,7 +179,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -85,9 +85,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -163,9 +161,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -198,11 +194,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -261,9 +255,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -272,9 +264,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -283,9 +273,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -295,9 +283,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -202,9 +202,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -217,9 +215,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -258,11 +254,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -86,9 +86,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -135,12 +133,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -155,9 +149,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,12 +199,8 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""",
)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -225,9 +213,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -272,9 +258,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -321,12 +305,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -353,9 +333,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -478,9 +456,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -506,9 +482,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -558,9 +532,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -568,12 +540,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)
@ -702,9 +670,7 @@ class IntracellularStimuliTableStimulus(TimeSeriesReferenceVectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -759,9 +725,7 @@ class IntracellularResponsesTableResponse(TimeSeriesReferenceVectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -797,9 +761,9 @@ class IntracellularRecordingsTable(AlignedDynamicTable):
...,
description="""Table for storing intracellular response related metadata.""",
)
children: Optional[
List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]
] = Field(default_factory=dict)
children: Optional[List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]] = (
Field(default_factory=dict)
)
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
@ -824,9 +788,7 @@ class SimultaneousRecordingsTable(DynamicTable):
...,
description="""A reference to one or more rows in the IntracellularRecordingsTable table.""",
)
recordings_index: str = Field(
..., description="""Index dataset for the recordings column."""
)
recordings_index: str = Field(..., description="""Index dataset for the recordings column.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
@ -952,9 +914,7 @@ class SequentialRecordingsTableSimultaneousRecordingsIndex(VectorIndex):
Index dataset for the simultaneous_recordings column.
"""
name: Literal["simultaneous_recordings_index"] = Field(
"simultaneous_recordings_index"
)
name: Literal["simultaneous_recordings_index"] = Field("simultaneous_recordings_index")
target: Optional[str] = Field(
None,
description="""Reference to the target dataset that this index applies to.""",
@ -1058,9 +1018,7 @@ class ExperimentalConditionsTable(DynamicTable):
...,
description="""A reference to one or more rows in the RepetitionsTable table.""",
)
repetitions_index: str = Field(
..., description="""Index dataset for the repetitions column."""
)
repetitions_index: str = Field(..., description="""Index dataset for the repetitions column.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -141,9 +135,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +199,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -257,9 +247,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -275,9 +263,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -313,9 +299,7 @@ class IndexSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Index of the frame in the referenced ImageSeries."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +201,7 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
source_channels: Optional[str] = Field(
None,
description="""DynamicTableRegion pointer to the channels that this decomposition series was generated from.""",
@ -218,9 +210,7 @@ class DecompositionSeries(TimeSeries):
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -257,9 +247,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesSourceChannels(DynamicTableRegion):
@ -330,18 +318,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -361,14 +345,10 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = (
Field(
None,
description="""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.""",
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = Field(
None,
description="""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.""",
)
waveforms_index: Optional[str] = Field(
None,

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -107,9 +107,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -150,9 +148,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +203,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -218,9 +212,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -229,9 +221,7 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(
default_factory=dict
)
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(default_factory=dict)
name: str = Field(...)
@ -250,16 +240,12 @@ class PlaneSegmentation(DynamicTable):
None,
description="""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.""",
)
pixel_mask_index: Optional[str] = Field(
None, description="""Index into pixel_mask."""
)
pixel_mask_index: Optional[str] = Field(None, description="""Index into pixel_mask.""")
pixel_mask: Optional[str] = Field(
None,
description="""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""",
)
voxel_mask_index: Optional[str] = Field(
None, description="""Index into voxel_mask."""
)
voxel_mask_index: Optional[str] = Field(None, description="""Index into voxel_mask.""")
voxel_mask: Optional[str] = Field(
None,
description="""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""",
@ -381,9 +367,7 @@ class ImagingPlane(NWBContainer):
An imaging plane and its metadata.
"""
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(
default_factory=dict
)
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(default_factory=dict)
name: str = Field(...)
@ -393,12 +377,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

View file

@ -78,9 +78,7 @@ class TimeSeriesReferenceVectorData(VectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -103,9 +101,7 @@ class Image(NWBData):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -149,9 +145,7 @@ class TimeSeries(NWBDataInterface):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -75,9 +75,7 @@ class SpatialSeries(TimeSeries):
None,
description="""Description defining what exactly 'straight-ahead' means.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -129,9 +127,7 @@ class BehavioralEpochs(NWBDataInterface):
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.
"""
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(
default_factory=dict
)
children: Optional[List[IntervalSeries] | IntervalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -167,9 +163,7 @@ class EyeTracking(NWBDataInterface):
Eye-tracking data, representing direction of gaze.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -178,9 +172,7 @@ class CompassDirection(NWBDataInterface):
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.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -189,7 +181,5 @@ class Position(NWBDataInterface):
Position data, whether along the x, x/y or x/y/z axis.
"""
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(
default_factory=dict
)
children: Optional[List[SpatialSeries] | SpatialSeries] = Field(default_factory=dict)
name: str = Field(...)

View file

@ -85,9 +85,7 @@ class ElectricalSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -163,9 +161,7 @@ class SpikeEventSeries(ElectricalSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -198,11 +194,9 @@ class FeatureExtraction(NWBDataInterface):
...,
description="""Description of features (eg, ''PC1'') for each of the extracted features.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = (
Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
features: NDArray[Shape["* num_events, * num_channels, * num_features"], float] = Field(
...,
description="""Multi-dimensional array of features extracted from each event.""",
)
times: NDArray[Shape["* num_events"], float] = Field(
...,
@ -261,9 +255,7 @@ class EventWaveform(NWBDataInterface):
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.
"""
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(
default_factory=dict
)
children: Optional[List[SpikeEventSeries] | SpikeEventSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -272,9 +264,7 @@ class FilteredEphys(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -283,9 +273,7 @@ class LFP(NWBDataInterface):
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.
"""
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(
default_factory=dict
)
children: Optional[List[ElectricalSeries] | ElectricalSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -295,9 +283,7 @@ class ElectrodeGroup(NWBContainer):
"""
name: str = Field(...)
description: Optional[str] = Field(
None, description="""Description of this electrode group."""
)
description: Optional[str] = Field(None, description="""Description of this electrode group.""")
location: Optional[str] = Field(
None,
description="""Location of electrode group. Specify the area, layer, comments on estimation of area/layer, etc. Use standard atlas names for anatomical regions when possible.""",

View file

@ -77,12 +77,8 @@ class TimeIntervals(DynamicTable):
description="""User-defined tags that identify or categorize events.""",
)
tags_index: Optional[str] = Field(None, description="""Index for tags.""")
timeseries: Optional[str] = Field(
None, description="""An index into a TimeSeries object."""
)
timeseries_index: Optional[str] = Field(
None, description="""Index for timeseries."""
)
timeseries: Optional[str] = Field(None, description="""An index into a TimeSeries object.""")
timeseries_index: Optional[str] = Field(None, description="""Index for timeseries.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
@ -137,9 +133,7 @@ class TimeIntervalsTimeseries(TimeSeriesReferenceVectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)

View file

@ -175,11 +175,9 @@ class NWBFileStimulus(ConfiguredBaseModel):
presentation: Optional[List[TimeSeries] | TimeSeries] = Field(
default_factory=dict, description="""Stimuli presented during the experiment."""
)
templates: Optional[List[Union[Images, TimeSeries]] | Union[Images, TimeSeries]] = (
Field(
default_factory=dict,
description="""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.""",
)
templates: Optional[List[Union[Images, TimeSeries]] | Union[Images, TimeSeries]] = Field(
default_factory=dict,
description="""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.""",
)
@ -205,9 +203,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
keywords: Optional[NDArray[Shape["* num_keywords"], str]] = Field(
None, description="""Terms to search over."""
)
lab: Optional[str] = Field(
None, description="""Laboratory where experiment was performed."""
)
lab: Optional[str] = Field(None, description="""Laboratory where experiment was performed.""")
notes: Optional[str] = Field(None, description="""Notes about the experiment.""")
pharmacology: Optional[str] = Field(
None,
@ -220,9 +216,7 @@ class NWBFileGeneral(ConfiguredBaseModel):
related_publications: Optional[NDArray[Shape["* num_publications"], str]] = Field(
None, description="""Publication information. PMID, DOI, URL, etc."""
)
session_id: Optional[str] = Field(
None, description="""Lab-specific ID for the session."""
)
session_id: Optional[str] = Field(None, description="""Lab-specific ID for the session.""")
slices: Optional[str] = Field(
None,
description="""Description of slices, including information about preparation thickness, orientation, temperature, and bath solution.""",
@ -261,11 +255,9 @@ class NWBFileGeneral(ConfiguredBaseModel):
intracellular_ephys: Optional[str] = Field(
None, description="""Metadata related to intracellular electrophysiology."""
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = (
Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optogenetics: Optional[List[OptogeneticStimulusSite] | OptogeneticStimulusSite] = Field(
default_factory=dict,
description="""Metadata describing optogenetic stimuluation.""",
)
optophysiology: Optional[List[ImagingPlane] | ImagingPlane] = Field(
default_factory=dict, description="""Metadata related to optophysiology."""

View file

@ -86,9 +86,7 @@ class PatchClampSeries(TimeSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -135,12 +133,8 @@ class CurrentClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded voltage.""")
bias_current: Optional[float] = Field(
None, description="""Bias current, in amps."""
)
bridge_balance: Optional[float] = Field(
None, description="""Bridge balance, in ohms."""
)
bias_current: Optional[float] = Field(None, description="""Bias current, in amps.""")
bridge_balance: Optional[float] = Field(None, description="""Bridge balance, in ohms.""")
capacitance_compensation: Optional[float] = Field(
None, description="""Capacitance compensation, in farads."""
)
@ -155,9 +149,7 @@ class CurrentClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,12 +199,8 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""An IZeroClampSeries has no stimulus, so this attribute is automatically set to \"N/A\"""",
)
bias_current: float = Field(
..., description="""Bias current, in amps, fixed to 0.0."""
)
bridge_balance: float = Field(
..., description="""Bridge balance, in ohms, fixed to 0.0."""
)
bias_current: float = Field(..., description="""Bias current, in amps, fixed to 0.0.""")
bridge_balance: float = Field(..., description="""Bridge balance, in ohms, fixed to 0.0.""")
capacitance_compensation: float = Field(
..., description="""Capacitance compensation, in farads, fixed to 0.0."""
)
@ -225,9 +213,7 @@ class IZeroClampSeries(CurrentClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -272,9 +258,7 @@ class CurrentClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -321,12 +305,8 @@ class VoltageClampSeries(PatchClampSeries):
name: str = Field(...)
data: str = Field(..., description="""Recorded current.""")
capacitance_fast: Optional[str] = Field(
None, description="""Fast capacitance, in farads."""
)
capacitance_slow: Optional[str] = Field(
None, description="""Slow capacitance, in farads."""
)
capacitance_fast: Optional[str] = Field(None, description="""Fast capacitance, in farads.""")
capacitance_slow: Optional[str] = Field(None, description="""Slow capacitance, in farads.""")
resistance_comp_bandwidth: Optional[str] = Field(
None, description="""Resistance compensation bandwidth, in hertz."""
)
@ -353,9 +333,7 @@ class VoltageClampSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -478,9 +456,7 @@ class VoltageClampSeriesWholeCellSeriesResistanceComp(ConfiguredBaseModel):
Whole cell series resistance compensation, in ohms.
"""
name: Literal["whole_cell_series_resistance_comp"] = Field(
"whole_cell_series_resistance_comp"
)
name: Literal["whole_cell_series_resistance_comp"] = Field("whole_cell_series_resistance_comp")
unit: Optional[str] = Field(
None,
description="""Unit of measurement for whole_cell_series_resistance_comp, which is fixed to 'ohms'.""",
@ -506,9 +482,7 @@ class VoltageClampStimulusSeries(PatchClampSeries):
None,
description="""Gain of the recording, in units Volt/Amp (v-clamp) or Volt/Volt (c-clamp).""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -559,9 +533,7 @@ class IntracellularElectrode(NWBContainer):
...,
description="""Description of electrode (e.g., whole-cell, sharp, etc.).""",
)
filtering: Optional[str] = Field(
None, description="""Electrode specific filtering."""
)
filtering: Optional[str] = Field(None, description="""Electrode specific filtering.""")
initial_access_resistance: Optional[str] = Field(
None, description="""Initial access resistance."""
)
@ -569,12 +541,8 @@ class IntracellularElectrode(NWBContainer):
None,
description="""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.""",
)
resistance: Optional[str] = Field(
None, description="""Electrode resistance, in ohms."""
)
seal: Optional[str] = Field(
None, description="""Information about seal used for recording."""
)
resistance: Optional[str] = Field(None, description="""Electrode resistance, in ohms.""")
seal: Optional[str] = Field(None, description="""Information about seal used for recording.""")
slice: Optional[str] = Field(
None, description="""Information about slice used for recording."""
)
@ -703,9 +671,7 @@ class IntracellularStimuliTableStimulus(TimeSeriesReferenceVectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -760,9 +726,7 @@ class IntracellularResponsesTableResponse(TimeSeriesReferenceVectorData):
...,
description="""Number of data samples available in this time series, during this epoch""",
)
timeseries: str = Field(
..., description="""The TimeSeries that this index applies to"""
)
timeseries: str = Field(..., description="""The TimeSeries that this index applies to""")
description: Optional[str] = Field(
None, description="""Description of what these vectors represent."""
)
@ -798,9 +762,9 @@ class IntracellularRecordingsTable(AlignedDynamicTable):
...,
description="""Table for storing intracellular response related metadata.""",
)
children: Optional[
List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]
] = Field(default_factory=dict)
children: Optional[List[Union[BaseModel, DynamicTable]] | Union[BaseModel, DynamicTable]] = (
Field(default_factory=dict)
)
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
@ -825,9 +789,7 @@ class SimultaneousRecordingsTable(DynamicTable):
...,
description="""A reference to one or more rows in the IntracellularRecordingsTable table.""",
)
recordings_index: str = Field(
..., description="""Index dataset for the recordings column."""
)
recordings_index: str = Field(..., description="""Index dataset for the recordings column.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",
@ -953,9 +915,7 @@ class SequentialRecordingsTableSimultaneousRecordingsIndex(VectorIndex):
Index dataset for the simultaneous_recordings column.
"""
name: Literal["simultaneous_recordings_index"] = Field(
"simultaneous_recordings_index"
)
name: Literal["simultaneous_recordings_index"] = Field("simultaneous_recordings_index")
target: Optional[str] = Field(
None,
description="""Reference to the target dataset that this index applies to.""",
@ -1059,9 +1019,7 @@ class ExperimentalConditionsTable(DynamicTable):
...,
description="""A reference to one or more rows in the RepetitionsTable table.""",
)
repetitions_index: str = Field(
..., description="""Index dataset for the repetitions column."""
)
repetitions_index: str = Field(..., description="""Index dataset for the repetitions column.""")
colnames: Optional[str] = Field(
None,
description="""The names of the columns in this table. This should be used to specify an order to the columns.""",

View file

@ -63,9 +63,7 @@ class GrayscaleImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -84,9 +82,7 @@ class RGBImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -105,9 +101,7 @@ class RGBAImage(Image):
resolution: Optional[float] = Field(
None, description="""Pixel resolution of the image, in pixels per centimeter."""
)
description: Optional[str] = Field(
None, description="""Description of the image."""
)
description: Optional[str] = Field(None, description="""Description of the image.""")
array: Optional[
Union[
NDArray[Shape["* x, * y"], float],
@ -141,9 +135,7 @@ class ImageSeries(TimeSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +199,7 @@ class ImageMaskSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -257,9 +247,7 @@ class OpticalSeries(ImageSeries):
data: Union[
NDArray[Shape["* frame, * x, * y"], float],
NDArray[Shape["* frame, * x, * y, 3 r_g_b"], float],
] = Field(
..., description="""Images presented to subject, either grayscale or RGB"""
)
] = Field(..., description="""Images presented to subject, either grayscale or RGB""")
orientation: Optional[str] = Field(
None,
description="""Description of image relative to some reference frame (e.g., which way is up). Must also specify frame of reference.""",
@ -275,9 +263,7 @@ class OpticalSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -314,9 +300,7 @@ class IndexSeries(TimeSeries):
...,
description="""Index of the image (using zero-indexing) in the linked Images object.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",

View file

@ -77,9 +77,7 @@ class AbstractFeatureSeries(TimeSeries):
...,
description="""Description of the features represented in TimeSeries::data.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -133,9 +131,7 @@ class AnnotationSeries(TimeSeries):
data: NDArray[Shape["* num_times"], str] = Field(
..., description="""Annotations made during an experiment."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -171,9 +167,7 @@ class IntervalSeries(TimeSeries):
data: NDArray[Shape["* num_times"], int] = Field(
..., description="""Use values >0 if interval started, <0 if interval ended."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +201,7 @@ class DecompositionSeries(TimeSeries):
name: str = Field(...)
data: str = Field(..., description="""Data decomposed into frequency bands.""")
metric: str = Field(
..., description="""The metric used, e.g. phase, amplitude, power."""
)
metric: str = Field(..., description="""The metric used, e.g. phase, amplitude, power.""")
source_channels: Optional[str] = Field(
None,
description="""DynamicTableRegion pointer to the channels that this decomposition series was generated from.""",
@ -218,9 +210,7 @@ class DecompositionSeries(TimeSeries):
...,
description="""Table for describing the bands that this series was generated from. There should be one row in this table for each band.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -257,9 +247,7 @@ class DecompositionSeriesData(ConfiguredBaseModel):
None,
description="""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'.""",
)
array: Optional[
NDArray[Shape["* num_times, * num_channels, * num_bands"], float]
] = Field(None)
array: Optional[NDArray[Shape["* num_times, * num_channels, * num_bands"], float]] = Field(None)
class DecompositionSeriesSourceChannels(DynamicTableRegion):
@ -330,18 +318,14 @@ class Units(DynamicTable):
spike_times_index: Optional[str] = Field(
None, description="""Index into the spike_times dataset."""
)
spike_times: Optional[str] = Field(
None, description="""Spike times for each unit."""
)
spike_times: Optional[str] = Field(None, description="""Spike times for each unit.""")
obs_intervals_index: Optional[str] = Field(
None, description="""Index into the obs_intervals dataset."""
)
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = (
Field(None, description="""Observation intervals for each unit.""")
)
electrodes_index: Optional[str] = Field(
None, description="""Index into electrodes."""
obs_intervals: Optional[NDArray[Shape["* num_intervals, 2 start_end"], float]] = Field(
None, description="""Observation intervals for each unit."""
)
electrodes_index: Optional[str] = Field(None, description="""Index into electrodes.""")
electrodes: Optional[str] = Field(
None,
description="""Electrode that each spike unit came from, specified using a DynamicTableRegion.""",
@ -361,14 +345,10 @@ class Units(DynamicTable):
NDArray[Shape["* num_units, * num_samples"], float],
NDArray[Shape["* num_units, * num_samples, * num_electrodes"], float],
]
] = Field(
None, description="""Spike waveform standard deviation for each spike unit."""
)
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = (
Field(
None,
description="""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.""",
)
] = Field(None, description="""Spike waveform standard deviation for each spike unit.""")
waveforms: Optional[NDArray[Shape["* num_waveforms, * num_samples"], float]] = Field(
None,
description="""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.""",
)
waveforms_index: Optional[str] = Field(
None,

View file

@ -68,9 +68,7 @@ class OptogeneticSeries(TimeSeries):
data: NDArray[Shape["* num_times"], float] = Field(
..., description="""Applied power for optogenetic stimulus, in watts."""
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -104,9 +102,7 @@ class OptogeneticStimulusSite(NWBContainer):
name: str = Field(...)
description: str = Field(..., description="""Description of stimulation site.""")
excitation_lambda: float = Field(
..., description="""Excitation wavelength, in nm."""
)
excitation_lambda: float = Field(..., description="""Excitation wavelength, in nm.""")
location: str = Field(
...,
description="""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.""",

View file

@ -107,9 +107,7 @@ class TwoPhotonSeries(ImageSeries):
None,
description="""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.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -150,9 +148,7 @@ class RoiResponseSeries(TimeSeries):
...,
description="""DynamicTableRegion referencing into an ROITable containing information on the ROIs stored in this timeseries.""",
)
description: Optional[str] = Field(
None, description="""Description of the time series."""
)
description: Optional[str] = Field(None, description="""Description of the time series.""")
comments: Optional[str] = Field(
None,
description="""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.""",
@ -207,9 +203,7 @@ class DfOverF(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -218,9 +212,7 @@ class Fluorescence(NWBDataInterface):
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).
"""
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(
default_factory=dict
)
children: Optional[List[RoiResponseSeries] | RoiResponseSeries] = Field(default_factory=dict)
name: str = Field(...)
@ -229,9 +221,7 @@ class ImageSegmentation(NWBDataInterface):
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.
"""
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(
default_factory=dict
)
children: Optional[List[PlaneSegmentation] | PlaneSegmentation] = Field(default_factory=dict)
name: str = Field(...)
@ -250,16 +240,12 @@ class PlaneSegmentation(DynamicTable):
None,
description="""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.""",
)
pixel_mask_index: Optional[str] = Field(
None, description="""Index into pixel_mask."""
)
pixel_mask_index: Optional[str] = Field(None, description="""Index into pixel_mask.""")
pixel_mask: Optional[str] = Field(
None,
description="""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""",
)
voxel_mask_index: Optional[str] = Field(
None, description="""Index into voxel_mask."""
)
voxel_mask_index: Optional[str] = Field(None, description="""Index into voxel_mask.""")
voxel_mask: Optional[str] = Field(
None,
description="""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""",
@ -381,9 +367,7 @@ class ImagingPlane(NWBContainer):
An imaging plane and its metadata.
"""
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(
default_factory=dict
)
children: Optional[List[OpticalChannel] | OpticalChannel] = Field(default_factory=dict)
name: str = Field(...)
@ -393,12 +377,8 @@ class OpticalChannel(NWBContainer):
"""
name: str = Field(...)
description: str = Field(
..., description="""Description or other notes about the channel."""
)
emission_lambda: float = Field(
..., description="""Emission wavelength for channel, in nm."""
)
description: str = Field(..., description="""Description or other notes about the channel.""")
emission_lambda: float = Field(..., description="""Emission wavelength for channel, in nm.""")
class MotionCorrection(NWBDataInterface):

View file

@ -102,9 +102,7 @@ class ImagingRetinotopyAxis1PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -121,9 +119,7 @@ class ImagingRetinotopyAxis1PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -140,9 +136,7 @@ class ImagingRetinotopyAxis2PhaseMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -159,9 +153,7 @@ class ImagingRetinotopyAxis2PowerMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
unit: Optional[str] = Field(
None, description="""Unit that axis data is stored in (e.g., degrees)."""
)
@ -182,12 +174,8 @@ class ImagingRetinotopyFocalDepthImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
focal_depth: Optional[float] = Field(
None, description="""Focal depth offset, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
focal_depth: Optional[float] = Field(None, description="""Focal depth offset, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)
@ -204,9 +192,7 @@ class ImagingRetinotopySignMap(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
array: Optional[NDArray[Shape["* num_rows, * num_cols"], float]] = Field(None)
@ -224,9 +210,7 @@ class ImagingRetinotopyVasculatureImage(ConfiguredBaseModel):
None,
description="""Number of rows and columns in the image. NOTE: row, column representation is equivalent to height, width.""",
)
field_of_view: Optional[float] = Field(
None, description="""Size of viewing area, in meters."""
)
field_of_view: Optional[float] = Field(None, description="""Size of viewing area, in meters.""")
format: Optional[str] = Field(
None, description="""Format of image. Right now only 'raw' is supported."""
)

Some files were not shown because too many files have changed in this diff Show more